Individuelle Versandkosten nach Paketgewicht

Guten Tag,

wir möchten gerne für unsere Versanddienstleister die Einstellung treffen, dass bei einem Paketgewicht von 28kg die Sendung in zwei Pakete aufgeteilt und die Versandkosten logischerweise multipliziert werden.

Sprich beim Kauf von
5x Wasser 5kg = 25kg - 1 Paket und 1x Porto
6x Wasser 5kg = 30kg - 2 Pakete und 2x Porto

In der Doku haben wir folgendes gefunden:

Eigene Berechnung nach Gewicht inkl. Aufteilung in mehrere Pakete
https://community.shopware.com/_detail_1933.html#Eigene_Berechnung_nach_Gewicht_inkl._Aufteilung_in_mehrere_Pakete

In den Einstellungen Grundeinstellungen -> Storefront haben wir folgendes eingetragen:

MAX(a.topseller) AS has_topseller, MAX(at.attr3) AS has_comment, MAX(b.esdarticle) AS has_esd,IF(MAX(d.weight)<30,1,0) AS aufteilbar

Und im Versandmodul:

IF(SUM(d.weight*b.quantity)>30,CEIL(SUM(b.quantity*d.weight)/30)*4.95,4.95)

Das sieht mir aber sehr nach dem Test danach aus, dass jedes einzelne Gebinde bei 30kg geteilt wird.
Sprich der Artikel selber muss direkt 30kg haben, das ist aber nicht der Fall. Wie wäre denn der Code für unsere Zwecke anzupassen?

Gruß
Christian

Moin,

also anscheinend ist meine Einstellung im Shop falsch.
Zum Test habe ich mal den Artikel 30kg schwer gemacht und zwei Stück in den Warenkorb gelegt.
Dabei werden die Versandkosten auch nur einmalig berechnet.

Wo kann denn dort der Fehler liegen?

Gruß
Christian

Hast Du unter Versandkosten den Faktor auf 100 gesetzt?
Also 100% von deinem berechneten Wert. (Feld -Versandkosten würde in dem Fall leer bleiben, da es ja berechnet wird, aber der Faktor muss angegeben werden und schon läuft die Sache)

@drac schrieb:

Hast Du unter Versandkosten den Faktor auf 100 gesetzt?
Also 100% von deinem berechneten Wert. (Feld -Versandkosten würde in dem Fall leer bleiben, da es ja berechnet wird, aber der Faktor muss angegeben werden und schon läuft die Sache)

Hey greife das Thema nochmal auf, da uns die Übergangslösung nicht mehr ausreicht.
Habe im Versandkostenmodul nun die Einstellung wie folgt gesetzt:

Versandkosten von 0 bis beliebig - Versandkosten (kein Eintrag), Faktor 100%

Erweiterte Einstellung - > eigene Berechnung:
IF(SUM(d.weight*b.quantity)>30,CEIL(SUM(b.quantity*d.weight)/30)*4.95,4.95)

Im Warenkorb habe ich folgende Artikel
1x Artikel A 15kg (47,45€)
4x Artikel B 5kg  (5,48€ Stk. - 83,80€)

Versandkosten werden mir hetzt allerdings 131,25€ berechnet, sprich die Summe des Warenkorbs.

Sooooo Fehlerchen gefunden.

Ich hatte doch glatt die Berechnung auf Gewicht bzw. Preis gelassen und nicht auf Eigene Berechnung gesetzt :smiley:

 

Läuft jetzt soweit Einwandfrei.

Hallöchen,

so das Gewicht wird alles jetzt passend mit den Paketen berechnet und aufgeteilt.

Jetzt wollte ich noch bei DPD den PLZ-Kreis für Inseln sperren, da diese dort nicht hin liefern solllen. Dafür steht DHL zur Verfügung dann.

Dafür habe ich den Code so geschrieben, leider lädt der seitliche Warenkorb dann in eine Schleife

IF(SUM(d.weight*b.quantity)>29,CEIL(SUM(b.quantity*d.weight)/29)*5.50,5.50)

