Middels BEL (Beeyond Expression Language) is een mogelijkheid gecreëerd om flexibel berekeningen, samenvoeging en of aanpassingen door te voeren in de Beeyond omgeving. Op deze pagina worden voorbeelden gegeven van de diverse mogelijkheden van BEL.
Info | |
---|---|
icon | false | title | Inhoudsopgave
|
Algemene voorbeelden: Berekeningen
...
Marge % berekening: (Verkoopprijs incl. BTW minus BTW) - Inkoopprijs excl. / Verkoopprijs incl. BTW minus BTW * 100
Code Block | ||
---|---|---|
| ||
( [IF] (|ARTICLE_VAT|==1) [THEN] ((((|ARTICLE_SALESPRICE_I_ACT|/1.06)-|ARTICLE_PURCHASE_E|)/(|ARTICLE_SALESPRICE_I_ACT|/1.06))*100) [ELSE] ( ( [IF] (|ARTICLE_VAT|==2) [THEN] ((((|ARTICLE_SALESPRICE_I_ACT|/1.21)-|ARTICLE_PURCHASE_E|)/(|ARTICLE_SALESPRICE_I_ACT|/1.21))*100) [ELSE] ((((|ARTICLE_SALESPRICE_I_ACT|/1)-|ARTICLE_PURCHASE_E|)/(|ARTICLE_SALESPRICE_I_ACT|/1))*100) ) ) ) |
Marge berekening: (Verkoopprijs incl. BTW minus BTW) - Inkoopprijs excl.
Code Block | ||
---|---|---|
| ||
( [IF] (|ARTICLE_VAT|==1) [THEN] ((|ARTICLE_SALESPRICE_I_ACT|/1.06)-|ARTICLE_PURCHASE_E|) [ELSE] ( ( [IF] (|ARTICLE_VAT|==2) [THEN] ((|ARTICLE_SALESPRICE_I_ACT|/1.21)-|ARTICLE_PURCHASE_E|) [ELSE] ((|ARTICLE_SALESPRICE_I_ACT|/1)-|ARTICLE_PURCHASE_E|) ) ) ) |
...
Middels bulk wijziging attribuut Omschrijving (Database attribuutnaam = ITEM_NAME vullen met het merk Apple.
Selecteer de betreffende artikelen en kies voor bulk wijziging
Selecteer het attribuut ! Omschrijving (zie onderstaande printscreen
...
De Database attribuutnaam = ITEM_NAME deze heb je nodig voor de betreffende functie
Zet een v om het attribuut aan te passen en kies dan voor fx, je krijgt nu een extra scherm genaamd Expressie
Geef het volgende in bij de Expressie: %naam van de toevoeging%, + (plus teken voor het samenvoegen) en de database attribuutnaam = ITEM_NAME tussen | (pipeline teken)
M.a.w.: Apple+|ITEM_NAME|
...
Met als resultaat in de bulk mutatie:
Na het starten van de bulk wijziging wordt de omschrijving aangepast de naam wordt dan: Apple TEST003
Samenvoegen kolommen uit importbestand
...
Deze kunnen worden samengevoegd op onderstaande wijze.Het kolomnummer staat in dit geval tussen | tekens. In het geval met kolomnamen wordt gewerkt dan dient type Expression name te worden gebruikt en wordt in de expressie tussen | de kolomnaam uit het aangeleverde bestand gebruikt.
...
Indien meerdere kolommen worden samengevoegd met eigen vrije tekst erbij kan BEL als volgt worden gebruikt.
Het importbestand bevat naast het ordernummer ook de naam van de klant (in kolom 5) en je wil de volgende tekst op een stringveld plaatsen: Ordernummer 123456789 van commissie Janssen.
Gebruik daarvoor onderstaande notatie. Let op dat iedere spatie of tekstfragment wordt gezien als onderdeel van de samenvoeging en vooraf wordt gegaan door het + teken:
...
Op basis van voorraadwaarde veld Tijdelijk niet leverbaar Ja / Nee (NOG UITWERKEN!!)
...
Waarde: 0;1;2;3;4;5;REST
Veld Tijdelijk niet leverbaar: true;true;true;true;true;true;false
Code Block | |
---|---|
Confluence | Artikelnummer;Voorraad 44099719;5 44099718;100 |
Code Block | theme | Confluence
---|
( [IF] (|2|==1) [THEN] (|ARTICLE_OUTOFSTOCK|==true) [ELSE] ( [IF] (|2|==5) [THEN] (|ARTICLE_OUTOFSTOCK|==true) [ELSE] (|ARTICLE_OUTOFSTOCK|==false) ) ) |
...
Door gebruik te maken van het attribuuttype 'Samengestelde sleutel' is het mogelijk om velden samen te voegen in een nieuw veld. In onderstaand voorbeeld wordt het veld 'hoogte' samengevoegd met het veld 'hoogte eenheid'. Daarbij is het attribuut 'hoogte eenheid' van het type relatie.
Code Block | ||
---|---|---|
| ||
|HOOGTE|+ +|HOOGTE_EENHEID.OMSCHRIJVING| |
...
De omschrijving van een veld dient via bulk wijziging aangepast te worden, waarbij bij elk item tekst toegevoegd dient te worden achter de reeds bestaande omschrijving. In onderstaand voorbeeld wordt achter de reeds bestaande omschrijving het woord 'Rood' toegevoegd.
Code Block | ||
---|---|---|
| ||
|omschrijving|+ Rood |
Omschrijving is in dit geval de attribuutwaarde, en dient tussen de verticale strepen te staan. Let op dat het plusteken hier direct achter toegevoegd moet worden, dus zonder spatie. Na het plusteken mag wel een spatie staan. Dit betekent dat achter de huidige omschrijving een spatie dient te komen gevolgt door het woord 'Rood'.
...
Dit kan ingevuld worden met een attrituut van het type 'Berekende string':
Code Block | ||
---|---|---|
| ||
[IF] (|ARTICLE_DESCRIPTION_DE|??) [THEN] (|ARTICLE_DESCRIPTION_NL|) [ELSE] (|ARTICLE_DESCRIPTION_DE|) |
...
Via bulk wijziging bestaande artikelomschrijving aanpassen met toevoeging van een !
Huidige omschrijving: Bodyprotector Protecto Kind, Maat XS wordt na aanpassing !Bodyprotector Protecto Kind, Maat XS
Code Block | ||
---|---|---|
| ||
\!+|Artikel_Omschrijving| |
Via bulk wijziging bestaande artikelomschrijving aanpassen met toevoeging van het merk
Huidige Huidige omschrijving: Bodyprotector Protecto Kind, Maat XS wordt na aanpassing Kerbl Bodyprotector Protecto Kind, Maat XS
Code Block | ||
---|---|---|
| ||
Kerbl+|Artikel_Omschrijving| |
...
Velden omschrijving en kleur samenvoegen in een berekende string
Code Block | ||
---|---|---|
| ||
([IF](|omschrijving|!!)[THEN]( )[ELSE](|omschrijving|))+ +([IF](|kleur|!!)[THEN]( )[ELSE](|kleur|)) |
Attribuut foto url vullen met standaard waarde indien waarde in het te importeren bestand is leeg
Code Block | ||
---|---|---|
| ||
coalesce(|AfbeeldingUrl|,www.abacus.nl) |
...
Attributen samenvoegen waarbij het & teken het koppelteken is
Code Block | ||
---|---|---|
| ||
|DT_ARTIKELBESTAND_BRAND.OT_ARTIKELMERK_NAME|+ +\&+ +|DT_ARTIKELBESTAND_TYPE|+ +\&+ +|DT_ARTIKELBESTAND_GEARS| |
...
Percentage invullen in een berekend attribuut op basis van diverse locaties
Code Block | ||
---|---|---|
| ||
[IF] (|CONTRACT_LOCATIE|==Zaandam) [THEN] (10) [ELSE] ( [IF] (|CONTRACT_LOCATIE|==Sliedrecht) [THEN] (10) [ELSE] ( ([IF] (|CONTRACT_LOCATIE|==Amersfoort) [THEN] (10) [ELSE] ([IF] (|CONTRACT_LOCATIE|==Maastricht) [THEN] (10) [ELSE] (([IF] (|CONTRACT_LOCATIE|==Garage) [THEN] (0) [ELSE] (0))))))) |
...
Selecteer het veld en klik op 'Expressie invoeren':
...
Vul vervolgens het veld ID en vermenigvuldig dit met het gewenste nummer, in onderstaand voorbeeld wordt de verkoopprijs opgehoogd met 2%:
Code Block | ||
---|---|---|
| ||
|ARTIKEL_VERKOOPPRIJS|*1.02 |
...
Velden samenvoegen in een berekende string, waarbij rekening wordt gehouden met 4 niveaus
Code Block | theme | Confluence
---|
[IF] (|Categorie_Niveau1.Categorie_Niveau1_Naam|!!) [THEN] (|Categorie_Website.Website_Afkorting|) [ELSE][IF] (|Categorie_Niveau2.Categorie_Niveau2_Naam|!!) [THEN] (|Categorie_Website.Website_Afkorting|+ +\/+\/+ +|Categorie_Niveau1.Categorie_Niveau1_Naam|) [ELSE][IF] (|Categorie_Niveau3.Categorie_Niveau3_Naam|!!) [THEN](|Categorie_Website.Website_Abbreviation|+ +\/+\/+ +|Categorie_Niveau1.Categorie_Niveau1_Naam|+ +\/+ +|Categorie_Niveau2.Categorie_Level2_Naam|) [ELSE](|Categorie_Website.Website_Abbreviation|+ +\/+\/+ +|Categorie_Niveau1.Categorie_Niveau1_Naam|+ +\/+ +|Categorie_Niveau2.Categorie_Niveau2_Naam|+ +\/+ +|Categorie_Niveau3.Categorie_Niveau3_Naam|) |
...
Bij het regulier ophalen van een automatisch ophogend attribuut in een berekend string veld voegt Beeyond automatisch een decimaal toe. Indien in het automatisch ophogend attribuut bijvoorbeeld 4 staat, maakt Beeyond er in het berekende attribuut 4.0 van. Dit kan als volgt worden opgelost:
Code Block | |
---|---|
Confluence | to_int(|ARTIKEL_ID|) |
HTML opmaken via een berekende string
Code Block | ||
---|---|---|
| ||
(\<)+(p)+(\>)+|ITEM_NAME_ONLINE|+(\<)+(\/)+(p)+(\>)+ (\<)+(p)+(\>)+(Afmeting: )+|ITEM_SIZE_ONLINE|+(\<)+(\/)+(p)+(\>)+ (\<)+(p)+(\>)+(Gewicht: )+|ITEM_NAME_ONLINE|+(\<)+(\/)+(p)+(\>)+ (\<)+(p)+(\>)+(Herkomstland: )+|ITEM_COUNTRY.COUNTRY_NAME|+(\<)+(\/)+(p)+(\>)+ (\<)+(p)+(\>)+(CBS code: )+|ITEM_CBS_R.ITEM_CBS_CODE|+(\<)+(\/)+(p)+(\>)+ (\<)+(p)+(\>)+(Merk: )+|ITEM_BRAND|+(\<)+(\/)+(p)+(\>) |
...
@ gebruiken in een berekende string
Code Block |
---|
...
...
[IF](|EXPOSANT_COMMISSIE|!=true)[THEN]|EXPOSANT_FACTUUR_MAIL|[ELSE](mail+\@+bztrs.nl) |
Berekende string (Volledige adres) wordt gevuld op basis van enkele andere velden
Code Block | ||
---|---|---|
| ||
[IF] ((|RELATIONS_ADDRESSES_ADDRESS_LINE_2|??)[OR](|RELATIONS_ADDRESSES_ADDRESS_LINE_2|!!)) [THEN] |RELATIONS_ADDRESSES_ADDRESS_LINE_1|+ +|RELATIONS_ADDRESSES_ZIP|+ +|RELATIONS_ADDRESSES_CITY| [ELSE][IF] ((|RELATIONS_ADDRESSES_ADDRESS_LINE_3|??)[OR](|RELATIONS_ADDRESSES_ADDRESS_LINE_3|!!)) [THEN] |RELATIONS_ADDRESSES_ADDRESS_LINE_1|+ +|RELATIONS_ADDRESSES_ADDRESS_LINE_2|+ +|RELATIONS_ADDRESSES_ZIP|+ +|RELATIONS_ADDRESSES_CITY| [ELSE] |RELATIONS_ADDRESSES_ADDRESS_LINE_1|+ +|RELATIONS_ADDRESSES_ADDRESS_LINE_2|+ +|RELATIONS_ADDRESSES_ADDRESS_LINE_3|+ +|RELATIONS_ADDRESSES_ZIP|+ +|RELATIONS_ADDRESSES_CITY| |
...
In onderstaand voorbeeld wordt het betreffende veld gevuld indien een waarde is ingegeven in het veld ITEM_SIZE_ONLINE. Is het veld leeg dan blijft het veld leeg.
Code Block | theme | Confluence
---|
[IF](is_empty(|ITEM_SIZE_ONLINE|))[THEN]null()[ELSE](|ITEM_SIZE_ONLINE|) |
...
In onderstaand voorbeeld worden diverse velden samengevoegd. Indien één van de velden leeg is wordt deze overgeslagen, en wordt de rest van de velden wel samengevoegd.
Code Block | ||
---|---|---|
| ||
{ |ITEM_NAME_ONLINE_STRING|+ ([IF](is_not_blank(|ITEM_SERIE|))[THEN](+ +\|+ +|ITEM_SERIE|))+ ([IF](is_not_blank(|ITEM_PACKING_UNIT|))[THEN](+ +\|+ +|ITEM_PACKING_UNIT|))+ ([IF](is_not_blank(|ITEM_SMELL_COLOR_TASTE|))[THEN](+ +\|+ +|ITEM_SMELL_COLOR_TASTE|))+ ([IF](is_not_blank(|ITEM_MATERIAL_ONLINE|))[THEN](+ +\|+ +|ITEM_MATERIAL_ONLINE|))+ ([IF](is_not_blank(|ITEM_SIZE_ONLINE|))[THEN](+ +\|+ +|ITEM_SIZE_ONLINE|)) } |
...
In de database is er een verschil tussen false en null. Null is ingevuld als het boolean attribuut nog nooit gevuld is geweest, dit wordt pas false (uitgevinkt) indien de waarde aangevinkt is geworden, en daarna weer uitgevinkt. Om dit in een expressie juist af te vangen kan ingewikkeld zijn. Het gebruik van de coalesce functie voorkomt problemen hiermee:
Code Block | theme | Confluence
---|
[IF] (coalesce(|ITEM_ACTIVE|,false)==true) [THEN] (Actief) [ELSE] (Niet actief) |
...
Gebruik van datum attributen in berekende tekst velden
In het berekende tekstveld kunnen ook datum-attributen gebruikt worden. Zo is het mogelijk de het volgende ingevuld worden
Code Block | ||
---|---|---|
| ||
add_days(|DATUM_ACTIEF|,7) add_days(|DATUM_ACTIEF|,|LOOPTIJD_IN_DAGEN|) |
...
Uitgewerkte voorbeelden functies
Functie: Formatting
Expressie | In | Uit | Toelichting |
---|---|---|---|
| "123" | "00123" | Indien de waarde minder dan 5 cijfers bevat, dan wordt deze aangevuld met nullen |
| "12345" | "12345" | Indien de waarde reeds 5 cijfers bevat, is het resultaat gelijk aan de input |
| "123000" | "123000" | Indien de waarde uit meer dan 5 cijfers bestaat, is het resultaat gelijk aan de input |
| "123" | "123" | %d geeft als resultaat de originele waarde |
| "123" | " 123" | Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze vooraf opgevuld met spaties |
| "123" | "123 " | Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze achteraf opgevuld met spaties |
| "123" | "000123" | Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze vooraf opgevuld met nullen |
| "abc" | "abc" | %s geeft als resultaat de originele waarde |
| "abc" | " abc" | Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze vooraf opgevuld met spaties |
| "abc" | "abc " | Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze vooraf opgevuld met spaties |
| "abc" | "ABC" | %S zet de originele waarde om in hoofdletters |
format(abcde+,%.3s) | "abcde" | "abc" | Deze kapt het aantal karakters af in plaats van dat deze worden aangevuld. Kan alleen bij een berekende string gebruikt worden, en niet bij een attribuut van het type Berekening. |
Functie: Capitalize
Expressie | In | Uit |
---|---|---|
capitalize(|Omschrijving|) | dit is een test | Dit is een test |
capitalize(|Omschrijving|) | dit IS een test | Dit IS een test |
Functie: Uncapitalize
Expressie | In | Uit |
---|---|---|
uncapitalize(|Omschrijving|) | Dit is een test | dit is een test |
uncapitalize(|Omschrijving|) | Dit IS een test | dit IS een test |
Functie: Capitalize words
Expressie | ||
---|---|---|
capitalizewords(|Omschrijving|) | dit is een test | Dit Is Een Test |
capitalizewords(|Omschrijving|) | dit IS een test | Dit IS Een Test |
Functie: Is_empty
is_empty: null en leeg wordt beide afgehandeld
Code Block |
---|
...
[IF]
(is_empty(|Omschrijving|))
[THEN]
(test)
[ELSE]
(|Omschrijving|) |
Functie: Is_blank
is_blank: null, leeg en spaties worden allen afgehandeld. Indien alleen spaties in het veld Omschrijving staan dan verschijnt in het berekende string veld 'test'
Code Block |
---|
...
...
[IF]
(is_blank(|Omschrijving|))
[THEN]
(test)
[ELSE]
(|Omschrijving|) |
Voorbeeld Afleveradres Online wordt gevuld met het afleveradres indien aanwezig en anders met het reguliere adres
Code Block |
---|
...
theme | Confluence |
---|
([IF](is_blank(|CUST_DELIVERY_ADDRESS|))[THEN](|CUST_ADDRESS|)[ELSE](|CUST_DELIVERY_ADDRESS|)) |
Functie: Is Not Blank
In onderstaand voorbeeld worden diverse velden samengevoegd. Is een veld niet gevuld, dan wordt deze genegeerd via deze expressie. De overige velden worden in dat geval wel achter elkaar gezet.
Code Block |
---|
...
...
|ITEM_NAME_ONLINE_STRING|+
([IF](is_not_blank(|ITEM_SERIE|))[THEN](+ +\|+ +|ITEM_SERIE|))+
([IF](is_not_blank(|ITEM_PACKING_UNIT|))[THEN](+ +\|+ +|ITEM_PACKING_UNIT|))+
([IF](is_not_blank(|ITEM_SMELL_COLOR_TASTE|))[THEN](+ +\|+ +|ITEM_SMELL_COLOR_TASTE|))+
([IF](is_not_blank(|ITEM_MATERIAL_ONLINE|))[THEN](+ +\|+ +|ITEM_MATERIAL_ONLINE|))+
([IF](is_not_blank(|ITEM_SIZE_ONLINE|))[THEN](+ +\|+ +|ITEM_SIZE_ONLINE|)) |
Functie: Trim
Expressie | In | Uit |
---|---|---|
trim(|Omschrijving|) | " Dit is een test " | "Dit is een test" |
Functie: Contains
Code Block |
---|
...
theme | Confluence |
---|
[IF]
(contains(|Omschrijving|,test))
[THEN]
(true)
[ELSE]
(false) |
Functie: Remove / substring_after
Code Block |
---|
...
remove(([IF]contains(|WEG_AFBEELDING_BESTANDSNAAM|,_)
[THEN](substring_after(|WEG_AFBEELDING_BESTANDSNAAM|,_))
+(test1)
[ELSE]
(TEST)),.jpg) |
Functie: Substring
Expressie | In | Uit | Toelichting |
---|---|---|---|
substring(|Omschrijving|,10) | "Dit is een test hoever" | " test hoever" | De substring wordt dus vanaf het 10 karakter |
Functie: Left
Expressie | In | Uit |
---|---|---|
left(|Omschrijving|,5) | 123456789 | 12345 |
Functie: Right
Expressie | In | Uit |
---|---|---|
right(|Omschrijving|,5) | 123456789 | 56789 |
Functie: Str_Equals
Voorbeeld berekening:
Code Block |
---|
...
theme | Confluence |
---|
[IF]
(str_equals(|Omschrijving|,|OmschrijvingEN|))
[THEN]
(true)
[ELSE]
(false) |
Voorbeeld berekende string:
Code Block |
---|
...
[IF]
(str_equals(|ARTIKEL_INHOUD_EENHEID|,g))
[THEN]
(|ARTIKEL_INHOUD|)
[ELSE]
(
[IF]
(str_equals(|ARTIKEL_INHOUD_EENHEID|,kg))
[THEN]
(|ARTIKEL_INHOUD|*1000)
[ELSE]
(
[IF]
(str_equals(|ARTIKEL_INHOUD_EENHEID|,ml))
[THEN]
(|ARTIKEL_INHOUD|*|ARTIKEL_SOORTELIJKE_MASSA|)
[ELSE]
(
[IF]
(str_equals(|ARTIKEL_INHOUD_EENHEID|,ltr))
[THEN]
(|ARTIKEL_INHOUD|*|ARTIKEL_SOORTELIJKE_MASSA|*1000)
[ELSE]
|ARTIKEL_STUK_GEWICHT|
))) |
Functie: Replace
In dit voorbeeld wordt in het betreffende veld de ë vervangen door e.
Code Block |
---|
...
theme | Confluence |
---|
replace(|ITEM_NAME|,'ë','e') |
Indien in één expressie meerdere tekens vervangen dienen te worden kan dit als volgt:
Code Block |
---|
...
{
replace(replace(replace(replace(([IF]
is_empty(|ITEM_SIZE|)
[THEN]
|ITEM_NAME|
[ELSE]
|ITEM_NAME|+_+|ITEM_SIZE|),' ','-'),'ë','e'),'é','e'),'è','e')
} |