Benutzergruppe von Rabatten ausschließen

Gibt es eine Möglichkeit Benutzergruppen von Rabatten auszuschließen?

Folgendes Problem: Wir haben zu den normalen Preisen, weitere Preisgruppen mit mit reduzierten Preisen für gute Kunden (oxid bietet ja die Möglichkeit). Nun möchten einen Rabatt einstellen und auf die Kunden mit den normalen Preisen ebschränken. Also habe ich über die Zuordnung in der Rabatteinstellung die Benutzergruppe ‘Kunde’ zugeordnet. Dadurch bekommen aber auch die Kunden in der Benutzergruppe Preise A, Preise B, Preise C den Rabatt, was aber nicht gewünscht ist.

Gibt es eine möglichkeit den Rabatt nur auf die “normal” Kunden anzuwenden und die Preisgruppen auszuschließen?

Hallo,
Oxid kann das von Hause aus leider nicht. Für einen Kunden habe ich so etwas aber schon mal programmiert. Hier war es ähnlich wie bei dir.
Es gab eine Art Premiumgruppe, die spezielle Preise erhalten hat, dafür aber keine weiteren Rabatte erhalten sollte.
Die Anpassung ist aber in einem größeren Modul des Kunden verbaut. Hier müsste man die Änderung in ein separates Modul packen, so dass du es in deinem Shop verwenden kannst.
Wenn Du Interesse hast, kann ich den Aufwand dafür schätzen.

Grüße
Fabian

Hi,

danke für deine Antwort. Brauchst du nicht mehr in ein Seperates Modul packen.
Ich habe das dann eben doch schnell selber umgesetzt.

Falls es wenn interessiert hier der Code (aus Zeitmangel nicht in ein Modul gepackt, wenn jemand das machen will kann er es gerne tun):

Das geänderte Admin Template, damit der Button “Benutzergruppen blockieren” auch angezeigt wird (eine Tabellenzeile (TR) ist dazugekommen für den Button):

[B]Name: cm_discount_users.tpl[/B]


[{include file="headitem.tpl" title="GENERAL_ADMIN_TITLE"|oxmultilangassign}]

[{ if $readonly}]
    [{assign var="readonly" value="readonly disabled"}]
[{else}]
    [{assign var="readonly" value=""}]
[{/if}]

<form name="transfer" id="transfer" action="[{ $oViewConf->getSelfLink() }]" method="post">
    [{ $oViewConf->getHiddenSid() }]
    <input type="hidden" name="oxid" value="[{ $oxid }]">
    <input type="hidden" name="cl" value="discount_users">
    <input type="hidden" name="editlanguage" value="[{ $editlanguage }]">
</form>

<form name="myedit" id="myedit" action="[{ $oViewConf->getSelfLink() }]" method="post">
[{ $oViewConf->getHiddenSid() }]
<input type="hidden" name="cl" value="discount_users">
<input type="hidden" name="fnc" value="">
<input type="hidden" name="oxid" value="[{ $oxid }]">
<input type="hidden" name="editval[discount__oxid]" value="[{ $oxid }]">

<table cellspacing="0" cellpadding="0" border="0" width="98%">
    <tr>
        <td valign="top" class="edittext" align="left" width="50%">
            <input [{ $readonly }] type="button" value="[{ oxmultilang ident="GENERAL_ASSIGNGROUPS" }]" class="edittext" onclick="JavaScript:showDialog('&cl=discount_users&aoc=1&oxid=[{ $oxid }]');">
        </td>
        <td valign="top" class="edittext" align="left">
            <input [{ $readonly }] type="button" value="[{ oxmultilang ident="GENERAL_ASSIGNUSERS" }]" class="edittext" onclick="JavaScript:showDialog('&cl=discount_users&aoc=2&oxid=[{ $oxid }]');">
        </td>
    </tr>
    <tr>
        <td valign="top" class="edittext" align="left" width="50%">
            <input [{ $readonly }] type="button" value="[{ oxmultilang ident="CM_GENERAL_BLOCKGROUPS" }]" class="edittext" onclick="JavaScript:showDialog('&cl=discount_users&aoc=3&oxid=[{ $oxid }]');">
        </td>
        <td valign="top" class="edittext" align="left">
        </td>
    </tr>
