Artikelberekeningformulieren (Extended)

De artikelberekeningsformulieren maken het mogelijk om de prijs van een artikel te laten berekenen op basis van verschillende “variabelen”. Een concreet voorbeeld is de verkoop van gordijnstoffen. Om te bestellen dienen klanten de maten door te geven. Op basis van de maten, het aantal vouwen, de stof en andere factoren wordt een prijs bepaald.

artikelberekeningsformulieren1

artikelberekeningsformulieren2

Omdat elke branche en elk product zijn eigen berekeningen heeft is het systeem zodanig opgezet dat u als gebruiker zelf de nodige velden en berekeningscripts (dit noemen we berekeningsformulieren) kunt en dient aan te maken. Voor alle duidelijkheid hebben we enkele voorbeeld berekeningsformulieren gemaakt.

Deze formulieren zijn bij een standaard installatie terug te vinden onder map C:\Program Files (x86)\logivert\logivert 6\documents\webshop\scripts\extra\calcforms. Daar staan standaard 3 bestanden en mappen:

_calcform01xml.txt (met map _calcform01xml)
_calcform02xml.txt (met map _calcform02xml)
_calcform03xml.txt (met map _calcform03xml)

Dit zijn voorbeeld berekeningsscripts. calcform01xml is een voorbeeldberekening voor sauna’s. calcform02xml is een voorbeeldberekening voor dozen. calcform03xml is een voorbeeldberekening voor gordijnen.

Het toepassen van berekeningsformulieren op artikel gaat als volgt (voor de toelichting nemen we het voorbeeld van de gordijnen):

1.Ga in het programma naar het venster Eigenschappen en vervolgens naar Instellingen en vink daar onder Artikelen de optie Berekeningsformulieren aan.
 
2.Ga vervolgens naar het venster Artikelen. Selecteer een artikel waar u een berekeningformulier aan wilt koppelen. Ga naar het tabblad Opties / Berekeningsformulieren. Stip daar een gewenst formulier aan. Voor dit voorbeeld stippen we nummer 3 aan.
artikelberekeningsformulieren3
Vul vervolgens, indien nodig, de veldwaardes in.
In ons voorbeeld staat “Veld 1” voor de prijs per meter, “Veld 2” voor stof breedte en “Veld 3” voor de confectieprijs.
3.Deze stappen zijn de basis stappen in het programma. Wij moeten nog het formulier definiëren zoals dat aan de klant gepresenteerd gaat worden bij het artikel…
artikelberekeningsformulieren4
…en we moeten de berekening opstellen.
4.We beginnen met het definiëren van het formulier. Hiervoor dient een XML bestand aangemaakt te worden in de map c:\Program Files (x86)\logivert\logivert 6\documents\webshop\scripts\extra\calcforms. Dit bestand dient de volgende naam te krijgen calcform**xml.txt, waarbij de sterretjes vervangen dienen te worden door cijfers. Deze cijfers dienen gelijk te zijn aan het getal dat we geselecteerd hebben bij het artikel onder het tabblad “Berekeningsformulieren” (eventueel voorgegaan door een nul). In ons voorbeeld is dat nummer 3 en moet het bestand dus de volgende naam krijgen:
calcform03xml.txt
Voor dit voorbeeld nemen we het bestand _calcform03xml.txt uit de betreffende map. We maken hier een kopie van en hernoemen deze naar calcform03xml.txt.
 
