diff --git a/modules/purchase_trade/purchase.py b/modules/purchase_trade/purchase.py index 49b3caa..9b123ca 100755 --- a/modules/purchase_trade/purchase.py +++ b/modules/purchase_trade/purchase.py @@ -1087,14 +1087,17 @@ class Line(metaclass=PoolMeta): enable_linked_currency = fields.Boolean("Linked currencies") linked_price = fields.Numeric("Price", digits='unit',states={ 'invisible': (~Eval('enable_linked_currency')), + 'required': Eval('enable_linked_currency'), 'readonly': Eval('price_type') == 'basis', }, depends=['enable_linked_currency', 'price_type']) linked_currency = fields.Many2One('currency.linked',"Currency",states={ 'invisible': (~Eval('enable_linked_currency')), - }) - linked_unit = fields.Many2One('product.uom', 'Unit',states={ - 'invisible': (~Eval('enable_linked_currency')), - }) + 'required': Eval('enable_linked_currency'), + }, depends=['enable_linked_currency']) + linked_unit = fields.Many2One('product.uom', 'Unit',states={ + 'invisible': (~Eval('enable_linked_currency')), + 'required': Eval('enable_linked_currency'), + }, depends=['enable_linked_currency']) premium = fields.Numeric("Premium/Discount",digits='unit') fee_ = fields.Many2One('fee.fee',"Fee") diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py index 090b1c6..6378307 100755 --- a/modules/purchase_trade/sale.py +++ b/modules/purchase_trade/sale.py @@ -632,14 +632,17 @@ class SaleLine(metaclass=PoolMeta): enable_linked_currency = fields.Boolean("Linked currencies") linked_price = fields.Numeric("Price", digits='unit',states={ 'invisible': (~Eval('enable_linked_currency')), + 'required': Eval('enable_linked_currency'), 'readonly': Eval('price_type') == 'basis', }, depends=['enable_linked_currency', 'price_type']) linked_currency = fields.Many2One('currency.linked',"Currency",states={ 'invisible': (~Eval('enable_linked_currency')), - }) - linked_unit = fields.Many2One('product.uom', 'Unit',states={ - 'invisible': (~Eval('enable_linked_currency')), - }) + 'required': Eval('enable_linked_currency'), + }, depends=['enable_linked_currency']) + linked_unit = fields.Many2One('product.uom', 'Unit',states={ + 'invisible': (~Eval('enable_linked_currency')), + 'required': Eval('enable_linked_currency'), + }, depends=['enable_linked_currency']) premium = fields.Numeric("Premium/Discount",digits='unit') fee_ = fields.Many2One('fee.fee',"Fee") @@ -1095,14 +1098,15 @@ class SaleLine(metaclass=PoolMeta): return super().copy(lines, default=default) @classmethod - def validate(cls, salelines): - LotQtHist = Pool().get('lot.qt.hist') - LotQtType = Pool().get('lot.qt.type') - super(SaleLine, cls).validate(salelines) - for line in salelines: - if line.price_components: - for pc in line.price_components: - if pc.triggers: + def validate(cls, salelines): + LotQtHist = Pool().get('lot.qt.hist') + LotQtType = Pool().get('lot.qt.type') + Pnl = Pool().get('valuation.valuation') + super(SaleLine, cls).validate(salelines) + for line in salelines: + if line.price_components: + for pc in line.price_components: + if pc.triggers: for tr in pc.triggers: line.check_from_to(tr) line.check_pricing() @@ -1139,18 +1143,22 @@ class SaleLine(metaclass=PoolMeta): fl.sale_line = line.id FeeLots.save([fl]) - #generate valuation for purchase and sale - LotQt = Pool().get('lot.qt') - if line.lots: - for lot in line.lots: - lqts = LotQt.search([('lot_s','=',lot.id),('lot_p','>',0)]) - logger.info("VALIDATE_SL:%s",lqts) - if lqts: - purchase_lines = [e.lot_p.line for e in lqts] - if purchase_lines: - for pl in purchase_lines: - Pnl = Pool().get('valuation.valuation') - Pnl.generate(pl) + #generate valuation for purchase and sale + LotQt = Pool().get('lot.qt') + line = cls(line.id) + generated_purchase_side = False + if line.lots: + for lot in line.lots: + lqts = LotQt.search([('lot_s','=',lot.id),('lot_p','>',0)]) + logger.info("VALIDATE_SL:%s",lqts) + if lqts: + generated_purchase_side = True + purchase_lines = [e.lot_p.line for e in lqts] + if purchase_lines: + for pl in purchase_lines: + Pnl.generate(pl) + if line.lots and not generated_purchase_side: + Pnl.generate_from_sale_line(line) class SaleCreatePurchase(Wizard): "Create mirror purchase" diff --git a/modules/purchase_trade/view/purchase_line_form.xml b/modules/purchase_trade/view/purchase_line_form.xml index e527669..2291036 100755 --- a/modules/purchase_trade/view/purchase_line_form.xml +++ b/modules/purchase_trade/view/purchase_line_form.xml @@ -2,37 +2,37 @@ - - - - - - \ No newline at end of file + diff --git a/modules/purchase_trade/view/purchase_line_tree_sequence.xml b/modules/purchase_trade/view/purchase_line_tree_sequence.xml index 51b3e08..ad07990 100755 --- a/modules/purchase_trade/view/purchase_line_tree_sequence.xml +++ b/modules/purchase_trade/view/purchase_line_tree_sequence.xml @@ -3,9 +3,11 @@ this repository contains the full copyright notices and license terms. --> - + + + diff --git a/modules/purchase_trade/view/sale_line_form.xml b/modules/purchase_trade/view/sale_line_form.xml index 3b65458..87f623b 100755 --- a/modules/purchase_trade/view/sale_line_form.xml +++ b/modules/purchase_trade/view/sale_line_form.xml @@ -2,37 +2,37 @@ - - - - - - \ No newline at end of file + diff --git a/modules/purchase_trade/view/sale_line_tree_sequence.xml b/modules/purchase_trade/view/sale_line_tree_sequence.xml index 51b3e08..ad07990 100755 --- a/modules/purchase_trade/view/sale_line_tree_sequence.xml +++ b/modules/purchase_trade/view/sale_line_tree_sequence.xml @@ -3,9 +3,11 @@ this repository contains the full copyright notices and license terms. --> - + + +