Ik ben bezig met een applicatie waaruit facturen gedraaid moeten gaan worden. Opzich is dit niet het probleem. Echter, het programma gaat door een paar honderd bedrijven gebruikt worden, en ieder bedrijf heeft zijn eigen wensen wat betreft kortingen. De 1 wil over een factuur x procent korting geven als de factuur groter is dan Y euro, en de ander wil x procent meer korting geven als medicijn Z is gebruikt, en weer een ander wil korting geven als de klant de afgelopen 6 maanden elke maand minimaal 150 euro heeft besteed en ga zo maar door. Het aantal kortingsregels kan behoorlijk uit de klauwen lopen.
Nu is de vraag natuurlijk hoe dit generiek op te gaan lossen. Mijn eerste gedachte was om een aparte DLL te maken met daarin alle kortings functies. Echter, dit is niet erg flexibel en voor de klant totaal niet aan te passen. Wel lekker uurtje factuurtje schrijven voor ons natuurlijk, zonder korting
Een andere oplossing is een script engine gebruiken. LUA(met de lua interface lib voor .Net) lijkt mij de meest geschikte. Dat maakt het geheel een stuk flexibeler. Alleen denk ik dat een eindgebruiker weinig zal snappen van lua, het blijft een programmeer-taaltje. Want het lijkt mij het meest efficiente als een eindgebruiker zijn eigen kortingsregels kan ingeven.
Weer een andere oplossing is het door de gebruiker laten ingeven van simpele regels. Iets als:
En dan de kortingen(TotaalFactuur, AantalBezoeken) kunnen koppelen aan klant, klantgroepen, factuurtypen etc.
Dit zou wel het mooiste zijn, alleen hoe maak ik zoiets? Of, zijn er andere methoden om een flexibele manier aan te bieden? Zijn er mensen die hier ook tegen aan zijn gelopen, en hoe is dat opgelost?
Nu is de vraag natuurlijk hoe dit generiek op te gaan lossen. Mijn eerste gedachte was om een aparte DLL te maken met daarin alle kortings functies. Echter, dit is niet erg flexibel en voor de klant totaal niet aan te passen. Wel lekker uurtje factuurtje schrijven voor ons natuurlijk, zonder korting
Een andere oplossing is een script engine gebruiken. LUA(met de lua interface lib voor .Net) lijkt mij de meest geschikte. Dat maakt het geheel een stuk flexibeler. Alleen denk ik dat een eindgebruiker weinig zal snappen van lua, het blijft een programmeer-taaltje. Want het lijkt mij het meest efficiente als een eindgebruiker zijn eigen kortingsregels kan ingeven.
Weer een andere oplossing is het door de gebruiker laten ingeven van simpele regels. Iets als:
code:
1
2
3
4
5
6
7
| korting TotaalFactuur Als FactuurBedrag > 500 dan Factuur.Korting = 5% Als FactuurBedrag > 1000 dan Factuur.Korting = 7% einde korting korting AantalBezoeken Als Klant.Bezoeken(vandaag, vandaag - maand(1)) >= 5 dan Factuur.Consult.Korting = 50% einde korting |
En dan de kortingen(TotaalFactuur, AantalBezoeken) kunnen koppelen aan klant, klantgroepen, factuurtypen etc.
Dit zou wel het mooiste zijn, alleen hoe maak ik zoiets? Of, zijn er andere methoden om een flexibele manier aan te bieden? Zijn er mensen die hier ook tegen aan zijn gelopen, en hoe is dat opgelost?
Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua