Press "Enter" to skip to content

Skrypt PHP to akutalizacji i przebudowy tabeli ps_stock_available [PrestaShop 1.7] [PrestaShop 1.6]

Admin 0

Do czego służy tabela ps_stock_available?

W poprzednim artykule:

Migracja danych ze sklepu PrestaShop 1.4 do PrestaShop 1.7. Czy to możliwe? TAK!

Była mowa o specyficznej tabeli ps_stock_available (jest też o niej mowa w tym artykule: https://pskrk.com/przeniesienie-kombinacji-produktow-ze-sklepu-w-wersji-1-4-do-najnowszej-1-6-1-2/). Odpowiada ona za określenie ilości danego produktu. Szczególnie jeśli bazuje on na atrybutach produktów.

O ile w przypadku normalnego wypełnania sklepu danymi – tabela ta budowana jest w sposób naturalny i spójny. To w przypadku importu danych z innego sklepu albo aktualizacji z historcznych wersji PrestaShop – wypełnienie jej nie jest sprawą łatwą.

Przykład.

Weżmy pod uwagę taki produkt z 4 kombinacjami. Każda z nich ma po 100 ilości:

Widok kombinacji produktów danego produktu

W bazie danych wygląda to nieco inaczej:

Widok tabeli ps_stock_available dla danego produktu z wierszem sumującym

Istotnie są 4 wiersze z ilościami po 100. Każdy z nich ma inną wartość id_product_attribute jednak dla id_product_attribute = 0 (tutaj podświetlony na żółto) znajduje się tam suma reszty wierszy.

Tylko dzięki temu ilości produktów będą prawidłowo prezentowane w adminie i baza będzie spójna.

Co ciekawe jeśli zapiszemy produkt bez tego “sumującego” wiersza – to zostanie on magicznie dodany w bazie danych.

Natomiast jeśli chcemy ujednolicić zawartość tej tabeli aby było tam “po bożemu” – zapytanie SQL nie wystarczy. Posłużymy się tutaj odpowiednim skryptem PHP.

Przygotowania

1) Ustaw jak największą wartość parametru

2) Zrób kopię bezpieczeństwa bazy:

Zaawansowane -> Baza danych -> Kopia zapasowa DB

Plik PHP.

W tym celu utwórz tymczasowy plik. Np.

Lokalizacja jest czysto przypadkowa. Możesz wybrać inny moduł 🙂

O zawartości:

Jak widać w w/w skrypcie domyślna ilość dla każdej kombinacji to 100. Jak chcesz ustawić inną – odpowiednio zmodyfukuj skrypt.

Następnie go uruchom i uzbroj się w cierpliwość 🙂

Uwaga, jeśli jest on blokowany przez plik .htaccess w folderze:

Tymczasowo zmień nazwę pliku:

na inną np.

/modules/.htaccess_tmp

Następnie spróbuj ponownie.

Uwaga! po skończonej przebudowie tabeli usuń plik PHP i przywróć starą nazwę pliku blokującego.

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

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

Zobacz także !
Interesuje Cię przesiadka z muzealnego PS14 do najnowszej wersji PS17…