maarlok99 Posted December 11, 2015 Share Posted December 11, 2015 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 More sharing options...
Daniel_WM Posted December 11, 2015 Share Posted December 11, 2015 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. Link to comment Share on other sites More sharing options...
MarcoBiz Posted December 11, 2015 Share Posted December 11, 2015 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 More sharing options...
Giorgio M. Posted December 11, 2015 Share Posted December 11, 2015 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 More sharing options...
Sito Lab Posted December 12, 2015 Share Posted December 12, 2015 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 More sharing options...
Daniel_WM Posted December 12, 2015 Share Posted December 12, 2015 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 More sharing options...
Sito Lab Posted December 12, 2015 Share Posted December 12, 2015 (edited) 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 December 12, 2015 by Sito Lab (see edit history) Link to comment Share on other sites More sharing options...
Daniel_WM Posted December 12, 2015 Share Posted December 12, 2015 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 More sharing options...
Sito Lab Posted December 12, 2015 Share Posted December 12, 2015 (edited) 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 December 12, 2015 by Sito Lab (see edit history) Link to comment Share on other sites More sharing options...
Daniel_WM Posted December 12, 2015 Share Posted December 12, 2015 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 More sharing options...
Sito Lab Posted December 12, 2015 Share Posted December 12, 2015 sono una persona molto educata. Buona giornata Daniele adesso capisco perchè alcuni clienti...... Link to comment Share on other sites More sharing options...
Daniel_WM Posted December 12, 2015 Share Posted December 12, 2015 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]', 'filter' => $id_customer_webservice ); $xml = $webService->get($opt); $resources = $xml->children()->children()->children(); } catch (PrestaShopWebserviceException $ex) { echo '<font size="4" color="red">ERRORE</font>--'; } // controllo se la variabile è vuota allora inserisco lindirizzo if (empty($id_customer_webservice)) { try { $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); $opt = array('resource' => 'addresses'); $xml = $webService->get(array('url' => PS_SHOP_PATH.'/api/addresses?schema=blank')); $xml->children()->children()->id = ''; $xml->children()->children()->id_customer = $id_customer_webservice; // VARIABILE $xml->children()->children()->id_manufacturer = ''; $xml->children()->children()->id_supplier = ''; $xml->children()->children()->id_warehouse = ''; $xml->children()->children()->id_country = ''; // (*) $xml->children()->children()->id_state = ''; $xml->children()->children()->alias = ''; // (*) campi con asterisco obbligatori $xml->children()->children()->company = ''; $xml->children()->children()->lastname = ''; // (*) $xml->children()->children()->firstname = ''; // (*) $xml->children()->children()->vat_number = ''; $xml->children()->children()->address1 = ''; // (*) $xml->children()->children()->address2 = ''; $xml->children()->children()->postcode = ''; $xml->children()->children()->city = ''; // (*) $xml->children()->children()->other = ''; $xml->children()->children()->phone = ''; $xml->children()->children()->phone_mobile = ''; // (*) $xml->children()->children()->dni = ''; $xml->children()->children()->deleted = ''; $xml->children()->children()->date_add = ''; $xml->children()->children()->date_upd = ''; $xml = $webService->add(array('resource' => 'addresses', '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 INDIRIZZO</font>--'; } } else { echo "indirizzo esistente, non lo inserisco"; } p.s. Tutto questo va fatto in un ciclo foreach ed è sempre meglio fare l'unset delle variabili unset($nomevariabile); // alla fine Link to comment Share on other sites More sharing options...
Daniel_WM Posted December 12, 2015 Share Posted December 12, 2015 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 More sharing options...
Guest Posted December 12, 2015 Share Posted December 12, 2015 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now