-gelöst- Übertragen der Kunden aus der WAWI in den Shop

rhservice

Aktives Mitglied
25. Juli 2008
11
0
Hallo Zusammen,

ist es möglich die Kunden die in der WAWI existieren in den Shop zu übertragen?

Mfg

Robby
 

dvbshop

Aktives Mitglied
27. Juli 2006
187
0
München
Firma
dvbshop2006
Kannst du so nicht machen, da nur dann Kunden über den Connector übernommen werden, wenn diese eine Bestellung ab"latzen".

Du kannst aber Kunden über XTC EXPORTIEREN und dann in der Wawi importieren. Nur empfehlenswert, wenn Du fast ausschließlich deutsche Kunden hast, sonst kommst Du mit den Länderbezeichnungen in Bedrängnis.

Den Aufbau der Importdatei ist in der Wiki beschrieben als auch in der Importfunktion
 

rhservice

Aktives Mitglied
25. Juli 2008
11
0
Hallo.

Danke für deine Hilfe.
Leider brauche ich gerade den Weg: Import aus der Wawi IN den Shop.
Dann würde ich jedem Kunden eine Automatische Email mit einem zufällig generiertem Passwort versenden usw.

Robby
 

dvbshop

Aktives Mitglied
27. Juli 2006
187
0
München
Firma
dvbshop2006
Naja, das Script gibt es:

Passwort.


Code:
Code:
<?php

define('GZIP_COMPRESSION','false');

include ('includes/application_top.php');

require_once (DIR_FS_INC.'xtc_get_country_list.inc.php');
require_once (DIR_FS_INC.'xtc_validate_email.inc.php');
require_once (DIR_FS_INC.'xtc_encrypt_password.inc.php');
require_once (DIR_FS_INC.'xtc_get_geo_zone_code.inc.php');
require_once (DIR_FS_INC.'xtc_write_user_info.inc.php');

function getpass($laenge=10)
{
	$newpass = "";
    	$string="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    	mt_srand((double)microtime()*1000000);

    	for ($i=1; $i <= $laenge; $i++)
    	{
    		$newpass .= substr($string, mt_rand(0,strlen($string)-1), 1);
    	}
	return $newpass;
}

$lines = 0;
$lines_ok = 0;

$importfile="kunden_import.csv";

$fh = fopen($importfile, "r") or die ("Kann Datei nicht lesen.");

