Jump to content
  • 0

Błąd przy dodawniu produktu poprzez api : available_date doesn"t have a default value


grzegorz.wyrobek

Question

Witam,

 

Piszę aplikacje w delphi integrującą się z PrestaShop (mam wersję ps 1.6.0.9).

Udało mi się już zautoryzować i zrealizować funkcje create,update,delete dla kategorii i producentów i działa to prawidłowo.

Próbuję napisac funkcję, która doda produkt. Jednakże po wysłaniu w delphi:

TIdHTTPid_server.Post(s_url, StrStream);

gdzie s_url zawiera

'http://localhost:81/prestashopinst/prestashop/api/products/'

a strStream zawiera xml z parametrami do zakładanego produktu -  analogicznie jak robiłem to dla kategorii i producentów.

 

dostaję następujący błąd :

prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<errors>
<error>
<code><![CDATA[97]]></code>
<message><![CDATA[[SQL Error] Field "available_date" doesn"t have a default value. From ProductCore->setWsCombinations() Query was : INSERT INTO `ps_product_attribute` (`id_product`) VALUES (21)]]></message>
</error>
</errors>
</prestashop>

Próbowałem różne wartości "available_date" jak i usunięcie tego paramatru z xml-a z strStream bez skutku.

Dokopałem się do kodów źródłowych prestashop, który mam zainstalowany do celów testowych i znalazłem tam plik product.php, a w nim metodę setWsCombinations , która kończy się następującymi linijkami:

foreach ($to_add as $id)
        {
            // Update id_product if exists else create
            if (in_array($id, $all_ids))
                Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'product_attribute` SET id_product = '.(int)$this->id.' WHERE id_product_attribute='.$id);
            else                
                Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'product_attribute` (`id_product`) VALUES ('.$this->id.')');
        }
        return true;

Wygląda mi na to, że funckcja Insert na bazie nie przewidziała, że w tabeli ps_product_attribute znajduje sie pole available_date, kóre nie ma wartości domyślnej i nie jest w żaden sposób przekazywane.

Po zmianie linijki po else na

Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'product_attribute` (`id_product`,`available_date`) VALUES ('.$this->id.',0000-00-00)');

Błąd w moim programie w delphi się już nie pojawia.

Moje pytanie to czy PrestaShop ma buga i powinni to zmodyfikować, czy ja coś robię nie tak.

Pytam bo będę z czasem musiał wdrożyć mój program u klienta (nie wiem jeszcze którą ma wersję prestashopa) i wolałbym nie musieć poprawiać kodu źródłowego prestashopa u klienta bo nie wiem czy będzie to możlwe.

 

Pozdrawiam.

Link to comment
Share on other sites

1 answer to this question

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...