TR_REVENUEBENEFIT_INSERTUPDATE_CURRENCY
Definition
Copy
CREATE trigger [dbo].[TR_REVENUEBENEFIT_INSERTUPDATE_CURRENCY] on [dbo].[REVENUEBENEFIT]
after insert, update
not for replication
as
begin
set nocount on;
-- if we try to save a unit value without explicitly setting an organization total value and an exchange rate,
-- copy the total amount to the organization total amount and transaction total amount.
if update(UNITVALUE) or update(QUANTITY) or update(PERCENTAPPLICABLEAMOUNT) or update(VALUEPERCENT)
begin
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
update
dbo.REVENUEBENEFIT
set
REVENUEBENEFIT.ORGANIZATIONTOTALVALUE = REVENUEBENEFIT.TOTALVALUE,
REVENUEBENEFIT.TRANSACTIONTOTALVALUE = REVENUEBENEFIT.TOTALVALUE,
REVENUEBENEFIT.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
REVENUEBENEFIT.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID,
REVENUEBENEFIT.CHANGEDBYID = REVENUEBENEFIT.CHANGEDBYID,
REVENUEBENEFIT.DATECHANGED = REVENUEBENEFIT.DATECHANGED
from
inserted
inner join
dbo.REVENUEBENEFIT on inserted.ID = REVENUEBENEFIT.ID
where
REVENUEBENEFIT.ORGANIZATIONEXCHANGERATEID is null
and (REVENUEBENEFIT.BASECURRENCYID is null or REVENUEBENEFIT.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
and REVENUEBENEFIT.BASEEXCHANGERATEID is null
and (REVENUEBENEFIT.TRANSACTIONCURRENCYID is null or REVENUEBENEFIT.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
and (
REVENUEBENEFIT.ORGANIZATIONTOTALVALUE <> REVENUEBENEFIT.TOTALVALUE
or REVENUEBENEFIT.TRANSACTIONTOTALVALUE <> REVENUEBENEFIT.TOTALVALUE
or REVENUEBENEFIT.TOTALVALUE = 0
);
end
end