B2B Modul | GMAlex

B2B Modul

Leider ist es in der Community Edition von Oxid nicht möglich Händlern Nettopreise anzuzeigen. Deshalb hat ein Freund, welcher einigen als “spass-tea” aus dem Oxid-Forum bekannt sein könnte, von mir ein Modul entwickelt das dieses Ermöglicht.
Hinweis: Das Oxid B2B Modul wurde nur mit der Version 4.2 des Oxid CE Shops getestet, wenn es zu Problemen kommen sollte, kann man das hier gerne melden.

Bedienungsanleitung

Ist das Modul installiert kann man im Oxid-Adminpanel unter Benutzer verwalten->Benutzergruppen einer bestimmten Benutzergruppe B2B-Rechte erteilen. Alle Benutzer dieser Gruppe haben ab dann im Oxid B2B-Zugang.

Installationsanleitung für das Oxid B2B Modul

1. Schritt

Zunächst wird folgende Datei benötigt: Oxid B2B Modul

Nach dem diese heruntergeladen ist müssen die Dateien im Ordner “copy_this” in dem Archiv unter SHOPDIR entpackt werden, wobei SHOPDIR der Ordner ist in dem Oxid installiert ist.

2. Schritt

Jetzt muss man im Oxid-Adminpanel unter Service->Tools->SQL folgende SQL-Befehle ausführen:

1
ALTER TABLE oxgroups ADD B2B TINYINT( 1 ) NOT NULL DEFAULT '0';

3. Schritt

In diesem Schritt muss man bei SHOPDIR/out/basic/de/cust_lang.php, wobei SHOPDIR der Ordner ist in dem Oxid installiert ist, folgendes hinzufügen:

1
2
3
4
5
6
'ACCOUNT_LOGIN_B2B' => 'Dies ist ein reiner Reseller-Shop, bitte melden Sie sich mit Ihrem Account an oder registrieren Sie sich und melden sich anschließend bei: HIER ENTSPRECHENDEN TEXT BZW LINK EINFÜGEN',
'ACCOUNT_LOGIN_B2B_VERIFY' => 'Ihr Account wurde noch nicht als Händler verifiziert, weitere Infos: HIER ENTSPRECHENDEN TEXT BZW LINK EINFÜGEN',
'INC_CMP_BASKET_NETTO' => '(Netto)',
'DETAILS_PLUSSHIPPING_NETTO' => 'zzgl. MwSt., zzgl.',
'INC_FOOTER_EXCLTAXANDPLUSSHIPPING' => '* Alle Preise zzgl. MwSt., zzgl. Versandkosten.',
'INC_HEADER_EXCLTAXANDPLUSSHIPPING' => 'Alle Preise zzgl. MwSt., zzgl. Versandkosten.'

4. Schritt

Nun muss im Oxid-Adminpanel unter Stamdaten->Grundeinstellung->System->Module folgendes eingetragen werden:

1
2
3
4
5
6
7
8
9
oxbasketitem => b2b/basketitemb2b
oxbasket => b2b/basketb2b
oxuser => b2b/userb2b
oxarticle => b2b/articleb2b
usergroup_main => b2b/usergroupmainb2b
oxcmp_user => b2b/cmp_userb2b
oxprice => b2b/priceb2b
oxshopcontrol => b2b/shopcontrolb2b
oxsimplevariant => b2b/simplevariantb2b

5. Schritt

Im letzten Schritt sind folgende Template Anpassungen durchzuführen. Die Templates sind standardmäßig unter SHOPDIR/out/basic/tpl/, wobei SHOPDIR der Ordner ist in dem Oxid installiert ist, zu finden:

admin/usergroup_main.tpl

Nach

1
2
3
4
5
6
7
8
9
<tr>
    <td class="edittext" width="100">
        [{ oxmultilang ident="GENERAL_NAME" }]
    </td>
    <td class="edittext">
        <input type="text" class="editinput" size="25" maxlength="[{$edit->oxgroups__oxtitle->fldmax_length}]" name="editval[oxgroups__oxtitle]" value="[{$edit->oxgroups__oxtitle->value}]" [{ $readonly }] [{ $disableSharedEdit }]>
        [{ oxinputhelp ident="HELP_GENERAL_NAME" }]
    </td>
