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