Mark sales as completed on woocommerce when shipment is sent

This commit is contained in:
Sergi Almacellas Abellana 2020-06-30 18:23:27 +02:00
parent a577c3e032
commit 6f271eebf9
2 changed files with 31 additions and 5 deletions

View File

@ -15,6 +15,7 @@ def register():
ir.Cron,
web.ShopWooCommerceId,
web.Shop,
web.Sale,
party.Party,
party.Address,
product.Category,

35
web.py
View File

@ -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')