Jump to content

Importazione Anagrafico Clienti In Nuova Installazione


maarlok99

Recommended Posts

Buongiorno a tutta la community,

 

avendo dovuto fare una nuova installazione v1.6 da un vecchio shop v1.3 ho l'esigenza di importare nella nuova installazione tutto l'anagrafico dei clienti registrati. Esiste un plugin che facilita questo tipo di lavoro? Quali sono le tabelle del database eventualmente da esportare?

 

Grazie

 

 

 

Link to comment
Share on other sites

Se devi importare i ps 1.6 solo l'anagrafica dei clienti le tabelle necessarie da importare sono:

- ps_customer

- ps_customer_group

 

Non ho sotto mano una installazione 1.3 per verificare che le tabelle coincidano, prova a vedere tu. Se coincidono e l'installazione è nuova, quindi senza nuovi clienti presenti, dovresti riuscire abbastanza semplicemente utilizzando phpMyAdmin.

Link to comment
Share on other sites

Dovrai importare clienti e naturalmente gli indirizzi.

Le tabelle da importare sono ps_addres, ps_guest, ps_customer, ps_customer_group

Ci sono alcune complicazioni:

  • la 1.3 gestiva diversamente i gruppi clienti e probabilmente sul tuo vecchio shop saranno tutti abbinati al gruppo 1, quindi prima dell'import dovrai fare delle correzioni
  • ovviamente se non hai impostato correttamente il negozio in fase di ricostruzione sorgeranno problemi con l'MD5 delle password che non verranno riconosciute
  • vado a memoria, ma credo che la struttura delle tabelle sia molto diversa fra 1.3 e 1.6 
Link to comment
Share on other sites

se desideri farlo da solo, senza rivolgerti a nessuno (cosa consigliata se non sai come fare) è quello di accedere al tuo phpmyadmin, trova le tabelle dove sono presenti i tuoi clienti, con nome cognome indirizzo ecc ecc, una volta che hai trovato le tabelle esporta tabella tabella in un file csv, poi vai nel lato amministrativo del nuovo ps (quindi la versione 1.6) vai in importa csv e scaricati il file di esempio dei clienti e degli indirizzi, apri i file csv della vecchia ps ed inseriscili nel nuovo file csv (della nuova versione) una volta fatto questo importa il tutto, naturalmente le password andranno perse ma tu ne metti una di default a tutti esempio 123456789 poi inviii una email al cliente lo avvisi del nuovo sito e gli mandi un buono sconto per poter acquistare

Link to comment
Share on other sites

se desideri farlo da solo, senza rivolgerti a nessuno (cosa consigliata se non sai come fare) è quello di accedere al tuo phpmyadmin, trova le tabelle dove sono presenti i tuoi clienti, con nome cognome indirizzo ecc ecc, una volta che hai trovato le tabelle esporta tabella tabella in un file csv, poi vai nel lato amministrativo del nuovo ps (quindi la versione 1.6) vai in importa csv e scaricati il file di esempio dei clienti e degli indirizzi, apri i file csv della vecchia ps ed inseriscili nel nuovo file csv (della nuova versione) una volta fatto questo importa il tutto, naturalmente le password andranno perse ma tu ne metti una di default a tutti esempio 123456789 poi inviii una email al cliente lo avvisi del nuovo sito e gli mandi un buono sconto per poter acquistare

 

Ciao Sito Lab, credo che questa soluzione che hai proposto sia un po' troppo macchinosa. ( da dilettanti )

Tramite webservice è molto più agevole e facile , ed hai anche il vantaggio che ti ritrovi già le funzioni pronte per la prossima volta.

Basta avere un backup della vecchia versione e si fa tutto in automatico senza tutti questi fronzoli,che tra le altre cose, non risultano nemmeno affidabili perché puoi sbagliare ad inserire i dati.

Link to comment
Share on other sites

Ciao Sito Lab, credo che questa soluzione che hai proposto sia un po' troppo macchinosa. ( da dilettanti )

Tramite webservice è molto più agevole e facile , ed hai anche il vantaggio che ti ritrovi già le funzioni pronte per la prossima volta.

Basta avere un backup della vecchia versione e si fa tutto in automatico senza tutti questi fronzoli,che tra le altre cose, non risultano nemmeno affidabili perché puoi sbagliare ad inserire i dati.

 

 

