changeset 1850c80da7c2 in modules/sale_amendment:default
details: 
https://hg.tryton.org/modules/sale_amendment?cmd=changeset&node=1850c80da7c2
description:
        Add invoice party on amendment

        issue11667
        review447321003
diffstat:

 sale.py                           |  34 ++++++++++++++++++++++++++++++----
 view/sale_amendment_line_form.xml |   3 +++
 2 files changed, 33 insertions(+), 4 deletions(-)

diffs (106 lines):

diff -r e8d9cced3080 -r 1850c80da7c2 sale.py
--- a/sale.py   Sat Sep 10 18:34:29 2022 +0200
+++ b/sale.py   Sun Oct 09 13:12:51 2022 +0200
@@ -218,10 +218,20 @@
             'invisible': Eval('action') != 'party',
             'required': Eval('action') == 'party',
             })
+    invoice_party = fields.Many2One(
+        'party.party', "Invoice Party",
+        states={
+            'readonly': Eval('state') != 'draft',
+            'invisible': Eval('action') != 'party',
+            },
+        search_context={
+            'related_party': Eval('party'),
+            })
     invoice_address = fields.Many2One(
         'party.address', "Invoice Address",
         domain=[
-            ('party', '=', Eval('party')),
+            ('party', '=', If(Eval('invoice_party'),
+                    Eval('invoice_party'), Eval('party'))),
             ],
         states={
             'readonly': Eval('state') != 'draft',
@@ -233,6 +243,9 @@
         states={
             'readonly': Eval('state') != 'draft',
             'invisible': Eval('action') != 'party',
+            },
+        search_context={
+            'related_party': Eval('party'),
             })
     shipment_address = fields.Many2One(
         'party.address', "Shipment Address",
@@ -319,6 +332,7 @@
         '_parent_amendment.sale',
         '_parent_amendment._parent_sale.payment_term',
         '_parent_amendment._parent_sale.party',
+        '_parent_amendment._parent_sale.invoice_party',
         '_parent_amendment._parent_sale.invoice_address',
         '_parent_amendment._parent_sale.shipment_party',
         '_parent_amendment._parent_sale.shipment_address',
@@ -328,6 +342,7 @@
             self.payment_term = self.amendment.sale.payment_term
 
             self.party = self.amendment.sale.party
+            self.invoice_party = self.amendment.sale.invoice_party
             self.invoice_address = self.amendment.sale.invoice_address
             self.shipment_party = self.amendment.sale.shipment_party
             self.shipment_address = self.amendment.sale.shipment_address
@@ -376,13 +391,15 @@
             self.product = self.quantity = self.unit = self.unit_price = None
             self.description = None
 
-    @fields.depends('party', 'shipment_party', 'warehouse')
+    @fields.depends('party', 'invoice_party', 'shipment_party', 'warehouse')
     def on_change_party(self):
-        self.invoice_address = None
+        if not self.invoice_party:
+            self.invoice_address = None
         if not self.shipment_party:
             self.shipment_address = None
         if self.party:
-            self.invoice_address = self.party.address_get(type='invoice')
+            if not self.invoice_address:
+                self.invoice_address = self.party.address_get(type='invoice')
             if not self.shipment_party:
                 with Transaction().set_context(
                         warehouse=(
@@ -390,6 +407,14 @@
                     self.shipment_address = self.party.address_get(
                         type='delivery')
 
+    @fields.depends('party', 'invoice_party')
+    def on_change_invoice_party(self):
+        if self.invoice_party:
+            self.invoice_address = self.invoice_party.address_get(
+                type='invoice')
+        elif self.party:
+            self.invoice_address = self.party.address_get(type='invoice')
+
     @fields.depends('party', 'shipment_party', 'warehouse')
     def on_change_shipment_party(self):
         with Transaction().set_context(
@@ -428,6 +453,7 @@
 
     def _apply_party(self, sale, sale_line):
         sale.party = self.party
+        sale.invoice_party = self.invoice_party
         sale.invoice_address = self.invoice_address
         sale.shipment_party = self.shipment_party
         sale.shipment_address = self.shipment_address
diff -r e8d9cced3080 -r 1850c80da7c2 view/sale_amendment_line_form.xml
--- a/view/sale_amendment_line_form.xml Sat Sep 10 18:34:29 2022 +0200
+++ b/view/sale_amendment_line_form.xml Sun Oct 09 13:12:51 2022 +0200
@@ -14,6 +14,9 @@
     <newline/>
     <label name="party"/>
     <field name="party"/>
+    <newline/>
+    <label name="invoice_party"/>
+    <field name="invoice_party"/>
     <label name="invoice_address"/>
     <field name="invoice_address"/>
     <label name="shipment_party"/>

Reply via email to