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)
$shipping = $dpd_table[$y];
$shipping_dpd_method = MODULE_SHIPPING_DPD_TEXT_WAY . ' ' . $dest_country . " : " . $shipping_weight . ' ' . MODULE_SHIPPING_DPD_TEXT_UNITS;
neu
$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)
$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
$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)
$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
$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