TR_RECURRINGGIFTINSTALLMENT_INSERTUPDATE_CURRENCY
Definition
Copy
CREATE trigger [dbo].[TR_RECURRINGGIFTINSTALLMENT_INSERTUPDATE_CURRENCY] on [dbo].[RECURRINGGIFTINSTALLMENT]
after insert, update
not for replication
as
begin
set nocount on;
--Replaces CK_RECURRINGGIFTINSTALLMENT_VALIDDATE
--The "GETLATESTTIME" date function has been inlined here for performance (the part with "dateadd(ms, -003...")...
if exists(select 1
from inserted I
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = I.REVENUEID
where dateadd(ms, -003, dateadd(d, 1, cast(cast(FT.DATE as date) as datetime))) > dateadd(ms, -003, dateadd(d, 1, cast(cast(I.DATE as date) as datetime))))
BEGIN
RAISERROR ('CK_RECURRINGGIFTINSTALLMENT_VALIDDATE', 16, 1)
ROLLBACK
END
if update(AMOUNT)
begin
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
update
dbo.RECURRINGGIFTINSTALLMENT
set
RECURRINGGIFTINSTALLMENT.ORGANIZATIONAMOUNT = RECURRINGGIFTINSTALLMENT.AMOUNT,
RECURRINGGIFTINSTALLMENT.TRANSACTIONAMOUNT = RECURRINGGIFTINSTALLMENT.AMOUNT,
RECURRINGGIFTINSTALLMENT.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
RECURRINGGIFTINSTALLMENT.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID,
RECURRINGGIFTINSTALLMENT.CHANGEDBYID = RECURRINGGIFTINSTALLMENT.CHANGEDBYID,
RECURRINGGIFTINSTALLMENT.DATECHANGED = RECURRINGGIFTINSTALLMENT.DATECHANGED
from
inserted
inner join
dbo.RECURRINGGIFTINSTALLMENT on inserted.ID = RECURRINGGIFTINSTALLMENT.ID
where
RECURRINGGIFTINSTALLMENT.ORGANIZATIONEXCHANGERATEID is null
and (RECURRINGGIFTINSTALLMENT.BASECURRENCYID is null or RECURRINGGIFTINSTALLMENT.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
and RECURRINGGIFTINSTALLMENT.BASEEXCHANGERATEID is null
and (RECURRINGGIFTINSTALLMENT.TRANSACTIONCURRENCYID is null or RECURRINGGIFTINSTALLMENT.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
and (
RECURRINGGIFTINSTALLMENT.ORGANIZATIONAMOUNT <> RECURRINGGIFTINSTALLMENT.AMOUNT
or RECURRINGGIFTINSTALLMENT.TRANSACTIONAMOUNT <> RECURRINGGIFTINSTALLMENT.AMOUNT
or RECURRINGGIFTINSTALLMENT.AMOUNT = 0
);
end
end