</tr>

folgendes einfügen

1
2
3
4
5
6
7
8
<tr>
    <td class="edittext" width="70">
        B2B
    </td>
    <td class="edittext">
        <input class="edittext" type="checkbox" name="editval[oxgroups__b2b]" value='1' [{if $edit->oxgroups__b2b->value == 1}]checked[{/if}] [{ $readonly }] [{ $disableSharedEdit }]>
    </td>
</tr>

details.tpl

Folgendes

1
[{ oxmultilang ident="DETAILS_PLUSSHIPPING" }]

ersetzen mit

1
2
3
4
5
[{if $oxcmp_user->b2b}]
    [{ oxmultilang ident="DETAILS_PLUSSHIPPING_NETTO" }]
[{else}]
    [{ oxmultilang ident="DETAILS_PLUSSHIPPING" }]
[{/if}]

Folgendes

[{$priceItem->fbrutprice}]

ersetzen mit

[{if $oxcmp_user->b2b}]
    [{$priceItem->fnetprice}]
[{else}]
    [{$priceItem->fbrutprice}]
[{/if}]

_footer.tpl

Folgendes

1
[{ oxmultilang ident="INC_FOOTER_INCLTAXANDPLUSSHIPPING" }]

ersetzen mit

1
2
3
4
5
[{if $oxcmp_user->b2b}]
    [{ oxmultilang ident="INC_FOOTER_EXCLTAXANDPLUSSHIPPING" }]
[{else}]
    [{ oxmultilang ident="INC_FOOTER_INCLTAXANDPLUSSHIPPING" }]
[{/if}]

inc/popup_basket.tpl

Nach

1
[{ $oxcmp_basket->getFDeliveryCosts() }] [{ $currency->sign}]

folgendes einfügen

1
2
3
[{if $oxcmp_user->b2b}]
    [{ oxmultilang ident="INC_CMP_BASKET_NETTO" }]
[{/if}]

Folgend

[{ $oxcmp_basket->getFProductsPrice()}] [{ $currency->sign}]

ersetzen mit

1
2
3
4
5
6
7
8
9
[{if $oxcmp_user->b2b}]
    [{ $oxcmp_basket->getProductsNetPrice() }]
[{else}]
    [{ $oxcmp_basket->getFProductsPrice()}]
[{/if}]
[{ $currency->sign}]
[{if $oxcmp_user->b2b}]
    [{ oxmultilang ident="INC_CMP_BASKET_NETTO" }]
[{/if}]

dyn/mini_basket.tpl

Nach

1
[{ $oxcmp_basket->getFDeliveryCosts() }] [{ $currency->sign}]

folgendes einfügen

1
2
3
[{if $oxcmp_user->b2b}]
    [{ oxmultilang ident="INC_CMP_BASKET_NETTO" }]
[{/if}]

Folgendes

1
[{ $oxcmp_basket->getFProductsPrice()}] [{ $currency->sign}]

ersetzen mit

1
2
3
4
5
6
7
8
9
[{if $oxcmp_user->b2b}]
    [{ $oxcmp_basket->getProductsNetPrice() }]
[{else}]
    [{ $oxcmp_basket->getFProductsPrice()}]
[{/if}]
[{ $currency->sign}]
[{if $oxcmp_user->b2b}]
    [{ oxmultilang ident="INC_CMP_BASKET_NETTO" }]
[{/if}]

dyn/top_basket.tpl

Folgendes

1
[{ $oxcmp_basket->getFProductsPrice()}]

ersetzen mit

1
2
3
4
5
[{if $oxcmp_user->b2b}]
    [{$oxcmp_basket->getProductsNetPrice()}]
[{else}]
    [{ $oxcmp_basket->getFProductsPrice()}]
[{/if}]

_path.tpl

Folgendes

1
[{ oxmultilang ident="INC_HEADER_INCLTAXANDPLUSSHIPPING" }]

ersetzen mit

1
2
3
4
5
[{if $oxcmp_user->b2b}]
    [{ oxmultilang ident="INC_HEADER_EXCLTAXANDPLUSSHIPPING" }]
[{else}]
    [{ oxmultilang ident="INC_HEADER_INCLTAXANDPLUSSHIPPING" }]
