Jump to content
xt:Commerce Community Forum

Automatisch Kundenummern vergeben?


mfschorsch

Recommended Posts

Hallo,

weiß jemand wie ich es hinbekomme, dass automatisch Kundennummern vergeben werden?

Am liebsten wäre mir folgendes: Es wird nach der aktuell höchsten Kundennummer geschaut, etwa in dieser Art:

SELECT max(customers_cid) FROM xt_customers

Dann wird darauf +1 gerechnet und diese Kundennummer wird dann bei einem neuen Kunden vergeben.

Wenn ich das richtig recherchiert habe, dann wird in xtFramework/classes/class.customer.php der neue Kunde angelegt. Da sollte man doch irgendetwas einfügen/hinzufügen können.

Kann da jemand helfen? Ist doch sicherlich auch für andere interessant, oder? Habe leider nur Basiskenntnisse in php-Programmierung.

Habe bisher folgendes probiert:

etwa in Zeile 390 folgendes eingefügt, bzw. geändert.

 

[SIZE=1][SIZE=1][COLOR=black]$nextCustID = $db->Execute("SELECT max(customers_cid) FROM xt_customers");[/COLOR][/SIZE]

[SIZE=1][SIZE=1][SIZE=1][COLOR=black]echo "<script>alert('".$nextCustID."');</script>";[/COLOR][/SIZE]

[/SIZE][COLOR=black]$intNextCustID = intval($nextCustID);[/COLOR]

[COLOR=black]$intNextCustID++;[/COLOR]

[COLOR=black]$strNextCustID = strval($intNextCustID);[/COLOR]

[/SIZE][/SIZE]

[SIZE=1][COLOR=#808080][SIZE=1][COLOR=black]$customer_data_array = array ('customers_gender' => $data['customers_gender'],[/COLOR][/SIZE]

[SIZE=1][COLOR=black]'customers_vat_id' => $data['customers_vat_id'],[/COLOR][/SIZE]

[SIZE=1][COLOR=black]'customers_vat_id_status' => $data['customers_vat_id_status'],[/COLOR][/SIZE]

[SIZE=1][COLOR=black]'customers_email_address' => $data['customers_email_address'],[/COLOR][/SIZE]

[SIZE=1][COLOR=black]'customers_default_currency' => $data['customers_default_currency'],[/COLOR][/SIZE]

[SIZE=1][COLOR=black]'customers_default_language' => $data['customers_default_language'],[/COLOR][/SIZE]

[SIZE=1][COLOR=black]'customers_cid' => $strNextCustID,[/COLOR][/SIZE]

[SIZE=1][COLOR=black]'shop_id' => $data['shop_id'][/COLOR][/SIZE]

[SIZE=1][COLOR=black]);[/COLOR][/SIZE]

[/COLOR][/SIZE]

Eingefügt in der Tabelle wird aber immer 2.

Vielleicht kann mir auch jemand helfen, wie ich den echo-Befehl richtig schreibe, damit ich mal den Wert rausbekomme, welcher aus der Datenbank gezogen wird.

Vielen Dank im Vorraus und freue mich auf eure Antworten.

Markus

Link to comment
Share on other sites

Naja,

irgenwie muss ich wohl auf dem richtigen Weg sein, denn in diesem Thread http://www.xt-commerce.com/forum/shopbereich/33277-automatische-kundennummernvergabe.html wird es ähnlich gemacht. Nur ist der Code für xtc 3.xx

Wenn ich diesen Code einsetze hat er aber Probleme mit den Funktionen xtc_db_query und xtc_fetch_array

 

$cid_query = xtc_db_query("SELECT MAX(customers_cid / 1) AS maxnr FROM ".TABLE_CUSTOMERS);

$cid = xtc_db_fetch_array($cid_query);


if($cid['maxnr']){

$start_cid = $cid['maxnr']+1;

}


Vielleicht weiß jemand durch was ich diese in VEYTON ersetzen kann?

Link to comment
Share on other sites

  • 2 weeks later...

Mit autoincrement funktionierts nicht, da ich nicht zwei Felder der Datenbank automatisch hochzählen lassen kann.

Es gibt zwei Felder in der Tabelle:

1.) customers_id, das ist der auto_increment Wert und primary key. Diesen möchte ich eigentlich nicht manipulieren, da ich nicht weiß, welche Auswirkungen dies insgesamt hat.

2.) customers_cid, das ist die Kundennummer, welche auch als Kundennummer verwendet wird. Und diese sollte doch irgendwie automatisch zu füllen sein. Siehe 1. und 2. Eintrag in diesem Posting.

Link to comment
Share on other sites

Der Trigger auf den Insert ist eine gute Idee, bringt aber mehrere Probleme mit sich.

1.) Wenn die Datenbank bei einem Provider ist, dann bekommt man evtl. nicht die Rechte um sich Trigger anlegen zu können.

