Dit artikel is gericht op ontwikkelaars die afleverpunten willen ophalen met de methode GetShipAdvise.
Opmerking: Dit is slechts bedoeld om een basisvoorbeeld te tonen.
Je moet je eigen bedrijfslogica en foutafhandeling toepassen.
Inhoud in dit artikel:
- De GetDropPoints-methode
- Gegevens ophalen voor één afleverpunt wanneer de gebruiker een product selecteert
- Alle afleverpuntgegevens in één keer ophalen
- Je eigen winkels gebruiken als afleverpunten
-
De GetDropPoints-methode
Deze methode vereist dat het data-object een product-id bevat, hoeveel afleverpunten opgehaald moeten worden, services en het ontvangeradres ("Kind": 1)
Opmerking: ResultCount is minimaal 1 - maximaal 10
Voorbeeld van het Data-object
{
"ProdCSID": 5748,
"ResultCount": 10,
"Addresses": [
{
"Kind": 1,
"Name1": "John Doe",
"Street1": "Test address 1",
"PostCode": "8210",
"City": "Aarhus V",
"CountryCode": "DK"
}
],
"Services": [
676008
]
}
Gegevens ophalen voor één afleverpunt wanneer de gebruiker een product selecteert
Deze aanpak wordt gebruikt als je alleen afleverpuntinformatie wilt opvragen nadat de gebruiker een van de producten heeft geselecteerd die zijn teruggegeven door de GetShipAdvise-methode.
Voorbeeld van een antwoord van de GetDropPoints-methode wanneer deze wordt aangeroepen met een functie vergelijkbaar met de onderstaande.
De methode neemt het door de klant geselecteerde vrachtproduct en de verzendgegevens.
Daarna roept het de GetDropPoint-methode aan en voegt het antwoord toe aan het productobject.
const getDropPointData = async (product, shipmentData) => {
let data = {
ProdCSID: product.ProdCSID,
ResultCount: 10,
Addresses: [shipmentData.Addresses.find(x => x.Kind == 1)]
}
if (product.Services) {
request["Services"] = product.Services.map((x) => x.serviceid)
}
let { DropPoints } = await GetDropPoints(data)
product.DropPoints = DropPoints
return product
}
Alle afleverpuntgegevens in één keer ophalen
De methode GetShipAdvise roept de GetDropPoints-methode niet zelf aan. De twee methoden moeten worden gecombineerd zodat het antwoord van GetShipAdvise afleverpunten bevat.
Voorbeeld van het standaardantwoord van de GetShipAdvise-methode.
Zoals we kunnen zien, zijn er geen afleverpuntgegevens op het product, maar we kunnen zien of een product dit ondersteunt.
Om een antwoord te krijgen zoals in het onderstaande voorbeeld.
Je moet de GetDropPoint-methode aanroepen voordat je het GetShipAdvise-antwoord retourneert voor de producten die afleverpunten ondersteunen en waarvoor afleverpunten moeten worden teruggegeven.
Opmerking: Sommige producten kunnen zowel als Thuisbezorging als Afleverpunt worden gebruikt.
In dit voorbeeld hebben de producten in het CSR-configuratiebestand een Aangepast veld "isDropPoint" dat aangeeft of de GetDropPoint-methode op hen moet worden aangeroepen of niet.
const getProductsWithDropPointData = async (shipmentData) => {
let products = await GetShipAdvise(shipmentData)
let productsWithDropPointSupport = products.Products
.filter(x => x.SupportsDropPoint)
.filter(x => x.CustomFields && x.CustomFields.isDropPoint)
productsWithDropPointSupport.map(async (product) => {
let data = {
ProdCSID: product.ProdCSID,
ResultCount: 10,
Addresses: [shipmentData.Addresses.find(x => x.Kind == 1)]
}
if (product.Services) {
request["Services"] = product.Services.map((x) => x.serviceid)
}
let { DropPoints } = await GetDropPoints(data)
product.DropPoints = DropPoints
})
return products
}
Je eigen winkels gebruiken als afleverpunten
Om ervoor te zorgen dat de GetDropPoint-methode jouw winkels als afleverpunten kan teruggeven.
Moet je de volgende template invullen. Als er meer dan één afleverpunt nodig is, voeg dan een extra <DropPointData>-element toe.
Als je de lengte- en breedtegraad niet hebt, gebruik dan 0.01 als waarde voor beide.
<MapRefX>0.01</MapRefX>
<MapRefY>0.01</MapRefY>MapRefX voor de lengtegraad en MapRefY voor de breedtegraad.
Voorbeeld met alle velden
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfDropPointData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DropPointData>
<OriginalId>Test01</OriginalId>
<RoutingCode></RoutingCode>
<Depot/>
<Name1>nShift A/S</Name1>
<Name2/>
<Address1>Bredskifte Allé 11</Address1>
<Address2/>
<PostalCode>8210</PostalCode>
<City>Aarhus V</City>
<Region/>
<County/>
<District/>
<Province/>
<State/>
<CountryCode>DK</CountryCode>
<Contact>Test Contact</Contact>
<Phone>11 22 33 44</Phone>
<Email></Email>
<Fax/>
<MapRefX>10.135106</MapRefX>
<MapRefY>56.173088</MapRefY>
<OpeningHoursList>
<OpeningHours>
<Day>Monday</Day>
<Open>09:00</Open>
<Close>21:00</Close>
</OpeningHours>
<OpeningHours>
<Day>Tuesday</Day>
<Open>05:00</Open>
<Close>15:30</Close>
</OpeningHours>
</OpeningHoursList>
</DropPointData>
</ArrayOfDropPointData>Klik hier om de template te downloaden.
Een iets compactere versie.
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfDropPointData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DropPointData>
<OriginalId>01</OriginalId>
<Name1>nShift A/S</Name1>
<Address1>Bredskifte Allé 11</Address1>
<PostalCode>8210</PostalCode>
<City>Aarhus V</City>
<CountryCode>DK</CountryCode>
<Contact>Test Contact</Contact>
<Phone>11 22 33 44</Phone>
<MapRefX>10.132236331701279</MapRefX>
<MapRefY>56.179632447054956</MapRefY>
</DropPointData>
</ArrayOfDropPointData>
Klik hier om de template te downloaden.
Opmerking: Meerdere bestanden worden ondersteund, en elk bestand mag niet meer dan 1000 afleverpunten bevatten.
Het bestand moet naar de lokale klantenservice worden gestuurd, zij maken een aangepast product aan en voegen de lijst eraan toe.
Als je een speciale naam ervoor nodig hebt, bijvoorbeeld "Collect @ Store", moet je dit specificeren in de e-mail.
Shipping Rules
Het configuratiebestand met de producten die worden gebruikt voor de GetShipAdvise-methode in dit artikel.
<?xml version="1.0" encoding="utf-8"?>
<CSR carriervalidation="0" defaultservicelevel="Service_Level_Configured_For_SA">
<Prices>
<Price name="fixed59" currency="DKK">
<Exceptions>
<Exception price="5900">
<ValidationRules>
</ValidationRules>
</Exception>
</Exceptions>
<Fees>
<Fee price="1900">
<ValidationRules>
</ValidationRules>
</Fee>
</Fees>
</Price>
<Price name="fixed39" currency="DKK">
<Exceptions>
<Exception price="3900">
<ValidationRules>
</ValidationRules>
</Exception>
</Exceptions>
</Price>
</Prices>
<ServiceLevels>
<ServiceLevel name="Service_Level_Configured_For_SA">
<Products>
<Product adviseprice="fixed39" name="GLS DK - Pakkeshop met Afleverpunten" conceptid="1551">
<ProductGoodsType goodstypeid="0"/>
<CustomFields type="Pickup Point" servicecode="P1"/>
<ValidationRules>
<ValidationRule name="country" allowcountries="DK" field="fld_AdrCountry"/>
</ValidationRules>
</Product>
<Product adviseprice="fixed59" name="GLS DK - Normaal zakelijk pakket" conceptid="113">
<ProductGoodsType goodstypeid="0"/>
<CustomFields type="Home Delivery" servicecode="P2"/>
<ValidationRules>
<ValidationRule name="country" allowcountries="DK" field="fld_AdrCountry"/>
</ValidationRules>
<Services>
<Service serviceid="11020" name="Private Delivery Service"/>
</Services>
</Product>
<Product adviseprice="fixed59" name="GLS DK - Export" conceptid="189">
<ProductGoodsType goodstypeid="0"/>
<CustomFields type="Home Delivery" servicecode="P3"/>
<ValidationRules>
<ValidationRule name="country" allowcountries="SE" field="fld_AdrCountry"/>
</ValidationRules>
</Product>
</Products>
</ServiceLevel>
</ServiceLevels>
</CSR>