[{/if}]

6. Schritt

Unter SHOPDIR/tmp/, wobei SHOPDIR der Ordner ist in dem Oxid installiert ist müssen jetzt nun noch alle Dateien gelöscht werden. Keine Angst dies sind nur temporäre Dateien die der Oxid-Shop bei bedarf wieder neu generiert.

Individuelle Anpassungen

Um individuelle Anpassungen an die eigenen Bedürfnisse vorzunehmen ist ein Blick in SHOPDIR/modules/b2b/shopcontrolb2b.php nötig, wobei SHOPDIR der Ordner ist in dem Oxid installiert ist.

Anpassung welche Seiten für nicht B2B-Nutzer einsehbar sind

Hierzu betrachtet man folgende zwei Arrays

1
2
protected $_showContentToNonB2B = array('oximpressum');
protected $_showViewsToNonB2B = array('account', 'forgotpwd', 'register', 'login', 'contact');

In diesem Fall ist es so, dass durch

1
protected $_showContentToNonB2B = array('oximpressum');

das das Impressum nicht eingeloggten Nutzern, also der nicht B2B-Kunden, angezeigt wird. Diese Einträge entsprechen den Idents die unter Kundeninformationen->CMS-Seiten->Stamm->Ident. zu finden sind.
Bei

1
protected $_showViewsToNonB2B = array('account', 'forgotpwd', 'register', 'login', 'contact');

wird angegeben welche statischen Seiten (Views) der nicht eingeloggten Nutzern, also der nicht B2B-Kunden, angezeigt bekommt und betreten darf. Die Voreinstellungen welche hier getroffen wurden dürften im Regelfall so stimmen, da der Nutzer sich hier:

  • Sich mit seinem vorhanden Account anmelden bzw. diesen verwalten kann (account)
  • Ein neues Passwort anfordern kann (forgotpwd)
  • Einen neuen Account registrien kann (register)
  • Sich mit seinem vorhanden Account anmelden kann (login)
  • Die Kontaktseite aufrufen kann (contact)

Falls eine der aufgelisteten Aktionen nicht gewünscht ist muss einfach der entsprechende Eintrag entfernt werden.

