31 maart 2022

Real time voorraad issues in Magento

We hebben aan verschillende klantprojecten gewerkt waarvoor realtime voorraadinformatie in Magento nodig was. Met de Tinx-IT Magento E-commerce connector is het mogelijk om voorraadgegevens te versturen en te ontvangen tussen Magento en Business Central (BC). Wanneer een voorraadmutatie plaatsvindt binnen BC, wordt een trigger geactiveerd om de nieuwe voorraadwaarde naar Magento te sturen. Dit kan door een voorraadupdate naar de webshop te sturen zodra een specifieke formule wordt geactiveerd: voorraad minus hoeveelheid in verkooporder.

Voorraad reservering

De uitdaging is dat als een klant MSI (Multi-Source Inventory) in Magento gebruikt, de standaard voorraadupdate-formule niet meer werkt. In Magento versie 2.3.3 wordt de hoeveelheid niet meer gewijzigd aan de webshopzijde na het plaatsen van een bestelling. MSI werkt als volgt: het voegt een ander veld toe, dat “inventory reservation”  wordt genoemd.

Onjuiste voorraadniveaus

Wanneer een bestelling op de webshop wordt geplaatst, wordt het veld “salable quantity” van de SKU (Stock Keeping Unit) gewijzigd, maar het veld “quantity” krijgt uit zelf geen vergelijkbare update. Magento voegt een record toe aan de voorraadreserveringstabel. Echter, alleen wanneer een verzending of terugbetaling is aangemaakt op de webshop, zal Magento een nieuw record toevoegen aan de voorraadreserveringstabel die het veld “quantity” zal veranderen.

Het resultaat van deze verandering? Problemen met het voorraadniveau zullen optreden zodra een webbestelling in BC komt en een voorraadupdate naar Magento wordt geactiveerd. De waarde “quantity” minus “quantity in the slaes order” wordt teruggestuurd naar Magento. Op dit punt “begrijpt” BC dat het een bepaalde verkoopbare hoeveelheid over heeft en wil het Magento bijwerken met deze waarden. Omdat een verzending (of terugbetaling) voor deze transactie echter (nog) niet in BC is gedaan, kan de connector er geen verzending voor maken in Magento voordat de nieuwste voorraadniveaus worden verzonden. Dit veroorzaakt verschillende waarden tussen “quantity” en “saleble quantity”.

Aantal niet beschikbaar

 

In het bovenstaande voorbeeld geeft het voorraadniveau op de frontend “In stock” weer aangezien de hoeveelheid 112 is. Desalniettemin, wanneer je dit artikel probeert te bestellen, geeft het een foutmelding omdat de “saleable quantity” 0 is.

Oplossing

Om dit probleem op te lossen, is het belangrijk om te bepalen of de order afkomstig is van Magento, of dat de order ergens anders vandaan komt (e-mail, telefoon, POS-orders). Als de order in eerste instantie van Magento komt, is een terugbetaling of verzending nodig om de voorraadniveaus met betrekking tot de order te voltooien. Als een order van een andere bron komt, moet het voorraadreserveringsproces in Magento worden uitgeschakeld om de juiste voorraadniveaus niet te verstoren.

We kunnen dit doen door middel van een speciale module die de invoer in de voorraadreserveringstabel uitschakelt en de “quantity” en “saleable quantity” wijzigt bij elke nieuwe bestelling. Daarnaast lost deze module ook de voorraadreserveringsproblemen op voor orders van buiten de webshop (e-mail, telefoon, POS-orders). Hierdoor is een verzending of terugbetaling niet meer nodig.
Voor de volledighid, alle andere functionaliteiten binnen MSI blijven gewoon werken.