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