pwerginz Posted June 9, 2017 Share Posted June 9, 2017 Ich habe ein Problem und komme einfach nicht drauf. Im normalen Shop, also desktop version , werden mir die Versandkosten richtig angezeigt.In der mobile Ansicht habe ich bei der warenkorb zusammenfassung nur 7 € versand , also die niedrigsten versandkosten. Allerdings werden dann im bestellprozess bei versand wieder die richtigen versandkosten angezeigt. Als würde die mobile ansicht den warenkorb anders berechnen. Habe keine eigene mobile seite sondern responsive . Vielleicht kann mir da jemand weiterhelfen. Link to comment Share on other sites More sharing options...
Shad86 Posted June 9, 2017 Share Posted June 9, 2017 Klingt für mich (ohne Link und ohne Screenshot) so als wär es ein Anzeigefehler. Wenn am Ende trotzdem richtig berechnet wird scheint es mir so als wenn das Responsive den Checkout nicht richtig darstellt. Link to comment Share on other sites More sharing options...
pwerginz Posted June 9, 2017 Author Share Posted June 9, 2017 (edited) als würde bei der responsive Ansicht die Cart Regeln neu berechnet - hab nämlich die original cart.php so umgeschrieben, dass egal wieviel Produkte im Warenkorb LIEGEN er immer nur das schwerste paket / Produkt berechnet. Wird für die mobile bzw responsive Ansicht eine andere Datei als cart.php zum berechnen herbeigezogen? Edited June 9, 2017 by pwerginz (see edit history) Link to comment Share on other sites More sharing options...
Shad86 Posted June 9, 2017 Share Posted June 9, 2017 Welche Presta Version und Theme hast du denn? Also in der Regel wird beim Responsive die selbe Datei verwendet aber per CSS wird die Ansicht angepasst. Bei einer bestimmten Bildschirmbreite werden dann z.B. unwichtige Elemente ausgeblendet oder statt nebeneinander, untereinander gepackt. Link to comment Share on other sites More sharing options...
rictools Posted June 10, 2017 Share Posted June 10, 2017 An der tpl-Datei hast du nichts geändert? Alle Caches gelöscht? Erscheint der Anzeigefehler nur am Smartphone oder auch, wenn du am PC das Fenster stark verkleinerst? Kannst du keinen Link zur Verfügung stellen? Link to comment Share on other sites More sharing options...
pwerginz Posted June 10, 2017 Author Share Posted June 10, 2017 Ich glaube da pfuscht ein modul mitrein - hab bei mobile version ein eigenes menümodul mit warenkorb und suchoption - es scheint so als würde das modul nicht den wert der versandkosten übergeben sondern vorher nochmals neu berechnen. Hab dem entwickler geschrieben und warte noch auf antwort - melde mich dann Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 sooo das mit den versandkosten macht mich noch irre -Jetzt funzt das auf der desktop version auch nicht mehr seit heute ..wenn ich mich einlogge, dann werden mir alle Versandkosten richtig berechnet und dargestellt. Bin ich nicht eingeloggt , so zeigt er mir immer nur die niedrigsten Versandkosten ! (er sollte 149 € berechnen, zeigt aber nur 7,99 an) check nicht was das mit einloggen zu tun hat .... Link to comment Share on other sites More sharing options...
Shad86 Posted June 12, 2017 Share Posted June 12, 2017 Ist es irgendeine Warenkorbregel oder Katalogregel die nur auf bestimmte Kundengruppen greift? Was macht dein eigen Änderung denn genau? Und was passiert wenn du das erwähnte Modul deaktivierst? UND was hast du zu heute geändert? Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 also wie werden bei mir die versandkosten berechnet:Es wird nicht das gewicht von jeden artikel zusammengezählt , sondern der schwerste artikel wird ausgelesen und anhand dessen die versandkosten berechnet. Z.B Artikel A = 5kg / 7.99 € Artikel B = 100kg / 149€ nun ist das Gesamtgewicht nicht 105 kg sondern 100kg das komische ist , bin ich eingeloggt alles korreckt. Bin ich nicht eingeloggt , passt es nicht, allerdings nicht bei jedem Artikel . https://www.jan-trading.at/2-saeulen-hebebuehne-32t-mit-automatischer-entriegelung --> funzt nicht müssten 149 € versand sein ist aber 7.99€. https://www.jan-trading.at/1-saeulen-hebebuehne-25t-mit-automatischer-entriegelung --> Versandkosten korrekt 199€ komisch ist, dass egal welcher Artikel im Warenkorb ist , am ende des checkouts stimmen die Versandkosten immer . Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 achja nochwas - die geänderten Versandkosten werden in der cart.php berechnet ..... also wurde die cart.php umgeschrieben - allerdings funktionierte alles bis heute . Link to comment Share on other sites More sharing options...
Shad86 Posted June 12, 2017 Share Posted June 12, 2017 Aber sagtest du nicht das ein Modul eingriff in den Warenkorb hat? Spielt das jetzt evtl. "verrückt" weil du daran etwas geändert hast oder es mal deaktiviert und wieder aktiviert hast? Oder ist deine Änderung an einer falschen Stelle gemacht? Das die Änderung nur greift wenn jemand eingeloggt ist? Link to comment Share on other sites More sharing options...
Claudiocool Posted June 12, 2017 Share Posted June 12, 2017 Geh mal bitte bei deinen Versanddiensten auf die Enistellung der Gruppenverfügbarkeit, ich vermute mal, dass da der Hund begraben ist. Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 ok gruppenverfügbarkeit ist ein haken bei jeder gruppe , dass passt glaub ich. Das vermutete modul ist nicht die fehlerquelle habs deaktiviert aber leider gleich Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 Folgendes wurde in der cart.php verändert .... Original Code: 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 SUM((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 SUM(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]; } Veränderter Code: 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'])) { if ($total_weight <= $product['weight']){ $total_weight = $product['weight'];}else{ $total_weight = $total_weight;} } else { if ($total_weight <= $product['weight_attribute']){ $total_weight = $product['weight_attribute'];} else{$total_weight = $total_weight;} } }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`) 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`) 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]; } Link to comment Share on other sites More sharing options...
Claudiocool Posted June 12, 2017 Share Posted June 12, 2017 Was du schreibst, sagt mir, dass der Gast/Besucher keine korrekten Versandkosten gezeigt bekommt, also muss auch da der Hase im Pfeffer liegen. Wenn es im Checkout stimmt, ist der User ja eingeloggt, also wird da irgendwas verbogen. Da der presta (hast du nun eigentlich irgendwo die Version erwähnt?) an ein paar Ecken eingestellt werden muss, um korrekte Versandkosten zu zeigen (eigene leidvolle Erfahrung), würde ich erstmal da alles checken, bevor ich an den Code ranginge. Eventuell wird der Gast gar nicht als "Österreicher" angesehen..... Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 wirklich eigenartig - wenn ich eingeloggt bin, passt alles und funktioniert wie es sollte !!! Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 ok ich glaube ich weiss wo der Hund begraben liegt. Und zwar passen alle Produkte bei denen ein Attribute bzw. variante hinterlegt ist. alle anderen sind Versandkosten 7,99 also die geringsten. ich glaube ich habe die ersten zeilen flasch umprogrammiert. Original: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; } Verändert: 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'])) { if ($total_weight <= $product['weight']){ $total_weight = $product['weight'];}else{ $total_weight = $total_weight;} } else { if ($total_weight <= $product['weight_attribute']){ $total_weight = $product['weight'];} else{$total_weight = $total_weight;} } }return $total_weight; Bin leider kein PHP Profi deshalb kann ich nicht sagen ob ich das richtig umgeschrieben habe! nochmal zur Erklärung: Egal wieviel Produkte im Warenkorb sind und auch egal wieviel die Quantität der einzelnen Artikel sind - es soll nur der schwerste Artikel gefiltert werden und anhand desse die Versandkosten berechnet werden. Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 @Claudiocool --> Prestahsop 1.6.7 --> hatte ich auch vermutet , allerdings wie gesagt bei den Produkten wo ich varianten dabei habe funktioniert es komischer weise ganz normal auch wenn ich nicht eingeloggt bin ..... deshalb meine Vermutung , dass ich die Berechnung falsch gemacht habe. da in der if schleife ja auch mit den Produkt Attribute Gewicht berechnet wird. Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 hab jetzt nochmals alles durchgetestet: Bei Produkten mit Varianten werden die Versandkosten richtig berechnet auch wenn man nicht eingeloggt ist. Bei allen anderen Produkten, sprich wo keine varianten vorhanden sind, werden die geringsten Versandkosten angezeigt ausser ich log mich ein , dann stimmen die Versandkosten wieder . VERY STRANGE .... keine Ahnung wo und wie ich da noch nachschaun soll Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 ok es liegt an der Berechnung - Hab jetzt den originalcode drüberkopiert und nun zeigt er wieder korreckt an !Kann mir jemand den Code so umschreiben, dass oben erklärte Versandberechnung stattfindet?Originalcode: 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 SUM((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 SUM(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]; } Link to comment Share on other sites More sharing options...
Claudiocool Posted June 12, 2017 Share Posted June 12, 2017 Ich verstehe hier nicht ganz, warum man dazu in den Code reinmuss.... Link to comment Share on other sites More sharing options...
pwerginz Posted June 12, 2017 Author Share Posted June 12, 2017 Ja wenn es eine möglichkeit gibt die versandkosten so einzustellen , dass er nur den schwersten artikel für die versandkostenberechnung nimnt dann muss man nicht den code umschreiben - habe diesbezüglich aber nix gefunden . Link to comment Share on other sites More sharing options...
Claudiocool Posted June 12, 2017 Share Posted June 12, 2017 Warum machst du es dir so schwer? definiere die Gewichtsbereiche so, dass sich die nicht ins Gehege kommen und du musst da nix im Code umschreiben. Link to comment Share on other sites More sharing options...
pwerginz Posted June 13, 2017 Author Share Posted June 13, 2017 Verstehe wie du meinst - aber ich finde das keine saubere Lösung -Ich habe gestern noch etwas probiert und siehe da es funktioniert wieder .... Ich hab das jetzt einfacher umgeschrieben und alles läuft wieder einwandfrei und korrekt . public function getTotalWeight($products = null) { if (!is_null($products)) { $total_weight = 0; foreach ($products as $product) { if ($total_weight <= $product['weight']){ $total_weight = $product['weight'];}else{ $total_weight = $total_weight;} }return $total_weight; } if (!isset(self::$_totalWeight[$this->id])) { if (Combination::isFeatureActive()) { $weight_product_with_attribute = Db::getInstance()->getValue(' SELECT MAX(p.`weight`) 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`) 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]; } Warum dies abhängig vom einloggen war kann ich nicht nachvollziehen ..... 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