Shop: Berechnung Versandkosten nicht korrekt

Hier bekommst Du deutschsprachigen Support bezüglich offizieller Module für phpwcms. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
rudi66
Posts: 2
Joined: Fri 21. Aug 2009, 21:34

Shop: Berechnung Versandkosten nicht korrekt

Post 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:

Image

Folgendes steht dann z.B. bei 2 Produkten (jedes wiegt 600 g) im Warenkorb und auch dann in allen anderen Kaufvorgängen:

Image

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
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Shop: Berechnung Versandkosten nicht korrekt

Post by juergen »

Vertausch mal Punkt und Komma ... *geraten*
rudi66
Posts: 2
Joined: Fri 21. Aug 2009, 21:34

Re: Shop: Berechnung Versandkosten nicht korrekt

Post 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
User avatar
Oliver Georgi
Site Admin
Posts: 9918
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Shop: Berechnung Versandkosten nicht korrekt

Post by Oliver Georgi »

eventuell noch ein Denkfehler auf Shopseite - wird in cart.items.inc.php berechnet.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Shop: Berechnung Versandkosten nicht korrekt

Post 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 ..
spacetom
Posts: 4
Joined: Sun 30. Aug 2009, 16:20
Location: Wien

Re: Shop: Berechnung Versandkosten nicht korrekt

Post 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
User avatar
Oliver Georgi
Site Admin
Posts: 9918
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Shop: Berechnung Versandkosten nicht korrekt

Post 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;
	}

}
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
spacetom
Posts: 4
Joined: Sun 30. Aug 2009, 16:20
Location: Wien

Re: Shop: Berechnung Versandkosten nicht korrekt

Post 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.
User avatar
Oliver Georgi
Site Admin
Posts: 9918
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Shop: Berechnung Versandkosten nicht korrekt

Post 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
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Shop: Berechnung Versandkosten nicht korrekt

Post by update »

Das scheint "meine" Shop-Pimpung alles superkorrekt zu rechnen.... oder? :mrgreen:
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Shop: Berechnung Versandkosten nicht korrekt

Post by juergen »

claus wrote:Das scheint "meine" Shop-Pimpung alles superkorrekt zu rechnen.... oder? :mrgreen:
Nein ! Nur korrekt ... ;)
Post Reply