</table>

</form>

[{include file="bottomnaviitem.tpl"}]
[{include file="bottomitem.tpl"}]

Template mit den Auswahllisten um Benutzergruppen zu blocken:

[B]Name: cm_discount_groups_block.tpl[/B]


[{include file="popups/headitem.tpl" title="GENERAL_ADMIN_TITLE"|oxmultilangassign}]

<script type="text/javascript">
    initAoc = function()
    {
        YAHOO.oxid.container1 = new YAHOO.oxid.aoc( 'container1',
                                                    [ [{ foreach from=$oxajax.container1 item=aItem key=iKey }]
                                                       [{$sSep}][{strip}]{ key:'_[{ $iKey }]', ident: [{if $aItem.4 }]true[{else}]false[{/if}]
                                                       [{if !$aItem.4 }],
                                                       label: '[{ oxmultilang ident="GENERAL_AJAX_SORT_"|cat:$aItem.0|oxupper }]',
                                                       visible: [{if $aItem.2 }]true[{else}]false[{/if}]
                                                       [{/if}]}
                                                      [{/strip}]
                                                      [{assign var="sSep" value=","}]
                                                      [{ /foreach }] ],
                                                    '[{ $oViewConf->getAjaxLink() }]cmpid=container1&container=cm_discount_groups_block&synchoxid=[{ $oxid }]'
                                                    );

        [{assign var="sSep" value=""}]

        YAHOO.oxid.container2 = new YAHOO.oxid.aoc( 'container2',
                                                    [ [{ foreach from=$oxajax.container2 item=aItem key=iKey }]
                                                       [{$sSep}][{strip}]{ key:'_[{ $iKey }]', ident: [{if $aItem.4 }]true[{else}]false[{/if}]
                                                       [{if !$aItem.4 }],
                                                       label: '[{ oxmultilang ident="GENERAL_AJAX_SORT_"|cat:$aItem.0|oxupper }]',
                                                       visible: [{if $aItem.2 }]true[{else}]false[{/if}]
                                                       [{/if}]}
                                                      [{/strip}]
                                                      [{assign var="sSep" value=","}]
                                                      [{ /foreach }] ],
                                                    '[{ $oViewConf->getAjaxLink() }]cmpid=container2&container=cm_discount_groups_block&oxid=[{ $oxid }]'
                                                    );

        YAHOO.oxid.container1.getDropAction = function()
        {
            return 'fnc=adddiscgroup';
        }
        YAHOO.oxid.container2.getDropAction = function()
        {
            return 'fnc=removediscgroup';
        }
    }
    $E.onDOMReady( initAoc );
</script>

    <table width="100%">
        <colgroup>
            <col span="2" width="50%" />
        </colgroup>
        <tr class="edittext">
            <td colspan="2">[{ oxmultilang ident="GENERAL_AJAX_DESCRIPTION" }]<br>[{ oxmultilang ident="GENERAL_FILTERING" }]<br /><br /></td>
        </tr>
        <tr class="edittext">
            <td align="center"><b>[{ oxmultilang ident="GENERAL_ALLGROUPS2" }]</b></td>
            <td align="center"><b>[{ oxmultilang ident="DISCOUNT_USERS_SETGROUPS" }]</b></td>
        </tr>
        <tr>
            <td valign="top" id="container1"></td>
            <td valign="top" id="container2"></td>
        </tr>
        <tr>
            <td class="oxid-aoc-actions"><input type="button" value="[{ oxmultilang ident="GENERAL_AJAX_ASSIGNALL" }]" id="container1_btn"></td>
            <td class="oxid-aoc-actions"><input type="button" value="[{ oxmultilang ident="GENERAL_AJAX_UNASSIGNALL" }]" id="container2_btn"></td>
        </tr>
    </table>

