Expose shipments_returns constructors

issue7016
review42951002
This commit is contained in:
Cédric Krier
2017-12-20 19:30:57 +01:00
parent a41bd1a70d
commit eea4a4d3ef
2 changed files with 58 additions and 31 deletions
+32 -31
View File
@@ -28,7 +28,8 @@ __all__ = ['Sale', 'SaleIgnoredInvoice', 'SaleRecreatedInvoice',
'SaleLineRecreatedMove', 'SaleReport', 'OpenCustomer',
'HandleShipmentExceptionAsk', 'HandleShipmentException',
'HandleInvoiceExceptionAsk', 'HandleInvoiceException',
'ReturnSaleStart', 'ReturnSale']
'ReturnSaleStart', 'ReturnSale',
'get_shipments_returns', 'search_shipments_returns']
_ZERO = Decimal(0)
STATES = [
@@ -41,6 +42,36 @@ STATES = [
]
def get_shipments_returns(model_name):
"Computes the returns or shipments"
def method(self, name):
Model = Pool().get(model_name)
shipments = set()
for line in self.lines:
for move in line.moves:
if isinstance(move.shipment, Model):
shipments.add(move.shipment.id)
return list(shipments)
return method
def search_shipments_returns(model_name):
"Search on shipments or returns"
def method(self, name, clause):
nested = clause[0].lstrip(name)
if nested:
return [('lines.moves.shipment' + nested,)
+ tuple(clause[1:3]) + (model_name,) + tuple(clause[3:])]
else:
if isinstance(clause[2], basestring):
target = 'rec_name'
else:
target = 'id'
return [('lines.moves.shipment.' + target,)
+ tuple(clause[1:3]) + (model_name,)]
return classmethod(method)
class Sale(Workflow, ModelSQL, ModelView, TaxableMixin):
'Sale'
__name__ = 'sale.sale'
@@ -565,39 +596,9 @@ class Sale(Workflow, ModelSQL, ModelView, TaxableMixin):
'invoice_state': state,
})
def get_shipments_returns(model_name):
"Computes the returns or shipments"
def method(self, name):
Model = Pool().get(model_name)
shipments = set()
for line in self.lines:
for move in line.moves:
if isinstance(move.shipment, Model):
shipments.add(move.shipment.id)
return list(shipments)
return method
get_shipments = get_shipments_returns('stock.shipment.out')
get_shipment_returns = get_shipments_returns('stock.shipment.out.return')
def search_shipments_returns(model_name):
'''
Search on shipments or returns
'''
def method(self, name, clause):
nested = clause[0].lstrip(name)
if nested:
return [('lines.moves.shipment' + nested,)
+ tuple(clause[1:3]) + (model_name,) + tuple(clause[3:])]
else:
if isinstance(clause[2], basestring):
target = 'rec_name'
else:
target = 'id'
return [('lines.moves.shipment.' + target,)
+ tuple(clause[1:3]) + (model_name,)]
return classmethod(method)
search_shipments = search_shipments_returns('stock.shipment.out')
search_shipment_returns = search_shipments_returns(
'stock.shipment.out.return')
+26
View File
@@ -224,6 +224,32 @@ this repository contains the full copyright notices and license terms. -->
<field name="action" ref="act_sale_shipments_relate"/>
</record>
<record model="ir.action.act_window" id="act_sale_shipment_returns_relate">
<field name="name">Sales</field>
<field name="res_model">sale.sale</field>
<field name="domain"
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('shipment_returns', '=', Eval('active_id')), ('shipment_returns', 'in', Eval('active_ids')))]"
pyson="1"/>
</record>
<record model="ir.action.act_window.view"
id="act_sale_shipment_returns_relate_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="sale_view_tree"/>
<field name="act_window" ref="act_sale_shipment_returns_relate"/>
</record>
<record model="ir.action.act_window.view"
id="act_sale_shipment_returns_relate_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="sale_view_form"/>
<field name="act_window" ref="act_sale_shipment_returns_relate"/>
</record>
<record model="ir.action.keyword"
id="act_sale_shipment_returns_relate_keyword">
<field name="keyword">form_relate</field>
<field name="model">stock.shipment.out.return,-1</field>
<field name="action" ref="act_sale_shipment_returns_relate"/>
</record>
<record model="ir.model.access" id="access_sale">
<field name="model" search="[('model', '=', 'sale.sale')]"/>
<field name="perm_read" eval="False"/>