CSR
De wortelknoop van het XML-document.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Condition | Wordt gebruikt om een voorwaarde te maken zodat een knoop geldig is |
| ErrorOn | Bevat logica voor wanneer geen product geselecteerd kan worden |
| Expressions | Wijzig of pas gegevens toe op velden |
| Prices | Inline prijsberekening |
| SelectRules | Logica als slechts één product geldig is |
| ServiceLevels | Logica als meer dan één product geldig is |
| GoodsTypeMappings | Logica om een Goederentype aan een product toe te wijzen |
| ServiceMappings | Logica om service(s) aan een product toe te wijzen |
Ondersteunt de volgende attributen (1 = waar, 0 = onwaar)
- defaultservicelevel - Als een ServiceLevel naam wordt gebruikt, wordt de standaard genegeerd.
- onsubmit - Activeer CSR bij verzenden
- showservicelevelsinpv - Sta de gebruiker toe ServiceLevels te selecteren vanuit PV
- userconfirm - Toont een bevestigingsbericht in PV
- nocache - Wordt gebruikt bij het ontwikkelen en testen van het XML-bestand
- useproductnamefromfile - Gebruik het naamattribuut van de Productknoop
- onimporttoinbox - Activeer CSR bij importeren zonder autoprint. Standaard actief.
- presubmit_event_validation - Schakel PostCode / RoutingCode Lookup in
-
carriervalidation - Schakel carrier-validatie uit wanneer CSR wordt uitgevoerd. Dit wordt meestal gebruikt samen met GetShipAdvise om de validatie van producten te versnellen. Naast 1 en 0 is het ook mogelijk om een van de volgende instellingen te gebruiken:
- carriervalidation="light" - slaat validaties van setup-items over maar voert nog steeds carrier-validaties uit.
- carriervalidation="superlight"- voert alleen carrier-validaties uit, maar geen standaardvalidaties zoals afzender- en ontvangerland voor een product, lege ontvangernaam en postcode, enz.
Standaardinstellingen voor de attributen indien niet gespecificeerd
<CSR defaultservicelevel="" nocache="0" showservicelevelsinpv="0"
onsubmit="1" userconfirm="0" carriervalidation="1"
useproductnamefromfile="0" onimporttoinbox="1"
presubmit_event_validation="0">
<ErrorOn/>
<Condition/>
<Prices/>
<SelectRules/>
<ServiceLevels/>
</CSR>
ErrorOn
Bevat logica om gevallen te behandelen waarin geen product geselecteerd kan worden
Opmerking: Geldt alleen bij gebruik van ServiceLevel knoop(pen)
Ondersteunt de volgende attributen (1 = waar, 0 = onwaar)
- autoselectservicelevelfailed - faalt als geen servicelevel gevonden kan worden op basis van het invoerproduct
- novalidproductsfound - faalt als geen geldig product gevonden kan worden in een ServiceLevel
- etawebservicefailed - faalt als de oproep naar ETA-webservice mislukt (kan alleen gebruikt worden samen met de Shipment Server-methode PreAdviseOrder)
- noproductscandeliver - faalt als geen producten kunnen leveren binnen de gevraagde levertijd (kan alleen gebruikt worden samen met de Shipment Server-methode PreAdviseOrder)
Standaardinstellingen voor de attributen indien niet gespecificeerd
<CSR>
<ErrorOn autoselectservicelevelfailed="0"
novalidproductsfound="1"
etawebservicefailed="0"
noproductscandeliver="0"/>
</CSR>
SelectRules
SelectRules kunnen geplaatst worden onder de CSR en elke ServiceLevels knoop.
Ze worden gebruikt wanneer je weet welk product geselecteerd moet worden gegeven een voorwaarde.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| SelectRule | Aangepaste validatie |
Voorbeeld
<CSR>
<SelectRules/>
<ServiceLevels>
<ServiceLevel>
<SelectRules/>
</ServiceLevel>
</ServiceLevels>
</CSR>
SelectRule
SelectRule wordt geplaatst onder de SelectRules knoop.
Deze knoop ondersteunt nesting, zodat je meerdere SelectRule binnen een andere SelectRule kunt hebben.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| SelectRule | Aangepaste validatie |
| Expressions | Pas aangepaste gegevens toe op veld |
| Product | Het product dat geselecteerd wordt als de validatie geldig is |
Deze knoop kan op verschillende manieren worden geconfigureerd:
stringcompare (Alleen als het veld de waarde van de comparestring bevat)
<SelectRule name="stringcompare" comparestring="some_value"
equal="1" casesensitive="0" field="STRING_FIELDS"
custommessage="">
<Product/>
</SelectRule>
regex (Alleen als het veld de waarde van de comparestring bevat)
<SelectRule name="regex" comparestring="a_regex_expression"
equal="1" casesensitive="0" field="STRING_FIELDS"
custommessage="">
<Product/>
</SelectRule>
country (Alleen NO, SE toegestaan)
<SelectRule name="country" allowcountries="NO,SE"
field="COUNTRY_FIELDS" custommessage="">
<Product/>
</SelectRule>
datelimits
<SelectRule name="datelimits" min="dd.MM.YYYY" max="dd.MM.YYYY"
field="DATE_FIELDS" custommessage="">
<Product/>
</SelectRule>
datetimelimits
<SelectRule name="datetimelimits"
min="dd.MM.YYYY hh:mm" max="dd.MM.YYYY hh:mm"
field="DATE_FIELDS" custommessage="">
<Product/>
</SelectRule>timelimits
<SelectRule name="timelimits" min="hh:mm" max="hh:mm"
field="DATE_FIELDS" custommessage="">
<Product/>
</SelectRule>
intlimits
<SelectRule name="intlimits" min="0" max="1"
unit="UNITS" field="INT_FIELDS" custommessage="">
<Product/>
</SelectRule>
floatlimits
<SelectRule name="floatlimits" min="0.0" max="10.5"
unit="UNITS" field="FLOAT_FIELDS" custommessage="">
<Product/>
</SelectRule>
postcodevalidation - Range-bestand - Type Numeriek
<SelectRule name="postcodevalidation">
<PostcodeValidations>
<PostcodeValidation country="" exclude="1" type="numeric"
rangefile="file.txt"/>
</PostcodeValidations>
<Product/>
</SelectRule>// file.txt
6400,6500
7400,8000postcodevalidation - Range-bestand - Type VK
<SelectRule name="postcodevalidation">
<PostcodeValidations>
<PostcodeValidation country="GB" exclude="1" type="UK"
rangefile="file.txt"/>
</PostcodeValidations>
<Product/>
</SelectRule>// file.txt
NW9 0AA,
NW9 0AB,
NW9 0AC,Alle postcodes beginnend met "NW9 0AA", "NW9 0AB", "NW9 0AC" worden uitgesloten.
postcodevalidation - Inline - Type Numeriek
<SelectRule name="postcodevalidation">
<PostcodeValidations>
<PostcodeValidation country="" exclude="1" type="numeric">
<Range min="6400" max="6500"/>
</PostcodeValidation>
</PostcodeValidations>
<Product/>
</SelectRule>postcodevalidation - Inline - Type VK
<SelectRule name="postcodevalidation">
<PostcodeValidations>
<PostcodeValidation country="GB" exclude="1" type="UK">
<Range min="BA" max=""/>
<Range min="BN1" max=""/>
</PostcodeValidation>
</PostcodeValidations>
<Product/>
</SelectRule>
Alle postcodes beginnend met "BA" en "BN1" worden uitgesloten.
ServiceLevels
De ServiceLevels knoop kan alleen geplaatst worden onder de CSR knoop.
Je kunt meer dan één ServiceLevel hebben in de ServiceLevels knoop, waardoor het mogelijk is om verschillende toewijzingsregels uit te voeren op een verzameling producten en meerdere verzendprocessen te hebben.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| ServiceLevel | Logica, als meer dan één product gebruikt kan worden |
Voorbeeld
<CSR>
<ServiceLevels>
<ServiceLevel/>
</ServiceLevels>
</CSR>
ServiceLevel
Kan alleen geplaatst worden binnen een ServiceLevels knoop. De ServiceLevel bevat een lijst van producten.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Products | Bevat de Product knopen |
| Expressions | Wijzig of pas gegevens toe op velden |
| SelectRules | Logica als slechts één product geldig is |
| ServiceLevel | Logica als meer dan één product geldig is |
| AllocationRules | Hoe producten toegewezen worden |
Ondersteunt de volgende attributen
-
name - de id van de ServiceLevel
- fallback - naam van een andere ServiceLevel om op te richten als geen product de validaties doorstaat
Voorbeeld
<ServiceLevels>
<ServiceLevel name="" fallback="">
<SelectRules/>
<Products/>
<AllocationRules/>
</ServiceLevel>
</ServiceLevels>
Products
De Products bevat een lijst van Product knopen, kan slechts één keer geplaatst worden op elke ServiceLevel knoop.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Product | Productconfiguratie |
Voorbeeld
<ServiceLevels>
<ServiceLevel>
<Products/>
</ServiceLevel>
</ServiceLevels>
Product
De Product knoop wordt gebruikt zowel op de SelectRule als de Products knoop.
1. Ondersteunde kindknopen wanneer geplaatst onder de Products knoop
| Knoop | Beschrijving |
|---|---|
| Expressions | Wijzig of pas gegevens toe op velden |
| GoodsTypeMapping | Logica om een Goederentype in te schakelen |
| Services | Logica om service(s) in te schakelen |
| ValidationRules | Aangepaste validatie |
| PostCodeValidations | Aangepaste postcodevalidatie |
| CustomFields | Bevat aangepaste waarden die teruggegeven worden voor SA 2.0 |
Ondersteunt de volgende attributen
- name - naam van het product
- conceptid - id van een concept carrier
- dbid - id van een aangepast product
- adviseprice - de naam van de Price knoop
- rank - gebruikt samen met het highestrank AllocationRule-type
- stackid - gebruikt om een zending in een specifieke stapel te plaatsen
De volgende attributen worden gebruikt samen met de SS API-methode GetShipAdvise
0 - Schakel de optie uit (standaard) | 1 - Schakel de optie in
-
requireprice - als er geen prijs berekend kan worden voor het product, wordt het product niet geretourneerd
-
requiredroppoints - retourneer het product niet als er geen afgiftepunten toegankelijk zijn.
Vereist de optie "DropPoints":1 in het GetShipAdvise-verzoek
Voorbeeld
<Products>
<Product>
<ProductGoodsType/>
<Services/>
<ValidationRules/>
<PostCodeValidations/>
<CustomFields/>
</Product>
</Products>
2. Ondersteunde kindknopen wanneer geplaatst onder een SelectRule knoop
| Knoop | Beschrijving |
|---|---|
| Product | Productinformatie |
| Expressions | Pas aangepaste gegevens toe op veld |
| GoodsTypeMapping | Logica om een Goederentype in te schakelen |
| Services | Logica om service(s) in te schakelen |
Ondersteunt de volgende attributen
- name - naam van het product
- conceptid - id van een concept carrier
- dbid - id van een aangepast product
- adviseprice - de naam van de Price knoop
Voorbeeld
<SelectRule>
<Product>
<ProductGoodsType/>
<Services/>
</Product>
</SelectRule>
ProductGoodsType
Wordt gebruikt om een goederentype toe te wijzen aan het geselecteerde product
De volgende attributen kunnen worden gedefinieerd
- goodstypename - Niet gebruikt, alleen voor betere leesbaarheid in het bestand
- goodstypeid - de id afkomstig uit het carrier-definitiebestand.
- iscustom (0) - Bij gebruik van aangepaste goederentypes, stel dit in op 1.
Voorbeeld
<SelectRule>
<Product>
<ProductGoodsType/>
</Product>
</SelectRule>
Services
De Services knoop bevat een lijst van service(s) die geactiveerd moeten worden op het geselecteerde product.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Service | De service die op een product geactiveerd moet worden |
Service
De Service knoop wordt gebruikt om een service aan een product toe te wijzen.
De volgende attributen kunnen worden gedefinieerd
- name - de naam van de service
- serviceid - Id van de service
Voorbeeld
<CSR>
<SelectRules>
<SelectRule>
<Product>
<Services>
<Service/>
</Services>
</Product>
</SelectRule>
</SelectRules>
<ServiceLevels>
<ServiceLevel>
<SelectRules>
<SelectRule>
<SelectRule>
<Product>
<Services>
<Service/>
</Services>
</Product>
</SelectRule>
</SelectRule>
</SelectRules>
<Products>
<Product>
<Services>
<Service/>
</Services>
</Product>
</Products>
<AllocationRules>
<AllocationRule/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>
PostCodeValidations
De PostCodeValidations knoop bevat een lijst van PostCodeValidation knoop(pen)
Opmerking: Zie ook de SelectRule implementatie van PostCodeValidations
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| PostCodeValidation | De postcode(s) waarop logica uitgevoerd wordt |
PostCodeValidation
De PostCodeValidations knoop bevat een lijst van service(s) die geactiveerd moeten worden op het geselecteerde product.
Opmerking: Zie ook de SelectRule implementatie van PostCodeValidation
De volgende attributen kunnen worden gedefinieerd
- name - de naam van de service
- serviceid - Id van de service
postcodevalidation - Range-bestand - Type Numeriek
<Product>
<PostcodeValidations>
<PostcodeValidation country="" exclude="1" type="numeric"
rangefile="file.txt"/>
</PostcodeValidations>
</Product>// file.txt
6400,6500
7400,8000postcodevalidation - Range-bestand - Type VK
<Product>
<PostcodeValidations>
<PostcodeValidation country="GB" exclude="1" type="UK"
rangefile="file.txt"/>
</PostcodeValidations>
</Product>// file.txt
NW9 0AA,
NW9 0AB,
NW9 0AC,postcodevalidation - Inline - Type Numeriek
<Product>
<PostcodeValidations>
<PostcodeValidation country="" exclude="1" type="numeric">
<Range min="6400" max="6500"/>
</PostcodeValidation>
</PostcodeValidations>
</Product>postcodevalidation - Inline - Type VK
<Product>
<PostcodeValidations>
<PostcodeValidation country="GB" exclude="1" type="UK">
<Range min="BA" max=""/>
<Range min="BN1" max=""/>
</PostcodeValidation>
</PostcodeValidations>
</Product>
Alle postcodes beginnend met "BA" en "BN1" worden uitgesloten.
ValidationRules
Kan alleen geplaatst worden binnen een Product knoop als de Product knoop geplaatst is in een Products knoop
<CSR>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product>
<ValidationRules/>
</Product>
</Products>
</ServiceLevel>
</ServiceLevels>
</CSR>
ValidationRule
Als de standaard carrier-validaties niet voldoende zijn, kun je meer validaties toevoegen aan het Product met deze knoop.
Er kunnen een of meer toegevoegd worden aan een ValidationRules knoop
<Products>
<Product>
<ValidationRules>
<ValidationRule/>
</ValidationRules>
</Product>
</Products>
STRING_FIELDS
fld_LMarking, fld_LContents, fld_LGoodsType, fld_AdrName1, fld_AdrName2, fld_AdrAddress1, fld_AdrAddress2, fld_AdrPostNo, fld_AdrCity, fld_AdrCountry, fld_AdrState, fld_AdrPhone, fld_AdrMobile, fld_AdrEmail, fld_AdrAttention, fld_AdrReceiverRef, fld_AdrSenderCustNo, fld_AdrSenderName1, fld_AdrSenderName2, fld_AdrSenderAddress1, fld_AdrSenderAddress2, fld_AdrSenderPostNo, fld_AdrSenderCity, fld_AdrSenderCountry, fld_AdrSenderCountryName, fld_AdrSenderState, fld_AdrSenderPhone, fld_AdrSenderMobile, fld_AdrSenderEmail, fld_AdrSenderAttention, fld_RefOrderNumber, fld_RefProject, fld_MsgDriver, fld_MsgCarrier, fld_MsgReceiver, fld_CustomField1, fld_CustomField2, fld_CustomField3, fld_CustomField4, fld_CustomField5, fld_CustomField6, fld_CustomField7, fld_CustomField8, fld_CustomField9, fld_CustomField10
COUNTRY_FIELDS
fld_AdrCountry, fld_AdrSenderCountry, fld_AdrPayerCountry
FLOAT_FIELDS
fld_LWeight, fld_LLineWeight, fld_LHeight, fld_LLength, fld_LWidth, fld_LVolume, fld_LLineVolume, fld_LLoadmeter, fld_ShipmentVolumeMM3, fld_ShipmentWeightG, fld_ShipmentLoadmeter, fld_ShipmentMaxPackageLengthPlusCircumference
INT_FIELDS
fld_LNumber, fld_LRecycleNo, fld_DGNumber, fld_ShipmentCountPackages, fld_ShipmentCountLines
DATE_FIELDS
fld_RefDeliveryDate, fld_PickupDate, fld_RefPickupStart, fld_RefPickupEnd, fld_RefDeliveryStart, fld_RefDeliveryEnd
UNITS
mm3, dm3, m3, g, kg, mm, cm, dm, m
Deze knoop kan op verschillende manieren worden geconfigureerd:
stringcompare (Alleen als het veld de waarde van de comparestring bevat)
<ValidationRule name="stringcompare" comparestring="some_value"
equal="1" casesensitive="0" field="STRING_FIELDS"
custommessage=""/>
regex (Alleen als het veld bevat de waarde van de comparestring)
<ValidationRule name="stringcompare" type="regex" comparestring="a_regex_expression"
equal="1" casesensitive="0" field="STRING_FIELDS"
custommessage=""/>
country (Alleen NO, SE toegestaan)
<ValidationRule name="country" allowcountries="NO,SE"
field="COUNTRY_FIELDS" custommessage=""/>
datelimits
<ValidationRule name="datelimits" min="dd.MM.YYYY" max="dd.MM.YYYY"
field="DATE_FIELDS" custommessage=""/>
datetimelimits
<ValidationRule name="datetimelimits"
min="dd.MM.YYYY hh:mm" max="dd.MM.YYYY hh:mm"
field="DATE_FIELDS" custommessage=""/>timelimits
<ValidationRule name="timelimits" min="hh:mm" max="hh:mm"
field="DATE_FIELDS" custommessage=""/>
intlimits
<ValidationRule name="intlimits" min="0" max="1"
unit="UNITS" field="INT_FIELDS" custommessage=""/>
floatlimits
<ValidationRule name="floatlimits" min="0.0" max="10.5"
unit="UNITS" field="FLOAT_FIELDS" custommessage=""/>
OR-operatie - Dit is een geavanceerde functie die het gebruik van OF-regels in de validaties mogelijk maakt. Het volgende voorbeeld is geldig op waarde YES en leeg
<ValidationRule name="stringcompare" comparestring="YES" suboperation="or" equal="1" casesensitive="0" field="fld_CustomField1">
<ValidationRule name="stringcompare" equal="1" casesensitive="0" field="fld_CustomField1"/>
</ValidationRule>
Commands
Wordt gebruikt om een instelling op een Product toe te passen of te wijzigen
De volgende attributen kunnen worden gedefinieerd
- function - uit te voeren logica
- name - doel sleutel
- value - waarde om toe te passen
Voorbeeld - SetOption
<Products>
<Product>
<Commands>
<Command function="SetOption" name ="Labels" value="PNG"/>
</Commands>
</Product>
</Products>* gebruikt bij de Shipment Server - SubmitShipment methode om het gevraagde etiketformaat te overschrijven
Voorbeeld - PreAdviseOrder
<Products>
<Product>
<Commands>
<Command function="PreAdviseOrder" name="Submit" value="1"/>
</Commands>
</Product>
</Products>* gebruikt bij de Shipment Server - forceert PreAdviseOrder om de zending te verzenden in plaats van op te slaan in de Inbox
CustomFields
Wordt gebruikt om één of meer statische waarden te definiëren die samen met het product worden teruggegeven.
Opmerking: Dit werkt alleen voor de ShipmentServer-methode GetShipAdvise
Enkelvoudig
<CustomFields customer_carrier_code="PNParcel"/>
Meervoudig
<CustomFields key1="value" key2="value" key3="value" key4="value"/>
AllocationRules
De AllocationRules knoop bevat één of meer AllocationRule knopen.
De toewijzing wordt gebruikt om te bepalen welk product, als er meer dan één product geldig is, gebruikt moet worden.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| AllocationRule | Type toewijzing |
Voorbeeld
<CSR>
<ServiceLevels>
<ServiceLevel>
<AllocationRules>
<AllocationRule/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>
AllocationRule
Er kunnen één of meer geplaatst worden onder de AllocationRules knoop
Configuraties
De toewijzingsregel kan worden geconfigureerd om producten op verschillende manieren toe te wijzen:
order - Als alle producten geldig zijn, wordt het eerste product gebruikt, bijvoorbeeld Product A
<CSR>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product name="Product A" conceptid="x"/>
<Product name="Product B" conceptid="y"/>
<Product name="Product C" conceptid="z"/>
</Products>
<AllocationRules>
<AllocationRule type="order"/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>
preselected -Als het geselecteerde product geldig is, wordt het gebruikt
<CSR>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product conceptid="x"/>
<Product conceptid="y"/>
</Products>
<AllocationRules>
<AllocationRule type="preselected"/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>lowestprice - Selecteer het product met de laagste prijs
<CSR>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product conceptid="x"/>
<Product conceptid="y"/>
<Product conceptid="z"/>
</Products>
<AllocationRules>
<AllocationRule type="lowestprice"/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>
highestrank - Als meerdere producten geldig zijn, wordt het product met de hoogste rang geselecteerd
<CSR>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product conceptid="x" rank="2"/>
<Product conceptid="y" rank="3"/>
<Product conceptid="z" rank="1"/>
</Products>
<AllocationRules>
<AllocationRule type="highestrank"/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>lowestprice en highestrank -
Als meerdere producten geldig zijn, of als meerdere producten dezelfde prijs hebben of de prijs 0 is.
Wordt de AllocationRule highestrank gebruikt om het product te selecteren.
<CSR>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product name="Product C" dbid="x" rank="3"/>
<Product name="Product A" dbid="y" rank="2"/>
<Product name="Product B" dbid="z" rank="1"/>
</Products>
<AllocationRules>
<AllocationRule type="lowestprice"/>
<AllocationRule type="highestrank"/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>
userselect -
Een array van geldige producten wordt geretourneerd. Als slechts één product geldig is, wordt een zending gemaakt; om af te dwingen dat altijd een array wordt geretourneerd, stel je het attribuut onsingle in op 1.
Om ook de prijs terug te krijgen, stel je het attribuut price in op 1
<CSR>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product name="Product C" dbid="x">
<Product name="Product A" dbid="y">
<Product name="Product B" dbid="z">
</Products>
<AllocationRules>
<AllocationRule type="userselect"
price="0" onsingle="0"/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>
mincountforproduct -
Op basis van de scope wordt een Product x keer geselecteerd
De scope kan zijn - Installation | location | Actor
Bij hosted oplossingen alleen scope actor gebruiken.
In het onderstaande voorbeeld
Wordt Product C elke dag eerst 6 keer geselecteerd op basis van de gedefinieerde scope.
Daarna wordt Product B gebruikt totdat er 3 zendingen in de database bestaan.
Wanneer zowel Product C als B hun mincountforproduct voor de dag hebben bereikt, mogen alle producten geselecteerd worden.
<CSR>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product name="Product A" dbid="x"/>
<Product name="Product C" dbid="y"/>
<Product name="Product B" dbid="z"/>
</Products>
<AllocationRules>
<AllocationRule type="mincountforproduct" scope="actor"
name="Product C" dbid="y" mincount="6"/>
<AllocationRule type="mincountforproduct" scope="actor"
name="Product B" dbid="z" mincount="3"/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>
distribution -
Gebruik een mix van de vermelde producten voor de opgegeven scope.
De scope kan zijn - Installation | location | Actor
Bij hosted oplossingen alleen scope actor gebruiken.
Het aandeel hoeft niet op te tellen tot 100. De manier waarop de distribution werkt is dat het het product dat niet geldig is verwijdert, vervolgens het aandeel berekent dat elk overgebleven product zou moeten hebben en het product selecteert dat het grootste verschil heeft tussen het beoogde aandeel en het werkelijke aandeel.
In het onderstaande voorbeeld, aangezien beide producten dezelfde validatie delen, worden beide producten gelijkmatig gebruikt.
<CSR>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product name="Product A" dbid="x"/>
<Product name="Product B" dbid="y"/>
</Products>
<AllocationRules>
<AllocationRule type="distribution" scope="actor">
<Product name="Product B" dbid="x" share="50"/>
<Product name="Product A" dbid="y" share="50"/>
</AllocationRule>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>
OPMERKING: distribution werkt momenteel niet wanneer geconfigureerd via de Shipping Rules gebruikersinterface.
Condition
Om een AllocationRule, Expression, ValidationRule, of de CSR knoop te controleren, kan een Condition knoop worden toegepast.
Als je meer dan één Condition knoop toevoegt, moeten ze allemaal geldig zijn om de bovenliggende knoop geldig te maken.
Voorbeeld - wijs alleen de waarde 1000 toe als de geïmporteerde waarde kleiner of gelijk is aan 999
<Expressions>
<Expression targetfield="fld_LWeight">
<Condition name="floatlimits" field="fld_LWeight"
min="0" max="999" unit="gram"/>
<Item expression="1000"/>
</Expression>
</Expressions>De Condition knoop ondersteunt verschillende validaties
stringcompare
<Condition name="stringcompare" field="fld_CustomField1"
comparestring="a_value" equal="1" casesensitive="0"/>receivercontries
<Condition name="receivercontries" countries="SE,NO" exclude="1"/>stringnotempty
<Condition name="stringnotempty" field="fld_RefOrderNumber"/>floatlimits
<Condition name="floatlimits" min="0.0" max="10.5"
unit="UNITS" field="FLOAT_FIELDS" custommessage=""/>
Ondersteunde knopen
<CSR>
<ErrorOn/>
<Condition/>
<SelectRules>
<SelectRule>
<Expressions>
<Expression>
<Condition/>
<Item/>
</Expression>
</Expressions>
<Product/>
</SelectRule>
</SelectRules>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product>
<ValidationRules>
<ValidationRule>
<Condition/>
</ValidationRule>
</ValidationRules>
</Product>
</Products>
<AllocationRules>
<AllocationRule>
<Condition/>
</AllocationRule>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>
Expressions
Kan geplaatst worden onder CSR, ServiceLevel, SelectRule & Product knopen.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Expressions | Type toewijzing |
Ondersteunt de volgende attributen (1 = waar, 0 = onwaar)
- prevalidation - voer uit vóór validatie
- assignresult - wijs resultaat toe aan de zending
Standaardinstellingen voor de attributen indien niet gespecificeerd
<CSR>
<Expressions prevalidation="0" assignresult="0"/>
<SelectRules>
<Expressions/>
<SelectRule>
<Product>
<Expressions/>
</Product>
</SelectRule>
</SelectRules>
<ServiceLevels>
<ServiceLevel>
<Expressions/>
<Products>
<Product>
<Expressions/>
</Product>
</Products>
</ServiceLevel>
</ServiceLevels>
</CSR>
Expression
Met deze knoop kun je een waarde aan een veld toewijzen.
Kan alleen geplaatst worden binnen de Expressions knoop.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Condition | Validatie |
| Item | Waarde om toe te wijzen |
Ondersteunt de volgende attributen (1 = waar, 0 = onwaar)
- targetfield - het veld waaraan de waarde wordt toegewezen
VELD
fld_LMarking, fld_LContents, fld_LGoodsType, fld_AdrName1, fld_AdrName2, fld_AdrAddress1, fld_AdrAddress2, fld_AdrPostNo, fld_AdrCity, fld_AdrCountry, fld_AdrState, fld_AdrPhone, fld_AdrMobile, fld_AdrEmail, fld_AdrAttention, fld_AdrReceiverRef, fld_AdrSenderCustNo, fld_AdrSenderName1, fld_AdrSenderName2, fld_AdrSenderAddress1, fld_AdrSenderAddress2, fld_AdrSenderPostNo, fld_AdrSenderCity, fld_AdrSenderCountry, fld_AdrSenderCountryName, fld_AdrSenderState, fld_AdrSenderPhone, fld_AdrSenderMobile, fld_AdrSenderEmail, fld_AdrSenderAttention, fld_RefOrderNumber, fld_RefProject, fld_MsgDriver, fld_MsgCarrier, fld_MsgReceiver, fld_CustomField1, fld_CustomField2, fld_CustomField3, fld_CustomField4, fld_CustomField5, fld_CustomField6, fld_CustomField7, fld_CustomField8, fld_CustomField9, fld_CustomField10
In het onderstaande voorbeeld krijgt het targetfield de waarde custom_value
<Expressions>
<Expression targetfield="VELD">
<Item expression="custom_value"/>
</Expression>
</Expressions>De Expression knoop kan één of meer Item knopen bevatten
<Expressions>
<Expression>
<Item expression="custom"/>
<Item expression="_"/>
<Item expression="value"/>
</Expression>
</Expressions>In dit geval krijgt het targetfield de waarde custom_value
De Item-expressie kan ook een waarde van een ander veld gebruiken met behulp van de @@
<Expressions>
<Expression targetfield="VELD">
<Item expression="@@VELD@@" />
</Expression>
</Expressions>
GoodsTypeMappings
Met deze knoop kun je Goederentype toewijzen aan een product. Gebruikmakend van een geïmporteerde waarde of het invoerproduct.
Kan alleen geplaatst worden onder de CSR knoop
Attributen - (1 = waar, 0 = onwaar)
- mappingfield
- mappingoverride - (0) - Gebruik Goederentype van GoodsTypesMappings en niet van de Product knoop
-
key - waarde van het attribuut mappingfield op de GoodsTypesMappings
- productconceptid - Aangezien goederentype-ID's alleen uniek zijn binnen een carrier, moet je de concept-ID van het product specificeren. Bij gebruik voor aangepaste producten en aangepaste goederentypes, stel dit in op 0.
- goodstypename - Niet gebruikt, alleen voor betere leesbaarheid in het bestand
- goodstypeid - Is de id afkomstig uit het carrier-definitiebestand.
- iscustom (0) - Bij gebruik van aangepaste goederentypes, stel dit in op 1.
Configuraties
Kan op twee manieren worden geconfigureerd
-
Groepen op basis van invoerproduct
CSR controleert of het geselecteerde product een goederentype heeft binnen dezelfde groep als het product waarvan het is veranderd. Vervolgens gebruikt het dit goederentype op de zending voordat het wordt verzonden. -
Groepen op basis van waarde uit een veld
CSR controleert of de waarde uit het veld dat is geconfigureerd op het mappingattribuut bestaat in een groep en gebruikt het gedefinieerde goederentype op de zending voordat het wordt verzonden
Groepen op basis van invoerproduct
<CSR>
<GoodsTypeMappings>
<GoodsTypeMapping>
<ProductGoodsType goodstypeid="2" dbid="2139" iscustom="1"
goodstypename="2"/>
<ProductGoodsType goodstypeid="3" productconceptid="112"
goodstypename="PL4"/>
</GoodsTypeMapping>
<GoodsTypeMapping>
<ProductGoodsType goodstypeid="1" dbid="2139" iscustom="1"
goodstypename="1"/>
<ProductGoodsType goodstypeid="13" productconceptid="112"
goodstypename="K25"/>
</GoodsTypeMapping>
</GoodsTypeMappings>
<ServiceLevels>
<ServiceLevel name="default">
<Products>
<Product name="Product A" dbid="2139"/>
<Product name="Product B" conceptid="112"/>
</Products>
</ServiceLevel>
</ServiceLevels>
</CSR>Groepen op basis van waarde uit een veld
<CSR>
<GoodsTypeMappings mappingfield="fld_LMarking">
<GoodsTypeMapping key="parcel">
<ProductGoodsType goodstypeid="1" productconceptid="113"
goodstypename="P"/>
<ProductGoodsType goodstypeid="13" productconceptid="112"
goodstypename="K25"/>
</GoodsTypeMapping>
<GoodsTypeMapping key="pallet">
<ProductGoodsType goodstypeid="0" productconceptid="113"
goodstypename="A"/>
<ProductGoodsType goodstypeid="3" productconceptid="112"
goodstypename="PL4"/>
</GoodsTypeMapping>
</GoodsTypeMappings>
<ServiceLevels>
<ServiceLevel name="default">
<Products>
<Product name="PRODUCT A" conceptid="113"/>
<Product name="PRODUCT B" conceptid="112"/>
</Products>
</ServiceLevel>
</ServiceLevels>
</CSR>
ServiceMappings
Met deze knoop kun je Service(s) toewijzen aan een product. Gebruikmakend van een geïmporteerde waarde of het invoerproduct.
Kan alleen geplaatst worden onder de CSR knoop.
Attributen
- mappingfield - dit veld moet een zendingveld zijn.
- key - waarde van het attribuut mappingfield op de ServiceMappings
- name - naam van de service
- serviceid - Id van de service
Configuraties
Kan op twee manieren worden geconfigureerd
-
Service door geselecteerd product
In deze modus configureer je groepen, en wanneer een service binnen een groep op het oorspronkelijke product staat – zal CSR controleren of het geselecteerde product een service binnen dezelfde groep heeft en die service op de zending zetten voordat het wordt verzonden.
-
Service op basis van waarde uit een veld
In deze modus configureer je ook groepen, maar je gebruikt sleutels om de groep te vinden in plaats van de oorspronkelijk geselecteerde services.
Service door geselecteerd product
<CSR>
<ServiceMappings>
<ServiceMapping>
<Service serviceid="y"/>
<Service serviceid="x"/>
</ServiceMapping>
<ServiceMapping>
<Service serviceid="x"/>
<Service serviceid="y"/>
</ServiceMapping>
</ServiceMappings>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product name="Product A" dbid="x"/>
<Product name="Product A" dbid="y"/>
</Products>
</ServiceLevel>
</ServiceLevels>
</CSR>Service op basis van waarde uit een veld
<CSR>
<ServiceMappings mappingfield="fld_CustomField1">
<ServiceMapping key="notification">
<Service serviceid="y"/>
<Service serviceid="x"/>
</ServiceMapping>
</ServiceMappings>
<ServiceLevels>
<ServiceLevel>
<Products>
<Product name="Product A" dbid="x"/>
<Product name="Product A" dbid="y"/>
</Products>
</ServiceLevel>
</ServiceLevels>
</CSR>
Prices
Kan slechts één keer geplaatst worden onder de CSR knoop.
Deze knoop stelt je in staat om een eenvoudige prijsberekening in je CSR te hebben.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Price | Prijsberekeningsknoop |
Price
Bevat één prijsberekening.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Exceptions | Vaste prijs op basis van een voorwaarde |
| Ranges | Prijs gebaseerd op interval |
| Fees | Een waarde die wordt toegevoegd aan de Exception of Range |
Ondersteunt de volgende attributen
name - De id van de knoop, gebruikt door het attribuut adviseprice op de Product knoop
currency - Bijvoorbeeld EUR, SEK, NOK
Voorbeeld
<CSR>
<Prices>
<Price name="" currency="">
<Exceptions>
<Exception price="">
<ValidationRules/>
</Exception>
</Exceptions>
<Ranges field="fld_AdrPostNo">
<Range from="" to="" price="">
<Ranges field="fld_ShipmentWeightG" unit="gram">
<Range from="" to="" price=""/>
</Ranges>
</Range>
<Range from="" to="" price=""/>
</Ranges>
<Fees>
<Fee price="">
<ValidationRules/>
</Fee>
</Fees>
</Price>
</Prices>
</CSR>
Exceptions
Kan slechts één keer geplaatst worden onder de Price knoop
Bevat één of meer Exception knopen
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Exception | Retourneer een vaste prijs |
Exception
De eerste Exception knoop waarvan alle validaties geldig zijn, retourneert de prijs
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| ValidationRules | Zie de ValidationRule knoop |
Ondersteunt de volgende attributen
- price - De waarde die op het product wordt teruggegeven
Ranges
Wordt geëvalueerd na de Exceptions knoop; als er een overeenkomende Exception knoop is, wordt de Ranges knoop niet uitgevoerd.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Ranges | Ondersteunt een andere Ranges knoop |
| Range | Bevat de prijs voor het bereik |
Ondersteunt de volgende attributen
- field - het veld waarop de bereiklogica wordt uitgevoerd fld_ShipmentWeightG | fld_AdrPostNo
- unit - gebruikt met het veld fld_ShipmentWeightG
Range
Wordt geëvalueerd na de Exceptions knoop; als er een overeenkomende Exception knoop is, wordt de Ranges knoop niet uitgevoerd.
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Range | Bevat de prijs voor het bereik |
Ondersteunt de volgende attributen
- from - startwaarde
- to - eindwaarde
- price - de prijs die geretourneerd moet worden
Fees
Dit werkt vergelijkbaar met Exceptions, het is een lijst van Fees, en elk moet validatieregels hebben die geldig moeten zijn om de fee toe te passen. De prijzen van alle Fee knopen die geldig zijn, worden bij elkaar opgeteld. En de som hiervan wordt toegevoegd aan de som gevonden in Exceptions of Ranges
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| Fee | Een fee die aan de prijs wordt toegevoegd |
Fee
Als alle ValidationRules geldig zijn, wordt de fee toegevoegd aan de prijs van de Exceptions of Ranges knoop
Ondersteunde kindknopen
| Knoop | Beschrijving |
|---|---|
| ValidationRules | Zie de ValidationRules knoop |
Ondersteunt de volgende attributen
- price - de waarde die aan de prijs wordt toegevoegd van de range- of exception-knoop
-
Expressions - Voorbeeld 1
Voeg een standaard ophaalstart- en einddatum/tijd toe
<Expressions prevalidation="1" assignresult="1">
<Expression targetfield="fld_RefPickupStart">
<Item special="datenow" addhours="0" format="YYYY-MM-DD 05:00:00" />
</Expression>
<Expression targetfield="fld_RefPickupEnd">
<Item special="datenow" addhours="0" format="YYYYY-MM-DD 21:00:00" />
</Expression>
</Expressions>-
AllocationRules UserSelect - Voorbeeld 1
Voer verzendregels alleen uit bij gebruik van Product 1782 of 1783
<CSR defaultservicelevel="default" nocache="1" showservicelevelsinpv="1">
<Expressions prevalidation="1" assignresult="0">
<Expression targetfield="fld_CustomField1">
<Item expression="C-"/>
<Item expression="@@fld_ProductConceptID@@"/>
</Expression>
</Expressions>
<Condition name="stringcompare" type="regex" comparestring="^(C-1782|C-1783)" equal="1"
casesensitive="0" field="fld_CustomField1" />
<ServiceLevels>
<ServiceLevel name="default">
<Products>
<Product name="Generic Sweden - Generic 1" conceptid="1782">
<ProductGoodsType name="EUR 1 - 08 m × 12 m" goodstypeid="0"/>
<Services>
<Service name="0 - Service1" serviceid="227030" />
<Service name="2 - 013 (CIP)" serviceid="227013" />
</Services>
</Product>
<Product name="Generic Sweden - Generic 2" conceptid="1783" />
</Products>
<AllocationRules>
<AllocationRule type="userselect" price="1" onsingle="1"/>
</AllocationRules>
</ServiceLevel>
</ServiceLevels>
</CSR>