</body>
</html>

Die geänderte Renderfunktion damit unser Admin Template auch angezeigt wird, bzw das Template mit den Listen zum Benutzergruppen blocken.

[B]Name: cm_discount_users.php[/B]


<?php
class cm_discount_users extends cm_discount_users_parent
{        
    public function render()
    {
        parent::render();

        $soxId = $this->getEditObjectId();
        $sSelGroup = oxRegistry::getConfig()->getRequestParameter("selgroup");

        // all usergroups
        $oGroups = oxNew('oxlist');
        $oGroups->init('oxgroups');
        $oGroups->selectString("select * from " . getViewName("oxgroups", $this->_iEditLang));

        $oRoot = new stdClass();
        $oRoot->oxgroups__oxid = new oxField("");
        $oRoot->oxgroups__oxtitle = new oxField("-- ");
        // rebuild list as we need the "no value" entry at the first position
        $aNewList = array();
        $aNewList[] = $oRoot;

        foreach ($oGroups as $val) {
            $aNewList[$val->oxgroups__oxid->value] = new stdClass();
            $aNewList[$val->oxgroups__oxid->value]->oxgroups__oxid = new oxField($val->oxgroups__oxid->value);
            $aNewList[$val->oxgroups__oxid->value]->oxgroups__oxtitle = new oxField($val->oxgroups__oxtitle->value);
        }

        $this->_aViewData["allgroups2"] = $aNewList;

        if (isset($soxId) && $soxId != "-") {
            $oDiscount = oxNew("oxdiscount");
            $oDiscount->load($soxId);

            if ($oDiscount->isDerived()) {
                $this->_aViewData["readonly"] = true;
            }
        }

        $iAoc = oxRegistry::getConfig()->getRequestParameter("aoc");
        if ($iAoc == 1) {
            $oDiscountGroupsAjax = oxNew('discount_groups_ajax');
            $this->_aViewData['oxajax'] = $oDiscountGroupsAjax->getColumns();

            return "popups/discount_groups.tpl";
        } elseif ($iAoc == 2) {
            $oDiscountUsersAjax = oxNew('discount_users_ajax');
            $this->_aViewData['oxajax'] = $oDiscountUsersAjax->getColumns();

            return "popups/discount_users.tpl";
        } elseif ($iAoc == 3) {
            $oDiscountBlockGroupsAjax = oxNew('cm_discount_groups_block_ajax');
            $this->_aViewData['oxajax'] = $oDiscountBlockGroupsAjax->getColumns();

            return "cm_discount_groups_block.tpl";
        }

        return "cm_discount_users.tpl";
    }
}

Klasse für die Funktionen die von ajax aufgerufen werden.

[B]Name: cm_discount_groups_block_ajax.php[/B]


<?php

/**
 * Class manages discount groups
 */
class cm_discount_groups_block_ajax extends ajaxListComponent
{

    /**
     * Columns array
     *
     * @var array
     */
    protected $_aColumns = array('container1' => array( // field , table,  visible, multilanguage, ident
        array('oxtitle', 'oxgroups', 1, 0, 0),
        array('oxid', 'oxgroups', 0, 0, 0),
        array('oxid', 'oxgroups', 0, 0, 1),
    ),
                                 'container2' => array(
                                     array('oxtitle', 'oxgroups', 1, 0, 0),
                                     array('oxid', 'oxgroups', 0, 0, 0),
                                     array('oxid', 'oxobject_block2discount', 0, 0, 1),
                                 )
    );