while(!feof($fh))
{
	// zeile einlesen & werte zuweisen
	$zeile=fgets($fh);
	list($anrede, $firstname, $lastname, $company, $geburtsdatum, $street_address, $lkz, $postcode, $city, $suburb, $telephone, $fax, $email_address, $password) = split(";", $zeile);
	$lines+=1;

	// neues zufallspasswort erstelllen.
	$password = getpass(10);
	
	// vorhandene Daten aufbereiten.
	switch($anrede)
	{
		case "01":
			$gender = "m";
			break;

		case "02":
			$gender = "f";
			break;

		default:
			$gender = "m";
	}

	// [url]http://www.didihome.de/html/tab-lkz.htm[/url]
	// Problemkinder: BAL, EI

	switch(strtoupper($lkz))
	{
		case "D":
			$lkz = "DE";
			break;

		case "GB":
			$lkz = "GB";
			break;

		case "EST":
			$lkz = "EE";
			break;

		case "FIN":
			$lkz = "FI";
			break;

		case "BG":
			$lkz = "BG";
			break;

		case "CH":
			$lkz = "CH";
			break;

		case "CY":
			$lkz = "CY";
			break;

		case "A":
			$lkz = "AT";
			break;
		case "CZ":
			$lkz = "CZ";
			break;

		case "DK":
			$lkz = "DK";
			break;

		case "F":
			$lkz = "FR";
			break;

		case "WD":
			$lkz = "DM";
			break;

		case "CDN":
			$lkz = "CA";
			break;

		case "I":
			$lkz = "IT";
			break;

		case "N":
			$lkz = "NO";
			break;

		case "U":
			$lkz = "UY";
			break;

		// ?? P = POLEN!?
		case "P":
			$lkz = "PL";
			break;

		case "J":
			$lkz = "JP";
			break;

		case "E":
			$lkz = "ES";
			break;

		case "H":
			$lkz = "HU";
			break;

		case "AUS":
			$lkz = "AU";
			break;

		case "FL":
			$lkz = "LI";
			break;

		case "S":
			$lkz = "SE";
			break;

		case "L":
			$lkz = "LU";
			break;

		case "RB":
			$lkz = "BW";
			break;

		case "FIN":
			$lkz = "FI";
			break;

		case "RI":
			$lkz = "ID";
			break;

		case "B":
			$lkz = "BE";
			break;

		case "SGP":
			$lkz = "SG";
			break;

		case "EST":
			$lkz = "EE";
			break;

		case "IRL":
			$lkz = "IE";
			break;

		case "RUS":
			$lkz = "RU";
			break;

		case "SLO":
			$lkz = "SI";
			break;

		case "USA":
			$lkz = "US";
			break;
	}	
	$country_query = xtc_db_query("SELECT * FROM `countries` WHERE `countries_iso_code_2` = '".strtoupper($lkz)."'");
	$country_data = xtc_db_fetch_array($country_query);
	$country = $country_data['countries_id'];

	if(!is_numeric($country_data['countries_id']))
	{
		echo "   [b]ERROR:[/b] LKZ_CONVERT_ERROR
\n";
		echo "lkz=".$lkz." countries_id=".$country_data['countries_id']. " countries_name=".$country_data['countries_name']."
\n";
	}

	if ($geburtsdatum != ".000000000" && $geburtsdatum != "")
	{
		list($jahr, $monat, $tag) = sscanf($geburtsdatum,"%4d%2d%2d.%d");
		
		$dob = sprintf("%02d.%02d.%4d",$tag,$monat,$jahr);
		//echo $geburtsdatum . " = " . $dob ."
\n";
	}
	else
		$dob='';

	// sonnstige variablen
	$customers_status = DEFAULT_CUSTOMERS_STATUS_ID;
	$newsletter = "0";
	$do_not_report = false;

	// daten in db eintragen
	require_once(DIR_WS_CLASSES.'vat_validation.php');

	$vatID = new vat_validation($vat, '', '', $country);
	$customers_status = $vatID->vat_info['status'];
	$customers_vat_id_status = $vatID->vat_info['vat_id_status'];
	$error = $vatID->vat_info['error'];

	if($error==1)
	{

		//$messageStack->add('create_account', ENTRY_VAT_ERROR);
		echo "   [b]ERROR:[/b] ENTRY_VAT_ERROR
\n";
		$error = true;

	}

	if(!is_numeric($country_data['countries_id']))
		$error = true;

	$email_exists = false;
	$check_email_query = xtc_db_query("select count(*) as total from ".TABLE_CUSTOMERS." where customers_email_address = '".xtc_db_input($email_address)."' and account_type = '0'");
	$check_email = xtc_db_fetch_array($check_email_query);

	if ($check_email['total'] > 0) {

		$email_exists = true;
	}

	if($email_exists == true)
	{
		$error = true;
		$do_not_report = true;

		//$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR_EXISTS);
		//echo "   [b]ERROR:[/b] ENTRY_EMAIL_ADDRESS_ERROR_EXISTS
\n";
	}
	elseif (strlen($email_address) < ENTRY_EMAIL_ADDRESS_MIN_LENGTH)
	{

		$error = true;
		//$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR);
		echo "   [b]ERROR:[/b] ENTRY_EMAIL_ADDRESS_ERROR
\n";

	}

	elseif (xtc_validate_email($email_address) == false)
	{

		$error = true;
		//$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_CHECK_ERROR);
		echo "   [b]ERROR:[/b] ENTRY_EMAIL_ADDRESS_CHECK_ERROR
\n";
/*
	        $fp3 = fopen("kunden_import_mail-check-fail.csv", "a");
	        fputs($fp3, $zeile);
	        fclose ($fp3);
*/

	}

	if($dob != '')
	{
		if (checkdate(substr(xtc_date_raw($dob), 4, 2), substr(xtc_date_raw($dob), 6, 2), substr(xtc_date_raw($dob), 0, 4)) == false)
		{

			$error = true;
			echo "   [b]ERROR:[/b] ENTRY_DATE_OF_BIRTH_ERROR
\n";

			//$messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_ERROR);

		}
	}
	
	if($error != true)
	{
		$lines_ok += 1;

		$sql_data_array = array ('customers_vat_id' => $vat, 'customers_vat_id_status' => $customers_vat_id_status, 'customers_status' => $customers_status, 'customers_firstname' => $firstname, 'customers_lastname' => $lastname, 'customers_email_address' => $email_address, 'customers_telephone' => $telephone, 'customers_fax' => $fax, 'customers_newsletter' => $newsletter, 'customers_password' => xtc_encrypt_password($password),'customers_date_added' => 'now()','customers_last_modified' => 'now()');


		$sql_data_array['customers_gender'] = $gender;
		$sql_data_array['customers_dob'] = xtc_date_raw($dob);
		xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array);
		$user_id = xtc_db_insert_id();

		//xtc_write_user_info($user_id);

		$sql_data_array = array ('customers_id' => $user_id, 'entry_firstname' => $firstname, 'entry_lastname' => $lastname, 'entry_street_address' => $street_address, 'entry_postcode' => $postcode, 'entry_city' => $city, 'entry_country_id' => $country,'address_date_added' => 'now()','address_last_modified' => 'now()');



		$sql_data_array['entry_gender'] = $gender;
		$sql_data_array['entry_company'] = $company;

		if (ACCOUNT_SUBURB == 'true')
			$sql_data_array['entry_suburb'] = $suburb;


		if (ACCOUNT_STATE == 'true')
		{

			if ($zone_id > 0)
			{

				$sql_data_array['entry_zone_id'] = $zone_id;
				$sql_data_array['entry_state'] = '';

			}
			else
			{
				$sql_data_array['entry_zone_id'] = '0';
				$sql_data_array['entry_state'] = $state;
			}
		}


		xtc_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);
		$address_id = xtc_db_insert_id();

		xtc_db_query("update ".TABLE_CUSTOMERS." set customers_default_address_id = '".$address_id."' where customers_id = '".(int) $user_id."'");

		xtc_db_query("insert into ".TABLE_CUSTOMERS_INFO." (customers_info_id, customers_info_number_of_logons, customers_info_date_account_created) values ('".(int) $user_id."', '0', now())");


		// create smarty elements

		$smarty = new Smarty;

		$smarty->assign('GENDER', $gender);
		$smarty->assign('FIRSTNAME', $firstname);

		$smarty->assign('LASTNAME', $lastname);
		$smarty->assign('EMAIL', $email_address);
		$smarty->assign('PASSWORT', $password);

		$smarty->caching = false;
		$txt_mail_customer = $smarty->fetch(DIR_FS_CATALOG.'kunden_import_mail.txt');

		$mail_subject = "Unser neuer Onlineshop - Our new onlineshop";

