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.
Zawartość artykułu
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` = '
[…] Na początek nawiązujemy połączenie z bazą danych. Jak uzyskać parametry policzenia i zalogować się do PhpMyAdmin – opisaliśmy w innym naszym artykule. […]
[…] Na początek nawiązujemy połączenie z bazą danych. Jak uzyskać parametry policzenia i zalogować się do PhpMyAdmin – opisaliśmy w innym naszym artykule. […]
[…] Pozyskujemy także link i logowanie do narzędzia phpmyadmin. […]
[…] Zrób kopię bezpieczeństwa i zaloguj się do PhpMyAdmin (jak to zrobić opisywaliśmy wielokrotnie np. https://pskrk.com/masowa-aktualizacja-cen-produktow-w-presta-shop/) […]
[…] Jak zrobić te czynności – opisywaliśmy to np. w tym artykule: https://pskrk.com/masowa-aktualizacja-cen-produktow-w-presta-shop/ […]
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
[…] Zrób kopię bezpieczeństwa i zaloguj się do PhpMyAdmin (jak to zrobić opisywaliśmy wielokrotnie np. https://pskrk.com/masowa-aktualizacja-cen-produktow-w-presta-shop/) […]
[…] Masowa aktualizacja cen produktów w Presta Shop […]
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