PS PrestaShop Średnio zaawansowany

Import dostawców i dropshipping dla PrestaShop 8 i 9

Instalacja, konfiguracja i automatyzacja importu od wielu dostawców (CSV, XML, JSON), marż oraz synchronizacji stanów magazynowych.

Zaktualizowano Wersja modułu 1.0.0

Wprowadzenie

Moduł Import dostawców i dropshipping (nazwa techniczna dfsupplierfeed) automatycznie importuje i synchronizuje katalogi Twoich dostawców w PrestaShop 8 i 9. Obsługuje wielu dostawców i wiele plików w formatach CSV, XML i JSON, stosuje Twoje reguły marży do wyliczenia cen sprzedaży na podstawie ceny zakupu, synchronizuje stany magazynowe co godzinę przez cron oraz rozstrzyga duplikaty EAN13 między źródłami dzięki priorytetowi przypisanemu każdemu dostawcy.

Moduł nie zastępuje natywnego importu CSV w PrestaShop, który służy do jednorazowego, ręcznego wczytania danych. Moduł uprzemysławia importy cykliczne z wielu źródeł, z automatycznymi marżami i synchronizacją stanów.

Instalacja

  1. W panelu administracyjnym przejdź do Moduły > Menedżer modułów, a następnie Wgraj moduł.
  2. Wybierz plik dfsupplierfeed.zip i zatwierdź.
  3. Po instalacji kliknij Konfiguruj.

Podczas instalacji moduł tworzy pięć tabel (dfsf_supplier, dfsf_feed, dfsf_rule, dfsf_product, dfsf_log) i generuje unikalny token crona.

Przegląd interfejsu

Strona konfiguracji jest podzielona na zakładki:

  • Dashboard: liczniki (dostawcy, pliki, powiązane produkty, reguły) oraz przypomnienie zasad działania.
  • Suppliers: tworzenie dostawców i ustawianie ich priorytetu.
  • Feeds: definicja plików źródłowych i ich mapowania.
  • Margin rules: reguły wyliczania cen sprzedaży.
  • Logs: historia importów.
  • Settings & Cron: ustawienia ogólne i gotowe do skopiowania adresy crona.

Krok 1: utwórz dostawców

W zakładce Suppliers dodaj dostawcę, podając:

  • Nazwa: etykieta dostawcy.
  • Priorytet: liczba całkowita, gdzie 1 oznacza najwyższy priorytet. Służy do rozstrzygania duplikatów EAN13 (opisane niżej).
  • Aktywny: nieaktywny dostawca jest pomijany przez cron.
  • Utwórz natywnego dostawcę PrestaShop: zalecane, powiązuje standardowego dostawcę PrestaShop, dzięki czemu wypełniana jest także cena zakupu w tabeli product_supplier.

Najlepsze priorytety (najniższe liczby) przypisuj dostawcom najbardziej wiarygodnym lub najtańszym: to oni będą „właścicielami” produktów występujących w kilku źródłach.

Krok 2: skonfiguruj plik źródłowy

W zakładce Feeds każdy plik jest przypisany do dostawcy i zawiera:

  • Typ źródła: zdalny URL albo plik lokalny (ścieżka względem katalogu głównego sklepu, ograniczona do tego katalogu ze względów bezpieczeństwa).
  • Źródło: adres URL lub ścieżka pliku. Odpowiedzi skompresowane gzipem są dekodowane automatycznie.
  • Format: CSV, XML lub JSON.
  • Ceny brutto? oraz Stawka podatku: jeśli plik podaje ceny zakupu brutto, moduł przelicza je na netto według tej stawki.
  • Kategoria domyślna: kategoria produktów tworzonych bez jawnej kategorii.
  • Twórz brakujące produkty, Importuj zdjęcia, Uwzględnij w synchronizacji godzinowej, Aktywny.

Mapowanie pól

Mapowanie to obiekt JSON, który wiąże kolumny lub węzły Twojego pliku ze znormalizowanymi polami produktu. Dostępnych jest 13 pól kanonicznych: name, reference, ean13, cost, quantity, description, description_short, category, manufacturer, weight, tax_rate, image, mpn.

Mapowanie CSV

Powiąż każde pole z nagłówkiem kolumny (albo z indeksem kolumny liczonym od 0). Separator jest wykrywany automatycznie (;, ,, tabulator lub |), a przecinki dziesiętne są akceptowane.

{
  "fields": {
    "name": "product_name",
    "reference": "sku",
    "ean13": "ean",
    "cost": "price",
    "quantity": "stock",
    "image": "image_url"
  }
}

Mapowanie XML

Uzupełnij items_path, czyli ścieżkę do powtarzanych węzłów (np. products/product), a następnie zmapuj każde pole na ścieżkę względną. Prefiks @ odczytuje atrybut, a kolejne poziomy zagnieżdżenia rozdziela się ukośnikiem.

{
  "items_path": "products/product",
  "fields": {
    "reference": "@sku",
    "name": "title",
    "ean13": "ean",
    "cost": "pricing/wholesale",
    "quantity": "stock/quantity"
  }
}

Mapowanie JSON

Uzupełnij items_path, czyli ścieżkę do tablicy pozycji w notacji z kropką (np. data.products), a następnie zmapuj każde pole. Indeksy tablic zapisuje się jako segmenty liczbowe (np. images.0).

{
  "items_path": "data.products",
  "fields": {
    "reference": "sku",
    "name": "name",
    "ean13": "barcode",
    "cost": "prices.cost",
    "quantity": "inventory.available",
    "image": "images.0"
  }
}

