Skip to main content
All CollectionsIntegrationsQLS
QLS - Data Mapping & Synchronization
QLS - Data Mapping & Synchronization

This article describes in detail what and how data is used for the connection with QLS.

Marc de Graaf avatar
Written by Marc de Graaf
Updated over 4 months ago

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

product.stockLevel = amount_available - amount_backorder + amount_internally_moving(*3)

(*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

purchase_order_products.purchase_order_label_products.amount

ocurred

purchase_order_products.purchase_order_label_products.created

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

Did this answer your question?