Versandkosten-Berechnung mit komplexen Vorgaben

Hallo zusammen, ich mache jetzt schon mehr als zwei Tage mit dem Problem herum und komme zu keinem brauchbaren Ergebnis. Es geht um Versandkosten nach den vom Kunden vorgegebenen Kriterien. Folgende Situation: Es liegt eine Tabelle mit Versandgruppen vor. Jeder Artikel hat ein Freitextfeld-Attribut (attr4) mit einem Wert von 1-6. Je nach Inhalt des Freitextfeldes attr4 soll für den hinterlegten Wert eine Preisgruppe verwendet werden. Sind mehrere Artikel im Warenkorb, zählt der Preis der höchsten Versandgruppe. Eine Besonderheit bei der Versandgruppe 6 ist die zusätzliche Einteilung in Gewichtsgruppen. Dort soll je nach Gewicht die Versandkosten pro Artikel berechnet werden. Mein Ansatz war die Umsetzung über ein Plugin. Ich habe mich per Plugin in den Warenkorb eingehängt und die Werte der aufgelisteten Artikel ausgelesen. Soweit so gut. Mein Problem ist jetzt wie übergebe ich den ermittelten Preis an die Versandkosten Anzeige und die interne Versandkosten-Berechnung weiter? Dass diese auch im nächsten Schritt noch korrekt auf der Rechnung angezeigt wird? Ich habe es auch schon über das Versandkostenmodul versucht. Da stoße ich jedoch auf die Grenzen mit den verschachtelten Vorgaben. Oder gibt es noch einen ganz anderen Lösungsansatz den ich übersehen habe? Die Dokus im Wiki über Versandkosten-Berechnung haben mich auch nicht viel weiter gebracht. Ich bin über jeden Lösungsansatz dankbar. Grüße Stefan

[quote=„sw“]Mein Ansatz war die Umsetzung über ein Plugin. Ich habe mich per Plugin in den Warenkorb eingehängt und die Werte der aufgelisteten Artikel ausgelesen. Soweit so gut. Mein Problem ist jetzt wie übergebe ich den ermittelten Preis an die Versandkosten Anzeige und die interne Versandkosten-Berechnung weiter? Dass diese auch im nächsten Schritt noch korrekt auf der Rechnung angezeigt wird?[/quote] $this-\>subscribeEvent( 'sAdmin::sGetPremiumShippingcosts::after', 'onAdminSGetPremiumShippingcostsAfter' ); Damit solltest Du weiter kommen :slight_smile:

Habe vor kurzem sowas ähnliches gemacht. Dabei hab ich in meinem Plug-In die Nummern auf die Versandarten in Shopware gemappt (Für jede eine) und die Versandarten mit eigenen Bedingungen ausgestattet (Versandklasse = x) -> Somit kann der Kunde immer nur die jeweils gültigen Versandarten auswählen und man muss nicht so was seltsames machen wie Versandkosten umschreiben und dann das ganze System danach abklappern und alle Stellen ändern an denen etwas mit Versandkosten passiert. Dazu einfach die getDispatchBasket benutzen und z.B. sowas zur Ermittlung der höchsten Versandkosten $actSession = $\_SESSION['Shopware']['sessionId']; $sql\_highestCosts = "SELECT `id`,`articleID`,`userID` FROM `s_order_basket` WHERE `sessionID`=:actsess; $articles = Shopware()-\>Db()-\>fetchAll($sql\_highestCosts, array('actsess' =\> $actSession); foreach ($articles as $article) { $dispatchClass = $this-\>validateArticleDispatchClass($article['articleID']); $dispatchNames = $this-\>configToArray($this-\>Config()-\>shopwareDeliveryType); $dispatchName = $dispatchNames[$dispatchClass]; $sql\_dispatchId = "SELECT `id` FROM `s_premium_dispatch` WHERE `name`=:dispname"; $dispatchId = Shopware()-\>Db()-\>fetchOne($sql\_dispatchId, array(':dispname' =\> $dispatchName); $sql\_getCosts = "SELECT `value` FROM `s_premium_shippingcosts` WHERE `dispatchID`=:dispid"; $getCosts = Shopware()-\>Db()-\>fetchOne($sql\_getCosts, array(':dispid' =\> $dispatchId); ... if($actCost \> $highestCost) { $highestCost = $actCost; } if (is\_null($highestCost)) { $highestCost = 1; } } Nur ein Auszug aus meinem Code der so nicht funktionieren wird (ich mach noch paar Sachen mehr) - aber als Ansatz…