Wiersz jest pomijany, jeśli nie ma ani kodu EAN13, ani referencji dostawcy: to dwa klucze dopasowania. Kody EAN są walidowane, a następnie normalizowane do 13 cyfr.

Krok 3: zdefiniuj marże

W zakładce Margin rules każda reguła wylicza cenę sprzedaży netto na podstawie ceny zakupu netto:

  • Procent: koszt × (1 + wartość/100). Przykład: wartość 35 daje +35%.
  • Współczynnik: koszt × wartość. Przykład: wartość 1,8 daje ×1,8.
  • Stała kwota: koszt + wartość.

Następnie stosowane jest opcjonalne zaokrąglenie psychologiczne: x,99, x,95, x,90 lub zaokrąglenie w górę do pełnej złotówki.

Zakres i rozstrzyganie reguł

Reguła może dotyczyć dostawcy, kategorii, obu naraz albo być globalna. Gdy produkt pasuje do kilku reguł, wygrywa najbardziej szczegółowa, w tej kolejności:

  1. dostawca oraz kategoria
  2. sam dostawca
  3. sama kategoria
  4. reguła globalna

Reguły kategorii obejmują także podkategorie: reguła ustawiona na dokładnej kategorii produktu ma pierwszeństwo przed regułą na kategorii nadrzędnej. Gdy nie pasuje żadna reguła, stosowana jest marża domyślna z zakładki Settings.

Priorytet EAN między źródłami

To sedno modułu w pracy z wieloma dostawcami. Gdy ten sam kod ean13 pojawia się w kilku plikach:

  • Dostawca o lepszym priorytecie (niższa liczba) jest właścicielem produktu, a ceny, stan magazynowy i koszt pochodzą z jego pliku.
  • Pozostałe źródła są pomijane dla tej referencji (status „skipped” w logach).
  • Jeśli później ten sam kod EAN dostarczy dostawca o lepszym priorytecie, automatycznie przejmuje własność produktu.

To Ty decydujesz, które źródło jest rozstrzygające, ustawiając priorytety. Zamawianie tej samej referencji u kilku hurtowników staje się bezpieczne, bez wzajemnie sprzecznych plików.

Ręczne uruchomienie importu

W zakładce Feeds każdy plik ma dwa przyciski:

  • Pełny import (ikona odtwarzania): aktualizuje powiązane produkty oraz tworzy brakujące, jeśli plik na to pozwala.
  • Synchronizacja stanów (ikona odświeżania): aktualizuje wyłącznie ceny i ilości produktów już powiązanych.

Automatyzacja przez cron

Zakładka Settings & Cron pokazuje dwa gotowe do skopiowania adresy, zabezpieczone tokenem. Skonfiguruj je w harmonogramie zadań swojego serwera:

# Synchronizacja stanów co godzinę (ceny i ilości powiązanych produktów)
0 * * * * curl -s "https://twoj-sklep.pl/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=TWOJ_TOKEN&mode=stock" > /dev/null

# Pełny import każdej nocy (tworzenie i aktualizacje)
30 3 * * * curl -s "https://twoj-sklep.pl/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=TWOJ_TOKEN&mode=full" > /dev/null

Dodaj &id_feed=N, aby przetworzyć tylko wybrany plik. Punkt końcowy zwraca raport JSON (utworzone, zaktualizowane, pominięte, błędy w podziale na pliki).

Jeśli wygenerujesz token ponownie w ustawieniach, pamiętaj o aktualizacji zadań cron: stary adres zwróci błąd 403.

Ustawienia ogólne

  • Utworzone produkty od razu aktywne: domyślnie wyłączone, produkty tworzone z plików trafiają do wersji roboczej, abyś zatwierdził je przed publikacją.
  • Marża domyślna: stosowana, gdy nie pasuje żadna reguła.
  • Przechowywanie logów: liczba dni przed automatycznym czyszczeniem.
  • Wygeneruj token crona ponownie.

Monitorowanie i logi

Zakładka Logs wypisuje każde uruchomienie wraz z plikiem źródłowym, trybem, licznikami (utworzone, zaktualizowane, pominięte, błędy), czasem wykonania i szczegółami pierwszych napotkanych błędów. Logi są czyszczone automatycznie zgodnie ze skonfigurowanym okresem przechowywania.

Rozwiązywanie problemów

„Feed file not found or outside shop directory”

W przypadku źródła plikowego ścieżka musi wskazywać czytelny plik znajdujący się w katalogu sklepu. Użyj ścieżki względem katalogu głównego albo adresu URL.

Produkty powstają, ale nie są widoczne na sklepie

To zachowanie domyślne: tworzone produkty są wyłączone. Sprawdź je i włącz albo zaznacz opcję „Utworzone produkty od razu aktywne” w ustawieniach.

Dostawca nigdy nie nadpisuje wspólnego produktu

Jego priorytet jest prawdopodobnie gorszy (wyższa liczba) niż priorytet dostawcy będącego właścicielem. Skoryguj priorytety w zakładce Suppliers.

Ceny wydają się za wysokie lub za niskie

Sprawdź, czy plik podaje ceny zakupu brutto (opcja „Ceny brutto?” plus stawka podatku), i zweryfikuj, która reguła marży rzeczywiście się stosuje, zgodnie z kolejnością rozstrzygania.

Zgodność

  • PrestaShop 8.0 do 9.x, PHP 7.4 do 8.3.
  • Bez nadpisywania rdzenia PrestaShop.
  • Moduł przetłumaczony na FR, EN, ES, DE, IT.
Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia