Add form relate unit loads in sales.

This commit refs #12160
This commit is contained in:
jmpardo98 2020-03-05 09:49:57 +00:00 committed by Sergio Morillo
parent 52d37b88bb
commit b8166d0e0e
4 changed files with 51 additions and 3 deletions

View File

@ -132,4 +132,8 @@ msgstr "ul_quantity"
msgctxt "view:sale.cost.template:"
msgid "ULs quantity:"
msgstr "UdCs:"
msgstr "UdCs:"
msgctxt "model:ir.action,name:act_relate_sale_unit_load"
msgid "Unit loads"
msgstr "Unidades de carga"

View File

@ -13,3 +13,4 @@ extras_depend:
xml:
sale.xml
sale_reporting.xml
unit_load.xml

View File

@ -11,9 +11,11 @@ class UnitLoad(metaclass=PoolMeta):
customer = fields.Function(fields.Many2One('party.party', 'Customer'),
'get_customer')
sale = fields.Function(fields.Many2One('sale.sale', 'Sale'), 'get_sale')
sale = fields.Function(fields.Many2One('sale.sale', 'Sale'), 'get_sale',
searcher='search_sale')
sale_line = fields.Function(
fields.Many2One('sale.line', 'Sale line'), 'get_sale_line')
fields.Many2One('sale.line', 'Sale line'), 'get_sale_line',
searcher='search_sale_line')
def get_customer(self, name=None):
return self.shipment_out.customer.id if self.shipment_out else None
@ -28,3 +30,26 @@ class UnitLoad(metaclass=PoolMeta):
if m.origin and m.origin.__name__ == 'sale.line' and
m.state not in ('draft', 'cancel')]
return moves[0].origin.id if moves else None
@classmethod
def search_sale_line(cls, name, clause):
_field = 'moves.origin'
if '.' in clause[0]:
_field += '.%s' % clause[0][10:]
else:
if isinstance(clause[2], (int, list, tuple, set)):
_field += '.id'
else:
_field += '.rec_name'
return [(_field,) + tuple(clause[1:]) + ('sale.line',)]
@classmethod
def search_sale(cls, name, clause):
_field = 'sale_line.%s' % clause[0]
if isinstance(clause[2], (int, list, tuple, set)):
_field += '.id'
else:
_field += '.rec_name'
return [(_field, ) + tuple(clause[1:])]

18
unit_load.xml Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0"?>
<!-- The COPYRIGHT file at the top level of this repository contains the full
copyright notices and license terms. -->
<tryton>
<data>
<!-- form relate -->
<record model="ir.action.act_window" id="act_relate_sale_unit_load">
<field name="name">Unit loads</field>
<field name="res_model">stock.unit_load</field>
<field name="domain" eval="[('sale', 'in', Eval('active_ids'))]" pyson="1"/>
</record>
<record model="ir.action.keyword" id="act_relate_sale_unit_load_keyword">
<field name="keyword">form_relate</field>
<field name="model">sale.sale,-1</field>
<field name="action" ref="act_relate_sale_unit_load"/>
</record>
</data>
</tryton>