Module psimport IT


Modulo psimport

Presentazione

psimport è un modulo per Dolibarr ERP/CRM pubblicato da Atoo-Net.

Include strumenti a riga di comando per migrare un negozio PrestaShop verso Dolibarr: categorie, terzi/indirizzi, prodotti (con IVA risolta e immagine di copertina), file scaricabili dei prodotti virtuali, gallerie di immagini e ordini. La migrazione si basa sull'API REST Webservice di PrestaShop, con tabelle di appoggio intermedie (llx_psimport_*) che permettono di controllare e correggere i dati prima dell'importazione definitiva in Dolibarr, e di ripetere un'importazione senza richiamare nuovamente l'API.

Tutti i prodotti vengono importati come servizio (Product::TYPE_SERVICE), trattandosi di moduli dematerializzati, indipendentemente dal tipo impostato lato PrestaShop.

Proprietà Valore
Autore Philippe Grand — Atoo-Net
Versione 1.0
Licenza GNU GPL v3+
Dolibarr minimo v24.0
PHP minimo v8.1
PrestaShop supportato v1.6 a 9.x (API Webservice)

Perché usare psimport?

psimport permette di trasferire tutti i dati di un negozio PrestaShop esistente in Dolibarr, senza connessione diretta al database MySQL di PrestaShop (a eccezione di un passaggio opzionale e una tantum per i file scaricabili). Ogni fase passa attraverso una tabella di appoggio che può essere controllata prima dell'importazione finale.

Casi d'uso

Migrazione completa di un negozio PrestaShop

Recupero di categorie, terzi/indirizzi, prodotti (con IVA risolta tramite i gruppi di regole fiscali di PrestaShop) e ordini, tramite l'API REST Webservice, senza alcuna installazione aggiuntiva lato PrestaShop oltre all'attivazione del Webservice.

Controllo prima dell'importazione finale

Ogni risorsa viene prima recuperata in una tabella di appoggio (llx_psimport_*) dove i dati possono essere controllati e corretti prima dell'importazione effettiva in Dolibarr. Questo evita di richiamare nuovamente l'API di PrestaShop in caso di errore.

Riesecuzione mirata dopo la correzione degli errori

Ogni riga della tabella di appoggio ha uno stato (import_status). Le righe in errore possono essere riportate a "da importare" (pulsante "Reimposta errori" o una query SQL) e rielaborate, senza dover reimportare tutto da zero.

Recupero dei file scaricabili dei moduli

L'API Webservice di PrestaShop non espone i file allegati ai "prodotti virtuali/scaricabili" (limitazione confermata dal ticket ufficiale GitHub PrestaShop/PrestaShop#27834). Un modulo "bridge" per PrestaShop fornito con psimport aggira questo limite, in sola lettura.

Galleria completa delle immagini prodotto

Oltre all'immagine di copertina (recuperata insieme al prodotto), psimport può recuperare anche la galleria completa delle immagini di ogni prodotto tramite il sub-endpoint API products/{id}/images.

Installazione

Requisiti lato PrestaShop:

  1. Attivare il Webservice: Parametri avanzati > Webservice > Attiva il webservice di PrestaShop → Sì
  2. Creare una chiave API ("Aggiungi una nuova chiave webservice") con permessi GET su: categories, customers, addresses, countries, products, images, tax_rule_groups, tax_rules, taxes, orders, order_details
  3. Annotare l'URL del sito e la chiave API generata

Requisiti lato Dolibarr:

  1. Moduli attivati: Terzi, Prodotti, Servizi, Categorie, Ordini, Fatture
  2. Attivare il modulo psimport in Home → Configurazione → Moduli/Applicazioni (famiglia "Altri")

Attivando il modulo, le tabelle di appoggio llx_psimport_* vengono create automaticamente tramite il meccanismo standard di attivazione dei moduli di Dolibarr — non è necessaria alcuna importazione SQL manuale.

Il modulo psimport non ha menu né permessi propri. L'unica schermata è la pagina di configurazione (Configurazione > Moduli/Applicazioni > psimport > icona chiave inglese), dove si inseriscono l'URL del negozio PrestaShop e la chiave API del Webservice (costanti PSIMPORT_API_URL e PSIMPORT_API_KEY), utilizzate di default dagli script CLI quando non viene passato alcun parametro da riga di comando. L'intera migrazione viene poi gestita da riga di comando tramite gli script nella cartella scripts/.

