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;
}