Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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
iconfalse
title

Inhoudsopgave

Table of Contents

Algemene voorbeelden: Berekeningen

...

Marge % berekening: (Verkoopprijs incl. BTW minus BTW) - Inkoopprijs excl. / Verkoopprijs incl. BTW minus BTW * 100


Code Block
themeConfluence
(
[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
themeConfluence
(
[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.Image Removed

...

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:Image Removed

...

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

theme
Code Block
Confluence
Artikelnummer;Voorraad
44099719;5
44099718;100


Confluence
Code Block
theme
(
	[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
themeConfluence
|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
themeConfluence
|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
themeConfluence
[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
themeConfluence
\!+|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
themeConfluence
Kerbl+|Artikel_Omschrijving|

...

Velden omschrijving en kleur samenvoegen in een berekende string

Code Block
themeConfluence
([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
themeConfluence
coalesce(|AfbeeldingUrl|,www.abacus.nl)

...

Attributen samenvoegen waarbij het & teken het koppelteken is

Code Block
themeConfluence
|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
themeConfluence
[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':Image Removed

...

Vul vervolgens het veld ID en vermenigvuldig dit met het gewenste nummer, in onderstaand voorbeeld wordt de verkoopprijs opgehoogd met 2%:

Code Block
themeConfluence
|ARTIKEL_VERKOOPPRIJS|*1.02

...

Velden samenvoegen in een berekende string, waarbij rekening wordt gehouden met 4 niveaus

Confluence
Code Block
theme
[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: 

theme
Code Block
Confluence
to_int(|ARTIKEL_ID|)


HTML opmaken via een berekende string

Code Block
themeConfluence
(\<)+(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
themeConfluence
[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.

Confluence
Code Block
theme
[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
themeConfluence
{
|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:


Confluence
Code Block
theme
[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
themeConfluence
add_days(|DATUM_ACTIEF|,7)

add_days(|DATUM_ACTIEF|,|LOOPTIJD_IN_DAGEN|)

...

Uitgewerkte voorbeelden functies

Functie: Formatting

Expressie

In

Uit

Toelichting

format(123,%05d)

"123"

"00123"

Indien de waarde minder dan 5 cijfers bevat, dan wordt deze aangevuld met nullen

format(12345,%05d)

"12345"

"12345"

Indien de waarde reeds 5 cijfers bevat, is het resultaat gelijk aan de input

format(123000,%05d)

"123000"

"123000"

Indien de waarde uit meer dan 5 cijfers bestaat, is het resultaat gelijk aan de input

format(123,%d)

"123"

"123"

%d geeft als resultaat de originele waarde

format(123,%6d)

"123"

" 123"

Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze vooraf opgevuld met spaties

format(123,%-6d)

"123"

"123 "

Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze achteraf opgevuld met spaties

format(123,%06d) 

"123"

"000123"

Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze vooraf opgevuld met nullen

format(abc,%s)

"abc"

"abc"

%s geeft als resultaat de originele waarde

format(abc,%6s)  

"abc"

" abc"

Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze vooraf opgevuld met spaties

format(abc,%-6s)

"abc"

"abc "

Indien de waarde uit minder dan 6 tekens bestaat, dan wordt deze vooraf opgevuld met spaties

format(abc,%S)

"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

...

themeConfluence
([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

...

themeConfluence
[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

...

themeConfluence
[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

...

themeConfluence
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')
}