IFNULL(us.zipcode,ub.zipcode) IS NULL OR IFNULL(us.zipcode,ub.zipcode) NOT IN ('25845','25846','25847','25849','25859','25863','25869','25929','25930','25931','25932','25933','25938','25939','25940','25941','25942','25946','25947','25948','25949','25952','25953','25954','25955','25961','25962','25963','25964','25965','25966','25967','25968','25969','25970','25980','25985','25986','25988','25989','25990','25992','25993','25994','25996','25997','25998','25999','26465','26474','26486','26548','26571','26579','26757','27498','83526')

 

Man kann doch nicht einfach zwei SQL-Anweisungen untereinander schreiben und meinen, das würde dann schon funktionieren. Beide Bedingungen müssen zumindest per AND oder OR verknüpft werden (je nachdem ob beide Bedingungen gelten müssen oder nur eine davon).

@drakon schrieb:

Man kann doch nicht einfach zwei SQL-Anweisungen untereinander schreiben und meinen, das würde dann schon funktionieren. Beide Bedingungen müssen zumindest per AND oder OR verknüpft werden (je nachdem ob beide Bedingungen gelten müssen oder nur eine davon).

Ja das ergibt Sinn :wink:

Hab das ganze so geschrieben, allerdings gibt er dann trotzdem beide Versandpartner aus und berechnet kein Porto

IF(SUM(d.weight*b.quantity)>29,CEIL(SUM(b.quantity*d.weight)/29)*5.885,5.885) AND IFNULL(us.zipcode,ub.zipcode) IS NULL OR IFNULL(us.zipcode,ub.zipcode) NOT IN ('25845','25846','25847','25849','25859','25863','25869','25929','25930','25931','25932','25933','25938','25939','25940','25941','25942','25946','25947','25948','25949','25952','25953','25954','25955','25961','25962','25963','25964','25965','25966','25967','25968','25969','25970','25980','25985','25986','25988','25989','25990','25992','25993','25994','25996','25997','25998','25999','26465','26474','26486','26548','26571','26579','26757','27498','83526')

 

Wenn BEIDE Bedingungen zutreffen müssen, wäre ein AND richtig.

@drakon schrieb:

Wenn BEIDE Bedingungen zutreffen müssen, wäre ein AND richtig.

is doch mit dazwischen

Hab mich verguckt. Aber dann muss man den zweiten Bedingungsblock mit dem OR einklammern.

@drakon schrieb:

Hab mich verguckt. Aber dann muss man den zweiten Bedingungsblock mit dem OR einklammern.

 

ok, meinst du so - hab mich damit bislang nicht auseinander setzen müssen :wink:

IF(SUM(d.weight*b.quantity)>29,CEIL(SUM(b.quantity*d.weight)/29)*5.885,5.885) AND IFNULL(us.zipcode,ub.zipcode) IS NULL OR (IFNULL(us.zipcode,ub.zipcode) NOT IN ('25845','25846','25847','25849','25859','25863','25869','25929','25930','25931','25932','25933','25938','25939','25940','25941','25942','25946','25947','25948','25949','25952','25953','25954','25955','25961','25962','25963','25964','25965','25966','25967','25968','25969','25970','25980','25985','25986','25988','25989','25990','25992','25993','25994','25996','25997','25998','25999','26465','26474','26486','26548','26571','26579','26757','27498','83526'))

 

IF(SUM(d.weight*b.quantity)>29,CEIL(SUM(b.quantity*d.weight)/29)*5.885,5.885) AND (IFNULL(us.zipcode,ub.zipcode) IS NULL OR IFNULL(us.zipcode,ub.zipcode) NOT IN ('25845','25846','25847','25849','25859','25863','25869','25929','25930','25931','25932','25933','25938','25939','25940','25941','25942','25946','25947','25948','25949','25952','25953','25954','25955','25961','25962','25963','25964','25965','25966','25967','25968','25969','25970','25980','25985','25986','25988','25989','25990','25992','25993','25994','25996','25997','25998','25999','26465','26474','26486','26548','26571','26579','26757','27498','83526'))

So meinte ich.

1 Like

@drakon schrieb:

