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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -105,4 +105,4 @@ this repository contains the full copyright notices and license terms. -->
-
\ 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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -91,4 +91,4 @@ this repository contains the full copyright notices and license terms. -->
-
\ 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. -->
-
+
+
+