Aufschlag für Zahlungsart wird falsch berechnet

Hallo Leutz, folgende Konstellation: Wir arbeiten mit Kundengruppen, die eine sieht die Preise brutto und die andere netto. Für die Zahlart Nachnahme wird üblicherweise eine Nachnahmegebühr berechnet. Diese haben wir unter Zahlarten Nachnahme als Länderspezifischen Aufschlag ala DE:6.84;AT:16.36;BE:16.36;DK:16.36 … eingegeben. Der Aufschlag wird als Warenkorbposition angezeigt. … und genau da liegt das Problem. In unserem Fall haben wir die Werte brutto eingegeben, das heisst wenn ein Kunde laut zugeordneter Kundengruppe Bruttopreise sieht, stimmt alles. Wenn aber der Kunde in der “Nettokundengruppe” ist, dann wird der Aufschlag als netto angesehen und die Steuer draufgehauen. Wenn wir die Aufschläge in netto definieren würden, dann würde es für die “Nettokunden” stimmen, für die anderen dann aber nicht. Was kann man da tun? Gruss René

Hallo ! Ich setze voraus, dass die Einstellungen bei den Kundengruppen richtig sind und die MwSt Sätze richtig definiert sind. Wenn das alles passt … Es könnte wie folgt gehen: Variante 1: Tabelle s_core_paymentmeans im phpmyadmin öffnen Die Tabelle ID 3 u[/u] links ein Häkchen setzen, auf „Bearbeiten“ klicken, folgende Felder editieren: ID, name, description, position und eventuell gleich surgeargestring dann als neuen Datensatz abspeichern (auswahl links unten) [color=red] aber VORSICHT mit neuer ID Nummer (eine die noch nicht vergeben ist zB 99 !!! Sonst Datenverlust !)[/color] Diese dann umbenennen in Nachnahme exkl Mwst und die Werte netto eintragen. Mittels Riskmanagment die BEIDEN Zahlungsarten dann jeweils für die nicht mögliche Gruppe ausschließen. (zb Kundengruppe IST oder IST NICHT, bzw gibt es da ja noch andere Kriterien…zB Land,Zone, Währung ) Bitte unbedingt vorher Datenbank sichern und nur angehen, wenn Erfahrung mit phpmyadmin ! Die Lösung ist nicht getestet, aber mit anderen Tabellen, habe ich das so schon gemacht. Eventuell Cache leeren , dann sollte im Backend die neue Zahlungsart ersichtlich sein. Variante 2 Über unterschiedliche Versandkosten, die als Zahlungsart-Aufschlag die Nachnahme haben. Das bedeutet aber, dass sämtliche Versandkosten doppelt, also 1x brutto, 1x netto vorhanden sein müssen… ich finde Variante 1 daher einfacher und schneller. Möglich, dass es noch eine weitere Variante gibt, da ich das Kundenmodul nicht habe, kann ich das leider nicht testen. lg klaus

1 Like

@klausm erstmal danke, für deine Ideen! Die müssten auch funktionieren. Ich habe aber noch eine andere Lösung gefunden… genau genommen, dadurch einen kleinen Fehler im System behoben. Die Aufschlagsberechnung passiert in der Klasse sAdmin in der Funktion sGetPremiumShippingcosts. Dort findet man: ... if (empty($this-\>sSYSTEM-\>sUSERGROUPDATA["tax"]) && !empty($this-\>sSYSTEM-\>sUSERGROUPDATA["id"])){ $surcharge\_net = $surcharge; } else { $surcharge\_net = round($surcharge/(100+$discount\_tax)\*100,2); } ... Diesen Bereich muss man durch eine Zeile erweitern, sodass es dann so aussieht: ... if (empty($this-\>sSYSTEM-\>sUSERGROUPDATA["tax"]) && !empty($this-\>sSYSTEM-\>sUSERGROUPDATA["id"])){ $surcharge = round($surcharge/(100+$discount\_tax)\*100,2); $surcharge\_net = $surcharge; } else { $surcharge\_net = round($surcharge/(100+$discount\_tax)\*100,2); } ... Das funktioniert aber nur richtig, wenn die pauschalen Zahlartaufschläge im Backend immer als Bruttowerte angegeben werden! Wenn die Zahlartaufschläge als netto eingegeben werden, müsste das so aussehen (ungetestet, sollte aber hinhauen): ... if (empty($this-\>sSYSTEM-\>sUSERGROUPDATA["tax"]) && !empty($this-\>sSYSTEM-\>sUSERGROUPDATA["id"])){ $surcharge\_net = $surcharge; } else { $surcharge = round($surcharge\*(100+$discount\_tax)/100,2); $surcharge\_net = round($surcharge/(100+$discount\_tax)\*100,2); } ... vielleicht kann das ja bei zukünftigen Updates behoben werden :wink: Hinweis! Nicht die originale Klasse verändern! Wie man Klassen und Funktionen “sauber” manipuliert, wurde hier im Forum schon oft erklärt und es gibt auch super Tutorials dazu. Gruss René