TR_PLANNEDGIFTADDITION_INSERTUPDATE_CURRENCY

Definition

Copy


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

    declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(); 

    -- if we try to save an amount without explicitly setting an organization amount and an exchange rate, 

    -- copy the amount to the organization amount.

    if update(EXPECTEDGIFTAMOUNT) or update(RECOGNITIONAMOUNT)
    begin
      update
        dbo.PLANNEDGIFTADDITION
      set
        PLANNEDGIFTADDITION.ORGANIZATIONEXPECTEDGIFTAMOUNT = PLANNEDGIFTADDITION.EXPECTEDGIFTAMOUNT,
        PLANNEDGIFTADDITION.TRANSACTIONEXPECTEDGIFTAMOUNT = PLANNEDGIFTADDITION.EXPECTEDGIFTAMOUNT,

        PLANNEDGIFTADDITION.ORGANIZATIONRECOGNITIONAMOUNT = PLANNEDGIFTADDITION.RECOGNITIONAMOUNT,
        PLANNEDGIFTADDITION.TRANSACTIONRECOGNITIONAMOUNT = PLANNEDGIFTADDITION.RECOGNITIONAMOUNT,

        PLANNEDGIFTADDITION.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
        PLANNEDGIFTADDITION.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID,
        PLANNEDGIFTADDITION.CHANGEDBYID = PLANNEDGIFTADDITION.CHANGEDBYID,
        PLANNEDGIFTADDITION.DATECHANGED = PLANNEDGIFTADDITION.DATECHANGED
      from
        inserted
      inner join
        dbo.PLANNEDGIFTADDITION on inserted.ID = PLANNEDGIFTADDITION.ID
      where
        PLANNEDGIFTADDITION.ORGANIZATIONEXCHANGERATEID is null
        and (PLANNEDGIFTADDITION.BASECURRENCYID is null or PLANNEDGIFTADDITION.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
        and PLANNEDGIFTADDITION.BASEEXCHANGERATEID is null
        and (PLANNEDGIFTADDITION.TRANSACTIONCURRENCYID is null or PLANNEDGIFTADDITION.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
        and
        (
          PLANNEDGIFTADDITION.ORGANIZATIONEXPECTEDGIFTAMOUNT <> PLANNEDGIFTADDITION.EXPECTEDGIFTAMOUNT
          or PLANNEDGIFTADDITION.TRANSACTIONEXPECTEDGIFTAMOUNT <> PLANNEDGIFTADDITION.EXPECTEDGIFTAMOUNT

          or PLANNEDGIFTADDITION.ORGANIZATIONRECOGNITIONAMOUNT <> PLANNEDGIFTADDITION.RECOGNITIONAMOUNT
          or PLANNEDGIFTADDITION.TRANSACTIONRECOGNITIONAMOUNT <> PLANNEDGIFTADDITION.RECOGNITIONAMOUNT

          or (
            PLANNEDGIFTADDITION.EXPECTEDGIFTAMOUNT = 0
            and PLANNEDGIFTADDITION.RECOGNITIONAMOUNT = 0
          )
        );
    end
  end