Preis Nachkommastellen

Hallo, ich möchte im Backend Preise mit 4 Nachkommastellen, also zum Beispiel 0,0512 eingeben können. Ist das realisierbar? Brauche das unbedingt. Danke im Voraus. Edit: Habe es gelöst. in /engine/backend/modules/articles/artikeln1.inc.php in Zeile 825 hinten die 2 durch eine 4 ersetzen: $priceregulary[$Tkey][$i] = round($priceArray["price"]\*(100+return\_tax($\_SHOPWARE["EDIT"]["taxID"]))/100,4); Damit im Warenkorb damit gerechnet wird /engine/core/class/sBasket.php in Zeile 1017: $getArticles[$key]["amount"] = $quantity \* round($price,4);

Habe doch noch ein Problem. Ich brauche die Stelle wo der Artikel den ich in den Warenkorb lege in die Datenbank in s_order_basket geschrieben wird. Da wird nämlich der Brutto Betrag nur mit 2 Nachkommastellen eingetragen und ich weiß nicht wo ich das ändern kann.

Niemand kann helfen?

Schau mal in die sBasket > sUpdateArticle - dort wird der Artikelpreis je Position im Warenkorb gesetzt!

Aber das liest ja den Preis aus s_order_basket aus. Genau dort ist der Preis ja aber nur mit 2 Nachkommastellen eingetragen. Es müsste also eigentlich so verändert werden dass wenn ich den Artikel in den Warenkorb lege der Preis aus s_articles_price genauso wie er ist in s_order_basket eingetragen wird, mit allen Nachkommastellen. Muss das dann nicht eher in sArticles sein?

Keine weiteren Vorschläge?

Keine weitere Hilfe?

Versuch es mal hier: $event = $this-\>createEvent( 'Shopware\_Modules\_Basket\_AddArticle\_Start', 'onBasket\_AddArticle\_Start' ); $this-\>subscribeEvent($event); An dieser Stelle wird die Tabelle s_order_basket gefüllt :wink: Betrifft die Prozedur sAddArticle aus der Datei core/sBasket.php

Habe eben gerade herausgefunden wenn ich in der sBasket.php in der Funktion sUpdateArticle $brutto = $this-\>sSYSTEM-\>sMODULES['sArticles']-\>sCalculatingPriceNum($netprice,$queryNewPrice["tax"],false,false,$queryNewPrice); einfach mal in $brutto = $netprice \* 1.19; ändere ist die Summe eines Artikels richtig, allerdings unten die Summe im Warenkorb nicht, die Gesamtsumme aber ist richtig. Und wie bekomme ich es hin dass im Warenkorb der Einzelpreis eines Artikels beispielsweise nicht 0,05 sondern 0,0534 ist?

[quote=“parkkralleshop”]Habe eben gerade herausgefunden wenn ich in der sBasket.php in der Funktion sUpdateArticle $brutto = $this-\>sSYSTEM-\>sMODULES['sArticles']-\>sCalculatingPriceNum($netprice,$queryNewPrice["tax"],false,false,$queryNewPrice); einfach mal in $brutto = $netprice \* 1.19; ändere ist die Summe eines Artikels richtig, allerdings unten die Summe im Warenkorb nicht, die Gesamtsumme aber ist richtig. Und wie bekomme ich es hin dass im Warenkorb der Einzelpreis eines Artikels beispielsweise nicht 0,05 sondern 0,0534 ist?[/quote] Hier wird der Warenkorb zum ersten mal gefüllt bzw. die Tabelle s_order_basket: Prozedur sAddArticle aus der Datei core/sBasket.php Entweder wird hier im Code dann auf 2 Stellen nach dem Komma gerundet, oder nicht jede Preisangabe in den Artikel-Tabellen hat 4 Stellen hinter dem Komma.

Danke erstmal. Noch ein Preis stimmt aber nicht ganz. Nämlich der in der Auftragsbestätigung die dem Kunden per Mail geschickt wird. Da ist der Einzelpreis mit 3 Nachkommastellen drin statt mit 4. Jemand einen Rat?

Altes Thema, alte Shopwareversion. Ich habe allerdings das gleiche Problem mit der 4.0.4. Nun hat sich ja die komplette Struktur verändert und mir fehlt der Ansatzpunkt. :-/

hier das gleich Problem… Kann jemand helfen?

Damit die Preise richtig gerechnet werden, müssen alle round()-Funktionen in engine/core/class/sBasket.php geändert werden von round($var,2); in round($var,4); in der public function sGetBasket() Ich hab außerdem zusätzlich eine Datei angelegt „engine/Library/Enlight/Template/Plugins/modifier.currencyLong.php“ (Kopie von engine/Library/Enlight/Template/Plugins/modifier.currency.php) Dort habe ich nach $currency = Enlight\_Application::Instance()-\>Currency(); den Wert $config['precision'] = 4; hinzugefügt. Die Methode heißt dann natürlich function smarty_modifier_currencyLong($value, $config = null, $position = null) Dann kann man den Modifier currentLong im Template an den stellen nutzen, wo man ihn benötigt. {$row.price|currencyLong} Wer grundsätzlich alle Preise ändern will, kann einfach gleich die engine/Library/Enlight/Template/Plugins/modifier.currency.php anpassen.