    /**
     * Returns SQL query for data to fetch
     *
     * @return string
     */
    protected function _getQuery()
    {
        $oConfig = $this->getConfig();
        // active AJAX component
        $sGroupTable = $this->_getViewName('oxgroups');
        $oDb = oxDb::getDb();
        $sId = $oConfig->getRequestParameter('oxid');
        $sSynchId = $oConfig->getRequestParameter('synchoxid');

        // category selected or not ?
        if (!$sId) {
            $sQAdd = " from {$sGroupTable} where 1 ";
        } else {
            $sQAdd = " from oxobject_block2discount, {$sGroupTable} where {$sGroupTable}.oxid=oxobject_block2discount.oxobjectid ";
            $sQAdd .= " and oxobject_block2discount.oxdiscountid = " . $oDb->quote($sId) .
                      " and oxobject_block2discount.oxtype = 'oxgroups' ";
        }

        if ($sSynchId && $sSynchId != $sId) {
            $sQAdd .= " and {$sGroupTable}.oxid not in ( select {$sGroupTable}.oxid " .
                      "from oxobject_block2discount, {$sGroupTable} where {$sGroupTable}.oxid=oxobject_block2discount.oxobjectid " .
                      " and oxobject_block2discount.oxdiscountid = " . $oDb->quote($sSynchId) .
                      " and oxobject_block2discount.oxtype = 'oxgroups' ) ";
        }
        return $sQAdd;
    }

    /**
     * Removes user group from discount config
     */
    public function removeDiscGroup()
    {
        $oConfig = $this->getConfig();

        $aRemoveGroups = $this->_getActionIds('oxobject_block2discount.oxid');
        if ($oConfig->getRequestParameter('all')) {

            $sQ = $this->_addFilter("delete oxobject_block2discount.* " . $this->_getQuery());
            oxDb::getDb()->Execute($sQ);

        } elseif ($aRemoveGroups && is_array($aRemoveGroups)) {
            $sRemoveGroups = implode(", ", oxDb::getInstance()->quoteArray($aRemoveGroups));
            $sQ = "delete from oxobject_block2discount where oxobject_block2discount.oxid in (" . $sRemoveGroups . ") ";
            oxDb::getDb()->Execute($sQ);
        }
    }

    /**
     * Adds user group to discount config
     */
    public function addDiscGroup()
    {
        $oConfig = $this->getConfig();
        $aChosenCat = $this->_getActionIds('oxgroups.oxid');
        $soxId = $oConfig->getRequestParameter('synchoxid');


        if ($oConfig->getRequestParameter('all')) {
            $sGroupTable = $this->_getViewName('oxgroups');
            $aChosenCat = $this->_getAll($this->_addFilter("select $sGroupTable.oxid " . $this->_getQuery()));
        }
        if ($soxId && $soxId != "-1" && is_array($aChosenCat)) {
            foreach ($aChosenCat as $sChosenCat) {
                $oObject2Discount = oxNew("oxbase");
                $oObject2Discount->init('oxobject_block2discount');
                $oObject2Discount->oxobject_block2discount__oxdiscountid = new oxField($soxId);
                $oObject2Discount->oxobject_block2discount__oxobjectid = new oxField($sChosenCat);
                $oObject2Discount->oxobject_block2discount__oxtype = new oxField("oxgroups");
                $oObject2Discount->save();
            }
        }
    }
}

Klasse mit überladener Funktion, damit die geblockten Benutzergruppen auch berücksichtig werden.:

[B]Name: cm_oxdiscountlist.php[/B]


<?php

class cm_oxdiscountlist extendscm_oxdiscountlist_parent
{

    /**
     * If any shops category has "skip discounts" status this parameter value will be true
     *
     * @var bool
     */
    protected $_hasSkipDiscountCategories = null;

