TR_DONORCHALLENGE_INSERTUPDATE_CURRENCY

Definition

Copy


CREATE trigger [dbo].[TR_DONORCHALLENGE_INSERTUPDATE_CURRENCY] on [dbo].[DONORCHALLENGE] 
after insert, update 
not for replication
as
begin
 set nocount on;

 if update(TOTALFUNDS) or update(MATCHTHRESHOLD) or update(MINGIFTAMOUNT) or update(MAXMATCHPERGIFT)
 begin
  declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

  update
   dbo.DONORCHALLENGE
  set
   DONORCHALLENGE.ORGANIZATIONTOTALFUNDS = DONORCHALLENGE.TOTALFUNDS,
   DONORCHALLENGE.ORGANIZATIONMATCHTHRESHOLD = DONORCHALLENGE.MATCHTHRESHOLD,
   DONORCHALLENGE.ORGANIZATIONMINGIFTAMOUNT = DONORCHALLENGE.MINGIFTAMOUNT,
   DONORCHALLENGE.ORGANIZATIONMAXMATCHPERGIFT = DONORCHALLENGE.MAXMATCHPERGIFT,
   DONORCHALLENGE.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
   DONORCHALLENGE.CHANGEDBYID = DONORCHALLENGE.CHANGEDBYID,
   DONORCHALLENGE.DATECHANGED = DONORCHALLENGE.DATECHANGED
  from
   inserted
  inner join
   dbo.DONORCHALLENGE on inserted.ID = DONORCHALLENGE.ID
  where
   DONORCHALLENGE.ORGANIZATIONEXCHANGERATEID is null
   and (DONORCHALLENGE.BASECURRENCYID is null or DONORCHALLENGE.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
   and
    (
     DONORCHALLENGE.ORGANIZATIONTOTALFUNDS <> DONORCHALLENGE.TOTALFUNDS
     or DONORCHALLENGE.ORGANIZATIONMATCHTHRESHOLD <> DONORCHALLENGE.MATCHTHRESHOLD
     or DONORCHALLENGE.ORGANIZATIONMINGIFTAMOUNT <> DONORCHALLENGE.MINGIFTAMOUNT
     or DONORCHALLENGE.ORGANIZATIONMAXMATCHPERGIFT <> DONORCHALLENGE.MAXMATCHPERGIFT
     or (
         DONORCHALLENGE.TOTALFUNDS = 0 and
         DONORCHALLENGE.MATCHTHRESHOLD = 0 and
         DONORCHALLENGE.MINGIFTAMOUNT = 0 and
         DONORCHALLENGE.MAXMATCHPERGIFT = 0
     )
    );
  end
end