diff --git a/__init__.py b/__init__.py index 96e6c30..77d8c71 100644 --- a/__init__.py +++ b/__init__.py @@ -15,6 +15,7 @@ def register(): ir.Cron, web.ShopWooCommerceId, web.Shop, + web.Sale, party.Party, party.Address, product.Category, diff --git a/web.py b/web.py index 36dda76..36e7cf6 100644 --- a/web.py +++ b/web.py @@ -479,8 +479,33 @@ class Shop(metaclass=PoolMeta): 'orders', params=shop.woocommerce_orders_params(page))) Sale.save(sales) - for sale in sales: - shop.woocommerce_response( - wcapi.post( - 'orders/%s' % sale.web_id, - data={'status': 'processing'})) + shop.update_woocommerce_status(sales, 'processing') + + def update_woocommerce_status(self, sales, status): + wcapi = self.get_woocommerce_api() + for sale in sales: + self.woocommerce_response( + wcapi.post( + 'orders/%s' % sale.web_id, + data={'status': status})) + + +class Sale(metaclass=PoolMeta): + __name__ = 'sale.sale' + + @property + def woocommerce_completed(self): + return self.shipment_state == 'sent' + + @classmethod + def process(cls, sales): + to_check = [] + for sale in sales: + if (sale.web_shop + and sale.web_shop.type == 'woocommerce' + and not sale.woocommerce_completed): + to_check.append(sale) + super().process(sales) + for sale in to_check: + if sale.woocommerce_completed: + sale.web_shop.update_woocommerce_status([sale], 'completed')