Inkoopaanvraag via eigen OCI-koppeling inrichten (Profit-definitie)

Profit kent een standaard OCI-definitie (de Profit-definitie) die bedoeld is voor koppelingen die niet door AFAS onderhouden worden. AFAS levert standaard OCI-koppelingen uit met verschillende leveranciers. Het activeren van zo'n koppeling is een kwestie van je gebruikersnaam en wachtwoord invullen en je kunt gaan bestellen.Staat jouw leverancier niet in de lijst met standaardkoppelingen? Dan kun je je leverancier vragen om een koppeling met InSite te maken.

OCI-koppeling ontwikkelen

Een OCI-koppeling ontwikkelen op basis van de standaard Profit OCI-definitie bestaat uit drie stappen:

  1. De gebruiker vanuit InSite automatisch aanmelden in de webshop van de leverancier
  2. De gebruiker terugsturen naar InSite met daarbij de details van het winkelmandje
  3. De definitieve inkooporder exporteren naar de leverancier via een XML-bestand

Hieronder leggen we per stap uit hoe je dit kunt ontwikkelen.

Voorbeeld cXML-bestand:

Raadpleeg een voorbeeld van het cXML-bestand hier.

Voorbeeld cXML-bestand btw, artikelcode en artikelgroep via andere (extra) velden aanbieden:

Raadpleeg een voorbeeld van het cXML-bestand hier.

Inhoud

1. De gebruiker vanuit InSite automatisch aanmelden in de webshop van de leverancier

Vanuit InSite kan een gebruiker automatisch aangemeld worden in de webshop van de leverancier. Hiervoor leg je in het OCI-profiel vast wat de aanmeld-URL van de leverancier is en welke gebruikersnaam en wachtwoord daarbij gebruikt moeten worden.

De aanmeld-URL leg je vast in de velden Productie-URL (verplicht) en Test-URL (eventueel) in de eigenschappen van het OCI-profiel.

Een voorbeeld van een aanmeld-URL is als volgt:

https://www.leverancier.demo/webshop/login?USERNAME={gebruikersnaam}&PASSWORD={wachtwoord}

De aanmeld-URL kent twee parameters die automatisch door Profit gevuld worden:

  • {gebruikersnaam}: De gebruikersnaam die in het OCI-profiel ingericht is.
  • {wachtwoord}: Het wachtwoord dat in het OCI-profiel ingericht is.

    Het is mogelijk om in het Profit OCI-profiel het debiteurnummer als variabele in de URL mee te geven als hier door de leverancier om wordt gevraagd. Deze waarde wordt uit het profiel opgehaald op het tabblad 'Voorkeurwaarden' bij het veld 'Nr. debiteur (leverancier)'. Deze parameter geef je zo mee: {debiteurnummer} Dit ziet er dan bijvoorbeeld zo uit: https://www.leverancier.demo/webshop/login?USERNAME={gebruikersnaam}&PASSWORD={wachtwoord}&CUSTOMER={debiteurnummer}

Zodra de gebruiker naar de webshop van de leverancier gestuurd wordt, wordt automatisch de parameter HOOK_URL toegevoegd aan de URL. Dit is de URL van InSite waarnaar de gebruiker teruggestuurd moet worden in stap 2. De definitieve URL waarmee de gebruiker aankomt bij de webshop van de leverancier kan er dus als volgt uitzien:

https://www.klant.demo/shop/login?USERNAME=gebruiker&PASSWORD=wachtwoord&HOOK_URL=https://insite.afas.online/postdatacallback/demo2c0b

De webshop van de leverancier kan vervolgens de gebruikersnaam en het wachtwoord valideren en daarmee de gebruiker automatisch aanmelden.

2. De gebruiker terugsturen naar InSite met daarbij de details van het winkelmandje

Nadat de gebruiker het winkelmandje gevuld heeft, moeten de details van het winkelmandje teruggestuurd worden naar InSite. Daar kan dan de inkoopaanvraag gemaakt worden ter goedkeuring door een budgethouder of leidinggevende. Dit gebeurt door de gebruiker via een HTTPS POST naar de hook_url uit stap 1 terug te sturen.

Die HTTPS POST wordt vergezeld van een gegevensverzameling van productspecificaties. Bij terugkomst in InSite vindt aan de hand van de token in de hook_url een validatie plaats ten behoeve van veiligheid en integriteit.

