TR_REGISTRANTBENEFIT_INSERTUPDATE_CURRENCY
Definition
Copy
CREATE trigger [dbo].[TR_REGISTRANTBENEFIT_INSERTUPDATE_CURRENCY] on [dbo].[REGISTRANTBENEFIT]
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(TOTALVALUE)
update
dbo.REGISTRANTBENEFIT
set
REGISTRANTBENEFIT.ORGANIZATIONTOTALVALUE = REGISTRANTBENEFIT.TOTALVALUE,
REGISTRANTBENEFIT.EVENTBASECURRENCYTOTALVALUE = REGISTRANTBENEFIT.TOTALVALUE,
REGISTRANTBENEFIT.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
REGISTRANTBENEFIT.CHANGEDBYID = REGISTRANTBENEFIT.CHANGEDBYID,
REGISTRANTBENEFIT.DATECHANGED = REGISTRANTBENEFIT.DATECHANGED
from
inserted
inner join
dbo.REGISTRANTBENEFIT on inserted.ID = REGISTRANTBENEFIT.ID
inner join dbo.REGISTRANT on REGISTRANTBENEFIT.REGISTRANTID = REGISTRANT.ID
inner join dbo.EVENT on REGISTRANT.EVENTID = EVENT.ID
where
REGISTRANTBENEFIT.ORGANIZATIONEXCHANGERATEID is null
and (REGISTRANTBENEFIT.BASECURRENCYID is null or REGISTRANTBENEFIT.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
and REGISTRANTBENEFIT.BASEEXCHANGERATEID is null
and (EVENT.BASECURRENCYID is null or EVENT.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
and
(
REGISTRANTBENEFIT.ORGANIZATIONTOTALVALUE <> REGISTRANTBENEFIT.TOTALVALUE
or REGISTRANTBENEFIT.EVENTBASECURRENCYTOTALVALUE <> REGISTRANTBENEFIT.TOTALVALUE
or REGISTRANTBENEFIT.TOTALVALUE = 0
)
end