PawelPrestashop Posted March 13, 2018 Share Posted March 13, 2018 (edited) Cześć, Mam problem od dłuższego czasu z którym nie mogę sobie poradzić. Chodzi o dostosowanie produktu a widoczność na zamówieniu. Zajmuje się integracją pomiędzy prestą a innym systemem i potrzebuje pobierać zamowienia ze sklepu i przesyłać je do innego systemu. Wykorzysuje do tego wbudowane API prety. Zamowienia pobieram z api/orders, mam tam informacje o produktach na zamówieniu ALE jeżeli produkt ma możliwość wpisania dostosowania to w tym miejscu go nie ma. Przykład karta z możliwością wpisania tytułu. Na karcie produktu wchodze w zakładkę Dostosowanie i tam dodaje pole testowe "wpisz tytuł". Dostosowania produktow znalazłem w api/customizations. Tam mam id_cart oraz id_product i na tej podstawie teoretycznie możnaby połączyć te dane, w wyniku czego powinienem dostać informację jakie dostosowanie zostało wpisane przy zakupie produktu. Niestety po dokonaniu zakupu w api/customizations dodaje się nowy wpis ktory zawiera Id_cart Id_product I wszystkie dotychczas utworzone dostosowania, co jest bez sensu, bo ma przykładzie powyższej karty mam tam wpisane tytuły ze wszystkich złożonych jak i niezłożonych zamówień. Nie wiem w jaki sposób połączyć konkretne zamówienie z konkretnym dostosowaniem. Znacie na to jakiś sposób? Prestashop 1.6.1.17 EDIT: Dla kogoś, kto może kiedyś byłby tym zainteresowany wrzucam rozwiazanie mojego problemu. Przeszukałem dość sporo informacji w internecie i bardzo mało ich znalazłem, okazało się, że w Preście jest błąd i to odkryty dość dawno, ale nikt go nie naprawił do tej pory. W klasie class/Customizations.php jest błąd pobierania informacji do API: Żeby go naprawić należy popawić ostatnią linijkę funkcji dodająć: AND id_customization = '.$this->id.' Teraz API wyświetla się poprawnie. public function getWsCustomizedDataTextFields() { if (!$results = Db::getInstance()->executeS(' SELECT id_customization_field, value FROM `'.DB_PREFIX.'customization_field` cf LEFT JOIN `'.DB_PREFIX.'customized_data` cd ON (cf.id_customization_field = cd.index) WHERE `id_product` = '.(int)$this->id_product.' AND id_customization = '.$this->id.' AND cf.type = 1')) { return array(); } return $results; } Edited March 13, 2018 by PawelPrestashop (see edit history) 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now