De volgende velden worden per product ondersteund bij de gegevensverzameling van productspecificaties:

  • NEW_ITEM-VENDORMAT: artikelcode van de leverancier (maximaal 30 tekens)
  • NEW_ITEM-DESCRIPTION: omschrijving
  • NEW_ITEM-MATGROUP: productgroep van de leverancier
  • NEW_ITEM-QUANTITY: aantal eenheden
  • NEW_ITEM-UNIT: eenheidscode
  • NEW_ITEM-PRICE: prijs per eenheid
  • NEW_ITEM-CUST_FIELD1: btw-percentage
  • NEW_ITEM-CUST_FIELD2: Verwachte leverdatum, formaat DD-MM-YYYY
  • NEW_ITEM-CUST_FIELD3: Referentie inkooprelatie (we kappen dit veld automatisch af op 50 tekens)
  • Opmerking

    Het veld Opmerking in de inkoopaanvraagregel wordt als volgt opgebouwd:

    • Als NEW_ITEM-LEADTIME (Dit veld wordt vanuit het bericht van de webshop vertaald naar het Profit-veld “AFASFbLeadtime” in de tabel ‘OCI record’) groter is dan 0, dan wordt de tekst: "Dagen levertijd: [waarde uit het veld]" getoond.
    • Als NEW_ITEM-LONGTEXT_n:132 (Dit veld wordt vanuit het bericht van de webshop vertaald naar het Profit-veld “AfasFblongtext_132" in de tabel ‘OCI record’) een waarde bevat dan wordt de tekst als volgt: "TOELICHTING: [waarde uit het veld].
  • Als beide velden gevuld zijn, worden beide waarden toegevoegd in het veld. Ze staan dan onder elkaar met het aantal dagen levertijd als eerste.

    Het is nu mogelijk om btw, artikelcode en artikelgroep via andere (extra) velden aan te bieden.

    Btw kan voorkomen in deze vier velden: NEW_ITEM-CUST_FIELD1, NEW_ITEM-VATPERCENTAGE, NEW_ITEM-VAT_PCT en NEW_ITEM-VAT.

    Als het eerste veld leeg is (niet gevonden) wordt mogelijk het 2e veld gebruikt. enz.

    ItemCode kan voorkomen in deze twee velden: NEW_ITEM-VendorMat en NEW_ITEM-Ext_Product_ID

    ArticleGroup kan voorkomen in deze twee velden: NEW_ITEM-MatGroup en NEW_ITEM-Ext_Category

HTTPS POST-verzoek initiëren

Een eenvoudige manier om via HTML het HTTPS POST-verzoek te initiëren is via onderstaande code:

<form method="post" action="https://insite.afas.online/postdatacallback/demo2c0b7045b14412e43b2a70f1c1a69Fst">

<input type="hidden" name="NEW_ITEM-VENDORMAT[1]" value="oci603524" />

<input type="hidden" name="NEW_ITEM-DESCRIPTION[1]" value="OCI punch out import item oci603524" />

<input type="hidden" name="NEW_ITEM-MATGROUP[1]" value="MATGROUP187" />

<input type="hidden" name="NEW_ITEM-QUANTITY[1]" value="614" />

<input type="hidden" name="NEW_ITEM-UNIT[1]" value="PCS" />

<input type="hidden" name="NEW_ITEM-PRICE[1]" value="178.59" />

<input type="hidden" name="NEW_ITEM-CUST_FIELD1[1]" value="21.0" />

<input type="submit" value="Bestellen in ERP-systeem" />

</form>

3. De definitieve inkooporder exporteren naar de leverancier via een XML-bestand

Nadat de inkoopaanvraag via de workflow in InSite goedgekeurd is, kunnen we de gegenereerde inkooporder via een XML-bestand in een HTTPS POST exporteren naar de leverancier. Op die manier kan de bevestigde order automatisch in de backoffice van de leverancier ingelezen worden.

Naast HTTP en HTTPS is het ook mogelijk FTPs (ftps://) en sFTP orders te verstrekken. Profit kijkt naar het protocol van de Export-URL en test Export-URL en bepaalt aan de hand daarvan het juiste pad.

De export-URL leg je vast in het veld Export-URL op de eigenschappen van het OCI-profiel.

Let op:

Alle communicatie naar onbekende URL's standaard wordt geblokkeerd. Stuur daarom een supportincident in om je export-URL op onze allowlist te laten plaatsen. We willen wel graag het Poortnummer weten. Vaak gewoon 443, maar check dit even voor de zekerheid.

Het XML-bestand dat verstuurd wordt, is opgemaakt conform de cXML-standaard.

Direct naar

  1. Inkooporders via OCI-koppeling inrichten
  2. Inkooporder via website inkooprelatie (OCI) via mail/pdf inrichten
  3. Inkooporder via website inkooprelatie (OCI) met XML inrichten
  4. Inkooporder via website per specifieke OCI-koppeling van inkooprelatie inrichten
  5. Inkooporder via website via Profit-OCI-koppeling inrichten