Wiki source code of Новые артикулы
Last modified by Vladislav Eleseev on 2024/04/17 09:29
Hide last authors
1.1 | 1 | [[image:https://it.carville.ru/api/files/108-3344808?sign=MTcxMzU3MTIwMDAwMHwyNi03MnwxMDgtMzM0NDgwOHxJa0ZCblV2ZEhOVjhIdGZzN0dVSllCTlZj%0D%0AT0xEX2hiaVFWdHlqUjZaODJJDQo%0D%0A&updated=1712152111580]] | |
2 | \\В НПР "старой" для отображения артикулов используется процедура get_orig с параметром @prod = код товара. (возможно передавать параметр группы @group, но это не используется на клиенте) | ||
3 | В таблице отображаются загруженные новые артикулы с названием группы, изготовителем и значком из сертификата. | ||
4 | Если сертификатов несколько на один артикул (с учетом группы), то параметры (группа, изготовитель и знак) выводятся одной строкой, через '~/~/'. | ||
5 | |||
6 | |||
7 | Первоначальная выборка данных происходит следующем образом | ||
8 | |||
9 | |||
10 | Select distinct orig,id_group,manufactEng,(Case | ||
11 | when s.IdTovSertType in (1,2,10,19) then 'EAC' | ||
12 | when s.IdTovSertType in (14,15) then 'RCT' | ||
13 | when s.IdTovSertType = 4 then 'нет' else '' end) sert | ||
14 | ,man.id_manufact,sg.name+' ('+s.Number+')' | ||
15 | From new_orig n ~-~- таблица хранящая новые артикулы | ||
16 | left join products p on p.code = n.orig ~-~- убираем уже использованные артикулы в продуктах | ||
17 | join LUZAR_PLAN.dbo.sert_art ar on ar.art_id=n.id and isnull(ar.is_product,0)=0 ~-~- таблица связи сертификата и артикула. is_product=0 указывает на то что это не действующий товар | ||
18 | join LUZAR_PLAN.dbo.SprTovSert s on s.IdTovSert = ar.sert_id and isnull(s.sertState,1) <> 0 and isnull(s.sertState,1)<>80 and Active=1 | ||
19 | ~-~- таблица списка сертификатов. Проверяем что он не архивный и рабочий(sertState не 0 и не 80). | ||
20 | join [LUZAR_PLAN].[dbo].[TovSert_Manufact] m on m.IdTovSert = s.IdTovSert ~-~- таблица связи сертификата и изготовителей | ||
21 | join manufact man on man.id_manufact = m.IdManufact ~-~- таблица справочник изготовителей | ||
22 | left join LUZAR_PLAN.dbo.sert_grp sg on sg.sert_id=s.IdTovSert and sg.id=n.id and sg.is_art=case when ar.is_product=1 then 0 else 1 end ~-~- связь артикул - сертификат - группа товара. тут группа товара именно та что в сертификате | ||
23 | where p.id is null and id_group in (@group,@parent) | ||
24 | group by orig,id_group,manufactEng,IdTovSertType,man.id_manufact,sg.name,s.Number | ||
25 | |||
26 | Где @group - id группы товара по которому подбирают артикул, @parent - id родительской группы группы | ||
27 | |||
28 | |||
29 | Далее строки складываются через '~/~/' в случае если на один артикул несколько связей | ||
30 | Select orig,id_group,(select distinct manufactEng+'~/~/' from @t where orig=t.orig for xml path(''))manufactEng, | ||
31 | (select distinct sert+'~/~/' from @t where orig=t.orig for xml path(''))sert, | ||
32 | (select distinct cast(id_manufact as varchar(100))+'~/~/' from @t where orig=t.orig for xml path('')) id_manufact, | ||
33 | (select distinct VED_name+'~/~/' from @t where orig=t.orig for xml path(''))VED_name | ||
34 | From @t t | ||
35 | group by orig,id_group | ||
36 | having(Count(orig)>1) | ||
37 | \\Далее удаляются технические последние '~/~/' | ||
38 | update @res set manufactEng=SUBSTRING(manufactEng,0,len(manufactEng)-1) where len(manufactEng)>1 | ||
39 | update @res set id_manufact=SUBSTRING(id_manufact,0,len(id_manufact)-1) where len(id_manufact)>1 | ||
40 | update @res set VED_name=SUBSTRING(VED_name,0,len(VED_name)-1) where len(VED_name)>1 | ||
41 | update @res set sert=SUBSTRING(sert,0,len(sert)-1) where len(sert)>1 | ||
42 | |||
43 | |||
44 | В итоговый набор попадают все товары имеющие связи с сертификатами и товары не имеющие связи с сертификатами, им ставится прочерк в параметрах | ||
45 | Select distinct n.orig,n.id_group,null manufactEng,'-' sert | ||
46 | ,cast(n.id_manufact as varchar(100)),null | ||
47 | From new_orig n | ||
48 | left join products p (nolock) on p.code = n.orig | ||
49 | left join @t t on t.orig=n.orig | ||
50 | where p.id is null and n.id_group in (@group,@parent) and t.orig is null | ||
51 | group by n.orig,n.id_group,n.id_manufact |