Page 1 of 1
Shop: Berechnung Versandkosten nicht korrekt
Posted: Mon 24. Aug 2009, 12:37
by rudi66
Hallo,
ich probiere gerade in der neuesten Version 1.4.2 das Shop-Modul aus und habe festgestellt, dass bei den Versandkosten immer der höchste Wert genommen wird. Folgendes habe ich eingetragen:
Folgendes steht dann z.B. bei 2 Produkten (jedes wiegt 600 g) im Warenkorb und auch dann in allen anderen Kaufvorgängen:
Woran liegt das? Ich hatte auch schon mal die Reihenfolge in der Tabelle geändert, aber ohne Erfolg! Hat jemand dieses Problem auch schon mal gehabt und lösen können?
Beste Grüße
Rudi
Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Tue 25. Aug 2009, 07:24
by juergen
Vertausch mal Punkt und Komma ... *geraten*
Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Tue 25. Aug 2009, 09:28
by rudi66
DF6IH wrote:Vertausch mal Punkt und Komma ... *geraten*
Nein, das nützt nichts, denn der Punkt und das Komma werden automatisch mit dem Sichern der Einstellungen gesetzt. Beispiel: Ich gebe 2500 ein, nach dem Sichern steht dort 2.500,000.
Ich habe es jetzt auch mal mit kleineren Zahlen probiert (kg statt g), aber auch hier nimmt er immer den höchsten Wert für die Versandkosten!???
Gruss
Rudi
Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Tue 25. Aug 2009, 09:57
by Oliver Georgi
eventuell noch ein Denkfehler auf Shopseite - wird in cart.items.inc.php berechnet.
Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Tue 25. Aug 2009, 20:39
by juergen
Code: Select all
if( $row['calculate'] ) {
$subtotal['shipping_net'] = $row['net'];
$subtotal['shipping_gross'] = $subtotal['shipping_net'] * ( 1 + ($row['vat'] / 100) );
$subtotal['shipping_vat'] = $subtotal['shipping_gross'] - $subtotal['shipping_net'];
Hier müsste er rausspringen, er macht aber weiter bis er einen Wert hat der nicht passt ..
Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Sun 30. Aug 2009, 17:06
by spacetom
Problem liegt bei
Code: Select all
if( $subtotal['weight'] <= $row['weight'] && $subtotal['shipping_net'] <= $row['net'] ) {
$row['calculate'] = true;
}
Abfrage wird auch bei Unterschreitung des kleinsten Versandkostengewichtes bei jeder eingegeben höheren Gewichtsangabe erfüllt und bei der Berechnung immer bis zum höchsten Wert überschrieben.
Vorausgesetzt die Versandkosten werden aufsteigend eingegeben, reicht eine Variable zur Bestätigung, dass bereits eine gültige Berechnung in der if-Anweisung erfolgt ist.
Code: Select all
if( $subtotal['weight'] <= $row['weight'] && $subtotal['shipping_net'] <= $row['net'] && $setcost != 1 ) {
$row['calculate'] = true;
$setcost=1;
}
Bei obigen Beispiel mit Gesamtgewicht von 1,2 kg würde im ersten Durchlauf die elseif-Anweisung zur Berechnung führen, im 2. Durchlauf die if-Anwendung die 1. Berechnung überschreiben und $setcost auf 1 setzen und der 3. Durchlauf mit den 5 kg Maximalgewicht würde die if-Anweisung durch $setcost=1 nicht mehr wie bisher erfüllen.
MfG
Thomas
Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Tue 1. Sep 2009, 07:49
by Oliver Georgi
Hm, das bringt auch nichts - also ich habe mein Verfahren noch mal überdacht - und vereinfacht. Jeder sollte sich selbst sicher sein, was für Kosten er ansetzt - und deswegen prüfe ich nachfolgend nur noch auf Gewicht.
Bevor ich dies poste - bitte prüfen ob es passt und so praktikabel ist.
Bitte alles ab
// set shipping fees ändern:
Code: Select all
// set shipping fees
$subtotal['shipping_net'] = 0;
$subtotal['shipping_vat'] = 0;
$subtotal['shipping_gross'] = 0;
$subtotal['shipping_calc'] = false;
foreach( _getConfig( 'shop_pref_shipping', '_shopPref' ) as $item_key => $row ) {
// do nothing as long shipping fee = 0
if( $row['net'] == 0 ) {
continue;
}
// lower weight and current shipping fee lower then this
if( $subtotal['weight'] <= $row['weight'] ) { /* && $subtotal['shipping_net'] <= $row['net'] ) {
$subtotal['shipping_calc'] = true;
} elseif( $subtotal['weight'] > $row['weight'] && $subtotal['shipping_net'] < $row['net'] ) { */
$subtotal['shipping_calc'] = true;
}
if( $subtotal['shipping_calc'] ) {
$subtotal['shipping_net'] = $row['net'];
$subtotal['shipping_gross'] = $subtotal['shipping_net'] * ( 1 + ($row['vat'] / 100) );
$subtotal['shipping_vat'] = $subtotal['shipping_gross'] - $subtotal['shipping_net'];
break;
}
}
Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Wed 2. Sep 2009, 12:12
by spacetom
Die Schleife abzubrechen sobald eine gültige Versandgewichtsklasse erreicht wurde funktioniert zwar einwandfrei. Problem ist aber, dass dann bei überschreiten des höchsten Versandgewichtes gar keine Kosten berechnet werden. Davor wurden bei Überschreitung zumindest die höchsten Versandkosten ausgegeben.
Habe einmal ausprobiert, dass auch bei Überschreitung des höchsten Gewichtes eine Berechnung erfolgt.
Code ab
// set shipping fees:
Code: Select all
// set shipping fees
$subtotal['shipping_net'] = 0;
$subtotal['shipping_vat'] = 0;
$subtotal['shipping_gross'] = 0;
$subtotal['shipping_calc'] = false;
$subtotal['shipping_calc2'] = false;
foreach( _getConfig( 'shop_pref_shipping', '_shopPref' ) as $item_key => $row ) {
// do nothing as long shipping fee = 0
if( $row['net'] == 0 ) {
continue;
}
// lower weight and current shipping fee lower then this
if( $subtotal['weight'] <= $row['weight'] ) {
$subtotal['shipping_calc'] = true;
$subtotal['shipping_calc2'] = false;
$subtotal['shipping_net'] = $row['net'];
break;
}
// exceeding the highest shipping weight
elseif ( $subtotal['weight'] > $row['weight'] && $subtotal['shipping_net'] < $row['net'] ) {
$subtotal['shipping_calc2'] = true;
$subtotal['shipping_net'] = $row['net'];
$subtotal['shipping_weight'] = $row['weight'];
$subtotal['shipping_vat'] = $row['vat'];
}
}
// shipping with one package of weight class
if( $subtotal['shipping_calc'] ) {
$subtotal['shipping_gross'] = $subtotal['shipping_net'] * ( 1 + ($row['vat'] / 100) );
$subtotal['shipping_vat'] = $subtotal['shipping_gross'] - $subtotal['shipping_net'];
}
// shipping with multiple packets
if( $subtotal['shipping_calc2'] ) {
$maxweightpices=floor($subtotal['weight']/$subtotal['shipping_weight']);
$restweight=$subtotal['weight']-($subtotal['shipping_weight']*$maxweightpices);
$subtotal['shipping_net'] = $subtotal['shipping_net']*$maxweightpices;
$subtotal['shipping_gross'] = $subtotal['shipping_net'] * ( 1 + ($subtotal['shipping_vat'] / 100) );
$subtotal['shipping_vat'] = $subtotal['shipping_gross'] - $subtotal['shipping_net'];
// calculation residual weight
if($restweight>0){
foreach( _getConfig( 'shop_pref_shipping', '_shopPref' ) as $item_key => $row ) {
if( $row['net'] == 0 ) {
continue;
}
if( $restweight <= $row['weight'] ) {
$subtotal['shipping_net_rest'] = $row['net'];
$subtotal['shipping_gross_rest'] = $subtotal['shipping_net_rest'] * ( 1 + ($row['vat'] / 100) );
$subtotal['shipping_vat_rest'] = $subtotal['shipping_gross_rest'] - $subtotal['shipping_net_rest'];
break;
}
}
$subtotal['shipping_net'] = $subtotal['shipping_net'] + $subtotal['shipping_net_rest'];
$subtotal['shipping_gross'] = $subtotal['shipping_gross'] + $subtotal['shipping_gross_rest'];
$subtotal['shipping_vat'] = $subtotal['shipping_gross'] - $subtotal['shipping_net'];
}
}
Ist zwar sicher nicht die sauberste Lösung und geht warscheinlich schlanker und einfacher, funktioniert aber und berechnet bei Überschreitung des höchsten Gewichtes die Versandkosten für mehrere Pakete.
Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Wed 2. Sep 2009, 13:11
by Oliver Georgi
dann sollte man schlichtweg als letzten Wert ein extrem hohes Gewicht definieren, das eben ALLES einschließt - eventuell ist das Verhalten ja sogar gewünscht. Ich würde da jetzt nichts mehr ändern.
Oliver
Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Wed 2. Sep 2009, 20:28
by update
Das scheint "meine" Shop-Pimpung alles superkorrekt zu rechnen.... oder?

Re: Shop: Berechnung Versandkosten nicht korrekt
Posted: Thu 3. Sep 2009, 08:05
by juergen
claus wrote:Das scheint "meine" Shop-Pimpung alles superkorrekt zu rechnen.... oder?

Nein ! Nur korrekt ...
