Denn es ist ein Gott und ein Mittler zwischen Gott und den Menschen, nämlich der Mensch Christus Jesus, der sich selbst gegeben hat für alle zur Erlösung, daß solches zu seiner Zeit gepredigt würde;
1 Timotheus 2:5-6
autor | |
28-11-13 07:29:08 | Rabatt und Preisberechnung |
Marc Müller |
Hallo, eine Usergruppe bekommt 5% Rabatt auf den Preis. Der Preis wird auch angepasst und richtig im zb. Warenkorb angezeigt. Liegt allerdings mehr als ein Artikel im Warenkorb teil sich der Preis durch die Anzahl der Artikel. Im Script lib/class.tx_ttproducts_discountprice.php ist $bNeedsDivision wahr und wird ausgeführt. Wie kann ich das verhindern? Ein Auskommentieren von $bNeedsDivision = TRUE; klappt natürlich. Hat aber vielleicht Nebenwirkungen? Hier noch das TS-Setup: [usergroup = 60] plugin.tt_products.getDiscountPrice = 1 plugin.tt_products.discountprice > plugin.tt_products.discountprice { 10 { type = price sql.where = prod.type = percent prod.1 = 5 } } [global] |
28-11-13 15:27:56 | Typ value |
Franz Holzinger |
Falls die Division nicht durchgeführt werden soll, dann muss "type = value" gesetzt werden statt "type = price". |
29-11-13 08:13:37 | type value |
Marc Müller |
Mit type = value ändert sich der Preis nicht. Muss ich hier anders Konfigurieren? In der Docu wird es leider nichts erwähnt. Mit type = price versteh ich nicht warum bei mehreren Produkten sich der Preis / Anzahl Produkte teilt. Beispiel: Ein Produkt im Warenkorb: Produkt A: Preis 1000, 5% Rabatt = 950 Bei 2 Produkten: Produkt A: Preis 1000, 5% Rabatt = 950 mit $bNeedsDivision 475 Produkt B: Preis 100, 5% Rabatt = 95 mit $bNeedsDivision 47,5 Der Preis im Warenkorb wird also mit 475 und 47,5 ausgewiesen. Richtig wäre aber 950 und 95? |
29-11-13 16:12:21 | Test |
Franz Holzinger |
Typ value ist für speziellere Berechnungen gedacht. Es ist nicht gut ausgetestet. Deshalb habe ich es nicht beschrieben. Ich habe nun das ursprüngliche Setup discountprice unter tt_products 2.10.0 ausgetestet. Ich kann keinen Fehler feststellen. Ein Produkt für 1000 Euro liegt zweimal im Warenkorb. Es werden diese Einzel- und Summenpreise angezeigt. Es werden korrekt die 5% Rabatt abgezogen. 950 (netto: 798,32) 1900 (netto: 1596,64) |
29-11-13 16:26:39 | Version |
Marc Müller |
ist mit der aktuellen 2.10 Version. Ich werde das $bNeedsDivision im Script auf false setzen. Damit funtioniert es ja wie gewünscht. Hoffentlich ohne Nebenwirkungen an anderer Stelle... |
29-11-13 18:19:52 | Fehler |
Franz Holzinger |
Diese Korrektur würde zu einem Fehler führen, zumindest bei meinen Testdaten. Es wäre besser, die genaue Ursache der fehlerhaften Berechnung herauszufinden. Diese Division ist notwendig, weil die Werte vorher aufaddiert worden sind. |
4-12-13 09:31:17 | debug ausgabe |
Marc Müller |
Hallo, ist ein nötiger Parameter vielleicht nicht gesetzt? Bei mir ist in der $bNeedsDivision Bedingung $price = $prodValue / $priceItemsCount; der $priceItemCount ist 2 (2 verschiedene Artikel, jeweils 6 Teile davon liegen im Warenkorb) $prodValue entspricht dem richtig um den Prozentsatz reduzierten (Einzel-)Preis. hier die Debugausgabe der class.tx_ttproducts_discountprice.php: handlePriceItems ANFANG $discountArray EMPTY! handlePriceItems $bNeedsDivision |1| handlePriceItems $priceItems 0 sort 7500W item 0 price 6.175 1 sort 7009 item 0 price 8.55 handlePriceItems $priceItemsCount |2| handlePriceItems $priceItem sort 7500W item 0 price 6.175 handlePriceItems $price divided |3.0875| handlePriceItems neuer Preis ersetzt $itemArray[7500W][0][calc] |3.0875| handlePriceItems $priceReduction[727] |1| handlePriceItems $priceItem sort 7009 item 0 price 8.55 handlePriceItems $price divided |4.275| handlePriceItems neuer Preis ersetzt $itemArray[7009][0][calc] |4.275| handlePriceItems $priceReduction[715] |1| handlePriceItems ENDE $discountArray 727 3.0875 715 4.275 nach handlePriceItems $discountArray 727 3.0875 715 4.275 |
4-12-13 15:12:23 | Produktbeschreibung fehlt |
Franz Holzinger |
Ohne genauere Produktbeschreibung mit Preisangabe kann ich diese Debug Information nicht auswerten. Ich weiß ja nicht, an welcher Stelle im Programm Code der Fehler auftritt, der auf meiner Testumgebung aber nicht auftritt. Außerdem bräuchte ich die Debug Zeilen vor dem Aufruf von handlePriceItems. |
4-12-13 18:03:28 | Preise |
Marc Müller |
Danke für die Mühe! (Das obige debug waren andere Artikel) Artikelnummer: 7004: 9,50 Artikelnummer: 6002: 4,25 $priceCalcTemp inner foreach type price sql. where prod. type percent 1 5 additive 0 $calctype |price| $prodConf price type percent 1 5 $prodConf $prodType Pos 2 |percent| $prodConf $prodValue Pos 1 |5| $prodConf $newPriceItems[12345.] 0 sort 7004 item 0 price 9.025 1 sort 6002 item 0 price 4.0375 $countedItems EMPTY! mm $additive |0| $calctype no additive |price| handlePriceItems ANFANG $discountArray EMPTY! handlePriceItems $bNeedsDivision |1| handlePriceItems $priceItems 0 sort 7004 item 0 price 9.025 1 sort 6002 item 0 price 4.0375 handlePriceItems $priceItemsCount |2| handlePriceItems $priceItem sort 7004 item 0 price 9.025 handlePriceItems $priceItem $k2 item mm |0| $bNeedsDivision $priceItemsCount |2| $bNeedsDivision $prodValue |9.025| $bNeedsDivision $price |4.5125| handlePriceItems $price divided |4.5125| handlePriceItems neuer Preis ersetzt $itemArray[7004][0][calc] |4.5125| handlePriceItems $priceReduction[120] |1| handlePriceItems $priceItem sort 6002 item 0 price 4.0375 handlePriceItems $priceItem $k2 item mm |0| $bNeedsDivision $priceItemsCount |2| $bNeedsDivision $prodValue |4.0375| $bNeedsDivision $price |2.01875| handlePriceItems $price divided |2.01875| handlePriceItems neuer Preis ersetzt $itemArray[6002][0][calc] |2.01875| handlePriceItems $priceReduction[86] |1| handlePriceItems ENDE $discountArray 120 4.5125 86 2.01875 nach handlePriceItems $discountArray 120 4.5125 86 2.01875 |
4-12-13 19:22:24 | Korrektur |
Franz Holzinger |
Scheinbar kommt es durch eine andere Programm Änderung hier zu einem Fehler. Mit dieser Korrektur sollte es funktionieren. Datei class.tx_ttproducts_discountprice.php: case 'value': case 'price': if (isset($newPriceItems[$k1]) && is_array($newPriceItems[$k1])) { $bNeedsDivision = FALSE; // if ($calctype != 'value') { // $bNeedsDivision = TRUE; // } $this->handlePriceItems( $newPriceItems[$k1], $itemArray, $priceReduction, $discountArray, $type, $bNeedsDivision ); } break; |
< Zurück zum Forum |