600x250
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Warenkorb 2.0.0 - Korrektur Berechnung und Anzeige Paketgewichte

    profidrucker

    • Neu im Forum
    • Beiträge: 36
    Im Modul dpd wird die Anzahl der Pakete nicht berücksichtigt.
    Somit wurden aus meiner Sicht folgende Änderungen nötig in der Datei
    \includes\modules\shipping\dpd.php

    alt (Zeilen 118-119)
    Code: PHP  [Auswählen]
    $shipping = $dpd_table[$y];
    $shipping_dpd_method = MODULE_SHIPPING_DPD_TEXT_WAY . ' ' . $dest_country . " : " . $shipping_weight . ' ' . MODULE_SHIPPING_DPD_TEXT_UNITS;
    neu
    Code: PHP  [Auswählen]
    $shipping = $dpd_table[$y] * $shipping_num_boxes;
    $shipping_dpd_method = MODULE_SHIPPING_DPD_TEXT_WAY . ' ' . $dest_country . " : " . $shipping_num_boxes . ' x ' . number_format($shipping_weight,1) . ' ' . MODULE_SHIPPING_DPD_TEXT_UNITS;
    und alt (Zeile 149-153)
    Code: PHP  [Auswählen]
    $shipping_dpd_cost = (($shipping + MODULE_SHIPPING_DPD_HANDLING)-$dpd_cost['dpd_shipping_subsidized']);
    $shipping_dpd_method = MODULE_SHIPPING_DPD_SUBSIDIZED_SHIPPING . ' ' .MODULE_SHIPPING_DPD_TEXT_WAY . ' ' . $dest_country . " : " . $shipping_weight . ' ' .             MODULE_SHIPPING_DPD_TEXT_UNITS;
              } else {
    //charge for shipping
    $shipping_dpd_cost = ($shipping + MODULE_SHIPPING_DPD_HANDLING);
    neu
    Code: PHP  [Auswählen]
     $shipping_dpd_cost = (($shipping * $shipping_num_boxes + MODULE_SHIPPING_DPD_HANDLING)-$dpd_cost['dpd_shipping_subsidized']);
    $shipping_dpd_method = MODULE_SHIPPING_DPD_SUBSIDIZED_SHIPPING . ' ' .MODULE_SHIPPING_DPD_TEXT_WAY . ' ' . $dest_country . " : " . $shipping_num_boxes . ' x ' . number_format($shipping_weight,1) . ' ' . MODULE_SHIPPING_DPD_TEXT_UNITS;
              } else {
    //charge for shipping
    $shipping_dpd_cost = ($shipping * $shipping_num_boxes + MODULE_SHIPPING_DPD_HANDLING);

    Nebenbei habe ich die mitunter langen Kommata auf eine Stelle begrenzt.

    Bei der Prüfung ist mir auch aufgefallen, dass offenbar nur einmal das Paketleergewicht berücksichtigt wird.
    Da bei mir ein großer Teil der Sendungen aus mehreren Paketen besteht, habe ich das geändert:
    \includes\classes\shipping.php
    alt (Zeile 95-108)
    Code: PHP  [Auswählen]
            $shipping_quoted = '';
            $shipping_num_boxes = 1;
            $shipping_weight = $total_weight;

            if (SHIPPING_BOX_WEIGHT >= $shipping_weight*SHIPPING_BOX_PADDING/100) {
              $shipping_weight = $shipping_weight+SHIPPING_BOX_WEIGHT;
            } else {
              $shipping_weight = $shipping_weight + ($shipping_weight*SHIPPING_BOX_PADDING/100);
            }

            if ($shipping_weight > SHIPPING_MAX_WEIGHT) { // Split into many boxes
              $shipping_num_boxes = ceil($shipping_weight/SHIPPING_MAX_WEIGHT);
              $shipping_weight = $shipping_weight/$shipping_num_boxes;
            }
    neu
    Code: PHP  [Auswählen]
            $shipping_quoted = '';
            $shipping_weight = $total_weight;
            $shipping_num_boxes = 0;

            while ($shipping_weight > SHIPPING_MAX_WEIGHT) {
              $shipping_num_boxes++;
              $shipping_weight = ($total_weight/$shipping_num_boxes) + SHIPPING_BOX_WEIGHT;
              if (SHIPPING_BOX_WEIGHT >= $shipping_weight*SHIPPING_BOX_PADDING/100) {
                $shipping_weight = $shipping_weight+SHIPPING_BOX_WEIGHT;
              } else {
                $shipping_weight = $shipping_weight + ($shipping_weight*SHIPPING_BOX_PADDING/100);
              }
            }

    Die Werte SHIPPING_BOX_WEIGHT sind nun das kleinste leere Paket und SHIPPING_BOX_PADDING der Aufschlag für das größte leere Paket.

    Die while-Schleife habe ich benutzt, da mitunter die errechneten Paketgewichte nach Zuschlag des Paketleergewichts über dem Maximalgewicht lagen. Der Rest sollte selbsterklärend sein.

    Aus meiner Sicht passt das nun prima.
    Habe ich etwas übersehen?

    Linkback: https://www.modified-shop.org/forum/index.php?topic=35000.0

    profidrucker

    • Neu im Forum
    • Beiträge: 36
    Denkfehler:
    Die Bedingung der while-Schleife muss ergänzt werden, damit sie einmal durchlaufen wird:
    Code: PHP  [Auswählen]
    ($shipping_weight > SHIPPING_MAX_WEIGHT OR $shipping_num_boxes == 0)

    profidrucker

    • Neu im Forum
    • Beiträge: 36
    Die Paket-Leergewichte werden doppelt berechnet.
    In der zweiten Zeile der while-Schleife fällt das Leergewicht weg, es wird ja in der folgenden if-else-Konstruktion addiert.
    Code: PHP  [Auswählen]
    $shipping_weight = ($total_weight/$shipping_num_boxes);

    LED-Profi

    • Fördermitglied
    • Beiträge: 104
    • Geschlecht:
    Hab das gleiche Problem mit DHL (dp-Modul).
    Maximales Paketgewicht ist auf 25kg eingestellt.
    Sobald das Versandgewicht da knapp drüber ist, macht er zwei Pakete mit aufgeteiltem Gewicht, berechnet aber nur die Kosten für ein Paket.

    Da ich auch UPS eingerichtet habe, sieht man den Unterschied. Beim UPS-Modul wird richtig gerechnet.
    Gibt es ein aktuelles dp-modul ohne diesen Fehler oder was muss man ändern?

    Freue mich über Antworten.
    Tom
    modified version 2.0.0.0
    3 Antworten
    1958 Aufrufe
    30. Juni 2012, 10:11:02 von web28
    2 Antworten
    1775 Aufrufe
    10. Mai 2012, 16:05:19 von bretterelse
    3 Antworten
    2265 Aufrufe
    05. September 2010, 11:21:44 von ds170477