pwerginz Posted November 28, 2016 Share Posted November 28, 2016 Habe alles durchsucht , aber leider keine Lösung gefunden. In meinem Shop soll, egal wieviel Artikel im Warenkorb sind, immer nur das Größte Gewicht ausgewählt werden. Standard mäßig addiert Prestashop das Gewicht aller Artikel zu einem Gesamtgewicht und wählt dann die Versandkosten aus.Vielleicht weiss jemand eine Lösung ! Prestahop 1.6.1.7 Link to comment Share on other sites More sharing options...
pwerginz Posted November 28, 2016 Author Share Posted November 28, 2016 Niemand eine Idee !!!???!!! Link to comment Share on other sites More sharing options...
rictools Posted November 28, 2016 Share Posted November 28, 2016 Niemand eine Idee !!!???!!! Na, ich denke das ist sehr ungewöhnlich und logisch nicht wirklich nachvollziehbar und ob da schon mal vor dir jemand auf diese Idee gekommen ist ... Link to comment Share on other sites More sharing options...
Claudiocool Posted November 28, 2016 Share Posted November 28, 2016 Was soll damit bezweckt werden? Was, wenn das schwerste Produkt (sagen wir mal 2kg) und weitere 120 Artikel zu je 1,95kg drinliegen? Link to comment Share on other sites More sharing options...
pwerginz Posted November 29, 2016 Author Share Posted November 29, 2016 Bei uns läuft das so ab , egal wieviel Artikel ein Kunde kauft , er zahlt nur einmal Versand - also jene Versandkategorie für das schwerste Produkt ( Jede Bestellung wird von einem Versdandunternehmen geliefert, wobei es egal ist ob 200kg oder 300 kg ect ...) Link to comment Share on other sites More sharing options...
pwerginz Posted November 29, 2016 Author Share Posted November 29, 2016 Kann mir zumindest jemand sagen, in welcher Datei das Gewicht berechnet wird ? Vielleicht kann man da ein Override machen ... Link to comment Share on other sites More sharing options...
rictools Posted November 29, 2016 Share Posted November 29, 2016 Die Versandkostenberechnung findet sich in classes/Cart.php Link to comment Share on other sites More sharing options...
pwerginz Posted November 29, 2016 Author Share Posted November 29, 2016 Vielen Dank !werde das heute mal probieren und poste dann das Ergebnis ... Link to comment Share on other sites More sharing options...
pwerginz Posted November 29, 2016 Author Share Posted November 29, 2016 So hab jetzt folgende Änderungen in der Classes/Cart.php vorgenommen:Um nicht alle Produktgewichte zusammenzuzählen , sondern nur das Höchste auszuwählen ersetzt man einfach die Datenbankabfrage SELECT SUM in SELECT MAX auf Codezeile 3050 ! public function getTotalWeight($products = null) { if (!is_null($products)) { $total_weight = 0; foreach ($products as $product) { if (!isset($product['weight_attribute']) || is_null($product['weight_attribute'])) { $total_weight = $product['weight'] * $product['cart_quantity']; } else { $total_weight = $product['weight_attribute'] * $product['cart_quantity']; } } return $total_weight; } if (!isset(self::$_totalWeight[$this->id])) { if (Combination::isFeatureActive()) { $weight_product_with_attribute = Db::getInstance()->getValue(' SELECT MAX((p.`weight` + pa.`weight`) * cp.`quantity`) as nb FROM `'._DB_PREFIX_.'cart_product` cp LEFT JOIN `'._DB_PREFIX_.'product` p ON (cp.`id_product` = p.`id_product`) LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (cp.`id_product_attribute` = pa.`id_product_attribute`) WHERE (cp.`id_product_attribute` IS NOT NULL AND cp.`id_product_attribute` != 0) AND cp.`id_cart` = '.(int)$this->id); } else { $weight_product_with_attribute = 0; } $weight_product_without_attribute = Db::getInstance()->getValue(' SELECT MAX(p.`weight` * cp.`quantity`) as nb FROM `'._DB_PREFIX_.'cart_product` cp LEFT JOIN `'._DB_PREFIX_.'product` p ON (cp.`id_product` = p.`id_product`) WHERE (cp.`id_product_attribute` IS NULL OR cp.`id_product_attribute` = 0) AND cp.`id_cart` = '.(int)$this->id); self::$_totalWeight[$this->id] = round((float)$weight_product_with_attribute + (float)$weight_product_without_attribute, 6); } return self::$_totalWeight[$this->id]; } Was allerdings nicht funktioniert, dass er auch bei größerer Stückzahl eines Produkts das Gewicht nicht addiert. Habe versucht die erste Spalte zu löschen ($total_weight = $product['weight_attribute'] * $product['cart_quantity'] aber funzt leider nicht . Irgendwo anders muss das Gewicht noch multipliziert werden, aber ich kanns nicht finden.Vielleicht hat ja jemand anderes eine Idee. Link to comment Share on other sites More sharing options...
pwerginz Posted November 29, 2016 Author Share Posted November 29, 2016 HAHAH Ich hab den Wald vor lauter Bäumen nicht mehr gesehen.Dies ist auch in der Datenbangabfrage zu realisieren. SELECT MAX((p.`weight` + pa.`weight`) * cp.`quantity`) as nb ändern in SELECT MAX(p.`weight` + pa.`weight`) as nb somit ist mein Problem gelöst .Danke an ALLE 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