35 Responses to B2B Modul

  1. Zu Punkt 3
    Der Text muss hinter:
    $aLang = array(

    ‘charset’ => ‘ISO-8859-15′,

    eingefügt werden. Außerdem ist ein Komma hinter ‘ISO-8859-15′ wichtig.


  2. Hast Du das Modul zwischenzeitlich mit einer neueren OXID Version getestet, bzw. wird es noch weiterentwickelt?


  3. Sehr nettes Modul, läuft anscheinend auch in der neuesten Version (4.4.1) einwandfrei.
    Ich habe es allerdings anpassen müssen, ich möchte, dass generell jeder nur Nettopreise sieht und auch nicht angemeldete User Zufriff auf alles haben.
    Ansonsten super, danke dafür.


  4. Hallo, ich habe nach Eingabe aller Daten folgende Fehlermeldung:

    SQL query (1) :
    ALTER TABLE oxgroups ADD B2B TINYINT( 1 ) NOT NULL DEFAULT ’0′

    Error message : Duplicate column name ‘B2B’

    Error number : 1060

    Bitte um Hilfe!

    MFG
    Angelo


  5. @Oliver das bräuchte ich auch, kannst du kurz die entscheidenden Stellen aufzeigen?


  6. hallo
    hat das schon jemand auf dieser version : 4.3.0_26948 getestet ??
    hat bei mir nicht geklappt.
    thx


  7. Funktioniert alles Wunderbar. Vielen Dank.

    Wichtig währe noch eine Anpassung der myorder.php, für die Rechnung. Weil dort funktioniert das Modul leider nicht.

    Grüße


  8. Hi,

    Ich habe wenig bis gar keine Ahnung von PHP. Habe aber gerade mal in der userb2b.php folgendes:

    oxUtils::getInstance()->redirect( $this->getConfig()->getShopUrl());

    ersetzt durch:

    oxUtils::getInstance()->redirect( $this->getConfig()->getShopHomeUrl().’cl=account’);

    Jetzt komm ich zu keiner “blank page” mehr. (Weder beim Login noch nach einer Registrierung)


  9. So habe es jetzt bei der Version 4.4.4 eingebaut und funktioniert soweit ganz guit. Einzige Fehler, die aufgetreten sind, bei der Register kommt eine weisse Seite nachdem absneden der Daten. Wenn man den Kunden dann aber freischaltet und dann auf neuladen geht, erscheint der Shop… liegt eventuell damit zusammen. Wie kann man dies Händeln oder einen anderen redirect einabuen, auf eine CMS Seite wie Impressum und dort schreibt “Vielen Dank für die Anmeldung, bitte senden Sie IHren Gewerbeschein nach ….”

    2. Problem, wenn man eingeloggt ist, dann erscheint der Satz
    “‘Dies ist ein reiner Reseller-Shop, bitte melden Sie sich mit Ihrem Account an oder registrieren Sie sich und melden sich anschließend bei: HIER ENTSPRECHENDEN ” doppelt…

    Ansonsten klappt alles mit Versandkosten etc.


  10. Hmmm… nach dem Versuch, die Module einzutragen erhalte ich:
    “The requested URL /admin/offline.html was not found on this server.”
    nanu?


  11. Problem behoben, alles neu gemacht.
    Problem nun:
    Der Shop ist in Englisch. Selbst wenn Englisch in den Sprachen ausgeschaltet ist und Deutsch als einzige Sprache eingeschaltet ist und zusätzlich als Standardsprache. TMP-Ordner ist gelöscht. Problem bleibt. Was tun?

    Zweites Anliegen:
    “Anpassung welche Seiten für nicht B2B-Nutzer einsehbar sind” <<< wie stelle ich es an, dass _alle_ Seiten sichtbar sind? Dieses Login-Fenster macht wenig Sinn, da an der Seite die Produkte eh in den Bereichen "TOP of the Shop " und "Bargain" sichtbar sind.

    Kann jemand bitte helfen?


  12. Kurze Frage: Wäre es vielleicht sinnig wenn man die Felder Firma und Ust.Id bei der Anmeldung zu Pflichtfeldern macht.


  13. Habe das Modul in der Shopversion 4.4.7_33396 eingebaut.
    Soweit scheint das auch alles gut zu funktionieren.
    Allerdings habe auch ich das Problem, dass nach einer neuen Registrierung der Browser eine weiße Seite anzeigt.

    In dieser Shopversion heißt es in Schritt 5 in der _patch.tpl auch nicht mehr
    [{ oxmultilang ident="INC_HEADER_INCLTAXANDPLUSSHIPPING" }]
    sondern
    [{ oxmultilang ident="INC_HEADER_INCLTAXPLUSSHIPPING" }]


  14. Moin!

    Sach ma, berücksichtigst Du auch prozentuale Gutscheine? D.h. wird z.B. ein 10% Gutschein vom Netto- oder Bruttopreis berechnet?


  15. Hallo, tolles Modul!
    Gibt es schon Erfahrungswerte zu 4.5.0 ?


  16. Hi,

    super Modul. Bei meinen ersten Tests wir allerdings der Preis pro Stück noch in Brutto ausgegeben. Wird dieser Preis mit berücksichtigt?

    Grüße


  17. Hi, bei mir läuft das Modeul leider nicht so wie ich mir das vorgestellt habe. Nun wollte ich den Shop wieder in Uhrform zurück setzen. Aber ich bekomme die SQL Datenbank nicht zurückgestellt. Kann mir bitte jemand helfen! Da mein Shop nur noch eine WEISSE Seite ist.
    Vielen Dank im Voraus…


  18. Hallo, ich bekomme mit der 4.4.6_32697 leider auch nur noch eine weiße Seite. Was nun tun?


  19. Um das Problem mit der weißen Seite zu beheben, sollte in UserB2B der Redirect folgendermaßen durchgeführt werden:

    oxUtils::getInstance()->redirect( $this->getConfig()->getShopUrl(), false);


  20. ein “rumgefickel” ich glaub das mit OXID taugt doch nix… überall wo man sucht, was findet wovon mal glaubt es taugt erweist sich entweder für ne alte Version oder doch nur als unausgegorene Idee… Sorry, Gemeinde – dat taugt nicht


  21. Es steht dir frei OXID und die angebotenen Erweiterungen zu verwenden oder es zu lassen. Wenn du etwas Geld investiert hast du sicher auch kein “gefRickel” (kommt nicht von f*cken XD), ansonsten hast du halt etwas Arbeit. Wenn du dir die Hände nicht schmutzig machen willst bezahle einen Dienstleister oder investiere gleich in eine EE.


  22. Nach ein paar Anpassungen geht es auch in Version 4.5.1


    in /out/TEMPLATE/tpl/layout/footer.tpl

    suchen:
    [{ oxmultilang ident="FOOTER_INCLTAXANDPLUSSHIPPING" }]

    ersetzen mit:
    [{if $oxcmp_user->b2b}]
    [{ oxmultilang ident="INC_FOOTER_EXCLTAXANDPLUSSHIPPING" }]
    [{else}]
    [{ oxmultilang ident="FOOTER_INCLTAXANDPLUSSHIPPING" }]
    [{/if}]

    in /out/TEMPLATE/tpl/layout/page.tpl

    suchen:
    [{ oxmultilang ident="WIDGET_PRODUCT_PRODUCT_PLUSSHIPPING" }]

    ersetzen mit:
    [{if $oxcmp_user->b2b}]
    [{ oxmultilang ident="DETAILS_PLUSSHIPPING_NETTO" }]
    [{else}]
    [{ oxmultilang ident="WIDGET_PRODUCT_PRODUCT_PLUSSHIPPING" }]
    [{/if}]


  23. Hi,

    Does anyone know that how can i display applied coupon discount price excl VAT as currently discount price displayed incl. VAT?


  24. Und auch in OXID CE Version 4.5.4 einsetzbar. Beim Logout muss eben der Redirect noch angepasst werden.


  25. Bei mir werden die Benutzergruppen im Backend nicht mehr angezeigt. Auch eine händische Rechtevergabe direkt in der Datenbank funktioniert nicht. Komischerweise installiere ich dieses Modul bereits ein zweites Mal und die erste Installation verlief reibungslos. Was kann da schief gelaufen sein? (Beide Shops auf dem gleichen Server)


  26. Soeben selber gelöst. Kleiner Tipp meinerseits: Views updaten ;-) (Nach SQL-Befehl unten “VIEWS jetzt updaten”


  27. Hi,

    aktuell verwenden wir eine CE von OXID wollen aber bald auf eine PE wechseln. Funtkioniert denn deine Anleitung da noch immer oder wird es da Probleme geben? Soweit ich das im Kopf habe, sollte der Code ja nicht unterschiedlich sein zwischen CE und PE?

    Danke!


  28. Hallo,

    gibt es eine Anleitung für das Azure-Template? Ich komme mit der Installationsanleitung nicht weiter.

    Gruß
    Hüseyin


  29. Hallo Allerseits,
    Ich benötige ein B2B- Modul das mit Azure funktioniert und das nicht von bestimmten Benutzergruppen abhängig ist sonder einfach nur den shop auf netto setzt und nur am Ende eines Bestellvorgangs die MWSt. berechnet und ausweist.
    Ich habe in der letzten Zeit soviel über diese Thematik gelesen, zuletzut dann hier, dass ich den Überblick verloren habe und darum hier mein anliegen reinschreibe.
    Gibt es eine Möglichkeit meine Vorstellungen mit Deinem Modul zu realisieren?
    Vorab schon einmal vielen Dank.

    Gruß,

    Dirk


  30. Hallo,
    wir würden gern das Modul verwenden, haben jedoch erst auf 4.6.1 geupdated und können es nicht einbinden.
    Gibt es hierfür schon eine Lösung?


  31. Hallo, wer hat das Modul schon in 4.6 installiert? Ich kann keine zuweisungen (schritt4) machen kann mir jmd. helfen?
    Danke


  32. hallo,
    wie kann man das modul unter der 4.7.x CE zum laufen bringen?
    an welchen stellen muss man “schrauben”?

    VG
    Oli


  33. Bei Oxid 4.5.0 werden Rabatte im Warenkorb leider brutto angezeigt. Leider habe ich keine Ahnung, wo genau man hier noch etwas ändern muss.


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>