changeset 2aba0ec6c294 in modules/purchase_requisition:default
details:
https://hg.tryton.org/modules/purchase_requisition?cmd=changeset&node=2aba0ec6c294
description:
Use requisition unit price for puchase line
issue10127
review337651002
diffstat:
purchase.py | 21 ++++++++++++++++++++-
tests/scenario_purchase_requisition.rst | 3 +++
2 files changed, 23 insertions(+), 1 deletions(-)
diffs (51 lines):
diff -r dbf76b656536 -r 2aba0ec6c294 purchase.py
--- a/purchase.py Thu Mar 18 23:04:17 2021 +0100
+++ b/purchase.py Sat Mar 27 21:16:08 2021 +0100
@@ -16,7 +16,7 @@
from trytond.modules.company.model import (
employee_field, set_employee, reset_employee)
-from trytond.modules.product import price_digits
+from trytond.modules.product import price_digits, round_price
class Configuration(metaclass=PoolMeta):
@@ -684,6 +684,25 @@
key += (('unit_price', request.origin.unit_price),)
return key
+ @classmethod
+ def compute_purchase_line(cls, key, requests, purchase):
+ pool = Pool()
+ RequisitionLine = pool.get('purchase.requisition.line')
+ Uom = pool.get('product.uom')
+
+ line = super().compute_purchase_line(key, requests, purchase)
+
+ key_values = dict(key)
+ if (key_values.get('unit_price') is not None
+ and any(
+ isinstance(r.origin, RequisitionLine) for r in requests)):
+ line.unit_price = round_price(
+ Uom.compute_price(
+ key_values.get('unit', line.unit),
+ key_values['unit_price'],
+ line.unit))
+ return line
+
class Purchase(metaclass=PoolMeta):
__name__ = 'purchase.purchase'
diff -r dbf76b656536 -r 2aba0ec6c294 tests/scenario_purchase_requisition.rst
--- a/tests/scenario_purchase_requisition.rst Thu Mar 18 23:04:17 2021 +0100
+++ b/tests/scenario_purchase_requisition.rst Sat Mar 27 21:16:08 2021 +0100
@@ -253,6 +253,9 @@
Confirm the purchase order::
>>> purchase, = Purchase.find([('state', '=', 'draft')])
+ >>> purchase_line, = purchase.lines
+ >>> purchase_line.unit_price
+ Decimal('10.0000')
>>> purchase.click('quote')
>>> requisition.reload()
>>> requisition.state