Press "Enter" to skip to content

Masowa aktualizacja cen produktów w Presta Shop

Admin 9

Artykuł dotyczy aktualizacji cen nie opartych na kombinacji atrybutów. Jak to zrobić opisaliśmy w innym artykule.

Są dedykowane moduły do Presta Shop aby to zrobić. Jednak przy odrobinie trudu wystarczy nam jedynie dostęp do PhpMyadmin na serwerze gdzie jest zainstalowany sklep.

Punkt 0 – kopia bezpieczeństwa.

Przed przystąpieniem do działania wykonujemy kopię bezpieczeństwa bazy danych. Nie zajmie nam to długo (2 kliknięcia myszką..) a pozwoli kontrolować bieżącą sytuację.

Wykonanie kopii bezpieczeństwa. W zależności od języka zaplecza znajduje się ta opcja w sekcji:

PL:

Parametry zaawansowane » Backup bazy danych » Przeczytałem ostrzeżenie – utwórz nową kopię zapasową

ENG:

Advanced Parameters » DB Backup » I have read the disclaimer. Please create a new backup.

1) Dostęp do bazy danych.

Dane dostępowe znajdziemy w pliku:

config/settings.inc.php

Kopiujemy dane znajdujące się po tych kluczach i przecinkach pomiędzy apostrofami:

_DB_USER_
_DB_PASSWD_

2) Dostęp do PhpMyAdmin

O to musimy poprosić naszego providera. Najczęstsze znajdowane ścieżki na popularnych hostingach to:

http://adres-sklepu.pl/phpmyadmin

http://sql.adres-sklepu.pl/

Możemy także pobrać w miarę aktualną wersję PhpMyAdmin i ją wgrać do podfolderu na serwerze sklepu. Np. do nowego folderu o nazwie „myadmin„. Wtedy dostęp do PhpMyAdmin będzie pod łączem:

http://sql.adres-sklepu.pl/myadmin

Uwaga! Domyślny adres bazy danych w PhpMyAdmin w skrypcie to „localhost” w zależności od naszego adresu serwera bazy danych (w powyżej wskazanym pliku settings.inc.php) może być on inny. Należy go uwzględnić w konfiguracji naszej instancji PhpMyAdmin w takim wypadku.

3) Wyciągnięcie potrzebnych danych do aktualizacji cen.

Po pomyślnym zalogowaniu do PMA uruchamiamy komendę SQL:

SELECT p.`id_product` , pl.name, p.`quantity` , p.`price`, pl.description FROM `ps_product` p LEFT JOIN `ps_product_lang` pl ON pl.id_product = p.`id_product` WHERE pl.id_lang =6

Uwaga! W zależności od naszego tzw. prefixu (domyślnie to ps_)  w nazwie tabel w bazie danych komenda może być inna. Zwróć także uwagę na numer ID języka. Użyliśmy tutaj ID = 6. Upewnij się czy dla języka polskiego też masz taki numer. Dla aktualizacji cen nie jest to istotne. Bardziej przydaje się do orientacji jaki produkt zmieniamy w kwestii nazwy.

Efektem naszego zapytania jest lista produktów. Eksportujemy ją do pliku CSV dla Excel poprzez link „Export” na dole listy:

Na następnym ekranie wybieramy:

Export Method » Custom » Format » CSV for MS Excel » GO

4) Praca na pliku Exportu

Plik otwieramy poprzez edytor plików dla MS Excel np. domyślny dla MS Office lub Libre Office Calc. Do naszych prac nie ma to znaczenia – możemy wręcz użyć arkusza kalkulacyjnego z Google Docs. Ustawiamy takie rozpoznanie znaków rozdzielających aby w kolejnych kolumnach znalazły się:

  • ID produktu
  • Nazwa produktu
  • Ilość
  • Cena
  • Opis (html)

5) Wgranie cen w podstawowej kolumnie

Modyfikujemy plik Excela wg schematu na obrazku:

Pilnując aby odpowiednie ceny w wierszach (tutaj kolumna B) były przypisane do prawidłowych ID produktów (tutaj kolumna D)

W kolumnie A wpisujemy:

