Исчезновение товара в корзине после обновления БД

Тема в разделе "JoomShopping", создана пользователем TYMON_krot, 17.07.2018.

Статус темы:
Закрыта.
  1. Offline

    TYMON_krot Недавно здесь

    Регистрация:
    10.08.2017
    Сообщения:
    28
    Симпатии:
    0
    Пол:
    Мужской
    Здравствуйте. В работе интернет-магазина сделанного на 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 данные хранятся в таком виде

    Код (CODE):
    1. 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 в какое-то свободное поле товара, которое используется в корзине, с помощью триггера после добавления товара, а затем по нему сравнивать количество, но в какое тогда?
     
  2.  
  3. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Приведи структуру таблицы. Это сторонне расширение для ЖШ ? Думаю в этой таблице внешний ключ для таблицы продуктов с первичным ключем, который и перезаписывается при импорте с 1С.
     
  4. Offline

    TYMON_krot Недавно здесь

    Регистрация:
    10.08.2017
    Сообщения:
    28
    Симпатии:
    0
    Пол:
    Мужской
    Да, это аддон, не идущий с компонентом joomshopping. Необходим для того, чтобы хранить товар в корзине, даже если пользователь вышел из системы, и заново залогинился
    Структура таблицы:
     

    Вложения:

    • cart.png
      cart.png
      Размер файла:
      79.4 КБ
      Просмотров:
      3
  5. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    И что хранится в поле cur ?
     
  6. Offline

    TYMON_krot Недавно здесь

    Регистрация:
    10.08.2017
    Сообщения:
    28
    Симпатии:
    0
    Пол:
    Мужской
    айди валюты, а в поле products хранится массив символов указанный в первом сообщении
     
  7. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Стандартным способом твою проблему не решить. Имхо.
     
  8. Offline

    TYMON_krot Недавно здесь

    Регистрация:
    10.08.2017
    Сообщения:
    28
    Симпатии:
    0
    Пол:
    Мужской
    А нестандартным есть мысли? хотя бы направление. Может есть возможность пойти на крайние меры и сделать запрет на удаление записей из базы
    Код (sql):
    1. CREATE TRIGGER InsteadOfDeleteProduct ON Product INSTEAD OF DELETE AS RETURN;


    А перед добавлением новой записи из 1С делать триггер с конструкцией
    Код (sql):
    1. IF(EXISTS (SELECT * FROM (имя таблицы, где ищется запись) WHERE (условие, которое должно выполниться)))
    2. BEGIN
    3. UPDATE (имя таблицы, где ищется запись)
    4. SET (данные, которые будут обновляться)
    5. WHERE (условие)
    6. END
    7. ELSE
    8. BEGIN
    9. INSERT INTO (имя таблицы, где ищется запись)
    10. VALUES()
    11. END


    вот только чем это может обернуться при 10к позиций...?

    По хорошему найти бы человека, который делал выгрузку из 1С, но нет такой возможности, приходится выкручиваться
     
    Последнее редактирование: 17.07.2018
  9. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Все таки проверь еще раз -меняется или нет ? И какой автоинкремент установлен в таблице товара?
     
  10. Offline

    TYMON_krot Недавно здесь

    Регистрация:
    10.08.2017
    Сообщения:
    28
    Симпатии:
    0
    Пол:
    Мужской
    Меняется, автоинкремент = 1
     
  11. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    А что не меняется - product_name или алиас? Значит нужно искать что не меняется и изменить логику поиска аддлна, по неизменяемому полю .
     
  12. Offline

    TYMON_krot Недавно здесь

    Регистрация:
    10.08.2017
    Сообщения:
    28
    Симпатии:
    0
    Пол:
    Мужской
    Тема закрыта, нашелся человек, который переделает выгрузку из 1С:)
     
  13. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Закрыл.
     
Статус темы:
Закрыта.

Поделиться этой страницей

Загрузка...