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::