Alle prijzen updaten / afronden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Furio Scripting

Furio Scripting

07/02/2017 15:18:53
Quote Anchor link
Goedemiddag Forumleden,

Ik heb een tabel met daarin prijzen excl btw maar de prijzen zijn allemaal niet afgerond dus veel prijzen als 114,04 en 118,22..

Nu wil ik alle prijzen gaan updaten en enkel de volgende cijfers achter de comma zien: ,25 - ,50 - ,75 - ,95.

Ik dacht zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$q
= 'SELECT * FROM ps_product';
$result = $database->query($q);

while ($rows = mysqli_fetch_assoc($result))
{

  
$totaalPrijsincBtw = $rows['prijs'] / 121 * 100; // voorbeeld 114,04.

// Dan kijken naar de cijfers achter de comma, als deze boven de 0 en tussen de 25 zit dan maken we er ,24 van...

// Als het bedrag tussen de 25 en 50 zit maken we er 0,50 van..

// Als het bedrag tussen de 50-75 zit maken we er 0,75 van..

// Als het bedrag tussen 75 en 99 zit maken we er 0,95 van..


}

?>


Maar hoe kunnen we kijken achter de comma's en een if else daarop maken en de cijfers updaten?

Ik hoor het graag!
Gewijzigd op 07/02/2017 15:19:17 door Furio Scripting
 
PHP hulp

PHP hulp

26/04/2024 12:56:13
 
Joakim Broden

Joakim Broden

07/02/2017 15:39:29
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    Code van Ward van der Put is beter
?>

Zoiets? Heb niet getest.

Trouwens $rows['prijs'] / 121 * 100 is toch de prijs excl BTW ipv incl?
Gewijzigd op 08/02/2017 12:44:03 door Joakim Broden
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/02/2017 15:47:15
Quote Anchor link
>> Trouwens $rows['prijs'] / 121 * 100 is toch de prijs excl BTW ipv incl?

Ja dat is de BTW terugrekenen. Je kunt dit desgewenst korter noteren

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$btw
= 0.21;
$excl_btw = $incl_btw / (1 + $btw);
?>


BTW berekenen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$btw
= 0.21;
$incl_btw = $excl_btw * (1 + $btw);
?>
 
Joakim Broden

Joakim Broden

07/02/2017 15:52:53
Quote Anchor link
Ja klopt, maar omdat de var $totaalPrijsincBtw (inc) heet wat dus niet inc is.
Gewijzigd op 07/02/2017 15:53:16 door Joakim Broden
 
John D

John D

07/02/2017 16:01:42
Quote Anchor link
Je zegt: ik heb een tabel met daarin prijzen excl btw en vervolgens ga je dat behandelen alsof het een incl BTW prijs is?? $totaalPrijsincBtw = $rows['prijs'] / 121 * 100;
Welke prijs wil je nu "mooi" maken want uiteindelijk is een van beide een nette prijs en de ander een deelsom die altijd minder mooi uitvalt.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/02/2017 16:02:41
Quote Anchor link
>> Ja klopt, maar omdat de var $totaalPrijsincBtw (inc) heet wat dus niet inc is.

Dat is niet handig ;-)
 
Thomas van den Heuvel

Thomas van den Heuvel

07/02/2017 16:13:53
Quote Anchor link
Los daarvan, tussenwaarden afronden... mijn wiskunde-/natuurkundeleraar zou zich omdraaien in zijn graf als hij dit zag.
 
Ward van der Put
Moderator

Ward van der Put

07/02/2017 16:26:19
Quote Anchor link
Niet gaan rommelen met een if/elseif/else. Er is een simpele rekenregel. Voor de rij .00, .25, .50, .75 kun je vermenigvuldigen met 4, daarna afronden op een geheel getal en tot slot delen door 4.

In stappen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// Aselecte prijs exclusief btw
$prijs_excl_btw = mt_rand(100, 20000) / 100;

// Vermenigvuldigen met 1,21 voor 21% btw
$prijs_incl_btw = 1.21 * $prijs_excl_btw;
$prijs_incl_btw = round($prijs_incl_btw, 2);

// Vermenigvuldigen met 4, casten naar integer en weer delen door 4
$afgeronde_prijs_incl_btw = 4 * $prijs_incl_btw;
$afgeronde_prijs_incl_btw = (int)$afgeronde_prijs_incl_btw;
$afgeronde_prijs_incl_btw = $afgeronde_prijs_incl_btw / 4;

// Test
echo '<pre>';
var_dump($prijs_excl_btw, $prijs_incl_btw, $afgeronde_prijs_incl_btw);
?>


Voor veelvouden van 5 cent (,05, .10, .15 enzovoort) reken je met 20 in plaats van 4.
Gewijzigd op 07/02/2017 16:26:51 door Ward van der Put
 
John D

John D

07/02/2017 16:30:57
Quote Anchor link
De prijs incl BTW afronden? Volgens mij mag dat boekhoudkundig niet. Het is een centenkwestie maar zodra je de incl BTW prijs gaat afronden veranderd ook de BTW mee. BTW die de inspecteur graag binnen wil zien komen. Ik ben al eens teruggefloten door een accountant omdat we dat hadden gedaan in een systeem. "Mooie prijzen gemaakt" mocht niet. Uiteraard tenzij je bij de afrekening aan de consument de BTW opnieuw bepaalt en als zodanig op de factuur zet natuurlijk. Dan is het natuurlijk ook zinvol om de "nieuwe" ex BTW prijs in je tabel te hebben.
Gewijzigd op 07/02/2017 16:35:11 door John D
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/02/2017 23:07:20
Quote Anchor link
Kleine afrondverschillen hou je altijd maar de optelsom bedragExcl + BTW moet natuurlijk exact het bedrag inclusief BTW zijn.
En daarnaast moet het BTW percentage zo dicht mogelijk bij het voorgeschreven percentage zitten. Ik bedoel dat de afwijking minder moet zijn dan 1 eurocent.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
             EXACT   | AFGEROND
bedragExcl = 1,61    |   1,61
21% BTW    = 0,3381  |   0,34 +
Totaal     =         |   1,95


andersom
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
             EXACT   | AFGEROND
bedragIncl = 1,95    |   1,95
/ 121 * 21 = 0,3384  |   0,34 -
bedragExcl =         |   1,61


De uitkomst bereken je dus niet exact maar met de afgeronde waardes om te zorgen dat het sommetje na afronding nog klopt
Gewijzigd op 07/02/2017 23:09:55 door Frank Nietbelangrijk
 
Ivo P

Ivo P

08/02/2017 10:09:58
Quote Anchor link
@Joakim

$prijs = explode(',' $prijs);

oei. Een getal bevat geen komma. Hooguit een punt.

Maar dan nog, zou je mi. beter af zijn om de prijs als een getal te beschouwen.
Daarnaast verander je de inhoud van $prijs van een getal naar een array. Gebruik dan liever een nieuwe naam. Of ga direct naar de centen toe:

$centen = $prijs - floor($prijs);


Merkt trouwens ook op dat je het geval mist als de decimalen precies 0 zijn. Je rondt dan af naar 25 ct
 
Joakim Broden

Joakim Broden

08/02/2017 12:43:29
Quote Anchor link
@Ivo, klopt heb je helemaal gelijk in. Slordig script van mij, even snel op mobiel getypt en ook niet getest.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.