Rechnungsbeträge werden in der Schweiz auf 0 bzw. 5 Rappen gerundet.
Man nennt dies auch Rappenrundung (http://de.wikipedia.org/wiki/Rundung#Rappenrundung).
Bezogen auf das Shop-System Shoppilot gilt dabei folgendes:
Sofern die Preise im Shop als Brutto-Preise angegeben sind treten hierbei keine Probleme auf,
da sämtliche Artikelpreise und Zuschläge schon gerundet in den Shop eingepflegt wurden.
Sind die Preise allerdings als Netto-Preise angegeben, so geschieht bei einer Bestellung folgendes:
Alle Preise, Zuschläge, etc. werden aufsummiert und ergeben die Netto-Gesamtsumme.
Auf Basis der Netto-Gesamtsumme und des Steuersatzes wird die Umsatzsteuersumme berechnet.
Die Brutto-Gesamtsumme ist wiederum die Summe aus Netto-Gesamtsumme und Umsatzsteuersumme.
Da bei der Berechnung der Umsatzsteuersumme ein "schweizerisch ungerades" Ergebnis berechnet wird,
ist folglich auch die Brutto-Gesamtsumme (also die Rechnungssumme) ungerade.
Zur Korrektur dieses Verhaltens kann die folgende Funktion Callback::invoice_addpos_final verwendet werden.
Nach der Berechnung aller relevanten Summen wie (Netto-/Brutto-Gesamtsumme, Umsatzsteuersumme, etc.)
rundet diese Funktion die benötigten Summen wie in der Schweiz üblich.
Tragen Sie den Code in die stdcart.ipl ein:
<!--spmacro::module(Callback)
sub invoice_addpos_final {
my $cp_sumto = shift; # Gesamt Brutto
my $cp_sumto_netto = shift; # Gesamt Netto
my $cp_taxto = shift; # Gesamt UST
my $ust = shift; # noref # UST-ID
my $netto = shift; # noref # Preis in netto (1=ja/0=nein)
my $versandbetrag = shift; # Versandkosten
my $minderbetrag = shift; # Mindermengenzuschlag
my $zahlkosten = shift; # Zahlartkosten
## Schweiz: Rappen runden auf 0 / 5
## Macht jedoch nur Sinn, wenn die Preise im Shop als Netto-Preise angegeben sind.
## In diesem Fall ist die Netto-Gesamtsumme schon "rund", die Brutto-Gesamtsumme
## jedoch wird automatisch berechnet, wodurch "unrunde" Summen entstehen.
if ($netto) {
$$cp_sumto = runden($$cp_sumto*20)/20;
$$cp_taxto = runden($$cp_taxto*20)/20;
}
}
## kaufm. runden
sub runden {
my $val = shift || 0;
my $r = ( $val < 0 ) ? -1 : 1;
$r *= 0.5;
return int($val + $r);
}
-->