PunchOut
Wat is een OCI koppeling / OCI PunchOut?
Dit artikel gaat specifiek in op OCI koppelingen. Voor een algemene uitleg over PunchOut verwijzen wij u door naar het algemene artikel over PunchOut.
Een OCI koppeling, ook wel OCI PunchOut of OCI PunchOut koppeling genoemd is een door SAP ontwikkelde standaard, en werkt met standaard HTTP methodes om een gebruiker vanuit het inkooppakket bestellingen te laten doen. Hiervoor wordt de gebruiker automatisch ingelogd vanuit het inkooppakket in de webshop, en wordt de winkelwagen niet afgerekend, maar teruggestuurd naar het inkooppakket.
#Wat is een OCI koppeling
Hieronder wordt de werking van een OCI-koppeling vanuit het perspectief van een zakelijke besteller uitgelegd. Het inkooppakket in onderstaande voorbeeld is de ProActive Spend Cloud, maar voor de overige inkooppakketten is de werkwijze vergelijkbaar.
#Selecteer een leverancier
In het inkooppakket wordt een overzicht gegeven van alle leveranciers die OCI koppelingen aanbieden. De inkoper selecteert een leverancier bij wie hij wil bestellen door deze leverancier aan te klikken.
#Automatisch ingelogd
De inkoper wordt automatisch ingelogd in de webshop of catalogus van de leverancier. (Er is dus geen handmatige login nodig.) De inkoper kan op de gebruikelijke manier zijn winkelmandje vullen.
#Stuur winkelmand terug
Als de inkoper klaar is met het vullen van zijn winkelmandje worden de producten niet gelijk afgerekend. In plaats hiervan stuurt de webshop/catalogus de inkoper samen met de inhoud van het winkelmandje terug naar het inkooppakket.
De productinformatie wordt overgenomen door, en weergegeven in, het inkooppakket.
#Aanvraag afronden
In het inkooppakket kan de besteller additionele (financiële) informatie opgeven. Zo kan bijvoorbeeld een grootboekrekening worden geselecteerd, maar ook gegevens van de ontvanger en het afleveradres worden hier ingevuld. Zodra alle verplichte velden zijn ingevuld kan de order intern verstuurd worden voor goedkeuring. Op dit moment wordt er ook een inkoopordernummer (PO nummer) gegenereerd, op basis waarvan de besteller de order kan volgen.
#Order goedkeuren
Elke order moet eerst binnen het inkooppakket goedgekeurd worden. Elke inkoper heeft bepaalde rechten, en op basis hiervan bepaalt het inkooppakket wie een inkooporder moet goedkeuren voordat deze naar de leverancier gestuurd mag worden. Zodra de verplichte goedkeuringen zijn verkregen stuurt het inkooppakket automatisch de order naar de leverancier.
#Orderontvangst door leverancier
De leverancier ontvangt de orderbevestiging die door het inkooppakket is verstuurd. Dit is het moment dat de order daadwerkelijk bevestigd is, en de leverancier kan overgaan tot levering. Afhankelijk van het inkooppakket kan de order als PDF of Word bestand via de mail verstuurd worden, of als (c)XML bestand via HTTP(S) of (S)FTP worden afgeleverd.
#Registreer ontvangst
Zodra de inkopende partij de bestelling heeft ontvangen wordt deze als "geleverd" in het inkooppakket geregistreerd. Op deze manier kan de inkopende partij makkelijk bijhouden welke inkopen wel of niet zijn aangekomen bij de respectievelijke leveranciers.
#Stap 8: Koppel factuur
Als er een factuur wordt verstuurd door de leverancier kan deze aan een inkooporder worden gekoppeld. Hierdoor kunnen facturen sneller goedgekeurd worden; er was immers al goedkeuring voor de orderaanvraag. Als het PO nummer / inkoopordernummer door de leverancier op de factuur wordt geplaatst gebeurd dit in de meeste gevallen volledig automatisch!
#Hoe Werkt Een OCI Koppeling
Voor het inloggen in (PunchOut naar) de webshop worden er gebruikersgegevens meegegeven door het inkooppakket. Deze gegevens kunnen meegegeven worden via de POST of GET methode. Het verschil tussen deze twee methodes is dat bij de POST methode de gebruikersgegevens op de achtergrond worden meegestuurd. Bij de GET methode worden de gebruikersgegevens in de URL meegegeven, waardoor deze dus makkelijker door een gebruiker uit te lezen zijn.
Als we een gebruiker in willen loggen in de webshop met het adres “www.example.org” dan kan dat bijvoorbeeld door de gebruiker naar het volgende adres te sturen:
https://example.org/oci?username=JohnDoe123&password=SuperSecret& HOOK_URL=https://www.site.voorbeeld?hash=abc123
In dit voorbeeld worden er in de URL naast het adres van de webshop nog 3 andere parameters meegegeven:
-
username , dit is de gebruikersnaam waarmee de gebruiker in kan loggen in de webshop. In dit voorbeeld is de gebruikersnaam "JohnDoe123".
-
password, dit is het wachtwoord dat bij het gebruikersaccount hoort. In dit voorbeeld is het wachtwoord "SuperSecret".
HOOK_URL, dit is het adres waar de winkelwagen naar terug moet worden gestuurd. In het voorbeeld is het adres XXX, maar in de praktijk zitten er ook in de HOOK URL parameters om de verschillende gebruikers vanuit het ERP te kunnen onderscheiden.
De parameters met de username en wachtwoord moeten door de webshop worden geverifieerd om te bepalen of de gebruiker geauthenticeerd is of niet. Indien alles correct is moet de gebruiker direct ingelogd worden in de webwinkel.
LET OP! De parameters worden vrijwel altijd "url encoded" meegestuurd. Dit is noodzakelijk omdat niet alle tekens zijn toegestaan in een URL. De webshop moet de ontvangen parameters altijd "url decoden" voordat deze gebruikt worden.
Voor het terugsturen van de winkelwagen naar het inkooppakket wordt wederom van een HTTP Post gebruik gemaakt. Er zijn verschillende methodes waarop dit geïmplementeerd kan worden, maar een simpel voorbeeld is bijvoorbeeld een HTML formulier met verborgen waardes. SAP heeft standaard namen voor de parameters van de PunchOut order, deze worden gekenmerkt door het voorvoegsel NEW_ITEM. Het is belangrijk om te zorgen dat de parameters die de webshop meestuurt overeenkomen met de waardes zoals het ERP deze verwacht. Indien er van een goed ERP pakket gebruik gemaakt wordt is er de mogelijkheid om verschillende velden te mappen om makkelijk op verschillende webshops aan te sluiten. Een voorbeeld van een HTML formulier om producten mee te sturen ziet er als volgt uit:
1<form action="https://www.procurementsystem.voorbeeld?hash=123ABC" method="post">
2 <input type="hidden" name="NEW_ITEM-DESCRIPTION[0]" value="A123">
3 <input type="hidden" name="NEW_ITEM-QUANTITY[0]" value="1">
4 <input type="hidden" name="NEW_ITEM-UNIT[0]" value="Stuks">
5 <input type="hidden" name="NEW_ITEM-PRICE[0]" value="10.00">
6 <input type="hidden" name="NEW_ITEM-CURRENCY[0]" value="EUR">
7 <input type="hidden" name="NEW_ITEM-VAT[0]" value="21">
8 <input type="hidden" name="NEW_ITEM-VENDORMAT[0]" value="12345">
9 <input type="submit" value="Transfer shopping cart" id="submit1" name="submit1">
10</form>
Voor een gedetailleerde uitleg en een omschrijving van alle velden kunt u de officiële OCI documentatie van SAP raadplegen.