/*
		echo "<pre>\n";
		echo $txt_mail_customer;
		echo "</pre>\n";
*/
		// mail versenden
		xtc_php_mail(STORE_OWNER_EMAIL_ADDRESS, STORE_OWNER, $email_address, $firstname.' '.$lastname, '', STORE_OWNER_EMAIL_ADDRESS, STORE_OWNER, '', '', $mail_subject, '', $txt_mail_customer);

	}
	else
	{
		if(!$do_not_report==true)
		{
			echo "<b color=\"red\">fehler beim anlegen von $firstname, $lastname, $company, $email_address[/b]
\n";
			echo "[b]------------------------------------------------------------------------------------------------------[/b]
\n";
		}
	}
	
	flush();

}
fclose($fh);

echo "$lines_ok von $lines Daten importiert!";

include ('includes/application_bottom.php');
?>

Dazu brauchst Du jedoch wieder eine CSV Datei (im Root des Webservers, wo du die obige PHP Datei auch ablegst), die nach dem Schema aufgebaut ist:

$anrede, $firstname, $lastname, $company, $geburtsdatum, $street_address, $lkz, $postcode, $city, $suburb, $telephone, $fax, $email_address, $password)

Das Importfile muß heißen: kunden_import.csv

Zudem mußt Du mit ADMIN Rechten eingeloggt sein!

