masterriemi1702 Posted August 20 Share Posted August 20 Hallo zusammen. Ich habe in meinem 8.1.6 2 Kategorien von Artikeln, für die ich auch jeweils einen gewichtsbasierenden Versanddienst erstellt habe. Was auch erst einmal klappt, solange ich nicht Artikel aus dem einen und anderem Versanddienst im Warenkorb kombiniere. Da gibt er mir dann nicht das aus, was er soll: Er soll beim vorhandensein von Artikeln aus beiden Versanddiensten entweder einen von mir dritten Versanddienst nutzen, oder die Versandkosten eines bereits bestehenden Versanddienstses (in meinem Fall A). Ich habe auch schon das Addon Advanced Shipping Costs Plus probiert, aber damit kann man das wohl auch nicht umsetzen. Zudem habe ich ausprobiert mittels Cart.php in /ovverride/classes diesen Code hier ans laufen zu bekommen: <?php class Cart extends CartCore { public function getShippingMethods() { $products = $this->getProducts(); $hasDPDShipping = false; $hasDPDMicrofiberShipping = false; $totalWeight = $this->getTotalWeight(); // Gesamtgewicht in Gramm foreach ($products as $product) { if ($product['id_shipping_method'] == 15) { // DPD Versand $hasDPDShipping = true; } if ($product['id_shipping_method'] == 19) { // DPD Versand Microfaser $hasDPDMicrofiberShipping = true; } } if ($hasDPDShipping && $hasDPDMicrofiberShipping) { if ($totalWeight <= 30000) { // Bis 30 kg (30.000 g) return $this->getShippingByCarrier(15, 5); // 5 Euro für DPD Versand } elseif ($totalWeight <= 110000) { // Bis 110 kg (110.000 g) return $this->getShippingByCarrier(15, 9); // 9 Euro für DPD Versand } elseif ($totalWeight >= 120000) { // Ab 120 kg (120.000 g) return $this->getShippingByCarrier(0); // Kostenloser Versand (ID 0) } } elseif ($hasDPDShipping) { if ($totalWeight <= 30000) { // Bis 30 kg (30.000 g) return $this->getShippingByCarrier(15, 5); // 5 Euro für DPD Versand } elseif ($totalWeight <= 110000) { // Bis 110 kg (110.000 g) return $this->getShippingByCarrier(15, 9); // 9 Euro für DPD Versand } elseif ($totalWeight >= 120000) { // Ab 120 kg (120.000 g) return $this->getShippingByCarrier(0); // Kostenloser Versand (ID 0) } } elseif ($hasDPDMicrofiberShipping) { if ($totalWeight <= 30000) { // Bis 30 kg (30.000 g) return $this->getShippingByCarrier(19, 5); // 5 Euro für DPD Versand Microfaser } elseif ($totalWeight <= 110000) { // Bis 110 kg (110.000 g) return $this->getShippingByCarrier(19, 9); // 9 Euro für DPD Versand Microfaser } elseif ($totalWeight >= 120000) { // Ab 120 kg (120.000 g) return $this->getShippingByCarrier(0); // Kostenloser Versand (ID 0) } } return parent::getShippingMethods(); } private function getShippingByCarrier($carrierId, $price = 0) { return array( 'id_carrier' => $carrierId, 'price' => $price ); } } Kann mir jemand helfen mit einer Lösung? Liebe Grüße Link to comment Share on other sites More sharing options...
rictools Posted August 20 Share Posted August 20 Das ganze ist extrem verwirrend, was bezweckst du eigentlich mit so einer Konstruktion? Im Code fällt mir auf, kann man wirklich mit DPD 110 kg-Pakete versenden (oder sogar noch schwerere), und das für ein paar Euro? Was ist mit Paketen zwischen 110 und 120 kg, die lässt du aus? Kostenloser Versand ab 120 kg Gewicht (d. h. nicht nach Preis), sehr ungewöhnlich und für Kunden schlecht nachvollziehbar. 5 verschiedene Versanddienste? Und dann doch immer die gleichen gestaffelten Versandkosten, wozu das? Warum nicht einfach ein einziger Versanddienst mit verschiedenen Versandpreisen je nach Gewicht? Der Kunde kann bei dir ja offenbar noch nicht einmal wählen ... Link to comment Share on other sites More sharing options...
Mehdi Bourechka Posted August 20 Share Posted August 20 9 hours ago, masterriemi1702 said: Hallo zusammen. Ich habe in meinem 8.1.6 2 Kategorien von Artikeln, für die ich auch jeweils einen gewichtsbasierenden Versanddienst erstellt habe. Was auch erst einmal klappt, solange ich nicht Artikel aus dem einen und anderem Versanddienst im Warenkorb kombiniere. Da gibt er mir dann nicht das aus, was er soll: Er soll beim vorhandensein von Artikeln aus beiden Versanddiensten entweder einen von mir dritten Versanddienst nutzen, oder die Versandkosten eines bereits bestehenden Versanddienstses (in meinem Fall A). Ich habe auch schon das Addon Advanced Shipping Costs Plus probiert, aber damit kann man das wohl auch nicht umsetzen. Zudem habe ich ausprobiert mittels Cart.php in /ovverride/classes diesen Code hier ans laufen zu bekommen: <?php class Cart extends CartCore { public function getShippingMethods() { $products = $this->getProducts(); $hasDPDShipping = false; $hasDPDMicrofiberShipping = false; $totalWeight = $this->getTotalWeight(); // Gesamtgewicht in Gramm foreach ($products as $product) { if ($product['id_shipping_method'] == 15) { // DPD Versand $hasDPDShipping = true; } if ($product['id_shipping_method'] == 19) { // DPD Versand Microfaser $hasDPDMicrofiberShipping = true; } } if ($hasDPDShipping && $hasDPDMicrofiberShipping) { if ($totalWeight <= 30000) { // Bis 30 kg (30.000 g) return $this->getShippingByCarrier(15, 5); // 5 Euro für DPD Versand } elseif ($totalWeight <= 110000) { // Bis 110 kg (110.000 g) return $this->getShippingByCarrier(15, 9); // 9 Euro für DPD Versand } elseif ($totalWeight >= 120000) { // Ab 120 kg (120.000 g) return $this->getShippingByCarrier(0); // Kostenloser Versand (ID 0) } } elseif ($hasDPDShipping) { if ($totalWeight <= 30000) { // Bis 30 kg (30.000 g) return $this->getShippingByCarrier(15, 5); // 5 Euro für DPD Versand } elseif ($totalWeight <= 110000) { // Bis 110 kg (110.000 g) return $this->getShippingByCarrier(15, 9); // 9 Euro für DPD Versand } elseif ($totalWeight >= 120000) { // Ab 120 kg (120.000 g) return $this->getShippingByCarrier(0); // Kostenloser Versand (ID 0) } } elseif ($hasDPDMicrofiberShipping) { if ($totalWeight <= 30000) { // Bis 30 kg (30.000 g) return $this->getShippingByCarrier(19, 5); // 5 Euro für DPD Versand Microfaser } elseif ($totalWeight <= 110000) { // Bis 110 kg (110.000 g) return $this->getShippingByCarrier(19, 9); // 9 Euro für DPD Versand Microfaser } elseif ($totalWeight >= 120000) { // Ab 120 kg (120.000 g) return $this->getShippingByCarrier(0); // Kostenloser Versand (ID 0) } } return parent::getShippingMethods(); } private function getShippingByCarrier($carrierId, $price = 0) { return array( 'id_carrier' => $carrierId, 'price' => $price ); } } Kann mir jemand helfen mit einer Lösung? Liebe Grüße Frage neu formuliert Wie kann man Versanddienste so einstellen, dass Artikel aus zwei unterschiedlichen Kategorien automatisch die jeweils passenden Versandarten nutzen? Antwort PrestaShop weist Versandarten nicht direkt pro Kategorie zu, sondern über Versandzonen, Gewicht, Preisregeln oder Einschränkungen pro Produkt/Carrier. Das heißt, wenn zwei Kategorien unterschiedliche Versanddienste brauchen, gibt es mehrere saubere Wege: Über Carrier-Einschränkungen pro Produkt Geh in die Produkteinstellungen, Tab „Versand“, und deaktiviere dort die Carrier, die für dieses Produkt nicht erlaubt sind. So steuerst du es unabhängig von der Kategorie. Über Versandregeln Definiere zwei Carrier, jeweils mit eigenen Bedingungen (z. B. Zone, Gewicht, Preis). Weise dann in den betroffenen Produkten die passenden Carrier zu. Testmodus Um Fehler auszuschließen, aktiviere vorübergehend ein Standard-Theme und deaktiviere alle nicht notwendigen Module. So stellst du sicher, dass keine Drittanbieter-Erweiterung die Carrier-Logik blockiert. Zusatz-Tipp Wenn du viele Produkte pro Kategorie hast, lohnt sich ein kleines Modul oder SQL-Skript, das die Carrier-Zuweisung massenhaft vornimmt. Das spart enorm Zeit und ist stabiler als jede manuelle Pflege. Link to comment Share on other sites More sharing options...
masterriemi1702 Posted August 29 Author Share Posted August 29 Hallo und entschuldigung für die späte Rückmeldung. Danke für die Hinweise. Mit den oben genannten Erläuterrungen kann ich meine Wünsche so wie ich das sehe, nicht abbilden: - Ich habe Versandpreise auf Grund von Gewichten - Ich hab 2 Gruppen von Produkten, wo die Versandkosten auf Grund des Gewichtes anders berechnet werden - Momentan funktioniert alles super, solange ich nicht Artikel aus BEIDEN Gruppen GLEICHZEITIG in den Warenkorb lege - Der Shop soll dies tun, wenn BEIDE GRUPPEN im Warenkorb legen: Entweder eine 3 Versandart nehmen, welche auf Grund des Gewichtest berechnet wird, oder ich kann sagen: Wenn beide Gruppen im Warenkorb liegen und du dir nicht sicher bist, nimm die Preisstaffelung der Versandkosten aus Gruppe A. Link to comment Share on other sites More sharing options...
rictools Posted August 29 Share Posted August 29 Auf die Fragen in meinem Post gehst du überhaupt nicht ein ... Welchen Versanddiensten hast du denn die Produkte zugeordnet? Sind es zwei oder insgesamt drei unterschiedliche "Gruppen"? Jedenfalls sollte es funktionieren, wenn du alle Gruppen Versanddienst 1 zuordnest, Gruppe B Versanddienst 1 und 2 und ggf. Gruppe C Versanddienst 1, 2 und 3. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now