details:   https://code.tryton.org/tryton/commit/61fc72015b9b
branch:    default
user:      Cédric Krier <[email protected]>
date:      Tue Sep 15 12:04:11 2026 +0200
description:
        Do not set non salable product on sale line when synchronise with 
Shopify

        Closes #15096
diffstat:

 modules/web_shop_shopify/sale.py |  11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diffs (33 lines):

diff -r 84761faccad4 -r 61fc72015b9b modules/web_shop_shopify/sale.py
--- a/modules/web_shop_shopify/sale.py  Thu Sep 10 14:22:34 2026 +0200
+++ b/modules/web_shop_shopify/sale.py  Tue Sep 15 12:04:11 2026 +0200
@@ -851,13 +851,17 @@
         carrier = None
         if shipment_cost_method and (shipping_line := order['shippingLine']):
             available_carriers = self.on_change_with_available_carriers()
+            first_carrier = None
             for carrier in available_carriers:
+                if not carrier.carrier_product.salable:
+                    continue
                 if carrier.shopify_match(shop, shipping_line):
                     carrier = carrier
                     break
+                elif first_carrier is None:
+                    first_carrier = carrier
             else:
-                if available_carriers:
-                    carrier = available_carriers[0]
+                carrier = first_carrier
         if not carrier:
             shipment_cost_method = None
         setattr_changed(self, 'carrier', carrier)
@@ -925,7 +929,8 @@
         if line_item['variant'] and line_item['variant']['id']:
             if product := Product.search_shopify_identifier(
                     sale.web_shop, gid2id(line_item['variant']['id'])):
-                setattr_changed(line, 'product', product)
+                if product.salable:
+                    setattr_changed(line, 'product', product)
         if line.product:
             line._set_shopify_quantity(line.product, quantity)
             if line._changed_values():

Reply via email to