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"/>

Reply via email to