<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dolibarr.org/index.php?action=history&amp;feed=atom&amp;title=Module_psimport_ES</id>
	<title>Module psimport ES - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dolibarr.org/index.php?action=history&amp;feed=atom&amp;title=Module_psimport_ES"/>
	<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_psimport_ES&amp;action=history"/>
	<updated>2026-11-02T08:19:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_psimport_ES&amp;diff=66656&amp;oldid=prev</id>
		<title>Grandoc: /* Otros idiomas */</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_psimport_ES&amp;diff=66656&amp;oldid=prev"/>
		<updated>2026-07-10T09:23:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Otros idiomas&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:23, 10 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l204&quot;&gt;Line 204:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 204:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Module_psimport_EN|English documentation for the psimport module]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Module_psimport_EN|English documentation for the psimport module]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Module_psimport_DE|Deutsche Dokumentation für das Modul psimport]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Module_psimport_DE|Deutsche Dokumentation für das Modul psimport]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Module_psimport_IT|Documentazione in italiano del modulo psimport]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[fr:Module_psimport_FR]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[fr:Module_psimport_FR]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[en:Module_psimport_EN]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[en:Module_psimport_EN]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[de:Module_psimport_DE]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[de:Module_psimport_DE]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[it:Module_psimport_IT]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki_test:diff::1.12:old-66654:rev-66656 --&gt;
&lt;/table&gt;</summary>
		<author><name>Grandoc</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_psimport_ES&amp;diff=66654&amp;oldid=prev</id>
		<title>Grandoc: Created page with &quot;Category:Modules Category:AtooNet  =Módulo psimport=  ==Presentación==  &#039;&#039;&#039;psimport&#039;&#039;&#039; es un módulo para Dolibarr ERP/CRM publicado por [https://www.atoo-net.com At...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_psimport_ES&amp;diff=66654&amp;oldid=prev"/>
		<updated>2026-07-10T09:17:31Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/index.php?title=Category:Modules&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:Modules (page does not exist)&quot;&gt;Category:Modules&lt;/a&gt; &lt;a href=&quot;/index.php?title=Category:AtooNet&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:AtooNet (page does not exist)&quot;&gt;Category:AtooNet&lt;/a&gt;  =Módulo psimport=  ==Presentación==  &amp;#039;&amp;#039;&amp;#039;psimport&amp;#039;&amp;#039;&amp;#039; es un módulo para Dolibarr ERP/CRM publicado por [https://www.atoo-net.com At...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Modules]]&lt;br /&gt;