We gaan even de structuur van dit bestand bestuderen om duidelijkheid te scheppen en de mogelijkheden tot uitbreiding (en eventueel het zelf aanmaken van een dergelijk formulier) toe te lichten.
U vindt de volgende velden:
A.<LV_CF_NR>3</LV_CF_NR>
Hierin staat het nummer van het formulier. Het is belangrijk dat deze identiek is aan het nummer zoals opgenomen in de bestandsnaam, maar dan zonder voorloop nul.
B.<LV_CF_NAME>curtains</LV_CF_NAME>
Hierin staat de naam van het formulier. Deze naam worden verder nergens gebruikt en is alleen ter herkenning voor uzelf.
C.<LV_CF_SCRIPT>calcform03.js</LV_CF_SCRIPT>
Hierin staat de naam van het berekeningsscript dat gebruikt dient te worden voor de berekeningen. Zorg ervoor dat deze een naam met de volgende structuur heeft calcform**.js. Waarbij de sterretjes vervangen dienen te worden door de cijfers zoals opgenomen in de bestandsnaam van het formulier.
Verdere uitleg over dit bestand (script) volgt hieronder.
D.<LV_CF_FFIELD1_NAME><![CDATA[Ophangmethode]]></LV_CF_FFIELD1_NAME>
<LV_CF_FFIELD2_NAME><![CDATA[Totale breedte rail (cm)]]></LV_CF_FFIELD2_NAME>
<LV_CF_FFIELD3_NAME><![CDATA[Totale hoogte gordijn (cm)]]></LV_CF_FFIELD3_NAME>
<LV_CF_FFIELD4_NAME><![CDATA[Voeringstof]]></LV_CF_FFIELD4_NAME>
<LV_CF_FFIELD5_NAME><![CDATA[Aantal delen]]></LV_CF_FFIELD5_NAME>
<LV_CF_FFIELD6_NAME><![CDATA[]]></LV_CF_FFIELD6_NAME>
Hierin staan omschrijvingen zoals die online getoond zullen worden in het resultaat van de berekening en de uiteindelijke bestelling.
Afhankelijk van de berekening is maar een deel of het geheel ingevuld.
E.<LV_CF_ERRORMESSAGE><![CDATA[Niet alle velden zijn juist ingevuld!]]></LV_CF_ERRORMESSAGE>
<LV_CF_ERRORMESSAGE2><![CDATA[]]></LV_CF_ERRORMESSAGE2>
Dit zijn foutmelding teksten voor eventueel gebruik en weergave in d eberekingen.
F.<LV_CF_FIELDS> … </LV_CF_FIELDS>
Hiertussen worden de zichtbare en onzichtbare velden van het formulier, zoals deze online getoond zullen worden, gedefinieerd.
G.<LV_CF_FIELD> … </LV_CF_FIELD>
Hier tussen worden per veld de definities opgenomen.
H.Hier volgende de definitiemogelijkheden voor de velden:
i.<LV_CF_FIELD_TYPE>
Veldtype:
text  - voor tekst/invul velden
select – voor selectie/dropdown velden
hiddenvar1 – voor verborgen variabele 1. Deze zal de waarde dragen zoals u bij het artikel ingevuld heeft in het veld “Veld 1”.
hiddenvar2 – voor verborgen variabele 2. Deze zal de waarde dragen zoals u bij het artikel ingevuld heeft in het veld “Veld 2”.
hiddenvar3 – voor verborgen variabele 3. Deze zal de waarde dragen zoals u bij het artikel ingevuld heeft in het veld “Veld 3”.
ii.<LV_CF_FIELD_NAME>
Interne veldnaam. Via deze naam zal het veld uitgelezen kunnen worden door het berekeningsscript. Deze veldnaam is standaard de volgende structuur field_*** waarbij de sterretjes staan voor cijfers.
iii.<LV_CF_FIELD_LABEL>
De tekst die op de site voor het veld getoond zal worden.
iv.<LV_CF_FIELD_SIZE>
De veld grootte. Specifiek voor velden van het type tekst.
v.<LV_CF_FIELD_MAXLENGTH>
Maximale lengte van de ingevulde waarde. Specifiek voor velden van het type tekst.
vi.<LV_CF_FIELD_OPTIONS>
   <LV_OPTION>
       <LV_OPT_VALUE><![CDATA[Rail - Enkele plooi]]></LV_OPT_VALUE>
       <LV_OPT_LABEL><![CDATA[Rail - Enkele plooi]]></LV_OPT_LABEL>
       <LV_OPT_SELECTED>1</LV_OPT_SELECTED>
   </LV_OPTION>
</LV_CF_FIELD_OPTIONS>
Dit betreft de definitie van de selecties/opties bij velden van het type select. Waarbij value staat voor de waarde zoals die aan het berekeningsscript doorgegeven zal worden, label voor de zichtbare tekst in het formulier en selected die de waarde 1 te hebben bij de waarde die standaard geselecteerd dient te zijn anders dient dit 0 te zijn.
5.Als we eenmaal het formulier gedefinieerd hebben dient het berekeningsscript aangemaakt te worden. Hiervoor dient eerst een map aangemaakt te worden onder c:\Program Files (x86)\logivert\logivert 6\documents\webshop\scripts\extra\calcforms. Deze map dient de volgende naam te krijgen calcform**, waarbij de sterretjes vervangen dienen te worden door cijfers. Deze cijfers dienen gelijk te zijn aan het getal dat we geselecteerd hebben bij het artikel onder het tabblad “Berekeningsformulieren” (eventueel voorgegaan door een nul). In ons voorbeeld is dat nummer 3 en moet de map dus de volgende naam krijgen:
calcform03
In deze map dient een javascript opgenomen te worden met dezelfde naam als gedefinieerd in het formulier. Volgens ons voorbeeld, en dus ook de aangeraden standaard, is deze naam:
calcform03.js
Voor dit voorbeeld nemen we de map _calcform03 uit de betreffende map. We maken hier een kopie van en hernoemen deze naar calcform03.
 
Dit script dient in ieder geval over de volgende functie te beschikken:
function calcformCalculate(field1name, field2name, field3name, field4name, field5name, field6name, errormessage, vat, showpricemode, errormessage2)
Deze functie wordt namelijk vanuit het systeem aangeroepen en dient dus exact deze structuur te hebben.
Deze functie dient bij een geslaagde berekening de waarde 1 te retourneren en bij een mislukte berekening de waarde 0.
Bij een geslaagde berekening dient het script ook de volgende velden op de pagina te vullen:
document.calcformResultForm.resultPrice.value = [de berekende prijs excl. BTW];
document.calcformResultForm.resultShowPrice.value = [de berekende prijs zoals deze aan de klant getoond dient te worden. Afhankelijk van de shop is dit incl. of excl. BTW];
document.calcformResultForm.resultText.value = [de toelichtende tekst zoals deze in de bestelling bij het artikel opgenomen zal worden. Deze dient dus alle ingevulde waardes weer te geven voor de juiste afhandeling van de bestelling];