mirror of
https://gitlab.com/datalifeit/trytond-sale_unit_load
synced 2023-12-14 04:43:09 +01:00
parent
52d37b88bb
commit
b8166d0e0e
|
@ -132,4 +132,8 @@ msgstr "ul_quantity"
|
||||||
|
|
||||||
msgctxt "view:sale.cost.template:"
|
msgctxt "view:sale.cost.template:"
|
||||||
msgid "ULs quantity:"
|
msgid "ULs quantity:"
|
||||||
msgstr "UdCs:"
|
msgstr "UdCs:"
|
||||||
|
|
||||||
|
msgctxt "model:ir.action,name:act_relate_sale_unit_load"
|
||||||
|
msgid "Unit loads"
|
||||||
|
msgstr "Unidades de carga"
|
|
@ -13,3 +13,4 @@ extras_depend:
|
||||||
xml:
|
xml:
|
||||||
sale.xml
|
sale.xml
|
||||||
sale_reporting.xml
|
sale_reporting.xml
|
||||||
|
unit_load.xml
|
||||||
|
|
29
unit_load.py
29
unit_load.py
|
@ -11,9 +11,11 @@ class UnitLoad(metaclass=PoolMeta):
|
||||||
|
|
||||||
customer = fields.Function(fields.Many2One('party.party', 'Customer'),
|
customer = fields.Function(fields.Many2One('party.party', 'Customer'),
|
||||||
'get_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(
|
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):
|
def get_customer(self, name=None):
|
||||||
return self.shipment_out.customer.id if self.shipment_out else 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
|
if m.origin and m.origin.__name__ == 'sale.line' and
|
||||||
m.state not in ('draft', 'cancel')]
|
m.state not in ('draft', 'cancel')]
|
||||||
return moves[0].origin.id if moves else None
|
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
18
unit_load.xml
Normal 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>
|
Loading…
Reference in a new issue