Veelgestelde vragen / Anveo EDI Connect / Hoe voeg je een IF-conditie toe aan je mapping
Dit is een automatische vertaling. De originele post is beschikbaar in Engels.

Hoe voeg je een IF-conditie toe aan je mapping

Als je enige vaardigheid in een programmeertaal hebt, zul je zeker de IF-THEN-ELSE stelling kennen: als een tabelveld of een variabele een specifieke waarde X heeft, doe dit dan, als je niet iets anders doet. Het is mogelijk om dit gedrag te reproduceren in een mapping, er zijn verschillende manieren om dit te doen en in dit artikel willen we ze uitleggen.

Voor het eerste geval gaan we ervan uit dat u een gefrankeerde verkoopfactuur wilt exporteren. U beschikt over een header voor de verkoopfactuur en verschillende factuurregels. De factuurregels bevatten enkele items en enkele opmerkingen boven en tussen de regels. Zonder diep in te gaan op uw mapping structuur, ben ik er zeker van dat u een loop line heeft voor uw verkoopfactuur header en enkele data mapping lijnen onder de lijn, gevolgd door een loop line voor uw verkoop lijnen en hun mapping lijnen:

Sales Invoice Header
– EDI Document
– Factuurheader data mapping lijn 1
– Factuurheader data mapping lijn 1 – Factuurheader data mapping lijn 2
– Factuurheader data mapping lijn ….
– Factuurlijn
– Factuurlijn — Factuurlijngegevens in kaart brengen lijn 1
— en ga zo maar door ….
De streepjes moeten het niveau van de streepjes uit de kartering aangeven.

De vraag is: hoe scheidt u de artikelregels van de regels met commentaar? Het is gevaarlijk om aan te nemen dat de volgorde van het item en de commentaarregels altijd hetzelfde is, dus je hebt een oplossing nodig die onafhankelijk is van de volgorde.

De oplossing is om twee nieuwe luslijnen onder de verkoopfactuurlijn toe te voegen. In het hierboven afgebeelde scenario hebben alle commentaarregels het type “leeg”, alle andere regels hebben een bepaald type, waardoor de regels te onderscheiden zijn. De eerste nieuwe luslijn is een lus over de verkoopfactuurregel tabel, met dezelfde data-item link en filters als uw eerste lus, maar u voegt een nieuwe filter toe: Type=CONST(” “). U kunt dit lezen als “Als het type verkoopfactuurregel leeg is” – uw eerste deel van de IF-afrekening!
Nu voor het “THEN”-deel: alle mapping lijnen die onder deze nieuwe regel zijn ingesprongen vormen het “THEN”-deel en u kunt de opmerkingen bijvoorbeeld in de tabel “EDI Additional Information” plaatsen, met alle noodzakelijke data-item links en filters.

En hoe zit het met alle andere lijnen met uw posten (en G/L rekeningen en middelen)? Nou, onafhankelijk van je algemene exportregels die gelden voor je mapping, hebben deze regels een ander type dan lege regels. Dat betekent dat u een tweede nieuwe regel aan uw mapping kunt toevoegen, onder de IF-regel, met dezelfde data-item link en filters als uw eerste lus, maar nu voegt u het filter op het type als deze toe: Type=FILTER(0). U kunt het lezen als “als het type verkoopfactuurregel ELSE dan leeg is” – uw ELSE-deel van het overzicht. In dit geval wilt u waarschijnlijk een aantal EDI Document Lines aanmaken die de informatie over de items (en resources en G/L accounts) bevatten, zodat u de EDI Document Line mapping regel onder deze andere regel indekt en de data mapping lijnen op de juiste manier toevoegt.

Als u dit voorbeeld nader wilt bekijken, kunt u het sjabloon voor het exporteren van de verkoopfacturen uit de assistent gebruiken: maak een nieuwe lege NAV-mapping met projectcode en -code, voer vervolgens de assistent uit vanaf het lint “Actie” via “Maak en actualiseer wizard uitvoeren” en selecteer de eerste optie:


In plaats van het invoegen van de tweede Verkoopfactuurregel kunt u ook een voorwaardelijke typeregel invoeren. Laten we een stap terug doen naar de lus “Sales Invoice Line”: deze loopt door elke factuurlijn, d.w.z. elke factuurregel wordt na elkaar aan de mapping doorgegeven. Als het een commentaarregel is, wordt de informatie naar de tabel EDI Additional Information geschreven – wat betekent dat er een record in het filter zit.

Met de voorwaardelijke type regel kunt u profiteren van het feit dat als u een niet-commentaarregel hebt, het bovengenoemde filter geen record vindt. De voorwaardelijke lijn kan dit geval controleren met de functie “ISEMPTY”. De naam is letterlijk, als er geen record in het filter van de Sales Invoice Commentaar regel staat, worden alle mapping lijnen ingesprongen onder de voorwaardelijke regel uitgevoerd. Hier worden de EDI Document Lines geschreven. De complete eigenschappen van de mapping line zien er ongeveer zo uit:

Als u het sjabloon in een nieuwe mapping heeft geïmporteerd, kunt u de mapping regel met de naam “ELSE” veranderen in deze voorwaardelijke regel.

Een andere manier om een voorwaarde te creëren is het gebruik van een waardevertaling. U moet bijvoorbeeld de meeteenheid voor uw items exporteren naar een EDIFACT type bericht. Het is zeer waarschijnlijk dat de codes in uw NAV systeem niet overeenkomen met de codes die verwacht worden in EDIFACT, dus u moet ze vertalen: als de code “PALLET” is, schrijf dan “PAL” naar de buffer tabel. Als het “PIECE” is, schrijf dan “PCE”. Als “HOUR”, schrijf “HUR”. En zo verder.

U kunt de hierboven beschreven filtering gebruiken en een verkoopregel (waarschijnlijk in dit geval) onder de oorspronkelijke regel toevoegen voor elke meeteenheid en de corresponderende code naar de EDI Document Line schrijven, maar het is veel eenvoudiger om een waardevertaling te gebruiken. Elke “bron”-meeteenheid krijgt een “destination”-meeteenheid toegewezen, deze bestemmingscode wordt naar het bestemmingsveld in de mapping line geschreven. Voor het opzetten van een waardevertaling verwijzen wij u naar het kennisbankartikel [insert link=”” here]=””]