details:   https://code.tryton.org/tryton/commit/85fd441939ad
branch:    default
user:      Cédric Krier <[email protected]>
date:      Tue Sep 02 10:14:54 2025 +0200
description:
        Add a status URL to sales from web shop

        Closes #14210
diffstat:

 modules/web_shop/CHANGELOG                                   |   1 +
 modules/web_shop/sale.py                                     |  12 ++++++++++++
 modules/web_shop/view/sale_form.xml                          |   3 +++
 modules/web_shop_shopify/sale.py                             |   8 ++++++++
 modules/web_shop_shopify/tests/scenario_web_shop_shopify.rst |   1 +
 5 files changed, 25 insertions(+), 0 deletions(-)

diffs (93 lines):

diff -r e4a952622aec -r 85fd441939ad modules/web_shop/CHANGELOG
--- a/modules/web_shop/CHANGELOG        Fri Aug 29 14:38:40 2025 +0200
+++ b/modules/web_shop/CHANGELOG        Tue Sep 02 10:14:54 2025 +0200
@@ -1,3 +1,4 @@
+* Add a status URL to sales
 * Add button to update the sales from their web shop
 * Add web shop URLs to products
 
diff -r e4a952622aec -r 85fd441939ad modules/web_shop/sale.py
--- a/modules/web_shop/sale.py  Fri Aug 29 14:38:40 2025 +0200
+++ b/modules/web_shop/sale.py  Tue Sep 02 10:14:54 2025 +0200
@@ -23,6 +23,15 @@
             'required': Bool(Eval('web_shop')),
             'readonly': ~Eval('web_id'),
             })
+    web_status_url = fields.Function(
+        fields.Char(
+            "Web Status URL",
+            states={
+                'invisible': ~Eval('web_status_url'),
+                },
+            help="The URL where the customer can check "
+            "the order's current status."),
+        'get_web_status_url')
 
     @classmethod
     def __setup__(cls):
@@ -55,6 +64,9 @@
         if self.web_shop and not self.web_id:
             self.web_id = token_hex(nbytes)
 
+    def get_web_status_url(self, name):
+        pass
+
     @classmethod
     def copy(cls, sales, default=None):
         if default is None:
diff -r e4a952622aec -r 85fd441939ad modules/web_shop/view/sale_form.xml
--- a/modules/web_shop/view/sale_form.xml       Fri Aug 29 14:38:40 2025 +0200
+++ b/modules/web_shop/view/sale_form.xml       Tue Sep 02 10:14:54 2025 +0200
@@ -7,6 +7,9 @@
         <field name="web_shop"/>
         <label name="web_id"/>
         <field name="web_id"/>
+
+        <label name="web_status_url"/>
+        <field name="web_status_url" widget="url" colspan="3"/>
     </xpath>
     <xpath expr="//button[@name='process']" position="after">
         <button name="web_shop_update"/>
diff -r e4a952622aec -r 85fd441939ad modules/web_shop_shopify/sale.py
--- a/modules/web_shop_shopify/sale.py  Fri Aug 29 14:38:40 2025 +0200
+++ b/modules/web_shop_shopify/sale.py  Tue Sep 02 10:14:54 2025 +0200
@@ -27,6 +27,7 @@
     shopify_tax_adjustment = Monetary(
         "Shopify Tax Adjustment",
         currency='currency', digits='currency', readonly=True)
+    shopify_status_url = fields.Char("Shopify Status URL", readonly=True)
 
     @classmethod
     def __setup__(cls):
@@ -38,6 +39,12 @@
                 'web_shop_shopify.msg_identifier_sale_web_shop_unique'),
             ]
 
+    def get_web_status_url(self, name):
+        url = super().get_web_status_url(name)
+        if self.shopify_status_url:
+            url = self.shopify_status_url
+        return url
+
     @fields.depends('shopify_tax_adjustment')
     def get_tax_amount(self):
         amount = super().get_tax_amount()
@@ -108,6 +115,7 @@
                 sale.invoice_address = address
 
         setattr_changed(sale, 'reference', order.name)
+        setattr_changed(sale, 'shopify_status_url', order.order_status_url)
         setattr_changed(sale, 'comment', order.note)
         setattr_changed(sale, 'sale_date', dateutil.parser.isoparse(
                 order.processed_at or order.created_at).date())
diff -r e4a952622aec -r 85fd441939ad 
modules/web_shop_shopify/tests/scenario_web_shop_shopify.rst
--- a/modules/web_shop_shopify/tests/scenario_web_shop_shopify.rst      Fri Aug 
29 14:38:40 2025 +0200
+++ b/modules/web_shop_shopify/tests/scenario_web_shop_shopify.rst      Tue Sep 
02 10:14:54 2025 +0200
@@ -519,6 +519,7 @@
     >>> assertEqual(sale.party.phone.replace(' ', ''), 
customer_phone.replace('-', ''))
     >>> len(sale.party.contact_mechanisms)
     2
+    >>> assertTrue(sale.web_status_url)
 
 Capture full amount::
 

Reply via email to