Functies zijn hulpmiddelen die u helpen toegang te krijgen tot dynamische gegevens, zoals controleren of morgen een werkdag is of de volgende feestdag voor de afzender vinden. Ze worden gebruikt bij het schrijven van geavanceerde voorwaarden. Deze gids legt uit hoe functies werken en hoe u ze kunt gebruiken.
Inhoud van dit artikel:
- Wat is een functie?
- Functie-invoer en gegevens
- Lijst met beschikbare functies
- Functies inspecteren
- Speciale functies
- Afrondingsfuncties
-
Join-functies
Wat is een functie?
Een functie is een herbruikbaar hulpmiddel dat gegevens teruggeeft op basis van bepaalde invoer. Bijvoorbeeld, een functie kan u vertellen:
- De volgende feestdag
- Of een specifieke datum een werkdag is
- Een getal, datum of tekststring op basis van uw invoer
Als u geen invoer geeft (een argument genoemd), gebruikt de functie een standaardwaarde, meestal gebaseerd op de datum van vandaag en de relevante tijdzone.
Functie-invoer en gegevens
Sommige functies accepteren één of meer argumenten (invoer). Deze invoer moet aan twee regels voldoen:
- Correct type: Een functie die een datum verwacht, accepteert geen getal of tekst.
- Juiste volgorde: Als een functie eerst een string en daarna een getal verwacht, moet u die volgorde aanhouden.
U kunt soms latere argumenten weglaten, maar u moet altijd de eerdere argumenten opnemen.
Geldig: FunctionB(String, Integer)
Ongeldig: FunctionB(String, Date)
Functies geven verschillende soorten gegevens terug:
- Tekst (bijv. een feestdagnaam)
- Getallen (bijv. aantal dagen tot een datum)
- Datums (bijv. de volgende werkdag)
U kunt deze gegevens gebruiken in verdere voorwaarden, zoals dagen toevoegen aan een datum of waarden vergelijken.
Lijst met beschikbare functies
| Naam | Resultaatstype | Argumenttypen | Verplichte argumenten | Alleen beschikbaar voor expressies ? |
| todayIsWeekendSender/todayIsWeekendReceiver | Boolean | - | - | - |
| todayIsHolidaySender/todayIsHolidayReceiver | Boolean | - | - | - |
| dateNowSender/dateNowReceiver | Date | Date | - | - |
| nextHolidayDateSender/nextHolidayDateReceiver | Date | Date | - | - |
| nextWorkDateSender/nextWorkDateReceiver | Date | Date | - | - |
| nearestWorkDateSender/nearestWorkDateReceiver | Date | Date | - | - |
| carrierEtaFromDate | Date | - | - | Ja |
| carrierEtaToDate of carrierEtaDate | Date | - | - | Ja |
| dateTimeNowSender/dateTimeNowReceiver | DateTime | - | - | - |
| carrierEtaFromDateTime | DateTime | - | - | Ja |
| carrierEtaToDateTime of carrierEtaDateTime | DateTime | - | - | Ja |
| timeNowSender/timeNowReceiver | Time | - | - | - |
| todayAsNumberInYearSender/todayAsNumberInYearReceiver | Integer | - | - | - |
| weekdayNumberSender/weekdayNumberReceiver | Integer | - | - | - |
| weekday | Integer | DateTime | - | - |
| maximumPackageWeightKg | Double | - | - | - |
| minimumPackageWeightKg | Double | - | - | - |
| totalPackageWeightKg | Double | - | - | - |
| maximumPackageVolumeCm3 | Double | - | - | - |
| minimumPackageVolumeCm3 | Double | - | - | - |
| totalPackageVolumeCm3 | Double | - | - | - |
| maximumPackageLengthCm | Double | - | - | - |
| minimumPackageLengthCm | Double | - | - | - |
| totalPackageLengthCm | Double | |||
| maximumPackageWidthCm | Double | - | - | - |
| minimumPackageWidthCm | Double | - | - | - |
| totalPackageWidthCm | Double | |||
| maximumPackageHeightCm | Double | - | - | - |
| minimumPackageHeightCm | Double | - | - | - |
| totalPackageHeightCm | Double | |||
| maximumPackageCircumferenceCm | Double | |||
| minimumPackageCircumferenceCm | Double | |||
| maximumPackageLengthCircumferenceCm | Double | |||
| minimumPackageLengthCircumferenceCm | Double | |||
| monthNowSender/monthNowReceiver | String | - | - | - |
| dayNowSender/dayNowReceiver | String | - | - | - |
| nextWorkDaySender/nextWorkDayReceiver | String | Date | - | - |
| nearestWorkDaySender/nearestWorkDayReceiver | String | Date | - | - |
| carrierEtaFromDay | String | - | - | Ja |
| carrierEtaToDay of carrierEtaDay | String | - | - | Ja |
| carrierEtaInterval | String | - | - | Ja |
| toUpperCase | String | String | - | - |
| allPackageContents | Array | - | - | - |
Functies inspecteren
Voorwaarden worden in twee fasen geëvalueerd:
- Fase 1: Basiscontroles (geen inspecterende functies)
- Fase 2: Geavanceerde controles met inspecterende functies
Inspecterende functies bekijken meer gedetailleerde of externe gegevens (zoals feestdagen) en zijn gemarkeerd met het label "INSPECTING". Als er geen inspecterende functies worden gebruikt, is fase 2 leeg.
Inspecterende functies hebben geen normaal retourtype. In plaats daarvan beïnvloeden ze de Checkout-bezorgopties op een meer algemene manier, bijvoorbeeld door de volgorde van de geretourneerde opties te wijzigen.
| Naam | Resultaat |
| enabled | Boolean |
| costPrice | Double |
| salesPrice | Double |
Speciale functies
De volgende "eenheidsfuncties" zijn ook beschikbaar om te gebruiken in combinatie met bepaalde bewerkingen (geen van hen ondersteunt argumenten):
| Naam | Resultaatstype |
| hour | TimePeriod |
| minute | TimePeriod |
| year | Period |
| month | Period |
| day | Period |
| workdaySender/workdayReceiver | WorkdayPeriod |
Werkdagen kunnen variëren afhankelijk van de locatie. Wat een werkdag is voor de afzender kan een feestdag zijn voor de ontvanger. Daarom moet de werkdag-eenheid worden gebruikt met ofwel Sender of Receiver.
Bij het toevoegen van werkdagen aan een datum worden weekenden en nationale feestdagen in aanmerking genomen op basis van de relevante tijdzone.
Opmerking: U kunt slechts tot 60 werkdagen optellen of aftrekken. Alles daarboven (bijv. 61) wordt als 60 behandeld. Deze limiet helpt de systeemstabiliteit te behouden en kan alleen voorzichtig worden verhoogd.
We bieden ook constante functies aan, die veelgebruikte waarden in voorwaarden vertegenwoordigen. Ze vereenvoudigen expressies, zoals controleren of een datum op een weekdag valt, bijv. ”weekday(dateNowSender) tussen monday;friday”.
| Naam | Resultaatstype |
| monday | Integer |
| tuesday | Integer |
| wednesday | Integer |
| thursday | Integer |
| friday | Integer |
| saturday | Integer |
| sunday | Integer |
Afrondingsfuncties
De afrondingsfuncties kunnen worden gebruikt om een waarde af te ronden (bijv. de prijs). De waarde kan numeriek zijn of een functie zoals costprice/salesprice:
round(123.45) → afronden naar boven naar een geheel getal
round(123.45; 10.0) → afronden naar boven op 10
round(123.45; 10.0; “down”) → afronden naar beneden op 10
round(123.45; 10.0; “down99”) → afronden naar beneden op 10 en het kleinste bedrag aftrekken op basis van fractiecijfers om 119,99 te krijgen
Join-functies
De join() functie stelt u in staat om meerdere stringwaarden samen te voegen tot één enkele string. Dit kan vooral nuttig zijn wanneer u dynamisch zoek-sleutels wilt opbouwen op basis van meerdere gegevenspunten en deze sleutels wilt gebruiken om waarden op te halen uit een Voorwaardelijst.
Typische gebruikssituaties kunnen zijn:
- Samenstellen van samengestelde sleutels voor zoekopdrachten (bijv. Zone + Valuta)
- Vereenvoudigen van complexe regel-logica
- Dynamisch selecteren van waarden zoals drempels voor gratis verzending of prijsklassen op basis van zone, gewicht, volume of valuta
Door waarden tijdens runtime te combineren, kan join() lange voorwaardelijke expressies vervangen door kortere regel-logica.
Functiesyntaxis
join("/"; ["hello";"world"]) => "hello/world"
join("+"; ["hello"; 1; 2; 3]) => "hello+1+2+3"
Voorbeeld:
cart_price >= toNumber(join(""; [tocountry from "Zones"; currency]) from "FreeShipThresholds")
In bovenstaande expressie wordt het land vertaald naar een zone met behulp van de lookup tocountry uit een voorwaardelijst genaamd "Zones", waarvan wordt verwacht dat deze een string retourneert zoals "Zone1". Met join wordt de zone vervolgens gecombineerd met de valuta, wat bijvoorbeeld "Zone1EUR" oplevert. Die waarde wordt daarna gebruikt om de drempel op te zoeken in een voorwaardelijst genaamd "FreeShipThresholds".
De uitvoer is één enkele samengevoegde string.