Er überschreibt KEINE Kunden - wenn also die Email adresse schon vorhanden ist, legt er den Kunden nicht mehr an!

GGfls. mußt Du die Länderdefinitionen im Script noch überarbeiten, wenn Du aber nur deutsche Kunden hast, ist es fast schon "Plug & Play" 😉
 

dvbshop

Aktives Mitglied
27. Juli 2006
187
0
München
Firma
dvbshop2006
Ooops,

im Root dann auch noch eine Datei anlegen mit Namen
kunden_import_mail.txt

In die kannste dann folgendes noch einfügen:

Code:
{if $GENDER == 'f'}
Sehr geehrte Frau {$LASTNAME},
{else}
Sehr geehrter Herr {$LASTNAME},
{/if}

{if $GENDER == 'f'}
Dear Mrs.  {$LASTNAME},
{else}
Dear Mr. {$LASTNAME},
{/if}

seit 01.11.2007 ist unser neuer Onlineshop unter [url]http://www.blabla.com[/url] erreichbar.
Since 1st of November our new Onlineshop is active at http://www.blabla.com!

Da Sie bereits Kunde bei uns sind, haben wir Ihre Daten in den neuen Shop übernommen. Sie können sich mit folgenden Login-Daten anmelden: 
As you are/were already a customer of BLABLA, you may now sign in into your account with the following Username and password:

Benutzer/Username: {$EMAIL}
Password: {$PASSWORT}

Bitte überprüfen Sie bei Gelegenheit, ob die Angaben, wie Name, Adresse usw. noch korrekt sind und ändern diese ggfls. in Ihrem Shopaccount.

Please check your account, if Name, address, ZIP-code, City etc. are still up to date. Otherwise you may correct your account online!

Wir danken für Ihre Mithilfe und verbleiben

Thanks for your attention

mit freundlichen Grüßen
 

dvbshop

Aktives Mitglied
27. Juli 2006
187
0
München
Firma
dvbshop2006
Ergänzung:

IM FALLE daß er einen Kunden im Shop dann anlegt, geht gleichzeitig eine Mail an den Kunden mit den Daten raus, den Text oben kannste ja beliebig anpassen.

Hoffe, es paßt 8)
 

rhservice

Aktives Mitglied
25. Juli 2008
11
0
also könnte ich die kunden aus der wawi exportieren. in eine csv meine ich und dann mit dem script importieren?
 

dvbshop

Aktives Mitglied
27. Juli 2006
187
0
München
Firma
dvbshop2006
ja, das ist doch das, was Du wolltest.

Mußt nach dem EXPORT mit EXCEL oder OpenOffice etc. halt die Spalten in die richtige Reihenfolge bringen.

GGfls. kann man das Script so umschreiben, daß es sich der Vorgabe von JTL anpaßt, also "ready to go", aber dafür habe ich momentan nicht die Zeit, sorry.
 

rhservice

Aktives Mitglied
25. Juli 2008
11
0
nein nein
nix umschreiben 😀

das ist schon ok
damit könnte ich das sehr gut realisieren

Danke schön!
 

Ähnliche Themen