Maintainers
+Current maintainers:
+ +This module is part of the ecosoft-odoo/ecosoft-addons project on GitHub.
+You are welcome to contribute.
+Connects Odoo with Zort (Thai multi-channel +e-commerce platform) for bidirectional synchronization of orders, products, +inventory, and returns.
+Zort API endpoints used
+| # | +Endpoint | +Purpose | +
|---|---|---|
| 1 | +/Order/GetOrders | +Pull orders from Zort into Odoo | +
| 2 | +/ReturnOrder/GetReturnOrders | +Pull return orders from Zort | +
| 3 | +/Product/AddProduct | +Create a new product in Zort | +
| 4 | +/Product/UpdateProduct | +Push product name/price changes to Zort | +
| 5 | +/Product/UpdateProductAvailableStockList | +Push available-stock quantity to Zort | +
Key features
+Important
+This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status
+Table of contents
+Go to Settings → Sales → Integrations → Zort Connector and tick +Zort Connector. The credential fields appear below the toggle:
+| Field | +Description | +
|---|---|
| Store Name | +Your store identifier on Zort (storename request header) | +
| API Key | +Zort API key (stored encrypted) | +
| API Secret | +Zort API secret (stored encrypted) | +
| Warehouse Code | +Zort warehouse code used for stock sync (default: W0001) | +
| Default Tax | +Tax applied to every order line imported from Zort | +
Save the settings. Disabling the toggle clears all credential fields.
+Go to Zort → Configuration → eCommerce Channels and create one record per +sales channel that appears in the Zort saleschannel field +(e.g. lazada, shopee).
+| Field | +Description | +
|---|---|
| Name | +Display name (e.g. Lazada) | +
| Code | +Must match the Zort saleschannel value (lowercase) | +
| Platform Customer | +Billing partner used for sale orders from this channel; falls back to +the default marketplace customer if left empty | +
| Auto Create Customer | +When enabled, an end-customer (res.partner) is created from the +order’s customer data; deduplication is done by phone or VAT number | +
For each product that must be synchronised with Zort:
+If a product already exists in Zort, create the mapping manually via +Zort → Products → Zort Products → New - fill in Zort Product ID, Code, +and link to the Odoo product.
+Three service products are required for fee lines on imported orders. They are +created automatically on module installation:
+| Internal Reference | +Purpose | +
|---|---|
| shipping_fee | +Shipping cost line | +
| zort_discount | +Discount line (negative amount) | +
| zort_voucher | +Voucher / coupon line | +
Do not delete or rename these products.
+The following ir.config_parameter keys control sync behaviour and can be +changed in Settings → Technical → Parameters → System Parameters:
+| Key | +Default | +Description | +
|---|---|---|
| zort_connector.order_sync_days_back | +10 | +Days to look back when no previous sync cursor exists | +
| zort_connector.last_sync_datetime | +(empty) | +Auto-updated after each successful sync run; clear to force a full re-sync | +
| zort_connector.pending_order_batch_size | +500 | +Number of zort.order records processed per cron batch | +
Four scheduled actions are installed and run every 10 minutes (all guarded +by the zort_connector_enabled company flag):
+| Scheduled Action | +What it does | +
|---|---|
| Auto Sync Zort Order | +Fetches new/updated orders from Zort | +
| Process Zort Orders to Sale Orders | +Converts pending zort.order records into Odoo sale orders | +
| Validate Zort - Sale Orders | +Validates draft sale orders against the original Zort data | +
| Auto Sync Zort Return Order | +Fetches return orders and creates return pickings / credit notes | +
The actions are created with noupdate="1"; change their interval in +Settings → Technical → Automation → Scheduled Actions.
+Orders are pulled from Zort automatically every 10 minutes by the +Auto Sync Zort Order scheduled action.
+Each Zort order is stored as a zort.order record with state New. A +second cron (Process Zort Orders to Sale Orders) converts New records into +Odoo sale orders in configurable batches (default 500).
+To trigger the import manually, open Zort → Orders and use the +Sync Now action, or run the scheduled actions from +Settings → Technical → Automation → Scheduled Actions.
+When a zort.order is updated by a subsequent sync run, the linked sale +order is updated automatically:
+| Zort status | +Odoo action | +
|---|---|
| Pending | +Sale order remains in Draft | +
| Waiting | +Sale order is Confirmed | +
| Success | +Delivery is validated; a draft invoice is created | +
| Voided | +Sale order is Cancelled | +
A third cron (Validate Zort - Sale Orders) checks each draft sale order +against the original Zort data:
+If both checks pass, validate_zort_order is set to True and the order +is confirmed. Mismatch details are written to the Validation Message field +on the sale order.
+To fix a missing product line manually, open the sale order and click +Update Zort Order Lines - the method adds any product lines present in +Zort but absent in Odoo.
+Open a product variant form (Products → Products, switch to the variant).
+| Button | +Action | +
|---|---|
| Create on Zort | +Calls /Product/AddProduct; creates a zort.product mapping record +on success. Only available when Sync with Zort is ticked. | +
| Update on Zort | +Calls /Product/UpdateProduct with current name, prices, and UoM. +Requires an existing zort.product mapping. | +
| Update Qty to Zort | +Pushes qty_available to Zort via +/Product/UpdateProductAvailableStockList. | +
| Fetch Image from Zort | +Downloads the product image from Zort and sets it on the Odoo product. | +
When a delivery or receipt picking is validated, the connector automatically +pushes the updated qty_available of each Zort-linked product to Zort +(/Product/UpdateProductAvailableStockList).
+Pickings are skipped automatically if:
+The Auto Sync Zort Return Order scheduled action fetches return orders from +Zort every 10 minutes (/ReturnOrder/GetReturnOrders):
+| Zort return status | +Odoo action | +
|---|---|
| Pending | +A return picking (incoming) is created from the original delivery, +quantities are set from the Zort return lines, and the Zort return +number is stored on the picking. | +
| Success | +The existing return picking is validated; a draft credit note is created +and linked to the original sale order. | +
Every order sync run creates one zort.sync.log record per page fetched. +Open Zort → Sync Logs to see:
+| Field | +Meaning | +
|---|---|
| Sync From / To | +Date-time window of the sync run | +
| Page / Total Pages | +Which page this log covers | +
| State | +In Progress / Done / Failed | +
| Created / Updated / Failed | +Per-page order counters | +
| Error Message | +Details when a page fetch or upsert fails | +
Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.
+Do not contact contributors directly about support or help with technical issues.
+Current maintainers:
+ +This module is part of the ecosoft-odoo/ecosoft-addons project on GitHub.
+You are welcome to contribute.
++ Create your first e-commerce channel +
++ No Zort orders yet. Run the sync to fetch orders from Zort. +
++ No sync logs yet. Logs are created automatically by the cron job. +
+Extends zort_connector with Bill of Materials (BoM Kit) support for +Zort stock synchronization.
+Without this module, zort_connector pushes the raw qty_available of +each product variant. When a product is assembled from components via an MRP +BoM Kit, the sellable quantity is determined by the kit’s available stock - not +the finished-good’s own on-hand quantity. This module ensures Zort always +receives the correct figure.
+What it adds
+Dependencies
+Important
+This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status
+Table of contents
+Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.
+Do not contact contributors directly about support or help with technical issues.
+Current maintainer:
+ +This module is part of the ecosoft-odoo/ecosoft-addons project on GitHub.
+You are welcome to contribute.
+Extends zort_connector to process order synchronization and pending-order +conversion asynchronously via queue jobs (using queue_job_cron).
+By default, zort_connector fetches and processes all Zort order pages +synchronously inside the cron transaction. For stores with a large number of +orders this can cause long-running transactions and cron timeouts. This module +offloads the heavy work to the OCA queue-job runner so each page is processed +in its own independent job.
+What it adds
+Important
+This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status
+Table of contents
+Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.
+Do not contact contributors directly about support or help with technical issues.
+Current maintainer:
+ +This module is part of the ecosoft-odoo/ecosoft-addons project on GitHub.
+You are welcome to contribute.
+