Door
Sietsko Bos
op 27-06-2016 14:26
gewijzigd op 27-06-2016 14:43
6.025 views
Hallo,
ik ben bezig met een geldsommen script.
Ik krijg een aantal variabelen door via een html formulier zoals:
maximaal bedrag van de producten
prijs afronden op: 001, 002, 005, 010, 020, 050, 100 en 200 cent
betalen met: 001, 002, 005, 010, 020, 050, 100, en 200 cent
Wat is mijn bedoeling:
stel de instelling is:
maximaal bedrag: 2 euro
afronden op: 005 cent
betalen met: 020, 050, 100 en 200 cent.
ik maak een random bedrag aan voor een product, bijvoorbeeld een tandenborstel voor 1,25 euro.
Ik loop nu door de array van betalen met en vergelijk als het random bedrag lager is dan het te betalen bedrag.
De eerste in dit geval is dus de 2 euro munt en die wordt dan als image geplaatst, tot zover gaat het goed.
Maar wat nu als ik wil betalen met 1 euro en 50 cent, of met 1 euro en 1 van 20 cent en 1 van 10 cent
Ik ben al een poosje aan het denken hoe ik dat kan fixen.
Ik wil dan dus de benodigde images van de 1 euro, 20 cent en de 10 cent laten zien.
Maar € 1,25 betaal je toch met 3 munten van achtereenvolgens € 1, € 0,20 plus € 0,05?
Zit er een specifieke combinatie van munten in de portemonnee of zijn die eindig? In het eerste geval heb je een pool met bekende combinaties van bruikbare munten, in het tweede geval is betalen veel eenvoudiger. Dat is een ontwerpbeslissing.
Of je onder 0 kunt uitkomen, is afhankelijk van of je wisselgeld wilt ondersteunen: als je € 1,25 betaalt met een munt van € 2, dan krijg je normaliter € 0,50 + € 0,20 + € 0,05 terug. Dat is ook een ontwerpbeslissing.
Maar € 1,25 betaal je toch met 3 munten van achtereenvolgens € 1, € 0,20 plus € 0,05?
Dat klopt, maar ik wil dus dat er uitgerekend word wat je terugkrijgt als je betaald met 1, 0,20, en 0,10.
Ik heb het nu wil zo dat je met een munt van 2 euro betaald dat hij die munt ook laat zien.
Heb alleen geen idee hoe het zo te maken dat het script ook kiest voor 1, 0,20 en 0,10
Er zijn geen specifieke combinaties, ik wil eigenlijk random laten beslissen welke munten ik mee betaal, maar wel zo dat het betaalbedrag hoger is dan het te betalen bedrag zodat je altijd geld terug krijgt.
Geen idee wat je precies wilt, maar misschien heb je hier iets aan.
<?php
$EuroMunten = array(1,2,5,10,20,50,100,200);
$TeBetalen = rand(1,1000);
$IkBetaalMet = array_fill(0,count($EuroMunten),0);
$RekenHulp = 0;
Het eerste artikel is nu 80 cent die wordt nu betaald met een euro, maar het is de bedoeling dat er bijvoorbeeld ook betaald wordt met 0,50 en 2 x 0,20
Het derde artikel wordt betaald met 2 euro, maar zou ook kunnen zijn 1 van 1 euro en 1 van 0.10 of 0.20 of 0.50
Het lukt me wel om de eerste munt te kiezen die hoog genoeg is maar niet met meerdere munten.
Niet altijd de hoogste munt, maar wel het aantal munten hoger dan het te betalen bedrag.
Bedrag van 1,45 zou de ene keer betaald kunnen worden met 1 x 1 euro en 1 x 0.50 maar de andere keer met een 2 euro munt of met 1 x 1 euro en en 3x 0.20 dit mag/moet juist variabel zijn.
Ik krijg nog steeds het precieze bedrag, dit is juist niet de bedoeling omdat er uitgerekend moet worden hoeveel geld je terug krijgt. Een bedrag van 6.60 zou dus moeten geven:
3 x 2.00 + 1 x 0.50 + 1 x 0.20
of
4 x 2.00
of
2 x 2.00 + 2 x 1.00 + 1 x 0.50 + 1 x 0.20
Het is dus de bedoeling dat de ene munt in de afbeelding wordt vervangen door meerdere.