1. Удалить историю цен, начиная с какой-то даты
delete from price_history where upd_date > '2021-03-19'
где 2021-03-19
- дата в формате год-месяц-число
2. Очистить положение окон
если вдруг вы использовали какой-то большой монитор и на другом компьютере окна перестали быть видны (сохранились за пределами экрана)
update users set user_options = null, all_cnct_qnet = null, all_cnct_prod = null, all_cnct_price = null, wwp_quad_connect = null, post_konk_view = null, suppl_view = null
3. Установить код товара запросом
update product set code = concat('ml', LPAD(id::text, 6, '0')) where code is null; update product set extsrch = left(concat(upper(code), extsrch), 255) where extsrch not like(concat('%', upper(code), '%'))
где 'ml'
- префикс кода, тексту внутри ''
вы можете поменять на свой. Код формируется из префикса + QID товара, например ml000012
4. Коды полей в таблицах Продукция и Прайсы
5. Добавить товар в дополнительные группы из текстового поля
insert into product_category_connect(prod_id, cat_id, is_main) SELECT p.id, c.id, 0 FROM product p, unnest(string_to_array(p.f_43df536rp, ',')) cat_id_one, product_category c WHERE c.code = cat_id_one on conflict do nothing;
6. Убрать из названий фото папки
for i = 2 to sheets(1).usedrange.rows.count new_img = "" s_img = Trim(sheets(1).cells(i, 4).value) if s_img <> "" then arr_img = Split(s_img, "|") for j = lbound(arr_img) to ubound(arr_img) one_img = Split(arr_img(j), "\") if new_img = "" then new_img = one_img(1) else new_img = new_img & ", " & one_img(1) end if next j sheets(1).cells(i, 4).value = new_img end if next i
7. Создать аналоги товаров из поля
В поле с кодом f_43nssf1rp
должны быть указаны Коды товаров аналогов, через запятую, код товара аналог должен совпадать с Кодом товара из вкладки Продукция
insert into product_analog(first_id, second_id) select p.id, p2.id from product p, unnest(string_to_array(p.f_43nssf1rp, ',')) as an(code), product p2 where p.f_43nssf1rp <> '' and p2.code = an.code and not exists (select 1 from product_analog pa2 where (pa2.first_id = p.id and pa2.second_id = p2.id) or (pa2.first_id = p2.id and pa2.second_id = p.id))
8. Создать сопутствующие товары из поля
В поле с кодом f_43nssebq9
должны быть указаны Коды сопутствующих товаров, через запятую, код сопутствующего товара должен совпадать с Кодом товара из вкладки Продукция
insert into product_connect(prod_id, conn_prod_id) select p.id, p2.id from product p, unnest(string_to_array(p.f_43nssebq9, ',')) as an(code), product p2 where p.f_43nssebq9 <> '' and p2.code = an.code and not exists (select 1 from product_connect pa2 where (pa2.prod_id = p.id and pa2.conn_prod_id = p2.id))
9. Указать в поле товара правило наценки
Если вы хотите видеть во вкладке Продукция у каждого товара правило наценки, по которому он расценен, создайте пользовательское поле с типом Число, если нужно видеть ИД правила, или Строка, если нужно видеть название правила. Код поля подставьте в запросы ниже (в 2х местах в запросе):
Установить ИД правила:
update product set КодПоля = null; update product set КодПоля = (select case ph.rule_id when -1 then 0 else ph.rule_id end from price_history ph where ph.prod_id = product.id and product.is_exists <> 2 and ph.field_id = 0 order by ph.id desc limit 1)
ИД правила может установиться 0 в случае, когда товар не в статусе "Нет в наличии" и при этом на него нет правила наценки, т.е. например наличие установлено вручную и зафиксировано
Установить Название правила:
update product set КодПоля = null; update product set КодПоля = (select spt.title from price_history ph, set_price_type spt where ph.prod_id = product.id and ph.rule_id = spt.id and product.is_exists <> 2 and ph.field_id = 0 order by ph.id desc limit 1)
10. Удалить у товаров все характеристики, которые не соответствуют типу товара
Данный запрос может понадобится когда вы часто переносите товары из одной группы в другую, при этом Тип товара у групп указан разный.
delete from product_values where id in ( select pv2.id from product_values pv2, param_items pi, param_item_values piv, product_category_connect pcc, product_category pg where pv2.val_id = piv.id and piv.item_id = pi.id and pcc.prod_id = pv2.quad_product_id and pcc.cat_id = pg.id and pcc.is_main = 1 and (pg.product_type_id <> pi.pi_product_type and pi.pi_product_type <> 1) and pi.param_id = 777)
вместо 777
указать ID набора характеристик, которые нужно удалить
11. Заполнить пользовательское поле минимальной РРЦ из прайсов поставщиков
update product set f_41d1umnts = 0; update product set f_41d1umnts = (select min(round(price_to_base(pd.fixed_price, pd.fix_price_curr_id), 2)) 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 and pd.is_exists <> 2)
вместо f_41d1umnts
указать код вашего числового пользовательского поля, в который запишется минимальная РРЦ
12. Проверить, что в текстовом поле число, и округлить в большую сторону
(case when p.garanty ~ '^\-?\d+(\.\d+)?$' then ceil(p.garanty::numeric) else 0 end)