edit
This commit is contained in:
246
up_EkzmkEdit_ta_full.sql
Normal file
246
up_EkzmkEdit_ta_full.sql
Normal file
@@ -0,0 +1,246 @@
|
||||
-- =============================================
|
||||
-- Author: ta
|
||||
-- Create date:
|
||||
-- DatabaseModel: Metr7
|
||||
-- Description: Изменение события МК
|
||||
-- Use:
|
||||
--
|
||||
-- Changes:
|
||||
-- 18.05.2021 Сафонов А.Е. DATAMODEL70-93 Ссылка на эталон перенесена из EKZMKDH в EKZMK. Отформатирован код.
|
||||
-- 12.05.2021 Сафонов А.Е. DATAMODEL70-165 Исправления для ролей
|
||||
-- 27.04.2021 Сафонов А.Е. DATAMODEL70-93 Добавляется ссылка на эталон в доп.сведения события МК, отформатирован код
|
||||
-- 16.04.2021 Седаков А.В. DATAMODEL70-145 Если для редактируемого события МК нет записи о дополнительных сведениях, добавить её, используя вызов процедуры на добавление записи дополнительных сведений для @IDEKZMK.
|
||||
-- 29.12.2020 Сафонов А.Е. Процедура обернута в транзакцию
|
||||
-- 23.12.2020 Седаков А.В. ASUMS70-376. После изменения события МК выполняется добавление Методик МК по изменяемому событию МК.
|
||||
-- Перед изменением события МК удаляются записи из таблицы EKZMKND по изменяемому событию МК.
|
||||
-- 07.12.2020 Сафонов А.Е. Добавлена проверка прав доступа
|
||||
-- 13.10.2020 Седаков А.В. ASUMS70-209. Из таблицы EKZMK удалено поле MKPRV и добавлены поля IDSPVDSBMK, PRCHNPGDN.
|
||||
-- 04.09.2020 Седаков А.В. ASUMS70-209. Добавлено новое поле MKPRV из таблицы EKZMK.
|
||||
-- 18.03.2020 Седаков А.В. DATAMODEL70-28. Добавлены 2 новых поля из таблицы EKZMK: DPZNmp, HRTCmp.
|
||||
-- 13.03.2020 Седаков А.В. Изменение типа данных для полей NNZVPV, NNNKL и соответствующих входных параметров с INT на NVARCHAR(30).
|
||||
-- 05.02.2020 Сафонов А.Е. ELMETRO-5 Добавлены входные параметры GUID-ов, добавление выходного параметра GUIDEKZMK
|
||||
-- 03.02.2020 Седаков А.В. DATAMODEL70-28. Добавлены новые поля из таблицы EKZMK.
|
||||
-- =============================================
|
||||
|
||||
CREATE PROCEDURE dbo.up_EkzmkEdit_ta
|
||||
@idekzmk int = NULL -- 1
|
||||
,@idekz int = NULL -- 2
|
||||
,@idspmu int = NULL -- 3
|
||||
,@idgrsi int -- 4
|
||||
,@idksprl int -- 5
|
||||
,@idspvdmk int -- 6
|
||||
,@idspvdmc int -- 7
|
||||
,@idfrpd int = NULL -- 8
|
||||
,@idspmpob int -- 9
|
||||
,@idprsn int = NULL -- 10
|
||||
,@idspkmmk int -- 11
|
||||
,@idspvdkl int -- 12
|
||||
,@idprsnvd int -- 13
|
||||
,@nnzvpv nvarchar(30) -- 14
|
||||
,@shfkl varchar(20) -- 15
|
||||
,@nnnkl nvarchar(30) -- 16
|
||||
,@prmk int -- 17
|
||||
,@dtmkfk datetime -- 18
|
||||
,@dtmkpl datetime -- 19
|
||||
,@dtprm datetime -- 20
|
||||
,@dtvdm datetime -- 21
|
||||
,@gdn bit -- 22
|
||||
,@pzmc int -- 23
|
||||
,@stmk money -- 24
|
||||
,@stmkdp money -- 25
|
||||
,@ncsrmk money -- 26
|
||||
,@idprsnsd int = NULL -- 27
|
||||
,@idprsnpr int = NULL -- 28
|
||||
,@idprsnvy int = NULL -- 29
|
||||
,@idspssmp int = NULL -- 30
|
||||
,@idsptsmp int = NULL -- id технического состояния в момент приёмки
|
||||
,@dsekzmk nvarchar(300) = NULL
|
||||
,@dtotm datetime = NULL
|
||||
,@dtvzm datetime = NULL
|
||||
,@idprsnotm int = NULL
|
||||
,@idprsnvzm int = NULL
|
||||
,@nrvrmndmp decimal(6, 2) = NULL
|
||||
,@nrvrmmp decimal(6, 2) = NULL
|
||||
,@dtzvpv datetime = NULL
|
||||
,@vrmkfk decimal(6, 2) = NULL
|
||||
,@idksp int = NULL
|
||||
,@dpznmp nvarchar(50) = NULL
|
||||
,@hrtcmp nvarchar(40) = NULL
|
||||
,@idspvdsbmk int = NULL
|
||||
,@prchnpgdn nvarchar(1024) = NULL
|
||||
,@idekzetl int = NULL
|
||||
,@guidekzmk uniqueidentifier = NULL -- guid события мк
|
||||
,@guidekz uniqueidentifier = NULL -- guid экземляра си
|
||||
,@guidspmu uniqueidentifier = NULL -- guid справочника места установки
|
||||
,@guidfrpd uniqueidentifier = NULL -- guid повер/калиб орг-ции
|
||||
,@guidprsnisp uniqueidentifier = NULL -- guid персоны поверителя
|
||||
,@guidprsnvd uniqueidentifier = NULL -- guid персоны получателя
|
||||
,@guidprsnsd uniqueidentifier = NULL -- guid персоны сдавшего
|
||||
,@guidprsnpr uniqueidentifier = NULL -- guid персоны принявшего
|
||||
,@guidprsnvy uniqueidentifier = NULL -- guid персоны выдавшего
|
||||
AS
|
||||
BEGIN TRY
|
||||
set dateformat dmy
|
||||
set nocount on
|
||||
|
||||
BEGIN TRANSACTION
|
||||
|
||||
if LEN(@shfkl) = 0
|
||||
set @shfkl = NULL
|
||||
|
||||
if @guidekzmk is NULL
|
||||
select
|
||||
@guidekzmk = guidekzmk
|
||||
,@idspssmp = COALESCE(@idspssmp, idspssmp)
|
||||
,@idsptsmp = COALESCE(@idsptsmp, idsptsmp)
|
||||
from ekzmk
|
||||
where idekzmk = @idekzmk
|
||||
else if @idekzmk is NULL
|
||||
select
|
||||
@idekzmk = idekzmk
|
||||
,@idspssmp = COALESCE(@idspssmp, idspssmp)
|
||||
,@idsptsmp = COALESCE(@idsptsmp, idsptsmp)
|
||||
from ekzmk
|
||||
where guidekzmk = @guidekzmk
|
||||
|
||||
if @guidekz is NULL
|
||||
select @guidekz = guidekz
|
||||
from ekz
|
||||
where idekz = @idekz
|
||||
else if @idekz is NULL
|
||||
select @idekz = idekz
|
||||
from ekz
|
||||
where guidekz = @guidekz
|
||||
|
||||
if @idspmu is NULL and @guidspmu is not NULL
|
||||
select @idspmu = idspmu
|
||||
from spmu
|
||||
where guidspmu = @guidspmu
|
||||
|
||||
if @idfrpd is NULL and @guidfrpd is not NULL
|
||||
select @idfrpd = idfrpd
|
||||
from frpd
|
||||
where CAST(frpdguid as uniqueidentifier) = @guidfrpd
|
||||
|
||||
if @idprsn is NULL and @guidprsnisp is not NULL
|
||||
select @idprsn = idprsn
|
||||
from prsn
|
||||
where CAST(guidprsn as uniqueidentifier) = @guidprsnisp
|
||||
|
||||
if @idprsnvd is NULL and @guidprsnvd is not NULL
|
||||
select @idprsnvd = idprsn
|
||||
from prsn
|
||||
where CAST(guidprsn as uniqueidentifier) = @guidprsnvd
|
||||
|
||||
if @idprsnsd is NULL and @guidprsnsd is not NULL
|
||||
select @idprsnsd = idprsn
|
||||
from prsn
|
||||
where CAST(guidprsn as uniqueidentifier) = @guidprsnsd
|
||||
|
||||
if @idprsnpr is NULL and @guidprsnpr is not NULL
|
||||
select @idprsnpr = idprsn
|
||||
from prsn
|
||||
where CAST(guidprsn as uniqueidentifier) = @guidprsnpr
|
||||
|
||||
if @idprsnvy is NULL and @guidprsnvy is not NULL
|
||||
select @idprsnvy = idprsn
|
||||
from prsn
|
||||
where CAST(guidprsn as uniqueidentifier) = @guidprsnvy
|
||||
|
||||
declare @idekz_old int, @idgrsi_old int, @idspvdmk_old int
|
||||
|
||||
select @idekz_old = idekz, @idgrsi_old = idgrsi, @idspvdmk_old = idspvdmk
|
||||
from ekzmk
|
||||
where idekzmk = @idekzmk
|
||||
|
||||
if (@idekz_old <> @idekz) or
|
||||
(ISNULL(@idgrsi_old, 0) <> ISNULL(@idgrsi, 0)) or
|
||||
(ISNULL(@idspvdmk_old, 0) <> ISNULL(@idspvdmk, 0))
|
||||
delete from ekzmknd
|
||||
where idekzmk = @idekzmk
|
||||
|
||||
update ekzmk
|
||||
set idekz = @idekz -- 2
|
||||
,idspmu = @idspmu -- 3
|
||||
,idgrsi = @idgrsi -- 4
|
||||
,idksprl = @idksprl -- 5
|
||||
,idspvdmk = @idspvdmk -- 6
|
||||
,idspvdmc = @idspvdmc -- 7
|
||||
,idfrpd = @idfrpd -- 8
|
||||
,idspmpob = @idspmpob -- 9
|
||||
,idprsn = @idprsn -- 10
|
||||
,idspkmmk = @idspkmmk -- 11
|
||||
,idspvdkl = @idspvdkl -- 12
|
||||
,idprsnvd = @idprsnvd -- 13
|
||||
,nnzvpv = @nnzvpv -- 14
|
||||
,shfkl = @shfkl -- 15
|
||||
,nnnkl = @nnnkl -- 16
|
||||
,prmk = @prmk -- 17
|
||||
,dtmkfk = @dtmkfk -- 18
|
||||
,dtmkpl = @dtmkpl -- 19
|
||||
,dtprm = @dtprm -- 20
|
||||
,dtvdm = @dtvdm -- 21
|
||||
,gdn = @gdn -- 22
|
||||
,pzmc = @pzmc -- 23
|
||||
,stmk = @stmk -- 24
|
||||
,stmkdp = @stmkdp -- 25
|
||||
,ncsrmk = @ncsrmk -- 26
|
||||
,idprsnsd = @idprsnsd -- 27
|
||||
,idprsnpr = @idprsnpr -- 28
|
||||
,idprsnvy = @idprsnvy -- 29
|
||||
,idspssmp = @idspssmp -- не менять поля если указан null
|
||||
,idsptsmp = @idsptsmp -- не менять поля если указан null
|
||||
,dsekzmk = @dsekzmk
|
||||
,dtotm = @dtotm
|
||||
,dtvzm = @dtvzm
|
||||
,idprsnotm = @idprsnotm
|
||||
,idprsnvzm = @idprsnvzm
|
||||
,nrvrmndmp = @nrvrmndmp
|
||||
,nrvrmmp = @nrvrmmp
|
||||
,dtzvpv = @dtzvpv
|
||||
,vrmkfk = @vrmkfk
|
||||
,idksp = @idksp
|
||||
,dpznmp = @dpznmp
|
||||
,hrtcmp = @hrtcmp
|
||||
,idspvdsbmk = @idspvdsbmk
|
||||
,prchnpgdn = @prchnpgdn
|
||||
,guidekzmk = @guidekzmk
|
||||
,idekzetl = @idekzetl
|
||||
where idekzmk = @idekzmk -- 1
|
||||
|
||||
-- проверка прав доступа после изменения объекта
|
||||
exec dbo.EKZMK_CheckPermissions @idekzmk, null, 'U'
|
||||
|
||||
select
|
||||
@@ROWCOUNT
|
||||
|
||||
-- Добавление Методик МК по событию МК.
|
||||
insert into ekzmknd(idekzmk, idnd)
|
||||
select distinct ekzmk.idekzmk, ekzndvdmk.idnd
|
||||
from ekzmk
|
||||
join ekzndvdmk on ekzmk.idekz = ekzndvdmk.idekz and
|
||||
ISNULL(ekzmk.idgrsi, 0) = ISNULL(ekzndvdmk.idgrsi, 0) and
|
||||
ISNULL(ekzmk.idspvdmk, 0) = ISNULL(ekzndvdmk.idspvdmk , 0)
|
||||
left join ekzmknd on ekzmk.idekzmk = ekzmknd.idekzmk and ekzndvdmk.idnd = ekzmknd.idnd
|
||||
where ekzmknd.idekzmknd is NULL and ekzmk.idekzmk = @idekzmk
|
||||
|
||||
-- Если для редактируемого события МК нет записи о дополнительных сведениях, добавить её, используя вызов процедуры на добавление записи дополнительных сведений для @IDEKZMK.
|
||||
if (not exists(select 1 from ekzmkdh where idekzmk = @idekzmk))
|
||||
exec dbo.EKZMKDH_Insert @idekzmk
|
||||
|
||||
if @@TRANCOUNT > 0
|
||||
COMMIT
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
declare @ErrorMessage nvarchar(400);
|
||||
declare @ErrorSeverity int;
|
||||
declare @ErrorState int;
|
||||
select @ErrorMessage = ERROR_MESSAGE();
|
||||
select @ErrorSeverity = ERROR_SEVERITY();
|
||||
select @ErrorState = ERROR_STATE();
|
||||
if @@TRANCOUNT > 0
|
||||
ROLLBACK
|
||||
RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState);
|
||||
END CATCH
|
||||
|
||||
|
||||
Reference in New Issue
Block a user