IF(SUM(d.weightb.quantity)>29,CEIL(SUM(b.quantityd.weight)/29)*5.885,5.885) AND (IFNULL(us.zipcode,ub.zipcode) IS NULL OR IFNULL(us.zipcode,ub.zipcode) NOT IN (‘25845’,‘25846’,‘25847’,‘25849’,‘25859’,‘25863’,‘25869’,‘25929’,‘25930’,‘25931’,‘25932’,‘25933’,‘25938’,‘25939’,‘25940’,‘25941’,‘25942’,‘25946’,‘25947’,‘25948’,‘25949’,‘25952’,‘25953’,‘25954’,‘25955’,‘25961’,‘25962’,‘25963’,‘25964’,‘25965’,‘25966’,‘25967’,‘25968’,‘25969’,‘25970’,‘25980’,‘25985’,‘25986’,‘25988’,‘25989’,‘25990’,‘25992’,‘25993’,‘25994’,‘25996’,‘25997’,‘25998’,‘25999’,‘26465’,‘26474’,‘26486’,‘26548’,‘26571’,‘26579’,‘26757’,‘27498’,‘83526’))

So meinte ich.

 

Ok, habe ich hinterlegt.

Leider wird mir immer noch DPD ausgewiesen und seltsamerweise mit 0€ Versandkosten berechnet obwohl die Versandkosten ja nach Gewicht berechnet werden sollen.

@Str33tfight3r schrieb:

@drakon schrieb:

IF(SUM(d.weightb.quantity)>29,CEIL(SUM(b.quantityd.weight)/29)*5.885,5.885) AND (IFNULL(us.zipcode,ub.zipcode) IS NULL OR IFNULL(us.zipcode,ub.zipcode) NOT IN (‚25845‘,‚25846‘,‚25847‘,‚25849‘,‚25859‘,‚25863‘,‚25869‘,‚25929‘,‚25930‘,‚25931‘,‚25932‘,‚25933‘,‚25938‘,‚25939‘,‚25940‘,‚25941‘,‚25942‘,‚25946‘,‚25947‘,‚25948‘,‚25949‘,‚25952‘,‚25953‘,‚25954‘,‚25955‘,‚25961‘,‚25962‘,‚25963‘,‚25964‘,‚25965‘,‚25966‘,‚25967‘,‚25968‘,‚25969‘,‚25970‘,‚25980‘,‚25985‘,‚25986‘,‚25988‘,‚25989‘,‚25990‘,‚25992‘,‚25993‘,‚25994‘,‚25996‘,‚25997‘,‚25998‘,‚25999‘,‚26465‘,‚26474‘,‚26486‘,‚26548‘,‚26571‘,‚26579‘,‚26757‘,‚27498‘,‚83526‘))

So meinte ich.

 

Ok, habe ich hinterlegt.

Leider wird mir immer noch DPD ausgewiesen und seltsamerweise mit 0€ Versandkosten berechnet obwohl die Versandkosten ja nach Gewicht berechnet werden sollen.

 

Fehler gefunden, man sollte auch den Code nicht in die Berechnung sondern in die Bedingung schreiben.

Sprich 1x Bedingung und einmal Berechnung.

Gruß

Christian

Hallöchen,

die Inseln per DPD auszusperren funktioniert jetzt.
Jetzt kommen Kunden natürlich auf die Idee, Packstationen per DPD anzugeben.

Kann man dieses auch ähnlich wie die Inseln irgendwie in die Bedingung mit einbinden dass die Straße sobald diese Packstation heißt auch nicht mehr DPD verschickt bzw. ausgewählt werden kann?

Gruß
Christian

Hey, hat da jemand einen Lösungsvorschlag, finde immer nur die Postleitzahl als Feld in der Doku, kann man die Straße nicht berücksichtigen oder ist das einfach nicht mit aufgeführt wie sonst das man aber alle Felder ansprechen kann?

Je nach verwendeten datenbankserver mal folgendes probieren:

CASE WHEN INSTR(LOWER(us.street), 'packstation') <= 0 THEN 1 ELSE 0 END
1 Like