Gutscheine für besimmte Kundengruppen ausschließen

Hi zusammen,

stehe gerade etwas auf dem Schlauch. Zwar möchte ich für bestimmte Kundengruppen, welche schon einen Rabatt zugewiesen bekommen haben, weitere Rabattaktionen wie zum Beispiel Gutscheine ausschließen.

Hat mir jemand bitteschön einen Fingerzeig in die richtige Richtung?

Vielen Dank und allerbeste Grüße vom Chris

Hey!

[I]oxUser[/I] hat eine Funktion [I]inGroup( $sGroupID )[/I], welche true zurückgibt, wenn der User in der Gruppe mit der id $sGroupID ist.
Man könnte die Berechnung der Rabatte und z.B. das Anzeigen des Eingabefeldes für Gutscheine abhängig von dieser Funktion machen.

Grüße

Hallo,
soweit mir bekannt, kann Oxid immer den Einschluss, aber nicht den Ausschluss; also ist ein “Kundengruppe bekommt Rabatt nicht” leider nicht vorgesehen.

Du musst dem Rabatt die Kundengruppen zuweisen, die den Rabatt bekommen sollen und die Gruppe weglassen, die den Rabatt nicht bekommen sollen.

Wenn Du den Rabatt z.B. auf die automatische Kundengruppe “KUNDE” gibst, hast Du ein Problem, andere auszuschliessen …

Wenn Du Gutscheine als Rabatt ausgibst, kannst Du steuern, wie die Serien zusammen eingelöst werden können.

Grüsse, Gregor

Hi Gregor,

recht vielen Dank für Deine Antwort, das funktioniert natürlich bestens :slight_smile:

Allerbeste Grüße vom Chris

Hallo Zusammen,
und wie wäre es beim umgekehrten Fall?? Also wenn bei einem bestimmten Gutschein die Rabatte nicht zusätzlich gezogen werden sollen?

Der Kunde ist in der 50% Rabattgruppe und hat auch einen 500€ Gutschein (Messe, VIP, etc.) Jetzt soll er aber nur seine 500€ einlösen können … die 50% gibt’s aber nur ohne diesen Gutschein

Modul?

VG Stefan

Gute Frage,

die oben genannte “Juchhu” Meldung war übrigens zu voreilig, der Ausschluß funktioniert nämlich immer noch nicht. Ist aber für mich so auch in Ordnung bzw. überschaubar. Eventuell wäre das ein Feature Request.

hallo chris

ich habe es jetzt mal über diesen ansatz probiert … wenn ich in der core/oxbasket.php hardcode ist die Abfrage korrekt und der Checkout läuft durch … sofern ich das Ganze jetzt aber in ein Modul auslagern will, wird die Funktion nicht aufgerufen

Die bisherigen Threads zu oxbasket habe ich mir alle angeschaut, der entscheidende Hinweis war aber nicht dabei :frowning: hat noch jemand eine Idee???

oxbasket => olg_vouchermod


class olg_vouchermod extends olg_vouchermod_parent
{

    /**
     * Loads basket discounts and calculates discount values.
     *
     * @return null
     */
    public function _calcBasketDiscount()
    {
        // resetting
        $this->_aDiscounts = array();

        // P using prices sum which has discount, not sum of skipped discounts
        $dOldprice = $this->_oDiscountProductsPriceList->getBruttoSum();

        // add basket discounts
        $aDiscounts = oxDiscountList::getInstance()->getBasketDiscounts( $this, $this->getBasketUser() );

        foreach ( $aDiscounts as $oDiscount ) {

            // storing applied discounts
            $oStdDiscount = $oDiscount->getSimpleDiscount();

            // skipping bundle discounts
            if ( $oDiscount->oxdiscount__oxaddsumtype->value == 'itm' ) {
                continue;
            }

            // saving discount info
            $oStdDiscount->dDiscount = $oDiscount->getAbsValue( $dOldprice );
            if ($dOldprice < $oStdDiscount->dDiscount) {
                $oStdDiscount->dDiscount = $dOldprice;
            }
	

            foreach ( $this->_aVouchers as $sVoucherId => $oStdVoucher ) {
            echo $sVoucherId;
            }

// Abfrage ob der Rabatt gezogen werden soll WENN Gutschein = XYZ
// soll später auf die Gutscheinserien-ID erweitert werden

            if ($sVoucherId !== "eae157c37f683dc8ff3f8201b559bbbe" & $oStdDiscount->dDiscount != 0  ){
            	//if ($sVoucherId != 'eae157c37f683dc8ff3f8201b559bbbe')
                $this->_aDiscounts[$oDiscount->getId()] = $oStdDiscount;
                // substracting product price after discount
                $dOldprice = $dOldprice - $oStdDiscount->dDiscount;
            //}
            }
        }
    

// end
}