[[Category:AtooNet]]&lt;br /&gt;
&lt;br /&gt;
=Módulo psimport=&lt;br /&gt;
&lt;br /&gt;
==Presentación==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;psimport&amp;#039;&amp;#039;&amp;#039; es un módulo para Dolibarr ERP/CRM publicado por [https://www.atoo-net.com Atoo-Net].&lt;br /&gt;
&lt;br /&gt;
Incluye herramientas de línea de comandos para &amp;#039;&amp;#039;&amp;#039;migrar una tienda PrestaShop a Dolibarr&amp;#039;&amp;#039;&amp;#039;: categorías, terceros/direcciones, productos (con el IVA resuelto y la imagen de portada), archivos descargables de productos virtuales, galerías de imágenes y pedidos. La migración se basa en la API REST Webservice de PrestaShop, con tablas intermedias (&amp;lt;code&amp;gt;llx_psimport_*&amp;lt;/code&amp;gt;) que permiten revisar y corregir los datos antes de la importación final en Dolibarr, y repetir una importación sin volver a consultar la API.&lt;br /&gt;
&lt;br /&gt;
Todos los productos se importan como &amp;#039;&amp;#039;&amp;#039;servicio&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;Product::TYPE_SERVICE&amp;lt;/code&amp;gt;), ya que son módulos desmaterializados, independientemente del tipo configurado en PrestaShop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Propiedad!!Valor&lt;br /&gt;
|-&lt;br /&gt;
|Autor||Philippe Grand — Atoo-Net&lt;br /&gt;
|-&lt;br /&gt;
|Versión||1.0&lt;br /&gt;
|-&lt;br /&gt;
|Licencia||GNU GPL v3+&lt;br /&gt;
|-&lt;br /&gt;
|Dolibarr mínimo||v24.0&lt;br /&gt;
|-&lt;br /&gt;
|PHP mínimo||v8.1&lt;br /&gt;
|-&lt;br /&gt;
|PrestaShop compatible||v1.6 a 9.x (API Webservice)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==¿Por qué usar psimport?==&lt;br /&gt;
&lt;br /&gt;
psimport permite trasladar todos los datos de una tienda PrestaShop existente a Dolibarr, sin conexión directa a la base de datos MySQL de PrestaShop (salvo un paso opcional y puntual para los archivos descargables). Cada paso pasa por una tabla intermedia que se puede revisar antes de la importación final.&lt;br /&gt;
&lt;br /&gt;
===Casos de uso===&lt;br /&gt;
&lt;br /&gt;
====Migración completa de una tienda PrestaShop====&lt;br /&gt;
Recuperación de categorías, terceros/direcciones, productos (con el IVA resuelto mediante los grupos de reglas fiscales de PrestaShop) y pedidos, a través de la API REST Webservice, sin instalación adicional en PrestaShop más allá de activar el Webservice.&lt;br /&gt;
&lt;br /&gt;
====Revisión antes de la importación final====&lt;br /&gt;
Cada recurso se recupera primero en una tabla intermedia (&amp;lt;code&amp;gt;llx_psimport_*&amp;lt;/code&amp;gt;) donde los datos pueden revisarse y corregirse antes de la importación real en Dolibarr. Esto evita volver a consultar la API de PrestaShop en caso de error.&lt;br /&gt;
&lt;br /&gt;
====Reintento selectivo tras corregir errores====&lt;br /&gt;
Cada fila de la tabla intermedia tiene un estado (&amp;lt;code&amp;gt;import_status&amp;lt;/code&amp;gt;). Las filas en error pueden restablecerse a &amp;quot;por importar&amp;quot; (botón &amp;quot;Restablecer errores&amp;quot; o una consulta SQL) y reprocesarse, sin tener que reimportar todo desde cero.&lt;br /&gt;
&lt;br /&gt;
====Recuperación de archivos descargables de módulos====&lt;br /&gt;
La API Webservice de PrestaShop no expone los archivos adjuntos a los &amp;quot;productos virtuales/descargables&amp;quot; (limitación confirmada por el ticket oficial de GitHub PrestaShop/PrestaShop#27834). Un módulo &amp;quot;bridge&amp;quot; de PrestaShop incluido con psimport evita este problema, en modo solo lectura.&lt;br /&gt;
&lt;br /&gt;
====Galería completa de imágenes de producto====&lt;br /&gt;
Además de la imagen de portada (recuperada junto con el producto), psimport también puede recuperar la galería completa de imágenes de cada producto a través del subendpoint de la API &amp;lt;code&amp;gt;products/{id}/images&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Instalación==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Requisitos en el lado de PrestaShop&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
#Activar el Webservice: &amp;#039;&amp;#039;&amp;#039;Parámetros avanzados &amp;gt; Webservice &amp;gt; Activar el webservice de PrestaShop&amp;#039;&amp;#039;&amp;#039; → Sí&lt;br /&gt;
#Crear una clave API (&amp;quot;Añadir una nueva clave de webservice&amp;quot;) con permisos GET sobre: &amp;lt;code&amp;gt;categories&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;customers&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;addresses&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;countries&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;products&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;images&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tax_rule_groups&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tax_rules&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;taxes&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;orders&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;order_details&amp;lt;/code&amp;gt;&lt;br /&gt;
#Anotar la URL del sitio y la clave API generada&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Requisitos en el lado de Dolibarr&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
#Módulos activados: Terceros, Productos, Servicios, Categorías, Pedidos, Facturas&lt;br /&gt;
#Activar el módulo &amp;#039;&amp;#039;&amp;#039;psimport&amp;#039;&amp;#039;&amp;#039; en &amp;#039;&amp;#039;&amp;#039;Inicio → Configuración → Módulos/Aplicaciones&amp;#039;&amp;#039;&amp;#039; (familia &amp;quot;Otros&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Al activar el módulo se crean automáticamente las tablas intermedias &amp;lt;code&amp;gt;llx_psimport_*&amp;lt;/code&amp;gt; mediante el mecanismo estándar de activación de módulos de Dolibarr — no es necesaria ninguna importación SQL manual.&lt;br /&gt;
&lt;br /&gt;
El módulo psimport &amp;#039;&amp;#039;&amp;#039;no tiene menú ni permisos propios&amp;#039;&amp;#039;&amp;#039;. Su única pantalla es la página de configuración (Configuración &amp;gt; Módulos/Aplicaciones &amp;gt; psimport &amp;gt; icono de llave inglesa), donde se introducen la URL de la tienda PrestaShop y la clave API del Webservice (constantes &amp;lt;code&amp;gt;PSIMPORT_API_URL&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;PSIMPORT_API_KEY&amp;lt;/code&amp;gt;), utilizadas por defecto por los scripts CLI cuando no se pasa ningún parámetro en la línea de comandos. Toda la migración se controla después desde la línea de comandos mediante los scripts de la carpeta &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Configuración==&lt;br /&gt;
&lt;br /&gt;
===Conexión a la API de PrestaShop===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Constante!!Descripción&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;PSIMPORT_API_URL&amp;lt;/code&amp;gt;||URL base de la API Webservice de PrestaShop (p. ej. &amp;lt;code&amp;gt;https://www.yourshop.com/api&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;PSIMPORT_API_KEY&amp;lt;/code&amp;gt;||Clave API del Webservice de PrestaShop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Solución de problemas: HTTP 403 en la API (alojamiento detrás de Cloudflare)===&lt;br /&gt;
&lt;br /&gt;
Si la prueba de conexión (o cualquier script &amp;lt;code&amp;gt;fetch-*&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;import-*&amp;lt;/code&amp;gt;) falla con un error del tipo &amp;lt;code&amp;gt;HTTP 403 Forbidden&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;con el cuerpo de respuesta vacío&amp;#039;&amp;#039;&amp;#039; y sin ninguna redirección detectada, mientras que la misma llamada funciona en un navegador, el bloqueo probablemente no proviene de PrestaShop sino de un firewall de aplicación situado por delante (Cloudflare, ModSecurity, etc.) que rechaza la solicitud antes de que llegue al sitio.&lt;br /&gt;
&lt;br /&gt;
Caso detectado y confirmado en un alojamiento &amp;#039;&amp;#039;&amp;#039;Cloudflare (plan gratuito)&amp;#039;&amp;#039;&amp;#039;: el &amp;#039;&amp;#039;&amp;#039;Bot Fight Mode&amp;#039;&amp;#039;&amp;#039; gratuito de Cloudflare detecta las llamadas cURL del módulo (sin navegador, sin JS, User-Agent no estándar) como tráfico de bots y responde con un &amp;quot;Managed Challenge&amp;quot; — que en el módulo se traduce en un 403 con cuerpo vacío.&lt;br /&gt;
&lt;br /&gt;
Para confirmarlo: en el panel de Cloudflare, &amp;#039;&amp;#039;&amp;#039;Security &amp;gt; Analytics &amp;gt; Events&amp;#039;&amp;#039;&amp;#039;, filtrar los últimos minutos tras una prueba reciente. Si la entrada bloqueada muestra &amp;#039;&amp;#039;&amp;#039;Service = &amp;quot;Bot fight mode&amp;quot;&amp;#039;&amp;#039;&amp;#039; y &amp;#039;&amp;#039;&amp;#039;Action = &amp;quot;Managed Challenge&amp;quot;&amp;#039;&amp;#039;&amp;#039;, se trata de este caso.&lt;br /&gt;
&lt;br /&gt;
En el plan gratuito, este Bot Fight Mode &amp;#039;&amp;#039;&amp;#039;no se puede omitir de forma selectiva por ruta URL&amp;#039;&amp;#039;&amp;#039;. La única opción es desactivar el interruptor &amp;#039;&amp;#039;&amp;#039;globalmente&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;&amp;#039;Security &amp;gt; Settings &amp;gt; &amp;quot;Bot fight mode&amp;quot;&amp;#039;&amp;#039;&amp;#039; → Desactivado mientras se ejecutan los scripts de importación, y reactivarlo después si es necesario.&lt;br /&gt;
&lt;br /&gt;
En un plan de Cloudflare de pago (Pro y superiores), Super Bot Fight Mode permite una omisión más precisa mediante una regla de seguridad &amp;quot;Skip&amp;quot; dirigida a &amp;lt;code&amp;gt;/api*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Uso==&lt;br /&gt;
&lt;br /&gt;
[[File:psimport_admin.png|center|thumb|800px|Gestión de importaciones]]&lt;br /&gt;
&lt;br /&gt;
===Orden de ejecución===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# 1. Categorías&lt;br /&gt;
php scripts/fetch-categories.php https://www.yourshop.com/api ABCDEF... 0 0&lt;br /&gt;
php scripts/import-categories.php 0&lt;br /&gt;
&lt;br /&gt;
# 2. Clientes + direcciones&lt;br /&gt;
php scripts/fetch-customers.php https://www.yourshop.com/api ABCDEF... 0 0&lt;br /&gt;
php scripts/import-customers.php 0&lt;br /&gt;
&lt;br /&gt;
# 3. Productos (IVA resuelto mediante tax_rules_groups, imagen de portada descargada)&lt;br /&gt;
php scripts/fetch-products.php https://www.yourshop.com/api ABCDEF... 0 0&lt;br /&gt;
php scripts/import-products.php https://www.yourshop.com/api ABCDEF... 0&lt;br /&gt;
&lt;br /&gt;
# 4. Archivos descargables de módulos (requiere el módulo PrestaShop &amp;quot;Psimport Bridge&amp;quot;)&lt;br /&gt;
php scripts/fetch-product-files.php https://www.yourshop.com/api ABCDEF... 0 0&lt;br /&gt;
php scripts/import-product-files.php https://www.yourshop.com/api ABCDEF... 0&lt;br /&gt;
&lt;br /&gt;
# 4b. Galería completa de imágenes de producto&lt;br /&gt;
php scripts/fetch-product-images.php https://www.yourshop.com/api ABCDEF... 0 0&lt;br /&gt;
php scripts/import-product-images.php https://www.yourshop.com/api ABCDEF... 0&lt;br /&gt;
&lt;br /&gt;
# 5. Pedidos (configurar $importable_state_ids y $payment_module_map al inicio del script antes de la primera ejecución)&lt;br /&gt;
php scripts/fetch-orders.php https://www.yourshop.com/api ABCDEF... 0 0&lt;br /&gt;
php scripts/import-orders.php 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros comunes:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;limit&amp;lt;/code&amp;gt; = 0 para recuperar/importar todo, o un número para probar con una muestra&lt;br /&gt;
*&amp;lt;code&amp;gt;clean_all_before_fetch&amp;lt;/code&amp;gt; = 1 para vaciar la tabla intermedia antes de una nueva recuperación (por defecto 0 = acumular/actualizar)&lt;br /&gt;
&lt;br /&gt;
===Repetir una importación tras corregir errores===&lt;br /&gt;
&lt;br /&gt;
Cada tabla intermedia tiene una columna &amp;lt;code&amp;gt;import_status&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; = por importar&lt;br /&gt;
*&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; = importado correctamente (&amp;lt;code&amp;gt;fk_dolibarr&amp;lt;/code&amp;gt; contiene el id del objeto creado en Dolibarr)&lt;br /&gt;
*&amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; = en error (detalles en &amp;lt;code&amp;gt;import_error&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Para reprocesar solo las filas en error tras corregirlas, usar el botón &amp;quot;Restablecer errores&amp;quot; en la pestaña de gestión de importación, o:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE llx_psimport_product SET import_status = 0 WHERE import_status = 2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y después volver a ejecutar el script de importación correspondiente.&lt;br /&gt;
&lt;br /&gt;
===Archivos descargables de módulos===&lt;br /&gt;
&lt;br /&gt;
La API Webservice de PrestaShop &amp;#039;&amp;#039;&amp;#039;no expone&amp;#039;&amp;#039;&amp;#039; los archivos de los &amp;quot;productos virtuales/descargables&amp;quot; (confirmado por el ticket oficial de GitHub PrestaShop/PrestaShop#27834 y varios hilos del foro de PrestaShop). Esto se soluciona con un módulo &amp;quot;bridge&amp;quot; de PrestaShop instalado una vez en la tienda.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Recomendado: módulo Psimport Bridge&amp;#039;&amp;#039;&amp;#039; (un solo clic, igual que el resto de importaciones):&lt;br /&gt;
&lt;br /&gt;
#Instalar el módulo incluido en &amp;lt;code&amp;gt;bridge/psimportbridge/&amp;lt;/code&amp;gt; en la tienda PrestaShop (subir el zip desde el back office, o copiarlo por FTP/SFTP a &amp;lt;code&amp;gt;modules/&amp;lt;/code&amp;gt; e instalarlo)&lt;br /&gt;
#No requiere configuración adicional: reutiliza la misma clave API del Webservice ya configurada (&amp;lt;code&amp;gt;PSIMPORT_API_KEY&amp;lt;/code&amp;gt;)&lt;br /&gt;
#En la pestaña &amp;#039;&amp;#039;&amp;#039;Gestión de importación&amp;#039;&amp;#039;&amp;#039;, usar los botones &amp;#039;&amp;#039;&amp;#039;↓ Recuperar&amp;#039;&amp;#039;&amp;#039; e &amp;#039;&amp;#039;&amp;#039;→ Importar&amp;#039;&amp;#039;&amp;#039; en la fila &amp;quot;Archivos de producto&amp;quot;, exactamente igual que para cualquier otro recurso&lt;br /&gt;
#Una vez finalizada la migración, el módulo puede desinstalarse sin riesgo (solo lectura, sin escrituras en base de datos ni en disco en PrestaShop)&lt;br /&gt;
&lt;br /&gt;
Este módulo solo permite descargar archivos ya referenciados en &amp;lt;code&amp;gt;ps_product_download&amp;lt;/code&amp;gt; (protege contra la lectura de archivos arbitrarios).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alternativa&amp;#039;&amp;#039;&amp;#039; (si no se puede instalar el módulo bridge): una exportación CSV manual de &amp;lt;code&amp;gt;ps_product_download&amp;lt;/code&amp;gt; desde phpMyAdmin/Adminer, junto con una copia local de la carpeta &amp;lt;code&amp;gt;download/&amp;lt;/code&amp;gt; de PrestaShop, y después &amp;lt;code&amp;gt;php scripts/import-product-files.php /path/to/export.csv /path/to/download/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Galería completa de imágenes de producto===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fetch-product-images.php&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;import-product-images.php&amp;lt;/code&amp;gt; recuperan &amp;#039;&amp;#039;&amp;#039;todas&amp;#039;&amp;#039;&amp;#039; las imágenes de cada producto de PrestaShop (no solo la portada), a través del subendpoint del Webservice &amp;lt;code&amp;gt;products/{id}/images&amp;lt;/code&amp;gt;, en una tabla intermedia dedicada &amp;lt;code&amp;gt;llx_psimport_productimage&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Puntos a comprobar en la primera ejecución:&lt;br /&gt;
&lt;br /&gt;
*La posición de cada imagen en la galería de Dolibarr se deriva del orden devuelto por la API — comprobar visualmente el orden tras la importación y reordenar manualmente si es necesario&lt;br /&gt;
*Para evitar mostrar la misma imagen dos veces (portada + galería), los duplicados exactos se detectan y se omiten silenciosamente&lt;br /&gt;
*La forma exacta de la respuesta JSON puede variar según la versión de PrestaShop: probar primero con &amp;lt;code&amp;gt;limit=5&amp;lt;/code&amp;gt; sobre una muestra&lt;br /&gt;
&lt;br /&gt;
===Comprobaciones tras cada paso===&lt;br /&gt;
&lt;br /&gt;
#Revisar el contenido de las tablas &amp;lt;code&amp;gt;llx_psimport_*&amp;lt;/code&amp;gt; (consistencia de los datos, IVA correctamente resuelto)&lt;br /&gt;
#En la interfaz de Dolibarr, comprobar: árbol de categorías, fichas de terceros (dirección, contacto), fichas de producto (precio sin/con impuestos, IVA, imagen, archivo adjunto), pedidos (líneas, totales, estado)&lt;br /&gt;
#Comparar los recuentos (número de categorías/clientes/productos/pedidos) entre PrestaShop, la tabla intermedia y Dolibarr&lt;br /&gt;
&lt;br /&gt;
==Preguntas frecuentes==&lt;br /&gt;
&lt;br /&gt;
===¿Necesito acceso directo a la base de datos MySQL de PrestaShop?===&lt;br /&gt;
No. Toda la migración pasa por la API REST Webservice de PrestaShop, salvo un paso opcional y puntual (exportación CSV manual) si no se puede instalar el módulo bridge para los archivos descargables.&lt;br /&gt;
&lt;br /&gt;
===¿Qué versiones de PrestaShop son compatibles?===&lt;br /&gt;
De PrestaShop 1.6 a 9.x, a través de la API Webservice estándar. El módulo bridge (en el lado de PrestaShop) declara él mismo este rango de compatibilidad.&lt;br /&gt;
&lt;br /&gt;
===¿Qué hacer si la importación de un recurso falla parcialmente?===&lt;br /&gt;
Corregir los datos subyacentes (en la tabla intermedia o en PrestaShop), restablecer las filas en error a &amp;lt;code&amp;gt;import_status = 0&amp;lt;/code&amp;gt; (botón &amp;quot;Restablecer errores&amp;quot; o una consulta SQL) y después volver a ejecutar solo el script de importación correspondiente.&lt;br /&gt;
&lt;br /&gt;
===La prueba de conexión falla con un 403 aunque la URL funcione en el navegador===&lt;br /&gt;
Ver la sección [[#Solución de problemas: HTTP 403 en la API (alojamiento detrás de Cloudflare)|Solución de problemas HTTP 403]]: normalmente se trata de un firewall de aplicación (Cloudflare Bot Fight Mode) que bloquea las llamadas cURL, no de PrestaShop en sí.&lt;br /&gt;
&lt;br /&gt;
===¿El módulo Psimport Bridge modifica datos en PrestaShop?===&lt;br /&gt;
No, es de solo lectura: sin escrituras en base de datos ni en disco en PrestaShop, y solo permite descargar archivos ya referenciados en &amp;lt;code&amp;gt;ps_product_download&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Véase también==&lt;br /&gt;
&lt;br /&gt;
*[https://www.atoo-net.com Atoo-Net — Editor del módulo]&lt;br /&gt;
*[https://framagit.org/grandoc/psimport Repositorio del módulo]&lt;br /&gt;
*[https://wiki.dolibarr.org/index.php/Module_UltimateMarketPlace_EN Module UltimateMarketPlace]&lt;br /&gt;
&lt;br /&gt;
==Otros idiomas==&lt;br /&gt;
&lt;br /&gt;
* [[Module_psimport_FR|Documentation en français du module psimport]]&lt;br /&gt;
* [[Module_psimport_EN|English documentation for the psimport module]]&lt;br /&gt;
* [[Module_psimport_DE|Deutsche Dokumentation für das Modul psimport]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Module_psimport_FR]]&lt;br /&gt;
[[en:Module_psimport_EN]]&lt;br /&gt;
[[de:Module_psimport_DE]]&lt;/div&gt;</summary>
		<author><name>Grandoc</name></author>
	</entry>
</feed>