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 Stock only | QLS > OP | 10 |
Product Deletions (*) | QLS > OP | #N/A |
Suppliers | QLS > OP | 30 |
SupplierProducts | QLS > OP | 30 |
SupplierProducts Deletions | QLS > OP | 30 (*2) |
Sell Orders | QLS > OP | 30 |
Buy Orders | QLS > OP | 30 |
| OP > QLS | 15 (*3) |
Buy Orders v2 | QLS > OP | 30 |
| OP > QLS | 15 (*3) |
Receipt Lines (Item Deliveries) | QLS > OP | 30 |
Receipt Lines (Item Deliveries) v2 | QLS > OP | 30 |
(*) Deleted products are not retrieved from QLS.
(*2) Supplier Products that bring empty objects in the Suppliers column are deleted, and also Supplier Products that disappear from the Products detail array.
(*3) Export is possible to one of the versions for Buy Orders.
Products
Optiply | QLS |
articleCode | id |
name | name |
skuCode | sku |
eanCode | ean (*4) |
price | price_store |
assembled(*1) | bundle_product |
unlimitedStock | False (*2) |
stockLevel |
|
createdAtRemote |
|
(*1) False if bundle_product array is empty, True otherwise
(*2) It’s mandatory to create the Product in Optiply, 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.
Options and features
Products stockLevel from QLS
An option that allows a customer to use QLS integration to get just the stock from products, no other data will be pulled or processed.
(sync_prod_stock_only
default false
)
Suppliers
Optiply | QLS |
name | name |
remoteId | id |
Supplier Products
Optiply | QLS |
name | name |
skuCode | sku (*1) |
eanCode | ean |
price | price_cost (*2) |
lotSize | order_unit or product_master_cartons.amount (*3) |
articleCode | suppliers._joinData.supplier_code |
(*1) By default, we will map this field, but the customer can decide if we should map that field or not.
(*2) This price is mapped from the product, so all the Suppliers of a Product will have the same purchase price. By default, we will map this field, but customer can decide if we should map that field or not.
(*3) The 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 the product has multiple values in the product_master_cartons.amount, we will use the minimum value from the available amounts.
Multiple supplier (products) is supported.
Options and features
SupplierProducts from QLS
An option that allows a customer to choose if they want to use QLS Integration to get Supplier Products
(use_supplier_products
default true
)
Sell Orders
Optiply | QLS |
totalValue | Sum lines subtotalValue |
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*quantity |
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) The Order will be set to completed when the 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 customers 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 > Optiply)
Optiply | QLS |
Id | id |
supplier id | supplier_name > get the Id from the name |
placed | created |
remoteId | id |
completed (*1) | DateNow (*1) |
(*1) The order will be set to completed when the status is 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 (Optiply > QLS)
Optiply | QLS |
Id | customer_title |
supplier.remoteId | suppliers |
created | deliveries.estimated_arrival |
Buy Orders Lines v2 (Optiply> QLS)
Optiply | QLS |
product.article_code | purchase_order_products.fulfillment_product_id |
product.quantity | purchase_order_products.amount |