USE [XMBFIN] GO /****** Object: StoredProcedure [dbo].[RetKodDirect] Script Date: 24.11.2022 12:05:31 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <КаубракЛВ> -- Create date: <23.07.2020><11.12.2020><14.01.2021><03.06.2021><07.07.2021><10.11.2021><24.11.2021><06.07.2022> -- Description: <Для Директума Выбор согласующих для ДД> -- ============================================= CREATE PROCEDURE [dbo].[RetKodDirect] @KodDD varchar(1000), @PrizSoglDD varchar(20), @RetKod varchar(1000) OUTPUT AS BEGIN SET NOCOUNT ON; DECLARE @KodDDD varchar(1000),@KodDDK varchar(1000), @KodD varchar(10)=' Г046693', @KodZD varchar(10)=' Г048265' , @i int; DECLARE @SummaMax float, @Kol1 varchar(3), @Kol2 varchar(3), @Query nvarchar(4000), @RetK varchar(100), @Predst int; DECLARE @ExistsData float, @ParmDefinition nvarchar(4000), @KodUt varchar(10)=' Г046708' ,@KodOh varchar(10)=' Г032268',@np1 int = 0, @np2 int = 0; SET @KodDDK =char(39)+REPLACE(@KodDD, '|', ''',''')+char(39) -- Г046693 - не используется -- Г048265 --Зайнуллиин С.Б. (Исполняющий обязанности заместителя генерального директора по экономике и финансам) -- Г046708 --УТОЧКИН А.О. (253595). (ГД) -- Г032268 --ОХЛОПКОВ Д.В. Директор ДЕПАРТАМЕНТ ПРОДАЖ ДЛЯ АВИАЦИОННОГО РЫНКА (20917) if @PrizSoglDD = 'РДПО' --1. Проверяем все ДД по условиям: 1)тип договорных отношений "Контрагент ТИСА" или 2)контрагент - "ВСМПО ТИТАН Украина" -- Если макс. сумма>=1000000 выберем код Д., если >0 и <1000000 выберем код ЗД, если 0 проверяем далее... Begin Set @Query ='Select @ExistsDataOUT = max(isnull(z.ss,0)) from (Select (case when 843 in (select Vid from MBAnalit dog where ltrim(kod)= ltrim(dd.kod) and (TypeDogOtn=''I'' or HighLvl=2157128 or TypeDogOtn=''h'')) and Summa7>0 then Summa7 when 3229 in (Select Vid from MBAnalit dop where ltrim(kod) = ltrim(dd.kod) and (TypeDogOtn=''I'' or HighLvl=2157128 or TypeDogOtn=''h'' )) and Summa3>0 then Summa3 else 0 end) ss From MBAnalit dd where ltrim(dd.kod) in ('+@KodDDK+')) z' Set @ParmDefinition = '@ExistsDataOUT float OUTPUT' EXECUTE sp_executesql @Query, @ParmDefinition, @ExistsDataOUT=@SummaMax OUTPUT if @SummaMax >= 1000000 Set @RetKod = null--@KodD else Set @RetKod = null--@KodZD --2.Эту же доработку маршрута (дополнительный этап согласования) распространяем и --на согласование договорных документов КВА-ТД/ТД-КЗ: вне зависимости от суммы договора все такие договорные документы направляем --на согласование ГД (до этапа регистрации) Set @Query ='Select @ExistsDataOUT = count(*) from MBAnalit As d1 join MBAnalit As d2 On d1.Analit = d2.Dogovor3 where d1.Vid=843 and (d1.TypeDogOtn=''а'' or d2.TypeDogOtn=''Т'') and ltrim(d1.kod) in ('+@KodDDK+')'; Set @ParmDefinition = '@ExistsDataOUT int OUTPUT'; EXECUTE sp_executesql @Query, @ParmDefinition, @ExistsDataOUT=@Kol1 OUTPUT --union лучше по отдельности: если в 1 запросе > 1 или во 2-м запросе > 1 то на согласование ГД Set @Query ='Select @ExistsDataOUT = count(*) from MBAnalit As d1 join MBAnalit As d2 On d1.Dogovor3 = d2.Analit where d1.Vid=843 and (d2.TypeDogOtn=''а'' or d1.TypeDogOtn=''Т'') and ltrim(d1.kod) in ('+@KodDDK+')' Set @ParmDefinition = '@ExistsDataOUT int OUTPUT'; EXECUTE sp_executesql @Query, @ParmDefinition, @ExistsDataOUT=@Kol2 OUTPUT --select @Kol1,@Kol2 if @Kol1 > 0 or @Kol2 > 0 Set @RetKod = null--@KodD goto EndOfProcedure End DECLARE @FormStrKodR CURSOR DECLARE RetKodDD scroll cursor for SELECT r.value('.','VARCHAR(MAX)') as Item FROM ( SELECT CONVERT(XML, N'' + REPLACE(@KodDD, '|', '') + '') as valxml ) x CROSS APPLY x.valxml.nodes('//root/r') AS RECORDS(r); ----------------------------------------------------------------------------- Open RetKodDD FETCH NEXT FROM RetKodDD INTO @KodDDD Set @i=1 WHILE @@FETCH_STATUS = 0 Begin --Автоматически в маршрут согласования можно включать: --1. УЭБ (Тесля Р.П) при наличии статуса «Ликвидация», «Банкротство», «Реорганизация», «неблагонадежный контрагент», « недобросовестный контрагент» --2. Отдел 47 Прохорова Л.В. (претензионно-исковой) при наличии статуса «ПИР» ( этот статус присваивается при ПИР, в случае наличия претензий ДКРД, ФУ – статус «ограничение»?) --3. Маслов М.А – при наличии статуса «инвестиции» --4. Борисов ВН (либо сортировщик) – по всем договорным документам + новая разработка по согласованию. --5. Леонов АВ( Г048848)Условия для отправки Леонову: -- если это Договор и (сумма договора >= 1 млн. ) -- если это Допсоглашение и ( Облагаемая сумма >= 1 млн.). --Облагаемая сумма – см. ТЧ Номенклатура (! Если ДД в валюте – пересчитать в рубли.) --6. иначе(чем по 5 пункту) – Зеланд Ю.Э.( Г008711). --Выбираем viewid аналитики для договора Set @Query ='Select @ExistsDataOUT = z.viewid from (Select viewid From MBAnalit dd where ltrim(dd.kod) in ('+char(39)+@KodDDD+char(39)+')) z' Set @ParmDefinition = '@ExistsDataOUT float OUTPUT' EXECUTE sp_executesql @Query, @ParmDefinition, @ExistsDataOUT = @Predst OUTPUT if @PrizSoglDD = 'АМСДД' Begin /* if @Predst in (486,1252)--закупка (снабжение), тип договорных отношений Обычный begin Set @Query ='Select @ExistsDataOUT = z.ss from (Select (case when 843 in (select Vid from MBAnalit dog where ltrim(kod)= ltrim(dd.kod) and (dd.TypeDogOtn=''б'')) then Summa7 when 3230 in (Select Vid from MBAnalit dop where ltrim(kod) = ltrim(dd.kod) and (dd.TypeDogOtn=''б'')) then Summa11 else -100 end) ss From MBAnalit dd where ltrim(dd.kod) in ('+char(39)+@KodDDD+char(39)+')) z' Set @ParmDefinition = '@ExistsDataOUT float OUTPUT' EXECUTE sp_executesql @Query, @ParmDefinition, @ExistsDataOUT=@SummaMax OUTPUT end else */ --begin --Выбираем сумму ДД если с типом договорных отношений «контрагент Тиса» (подписываются ЭП) и при согласовании ДД с «ВСМПО Титан Украина» (2157128) Set @Query ='Select @ExistsDataOUT = z.ss from (Select (case when 843 in (select Vid from MBAnalit dog where ltrim(kod)= ltrim(dd.kod) and (TypeDogOtn=''I'' or HighLvl=2157128 or TypeDogOtn=''h'' )) and Summa7>0 then Summa7 when 3229 in (Select Vid from MBAnalit dop where ltrim(kod) = ltrim(dd.kod) and (TypeDogOtn=''I'' or HighLvl=2157128 or TypeDogOtn=''h'' )) and Summa3>0 then Summa3 else -1 end) ss From MBAnalit dd where ltrim(dd.kod) in ('+char(39)+@KodDDD+char(39)+')) z' Set @ParmDefinition = '@ExistsDataOUT float OUTPUT' EXECUTE sp_executesql @Query, @ParmDefinition, @ExistsDataOUT=@SummaMax OUTPUT --end if @SummaMax = -1 or @SummaMax is null begin Set @Query = 'Select @ExistsDataOUT = case when ISNULL(Org.Status,''~'') in (''Л'',''Б'',''Р'',''г'',''Н'',''К'') then '' Г046675'' -- УЭБ (Тесля Р.П Начальник управления безопасности ВСМПО) when Org.PIR=''Д'' and Org.PIRpr=''ПИО'' then '' Г017186'' -- (Прохорова Л.В. Начальник отдела № 47(претензионно-исковой)) when DD.YesNo11=''Д'' then '' Г046587'' -- Маслов М.А (Директор по инвестициям) else null end from MBAnalit as DD join MBAnalit as Org ON Org.Analit=DD.HighLvl where DD.Vid in (843,3229,3230) and ltrim(DD.Kod) in ('+char(39)+@KodDDD+char(39)+')' --else '' Г048265'' end --МУЗ Set @ParmDefinition = '@ExistsDataOUT nvarchar(10) OUTPUT'; EXECUTE sp_executesql @Query, @ParmDefinition, @ExistsDataOUT=@RetK OUTPUT end exec ProverDubl @RetK = @RetK, @RetKod = @RetKod, @RK = @RetKod output ----Новая разработка 10.12.2020*************************************************************************************************** SET @FormStrKodR = cursor local scroll for /*ФРОЛОВ С.Н., Сафарова РР берем ГОЗ/ГК Г015872|Г015955*/ /*16052022 Сафарову РР заменили на Бородину Г014080*/ Select z.kr from (select distinct ' Г048283| Г014080' as kr -- ДОГ ГОЗ -- ФРОЛОВ С.Н Главный бухгалтер| БОРОДИНА Д.А. Экономист первой категории from MBAnalit dd where dd.Vid = 843 and (dd.HighLvl=5162176 or dd.Org4 =5162176) and ltrim(DD.Kod) in (@KodDDD) and (EXISTS (select 1 from MBAnalit -- или сявз. дог. ГОЗ where Vid in (843) and Dogovor3=dd.Analit and dbo.ProvGOZDD(analit) = 1 ) OR (dbo.ProvGOZDD(dd.analit) = 1 ) -- или сам ГОЗ ) union all select distinct ' Г048283| Г014080' as kr -- ДОПС ГОЗ from MBAnalit dd , MBAnalit dog where dd.Vid = 3229 and dd.Dogovor =dog.Analit and (dog.HighLvl=5162176 or dog.Org4 =5162176) and ltrim(DD.Kod) in (@KodDDD) and ( (EXISTS (select 1 from MBAnalit sd --или связ. допс ГОЗ where sd.Vid in (3229) and sd.DopSoglReal3=dd.Analit and ( dbo.ProvGOZDD(sd.analit) = 1 ) ) ) OR (EXISTS (select 1 from MBAnalit --или связ. догов ГОЗ where Vid in (843) and Dogovor3=dd.Dogovor and dbo.ProvGOZDD(analit) = 1 ) ) OR (dbo.ProvGOZDD(dd.analit) = 1 -- или сам допс ГОЗ OR dbo.ProvGOZDD(dog.analit) = 1 ) -- или сам дог ГОЗ ) ) z union all ----АКИМИХИН берем ГОЗ/ГК и коммерч. не базовое условие Г009058 Select z.kr from (select distinct ' Г009058' as kr ---Договор ГОЗ --АКИМИХИН А.М.Начальник управления (ОТДЕЛ №78 УПРАВЛЕНИЕ КОРПОРАТИВНЫМИ ФИНАНСАМИ И ЛИКВИДНОСТЬЮ) from MBAnalit dd where dd.Vid = 843 and (dd.HighLvl=5162176 or dd.Org4 =5162176) and ltrim(DD.Kod) in (@KodDDD) and (EXISTS (select 1 from MBAnalit -- или сявз. дог. ГОЗ where Vid in (843) and dbo.ProvGOZDD(analit) = 1 and Dogovor3=dd.Analit ) OR dbo.ProvGOZDD(dd.analit) = 1 ) union all select distinct ' Г009058' as kr ---Допсоглашение ГОЗ from MBAnalit dd, MBAnalit dog where dd.Vid in (3229) and dd.Dogovor =dog.Analit and (dog.HighLvl=5162176 or dog.Org4 =5162176) and ltrim(DD.Kod) in (@KodDDD) and ( (EXISTS (select 1 from MBAnalit sd --или связ. допс ГОЗ where sd.Vid in (3229) and sd.DopSoglReal3=dd.Analit and ( dbo.ProvGOZDD(sd.analit) = 1 ) ) ) or (EXISTS (select 1 from MBAnalit --или связ. догов ГОЗ where Vid in (843) and Dogovor3=dd.Dogovor and dbo.ProvGOZDD(analit) = 1 ) ) OR dbo.ProvGOZDD(dd.analit) = 1 or dbo.ProvGOZDD(dog.analit) = 1 ) union all --коммерческий не базовый ДОГ select distinct ' Г009058' as kr from MBAnalit dd where dd.Vid in (843) and (dd.HighLvl=5162176 or dd.Org4 =5162176) and dd.PriznakKU = 'Н' and ltrim(DD.Kod) in (@KodDDD) and (NOT EXISTS (select 1 from MBAnalit -- или сявз. дог. НЕ ГОЗ where Vid in (843) and dbo.ProvGOZDD(analit) = 1 and Dogovor3=dd.Analit ) OR (dbo.ProvGOZDD(dd.analit) = 0 ) -- или сам НЕ ГОЗ ) union all ----коммерческий не базовый ДОПС select distinct ' Г009058' as kr from MBAnalit dd, MBAnalit dog where dd.Vid in (3229) and dd.Dogovor =dog.Analit and dd.PriznakKU = 'Н' and (dog.HighLvl=5162176 or dog.Org4 =5162176) and ltrim(DD.Kod) in (@KodDDD) and ( (NOT EXISTS (select 1 from MBAnalit sd -- или связ. Договор и Допсогл НЕ ГОЗ where sd.Vid in (3229) and sd.DopSoglReal3=dd.Analit and ( dbo.ProvGOZDD(sd.analit) = 1 ) ) ) and (NOT EXISTS (select 1 from MBAnalit where Vid in (843) and Dogovor3=dd.Dogovor and ( dbo.ProvGOZDD(analit) = 1) ) ) OR (dbo.ProvGOZDD(dd.analit) = 0 -- или сам допс ГОЗ and dbo.ProvGOZDD(dog.analit) = 0 ) -- или сам дог ГОЗ ) ) z union all --закупка(только !!СНАБЖЕНИЕ!!) Леонов дог**** --08.12.2021 КАП. Изменения. Ограничила договора снабжением (через пфм исполн), иначе Леонов и Зеланд были для всех подразделений!! select distinct ' Г048848' as kr from MBAnalit dd , MBAnalit pfm --ЛЕОНОВ А.В. Директор по снабжению where dd.Vid in (843) and ltrim(DD.Kod) in (@KodDDD) and dd.viewid in (@Predst) and dd.CFU = pfm.Analit and pfm.FIO3 = 8776675 --ИД работника Директор по снабжению ЛЕОНОВ А.В. and dd.TypeDogOtn='б' /*берется сумма без НДС и суммируется по допс.*/ and ( (case when dd.Summa3 < (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) then (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) else dd.Summa3 end) >= 1000000 or (case when dd.Summa3 < (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) then (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) else dd.Summa3 end) = 0 ) union all --закупка(СНАБЖЕНИЕ) Леонов допс select distinct ' Г048848' as kr from MBAnalit dd , MBAnalit pfm where dd.Vid in (3230) and ltrim(DD.Kod) in (@KodDDD) and dd.viewid in (@Predst) and dd.CFU = pfm.Analit and pfm.FIO3 = 8776675 --ИД работника Директор по снабжению ЛЕОНОВ А.В. and (Round(Abs(isnull(dd.Summa11,0))*dd.Kurs,2) >= 1000000 or ISNULL(dd.Summa11,0) = 0) and dd.TypeDogOtn='б' and dd.PriznIzm <> 'Н' and dd.Dop not like 'пролонгация%договора%' union all --закупка(СНАБЖЕНИЕ) дог Зеланд Ю.Э. Заместитель директора по снабжению-начальник управления по планированию, обеспечен сырьев материалами и металлами select distinct ' Г008711' as kr from MBAnalit dd , MBAnalit pfm where dd.Vid in (843) and ltrim(DD.Kod) in (@KodDDD) and dd.viewid in (@Predst) and dd.CFU = pfm.Analit and pfm.FIO3 = 8776675 --ИД работника Директор по снабжению ЛЕОНОВ А.В. and dd.TypeDogOtn='б' and dd.TypeDogOtn in ('К','Э','П')/*берется сумма без НДС и суммируется по допс.*/ and ( (case when dd.Summa3 < (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) then (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) else dd.Summa3 end) > 0 or (case when dd.Summa3 < (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) then (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) else dd.Summa3 end) < 1000000 ) union all --закупка(СНАБЖЕНИЕ) доп. Зеланд Ю.Э. select distinct ' Г008711' as kr from MBAnalit dd , MBAnalit pfm where dd.Vid in (3230) and ltrim(DD.Kod) in (@KodDDD) and dd.viewid in (@Predst) and dd.CFU = pfm.Analit and pfm.FIO3 = 8776675 --ИД работника Директор по снабжению ЛЕОНОВ А.В. and ( (Abs(isnull(dd.Summa11,0)) > 0 and Round(Abs(isnull(dd.Summa11,0))*dd.Kurs,2) < 1000000) or dd.Dop like 'пролонгация%договора%') and dd.TypeDogOtn='б' /* ----===========Зайнулин С.Б. убран согласно приказа по временному порядку согласования (КАП) union all ----Масоди ДА ГОЗ/ГК не базовый, коммерческий не базовый Г047402 --Г048265 Зайнулин С.Б. 02.06.2021 Select z.kr from (select distinct ' Г048265' as kr ---Договор ГОЗ НЕБАЗОВЫЕ from MBAnalit dd where dd.Vid = 843 and (dd.HighLvl=5162176 or dd.Org4 =5162176) and dd.PriznakKU = 'Н' and ltrim(DD.Kod) in (@KodDDD) and (EXISTS (select 1 from MBAnalit -- или сявз. дог. ГОЗ where Vid in (843) and Dogovor3=dd.Analit and ( dbo.ProvGOZDD(analit) = 1) ) OR ( dbo.ProvGOZDD(dd.analit) = 1) ) -- или сам ГОЗ union all select distinct ' Г048265' as kr --Допсоглашения ГОЗ НЕБАЗОВЫЕ from MBAnalit dd , MBAnalit dog where dd.Vid in (3229) and dd.Dogovor =dog.Analit and (dog.HighLvl=5162176 or dog.Org4 =5162176) and dd.PriznakKU = 'Н' and ltrim(DD.Kod) in (@KodDDD) and ( (EXISTS (select 1 from MBAnalit sd --или связ. допс ГОЗ where sd.Vid in (3229) and sd.DopSoglReal3=dd.Analit and ( dbo.ProvGOZDD(sd.analit) = 1) ) ) OR (EXISTS (select 1 from MBAnalit --или связ. догов ГОЗ where Vid in (843) and Dogovor3=dd.Dogovor and dbo.ProvGOZDD(analit) = 1 ) ) OR ( dbo.ProvGOZDD(dd.analit) = 1) OR ( dbo.ProvGOZDD(dog.analit) = 1) ) --или сам дог.ГОЗ union all --коммерческий не базовый ДОГ select distinct ' Г048265' as kr from MBAnalit dd where dd.Vid in (843) and (dd.HighLvl=5162176 or dd.Org4 =5162176) and dd.PriznakKU = 'Н' and ltrim(DD.Kod) in (@KodDDD) and (NOT EXISTS (select 1 from MBAnalit -- или сявз. дог. НЕ ГОЗ where Vid in (843) and Dogovor3=dd.Analit and dbo.ProvGOZDD(analit) = 1 ) OR ( dbo.ProvGOZDD(dd.analit) = 0 ) ) --или сам не ГОЗ union --коммерческий не базовый ДОПСОГЛ select distinct ' Г048265' as kr from MBAnalit dd , MBAnalit dog where dd.Vid in (3229) and dd.Dogovor =dog.Analit and (dog.HighLvl=5162176 or dog.Org4 =5162176) and dd.PriznakKU = 'Н' and ltrim(DD.Kod) in (@KodDDD) and ( ( (NOT EXISTS (select 1 from MBAnalit sd -- или связ. Договор и Допсогл НЕ ГОЗ where sd.Vid in (3229) and sd.DopSoglReal3=dd.Analit and ( dbo.ProvGOZDD(sd.analit) = 1 ) ) ) and (NOT EXISTS (select 1 from MBAnalit where Vid in (843) and Dogovor3=dd.Dogovor and dbo.ProvGOZDD(analit) = 1 ) ) ) OR (dbo.ProvGOZDD(dd.analit) = 0 -- или сам допс ГОЗ and dbo.ProvGOZDD(dog.analit) = 0 ) -- или сам дог ГОЗ ) ) z */ ----===========Зайнулин С.Б. убран согласно приказа по временному порядку согласования (КАП) --RAISERROR(@FormStrKodR,10,1,'all' ) WITH NOWAIT Open @FormStrKodR; FETCH NEXT FROM @FormStrKodR INTO @RetK; WHILE @@FETCH_STATUS = 0 Begin exec ProverDubl @RetK = @RetK, @RetKod = @RetKod, @RK = @RetKod output FETCH NEXT FROM @FormStrKodR INTO @RetK; End --WHILE @@FETCH_STATUS = 0 для курсора FormStrKodR -- RAISERROR(@Query,10,1,'all' ) WITH NOWAIT End --if @PrizSoglDD = 'АМСДД' --************************** --Утверждение и согласование АМСДДУП - ВСМПО, АМСДДУПТД - ТД --************************** if @PrizSoglDD = 'АМСДДУП' Begin SET @FormStrKodR = cursor local scroll for Select ' Г049864' from MBAnalit dd /*19.01.2022 вместо Ледер ОО Г002961 берем Медведев В.Ю. Г009048 / 26.05.22 ----- СМИРНОВ И.Н Г049864 Заместитель генерального директора по маркетингу и сбыту*/ where DD.Vid in (843,3229) and HighLvl=5162176 and ltrim(DD.Kod) in (@KodDDD) Open @FormStrKodR; FETCH NEXT FROM @FormStrKodR INTO @RetK; WHILE @@FETCH_STATUS = 0 Begin exec ProverDubl @RetK = @RetK, @RetKod = @RetKod, @RK = @RetKod output FETCH NEXT FROM @FormStrKodR INTO @RetK; End --WHILE @@FETCH_STATUS = 0 для курсора FormStrKodR End --if @PrizSoglDD = 'АМСДДУП' if @PrizSoglDD = 'АМСДДУПТД' Begin SET @FormStrKodR = cursor local scroll for /* Леонид, в процедуре [RetKodDirect] на этапе АМСДДУПТД нужно добавить Чуланова Н.Л. для условий «не содержит комм. условий» Убрать Уточкина А.О. из условий «не содержит комм. условий» - письмо от 10.03.21 Уточкин (ГД ТД) * Не базовые усл. - Г046708 10.11.2021 Уточкина заменил на Чуланова по письму от Колпаковой А. и Малютиной Ирины Сергеевны 30.03.2022 Чуланова заменили на Охлопкова --Г032268 14.04.2022 Для ДД КВА-ТД убрала все условия на ГОЗ и на признак условий (базовые / не базовые) , т.к. по письму Малютиной, от 10.11.2021 !!! сказано: Согласно последним изменениям в ВП, все ДД между КВА и ТД подписывает ЭП Чуланов Н.Л. Т.е. вне зависимости от условий в утверждающих всегда д.б. Чуланов Н.Л.(ТД) и Ледер О.О (ЭП)*/ Select z.kr from (select distinct ' Г032268' as kr from MBAnalit dd where dd.Vid in (843) and dd.HighLvl=5162176 --and isnull(dd.PriznakKU,'~') in ('Н','~') --14.04.2022 and ltrim(DD.Kod) in (@KodDDD) /*and EXISTS (select 1 from MBAnalit --14.04.2022 where Vid in (843) and dbo.ProvGOZDD(analit) = 1 and Dogovor3=dd.Analit )*/ union select distinct ' Г032268' as kr from MBAnalit dd where dd.Vid in (3229) and dd.HighLvl=5162176 --and isnull(dd.PriznakKU,'~') in ('Н','~') and ltrim(DD.Kod) in (@KodDDD) /* and ( (EXISTS (select 1 from MBAnalit sd -- 14.04.2022 where sd.Vid in (3229) and sd.DopSoglReal3=dd.Analit and ( dbo.ProvGOZDD(sd.analit) = 1 ) ) ) or ( EXISTS (select 1 from MBAnalit where Vid in (843) and Dogovor3=dd.Dogovor and dbo.ProvGOZDD(analit) = 1 ) ) ) */ /* union --зак. 14.04.2022 КАП select distinct ' Г032268' as kr from MBAnalit dd where dd.Vid in (843) and dd.HighLvl=5162176 and isnull(dd.PriznakKU,'~') in ('Н','~') and ltrim(DD.Kod) in (@KodDDD) and NOT EXISTS (select 1 from MBAnalit where Vid in (843) and dbo.ProvGOZDD(analit) = 1 and Dogovor3=dd.Analit ) union select distinct ' Г032268' as kr from MBAnalit dd where dd.Vid in (3229) and dd.HighLvl=5162176 and isnull(dd.PriznakKU,'~') in ('Н','~') and ltrim(DD.Kod) in (@KodDDD) and ( (NOT EXISTS (select 1 from MBAnalit sd where sd.Vid in (3229) and sd.DopSoglReal3=dd.Analit and ( dbo.ProvGOZDD(sd.analit) = 1 ) ) ) and (NOT EXISTS (select 1 from MBAnalit where Vid in (843) and Dogovor3=dd.Dogovor and dbo.ProvGOZDD(analit) = 1 ) ) ) */ ) z union all Select z1.kr from (select distinct ' Г032268' as kr --Охлопков ДОГОВОР ГОЗ БАЗОВЫЕ и комм. условия from MBAnalit dd where dd.Vid = 843 and dd.Org4 =5162176 -- исполн. ТД ----dd.HighLvl=5162176 and isnull(dd.PriznakKU,'~') in ('Б','с','~') and ltrim(DD.Kod) in (@KodDDD) and dbo.ProvGOZDD(dd.analit) = 1 -- или сам дог ГОЗ union select distinct ' Г032268' as kr --Охлопков Допсоглашения ГОЗ БАЗОВЫЕ from MBAnalit dd , MBAnalit dog where dd.Vid in (3229) and dd.Dogovor =dog.Analit and dog.Org4 =5162176 -- исполн. ТД ----dd.HighLvl=5162176 and isnull(dd.PriznakKU,'~') in ('Б','с','~') and ltrim(DD.Kod) in (@KodDDD) and ( dbo.ProvGOZDD(dd.analit) = 1 -- или сам допс ГОЗ or dbo.ProvGOZDD(dog.analit) = 1 ) -- или сам дог ГОЗ union --коммерческий базовый select distinct ' Г032268' as kr -- Договор КОММ. БАЗОВЫЕ from MBAnalit dd where dd.Vid = 843 and dd.Org4 = 5162176 -- исполн. ТД ----dd.HighLvl=5162176 and isnull(dd.PriznakKU,'~') in ('Б','с','~') and ltrim(DD.Kod) in (@KodDDD) and dbo.ProvGOZDD(dd.analit) = 0 --НЕ ГОЗ union select distinct ' Г032268' as kr --Охлопков from MBAnalit dd, MBAnalit dog where dd.Vid in (3229) and dd.Dogovor =dog.Analit and dog.Org4 =5162176 --dd.HighLvl = 5162176 and isnull(dd.PriznakKU,'~') in ('Б','с','~') and ltrim(DD.Kod) in (@KodDDD) and ( dbo.ProvGOZDD(dd.analit) = 0 --или сам допс НЕ ГОЗ and dbo.ProvGOZDD(dog.analit) = 0 ) --или сам дог НЕ ГОЗ ) z1 Open @FormStrKodR; FETCH NEXT FROM @FormStrKodR INTO @RetK; WHILE @@FETCH_STATUS = 0 Begin exec ProverDubl @RetK = @RetK, @RetKod = @RetKod, @RK = @RetKod output FETCH NEXT FROM @FormStrKodR INTO @RetK; End --WHILE @@FETCH_STATUS = 0 для курсора FormStrKodR --Если возвращается коды Чуланова и Уточкина (на втором месте), то надо возвращать обязательно на первом месте ГДТД Уточкина 26.02.2021 if CharIndex(@KodOh, @RetKod)=1 and CharIndex(@KodUt, @RetKod)>0 SET @RetKod = @KodUt --+'|'+@KodOh End --if @PrizSoglDD = 'АМСДДУПТД' --новый этап 14.01.2021 --Уведомление о согласовании ГДТД Уточкин:если коммерческий не базовое или ГОЗ не базовое АМСДДУСТД if @PrizSoglDD = 'АМСДДУСТД' Begin /* SET @FormStrKodR = cursor scroll for Select z.kr from (select distinct ' Г046708' as kr --ГДТД Уточкин ДОГОВОР ГОЗ БАЗОВЫЕ from MBAnalit dd where dd.Vid = 843 and dd.Org4 =5162176 -- исполн. ТД ----dd.HighLvl=5162176 and dd.PriznakKU = 'Б' and ltrim(DD.Kod) in (@KodDDD) and dbo.ProvGOZDD(dd.analit) = 1 -- или сам дог ГОЗ union all select distinct ' Г046708' as kr --ГДТД Уточкин Допсоглашения ГОЗ БАЗОВЫЕ from MBAnalit dd , MBAnalit dog where dd.Vid in (3229) and dd.Dogovor =dog.Analit and dog.Org4 =5162176 -- исполн. ТД ----dd.HighLvl=5162176 and dd.PriznakKU = 'Б' and ltrim(DD.Kod) in (@KodDDD) and ( dbo.ProvGOZDD(dd.analit) = 1 -- или сам допс ГОЗ or dbo.ProvGOZDD(dog.analit) = 1 ) -- или сам дог ГОЗ union all --коммерческий базовый select distinct ' Г046708' as kr -- Договор КОММ. БАЗОВЫЕ from MBAnalit dd where dd.Vid = 843 and dd.Org4 = 5162176 -- исполн. ТД ----dd.HighLvl=5162176 and dd.PriznakKU = 'Б' and ltrim(DD.Kod) in (@KodDDD) and dbo.ProvGOZDD(dd.analit) = 0 --НЕ ГОЗ union all select distinct ' Г046708' as kr --ГДТД Уточкин from MBAnalit dd, MBAnalit dog where dd.Vid in (3229) and dd.Dogovor =dog.Analit and dog.Org4 =5162176 --dd.HighLvl = 5162176 and dd.PriznakKU = 'Б' and ltrim(DD.Kod) in (@KodDDD) and ( dbo.ProvGOZDD(dd.analit) = 0 -- или сам допс НЕ ГОЗ and dbo.ProvGOZDD(dog.analit) = 0 ) -- или сам дог НЕ ГОЗ ) z Open @FormStrKodR; FETCH NEXT FROM @FormStrKodR INTO @RetK; WHILE @@FETCH_STATUS = 0 Begin exec ProverDubl @RetK = @RetK, @RetKod = @RetKod, @RK = @RetKod output FETCH NEXT FROM @FormStrKodR INTO @RetK; End --WHILE @@FETCH_STATUS = 0 для курсора FormStrKodR */ Set @RetKod = null End --if @PrizSoglDD = 'АМСДДУСТД' if @PrizSoglDD = 'АМСДДПФМ' Begin --Письмо от Сыркиной 12.08.2020: (Если дир.по снабж.Пологов то убирать) --Письмо от Колесова (то же) 12.08.2020: если для документа определен тип договорных отношений «ДЗО с третьими лицами», то процедура с признаком «Директор по направлению» должна возвращать пустую строку. --Письмо от Колесова 24.11.2021 Для документов с типом договорных отношений Контрагент ДЗО, Контрагент ВЭД, Контрагент ДЗО (без ЭП) в справочнике «Варианты договоров» Леонов А.В. указан в параметре Директор по направлению (отдельный этап согласования). --Если для договорных документов с перечисленными видами договорных отношений также потребуется определение согласующего --в зависимости от суммы, то в процедуре КАС RetKodDirect для перечисленных видов отношений при вызове процедуры с кодом --«АМСДДПФМ» возвращать согласующего. --08.12.2021 КАП. Изменения. Ограничила договора снабжением, иначе Леонов и Зеланд были для всех подразделений!! SET @FormStrKodR = cursor local scroll for select distinct ' Г048848' as kr --закупка(СНАБЖЕНИЕ) Леонов дог. from MBAnalit dd , MBAnalit pfm where dd.Vid in (843) and ltrim(DD.Kod) in (@KodDDD) and dd.viewid in (@Predst) and dd.CFU = pfm.Analit and pfm.FIO3 = 8776675 --Директор по снабжению ЛЕОНОВ А.В. --and (Abs(isnull(dd.Summa7,0)) >= 1000000 or isnull(dd.Summa7,0) = 0) and dd.TypeDogOtn in ('К','Э','П') /*берется сумма без НДС и суммируется по допс.*/ and ( (case when dd.Summa3 < (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) then (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) else dd.Summa3 end) >= 1000000 or (case when dd.Summa3 < (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) then (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) else dd.Summa3 end) = 0 ) union all --закупка(СНАБЖЕНИЕ) Леонов допс select distinct ' Г048848' as kr from MBAnalit dd , MBAnalit pfm where dd.Vid in (3230) and ltrim(DD.Kod) in (@KodDDD) and dd.viewid in (@Predst) and dd.CFU = pfm.Analit and pfm.FIO3 = 8776675 --Директор по снабжению ЛЕОНОВ А.В. and (Round(Abs(isnull(dd.Summa11,0))*dd.Kurs,2) >= 1000000 or isnull(dd.Summa11,0) = 0) and dd.Dop not like 'пролонгация%договора%' and dd.TypeDogOtn in ('К','Э','П') union all --закупка(СНАБЖЕНИЕ) дог Зеланд Ю.Э. select distinct ' Г008711' as kr from MBAnalit dd , MBAnalit pfm where dd.Vid in (843) and ltrim(DD.Kod) in (@KodDDD) and dd.viewid in (@Predst) and dd.CFU = pfm.Analit and pfm.FIO3 = 8776675 --Директор по снабжению ЛЕОНОВ А.В. and dd.TypeDogOtn in ('К','Э','П')/*берется сумма без НДС и суммируется по допс.*/ and ( (case when dd.Summa3 < (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) then (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) else dd.Summa3 end) > 0 or (case when dd.Summa3 < (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) then (select sum(isnull(Summa11,0)) from MBAnalit where vid=3230 and dogovor=dd.Analit) else dd.Summa3 end) < 1000000 ) union all --закупка(СНАБЖЕНИЕ) доп. Зеланд Ю.Э. select distinct ' Г008711' as kr from MBAnalit dd , MBAnalit pfm where dd.Vid in (3230) and ltrim(DD.Kod) in (@KodDDD) and dd.viewid in (@Predst) and dd.CFU = pfm.Analit and pfm.FIO3 = 8776675 --Директор по снабжению ЛЕОНОВ А.В. and ( (Abs(isnull(dd.Summa11,0)) > 0) and Round(Abs(isnull(dd.Summa11,0))*dd.Kurs,2) < 1000000 or dd.Dop like 'пролонгация%договора%') and dd.TypeDogOtn in ('К','Э','П') ------------------------------------------------------------------------------------ union all select distinct ' Г008335' as kr --реализация (ЧЕРКАСОВА Н.А.) from MBAnalit AS dd Join MBAnalit AS pfm ON pfm.Analit = dd.CFU where dd.Vid in (843,3229) and ltrim(DD.Kod) in (@KodDDD) and ltrim(pfm.kod) = '12/49' --12/49 Управление маркетинга и продаж для индустриального применения and dd.TypeDogOtn in ('I','h') union all select distinct ' Г008339' as kr --реализация (УРСАЕВ К.А.) from MBAnalit AS dd Join MBAnalit AS pfm ON pfm.Analit = dd.CFU where dd.Vid in (843,3229) and ltrim(DD.Kod) in (@KodDDD) and ltrim(pfm.kod) = '12/51' --12/51 Управление маркетинга и продаж для (ВСМПО) and dd.TypeDogOtn in ('I','h') union all select distinct ' Г023863' as kr --реализация Климов АА (ЕФИМОВА Н.П. Г008240 до 18.05) from MBAnalit AS dd Join MBAnalit AS pfm ON pfm.Analit = dd.CFU where dd.Vid in (843,3229) and ltrim(DD.Kod) in (@KodDDD) and ltrim(pfm.kod) = '52' --12/52 Управление маркетинга и продаж для (ВСМПО) and dd.TypeDogOtn in ('I','h') ---------------------------------------------------------------------------------------------- Open @FormStrKodR; FETCH NEXT FROM @FormStrKodR INTO @RetK; WHILE @@FETCH_STATUS = 0 Begin exec ProverDubl @RetK = @RetK, @RetKod = @RetKod, @RK = @RetKod output FETCH NEXT FROM @FormStrKodR INTO @RetK; End --WHILE @@FETCH_STATUS = 0 для курсора FormStrKodR /* Set @Query ='Select @ExistsDataOUT = ltrim(rab.Kod) from MBAnalit AS dd Join MBAnalit AS pfm ON pfm.Analit = dd.CFU Left Join MBAnalit AS rab ON rab.Analit = pfm.FIO3 where DD.Vid in (843,3229,3230) and ltrim(rab.Kod) <> ''Г025176'' --Пологов and dd.TypeDogOtn <> ''Д''--тип договорных отношений «ДЗО с третьими лицами» and ltrim(dd.kod) = '+char(39)+@KodDDD+char(39) Set @ParmDefinition = '@ExistsDataOUT nvarchar(10) OUTPUT'; EXECUTE sp_executesql @Query, @ParmDefinition, @ExistsDataOUT=@RetK OUTPUT if @RetK is not null if @RetKod is null Set @RetKod = @RetK else if CharIndex(@RetK, @RetKod) = 0 Set @RetKod = @RetKod +'|'+ @RetK */ End --if @PrizSoglDD = 'АМСДДПФМ' if @PrizSoglDD = 'АМСДДПФМ2' begin SET @FormStrKodR = cursor local scroll for /* --Запрос перенесен на этап АМСДДПФМ 19.04.2022 КАП select distinct ' Г008335' as kr --реализация (ЧЕРКАСОВА Н.А.) from MBAnalit AS dd Join MBAnalit AS pfm ON pfm.Analit = dd.CFU where dd.Vid in (843,3229) and ltrim(DD.Kod) in (@KodDDD) and ltrim(pfm.kod) = '12/49' --12/49 Управление маркетинга и продаж для индустриального применения and dd.TypeDogOtn in ('I') union all select distinct ' Г008339' as kr --реализация (УРСАЕВ К.А.) from MBAnalit AS dd Join MBAnalit AS pfm ON pfm.Analit = dd.CFU where dd.Vid in (843,3229) and ltrim(DD.Kod) in (@KodDDD) and ltrim(pfm.kod) = '12/51' --12/51 Управление маркетинга и продаж для (ВСМПО) and dd.TypeDogOtn in ('I') union all select distinct ' Г008240' as kr --реализация (ЕФИМОВА Н.П.) from MBAnalit AS dd Join MBAnalit AS pfm ON pfm.Analit = dd.CFU where dd.Vid in (843,3229) and ltrim(DD.Kod) in (@KodDDD) and ltrim(pfm.kod) = '52' --12/52 Управление маркетинга и продаж для (ВСМПО) and dd.TypeDogOtn in ('I') */ select top 1 null as kr from MBAnalit --КАП: сделала так, потому что иначе запрос к функции умирает. Не смогла разобраться. Open @FormStrKodR; FETCH NEXT FROM @FormStrKodR INTO @RetK; WHILE @@FETCH_STATUS = 0 Begin exec ProverDubl @RetK = @RetK, @RetKod = @RetKod, @RK = @RetKod output FETCH NEXT FROM @FormStrKodR INTO @RetK; End --WHILE @@FETCH_STATUS = 0 для курсора FormStrKodR end --if @PrizSoglDD = 'АМСДДПФМ2' FETCH NEXT FROM RetKodDD INTO @KodDDD End --Для снабжения: если есть Леонов и Зеланд, то приоритет Леонову SET @np1 = CHARINDEX(' Г008711',@RetKod) --Зеланд SET @np2 = CHARINDEX(' Г048848',@RetKod) --Леонов if @np1 > 0 and @np2 > 0 begin if LEN(@RetKod) - @np1 <= 10 --для удаления верт.черты перед кодом + код Зеланда, если код последний SET @RetKod = STUFF(@RetKod, @np1-1, 11, '') else SET @RetKod = STUFF(@RetKod, @np1, 11, '') end if @PrizSoglDD in ('АМСДД','АМСДДУП','АМСДДУПТД','АМСДДПФМ','АМСДДПФМ2') begin close RetKodDD deallocate RetKodDD close @FormStrKodR deallocate @FormStrKodR end EndOfProcedure: set nocount off -- select @RetKod END GO