TR_RECOGNITIONLEVELAMOUNT_INSERTUPDATE_CURRENCY
Definition
Copy
CREATE trigger [dbo].[TR_RECOGNITIONLEVELAMOUNT_INSERTUPDATE_CURRENCY] on [dbo].[RECOGNITIONLEVELAMOUNT] 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 field.
if update(AMOUNT) or update(PLANNEDGIFTAMOUNT)
begin
update dbo.RECOGNITIONLEVELAMOUNT
set
RECOGNITIONLEVELAMOUNT.ORGANIZATIONAMOUNT = RECOGNITIONLEVELAMOUNT.AMOUNT,
RECOGNITIONLEVELAMOUNT.ORGANIZATIONPLANNEDGIFTAMOUNT = RECOGNITIONLEVELAMOUNT.PLANNEDGIFTAMOUNT,
RECOGNITIONLEVELAMOUNT.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
RECOGNITIONLEVELAMOUNT.CHANGEDBYID = RECOGNITIONLEVELAMOUNT.CHANGEDBYID,
RECOGNITIONLEVELAMOUNT.DATECHANGED = RECOGNITIONLEVELAMOUNT.DATECHANGED
from inserted
inner join dbo.RECOGNITIONLEVELAMOUNT on inserted.ID = RECOGNITIONLEVELAMOUNT.ID
where
RECOGNITIONLEVELAMOUNT.ORGANIZATIONEXCHANGERATEID is null
and
(
RECOGNITIONLEVELAMOUNT.BASECURRENCYID is null or
RECOGNITIONLEVELAMOUNT.BASECURRENCYID = @ORGANIZATIONCURRENCYID
)
and
(
RECOGNITIONLEVELAMOUNT.ORGANIZATIONAMOUNT <> RECOGNITIONLEVELAMOUNT.AMOUNT or
RECOGNITIONLEVELAMOUNT.ORGANIZATIONPLANNEDGIFTAMOUNT <> RECOGNITIONLEVELAMOUNT.PLANNEDGIFTAMOUNT
or
(
RECOGNITIONLEVELAMOUNT.AMOUNT = 0 and
RECOGNITIONLEVELAMOUNT.PLANNEDGIFTAMOUNT = 0
)
);
end
end