    /**
     * Creates discount list filter SQL to load current state discount list
     *
     * @param object $oUser user object
     *
     * @return string
     */
    protected function _getFilterSelect($oUser)
    {
        $oBaseObject = $this->getBaseObject();

        $sTable = $oBaseObject->getViewName();
        $sQ = "select " . $oBaseObject->getSelectFields() . " from $sTable ";
        $sQ .= "where " . $oBaseObject->getSqlActiveSnippet() . ' ';


        // defining initial filter parameters
        $sUserId = null;
        $sGroupIds = null;
        $sCountryId = $this->getCountryId($oUser);
        $oDb = oxDb::getDb();

        // checking for current session user which gives additional restrictions for user itself, users group and country
        if ($oUser) {

            // user ID
            $sUserId = $oUser->getId();

            // user group ids
            foreach ($oUser->getUserGroups() as $oGroup) {
                if ($sGroupIds) {
                    $sGroupIds .= ', ';
                }
                $sGroupIds .= $oDb->quote($oGroup->getId());
            }
        }

        $sUserTable = getViewName('oxuser');
        $sGroupTable = getViewName('oxgroups');
        $sCountryTable = getViewName('oxcountry');

        $sCountrySql = $sCountryId ? "EXISTS(select oxobject2discount.oxid from oxobject2discount where oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxcountry' and oxobject2discount.OXOBJECTID=" . $oDb->quote($sCountryId) . ")" : '0';
        $sUserSql = $sUserId ? "EXISTS(select oxobject2discount.oxid from oxobject2discount where oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxuser' and oxobject2discount.OXOBJECTID=" . $oDb->quote($sUserId) . ")" : '0';
        $sGroupSql = $sGroupIds ? "EXISTS(select oxobject2discount.oxid from oxobject2discount where oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxgroups' and oxobject2discount.OXOBJECTID in ($sGroupIds) ) and (select oxid from oxobject_block2discount where oxobject_block2discount.OXDISCOUNTID=$sTable.OXID and oxobject_block2discount.oxtype='oxgroups' and oxobject_block2discount.OXOBJECTID in ($sGroupIds) LIMIT 1) is null" : '0';

        $sQ .= "and (
            select
                if(EXISTS(select 1 from oxobject2discount, $sCountryTable where $sCountryTable.oxid=oxobject2discount.oxobjectid and oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxcountry' LIMIT 1),
                        $sCountrySql,
                        1) &&
                if(EXISTS(select 1 from oxobject2discount, $sUserTable where $sUserTable.oxid=oxobject2discount.oxobjectid and oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxuser' LIMIT 1),
                        $sUserSql,
                        1) &&
                if(EXISTS(select 1 from oxobject2discount, $sGroupTable where $sGroupTable.oxid=oxobject2discount.oxobjectid and oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxgroups' LIMIT 1 UNION select 1 from oxobject_block2discount, $sGroupTable where $sGroupTable.oxid=oxobject_block2discount.oxobjectid and oxobject_block2discount.OXDISCOUNTID=$sTable.OXID and oxobject_block2discount.oxtype='oxgroups' LIMIT 1),
                        $sGroupSql,
                        1)
            )";
        return $sQ;
    }
}

Die beiden Language Dateien Deutsch/English

[B]Name: cm_lang.php[/B]


<?php

$sLangName = "Deutsch";

// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = array(

//Navigation
    'charset'                            => 'ISO-8859-15',

    'CM_GENERAL_BLOCKGROUPS'             => 'Benutzergruppen blocken',
);

[B]
Name: cm_lang.php[/B]


<?php

$sLangName = "English";

// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = array(

//Navigation
    'charset'                            => 'ISO-8859-15',

    'CM_GENERAL_BLOCKGROUPS'             => 'Block Usersgroups',
);

Hier noch das SQL zum Erstellen der entsprechenden Tabelle in der die geblockten Benutzergruppen abgespeichert werden:


CREATE TABLE oxobject_block2discount like oxobject2discount;

Zur Anmerkung und um Verwirrung zu vermeiden: Wenn Benutzern explizit Rabatte zugeordnet werden, aber die Benutzer in geblockten Benutzergruppen, die für den Rabatt eingestellt wurden, drin sind bekommen Sie den Rabatt nicht.

