Replace _parent_ expression with direct field on sale and purchase line
Since #12003 lines can be edited outside the parent form so expression should not rely on _parent_. Closes #12109
This commit is contained in:
@@ -1132,16 +1132,13 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
|
||||
'company': Eval('company', None),
|
||||
},
|
||||
search_context={
|
||||
'locations': If(Bool(Eval('_parent_purchase', {}).get(
|
||||
'warehouse')),
|
||||
[Eval('_parent_purchase', {}).get('warehouse', None)],
|
||||
[]),
|
||||
'stock_date_end': Eval('_parent_purchase', {}).get(
|
||||
'purchase_date'),
|
||||
'locations': If(Bool(Eval('warehouse')),
|
||||
[Eval('warehouse', -1)], []),
|
||||
'stock_date_end': Eval('purchase_date', None),
|
||||
'stock_skip_warehouse': True,
|
||||
'currency': Eval('_parent_purchase', {}).get('currency'),
|
||||
'supplier': Eval('_parent_purchase', {}).get('party'),
|
||||
'purchase_date': Eval('_parent_purchase', {}).get('purchase_date'),
|
||||
'currency': Eval('currency', -1),
|
||||
'supplier': Eval('supplier', -1),
|
||||
'purchase_date': Eval('purchase_date', None),
|
||||
'uom': Eval('unit'),
|
||||
'taxes': Eval('taxes', []),
|
||||
'quantity': Eval('quantity'),
|
||||
@@ -1163,7 +1160,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
|
||||
('product', '=', Eval('product')),
|
||||
],
|
||||
[]),
|
||||
('party', '=', Eval('_parent_purchase', {}).get('party')),
|
||||
('party', '=', Eval('supplier', -1)),
|
||||
],
|
||||
states={
|
||||
'invisible': Eval('type') != 'line',
|
||||
@@ -1205,8 +1202,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
|
||||
('group', '=', None),
|
||||
('group.kind', 'in', ['purchase', 'both']),
|
||||
],
|
||||
('company', '=',
|
||||
Eval('_parent_purchase', {}).get('company', -1)),
|
||||
('company', '=', Eval('company', -1)),
|
||||
If(Eval('type') != 'line',
|
||||
('id', '=', None),
|
||||
()),
|
||||
@@ -1234,6 +1230,9 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
|
||||
moves_progress = fields.Function(
|
||||
fields.Float("Moves Progress", digits=(1, 4)),
|
||||
'get_moves_progress')
|
||||
warehouse = fields.Function(fields.Many2One(
|
||||
'stock.location', "Warehouse"),
|
||||
'on_change_with_warehouse')
|
||||
from_location = fields.Function(fields.Many2One('stock.location',
|
||||
'From Location'), 'get_from_location')
|
||||
to_location = fields.Function(fields.Many2One('stock.location',
|
||||
@@ -1524,6 +1523,11 @@ class Line(sequence_ordered(), ModelSQL, ModelView):
|
||||
return amount
|
||||
return Decimal('0.0')
|
||||
|
||||
@fields.depends('purchase', '_parent_purchase.warehouse')
|
||||
def on_change_with_warehouse(self, name=None):
|
||||
if self.purchase and self.purchase.warehouse:
|
||||
return self.purchase.warehouse.id
|
||||
|
||||
def get_from_location(self, name):
|
||||
if (self.quantity or 0) >= 0:
|
||||
if self.purchase.party.supplier_location:
|
||||
|
||||
+16
-13
@@ -1216,13 +1216,13 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView):
|
||||
'company': Eval('company', None),
|
||||
},
|
||||
search_context={
|
||||
'locations': If(Bool(Eval('_parent_sale', {}).get('warehouse')),
|
||||
[Eval('_parent_sale', {}).get('warehouse', 0)], []),
|
||||
'stock_date_end': Eval('_parent_sale', {}).get('sale_date'),
|
||||
'locations': If(Bool(Eval('warehouse')),
|
||||
[Eval('warehouse', -1)], []),
|
||||
'stock_date_end': Eval('sale_date', None),
|
||||
'stock_skip_warehouse': True,
|
||||
'currency': Eval('_parent_sale', {}).get('currency'),
|
||||
'customer': Eval('_parent_sale', {}).get('party'),
|
||||
'sale_date': Eval('_parent_sale', {}).get('sale_date'),
|
||||
'currency': Eval('currency', -1),
|
||||
'customer': Eval('customer', -1),
|
||||
'sale_date': Eval('sale_date', None),
|
||||
'uom': Eval('unit'),
|
||||
'taxes': Eval('taxes', []),
|
||||
'quantity': Eval('quantity'),
|
||||
@@ -1265,9 +1265,9 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView):
|
||||
('parent', '=', None),
|
||||
['OR',
|
||||
('group', '=', None),
|
||||
('group.kind', 'in', ['sale', 'both'])],
|
||||
('company', '=',
|
||||
Eval('_parent_sale', {}).get('company', -1)),
|
||||
('group.kind', 'in', ['sale', 'both']),
|
||||
],
|
||||
('company', '=', Eval('company', -1)),
|
||||
If(Eval('type') != 'line',
|
||||
('id', '=', None),
|
||||
()),
|
||||
@@ -1296,8 +1296,9 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView):
|
||||
moves_progress = fields.Function(
|
||||
fields.Float("Moves Progress", digits=(1, 4)),
|
||||
'get_moves_progress')
|
||||
warehouse = fields.Function(fields.Many2One('stock.location',
|
||||
'Warehouse'), 'get_warehouse')
|
||||
warehouse = fields.Function(fields.Many2One(
|
||||
'stock.location', "Warehouse"),
|
||||
'on_change_with_warehouse')
|
||||
from_location = fields.Function(fields.Many2One('stock.location',
|
||||
'From Location'), 'get_from_location')
|
||||
to_location = fields.Function(fields.Many2One('stock.location',
|
||||
@@ -1543,8 +1544,10 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView):
|
||||
return amount
|
||||
return Decimal('0.0')
|
||||
|
||||
def get_warehouse(self, name):
|
||||
return self.sale.warehouse.id if self.sale.warehouse else None
|
||||
@fields.depends('sale', '_parent_sale.warehouse')
|
||||
def on_change_with_warehouse(self, name=None):
|
||||
if self.sale and self.sale.warehouse:
|
||||
return self.sale.warehouse.id
|
||||
|
||||
def get_from_location(self, name):
|
||||
if (self.quantity or 0) >= 0:
|
||||
|
||||
@@ -22,7 +22,7 @@ class Line(metaclass=PoolMeta):
|
||||
('product', '=', Eval('product')),
|
||||
],
|
||||
[]),
|
||||
('party', '=', Eval('_parent_sale', {}).get('party')),
|
||||
('party', '=', Eval('customer', -1)),
|
||||
],
|
||||
states={
|
||||
'invisible': Eval('type') != 'line',
|
||||
|
||||
Reference in New Issue
Block a user