From b80eb0af2026a3ab982c2f09eb9defbe87d9eeaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 2 Jul 2025 13:25:56 +0200 Subject: [PATCH] Reset to draft sales updated from Shopify As the update from Shopify may need to add new lines which can only be created for a draft sale. Closes #14099 (grafted from d899456fefd6d8a0b00dfcc1dffcc3c8613d97b4) --HG-- branch : 7.0 --- modules/web_shop_shopify/web.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/web_shop_shopify/web.py b/modules/web_shop_shopify/web.py index 87ccce538b..de13d1300e 100644 --- a/modules/web_shop_shopify/web.py +++ b/modules/web_shop_shopify/web.py @@ -2,6 +2,7 @@ # this repository contains the full copyright notices and license terms. import datetime as dt import urllib.parse +from collections import defaultdict from decimal import Decimal from operator import attrgetter @@ -562,6 +563,7 @@ class Shop(metaclass=PoolMeta): Sale = pool.get('sale.sale') assert len(sales) == len(orders) to_update = {} + states_to_restore = defaultdict(list) for sale, order in zip(sales, orders): assert sale.shopify_identifier == order.id shop = sale.web_shop @@ -572,8 +574,11 @@ class Shop(metaclass=PoolMeta): sale.tax_amount_cache = None sale.total_amount_cache = None to_update[sale] = order - Payment.get_from_shopify(sale, order) + states_to_restore[sale.state].append(sale) + Sale.write(list(to_update.keys()), {'state': 'draft'}) Sale.save(to_update.keys()) + for state, state_sales in states_to_restore.items(): + Sale.write(list(state_sales), {'state': state}) for sale, order in to_update.items(): sale.shopify_tax_adjustment = ( Decimal(order.current_total_price) - sale.total_amount) @@ -592,6 +597,11 @@ class Shop(metaclass=PoolMeta): Sale.write(to_quote, {'state': 'quotation'}) cls.log(to_quote, 'transition', 'state:quotation') + for sale, order in zip(sales, orders): + shop = sale.web_shop + with shop.shopify_session(): + Payment.get_from_shopify(sale, order) + class ShopShopifyIdentifier(IdentifierMixin, ModelSQL, ModelView): "Shopify Identifier"