2.) Ich muss mit dem Trigger aus der gleichen Tabelle, auf welche gerade ein Insert angewendet wird auch Daten auslesen und das funktioniert meines Wissens nicht.

ABER hier die Lösung.

in xtFramework/classes/class.customer.php ca. ab Zeile 390 folgendes anpassen:


$NextCustIDQuery = "SELECT max(customers_cid)+1 as nextCustID FROM xt_customers";
$RsNextCustID = $db->Execute($NextCustIDQuery);
$intNextCustID = $RsNextCustID->fields['nextCustID'];

$customer_data_array = array ('customers_gender' => $data['customers_gender'],
'customers_vat_id' => $data['customers_vat_id'],
'customers_vat_id_status' => $data['customers_vat_id_status'],
'customers_email_address' => $data['customers_email_address'],
'customers_default_currency' => $data['customers_default_currency'],
'customers_default_language' => $data['customers_default_language'],
'customers_cid' => $intNextCustID,
'shop_id' => $data['shop_id']
);
[/HTML]

Damit wird immer die höchste Kundennummer eins hochgezählt und für einen neuen Kunden verwendet.

Fragt mich jetzt aber nicht, was passiert, wenn bisherr keine Kundennummer vergeben wurde, oder noch kein Kunde angelegt ist.

Wer Verbesserungen vorschlagen möchte kann dies natürlich gerne tun.

Link to comment
Share on other sites

Der Trigger auf den Insert ist eine gute Idee, bringt aber mehrere Probleme mit sich.

1.) Wenn die Datenbank bei einem Provider ist, dann bekommt man evtl. nicht die Rechte um sich Trigger anlegen zu können.

2.) Ich muss mit dem Trigger aus der gleichen Tabelle, auf welche gerade ein Insert angewendet wird auch Daten auslesen und das funktioniert meines Wissens nicht.

ABER hier die Lösung.

in xtFramework/classes/class.customer.php ca. ab Zeile 390 folgendes anpassen:


$NextCustIDQuery = "SELECT max(customers_cid)+1 as nextCustID FROM xt_customers";
$RsNextCustID = $db->Execute($NextCustIDQuery);
$intNextCustID = $RsNextCustID->fields['nextCustID'];

$customer_data_array = array ('customers_gender' => $data['customers_gender'],
'customers_vat_id' => $data['customers_vat_id'],
'customers_vat_id_status' => $data['customers_vat_id_status'],
'customers_email_address' => $data['customers_email_address'],
'customers_default_currency' => $data['customers_default_currency'],
'customers_default_language' => $data['customers_default_language'],
'customers_cid' => $intNextCustID,
'shop_id' => $data['shop_id']
);
[/HTML]

Damit wird immer die höchste Kundennummer eins hochgezählt und für einen neuen Kunden verwendet.

Fragt mich jetzt aber nicht, was passiert, wenn bisherr keine Kundennummer vergeben wurde, oder noch kein Kunde angelegt ist.

Wer Verbesserungen vorschlagen möchte kann dies natürlich gerne tun.

bitte beachten das man solche änderungen über ein plugin durchführen sollte, da diese datei bei einem update wieder überschrieben wird.

Link to comment
Share on other sites

  • 10 months later...

servus...

kann es sein das die methode _buildCustomerDate in der xtFramework/classes/class.customer.php nur aktiv wird wenn über die shop-seite sich eine neuer kunde selber anlegt? Wenn ich über die admin oberfläche einen neuen kunden anlege wird der code nicht ausgeführt und das feld für customers_cid bleibt lehr.

so long....

Link to comment
Share on other sites

Hallo ich wollte das nochmal aufgreifen

Mit der Automatischen Vergabe von Kundennummern könnte sich jemand bereit erklären dieses min Plugin zu schreiben.

Habe ja grade das Update gemacht und natürlich habe ich die änderung überschrieben.

Mit freundlichen Grüßen Roger

Link to comment
Share on other sites

  • 2 months later...

Könnte man nicht einfach die Kunden-ID aus dem Backend als Kundennummer definierten?

Wir konfigurieren gerade unsere Rechnung über das Print Order Plugin und würden hier gerne diese Kunden ID anzeigen als Kundennummer. Spricht das was dagegen. Hier fehlt uns jetzt nur noch der Code damit die Nummer aufgerufen werden kann.

Viele Grüße,

Amelie

Link to comment
Share on other sites

  • 1 year later...

Hallo,

die Lösung funzt bei mir gut. Nun soll die Kundennummer in der Anmeldemail mit eingetragen werden. Leider funktionier dies nicht: <h3>Ihre Kundennummer: {$intNextCustID}</h3>

Welcher Parameter muss denn übergeben werden $customer_cid oder address_data.customer_cid funzt auch nicht.

Danke

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...