TR_WRITEOFFGLDISTRIBUTION_INSERTUPDATE_CURRENCY
Definition
Copy
CREATE trigger [dbo].[TR_WRITEOFFGLDISTRIBUTION_INSERTUPDATE_CURRENCY] on [dbo].[WRITEOFFGLDISTRIBUTION]
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 and transaction amounts.
if update(AMOUNT)
update
dbo.WRITEOFFGLDISTRIBUTION
set
WRITEOFFGLDISTRIBUTION.ORGANIZATIONAMOUNT = WRITEOFFGLDISTRIBUTION.AMOUNT,
WRITEOFFGLDISTRIBUTION.TRANSACTIONAMOUNT = WRITEOFFGLDISTRIBUTION.AMOUNT,
WRITEOFFGLDISTRIBUTION.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
WRITEOFFGLDISTRIBUTION.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID,
WRITEOFFGLDISTRIBUTION.CHANGEDBYID = WRITEOFFGLDISTRIBUTION.CHANGEDBYID,
WRITEOFFGLDISTRIBUTION.DATECHANGED = WRITEOFFGLDISTRIBUTION.DATECHANGED
from
inserted
inner join
dbo.WRITEOFFGLDISTRIBUTION on inserted.ID = WRITEOFFGLDISTRIBUTION.ID
where
WRITEOFFGLDISTRIBUTION.ORGANIZATIONEXCHANGERATEID is null
and (WRITEOFFGLDISTRIBUTION.BASECURRENCYID is null or WRITEOFFGLDISTRIBUTION.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
and WRITEOFFGLDISTRIBUTION.BASEEXCHANGERATEID is null
and (WRITEOFFGLDISTRIBUTION.TRANSACTIONCURRENCYID is null or WRITEOFFGLDISTRIBUTION.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
and
(
WRITEOFFGLDISTRIBUTION.ORGANIZATIONAMOUNT <> WRITEOFFGLDISTRIBUTION.AMOUNT
or WRITEOFFGLDISTRIBUTION.TRANSACTIONAMOUNT <> WRITEOFFGLDISTRIBUTION.AMOUNT
or WRITEOFFGLDISTRIBUTION.AMOUNT = 0
)
end