Quad.Wiki

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Данный механизм применяется для каких-то не стандартных задач, функционал для реализации которых отсутствует в программе.

В запросах нужно заменять код поля, в которое сохраняется информация, например вот это:

Запрос выполняется через действие Quad.Magic “Выполнить запрос БД”, запрос вставляется в Настройка 1.

Установить в поле цену и наличие других поставщиков

В поле сохраняется информация в виде:

Пост1 ц:120.5 ост:*** | Пост2 ц:81 ост:5

т.е. название поставщика, цена после слова “ц:” , остаток после слова “ост:”, если поставщиков несколько то они разделены вертикальной чертой.

update product set f_3v8q42ftv = 
(select string_agg(concat(pr.title, ' ц:', 
round(case pd.price_curr_id 
when 3 then pd.price * ###EUR### 
when 2 then pd.price * ###USD### 
when 4 then pd.price * ###RUB### 
else pd.price end)::varchar, 
' ост:', pd.exists_text), ' | ') 
from price_detail pd, price pr where
pr.id = pd.price_id and pd.is_exists <> 2 
and pr.price_type in (1, 3) and pd.product_id = product.id 
and pd.price_id <> product.price_id)

f_3v8q42ftv - код поля, в которое сохраняется информация, его нужно заменить на ваше

В запросе так же указана конвертация цен в белорусские рубли, если в прайсе цена в другой валюте - это нужно изменить, если ваша основная валюта не BYN. Код валюты российских рублей должен быть RUB, а не RUR.

Если ваша основная валюта российские рубля, то удалите из запроса строку

when 4 then pd.price * ###RUB###

Установить в поле название поставщика с РЦ

update product set f_401gs0okc = null;
update product set f_401gs0okc = 
  (select pr.title
from price_detail pd, price pr, price_detail_category pdc
where pd.product_id = product.id
	and pd.price_id = pr.id
	and pr.is_active = 1
	and pr.use_rc = 1
	and pd.category_id = pdc.id
	and pdc.is_active = 1
	and ((pd.is_active is null) or (pd.is_active = 0))
	and pd.fixed_price > 0 limit 1)

f_401gs0okc - код поля, в которое сохраняется информация, его нужно заменить на ваше, в двух местах.

Очистить переносы строк в поле

update product set title = replace(title, concat(chr(13), chr(10)), '') 
where title like concat('%', chr(10), '%')

title - название поля в котором нужно очистить (Название товара).

Установить в поле QID товаров привязанных поставщиков

В поле устанавливаются ИД товаров из прайсов поставщиков, через запятую

update product set f_3v8q42ftv = null;
update product set f_3v8q42ftv = 
(select string_agg(pd.id::varchar, ',') 
from price_detail pd, price pr where
pr.id = pd.price_id 
and pd.is_exists <> 2 
and pr.is_active = 1
and pr.price_type in (1, 3) 
and pd.product_id = product.id 
and pd.price_id <> product.price_id
)

f_3v8q42ftv - поле в которое устанавливается значение

pd.id - поле которое берется из прайсов, в данном случае ИД товара, но можно например объединять и другие поля, например Код, в этом случае заменить pd.id на pd.code

and pd.is_exists <> 2 - условие, что добавляется только товар который не в статусе “Нет в наличии”, если нужно все товары, то эту строку можно удалить из запроса

and pr.is_active = 1 - условие, что добавляется только товар из активных прайсов. если прайс выключен, то его товары не добавляются, даже если привязаны.

and pd.price_id <> product.price_id - условие, чтобы в поле попадали только ИД товаров из прайсов, которые не выбраны поставщиком (т.е. так выгружаются все товары, кроме выбранного в качестве поставщика). Строку можно удалить, чтобы выгружались вообще все ИД.

  • No labels