TR_BANKACCOUNTTRANSACTIONGLDISTRIBUTION_INSERTUPDATE_CURRENCY

Definition

Copy


CREATE trigger dbo.TR_BANKACCOUNTTRANSACTIONGLDISTRIBUTION_INSERTUPDATE_CURRENCY on dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION after insert, update not for replication
as
begin
  set nocount on;

  if update(AMOUNT)
  begin
    declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

    update 
      dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION
    set
      BANKACCOUNTTRANSACTIONGLDISTRIBUTION.ORGANIZATIONAMOUNT = BANKACCOUNTTRANSACTIONGLDISTRIBUTION.AMOUNT
      ,BANKACCOUNTTRANSACTIONGLDISTRIBUTION.TRANSACTIONAMOUNT = BANKACCOUNTTRANSACTIONGLDISTRIBUTION.AMOUNT
      ,BANKACCOUNTTRANSACTIONGLDISTRIBUTION.BASECURRENCYID = @ORGANIZATIONCURRENCYID
      ,BANKACCOUNTTRANSACTIONGLDISTRIBUTION.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID
      ,BANKACCOUNTTRANSACTIONGLDISTRIBUTION.CHANGEDBYID = BANKACCOUNTTRANSACTIONGLDISTRIBUTION.CHANGEDBYID
      ,BANKACCOUNTTRANSACTIONGLDISTRIBUTION.DATECHANGED = BANKACCOUNTTRANSACTIONGLDISTRIBUTION.DATECHANGED
    from
      inserted
    full outer join deleted on deleted.ID = inserted.ID
    inner join
      dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION on BANKACCOUNTTRANSACTIONGLDISTRIBUTION.ID = inserted.ID
    where
      BANKACCOUNTTRANSACTIONGLDISTRIBUTION.ORGANIZATIONEXCHANGERATEID is null
      and (BANKACCOUNTTRANSACTIONGLDISTRIBUTION.BASECURRENCYID is null or BANKACCOUNTTRANSACTIONGLDISTRIBUTION.BASECURRENCYID = @ORGANIZATIONCURRENCYID
      and ((deleted.ID is null and inserted.BASECURRENCYID is null) or (deleted.ID is not null and deleted.TRANSACTIONAMOUNT = deleted.AMOUNT and deleted.ORGANIZATIONAMOUNT = deleted.AMOUNT))
      and BANKACCOUNTTRANSACTIONGLDISTRIBUTION.BASEEXCHANGERATEID is null
      and (BANKACCOUNTTRANSACTIONGLDISTRIBUTION.TRANSACTIONCURRENCYID is null or BANKACCOUNTTRANSACTIONGLDISTRIBUTION.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
      and (BANKACCOUNTTRANSACTIONGLDISTRIBUTION.ORGANIZATIONAMOUNT <> BANKACCOUNTTRANSACTIONGLDISTRIBUTION.AMOUNT
        or BANKACCOUNTTRANSACTIONGLDISTRIBUTION.TRANSACTIONAMOUNT <> BANKACCOUNTTRANSACTIONGLDISTRIBUTION.AMOUNT
        or BANKACCOUNTTRANSACTIONGLDISTRIBUTION.AMOUNT = 0);
  end
end