la mia sarebbe da dilettante ? perchè fatta manualmente tramite file csv che ogni tabella ha le informazioni che servono ?

 

 

Ciao, purtroppo dalla versione 1.3 bisogna farlo manualmente è ci vuole un po'. 

L'ho già fatto diverse volte, se hai la copia della vecchia installazione in un giorno si fa.

 

e cosa cambia dalla tua ?

 

 

 

gli stiamo proponendo varie soluzioni, farlo fare a qualcuno che sà dove mettere mani,

Edited by Sito Lab (see edit history)
Link to comment
Share on other sites

i passaggi sono 2:

- esporti i dati dei clienti dalla vecchia installazione tramite webservice in formato xml.

- importi i dati dei clienti nella nuova installazione sempre con lo stesso formato perché i campi obbligatori sono sempre gli stessi.

- ci sono solo dei cambiamenti da fare nel file xml esportato perché alcuni cambi hanno un nome diverso.

 

i tipi di chiamata al webservice sono:

 

- get per richiamare tutti i dati dei clienti con un ciclo foreach all'interno per collegarci anche relativi indirizzi registrati in base all'id cliente

- add per aggiungere i dati alla nuova versione di ps.

 

per mettere tutti i dati dentro un object devi usare la funzione children 

 

es.  $resources = $xml->children()->children()->children();

 

la variabile $resources conterrà tutti i dati richiamati e puoi anche estrarli uno alla volta semplicemente con

 

ecco $resources[0];    // ti mostra l'id cliente

Link to comment
Share on other sites

i passaggi sono 2:

- esporti i dati dei clienti dalla vecchia installazione tramite webservice in formato xml.

- importi i dati dei clienti nella nuova installazione sempre con lo stesso formato perché i campi obbligatori sono sempre gli stessi.

- ci sono solo dei cambiamenti da fare nel file xml esportato perché alcuni cambi hanno un nome diverso.

 

i tipi di chiamata al webservice sono:

 

- get per richiamare tutti i dati dei clienti con un ciclo foreach all'interno per collegarci anche relativi indirizzi registrati in base all'id cliente

- add per aggiungere i dati alla nuova versione di ps.

 

per mettere tutti i dati dentro un object devi usare la funzione children 

 

es.  $resources = $xml->children()->children()->children();

 

la variabile $resources conterrà tutti i dati richiamati e puoi anche estrarli uno alla volta semplicemente con

 

ecco $resources[0];    // ti mostra l'id cliente

 

non ho parole, a me viene dato del dilettante da parte tua, per aver proposto un file csv, dove basta copiare / cambiare i campi, e tu te ne esci fuori con questo ? 

 

è un mondo meraviglioso il tuo.

Edited by Sito Lab (see edit history)
Link to comment
Share on other sites

non ho parole, a me viene dato del dilettante da parte tua, per aver proposto un file csv, dove basta copiare / cambiare i campi, e tu te ne esci fuori con questo ? 

 

è un mondo meraviglioso il tuo.

Ciao il dilettante non era rivolto a te , intendevo che ci vuole troppo tempo in quel modo che hai proposto te e rischi di sbagliare tutti i dati inserendoli manualmente nei file, non pensavo che te la prendevi cosi , scusami.

 

Ti scrivo un esempio al volo poi chiaramente è da provare quando cè un attimo di tempo perchè i nomi dei campi posso variare.

 

 

 

define('DEBUG', true);
define('PS_SHOP_PATH', 'http://tuosito.com/');
define('PS_WS_AUTH_KEY', 'la tua chiave webservice');
require_once('./PSWebServiceLibrary.php');  // importante da inserire nella stessa cartella di questo script altrimenti non può funzionare
 
 
// richiesta dati clienti
try
{
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
$opt = array('resource' => 'customers');
$xml = $webService->get($opt);
 
 
$resources = $xml->children()->children()->children(); // scende fino al terzo livello del file xml ma si può variare
}
catch (PrestaShopWebserviceException $ex) {
    echo '<font size="4" color="red">ERRORE</font>--';
}
 
echo $resources; // contiene tutti i dati dei clienti
 
 
 
