Welcome to our guide for a seamless connection between QLS and Optiply. This article is designed to provide you with a clear understanding of how data flows, ensuring your operations run smoothly and efficiently. It's important to note that this integration utilizes a standard data mapping structure, and custom mapping options are not available for this connection.
Overview
Entity | Sync FROM -> TO | Frequency (min) |
Products | QLS > OP | 30 |
Product Deletions (*2) | QLS > OP | #N/A (*4) |
Suppliers | QLS > OP | 30 |
SupplierProducts | QLS > OP | 30 |
SupplierProducts Deletions | QLS > OP | 30 (*3) |
Sell Orders | QLS > OP | 30 |
Buy Orders | QLS > OP | 30 |
OP > QLS | 15 (*5) |
|
Buy Orders v2 | QLS > OP | 30 |
OP > QLS | 15 (*5) |
|
Receipt Lines (Item Deliveries) | QLS > OP | 30 |
Receipt Lines (Item Deliveries) v2 | QLS > OP | 30 |
(*2) Deleted products are not retrieved from QLS.
(*3) SupplierProducts that bring empty object in Suppliers column are deleted and also supplierProducts that disappear from Products detail array
(*4) Deletions are not synced
Products
Optiply | QLS |
articleCode | id |
name | name |
skuCode | sku |
eanCode | ean (*4) |
price | price_store |
assembled(*1) | bundle_product |
unlimitedStock | False (*2) |
stockLevel |
|
(*1) False if bundle_product array is empty, True otherwise
(*2) It’s mandatory to create the Product in Optiply, it will not be mapped for any update after that.
(*3) From the stocks endpoint in QLS : .../fulfilment/products/stock
(*4) EAN is mandatory for sending BO to QLS, so products without EAN will not be mapped.
Suppliers
Optiply | QLS |
name | name |
remoteId | id |
Supplier Products
Optiply | QLS |
name | name |
skuCode | sku (*3) |
eanCode | ean |
price | price_cost (*1)(*2) |
lotSize | order_unit or product_master_cartons.amount (*4) |
articleCode | suppliers._joinData.supplier_code |
(*1) This price is mapped from the product, so all the Suppliers of a Product will have the same purchase price.
(*2) By default we will map this field, but customer can decide if we should map that field or not.
(*3) By default we will map this field, but customer can decide if we should map that field or not.
(*4) Customer can decide if this is mapped or not.
By default we will map this field from order_unit.
Values can be mapped from order_unit or from product_master_cartons.amount but this needs to be changed manually.
If product has multiple values in product_master_cartons.amount, we will use the minimum value from the available amounts.
Multiple supplier (products) is supported.
Sell Orders
Optiply | QLS |
totalValue | 0 |
placed | createdAt |
remoteId | id |
We do not sync Order changes in any way, order line changes, line deletions or new lines added to existing Orders will not be updated in Optiply.
Sell Order Lines
Optiply | QLS |
productId | optiplyWebshopProductArticleCode |
quantity | amount_ordered |
subtotalValue | price_store |
Buy Orders (QLS > Optiply)
Optiply | QLS |
Id | id |
supplier id | supplier_name > get the Id from the name |
placed | created |
remoteId | id |
completed (*1) | DateNow (*1) |
(*1) Order will be set to completed when status is completed
.
Buy Order Lines
Optiply | QLS |
productId | products.id |
quantity | products.amount_expected |
subtotalValue | products.amount_expected * price_cost |
buyOrderId | id |
We sort BuyOrderLines by skuCode ascending when sending the buyOrders to QLS, so that the customer can more easily match lines between Optiply Frontend and QLS Frontend (since our FE allows customer to sort by SKU)
Buy Orders (Optiply > QLS)
Optiply | QLS |
Id | customer_reference |
supplier_name | supplier_name |
product.article_code | products.product_id |
product.quantity | products.amount_expected |
Receipt Lines
Optiply | QLS |
quantity | amount_received |
ocurred | created |
buyOrderLineId | optiply.buyOrderLineId |
remoteId | receipt_id |
Buy Orders v2 (QLS > OP)
Optiply | QLS |
Id | id |
supplier id | supplier_name > get the Id from the name |
placed | created |
remoteId | id |
completed (*1) | DateNow (*1) |
(*1) Order will be set to completed when status archived
Buy Order Lines v2
Optiply | QLS |
productId | purchase_order_products.products.id |
quantity | purchase_order_products.amount |
subtotalValue | products.amount_expected * price_cost |
buyOrderId | id |
We sync OrderLine changes (new lines added, changes to existing lines and line deletions will be updated in Optiply).
Receipt Lines v2
Optiply | QLS |
quantity |
|
ocurred |
|
buyOrderLineId | optiply.buyOrderLineId |
Receipt Lines come from BuyOrderLinesById_v2 endpoint, in purchase_order_products.purchase_order_label_products tag
Buy Orders v2 (OP > QLS)
Optiply | QLS |
Id | customer_title |
supplier.remoteId | suppliers |
product.article_code | purchase_order_products.fulfillment_product_id |
product.quantity | purchase_order_products.amount |
created | deliveries.estimated_arrival |