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

Discussion in 'JoomShopping' started by TYMON_krot, Jul 17, 2018.

Thread Status:
Not open for further replies.
  1. Offline

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

    Joined:
    Aug 10, 2017
    Messages:
    28
    Likes Received:
    0
    Gender:
    Male
    Здравствуйте. В работе интернет-магазина сделанного на 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 Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    Приведи структуру таблицы. Это сторонне расширение для ЖШ ? Думаю в этой таблице внешний ключ для таблицы продуктов с первичным ключем, который и перезаписывается при импорте с 1С.
     
  4. Offline

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

    Joined:
    Aug 10, 2017
    Messages:
    28
    Likes Received:
    0
    Gender:
    Male
    Да, это аддон, не идущий с компонентом joomshopping. Необходим для того, чтобы хранить товар в корзине, даже если пользователь вышел из системы, и заново залогинился
    Структура таблицы:
     

    Attached Files:

  5. OlegK
    Offline

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    И что хранится в поле cur ?
     
  6. Offline

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

    Joined:
    Aug 10, 2017
    Messages:
    28
    Likes Received:
    0
    Gender:
    Male
    айди валюты, а в поле products хранится массив символов указанный в первом сообщении
     
  7. OlegK
    Offline

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    Стандартным способом твою проблему не решить. Имхо.
     
  8. Offline

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

    Joined:
    Aug 10, 2017
    Messages:
    28
    Likes Received:
    0
    Gender:
    Male
    А нестандартным есть мысли? хотя бы направление. Может есть возможность пойти на крайние меры и сделать запрет на удаление записей из базы
    Код (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С, но нет такой возможности, приходится выкручиваться
     
    Last edited: Jul 17, 2018
  9. OlegK
    Offline

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    Все таки проверь еще раз -меняется или нет ? И какой автоинкремент установлен в таблице товара?
     
  10. Offline

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

    Joined:
    Aug 10, 2017
    Messages:
    28
    Likes Received:
    0
    Gender:
    Male
    Меняется, автоинкремент = 1
     
  11. OlegK
    Offline

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    А что не меняется - product_name или алиас? Значит нужно искать что не меняется и изменить логику поиска аддлна, по неизменяемому полю .
     
  12. Offline

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

    Joined:
    Aug 10, 2017
    Messages:
    28
    Likes Received:
    0
    Gender:
    Male
    Тема закрыта, нашелся человек, который переделает выгрузку из 1С:)
     
  13. OlegK
    Offline

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    Закрыл.
     
Thread Status:
Not open for further replies.

Share This Page

Loading...