Hallo zusammen und ein gesundes neues Jahr,
ich möchte gern in der Statusmeldung eine Rechnung vornehmen.
es soll vom Betrag {$sOrder.invoice_amount|string_format:"%.2f"} €
3% abgezogen werden.
Also dachte ich {$sOrder.invoice_amount|string_format:"%.2f" *0,97} €
oder {($sOrder.invoice_amount|string_format:"%.2f") *0,97} €
Leider ruft das einen fehler hervor.
wie kann ich die Ausgabe richtig berechnen?
viele Grüße
phil
7. Januar 2022 um 14:48
2
Das kann nicht funktionieren, denn Du versuchst einen String mit 0.97 zu multiplizieren. Also erst rechnen, dann formatieren:
{$sOrder.invoice_amount*0.97|string_format:"%.2f"}
Einfachere Berechnungen kann man direkt in Smarty machen , für komplexere Sachen kann man die {math} Funktion verwenden.
LG Phil
Ja logisch mein Fehler. Herzlichen DANK
Merkwürdig das er aber trotzdem 3 Stellen nach dem Komma ausgibt !
{$sOrder.invoice_amount*0.95|string_format:"%.2f"} €
Warum x,655 statt x,66 ???
phil
7. Januar 2022 um 19:39
4
Wundert mich ein wenig, dass der precision-Parameter vom sprintf hier nicht greift. Versuch mal zusätzlich noch vorher auf zwei Stellen zu runden:
{($sOrder.invoice_amount*0.97)|round:2|string_format:"%.2f"}
Wichtig sind beim round modifier die runden Klammern, in Smarty 3 wird sonst nicht der ganze Ausdruck, sondern nur der letzte Parameter gerundet.
LG Phil
phil:
round:2|
Ok super das klappt Tausend DANK. scheinbar liegt es an der Multiplikation ;( Schönes Wochenende