Здравствуйте. В работе интернет-магазина сделанного на JoomShopping Version 4.6.0 были обнаружена следующая проблема: при выгрузке товаров из 1С в базу данных невозможно оформить заказ из корзины, так как пишет что количество товара равно 0.
Описываю проблему пошагово:
1. Покупатель добавляет/откладывает себе в корзину товар, и сразу не делает оформление заказа.
2. Ночью происходит выгрузка товаров из 1С.
3. На следующий день покупатель логинится, заходит в корзину (товары хранятся с помощью аддона JoomShopping Addon Save Cart), а вчерашние товары при этом отображены, и пытается оформить заказ
4. Система выдает ошибку, указывая на то что количество товара равно 0.
Я понимаю, что это происходит, потому что выгрузка из 1С в базу данных, которая была сделана сторонним человеком следующим образом: все товары удаляются, а затем просто добавляются заново, все те, что есть в 1С.
Таким образом, у товаров меняется product_id и соответственно при проверке на количество система выдает ошибку.
Поля, которые наполняются:
product_id - счетчик, формируется сам
product_ean - артикул
name_ru_Ru - имя товара
product_manufactered_id - внешний ключ к полю manufactered_id таблицы wovy1_jshopping_manufacturers
product_quantity - количество товара
product_price - цена товара
description_ru_Ru - альтернативный артикул товара
short_description_ru_Ru - клон артикула товара
и добавили поле odins (VARCHAR) - для выгрузки уникального номера товара по номенклатуре 1С
По логике, конечно необходимо, нормально делать апдейт, если товар существует, то обновляем его данные, если нет, то добавляем новый. Но почему-то разработчик сделал именно так как описано выше, а заказчик требует от меня, что-то с этим сделать. Связаться с человеком, и попросить его сделать нормальную выгрузку на сегодняшний день не имеется возможности.
Я так понимаю, что логично сделать сравнение количества товара при оформлении заказа по полю odins, но вот реализовать это стало для меня проблемой. В таблице jshopping_cart_for_user данные хранятся в таком виде
a:1:{i:0;a:19:{s:8:"quantity";i:1;s:10:"product_id";i:1163439;s:11:"category_id";s:1:"1";s:3:"tax";N;s:6:"tax_id";s:1:"0";s:12:"product_name";s:29:"Фильтр салонный";s:11:"thumb_image";s:7:"thumb_"";s:17:"delivery_times_id";s:1:"0";s:3:"ean";s:10:"8888020110";s:10:"attributes";s:6:"a:0:{}";s:16:"attributes_value";a:0:{}s:12:"extra_fields";a:0:{}s:6:"weight";s:6:"0.0000";s:9:"vendor_id";s:1:"1";s:5:"files";s:6:"a:0:{}";s:14:"freeattributes";s:6:"a:0:{}";s:12:"manufacturer";s:12:"TOYOTA.LEXUS";s:19:"pid_check_qty_value";s:9:"P:1163439";s:5:"price";d:0;}}
Кто может сталкивался с такой проблемой, или подскажите в каком направлении двигаться? Возможно стоит записывать номер odins в какое-то свободное поле товара, которое используется в корзине, с помощью триггера после добавления товара, а затем по нему сравнивать количество, но в какое тогда?