Ist es möglich die Versankosten zu ändern, wenn ein bestimmter Artikel gekauft wird

Hallo,

 

ich habe einen Artikel für den man ein größeres Paket benötigt. Kann ich das irgendwie bei den Versandkosten einstellen, dass wenn dieser Artikel mit im Warenkorb ist immer die teureren Versankosten herangezogen werden?

Ich denke unter Eigene Bedingungen könnte man das irgendwie einstellen ich verstehe nur nicht wie!?

Vielen Dank für die Hilfe

Hast Du schon hier geschaut? http://community.shopware.com/_detail_1933.html#Versandkosten_nach_Artikel

 

 

Ich hab sowas ähnliches bei uns auch gemacht. Dort wird allerdings immer die teuerste Versandkosten Art genommen. Du müsstest noch irgendwo einbauen, dass es abhängig von deinem Artikel ist. Vielleicht hilft es dir ja bei der Inspiration. Deinen Fall müsste man aber auch direkt über das Versandkosten Modul abbilden können, so wie @NextMike‍ schon beschrieben hat.

session = $session;
    }

    /**
     * @inheritdoc
     */
    public static function getSubscribedEvents()
    {
        return [
            'sAdmin::sGetPremiumDispatches::after' => 'afterGetDispatches',
        ];
    }

    public function afterGetDispatches(\Enlight_Hook_HookArgs $args)
    {
        $dispatches = $args->getReturn();
        /** @var \sAdmin $sAdmin */
        $sAdmin = $args->getSubject();
        $countryParam = ['id' => $args->offsetGet('countryID')];

        $dispatches = new ArrayCollection($dispatches);

        $dispatches = $dispatches->map(function ($el) use($countryParam, &$sAdmin) {
            // session value required for sGetPremiumShippingcosts method call
            $this->session->offsetSet('sDispatch', $el['id']);

            $el['ghBruttoAmount'] = $sAdmin->sGetPremiumShippingcosts($countryParam)['brutto'];

            return $el;
        });

        $criteria = Criteria::create()
            ->orderBy(array('ghBruttoAmount' => Criteria::DESC));

        $dispatches = $dispatches->matching($criteria);

        $this->session->offsetSet('sDispatch', $dispatches->first()['id']);

        return $dispatches;
    }
}

 

1 „Gefällt mir“

Danke für die Antworten.

 

Ich habe 2 Versandarten: Standard (0-79€ Bestellwert) und Premium (80€-unendlich).

Jetzt möchte ich gerne einstellen dass wenn Artikel mit der SKU xyz gekauft wird und auch wenn der Warenkorbwert kleiner 80€ ist trotzdem der Premium Versand ausgelöst wird. Ich denke das das mit der Lösung von NextMike nicht umsetzbar ist, da hier nur der Wert erhöht wird. Da bei uns die Versandarten aber mit verschiedenen Post-Ettiketen verknüpft sind, sollte die ganze Versandart abgeändert werden. Ist das möglich?

Ist das möglich?

das wäre ja die Aufgabe es herauszufinden. Hier steht was möglich ist: http://community.shopware.com/Individuelle-Versandkosten-Bedingungen-und-Berechnungen\_detail\_1933\_647.html

Arbeite Dich da ein. Vielleicht eine dritte Versandart?

Das ist über NextMikes Ansatz möglich. Allerdings ist die Doku dieses Features leider sehr schlecht und kaum verständlich. Ich habe das Feature erst verstanden, nachdem ich den Quellcode an der betreffenden Stelle in der sBasket Klasse gelesen hatte.

Ja ich ahbe mir diesen letzten Artikel auch schon durchgelesen. Ich rauche genau das:

  1. artikel macht eine Versandart nun nur dann verfügbar , wenn der Artikel, bzw. mindestens ein Artikel, welcher die Zeichenkette in der Artikelnummer beinhaltet, im Warenkorb liegt. 

Aber ich verstehe nict genau wie ich das unter der Versandart eintragen muss. Ich werde aus folgender Bedingung nicht schlau:

MAX(a.topseller) AS has_topseller, MAX(at.attr3) AS has_comment, MAX(b.esdarticle) AS has_esd,Min(IF(d.ordernumber LIKE '%ARTIKELNUMMER%' OR b.modus <> 0,1,0)) AS artikel

Muss ich diese so unter eiegen Berechnung einfügen? Und muss ich nur ARTIKELNUMMER durch meine SKU ersetzten?

Was hindert Dich dran es zu testen?

@NextMike schrieb:

Was hindert Dich dran es zu testen?

Das habe ich. Wenn ich das so eintrage dann spielt der Shop verrückt. Artikel lassen sich nicht mehr in den Warenkorb legen beispielsweise.

Teste das mit Deiner Artikelnummer und sperre die Versandarten mit !artikel.

Ich glaube dein Ansatz geht schon in die richtige Richtung. Ich zeige einmal mal womit ich in einer ähnlichen Konsellation erfolg hatte.

Min(IF(d.ordernumber LIKE '%ARTIKELNUMMER%' OR b.modus <> 0,1,0)) AS artikel

würd ich 

GROUP_CONCAT(d.ordernumber) as artikel

Unter Grundeinstellungen->Versand-Modul eintragen.

Und dann in den Versandkosten unter eigene Bedingung:

NOT (FIND_IN_SET('HIER DEINE ARTIKELNUMMER', artikel) > 0)