Jump to content

[SOLVED] Dostosowanie w zamówieniu API


Recommended Posts

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 by PawelPrestashop (see edit history)
  • Thanks 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...