Configurazione

Connessione all'API di PrestaShop

Costante Descrizione
PSIMPORT_API_URL URL di base dell'API Webservice di PrestaShop (es. https://www.yourshop.com/api)
PSIMPORT_API_KEY Chiave API del Webservice di PrestaShop

Risoluzione problemi: HTTP 403 sull'API (hosting dietro Cloudflare)

Se il test di connessione (o uno script fetch-*/import-*) fallisce con un errore del tipo HTTP 403 Forbidden con corpo della risposta vuoto e nessun reindirizzamento rilevato, mentre la stessa chiamata funziona nel browser, il blocco probabilmente non proviene da PrestaShop ma da un firewall applicativo a monte (Cloudflare, ModSecurity, ecc.) che rifiuta la richiesta prima che raggiunga il sito.

Caso riscontrato e confermato su un hosting Cloudflare (piano gratuito): il Bot Fight Mode gratuito di Cloudflare rileva le chiamate cURL del modulo (nessun browser, nessun JS, User-Agent non standard) come traffico bot e risponde con una "Managed Challenge" — che lato modulo si presenta come un 403 a corpo vuoto.

Per confermarlo: nella dashboard Cloudflare, Security > Analytics > Events, filtrare gli ultimi minuti dopo un test recente. Se la voce bloccata mostra Service = "Bot fight mode" e Action = "Managed Challenge", si tratta di questo caso.

Nel piano gratuito, questo Bot Fight Mode non può essere aggirato in modo selettivo per percorso URL. L'unica opzione è disattivare l'interruttore globalmente: Security > Settings > "Bot fight mode" → Off durante l'esecuzione degli script di importazione, per poi riattivarlo se necessario.

Su un piano Cloudflare a pagamento (Pro e superiori), Super Bot Fight Mode consente un bypass più mirato tramite una regola di sicurezza "Skip" per /api*.

Utilizzo

 
Gestione delle importazioni

Ordine di esecuzione

# 1. Categorie
php scripts/fetch-categories.php https://www.yourshop.com/api ABCDEF... 0 0
php scripts/import-categories.php 0

# 2. Clienti + indirizzi
php scripts/fetch-customers.php https://www.yourshop.com/api ABCDEF... 0 0
php scripts/import-customers.php 0

# 3. Prodotti (IVA risolta tramite tax_rules_groups, immagine di copertina scaricata)
php scripts/fetch-products.php https://www.yourshop.com/api ABCDEF... 0 0
php scripts/import-products.php https://www.yourshop.com/api ABCDEF... 0

# 4. File scaricabili dei moduli (richiede il modulo PrestaShop "Psimport Bridge")
php scripts/fetch-product-files.php https://www.yourshop.com/api ABCDEF... 0 0
php scripts/import-product-files.php https://www.yourshop.com/api ABCDEF... 0

# 4b. Galleria completa delle immagini prodotto
php scripts/fetch-product-images.php https://www.yourshop.com/api ABCDEF... 0 0
php scripts/import-product-images.php https://www.yourshop.com/api ABCDEF... 0

# 5. Ordini (configurare $importable_state_ids e $payment_module_map all'inizio dello script prima della prima esecuzione)
php scripts/fetch-orders.php https://www.yourshop.com/api ABCDEF... 0 0
php scripts/import-orders.php 0

Parametri comuni:

  • limit = 0 per recuperare/importare tutto, o un numero per testare su un campione
  • clean_all_before_fetch = 1 per svuotare la tabella di appoggio prima di un nuovo recupero (default 0 = accumula/aggiorna)

Ripetere un'importazione dopo la correzione degli errori

Ogni tabella di appoggio ha una colonna import_status:

  • 0 = da importare
  • 1 = importato correttamente (fk_dolibarr contiene l'id dell'oggetto creato in Dolibarr)
  • 2 = in errore (dettagli in import_error)

Per rielaborare solo le righe in errore dopo averle corrette, usare il pulsante "Reimposta errori" nella scheda di gestione importazione, oppure:

UPDATE llx_psimport_product SET import_status = 0 WHERE import_status = 2;

