TR_DESIGNATIONLEVELGOAL_DESIGNATIONGOAL_UPDATE
Definition
Copy
CREATE trigger dbo.TR_DESIGNATIONLEVELGOAL_DESIGNATIONGOAL_UPDATE
on dbo.DESIGNATIONLEVELGOAL
after update NOT FOR REPLICATION
as
begin
set nocount on;
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if update(GOAL)
update
dbo.DESIGNATIONLEVELGOAL
set
DESIGNATIONLEVELGOAL.ORGANIZATIONGOAL = DESIGNATIONLEVELGOAL.GOAL,
DESIGNATIONLEVELGOAL.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
DESIGNATIONLEVELGOAL.CHANGEDBYID = DESIGNATIONLEVELGOAL.CHANGEDBYID,
DESIGNATIONLEVELGOAL.DATECHANGED = DESIGNATIONLEVELGOAL.DATECHANGED
from
inserted
inner join
dbo.DESIGNATIONLEVELGOAL on inserted.ID = DESIGNATIONLEVELGOAL.ID
where
DESIGNATIONLEVELGOAL.ORGANIZATIONEXCHANGERATEID is null
and (DESIGNATIONLEVELGOAL.BASECURRENCYID is null or DESIGNATIONLEVELGOAL.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
and
(
DESIGNATIONLEVELGOAL.ORGANIZATIONGOAL <> DESIGNATIONLEVELGOAL.GOAL
or DESIGNATIONLEVELGOAL.GOAL = 0
);
declare @DESIGNATIONID uniqueidentifier;
select
@DESIGNATIONID = ID
from
dbo.DESIGNATION
where
DESIGNATIONLEVEL1ID = (select top 1 DESIGNATIONLEVELID
from DELETED)
and DESIGNATIONLEVEL2ID is null;
if not @DESIGNATIONID is null
begin
declare @DESIGNATIONGOALTABLE table(ID uniqueidentifier);
insert into @DESIGNATIONGOALTABLE
select
ID
from
dbo.DESIGNATIONGOAL
where
DESIGNATIONID = @DESIGNATIONID and DESIGNATIONLEVELGOALID in (select ID from DELETED);
if (select count(ID) from @DESIGNATIONGOALTABLE) = 0
begin
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
insert into dbo.DESIGNATIONGOAL
(DESIGNATIONID,DESIGNATIONLEVELGOALID,GOAL,ORGANIZATIONGOAL,ORGANIZATIONEXCHANGERATEID,BASECURRENCYID,ADDEDBYID,CHANGEDBYID, DATEADDED, DATECHANGED)
SELECT
@DESIGNATIONID, ID, GOAL,ORGANIZATIONGOAL,ORGANIZATIONEXCHANGERATEID,BASECURRENCYID,ADDEDBYID,CHANGEDBYID, @CURRENTDATE, @CURRENTDATE
FROM INSERTED
end
else
update dbo.DESIGNATIONGOAL
set DESIGNATIONGOAL.GOAL = INSERTED.GOAL,
DESIGNATIONGOAL.ORGANIZATIONGOAL = INSERTED.ORGANIZATIONGOAL,
DESIGNATIONGOAL.ORGANIZATIONEXCHANGERATEID = INSERTED.ORGANIZATIONEXCHANGERATEID,
DESIGNATIONGOAL.BASECURRENCYID = INSERTED.BASECURRENCYID,
DESIGNATIONGOAL.CHANGEDBYID = INSERTED.CHANGEDBYID,
DESIGNATIONGOAL.DATECHANGED = getdate()
from
INSERTED
join
dbo.DESIGNATIONGOAL on DESIGNATIONGOAL.DESIGNATIONLEVELGOALID = INSERTED.ID
where
DESIGNATIONGOAL.ID in (select ID from @DESIGNATIONGOALTABLE)
end
end