// inserimento dati clienti va fatto nella nuova installazione
 
 
try
 {
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
$opt = array('resource' => 'customers');
$xml = $webService->get(array('url' => PS_SHOP_PATH.'/api/customers?schema=blank'));
 
 
// quà devi inserire i dati presi in automatico dalla variabile $resources, questo è solo un esempio di inserimento 
 
$xml->children()->children()->id = ''; 
$xml->children()->children()->id_default_group = ''; 
$xml->children()->children()->id_lang =  ''; 
$xml->children()->children()->newsletter_date_add = ''; 
$xml->children()->children()->ip_registration_newsletter = '';
$xml->children()->children()->last_passwd_gen = '';
$xml->children()->children()->secure_key = '';
$xml->children()->children()->deleted = ''; 
$xml->children()->children()->passwd = '';
$xml->children()->children()->lastname = '';
$xml->children()->children()->firstname = '';
$xml->children()->children()->email = '';
$xml->children()->children()->id_gender = '';
$xml->children()->children()->birthday = '';
$xml->children()->children()->newsletter = '';
$xml->children()->children()->optin = '';
$xml->children()->children()->website = '';
$xml->children()->children()->company = '';
$xml->children()->children()->siret = '';
$xml->children()->children()->ape = '';
$xml->children()->children()->outstanding_allow_amount = '';
$xml->children()->children()->show_public_prices = '';
$xml->children()->children()->id_risk = '';
$xml->children()->children()->max_payment_days = '';
$xml->children()->children()->active = '';
$xml->children()->children()->note = '';
$xml->children()->children()->is_guest = '';
$xml->children()->children()->id_shop = '';
$xml->children()->children()->id_shop_group = '';
$xml->children()->children()->date_add = '';
$xml->children()->children()->date_upd = '';
$xml->children()->children()->associations = '';
 
 
 
$xml = $webService->add(array('resource' => 'customers',
'postXml' => $xml->asXML()
));
 
$resources = $xml->children()->children();
 
}
catch (PrestaShopWebserviceException $ex)
{
    $trace = $ex->getTrace();
    if ($trace[0]['args'][0] == 404) echo 'Bad ID';
    else if ($trace[0]['args'][0] == 401) echo 'Bad auth key';
    else echo '<font size="4" color="red">ERRORE SU INSERIMENTO CLIENTE</font>--';
}
Link to comment
Share on other sites

Poi vanno fatti anche gli indirizzi, ripeto che ci vuole circa un giorno per fare uno script AdHoc, questo è solo un esempio 

 
prima cerchi se l'indirizzo esiste tramite
 
try
{
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
$opt = array(   // filtro tramite email e ricavo l ID cliente se esiste nella vairabile $id_customer_webservice
    'resource'   => 'addresses',
    'display'    => '[id]',
Link to comment
Share on other sites

sono una persona molto educata.

 

Buona giornata Daniele

 

 

 

adesso capisco perchè alcuni clienti......

Sito Lab, questi sono semplice script in php , anche se per te sembrano cose astruse, ti assicuro che si lavora cosi.

Questo che hai proposto te oltre ad essere impossibile da realizzare perché non puoi associare tutti i dati manualmente per non considerare che se sbagli una riga metti l'indirizzo di un cliente ad un'altro , è anche fuori da ogni regola perché associ a tutti i clienti la stessa password, in pratica basta che conosco l'email ed entro negli account di tutti i clienti cosi vedo cosa hanno ordinato e tutti i dati personali compreso indirizzi e sistemi di pagamento utilizzati.

Mi dispiace ma la tua soluzione è bocciata 

Link to comment
Share on other sites

ma perchè non crearsi uno script che legge dal db 1.3, elabora le informazioni e scriva nel db 1.6 ?

 

ovviamente i 2 db devono essere installati nello stesso server o in locale

 

utilizzando le opportune classi di presta fa tutto lui se gli si danno i dati interessati utente

 

P.S. la soluzione posta da Sito Lab è la più indicata per chi ama il "fai da te" in quanto non deve capirne nulla di php e con un pò di pazienza, come indicato, si riproduce le stesso risultato, perchè utilizzando l'import di presta, dandogli i dati utente da csv lui crea il tutto, così come farebbe lo script che ho suggerito.

 

Saluti

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...