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.
In dit artikel is gave nieuwe functionaliteit verwerkt die wordt uitgeleverd met een patch op Profit 4. |
Vanaf Profit 4 kun je de contactgegevens van een aanvrager/besteller van een OCI-inkoopaanvraag meesturen met de cXML van de uiteindelijke inkooporder. Handig voor de leverancier om deze contactgegevens te hebben voor het afleveren van de goederen of voor op het afleveretiket.
OCI-koppeling ontwikkelen
Een OCI-koppeling ontwikkelen op basis van de standaard Profit OCI-definitie bestaat uit drie stappen:
- De gebruiker vanuit InSite automatisch aanmelden in de webshop van de leverancier
- De gebruiker terugsturen naar InSite met daarbij de details van het winkelmandje
- 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.
In dit artikel is gave nieuwe functionaliteit verwerkt die beschikbaar is vanaf Profit 5. |
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 de volgende 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.
- {debiteurnummer}: 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}
- De vierde parameter die mogelijk is (vanaf Profit 5) is de tag {uniqueid}: Dit is een extra parameter om het winkelmandje uniek te maken. Hiermee wordt bij elke aanroep een unieke GUID gegenereerd en voorkomt dat gebruikers in elkaars winkelmandje terechtkomen.
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-PRICEUNIT: prijsfactor
- 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.
Contactgegevens aanvrager/besteller in cXML order (via Patch in Profit 4)
Bij het aanmaken van een cXML order is een <Contact> tag beschikbaar met de gegevens van de "aanvrager".
Wel gelden er bepaalde voorwaarden:
Er wordt gecontroleerd of er maar 1 "aanvrager" is. (Een Inkooporder kan een verzameling zijn van meerdere inkoopaanvragen).
De <Contact> tag ziet er als volgt uit:
<Contact afas-show="{{Applicant.AfasKnName}} != ''">
<Name xml:lang="en_US">{{Applicant.AfasKnName}}</Name>
<Email>{{Applicant.AfasKnEmail}}</Email>
<Phone name="Work" afas-show="{{Applicant.AfasKnTelNr}} != ''">
<TelephoneNumber>
<CountryCode isoCountryCode="{{DeliveryAddress.AfasKnCountryId}}">{{DeliveryAddress.AfasKnCountryId}}</CountryCode>
<AreaOrCityCode>N/A</AreaOrCityCode>
<Number>{{Applicant.AfasKnTelNr}}</Number>
</TelephoneNumber>
</Phone>
<Phone name="Mobile" afas-show="{{Applicant.AfasKnMobileNr}} != ''">
<TelephoneNumber>
<CountryCode isoCountryCode="{{DeliveryAddress.AfasKnCountryId}}">{{DeliveryAddress.AfasKnCountryId}}</CountryCode>
<AreaOrCityCode>N/A</AreaOrCityCode>
<Number>{{Applicant.AfasKnMobileNr}}</Number>
</TelephoneNumber>
</Phone>
</Contact>
Kort samengevat:
- Tag is beschikbaar als er 1 aanvrager is.
- Naam van de aanvrager.
- E-mailadres van de aanvrager.
- Telefoonnummer werk.
- Telefoonnummer mobiel werk.
Direct naar
|