Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Versandkostenfreier Versand nach Brutto Zwischensumme berechnen
 
zolid
Jr. Member
 
Total Posts:  21
Joined:  2009-10-30
 

Achso, vlt. hast Du auch den Link in dem MXperts-Beitrag nicht gesehen. Dort gibt es das komplette Beispiel-Modul zum runterladen. smile

 
Magento Community Magento Community
Magento Community
Magento Community
 
b_nice
Member
 
Avatar
Total Posts:  60
Joined:  2010-01-05
Germany
 

@zolid

Doch, das Mxperts Shipping Modul Tutorial habe ich gelesen, allerdings muß ich gestehen, das ich bei dem Extensions Tutorial zwischendurch ausgestiegen bin, da ich nichts mehr verstanden habe.

Bei den Download-Dateien des Shipping Moduls finde ich keine VErweise auf jQuery Aufrufe, daher meine Unsicherheit was ich mit Deine Code Schnipsel machen soll:

function cleanShippingOptions() {
    jQuery
(\"#checkout-shipping-method-load dt:not(:first),#checkout-shipping-method-load dd:not(:first)\").remove();
}
window
.setInterval(\"cleanShippingOptions()\"100);

Gehört das auch in die ShippingMethod.php? Entschuldige bitte, falls das eine blöde Frage ist.

 
Magento Community Magento Community
Magento Community
Magento Community
 
zolid
Jr. Member
 
Total Posts:  21
Joined:  2009-10-30
 

Bzgl. dem jQuery-Snippet: Stimmt, hab ich ganz vergessen. Magento nutzt ja von Haus aus gar kein jQuery. wink

Du musst also in den Haupttemplates noch jQuery einbinden. Beim One-Page-Checkout ist das die page/3columns.phtml Dort im Headbereich also jQuery einbinden. Wenn Du keine Datei mit eigenem JS-Code hast, musst Du entweder eine anlegen und ebenfalls einbinden, oder du schreibst es direkt in ein Template rein. Die 3columns.phtml wäre zwar nicht empfehlenswert, abjaper würde zur Not auch funktionieren, wenn Du nur schnell eine Lösung suchst.

Altnernativ kann man das jQuery-Snippet natürlich auch mit prototype oder was Magento da nutzt nachbauen.

 
Magento Community Magento Community
Magento Community
Magento Community
 
b_nice
Member
 
Avatar
Total Posts:  60
Joined:  2010-01-05
Germany
 

@zolid

Danke für die Erläuterung. Ich glaube mich verlässt gerade mein Mut - der Shop ist schon “on air” und da pfusche ich vermutlich sonst alles zu Tode. Vielleicht verfasst ja mal jemand (z.B. Johannes Teitge oder Daniel Sasse von Mxperts) eine Walk-through für Dummies. wink

 
Magento Community Magento Community
Magento Community
Magento Community
 
olmomp
Jr. Member
 
Total Posts:  8
Joined:  2008-05-16
Bremen, Germany
 

Schnell und einfach für alle:

(1) Datei /app/code/core/Mage/Shipping/Model/Carrier/Freeshipping.php nach
/app/code/local/Mage/Shipping/Model/Carrier/Freeshipping.php kopieren - so wird das ganze bei einem Update nicht überschrieben.

(2) Freeshipping.php folgendermaßen ändern

--- Freeshipping.php    (revision 136)
+++ 
Freeshipping.php    (working copy)
@@ -
58,+58,19 @@
 
           
$this->_updateFreeMethodQuote($request);
 
+        
$sess Mage::getSingleton('checkout/session');
+        
$items $sess->getQuote()->getAllItems();
+        
+        
$priceWithTax=0;
+        
+        foreach(
$items as $item{
+            $priceWithTax += ($item->getQty()*$item->getBaseCalculationPrice())+$item->getTaxAmount();   
+        
}
+        if($this->getConfigData('free_shipping_subtotal')) {
+            }
+        
         
$allow = ($request->getFreeShipping())
-            || (
$packageValue >= $this->getConfigData('free_shipping_subtotal'));
+            || (
$priceWithTax >= $this->getConfigData('free_shipping_subtotal'));
 
         if (
$allow{
             $method 
Mage::getModel('shipping/rate_result_method');

Fertig. Das Modul Versandkostenfrei setzt Versand auf 0, wenn der im Admin eingestellte Warenkorbwert Brutto erreicht ist - so, wie man das erwartet.

Wer DIFF nicht kennt: alle Zeilen, die ein + haben, werden eingefügt, Zeilen mit - werden gelöscht. Zeilen ohne etwas davor stehen so in der Originaldatei, damit man besser Anfang und Ende findet - los gehts also bei Zeile 58;)

Dank an zolid und Mxperts!

 
Magento Community Magento Community
Magento Community
Magento Community
 
waprold
Jr. Member
 
Total Posts:  13
Joined:  2009-06-09
 

Hier ist mein Patch für Tablerates:

--- ../../../../../core/Mage/Shipping/Model/Carrier/Tablerate.php    2010-07-26 22:08:25.000000000 +0200
+++ Tablerate.php    2010-10-24 08:09:05.000000000 +0200
@@ -74,+74,13 @@
             
}
         }
 
+    // If displayed prices include tax, consider this when calculating package value
+    if (Mage::helper('tax')->priceIncludesTax()) {
+    foreach ($request->getAllItems() as $item{
+         $request->setPackageValue($request->getPackageValue() + $item->getTaxAmount());
+        
}
+    }
+
         
// Free shipping by qty
         
$freeQty 0;
         if (
$request->getAllItems()) {

Das ist schon fast eine Schande, dass so ein ärgerlicher und trivial zu fixender Bug seit Jahren existiert. Hier hat schon jemand geschrieben, dass das Problem bei Entwicklern bekannt sei. Gibt’s irgendwo einen Bugtracker-Eintrag?

 
Magento Community Magento Community
Magento Community
Magento Community
 
phroggar
Jr. Member
 
Total Posts:  9
Joined:  2009-03-06
 

DANKE!

Ich weiss nicht was trauriger ist - der Fakt dass es nicht im Kerncode ist - selbst nach 2 Jahren, oder dass in der Community erst nach 1,5 Jahren einen richtiger Patch geposted wurde.

 
Magento Community Magento Community
Magento Community
Magento Community
 
phroggar
Jr. Member
 
Total Posts:  9
Joined:  2009-03-06
 

Kleine Korrektur des Codes, scheinbar wird/wurde die Anzahl der Items nicht mitgerechnet:

if (Mage::helper('tax')->priceIncludesTax()) {
        
foreach ($request->getAllItems() as $item{
                $request
->setPackageValue($request->getPackageValue() + ($item->getQty() * $item->getTaxAmount()));
      
}
    }
 
Magento Community Magento Community
Magento Community
Magento Community
 
Kyshah
Jr. Member
 
Total Posts:  17
Joined:  2010-07-29
 

Hallo, ich habe nun den ganzen Tag versucht , die Versandeinstellungen so hinzubekommen, dass meine TableRates richtig greifen.

Meine Tablerates sieht so aus

"Land","Region","Postleitzahl","Zwischensumme (und mehr)","Versandpreis"
DEU,*,*,55.0000,0.0000
DEU
,*,*,40.0000,4.9000
DEU
,*,*,0.0000,6.9000

Doch egal wie ich es drehe und wende, die Berechnungen für den Versand hauen irgendwie nicht hin.

So sieht es momentan aus :

Zwischensumme 55,95 €
Versandkosten (DHL - DHL) 4,90 €
--------------------------------------------------------------
Gesamtsumme Zzgl. Steuern 56,41 €
7% Steuer (7%)
3,66 €
19% Steuer (19%)
0,78 €
MwSt. Gesamt
4,44 €
------------------------------------------------------------------
Gesamtsumme Inkl. Steuern 60,85 €
--------------------------------------------------------------

Da die Zwischensumme oben 55,95 sind, dürfte eigentlich kein Versand mehr berechnet werden.
Genauso verhält es sich auch bei den anderen versandstufen.

Ob mit oder ohne den Code in der tablerates.php , die berechnungen hauen nicht hin ...
ich habe keine Ahnung, was ich noch machen soll, damit es endlich funktioniert....

Es wäre, toll, wenn jemand eine Lösung hat

Ich verwende Magento 1.4.1.1

 
Magento Community Magento Community
Magento Community
Magento Community
 
smoking81
Jr. Member
 
Total Posts:  15
Joined:  2010-06-11
 

hallo! Ich habe genau das gleiche Problem wie Kyshah.. Kennt jemand eine Lösung? Ich bin echt frustriert/geärgert..
Danke im Vorhaus!

 
Magento Community Magento Community
Magento Community
Magento Community
 
jumpthis
Member
 
Total Posts:  75
Joined:  2010-09-30
 

Vieleicht eine Lösung:
Verkaufsförderung => Warenkorb Preisregel

Unter Bedindungen kann die Summe und das Land ausgewähl weren. Sieht bei mir so aus:
Versandland ist Deutschland
Zwischensumme größer gleich als 50.00

Unter Aktionen dann noch bei Versandkostenfrei für Versand mit passenden Artikel wählen

Image Attachments
versandkostenfrei_ab_x.png
 
Magento Community Magento Community
Magento Community
Magento Community
 
smoking81
Jr. Member
 
Total Posts:  15
Joined:  2010-06-11
 

hi jumpthis, danke für deine antwort!
Leider habe ich mit \\\"Table Rates\\\” (wie in dem Beispiel von Kyshah) zu tun.. Was du schreibst, geht nur für eine einfache \\\"Versandkosten frei ab X Euro\\\” Konfiguration, oder? :(

 
Magento Community Magento Community
Magento Community
Magento Community
 
jumpthis
Member
 
Total Posts:  75
Joined:  2010-09-30
 
smoking81 - 05 July 2011 02:56 AM

hi jumpthis, danke für deine antwort!
Leider habe ich mit \\\"Table Rates\\\” (wie in dem Beispiel von Kyshah) zu tun.. Was du schreibst, geht nur für eine einfache \\\"Versandkosten frei ab X Euro\\\” Konfiguration, oder? :(

Ich bin davon ausgegangen, dass es bei jeder Versandart geht. Es wird nur geschaut wie hoch die Zwischensumme ist und setzt entsprechend die Versandkosten anhand der Preisregel.

Kannst du das ausprobieren?

 
Magento Community Magento Community
Magento Community
Magento Community
 
smoking81
Jr. Member
 
Total Posts:  15
Joined:  2010-06-11
 

DANKE! Nach verschiedene Versuche, hat es geklappt, obwohl es sieht man dass es ein workaround ist (ich habe 2 regeln hinzugefügt, die eine rabatt für eine feste Versandtkosten rechnen).. Nochmals danke!

 
Magento Community Magento Community
Magento Community
Magento Community
 
sagacity
Member
 
Total Posts:  47
Joined:  2009-12-16
 

Für alle mit 1.4.1.1.:

Ich stand jetzt erneut vor dem selben Problem. Nachdem ich ein bisschen rumprobiert habe, habe ich festgestellt, dass der Aufruf “Mage::helper(’tax’)->priceIncludesTax()” nie etwas ausgab. Woran das liegt weiß ich nicht. Wäre schön, wenn mich darüber jemand aufklären könnte.

Nun habe ich aber die If-Abfrage einfach rausgenommen, da in meinem/unserem Fall die Preise so oder so per inklusive Steuern berechnet werden und die If-Abfrage für meinen Fall damit ohne Bedeutung war (eine Einstellung über das Backend ist nun nicht mehr möglich). Wenn man einfach nur folgenden Code in der core/Mage/Shipping/Model/Carrier/Tablerate.php einfügt (wie von waprold beschrieben), dann klappt es nun entgültig!

edit: Nach ein paar Versuchen kam ich auf einen Fehler. Die ursprüngliche Version innerhalb der foreach-Schleife von waprold ist richtig (bis auf die If-Bedingung drumherum natürlich), es muss nicht wie bei phroggar angegeben der TaxAmount mit der Anzahl multipliziert werden, dies geschieht anscheinend automatisch in der getTaxAmount-Funktion.

foreach ($request->getAllItems() as $item{
    $request
->setPackageValue($request->getPackageValue() + $item->getTaxAmount());
}

Hoffe es hilft!

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top