Hi, irgendwie ist es schon sehr traurig, dass man an diesen Dateien selbst rumwerkeln soll/muss und diese Fehler nicht von Shopware endlich mal bereinigt werden. Es werden so viele Sachen angepackt, neue Versionen, dauernd neue Updates, neue Projekte, aber das Wesentliche und Wichtige wird einfach nicht gemacht, obwohl das Problem seit der 3er Version schon besteht. :thumbdown: Eine richtige Berechnung ist das A und O einer Shopsoftware! Bitte Shopware packt dieses Thema endlich mal an und sorgt für eine richtige Berechnung.

Hallo zusammen, das Thema wird von uns angepackt. Es ist definitiv nicht vergessen! Um dieses Verhalten zu ändern müssen in Shopware weitreichende Änderungen vorgenommen werden. Dies ist nicht mit ein paar Zeilen Code korrekt zu bewerkstelligen. Die hier genannten Workarounds sind auch nur mit Vorsicht zu genießen. Sinnvoll ist es auf jeden Fall nach einer solchen Änderung einiges zu testen. Zum Beipsiel Kundengruppenpreise / Brutto / Netto / Rabatte / Preisgruppen etc. Von uns wird dies geändert, wenn die Refakturierung der Core Klassen durchgeführt wurde. Dann wird es an den Stellen komplett neue Berechnungen, bzw. dementsprechende Anpassungen geben. Grüße aus dem Münsterland Patrick Schücker

Hallo Patrick, schön, dass mal ein Statement von Euch dazu kommt und nicht vergessen ist. Nur haben wir mittlerweile 2014 und seit 2009 bin ich bei Euch bzw. habe ich die Software von Euch und während dieser Zeit hat sich nichts getan, obwohl alle das dauernd bemängelt haben und immer noch bemängeln. [quote=„Patrick Schücker“] Von uns wird dies geändert, wenn die Refakturierung der Core Klassen durchgeführt wurde. Dann wird es an den Stellen komplett neue Berechnungen, bzw. dementsprechende Anpassungen geben.[/quote] Ich hoffe doch, dass wir alle wenigsten in diesem Jahr mit einer Behebung dieses Problem rechnen können und nicht noch ein paar Jahre darauf warten müssen. Es ist wirklich mehr als wichtig.

[quote=“Patrick Schücker”]Hallo zusammen, das Thema wird von uns angepackt. Es ist definitiv nicht vergessen! Um dieses Verhalten zu ändern müssen in Shopware weitreichende Änderungen vorgenommen werden. Dies ist nicht mit ein paar Zeilen Code korrekt zu bewerkstelligen. Die hier genannten Workarounds sind auch nur mit Vorsicht zu genießen. Sinnvoll ist es auf jeden Fall nach einer solchen Änderung einiges zu testen. Zum Beipsiel Kundengruppenpreise / Brutto / Netto / Rabatte / Preisgruppen etc. Von uns wird dies geändert, wenn die Refakturierung der Core Klassen durchgeführt wurde. Dann wird es an den Stellen komplett neue Berechnungen, bzw. dementsprechende Anpassungen geben. Grüße aus dem Münsterland Patrick Schücker[/quote] Hallo Patrick, danke für deine Antwort nur ist das leider nicht einfach so leicht zu sagen. Meine Entwickler und ich waren schockiert, als wir für einen unseren Kunden genau diese Anpassungen machen mussten und es kann auch nicht sein, dass man als Agentur und Shopware Partner sich mit so einen unsauberen Code herumschlagen muss und mit Funktionen die 500 Zeilen lang sind. Warum gibt es keine zentrale Klasse in der für den gesamten Shop alle Rundungen und Preis Funktionen erledigt werden. Es ist immer doof andere Systeme zu vergleichen, es spricht aber nichts gegen abzuschauen wie das dort gelöst wurde: Beispiel OXID eShop: oxRegistry::getUtils()-\>fRound( $dVatValue ); Dh. ich brauche nur eine Funktion im gesamten Shop anzupassen und damit ist es für den gesamten Shop gültig, damit ist ein PlugIn in 10 Min. fertig und der Shop kann weiterhin aktualisiert werden, nicht wie bei der aktuellen rumgurkerei bei Shopware. Ich kann euch daher nur ans Herz legen hausintern die Refakturierung voranschreiten zu lassen, daher weiter so bitte.

Servus, Naja das mag ja evtl. Bei der Konkurrenz besser gelöst sein. Aber das genannte System hat dafür viele andere Schwächen. Iframes im backend, modulare Plugins kennen die nicht, Standard Frameworks sind ein Fremdwort etc. Soll heißen, dass jedes System so seine Stärken hat, aber sicher auch seine Schwächen. Edit: aber ich gebe dir recht, das ist nichts was uns Agenturen beschäftigen sollte, da es nunmal Core ist.

[quote=„Martin Weinmayr“]Servus, Naja das mag ja evtl. Bei der Konkurrenz besser gelöst sein. Aber das genannte System hat dafür viele andere Schwächen. Iframes im backend, modulare Plugins kennen die nicht, Standard Frameworks sind ein Fremdwort etc. Soll heißen, dass jedes System so seine Stärken hat, aber sicher auch seine Schwächen.[/quote] Hi Martin, darum geht’s doch gar nicht! Es soll kein System beworben werden, das hier beschriebene Problem und die Sauberkeit vom Code ist dort sicherlich mehr gegeben. Natürlich hat jedes System seine vor und Nachteile, nur dein Kommentar hilft hier sicherlich nicht weiter. Wir arbeiten mit beiden System und sehr gerne mit Shopware, sonst wäre ich auch keine Partnerschaft eingegangen. Im Endeffekt muss man immer das beste System für den Kunden finden und dabei seine eigene Präferenz hinten anstellen.

1 Like