Warenkorb neue Preiskalkulation ermitteln

OmKFJ

Aktives Mitglied
2. August 2016
18
0
Hallo,

ich arbeite momentan an eine Anpassung eines Plugin für JTL- Shop 4. Mit diesen Plugin lässt sich eine vom User eingegebene Länge berechnen. Die Länge wird in einem Pflicht-Freifeld als Variation eingegeben. Dieser wird dementsprechend mit Funktionsattributen im Wawi gesteuert.

Durch meine Erweiterung, lassen sich nun auch Staffelpreise mit einkalkulieren. Hier ein Beispiel:

Staffel:
  1. ab 10m = 10,- € pro m
  2. ab 20m = 9,- € pro m
  3. ab 30m = 8,- € pro m
  4. ab 40m = 7,- € pro m
  5. ab 50m = 6,- € pro m
Grundpreis: 12,- € pro m

Dazu habe ich die Kalkulation so programmiert, dass der Preis der Staffel nicht nur vom Eintrag der Länge Pflicht-Freifeld abhängig ist, sondern auch nach Anzahl der Artikel. Hier noch ein Beispiel:

Kunde gibt ein: 5 m
Danach wählt er die Artikelanzahl aus: 3 Stück
somit ist der neue Preis (3*5=15 also 1.Staffel) 10,- € pro m

Ich habe es soweit geschafft es in der TPL zu realisieren, sodass der neue Preis sich nach jede Eingabe oder Anzahlveränderung im <div class="price_wrapper"> steht.

Das Problem ist, wenn man den Artikel im Warenkorb einlegt, wird immernoch der Standardpreis (12,- € pro m) eingerechnet. Daher meine Frage, wie lässt sich die Warenkorb kalkulation ermitteln, sodass ich mit den neuen Staffelpreis rechnen kann.

EDIT:

Um die Frage verständlicher zu machen, wie definiere ich in der PHP Dateien einen neuen Grundpreis, damit dieser neu berechnet wird. Laut Recherche kann man das mittels einen HOOK realisieren?

HOOK_TOOLSGLOBAL_INC_PREISSTRINGLOCALIZED

Es reicht mir auch schon eine Ansatz Vorgehensweise, mit der ich anfangen kann.

EDIT:

in der /classes/class.JTL-Shop.Preise.php Datei Zeile 315:

  • $this->fVKNetto = (float) $price->fVKNetto;

möchte ich da zb anstatt (float) $price->fVKNetto den ersten Staffelpreis nehmen, nämlich:

  • $kArtikel->Preise->fPreis1;

da aber in Zeile von 299 bis 305 die Variable $prices nur für die Tabellen tpreis und tpreisdetail zuständig ist, gibt es kein fPreis1. Dieser ist in der Tabelle tpreise enthalten. Wie sieht den die Shop :: DB()->query Abfrage aus, sodass ich auf fPreis1 zugreifen kann?

EDIT:

durch das debuggen der Variable $prices habe ich folgendes bekommen:

array(6) {
[0]=>
object(stdClass)#183 (7) {
["kPreis"]=>
string(4) "8320"
["kArtikel"]=>
string(4) "1904"
["kKundengruppe"]=>
string(1) "1"
["kKunde"]=>
NULL
["kPreisDetail"]=>
string(4) "9111"
["nAnzahlAb"]=>
string(1) "0"
["fVKNetto"]=>
string(4) "0.25"
}
[1]=>
object(stdClass)#184 (7) {
["kPreis"]=>
string(4) "8320"
["kArtikel"]=>
string(4) "1904"
["kKundengruppe"]=>
string(1) "1"
["kKunde"]=>
NULL
["kPreisDetail"]=>
string(4) "9106"
["nAnzahlAb"]=>
string(2) "10"
["fVKNetto"]=>
string(5) "0.225"
}
[2]=>
object(stdClass)#185 (7) {
["kPreis"]=>
string(4) "8320"
["kArtikel"]=>
string(4) "1904"
["kKundengruppe"]=>
string(1) "1"
["kKunde"]=>
NULL
["kPreisDetail"]=>
string(4) "9107"
["nAnzahlAb"]=>
string(2) "20"
["fVKNetto"]=>
string(3) "0.2"
}
[3]=>
object(stdClass)#186 (7) {
["kPreis"]=>
string(4) "8320"
["kArtikel"]=>
string(4) "1904"
["kKundengruppe"]=>
string(1) "1"
["kKunde"]=>
NULL
["kPreisDetail"]=>
string(4) "9108"
["nAnzahlAb"]=>
string(2) "30"
["fVKNetto"]=>
string(5) "0.175"
}
[4]=>
object(stdClass)#187 (7) {
["kPreis"]=>
string(4) "8320"
["kArtikel"]=>
string(4) "1904"
["kKundengruppe"]=>
string(1) "1"
["kKunde"]=>
NULL
["kPreisDetail"]=>
string(4) "9109"
["nAnzahlAb"]=>
string(2) "40"
["fVKNetto"]=>
string(4) "0.15"
}
[5]=>
object(stdClass)#188 (7) {
["kPreis"]=>
string(4) "8320"
["kArtikel"]=>
string(4) "1904"
["kKundengruppe"]=>
string(1) "1"
["kKunde"]=>
NULL
["kPreisDetail"]=>
string(4) "9110"
["nAnzahlAb"]=>
string(2) "50"
["fVKNetto"]=>
string(5) "0.125"
}
}

nun möchte ich wissen, wie ich z.B. auf dem zweiten Index des Arrays zum fVKNetto (["fVKNetto"]=>string(5) "0.225" komme:

beispiel: $this->fVKNetto = (float) $price[1]->fVKNetto; // funktioniert aber nicht

EDIT:

Danke für die große Unterstützung! Problem gelöst. Close request
pic1.PNG pic2.PNG
 
Zuletzt bearbeitet:

werk26

Aktives Mitglied
4. Mai 2017
14
0
Hallo,

wir benötigen nahezu das gleiche - zusätzlich LängexBreite - daher würde mich im Detail interessieren, wie Du das final umgesetzt hast.

Würde mich über eine Antwort freuen!

Gruß Andi
 

Über uns

  • In unserem moderierten JTL-Forum könnt Ihr Euch themenbezogen mit der JTL-Community rund um die Produkte von JTL, passende Erweiterungen und den E-Commerce im Allgemeinen austauschen, Tipps und Tricks teilen sowie Verbesserungswünsche und Fehler diskutieren.

    Unsere Forumsnutzer helfen sich untereinander auch gerne weiter, wenn Sie mal nicht weiterkommen oder einen Ratschlag benötigen.

Schnell-Navigation

Benutzer Menü