Met deze koppeling van Magento 2 (versie 2.3.7) ondersteunen we de volgende gegevensstromen:
- Inlezen verkooporders
- Inlezen producten
- Exporteren voorraadmutaties
- Exporteren shipmentberichten (leveringen)
Om de koppeling te kunnen leggen dien je de volgende gegevens te hebben:
- URL webshop - bijvoorbeeld https://www.bedrijfsnaam.nl/rest/V1
-
Integration access token - Deze kun je aanmaken zoals beschreven op https://devdocs.magento.com/guides/v2.3/get-started/authentication/gs-authentication-token.html
Gegevensstromen
Hieronder staat per gegevensstroom welke velden wij automatisch verwerken bij een import. Mocht je addons of andere velden willen gebruiken dan dient dit afgestemd te worden. Wij ondersteunen alleen velden welke beschikbaar zijn in de basis feeds.
Verkooporders:
Voor de verkooporders halen we iedere 5 minuten recent gemuteerde orders op en lezen deze in in het WMS.
Hiervoor maken we gebruik van de endpoint optie 'orders'. In het bericht wat we hiervan ophalen gebruiken we standaard de volgende set gegevens:
WMS : Magento2 veld
"update_code": status = 'exported' ? "INSERT_AND_UPDATE"
/*default cancelled if unknown status*/
: "CANCELLED",
"status": status = 'exported' ? "OPEN" : "CLOSED",
"delivery_date": $now('[D01]-[M01]-[Y0001] [H01]:[m01]:[s01]', '0100'),
"on_hold": on_hold,
"order_description": $string($distinct(items.order_id)),
"order_reference": increment_id,
"shipment_reference": increment_id,
"partial_delivery_allowed": "0", /*deellevering standaard uit*/
"send_type_classification": { /*verzendwijze-classificatie*/
"st_class_reference" :shipping_description,
"st_agent_shipping_code" :"default",
"st_agent_shipping_service_code": "default"
},
"pod": extension_attributes.shipping_assignments[0].shipping.address
{"reference": "POD"&parent_id,
"name": firstname &' '& lastname,
"contact_name": firstname &' '& lastname,
"street_name": street[0],
"house_number": street[1],
"house_number_extension": street[2],
"zip_code": postcode,
"city": city,
"country_reference": country_id,
"mobile_number": telephone,
"email_address":email },
"order_lines": items[product_type ='simple']?
items[product_type ='simple'][].{
"update_code": $$.status = 'exported' ? "INSERT_AND_UPDATE" : "CANCELLED",
"order_line_reference":$string(item_id),
/*remove every alfanumeric character (to remedy unproper product ids*/
"product_reference": $replace(sku,/[A-Z a-z -]/, ''),
"order_line_quantity":qty_ordered,
"ool_sorting_code": "3",
/*if a product has a parent item, store it in the ool-properties so we can access it in the shipment-export */
"properties" : parent_item_id ? [
{"name" : "OOL_STRING_1",
"value": $string(parent_item_id)
}
Let op: Standaard ondersteund Magento geen uitgestelde leverdatum. Dus iedere order wordt geimporteerd met als leverdatum de import datum
Producten:
Producten worden eenmalig allemaal geimporteerd en daarna halen we alleen nieuwe producten op of wijzigingen. Dit wordt ook iedere 5 minuten uitgevoerd.
Hiervoor maken we gebruik van de endpoint optie 'products'. In het bericht wat we hiervan ophalen gebruiken we standaard de volgende set gegevens:
WMS : Magento2
"product_reference": sku,
"product_description_1": name,
"product_description_2": product_description_2,
"accounting_price":price,
"location_reference": location_reference,
/*"product_groups": [product_groups{
"product_group_reference": product_group_reference
}], */
"default_packaging": default_packaging{
"packaging_type_ref": packaging_type_ref,
"unit_measure_ref": unit_measure_ref = "EACH" ? "ST": unit_measure_ref
},
"smallest_packaging": smallest_packaging{
"packaging_type_ref": packaging_type_ref,
"unit_measure_ref": unit_measure_ref = "EACH" ? "ST": unit_measure_ref
},
/*fixed weight until product data is up to date in webshop */
"weight": "1",
"weight_unity": '3', /*KG*/
"product_ids": [custom_attributes[attribute_code='ean']{
"id": value,
"type": "EAN" }]
}
Stock update:
Voorraad updates zijn optioneel maar worden standaard aangezet bij het leggen van de koppeling. Hierbij sturen wij een stock update terug naar Magento bij iedere voorraad wijziging in het WMS.
Hiervoor maken we gebruik van de endpoint optie 'products/{productSku}/stockItems/{itemId}'. In dit bericht sturen we dus alleen de volgende gegevens door per stock update:
- qty : hoeveelheid
- sku : product referentie
- item_id : altijd waarde 1, waardoor de optie 'multiple_stocks' niet van toepassing is.
Voorbeeldbericht:
{
"requestBody": {
"stockItem": {
"qty": 30
}
},
"pathParameters": {
"sku": "5000159408295",
"item_id": 1
}
}
Shipment bericht:
Via het shipment bericht worden geleverde goederen teruggekoppeld aan de webshop. Dit gebeurd per verzendeenheid en hierbij rekent Magento zelf uit wanneer een order volledig is verzonden. Indien de verzendeenheid wordt verzonden middels een carrierkoppeling, waarbij het verzendlabel door het WMS wordt afgedrukt, dan wordt de tracking code van het pakket automatisch teruggekoppeld aan de webshop middels het shipment bericht.
Hiervoor maken we gebruik van de endpoint optie 'order/{orderId}/ship'. In dit bericht sturen we dus alleen de volgende gegevens door per verzendeenheid:
- orderId : orderreferentie
- order_item_id : technisch product id
- qty : hoeveelheid
- tracks[] : Hierin zit trackingnummer met als vaste tekst 'Verzonden met carriernaam' (indien van toepassing)
Voorbeeldbericht:
[
{
"order_reference": "292187",
"pathParameter": "292187",
"requestBody": {
"items": [
{
"order_item_id": 558854,
"qty": 1
}
],
"notify": false,
"appendComment": false,
"tracks": [
{
"track_number": "Trackingcode",
"title": "Verzonden met XXX",
"carrier_code": "XXX"
}]
}
}
]