Программа iNETsHOP - обработка, сравнение, анализ прайс листов поставщиков, создание каталога товаров интернет магазина Форум - Программа iNETsHOP - Работа с программой - Помогите отредактировать запрос обмена данными


http://inetshop.in.ua/index.php?p=showtopic&toid=336&pp=15&page=1&area=1
17.08.2016 08:06

deniska312


Пользователь iNETsHOP

Количество сообщений   17
Зарегистрирован:   17-05-2016, 23:32:49
Иммем Виртуемарт 3, и настроена система обмена данными напрямую в базу. прайсы обновляются ежедневно, и количества наличия у меня нет, поставщик не предоставляет. Поэтому система есть товар или нету настроена так:
Если товар есть у поставщика, то в программе ставится галочка наличия, и с помощью наличия этой галочки запрос определяет, публиковать ли товар или снять с публикации. Если он товар публикует то ставит ему кол-во наличия 100 шт.

Мне нужно сделать так, чтобы публиковались все товары, но в зависимости от того стоит ли галочка или нет менялось кол-во наличия. То есть, если галочка стоит то товар публикуется и его количество пишем 100, если товара нет в наличии, то товар публикуем и количество ставим 0.

product_in_stock - количество наличия товаров
published - 1 активный 0 неактивный



Вот сам код на это дело
Код


UPDATE jos_virtuemart_products p, TBL_GOODS g
SET
# 1, /*virtuemart_vendor_id*/
p.product_parent_id = IFNULL(G_G_ID, 0),
# G_ID, /*product_sku*/
# '', /*product_gtin*/
# NULL, /*product_mpn*/
# 0, /*product_weight*/
# 'KG', /*product_weight_uom*/
# 0, /*product_length*/
# 0, /*product_width*/
# 0, /*product_height*/
# 'M', /*product_lwh_uom*/
# '', /*product_url*/
p.product_in_stock = CASE WHEN G_PRESENT> 0 THEN 100 ELSE 0 END,
# 1, /*product_ordered*/
# 0, /*low_stock_notification*/
# '0000-00-00 00:00:00', /*product_available_date*/
# '', /*product_availability*/
# 0, /*product_special*/
# 0, /*product_sales*/
# 'KG', /*product_unit*/
# 0, /*product_packaging*/
# 'min_order_level="0"|max_order_level="0"|step_order_level=null|product_box="0"|', /*product_params*/
# 0, /*hits*/
# '', /*intnotes*/
# '', /*metarobot*/
# '', /*metaauthor*/
# 0, /*layout*/
p.published = CASE WHEN g.g_ID IN (SELECT G_G_ID FROM TBL_GOODS WHERE G_G_ID > 0) OR G_PRESENT > 0 THEN 1 ELSE 0 END,
# 0, /*pordering*/
# now(), /*created_on*/
# 0, /*created_by*/
p.modified_on = now(),
p.modified_by = 0
WHERE p.virtuemart_product_id = g.G_ID

17.08.2016 10:23

deniska312


Пользователь iNETsHOP

Тема начата

Количество сообщений   17
Зарегистрирован:   17-05-2016, 23:32:49
Поменял немного код, теперь он записывает товарам которые в наличии кол-во 500, а товарам у которых наличия нет он пишет 0. Но почему то не публикует он все товары.

Код
UPDATE jos_virtuemart_products p, TBL_GOODS g
SET
# 1, /*virtuemart_vendor_id*/
p.product_parent_id = IFNULL(G_G_ID, 0),
# G_ID, /*product_sku*/
# '', /*product_gtin*/
# NULL, /*product_mpn*/
# 0, /*product_weight*/
# 'KG', /*product_weight_uom*/
# 0, /*product_length*/
# 0, /*product_width*/
# 0, /*product_height*/
# 'M', /*product_lwh_uom*/
# '', /*product_url*/
p.product_in_stock = CASE WHEN g.g_ID IN (SELECT G_G_ID FROM TBL_GOODS WHERE G_G_ID > 0) OR G_PRESENT > 0 THEN 500 ELSE 0 END,

# 1, /*product_ordered*/
# 0, /*low_stock_notification*/
# '0000-00-00 00:00:00', /*product_available_date*/
# '', /*product_availability*/
# 0, /*product_special*/
# 0, /*product_sales*/
# 'KG', /*product_unit*/
# 0, /*product_packaging*/
# 'min_order_level="0"|max_order_level="0"|step_order_level=null|product_box="0"|', /*product_params*/
# 0, /*hits*/
# '', /*intnotes*/
# '', /*metarobot*/
# '', /*metaauthor*/
# 0, /*layout*/
# 1, /*published*/
# 0, /*pordering*/
# now(), /*created_on*/
# 0, /*created_by*/
p.modified_on = now(),
p.modified_by = 0
WHERE p.virtuemart_product_id = g.G_ID

17.08.2016 12:23

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
За публикацию (видимость) товаров в аддоне Virturmart отвечает поле published таблицы jos_virtuemart_products, которое при обновлении товаров в вашей модификации всегда устанавливается в 1 (True).

У вас это поле в запросе для справки есть, но оно не используется
Цитата

# 1, /*published*/


Сделайте его активным в этом sql-запросе

Цитата

1, /*published*/


Если в результате этого товары не будут видны на сайте, то возможно вам нужно очистить кеш браузера или кеш CMS. Или как вариант, проверить влияют ли на видимость товаров дополнительные плагины, например тот который у вас отображает варианты товара.