<?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_DE</id>
	<title>Module psimport DE - 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_DE"/>
	<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_psimport_DE&amp;action=history"/>
	<updated>2026-11-02T08:19:49Z</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_DE&amp;diff=66657&amp;oldid=prev</id>
		<title>Grandoc: /* Andere Sprachen */</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_psimport_DE&amp;diff=66657&amp;oldid=prev"/>
		<updated>2026-07-10T09:25:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Andere Sprachen&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:25, 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-l203&quot;&gt;Line 203:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 203:&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_FR|Documentation en français du module 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_FR|Documentation en français du module psimport]]&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_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 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_ES|Documentación en español del módulo psimport]]&lt;/ins&gt;&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 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;[[es:Module_psimport_ES]]&lt;/ins&gt;&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-66650:rev-66657 --&gt;
&lt;/table&gt;</summary>
		<author><name>Grandoc</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_psimport_DE&amp;diff=66650&amp;oldid=prev</id>
		<title>Grandoc: Created page with &quot;Category:Modules Category:AtooNet  =Modul psimport=  ==Übersicht==  &#039;&#039;&#039;psimport&#039;&#039;&#039; ist ein Modul für Dolibarr ERP/CRM, veröffentlicht von [https://www.atoo-net.com...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_psimport_DE&amp;diff=66650&amp;oldid=prev"/>
		<updated>2026-07-10T09:13:23Z</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;  =Modul psimport=  ==Übersicht==  &amp;#039;&amp;#039;&amp;#039;psimport&amp;#039;&amp;#039;&amp;#039; ist ein Modul für Dolibarr ERP/CRM, veröffentlicht von [https://www.atoo-net.com...&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;
