changeset e8d9cced3080 in modules/sale_amendment:default
details: 
https://hg.tryton.org/modules/sale_amendment?cmd=changeset&node=e8d9cced3080
description:
        Support warehouse pickup

        issue11574
        review419411003
diffstat:

 sale.py |  25 ++++++++++++++++---------
 1 files changed, 16 insertions(+), 9 deletions(-)

diffs (53 lines):

diff -r 2ea1f2f55161 -r e8d9cced3080 sale.py
--- a/sale.py   Mon May 02 17:37:09 2022 +0200
+++ b/sale.py   Sat Sep 10 18:34:29 2022 +0200
@@ -236,9 +236,10 @@
             })
     shipment_address = fields.Many2One(
         'party.address', "Shipment Address",
-        domain=[
+        domain=['OR',
             ('party', '=', If(Eval('shipment_party'),
                     Eval('shipment_party'), Eval('party'))),
+            ('warehouses', '=', Eval('warehouse')),
             ],
         states={
             'readonly': Eval('state') != 'draft',
@@ -375,7 +376,7 @@
             self.product = self.quantity = self.unit = self.unit_price = None
             self.description = None
 
-    @fields.depends('party', 'shipment_party')
+    @fields.depends('party', 'shipment_party', 'warehouse')
     def on_change_party(self):
         self.invoice_address = None
         if not self.shipment_party:
@@ -383,15 +384,21 @@
         if self.party:
             self.invoice_address = self.party.address_get(type='invoice')
             if not self.shipment_party:
-                self.shipment_address = self.party.address_get(type='delivery')
+                with Transaction().set_context(
+                        warehouse=(
+                            self.warehouse.id if self.warehouse else None)):
+                    self.shipment_address = self.party.address_get(
+                        type='delivery')
 
-    @fields.depends('party', 'shipment_party')
+    @fields.depends('party', 'shipment_party', 'warehouse')
     def on_change_shipment_party(self):
-        if self.shipment_party:
-            self.shipment_address = self.shipment_party.address_get(
-                type='delivery')
-        elif self.party:
-            self.shipment_address = self.party.address_get(type='delivery')
+        with Transaction().set_context(
+                warehouse=self.warehouse.id if self.warehouse else None):
+            if self.shipment_party:
+                self.shipment_address = self.shipment_party.address_get(
+                    type='delivery')
+            elif self.party:
+                self.shipment_address = self.party.address_get(type='delivery')
 
     @fields.depends('line')
     def on_change_with_product_uom_category(self, name=None):

Reply via email to