Skip to main content

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 3 weeks 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 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

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

createdAtRemote

created

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

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

Did this answer your question?