=Modul psimport=&lt;br /&gt;
&lt;br /&gt;
==Übersicht==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;psimport&amp;#039;&amp;#039;&amp;#039; ist ein Modul für Dolibarr ERP/CRM, veröffentlicht von [https://www.atoo-net.com Atoo-Net].&lt;br /&gt;
&lt;br /&gt;
Es enthält Kommandozeilen-Werkzeuge, um einen &amp;#039;&amp;#039;&amp;#039;PrestaShop-Shop nach Dolibarr zu migrieren&amp;#039;&amp;#039;&amp;#039;: Kategorien, Kunden/Adressen, Produkte (mit aufgelöster MwSt. und Titelbild), herunterladbare Dateien virtueller Produkte, Bildergalerien und Bestellungen. Die Migration nutzt die REST-Webservice-API von PrestaShop, mit Zwischentabellen (&amp;lt;code&amp;gt;llx_psimport_*&amp;lt;/code&amp;gt;), in denen die Daten vor dem endgültigen Import in Dolibarr geprüft und korrigiert werden können, sowie einem erneuten Import ohne erneuten API-Zugriff.&lt;br /&gt;
&lt;br /&gt;
Alle Produkte werden als &amp;#039;&amp;#039;&amp;#039;Dienstleistung&amp;#039;&amp;#039;&amp;#039; importiert (&amp;lt;code&amp;gt;Product::TYPE_SERVICE&amp;lt;/code&amp;gt;), da es sich um dematerialisierte Module handelt, unabhängig vom auf PrestaShop-Seite eingestellten Typ.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Eigenschaft!!Wert&lt;br /&gt;
|-&lt;br /&gt;
|Autor||Philippe Grand — Atoo-Net&lt;br /&gt;
|-&lt;br /&gt;
|Version||1.0&lt;br /&gt;
|-&lt;br /&gt;
|Lizenz||GNU GPL v3+&lt;br /&gt;
|-&lt;br /&gt;
|Dolibarr minimum||v24.0&lt;br /&gt;
|-&lt;br /&gt;
|PHP minimum||v8.1&lt;br /&gt;
|-&lt;br /&gt;
|Unterstütztes PrestaShop||v1.6 bis 9.x (Webservice-API)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Warum psimport verwenden?==&lt;br /&gt;
&lt;br /&gt;
Mit psimport können Sie alle Daten eines bestehenden PrestaShop-Shops nach Dolibarr übernehmen, ohne direkte Verbindung zur MySQL-Datenbank von PrestaShop (mit Ausnahme eines optionalen, einmaligen Schritts für herunterladbare Dateien). Jeder Schritt läuft über eine Zwischentabelle, die vor dem endgültigen Import überprüft werden kann.&lt;br /&gt;
&lt;br /&gt;
===Anwendungsfälle===&lt;br /&gt;
&lt;br /&gt;
====Vollständige Migration eines PrestaShop-Shops====&lt;br /&gt;
Abruf von Kategorien, Kunden/Adressen, Produkten (mit über die Steuerregelgruppen von PrestaShop aufgelöster MwSt.) und Bestellungen über die REST-Webservice-API, ohne zusätzliche Installation auf PrestaShop-Seite außer der Aktivierung des Webservice.&lt;br /&gt;
&lt;br /&gt;
====Prüfung vor dem endgültigen Import====&lt;br /&gt;
Jede Ressource wird zunächst in eine Zwischentabelle (&amp;lt;code&amp;gt;llx_psimport_*&amp;lt;/code&amp;gt;) abgerufen, in der die Daten vor dem eigentlichen Import in Dolibarr geprüft und korrigiert werden können. Das vermeidet einen erneuten Zugriff auf die PrestaShop-API im Fehlerfall.&lt;br /&gt;
&lt;br /&gt;
====Gezielte Wiederholung nach Fehlerkorrektur====&lt;br /&gt;
Jede Zeile der Zwischentabelle trägt einen Status (&amp;lt;code&amp;gt;import_status&amp;lt;/code&amp;gt;). Fehlerhafte Zeilen können auf &amp;quot;zu importieren&amp;quot; zurückgesetzt (Schaltfläche &amp;quot;Fehler zurücksetzen&amp;quot; oder eine SQL-Abfrage) und erneut verarbeitet werden, ohne alles von vorn zu importieren.&lt;br /&gt;
&lt;br /&gt;
====Abruf herunterladbarer Moduldateien====&lt;br /&gt;
Die Webservice-API von PrestaShop stellt die an &amp;quot;virtuelle/herunterladbare Produkte&amp;quot; angehängten Dateien nicht bereit (eine durch das offizielle GitHub-Ticket PrestaShop/PrestaShop#27834 bestätigte Einschränkung). Ein mit psimport geliefertes &amp;quot;Bridge&amp;quot;-PrestaShop-Modul umgeht dies, rein lesend.&lt;br /&gt;
&lt;br /&gt;
====Vollständige Produktbildergalerie====&lt;br /&gt;
Über das Titelbild hinaus (das zusammen mit dem Produkt abgerufen wird) kann psimport auch die vollständige Bildergalerie jedes Produkts über den API-Unterendpunkt &amp;lt;code&amp;gt;products/{id}/images&amp;lt;/code&amp;gt; abrufen.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anforderungen auf PrestaShop-Seite&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
#Webservice aktivieren: &amp;#039;&amp;#039;&amp;#039;Erweiterte Parameter &amp;gt; Webservice &amp;gt; Webservice von PrestaShop aktivieren&amp;#039;&amp;#039;&amp;#039; → Ja&lt;br /&gt;
#Einen API-Schlüssel erstellen (&amp;quot;Neuen Webservice-Schlüssel hinzufügen&amp;quot;) mit GET-Berechtigungen für: &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;
#Die Shop-URL und den erzeugten API-Schlüssel notieren&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anforderungen auf Dolibarr-Seite&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
#Aktivierte Module: Kunden/Lieferanten (Third parties), Produkte, Dienstleistungen, Kategorien, Bestellungen, Rechnungen&lt;br /&gt;
#Das Modul &amp;#039;&amp;#039;&amp;#039;psimport&amp;#039;&amp;#039;&amp;#039; in &amp;#039;&amp;#039;&amp;#039;Startseite → Setup → Module/Anwendungen&amp;#039;&amp;#039;&amp;#039; (Familie &amp;quot;Andere&amp;quot;) aktivieren&lt;br /&gt;
&lt;br /&gt;
Beim Aktivieren des Moduls werden die Zwischentabellen &amp;lt;code&amp;gt;llx_psimport_*&amp;lt;/code&amp;gt; automatisch über den Standard-Aktivierungsmechanismus von Dolibarr angelegt — kein manueller SQL-Import nötig.&lt;br /&gt;
&lt;br /&gt;
Das Modul psimport hat &amp;#039;&amp;#039;&amp;#039;kein Menü und keine eigenen Berechtigungen&amp;#039;&amp;#039;&amp;#039;. Die einzige Bildschirmseite ist die Konfigurationsseite (Setup &amp;gt; Module/Anwendungen &amp;gt; psimport &amp;gt; Schraubenschlüssel-Symbol), auf der die PrestaShop-Shop-URL und der Webservice-API-Schlüssel (Konstanten &amp;lt;code&amp;gt;PSIMPORT_API_URL&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;PSIMPORT_API_KEY&amp;lt;/code&amp;gt;) eingetragen werden. Diese werden standardmäßig von den CLI-Skripten verwendet, wenn kein Parameter auf der Kommandozeile übergeben wird. Die gesamte Migration wird anschließend über die Skripte im Ordner &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt; von der Kommandozeile aus gesteuert.&lt;br /&gt;
&lt;br /&gt;
==Konfiguration==&lt;br /&gt;
&lt;br /&gt;
===Verbindung zur PrestaShop-API===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Konstante!!Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;PSIMPORT_API_URL&amp;lt;/code&amp;gt;||Basis-URL der PrestaShop-Webservice-API (z. B. &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;||API-Schlüssel des PrestaShop-Webservice&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Fehlerbehebung: HTTP 403 bei der API (Hosting hinter Cloudflare)===&lt;br /&gt;
&lt;br /&gt;
Wenn der Verbindungstest (oder ein &amp;lt;code&amp;gt;fetch-*&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;import-*&amp;lt;/code&amp;gt;-Skript) mit einem Fehler wie &amp;lt;code&amp;gt;HTTP 403 Forbidden&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;mit leerem Antwortkörper&amp;#039;&amp;#039;&amp;#039; und ohne erkannte Weiterleitung fehlschlägt, während derselbe Aufruf im Browser funktioniert, kommt die Sperre wahrscheinlich nicht von PrestaShop selbst, sondern von einer vorgelagerten Anwendungs-Firewall (Cloudflare, ModSecurity usw.), die die Anfrage abweist, bevor sie die Seite überhaupt erreicht.&lt;br /&gt;
&lt;br /&gt;
Ein bestätigter Fall bei einem &amp;#039;&amp;#039;&amp;#039;Cloudflare-Hosting (Free-Plan)&amp;#039;&amp;#039;&amp;#039;: Der kostenlose &amp;#039;&amp;#039;&amp;#039;Bot Fight Mode&amp;#039;&amp;#039;&amp;#039; von Cloudflare erkennt die cURL-Aufrufe des Moduls (kein Browser, kein JS, untypischer User-Agent) als Bot-Traffic und antwortet mit einer &amp;quot;Managed Challenge&amp;quot; — was auf Modulseite als leerer 403-Fehler erscheint.&lt;br /&gt;
&lt;br /&gt;
Zur Bestätigung: im Cloudflare-Dashboard unter &amp;#039;&amp;#039;&amp;#039;Security &amp;gt; Analytics &amp;gt; Events&amp;#039;&amp;#039;&amp;#039; die letzten Minuten nach einem frischen Test filtern. Zeigt der geblockte Eintrag &amp;#039;&amp;#039;&amp;#039;Service = &amp;quot;Bot fight mode&amp;quot;&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Action = &amp;quot;Managed Challenge&amp;quot;&amp;#039;&amp;#039;&amp;#039;, liegt dieser Fall vor.&lt;br /&gt;
&lt;br /&gt;
Im Free-Plan kann dieser Bot Fight Mode &amp;#039;&amp;#039;&amp;#039;nicht selektiv pro URL-Pfad umgangen werden&amp;#039;&amp;#039;&amp;#039;. Die einzige Option ist, den Schalter &amp;#039;&amp;#039;&amp;#039;global&amp;#039;&amp;#039;&amp;#039; zu deaktivieren: &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; → Aus, während die Import-Skripte laufen, und danach bei Bedarf wieder zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
Bei einem kostenpflichtigen Cloudflare-Plan (Pro und höher) erlaubt Super Bot Fight Mode eine gezieltere Umgehung über eine &amp;quot;Skip&amp;quot;-Sicherheitsregel für &amp;lt;code&amp;gt;/api*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Verwendung==&lt;br /&gt;
&lt;br /&gt;
[[File:psimport_admin.png|center|thumb|800px|Importverwaltung]]&lt;br /&gt;
&lt;br /&gt;
===Ausführungsreihenfolge===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# 1. Kategorien&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. Kunden + Adressen&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. Produkte (MwSt. über tax_rules_groups aufgelöst, Titelbild heruntergeladen)&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. Herunterladbare Moduldateien (erfordert das PrestaShop-Modul &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. Vollständige Produktbildergalerie&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. Bestellungen (vor dem ersten Lauf $importable_state_ids und $payment_module_map am Skriptanfang anpassen)&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;
Gemeinsame Parameter:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;limit&amp;lt;/code&amp;gt; = 0, um alles abzurufen/zu importieren, oder eine Zahl für einen Test mit einer Stichprobe&lt;br /&gt;
*&amp;lt;code&amp;gt;clean_all_before_fetch&amp;lt;/code&amp;gt; = 1, um die Zwischentabelle vor einem neuen Abruf zu leeren (Standard 0 = anreichern/aktualisieren)&lt;br /&gt;
&lt;br /&gt;
===Import nach Fehlerkorrektur wiederholen===&lt;br /&gt;
&lt;br /&gt;
Jede Zwischentabelle besitzt eine Spalte &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; = zu importieren&lt;br /&gt;
*&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; = erfolgreich importiert (&amp;lt;code&amp;gt;fk_dolibarr&amp;lt;/code&amp;gt; enthält die ID des erzeugten Dolibarr-Objekts)&lt;br /&gt;
*&amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; = fehlerhaft (Details in &amp;lt;code&amp;gt;import_error&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Um nach der Korrektur nur die fehlerhaften Zeilen erneut zu verarbeiten, die Schaltfläche &amp;quot;Fehler zurücksetzen&amp;quot; im Reiter der Importverwaltung verwenden, oder:&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;
und anschließend das passende Import-Skript erneut ausführen.&lt;br /&gt;
&lt;br /&gt;
===Herunterladbare Moduldateien===&lt;br /&gt;
&lt;br /&gt;
Die Webservice-API von PrestaShop &amp;#039;&amp;#039;&amp;#039;stellt die Dateien &amp;quot;virtueller/herunterladbarer Produkte&amp;quot; nicht bereit&amp;#039;&amp;#039;&amp;#039; (bestätigt durch das offizielle GitHub-Ticket PrestaShop/PrestaShop#27834 sowie mehrere Themen im PrestaShop-Forum). Dies wird durch ein einmalig im Shop installiertes &amp;quot;Bridge&amp;quot;-PrestaShop-Modul umgangen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Empfohlen: Modul Psimport Bridge&amp;#039;&amp;#039;&amp;#039; (ein Klick, wie jeder andere Import):&lt;br /&gt;
&lt;br /&gt;
#Das in &amp;lt;code&amp;gt;bridge/psimportbridge/&amp;lt;/code&amp;gt; mitgelieferte Modul im PrestaShop-Shop installieren (ZIP über das Backoffice hochladen oder per FTP/SFTP nach &amp;lt;code&amp;gt;modules/&amp;lt;/code&amp;gt; kopieren und dann installieren)&lt;br /&gt;
#Keine zusätzliche Konfiguration nötig: es verwendet denselben bereits eingerichteten Webservice-API-Schlüssel (&amp;lt;code&amp;gt;PSIMPORT_API_KEY&amp;lt;/code&amp;gt;)&lt;br /&gt;
#Im Reiter &amp;#039;&amp;#039;&amp;#039;Importverwaltung&amp;#039;&amp;#039;&amp;#039; die Schaltflächen &amp;#039;&amp;#039;&amp;#039;↓ Abrufen&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;→ Importieren&amp;#039;&amp;#039;&amp;#039; bei der Zeile &amp;quot;Produktdateien&amp;quot; verwenden, genau wie bei jeder anderen Ressource&lt;br /&gt;
#Nach Abschluss der Migration kann das Modul problemlos deinstalliert werden (rein lesend, keine Datenbank- oder Dateischreibvorgänge auf PrestaShop)&lt;br /&gt;
&lt;br /&gt;
Dieses Modul erlaubt nur den Download bereits in &amp;lt;code&amp;gt;ps_product_download&amp;lt;/code&amp;gt; referenzierter Dateien (Schutz vor beliebigen Dateizugriffen).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alternative&amp;#039;&amp;#039;&amp;#039; (falls das Bridge-Modul nicht installiert werden kann): ein manueller CSV-Export von &amp;lt;code&amp;gt;ps_product_download&amp;lt;/code&amp;gt; aus phpMyAdmin/Adminer, zusammen mit einer lokalen Kopie des &amp;lt;code&amp;gt;download/&amp;lt;/code&amp;gt;-Ordners von PrestaShop, dann &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;
===Vollständige Produktbildergalerie===&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; rufen &amp;#039;&amp;#039;&amp;#039;alle&amp;#039;&amp;#039;&amp;#039; Bilder jedes PrestaShop-Produkts ab (nicht nur das Titelbild), über den Webservice-Unterendpunkt &amp;lt;code&amp;gt;products/{id}/images&amp;lt;/code&amp;gt;, in eine eigene Zwischentabelle &amp;lt;code&amp;gt;llx_psimport_productimage&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Beim ersten Lauf zu prüfen:&lt;br /&gt;
&lt;br /&gt;
*Die Position jedes Bildes in der Dolibarr-Galerie ergibt sich aus der von der API zurückgegebenen Reihenfolge — nach dem Import die Reihenfolge visuell prüfen und bei Bedarf manuell anpassen&lt;br /&gt;
*Um dasselbe Bild nicht doppelt anzuzeigen (Titelbild + Galerie), werden exakte Duplikate erkannt und stillschweigend übersprungen&lt;br /&gt;
*Die genaue Form der JSON-Antwort kann je nach PrestaShop-Version variieren: zunächst mit &amp;lt;code&amp;gt;limit=5&amp;lt;/code&amp;gt; an einer Stichprobe testen&lt;br /&gt;
&lt;br /&gt;
===Prüfungen nach jedem Schritt===&lt;br /&gt;
&lt;br /&gt;
#Inhalt der Tabellen &amp;lt;code&amp;gt;llx_psimport_*&amp;lt;/code&amp;gt; prüfen (Datenkonsistenz, korrekt aufgelöste MwSt.)&lt;br /&gt;
#In der Dolibarr-Oberfläche prüfen: Kategoriebaum, Kundendatensätze (Adresse, Kontakt), Produktblätter (Preis netto/brutto, MwSt., Bild, angehängte Datei), Bestellungen (Positionen, Summen, Status)&lt;br /&gt;
#Anzahl (Kategorien/Kunden/Produkte/Bestellungen) zwischen PrestaShop, der Zwischentabelle und Dolibarr vergleichen&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
&lt;br /&gt;
===Benötige ich direkten Zugriff auf die MySQL-Datenbank von PrestaShop?===&lt;br /&gt;
Nein. Die gesamte Migration läuft über die REST-Webservice-API von PrestaShop, mit Ausnahme eines optionalen, einmaligen Schritts (manueller CSV-Export), falls das Bridge-Modul für herunterladbare Dateien nicht installiert werden kann.&lt;br /&gt;
&lt;br /&gt;
===Welche PrestaShop-Versionen sind kompatibel?===&lt;br /&gt;
Von PrestaShop 1.6 bis 9.x, über die Standard-Webservice-API. Das Bridge-Modul (auf PrestaShop-Seite) gibt diesen Kompatibilitätsbereich selbst an.&lt;br /&gt;
&lt;br /&gt;
===Was tun, wenn der Import einer Ressource teilweise fehlschlägt?===&lt;br /&gt;
Die zugrunde liegenden Daten korrigieren (in der Zwischentabelle oder auf PrestaShop-Seite), die fehlerhaften Zeilen auf &amp;lt;code&amp;gt;import_status = 0&amp;lt;/code&amp;gt; zurücksetzen (Schaltfläche &amp;quot;Fehler zurücksetzen&amp;quot; oder eine SQL-Abfrage) und anschließend nur das passende Import-Skript erneut ausführen.&lt;br /&gt;
&lt;br /&gt;
===Der Verbindungstest schlägt mit 403 fehl, obwohl die URL im Browser funktioniert===&lt;br /&gt;
Siehe den Abschnitt [[#Fehlerbehebung: HTTP 403 bei der API (Hosting hinter Cloudflare)|Fehlerbehebung HTTP 403]]: Dies ist meist eine Anwendungs-Firewall (Cloudflare Bot Fight Mode), die cURL-Aufrufe blockiert, nicht PrestaShop selbst.&lt;br /&gt;
&lt;br /&gt;
===Verändert das Modul Psimport Bridge Daten auf PrestaShop?===&lt;br /&gt;
Nein, es arbeitet rein lesend: keine Datenbank- oder Dateischreibvorgänge auf PrestaShop, und es erlaubt nur den Download bereits in &amp;lt;code&amp;gt;ps_product_download&amp;lt;/code&amp;gt; referenzierter Dateien.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
*[https://www.atoo-net.com Atoo-Net — Modul-Herausgeber]&lt;br /&gt;
*[https://framagit.org/grandoc/psimport Modul-Repository]&lt;br /&gt;
*[https://wiki.dolibarr.org/index.php/Module_UltimateMarketPlace_EN Module UltimateMarketPlace]&lt;br /&gt;
&lt;br /&gt;
==Andere Sprachen==&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;
&lt;br /&gt;
[[fr:Module_psimport_FR]]&lt;br /&gt;
[[en:Module_psimport_EN]]&lt;/div&gt;</summary>
		<author><name>Grandoc</name></author>
	</entry>
</feed>