webshop koppelen met het voorraadsysteem van een externe leverancier

MauriceMaurice Member Posts: 3
edited August 2018 in Development

Goedemorgen,

Er moet een koppeling met een API worden gemaakt, maar ik heb dit nooit gedaan.

Is het mogelijk dat iemand mij daarbij kan helpen? Ervan uitgaande dat ik het de volgende keer op eigen houtje kan. Indien mogelijk zou ik graag telefonisch geholpen worden.

Alvast bedankt.

8 comments

  • sdohmensdohmen Member Posts: 12
    Op zich is het niet zo superlastig maar het helpt wel als je een beetje programmeer ervaring hebt.

    Wij doen dit met de 2 volgende regels:

    curl -g https://api.webshopapp.com/nl/products/$productid.xml -u key:secret -d product[brand]="$brand" -d product[description]="$content" -d product[content]="$description"

    curl -g https://api.webshopapp.com/nl/variants/$variantid.xml -u key:secret -X "PUT" -d variant[stockLevel]=$qty -d variant[priceIncl]=$price -d variant[ean]=$ean -d variant[priceCost]=$cost -d variant[unitPrice]=0 -d variant[oldPriceIncl]=0 -d variant[sku]="$sku" -d variant[articleCode]="$mpn"

    Waarbij elke $ waarde een variable is die gevuld wordt vanuit de CSV van onze leverancier. Als je nog andere dingen wilt updaten moet je in de documentatie kijken wat daar de benaming van is.

    Als je bovenstaande in een while loop gooit zodat die elke regel doet nalopen mag je geen problemen hebben om dit te updaten. Let wel dat je de variantid moet koppelen met het productid omdat het systeem anders niet weet welk product geupdate moet worden.

    Met vriendelijke groeten,
    Sven
  • MauriceMaurice Member Posts: 3
    Goedemiddag Sven,

    Bedankt voor je bericht en de genomen moeite om het uit te leggen. Om heel eerlijk te zijn snap ik echt niet wat hierboven staat.

    Is er een mogelijkheid dat iemand van de helpdesk contact met mij opneemt om mij hierbij te helpen?

    Ik hoor graag van je.
  • sdohmensdohmen Member Posts: 12
    Beste Maurice,

    Ik werk zelf niet voor Lightspeed.

    Daarbij denk ik niet dat het een goed idee is om dit te gaan doen als je bovenstaande al niet helemaal snapt. Juist deze code is het makkelijkste van het hele script.

    Je zult namelijk een aantal dingen moeten aanpassen aan de aangeleverde CSV zodat je altijd dezelfde volgorde hebt en daarna kun je dit doorvoeren middels bovenstaande regels. Dit hele gedeelte moet je net automatiseren als je ook nuttig gebruik wilt maken van de gehele API.

    Met vriendelijke groet,
    Sven
  • JaivyDaamJaivyDaam Lightspeed Staff Posts: 29 Lightspeed
    Goedemiddag @Maurice,

    Helaas hebben wij geen telefonische API support door complexe vraagstukken die gesteld worden.

    Om een dergelijke koppeling te bouwen dien je programmeer kennis te hebben en/of kennis van REST API en hoe dat werkt.

    Dit vraag stuk is voor mij nog te onduidelijk waar je precies tegen aanloopt en wat je verwacht. Voorraden synchroniseren vanaf de leverancier, is dit via een automatische koppeling of een CSV? Zou je mij een beter beeld kunnen scheppen zodat ik je een concreet antwoord kan geven?

    Ik hoor graag!
  • MauriceMaurice Member Posts: 3
    Goedemorgen Jaivy,

    Wij hebben van een leverancier een CSV en een XML bestand ontvangen. Een van deze bestanden moet verwerkt/gekoppeld worden aan ons assortiment. Om hun gegevens met de onze te koppelen zou dit via een API moeten gaan. 

    Ik heb van een van je collega's een API key en API secrey ontvangen. Hoogstwaarschijnlijk om een koppeling te maken tussen beide shops waardoor alles automatisch verwerkt wordt. Alleen heb ik geen idee hoe deze automatische koppeling gemaakt moet worden. 

    Ik hoop dat ik het goed heb kunnen uitleggen en dat jij mij hierbij verder kan helpen.

    Met vriendelijke groet,
  • sdohmensdohmen Member Posts: 12
    Beste Maurice,

    Dat klinkt vrijwel hetzelfde zoals wij het gebruiken. Zoals eerder ook aangegeven dien je wel een klein beetje ervaring te hebben in het maken van scripts om het werkend te krijgen. In ons geval maken wij gebruik van een linux server waar alles op binnenkomt en daarna middels de verschillende script op de goede manier weer naar buiten geleidt wordt naar onder andere Lightspeed.

    In het kort zal ik je een versimpeling geven van het script wat wij gebruiken. Ik mag/kan dit helaas niet helemaal posten echter is het vrij simpel na te maken wat een klein beetje googlen.

    Als eerste zetten we een aantal variablen vast zodat wij deze niet steeds opnieuw hoeven te typen.

    Dit is ons ons geval de beide api keys, een pad waar alles zich bevindt en een email adres om te mailen zodra het script klaar is.

    Daarna beginnen wij met het downloaden van het aantal producten in de webshop.

    COUNTL=$(curl https://api.webshopapp.com/nl/products/count.json -u $KEY:$SECRET)
    COUNTL=${COUNTL%?}
    COUNTL=$(echo $COUNTL | cut -d ':' -f 2)
    echo "Aantal producten in de webshop:" $COUNTL

    Dit mag hopelijk duidelijk genoeg zijn.

    Nu doen wij met een while functie loopen over de products en variants om de xml hiervan te downloaden met een limit van 250 producten/varianten per keer (dit om zo min mogelijk calls te hebben):
    curl -g 'https://api.webshopapp.com/nl/products.xml?limit=250&page='$PAGINA -u $KEY:$SECRET > $PAD/producten/products_$PAGINA.xml
    curl -g 'https://api.webshopapp.com/nl/variants.xml?limit=250&page='$PAGINA -u $KEY:$SECRET > $PAD/producten/variants_$PAGINA.xml

    In dezelfde loop strip ik alle benodigde elementen van de xml's en zet deze in 2 csv's (1 voor de producten en 1 voor de varianten).

    Op dit moment heb je dus alle huidige informatie in je handen.

    Zodra ik al deze informatie heb, download ik onze huidige (nieuwe) voorraad. Deze combineer ik samen met beide csv files in 1 file waar ik alle informatie in heb staan welke ik wil updaten of gebruiken om de calls zo min mogelijk te laten zijn (vooral dit laatste is handig bij 5k producten).

    Met deze nieuwe file ga ik opnieuw een while loop in. Allereerst echo ik de nodige informatie zodat ik altijd kan zien welke regel problemen zou geven als die er zijn.
    Hierna maak ik een call aan voor de variantid's die geupdate moeten worden met de benodigde informatie. Dit ID is in een eerder stadium al gekoppeld aan het juiste product ID zodat dit niet mis kan gaan. Tevens doe ik hier eerst nog een controle of er wel geupdate moet worden indien alle waardes hetzelfde zijn. Dit zorgt ervoor dat ik bijna 90% minder calls per uur heb.

    Nadat ik de variant geupdate heb ga ik kijken of de levertijd ook geupdate moet worden met hetzelfde idee als hierboven om zo min mogelijk calls te krijgen.

    Tussen alle calls in zet ik een sleep van 1 sec zodat ze bij Lightspeed ook nog steeds blij zijn met me ;)

    Als laatste ram ik dan nog een email de deur uit waarin alle informatie staan wat geupdate is etc.

    Dat hierboven is eigenlijk alles wat nodig is om het script te schrijven. Zoals eerder ook aangegeven zul je een klein beetje technische kennis nodig hebben om dit volledig werkend te krijgen.

    Er zullen ongetwijfeld betere mogelijkheden zijn zoals het gebruiken van een ERP systeem of een PIM waarmee je alles kan updaten echter voor ons voldoet dit prima en tot nog toe hebben wij geen klachten gehoord van Lightspeed over het mogelijk hammeren van hun servers. Dit zou ook eigenlijk niet kunnen aangezien ik genoeg sleeps ingebouwd heb om altijd boven dat limit van hun te zitten.

    Ik hoop dat je genoeg informatie hebt om het werkend te maken met bovenstaande. Het is zeker even puzzelen als je het nog nooit gedaan hebt maar het is ontzettend leerzaam (ik heb het ook allemaal vanaf 0 moeten opbouwen met alleen de documentatie ter beschikking)

    Met vriendelijke groet,
    Sven
  • JaivyDaamJaivyDaam Lightspeed Staff Posts: 29 Lightspeed
    Hi @Maurice,

    Zoals Sven hierboven schrijft, heb je wel ICT kennis nodig en hoe deze automatische koppelingen in elkaar gezet moet worden. Niks is vooraf gemaakt en zou je de computer moeten programmeren om dit te doen. Ik had het zelf niet beter kunnen uitleggen wat de complexiteit hiervan kan zijn.

    Mocht je deze kennis niet in huis hebben, zal je hiernaar opzoek moeten gaan. Wij kunnen je eventueel ook voorstellen aan een bedrijf die dit voor je kan realiseren.

    Mocht je nog nooit een dergelijke koppeling gebouwd hebben, wel wilt leren, kan je online genoeg webpagina's vinden die je leren hoe je een CSV bestand kan inlezen via een programmeer taal, deze informatie kan verwerken en weer de API terug kan sturen naar een ander stuk software.

    Als je ergens vast komt te zitten helpen we je graag!
  • HansHans Member Posts: 11

    Hoi Maurice,

    Heb je ondertussen een koppeling?

    Ik ben zelf ook op zoek naar zo'n oplossing.

Sign In or Register to comment.