Neue Kundengruppe bei Kundengruppen Check Funktion
22. Okt 2009 08:41 0 Kommentare
Sicher, einige von euch nutzen die Kundengruppen Check Funktion und kennen das Problem die bei einem nachträglichen Einfügen einer neuen Kundengruppe entsteht. Nämlich, alle Artikel-Kategorien samt Artikel und Contents müssen neu durchgegangen und die neu erstellte Kundengruppe in den Kundengruppen Check aufgenommen werden.
Screenshots

Und her noch ein Bild wie Kundengruppen Check auf der Kategorien und Artikel Maske aussieht.

Bei einigen dutzend Artikeln ist das sicher kein grosses Problem, bei einigen tausend - wird's komplizierter.
Mit SQL könnte man das ganze Prozedere in einer guten halben Sunde lösen.
Datenbank Tabellen und Felder ermitteln die den Kundengruppen Check beinhalten
Dies ist relativ schnell gemacht. Ein Blick in die Datei "customers_status.php" verrät uns folgendes:
- Ein neuer Eintrag in der Tabelle "customers_status" für neue Kundengruppe
- Eine neue Tabelle "personal_offers_by_customers_status_xy"
- Ein neues Feld "group_permission_xy" jeweils in der Tabellen "products" und "categories"
Hinzu kommt noch ein Eintrag in der Tabelle "content_manager", der allerdings schon sein Installation standardmässig mitdabei ist, den wir aber trotzdem berücksichtigen müssen. Das Feld lautet "group_ids".
Nachdem wir nun alle Datenbank-Änderungen kennen, machen wir uns an SQL Code ran.
Der SQL Code für Kundengruppen Check
Als erstes fügen wir einen neuen Eintrag in die Tabelle "customers_status", der einen Namen für unsere neue Kundengruppe und ein paar weitere Einstellungen beinhaltet. Die Einstellungen können später über die Administration bequem angepasst werden.
INSERT INTO customers_status VALUES (5, 2, 'Kunde 5', 1, 'customer_status.gif', 0.00, '1', 0.00, '1', 1, 1, 1, '', '', 1, 1, 1);
Nun erstellen wir eine neue Tabelle die alle abweichende Artikel-Preise beinhaltet. Bevor wir das allerdings tun, müssen wir alle Artikel-Preise der Tabelle "personal_offers_by_customers_status_2" als eine SQL-Datei exportieren. Die Tabelle bildet alle Preise für Kundengruppe "Neuer Kunde" ab, die wir als Basistabelle für unsere neue Kundengruppen Tabelle nehmen.
Die Tabellendefinition aus unserer exportieren SQL-Datei nehmen wir als Basis und ändern lediglich die ID am Ende der Tabellennamen. Also statt "personal_offers_by_customers_status_2" lautet sie nun "personal_offers_by_customers_status_5
".
CREATE TABLE personal_offers_by_customers_status_5 (
price_id int(11) NOT NULL AUTO_INCREMENT,
products_id int(11) NOT NULL DEFAULT '0',
quantity int(11) DEFAULT NULL,
personal_offer decimal(15,4) DEFAULT NULL,
PRIMARY KEY (`price_id`)
) ENGINE=MyISAM AUTO_INCREMENT=885 ;
Im nächsten Schritt passen wir alle INSERT INTO Einträge der SQL-Datei anhand unserer neuen Tabelle an.
Ein Beispiel, statt
INSERT INTO personal_offers_by_customers_status_2 VALUES(393, 394, 1, 49.9000);
sollte nun
INSERT INTO personal_offers_by_customers_status_5 VALUES(393, 394, 1, 49.9000);
Danach importieren wir alle INSERT INTO Einträge in die Shopdatenbank.
Was haben wir bis jetzt gemacht
Wir haben eine neue Kundengruppe "Kunde 5" erstellt und eine neue Tabelle, die alle abweichenden Artikel-Preise beinhaltet. Dann haben wir unsere neue Tabelle mit Daten gefüllt. Als Ausgangsbasis wurden Daten der Kundengruppe "Neuer Kunde" genommen.
Kundengruppenrechte für Products und Categories Tabelle setzen
Nun erweitern wir die Tabellen "products" und "categories" um einen neue Zeile.
ALTER TABLE products ADD group_permission_5 TINYINT( 1 ) NOT NULL; UPDATE products SET group_permission_5 = 1 WHERE group_permission_2 = 1; ALTER TABLE categories ADD group_permission_5 TINYINT( 1 ) NOT NULL; UPDATE categories SET group_permission_5 = 1 WHERE group_permission_2 = 1;
Das Feld der Content Manager Tabelle ergänzen
Sie sagen das war eigentlich kein Problem, wie sollen wir nun in der Tabelle "content_manager" das Feld "group_ids" ergänzen, das Feld ist ja bereits mit anderen Kundengruppen belegt.
Nun, es gibt ein sehr nettes Befehl namens CONCAT, der den vorhandenen Inhalt mit einem neuen zusammenfügt.
UPDATE content_manager SET group_ids = CONCAT(group_ids,'c_5_group,') where group_ids like '%c_2_group%';
Im Befehl ermitteln wir alle Einträge die Kundengruppe "Neuer Kunde" beinhalten und ergänzen nur diese um unsere neue Kundengruppe "Kunde 5".
Schlusswort
An sich war das Ganze nicht sonderlich kompliziert, einerseits haben wir richtig viel Zeit und eventuell auch Geld erspart, andererseits sollte dies eigentlich ein fester Bestandteil des xt:Commerce Systems sein.

Einen Kommentar schreiben