From 2db327bacee4d2a90093733be3827a5176bef7f3 Mon Sep 17 00:00:00 2001 From: ??? Date: Fri, 10 Apr 2026 11:26:10 +0200 Subject: [PATCH 1/2] [FIX] connector_woocommerce_ast: correct delivered state mapping --- .../models/stock_picking/stock_picking.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/connector_woocommerce_ast/models/stock_picking/stock_picking.py b/connector_woocommerce_ast/models/stock_picking/stock_picking.py index a83f8db9d..8ad9c0f49 100644 --- a/connector_woocommerce_ast/models/stock_picking/stock_picking.py +++ b/connector_woocommerce_ast/models/stock_picking/stock_picking.py @@ -1,4 +1,5 @@ # Copyright NuoBiT Solutions - Kilian Niubo +# Copyright 2026 NuoBiT Solutions SL - Deniz Gallo # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) from odoo import fields, models @@ -18,7 +19,7 @@ def _get_woocommerce_stock_picking_state(self): woocommerce_stock_picking_state = super()._get_woocommerce_stock_picking_state() if ( woocommerce_stock_picking_state == "done" - and self.delivery_state == "shipping_recorded_in_carrier" + and self.delivery_state == "customer_delivered" ): woocommerce_stock_picking_state = "delivered" return woocommerce_stock_picking_state From f42f871c4d5e9aa4cb3c078a7f8ee08b51f846fb Mon Sep 17 00:00:00 2001 From: ??? Date: Mon, 20 Apr 2026 17:28:55 +0200 Subject: [PATCH 2/2] [FIX] connector_woocommerce_ast: send latest shipment tracking to WooCommerce --- .../models/sale_order/export_mapper.py | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/connector_woocommerce_ast/models/sale_order/export_mapper.py b/connector_woocommerce_ast/models/sale_order/export_mapper.py index ae4754657..95b5254f8 100644 --- a/connector_woocommerce_ast/models/sale_order/export_mapper.py +++ b/connector_woocommerce_ast/models/sale_order/export_mapper.py @@ -1,5 +1,6 @@ # Copyright NuoBiT Solutions - Kilian Niubo # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) + from odoo import _ from odoo.exceptions import ValidationError @@ -22,18 +23,22 @@ def status(self, record): @mapping def shipment_tracking(self, record): tracking = {} - for picking in record.picking_ids: - if picking.carrier_id: - carrier = self.backend_record.carrier_provider_ids.filtered( - lambda x: picking.carrier_id.delivery_type == x.delivery_type + picking = record.picking_ids.filtered( + lambda p: p.state == "done" and p.carrier_id + ).sorted(key=lambda p: p.id,)[-1:] + if picking: + carrier = self.backend_record.carrier_provider_ids.filtered( + lambda x: picking.carrier_id.delivery_type == x.delivery_type + ) + if not carrier: + raise ValidationError( + _("carrier is not defined on backend for carrier %s") + % picking.carrier_id.name ) - if not carrier: - raise ValidationError( - _("carrier is not defined on backend for tax %s") - % record.get("carrier_id") - ) - tracking["tracking_provider"] = carrier.woocommerce_provider + elif len(carrier) > 1: + raise ValidationError(_("Carrier is duplicated")) + tracking["tracking_provider"] = carrier.woocommerce_provider if picking.carrier_tracking_ref: tracking["tracking_number"] = picking.carrier_tracking_ref - if tracking: - return {"_wc_shipment_tracking_items": [tracking]} + if tracking: + return {"_wc_shipment_tracking_items": [tracking]}