quindi rieseguire lo script di importazione corrispondente.

File scaricabili dei moduli

L'API Webservice di PrestaShop non espone i file dei "prodotti virtuali/scaricabili" (confermato dal ticket ufficiale GitHub PrestaShop/PrestaShop#27834 e da diversi thread del forum PrestaShop). Questo viene aggirato da un modulo "bridge" per PrestaShop installato una tantum sul negozio.

Consigliato: modulo Psimport Bridge (un clic, come ogni altra importazione):

  1. Installare il modulo fornito in bridge/psimportbridge/ sul negozio PrestaShop (caricare lo zip dal back office, oppure copiarlo via FTP/SFTP in modules/ e installarlo)
  2. Nessuna configurazione aggiuntiva necessaria: riutilizza la stessa chiave API del Webservice già impostata (PSIMPORT_API_KEY)
  3. Nella scheda Gestione importazione, usare i pulsanti ↓ Recupera e → Importa sulla riga "File prodotto", esattamente come per ogni altra risorsa
  4. Una volta completata la migrazione, il modulo può essere disinstallato senza rischi (sola lettura, nessuna scrittura su database o disco lato PrestaShop)

Questo modulo consente di scaricare solo i file già referenziati in ps_product_download (protegge da letture di file arbitrarie).

Alternativa (se il modulo bridge non può essere installato): un'esportazione CSV manuale di ps_product_download da phpMyAdmin/Adminer, insieme a una copia locale della cartella download/ di PrestaShop, quindi php scripts/import-product-files.php /path/to/export.csv /path/to/download/.

Galleria completa delle immagini prodotto

fetch-product-images.php / import-product-images.php recuperano tutte le immagini di ogni prodotto PrestaShop (non solo la copertina), tramite il sub-endpoint Webservice products/{id}/images, in una tabella di appoggio dedicata llx_psimport_productimage.

Punti da verificare alla prima esecuzione:

  • La posizione di ogni immagine nella galleria Dolibarr deriva dall'ordine restituito dall'API — verificare visivamente l'ordine dopo l'importazione e riordinare manualmente se necessario
  • Per evitare di mostrare due volte la stessa immagine (copertina + galleria), i duplicati esatti vengono rilevati e ignorati silenziosamente
  • La forma esatta della risposta JSON può variare a seconda della versione di PrestaShop: testare prima con limit=5 su un campione

Controlli dopo ogni fase

  1. Verificare il contenuto delle tabelle llx_psimport_* (coerenza dei dati, IVA correttamente risolta)
  2. Nell'interfaccia Dolibarr, verificare: albero delle categorie, schede terzi (indirizzo, contatto), schede prodotto (prezzo netto/lordo, IVA, immagine, file allegato), ordini (righe, totali, stato)
  3. Confrontare i conteggi (numero di categorie/clienti/prodotti/ordini) tra PrestaShop, la tabella di appoggio e Dolibarr

FAQ

Ho bisogno dell'accesso diretto al database MySQL di PrestaShop?

No. L'intera migrazione passa attraverso l'API REST Webservice di PrestaShop, salvo un passaggio opzionale e una tantum (esportazione CSV manuale) se il modulo bridge non può essere installato per i file scaricabili.

Quali versioni di PrestaShop sono compatibili?

Da PrestaShop 1.6 a 9.x, tramite l'API Webservice standard. Il modulo bridge (lato PrestaShop) dichiara esso stesso questo intervallo di compatibilità.

Cosa fare se l'importazione di una risorsa fallisce parzialmente?

Correggere i dati sottostanti (nella tabella di appoggio o lato PrestaShop), riportare le righe in errore a import_status = 0 (pulsante "Reimposta errori" o una query SQL), quindi rieseguire solo lo script di importazione corrispondente.

Il test di connessione fallisce con un 403 anche se l'URL funziona nel browser

Vedere la sezione Risoluzione problemi HTTP 403: di solito si tratta di un firewall applicativo (Cloudflare Bot Fight Mode) che blocca le chiamate cURL, non di PrestaShop stesso.

Il modulo Psimport Bridge modifica i dati su PrestaShop?

No, è di sola lettura: nessuna scrittura su database o disco lato PrestaShop, e consente solo di scaricare file già referenziati in ps_product_download.

Vedi anche

Altre lingue