Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ def _get_selection_fields(self):
string="WooCommerce provider name",
required=True,
)
use_tracking_number = fields.Boolean(
string="Use tracking number",
default=False,
help="Export tracking information for this provider and delay the "
"WooCommerce status export until the picking has a tracking number.",
)

_sql_constraints = [
(
Expand Down
41 changes: 20 additions & 21 deletions connector_woocommerce_ast/models/sale_order/export_mapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,32 +13,31 @@ class WooCommerceSaleOrderExportMapper(Component):

@mapping
def status(self, record):
result = super().status(record)
if record.woocommerce_order_state == "partial_shipped":
return {"status": "partial-shipped"}
result["status"] = "partial-shipped"
elif record.woocommerce_order_state == "delivered":
return {"status": "delivered"}
else:
return super().status(record)
result["status"] = "delivered"

@mapping
def shipment_tracking(self, record):
tracking = {}
picking = record.picking_ids.filtered(
lambda p: p.state == "done" and p.carrier_id
).sorted(key=lambda p: p.id,)[-1:]
).sorted(key=lambda p: p.id)[-1:]
if picking:
carrier = self.backend_record.carrier_provider_ids.filtered(
backend_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
)
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 backend_carrier:
if len(backend_carrier) > 1:
raise ValidationError(_("Carrier is duplicated"))
if backend_carrier.use_tracking_number:
if picking.carrier_tracking_ref:
result["_wc_shipment_tracking_items"] = [
{
"tracking_provider": backend_carrier.woocommerce_provider,
"tracking_number": picking.carrier_tracking_ref,
}
]
else:
result.pop("status")

return result
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<tree editable="bottom">
<field name="delivery_type" />
<field name="woocommerce_provider" />
<field name="use_tracking_number" />
</tree>
</field>
</group>
Expand Down
Loading