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
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.
26 Responses to B2B Modul
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.
Hast Du das Modul zwischenzeitlich mit einer neueren OXID Version getestet, bzw. wird es noch weiterentwickelt?
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.
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
@Oliver das bräuchte ich auch, kannst du kurz die entscheidenden Stellen aufzeigen?
hallo
hat das schon jemand auf dieser version : 4.3.0_26948 getestet ??
hat bei mir nicht geklappt.
thx
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
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)
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.
Hmmm… nach dem Versuch, die Module einzutragen erhalte ich:
“The requested URL /admin/offline.html was not found on this server.”
nanu?
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?
Kurze Frage: Wäre es vielleicht sinnig wenn man die Felder Firma und Ust.Id bei der Anmeldung zu Pflichtfeldern macht.
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" }]
Moin!
Sach ma, berücksichtigst Du auch prozentuale Gutscheine? D.h. wird z.B. ein 10% Gutschein vom Netto- oder Bruttopreis berechnet?
Hallo, tolles Modul!
Gibt es schon Erfahrungswerte zu 4.5.0 ?
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
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…
Hallo, ich bekomme mit der 4.4.6_32697 leider auch nur noch eine weiße Seite. Was nun tun?
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);
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
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.
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}]
—
Hi,
Does anyone know that how can i display applied coupon discount price excl VAT as currently discount price displayed incl. VAT?
Und auch in OXID CE Version 4.5.4 einsetzbar. Beim Logout muss eben der Redirect noch angepasst werden.