changeset c873899c5166 in modules/purchase:default
details: https://hg.tryton.org/modules/purchase?cmd=changeset&node=c873899c5166
description:
Add origin and set on returned purchase
issue4050
review335851002
diffstat:
CHANGELOG | 1 +
purchase.py | 18 ++++++++++++++++++
tests/scenario_purchase_return_wizard.rst | 6 ++++--
view/purchase_form.xml | 3 ++-
4 files changed, 25 insertions(+), 3 deletions(-)
diffs (76 lines):
diff -r d12d375a6f6d -r c873899c5166 CHANGELOG
--- a/CHANGELOG Tue Mar 23 23:53:31 2021 +0100
+++ b/CHANGELOG Sat Mar 27 21:21:33 2021 +0100
@@ -1,3 +1,4 @@
+* Add origin and set on returned purchase
* Add default lead time to supplier
* Allow product supplier to be deactivated
* Add summary to purchase line list
diff -r d12d375a6f6d -r c873899c5166 purchase.py
--- a/purchase.py Tue Mar 23 23:53:31 2021 +0100
+++ b/purchase.py Sat Mar 27 21:21:33 2021 +0100
@@ -195,6 +195,11 @@
invoices_recreated = fields.Many2Many(
'purchase.purchase-recreated-account.invoice',
'purchase', 'invoice', 'Recreated Invoices', readonly=True)
+ origin = fields.Reference('Origin', selection='get_origin', select=True,
+ states={
+ 'readonly': Eval('state') != 'draft',
+ },
+ depends=['state'])
delivery_date = fields.Date(
"Delivery Date",
states={
@@ -629,6 +634,18 @@
'shipment_state': state,
})
+ @classmethod
+ def _get_origin(cls):
+ "Return list of Model names for origin Reference"
+ return ['purchase.purchase']
+
+ @classmethod
+ def get_origin(cls):
+ Model = Pool().get('ir.model')
+ get_name = Model.get_name
+ models = cls._get_origin()
+ return [(None, '')] + [(m, get_name(m)) for m in models]
+
@property
def report_address(self):
if self.invoice_address:
@@ -2000,6 +2017,7 @@
purchases = self.records
return_purchases = self.model.copy(purchases)
for return_purchase, purchase in zip(return_purchases, purchases):
+ return_purchase.origin = purchase
for line in return_purchase.lines:
if line.type == 'line':
line.quantity *= -1
diff -r d12d375a6f6d -r c873899c5166 tests/scenario_purchase_return_wizard.rst
--- a/tests/scenario_purchase_return_wizard.rst Tue Mar 23 23:53:31 2021 +0100
+++ b/tests/scenario_purchase_return_wizard.rst Sat Mar 27 21:21:33 2021 +0100
@@ -93,5 +93,7 @@
>>> returned_purchase, = Purchase.find([
... ('state', '=', 'draft'),
... ])
- >>> sorted([x.quantity or 0 for x in returned_purchase.lines])
- [-1.0, 0]
+ >>> returned_purchase.origin == purchase_to_return
+ True
+ >>> sorted([x.quantity or 0 for x in returned_purchase.lines])
+ [-1.0, 0]
diff -r d12d375a6f6d -r c873899c5166 view/purchase_form.xml
--- a/view/purchase_form.xml Tue Mar 23 23:53:31 2021 +0100
+++ b/view/purchase_form.xml Sat Mar 27 21:21:33 2021 +0100
@@ -49,7 +49,8 @@
<page string="Other Info" id="info">
<label name="company"/>
<field name="company"/>
- <newline/>
+ <label name="origin"/>
+ <field name="origin"/>
<label name="invoice_method"/>
<field name="invoice_method"/>
<label name="delivery_date"/>