Dagelijks automatisch voorraad in Visma corrigeren

Assorted Wine Bottles

Wat is de uitdaging?

Soms heb je gewoon voorraad correcties binnen je bedrijf. Dat kan zijn omdat een product bedorven is of dat het kapot is gegaan. Afhankelijk van je boekhoudkundige processen moet je dat dan corrigeren. In dit geval kiezen we voor de methode het direct te corrigeren via de Visma.net API. 

Wat heb je nodig?

We hebben een aantal zaken nodig:

Met deze componenten kun je het proces automatiseren.

De Visma.net API

Als je dit leest dan heb je vast al wel eens met de Visma API gewerkt. Zo niet dan kun je hier de API reference vinden.

Voor deze oplossing werken wij met de methode inventoryadjustment. Met deze methode doe je binnen Visma direct correcties.

Correcties kunnen zowel positief als negatief zijn.

Wat is onze aanpak normaal gesproken?

Over het algemeen kiezen we er altijd voor een tijdelijke database als MYSQL op een lowcode server te gebruiken. Dit is een soort intermediair tussen de verschillende systemen en je kunt daar ook eenvoudig met bijvoorbeeld Budibase een interface overheen leggen. Met N8N regelen we dan vervolgens de hele integratie. Hoe zit dat er in stappen uit?

  • we halen de mutaties op uit bijvoorbeeld een voorraadsysteem via een API en N8N;
  • we slaan de informatie op in MYSQL database;
  • halen de informatie uit MYSQL en formatteren deze;
  • we bieden via de Visma API de informatie aan.

Via de gekozen Visma methode moet je eigenlijk twee API methoden doorlopen:

  • POST naar inventoryadjustment;
  • POST naar inventoryadjustment met de opties <adjustment id>/action/release
De adjustment id moet je uitlezen uit de response van de eerste aanroep. Niet zo heel fijn maar het is goed te doen.

De JSON data

De Visma API werkt met het aanbieden van JSON data en ondersteunt ook batchverwerking van meerdere records. Let er wel op dat je mt een batchverwerking wat meer moet doen om te zien of elke record goed is gegaan. Helaas geeft Visma geen overzicht terug van de juist afgehandelde records. Een niet bestaand product kan bijvoorbeeld de hele batch afkeuren. Alles in separate API calls aanroepen is ook geen optie, het kan soms om heel veel producten gaan. Hieronder zie je een voorbeeld.

{ "adjustmentLines": [ { "operation": "Insert", "description": { "value": "Houdbaarheidsdatum verstreken" }, "warehouseId": { "value": "gro" }, "branchNumber": { "value": "11" }, "lineNumber": { "value": 0 }, "uom": { "value": "STUK" }, "inventoryNumber": { "value": "9999" }, "quantity": { "value": 1 } }, { "operation": "Insert", "description": { "value": "Houdbaarheidsdatum verstreken" }, "warehouseId": { "value": "gro" }, "branchNumber": { "value": "11" }, "lineNumber": { "value": 0 }, "uom": { "value": "STUK" }, "inventoryNumber": { "value": "55555" }, "quantity": { "value": 1 } } ], "branchNumber": { "value": "11" }, "description": { "value": "Producten zijn niet meer goed" } }

Deze eerste aanroep zorgt ervoor dat er een correctie wordt aangemaakt die In balans als status heeft.

Na het aanroepen van de eerste methode moeten we de correctie “releasen”. Dat doen we met de methode zoals eerder beschreven.

Een voorbeeld N8N workflow voor voorraad correcties

De volgende flow is een voorbeeld van een nocode oplossing die informatie uit een API haalt, deze opslaat in MYSQL, transformeert en doorstuurt naar Visma via de API. Dit alles in 1-3 seconden.

Deze workflow heeft een scheduler die dit elke dag 1 keer doet. Als een API aanvraag mislukt dan ondernemen we nog 3 pogingen.

De adjustment id halen we uit het resultaat van de vorige API call, daarmee release we de voorraad correctie.

{{ $json.headers.location.split("/").last() }}

Het belangrijkste wat je moet doen is het configureren van de URL en de API key. De API key kun je zien in DocHorizon. Daarnaast kun je de URL ook in DocHorizon vinden.

Het tweede deel waar je voor moet zorgen is dat het POST formaat correct gestructureerde JSON is. Dat zie je in het volgende screenshot.

Als we nu de N8N workflow draaien dan krijgen we het volgende resultaat.

Moet je ook veel documenten verwerken en zit je te denken aan een maatwerk oplossing? Kijk eerst eens naar lowcode workflows voordat je dure maatwerk oplossingen gaat bouwen. Vaak kunnen we in een paar dagen al een mooi resultaat behalen.

Interesse in lowcode oplossingen?

Related Post