UPDATE `ps_product` SET `price` = '

W kolumnie C wpisujemy:

' WHERE `ps_product`.`id_product` =

W kolumnie E wpisujemy symbol średnika – aby rozdzielić kolejne zapytania:

;

Następnie zaznaczamy wszystkie komórki i wklejamy dane do notatnika lub innego edytora tekstowego (polecamy tutaj darmowy PSPad).

Ostatnim krokiem jest usunięcie w edytorze wystąpień tabulacji. Chodzi o to, że podczas wklejana danych – są one rozdzielone tabulacjami w miejscach gdzie w Excelu były kolumny:

  • Należy zaznaczyć taką tabulację w tekście i ją skopiować
  • Włączyć w edytorze opcję typu  „Znajdź i zamień
  • W szukanym polu wklejamy tabulację
  • W polu do zamiany usuwamy całą treść (zamienimy tabulację na brak znaku)

Po usunięciu tabulacji posiadamy komendy SQL które aktualizują nam bazę danych. A dokładniej ceny. Wklejamy całą zawartość edytora tekstowego w polu wywołania komendy w PhpMyAdmin (zakładka „SQL„).

Gotowe – ceny zaktualizowane.

6) Wgranie cen w kolumnie odpowiedzialnej za multistore

Aby całościowo zmienić ceny należy dodatkowo zaktualizować tabelę:

ps_product_shop

Pojawiła się ona w oprogramowaniu Presta Shop wraz z funkcją multistore.

W zasadzie aktualizacja tej kolumny jest dokładnie taka sama jak przedstawiona wyżej w punkcie 5)

Jedyną różnicą jest zawartość kolumny A:

UPDATE `ps_product_shop` SET `price` = '

    • Xmicx Xmicx

      Witam,
      Przydatny poradnik. Niedługo zabiorę się za podobny zabieg.
      Powyższe rozwiązanie aktualizuje ceny netto, zgadza się? Jeśli tak to dodał bym jeszcze jeden krok. Opiszę na przykładzie:
      Produkt kosztuje 100 PLN brutto.
      W bazie w kolumnie „price” mamy wartość netto 81.300813 PLN.
      Jeśli teraz chcemy zmniejszyć cenę brutto o 10 PLN, musimy najpierw dokładnie wyliczyć sobie cenę netto aby po dodaniu podatku wyszło nam dokładnie 90 PLN.
      W naszym przykładzie cena netto wyjdzie 73,1707317 PLN i tą wartość należało by wpisać do Excela.
      Myślę że przydałaby się dodatkowa kolumna zawierająca cenę brutto w Excelu, na podstawie której, za pomocą formuły obliczyliśmy cenę netto (żeby nie bujać się z kalkulatorem przy każdym produkcie). Fakt że później trzeba to jakoś wyciąć z notatnika, ale to już chyba nie problem;)
      Pozdrawiam

  1. Xmicx Xmicx

    Witam,
    Przydatny poradnik. Niedługo zabiorę się za podobny zabieg.
    Powyższe rozwiązanie aktualizuje ceny netto, zgadza się? Jeśli tak to dodał bym jeszcze jeden krok. Opiszę na przykładzie:
    Produkt kosztuje 100 PLN brutto.
    W bazie w kolumnie „price” mamy wartość netto 81.300813 PLN.
    Jeśli teraz chcemy zmniejszyć cenę brutto o 10 PLN, musimy najpierw dokładnie wyliczyć sobie cenę netto aby po dodaniu podatku wyszło nam dokładnie 90 PLN.
    W naszym przykładzie cena netto wyjdzie 73,1707317 PLN i tą wartość należało by wpisać do Excela.
    Myślę że przydałaby się dodatkowa kolumna zawierająca cenę brutto w Excelu, na podstawie której, za pomocą formuły obliczyliśmy cenę netto (żeby nie bujać się z kalkulatorem przy każdym produkcie). Fakt że później trzeba to jakoś wyciąć z notatnika, ale to już chyba nie problem;)
    Pozdrawiam

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
W dzisiejszym artykule przedstawimy jak po krótce zainstalować i skonfigurować…