Falls jemand noch Verbesserungsvorschläge hat oder Fehler findet immer ehr damit. :slight_smile:

Hoi Nitzer,

meinst du, du bekommst das in ein Modul gegossen?

Hi wolkenkrieger. Sorry dafür habe ich im moment keine Zeit. Vielleicht kriegst du es ja selber hin mit der Hilfe von:

Eine kleine Änderung habe ich nocht gemacht:
Das Problem war das die Blockfunktion nur funktionierte wenn auch Benutzergruppen in der “erlaubt Liste” waren.
Ein Unregistrierter Benutzer hat aber numal keine Benutzergruppen und hätte deswegen auch den Rabatt nicht angezeigt bekommen. Habe das jetzt so geändert, das es auch funktioniert, wenn keine Benutzergruppen in der “erlaubt Liste” stehen. Somit sehen dann erstmal alle unregistrierten/unangemeldeten Nutzer den Rabatt.

Einziger kleiner “Nachteil” ist das Kunden die sich im Checkout anmelden, dann eventuell andere Preise haben (da sie vielleicht vom Rabatt ausgeschlossen sind) und diese geändert bekommen ohne einen Hinweis. Man kann halt nicht alles haben…

[B]Name: cm_oxdiscountlist.php[/B]


<?php

class cm_oxdiscountlist extendscm_oxdiscountlist_parent
{

    /**
     * If any shops category has "skip discounts" status this parameter value will be true
     *
     * @var bool
     */
    protected $_hasSkipDiscountCategories = null;

    /**
     * Creates discount list filter SQL to load current state discount list
     *
     * @param object $oUser user object
     *
     * @return string
     */
    protected function _getFilterSelect($oUser)
    {
        $oBaseObject = $this->getBaseObject();

        $sTable = $oBaseObject->getViewName();
        $sQ = "select " . $oBaseObject->getSelectFields() . " from $sTable ";
        $sQ .= "where " . $oBaseObject->getSqlActiveSnippet() . ' ';


        // defining initial filter parameters
        $sUserId = null;
        $sGroupIds = null;
        $sCountryId = $this->getCountryId($oUser);
        $oDb = oxDb::getDb();

        // checking for current session user which gives additional restrictions for user itself, users group and country
        if ($oUser) {

            // user ID
            $sUserId = $oUser->getId();

            // user group ids
            foreach ($oUser->getUserGroups() as $oGroup) {
                if ($sGroupIds) {
                    $sGroupIds .= ', ';
                }
                $sGroupIds .= $oDb->quote($oGroup->getId());
            }
        }

        $sUserTable = getViewName('oxuser');
        $sGroupTable = getViewName('oxgroups');
        $sCountryTable = getViewName('oxcountry');

        $sCountrySql = $sCountryId ? "EXISTS(select oxobject2discount.oxid from oxobject2discount where oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxcountry' and oxobject2discount.OXOBJECTID=" . $oDb->quote($sCountryId) . ")" : '0';
        $sUserSql = $sUserId ? "EXISTS(select oxobject2discount.oxid from oxobject2discount where oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxuser' and oxobject2discount.OXOBJECTID=" . $oDb->quote($sUserId) . ")" : '0';
        $sGroupSql = $sGroupIds ? "EXISTS(select oxobject2discount.oxid from oxobject2discount where oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxgroups' and oxobject2discount.OXOBJECTID in ($sGroupIds) )" : '0';
        $sBlockedGroupSql = $sGroupIds ? "NOT EXISTS(select oxid from oxobject_block2discount where oxobject_block2discount.OXDISCOUNTID=$sTable.OXID and oxobject_block2discount.oxtype='oxgroups' and oxobject_block2discount.OXOBJECTID in ($sGroupIds) LIMIT 1)" : '1';

        $sQ .= "and (
            select
                if(EXISTS(select 1 from oxobject2discount, $sCountryTable where $sCountryTable.oxid=oxobject2discount.oxobjectid and oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxcountry' LIMIT 1),
                        $sCountrySql,
                        1) &&
                if(EXISTS(select 1 from oxobject2discount, $sUserTable where $sUserTable.oxid=oxobject2discount.oxobjectid and oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxuser' LIMIT 1),
                        $sUserSql,
                        1) &&
                if(EXISTS(select 1 from oxobject2discount, $sGroupTable where $sGroupTable.oxid=oxobject2discount.oxobjectid and oxobject2discount.OXDISCOUNTID=$sTable.OXID and oxobject2discount.oxtype='oxgroups' LIMIT 1),
                        $sGroupSql,
                        1) &&
                if(EXISTS(select 1 from oxobject_block2discount, $sGroupTable where $sGroupTable.oxid=oxobject_block2discount.oxobjectid and oxobject_block2discount.OXDISCOUNTID=$sTable.OXID and oxobject_block2discount.oxtype='oxgroups' LIMIT 1),
                        $sBlockedGroupSql,
                        1)
            )";
        return $sQ;
    }
}

Habe soetwas gerade machen lassen als Modul:

Hoi Nitzer,

ich hab das jetzt mal in ein Modul gegossen … aber: im Popup bleibt die Benutzergruppenliste leer.

Hast du eine Idee, wo ich suchen könnte?

Danke dir :slight_smile:

[Nachtrag]

Funktioniert jetzt.

Man sollte die Tabellen auch auf der lokalen Dev-maschine anlegen und nicht auf dem Produktivserver

Hallo @wolkenkrieger,

kannst Du das Modul bitte noch für alle verfügbar machen, am besten auf GitHub?

Danke und Gruß

Ja, mach ich selbstverständlich …

Ich bring da grad noch die Gutscheine mit rein (da gibt es ja im Grunde exakt dasselbe Problem) und dann werde ich mich wohl mal mit GitHub beschäftigen müssen :slight_smile:

Sag halt Bescheid, wenn Du dort Hilfe brauchst :wink:

Irgendwie sind die files da bei GitHub gelandet …

Aber erschlagt mich jetzt nicht mit pull requests und anderen Böhmischen Dörfern (ich geb echt mein Bestes) :smiley:

Was geht aktuell?

Rabatte sperren für Benutzergruppen - die Credits dafür gehen an Nitzer (ich hoffe, es geht ok, wenn das mein Kürzel bekommen hat wegen Namespace und so)

Gutscheinserien sperren für Benutzergruppen

Getestet mit meiner 4.8.12

Top! Super gemacht.

P.S.: Du hast dir die Arbeit gemacht mit dem Modul ist doch dann ok wenn dein Kürzel drin steht, zumal du das ganze noch erweitert hast.

[Nachtrag]

GitHub-Verzeichnis angepasst (neues Repository) - macht es für mich einfacher und vereinfacht auch die Installation etwas (vendormetada dabei usw.).

1 Like

Hallo zusammen,

ich hab noch was Supercooles für Euch :slight_smile:

Damit kann das Modul nun auch vom OXID Module Connector (OMC) gesucht und gefunden werden. Der OMC ist selbst ein Modul, das man sich im Shop installiert, um von dort aus direkt andere Module installieren zu können.

Wir wollen dort Step-by-Step möglichst alle verfügbaren Module unterbringen. Wer mag, kann gern Pull Requests mit den eigenen (oder auch fremden) Modulen in das Projekt schicken.

Gruß

Hallo Wolkenkrieger, ich wollte mich nur für das geniale Tool bedanken, dass mir einen Tag vor Black Friday dermaßen den Arsch gerettet hat. Ich musste dringend die Preis A Gruppe von den Rabatten ausschließen und erst heute morgen wurde mir bewusst, dass das mit Bordmitteln nicht möglich ist. Also nochmal vielen Dank. Super, dass es Leute wie Euch gibt, die sowas einfach online stellen nach all der Mühe.

1 Like