TR_REVENUEVAT_INSERTUPDATE_CURRENCY
Definition
Copy
create trigger [dbo].[TR_REVENUEVAT_INSERTUPDATE_CURRENCY] on [dbo].[REVENUEVAT]
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(VATAMOUNT) or update(AMOUNTTOTAX)
begin
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
update
dbo.REVENUEVAT
set
REVENUEVAT.ORGANIZATIONVATAMOUNT = REVENUEVAT.VATAMOUNT,
REVENUEVAT.TRANSACTIONVATAMOUNT = REVENUEVAT.VATAMOUNT,
REVENUEVAT.ORGANIZATIONAMOUNTTOTAX = REVENUEVAT.AMOUNTTOTAX,
REVENUEVAT.TRANSACTIONAMOUNTTOTAX = REVENUEVAT.AMOUNTTOTAX,
REVENUEVAT.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
REVENUEVAT.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID,
REVENUEVAT.CHANGEDBYID = REVENUEVAT.CHANGEDBYID,
REVENUEVAT.DATECHANGED = REVENUEVAT.DATECHANGED
from
inserted
inner join
dbo.REVENUEVAT on inserted.ID = REVENUEVAT.ID
where
REVENUEVAT.ORGANIZATIONEXCHANGERATEID is null
and (REVENUEVAT.BASECURRENCYID is null or REVENUEVAT.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
and REVENUEVAT.BASEEXCHANGERATEID is null
and (REVENUEVAT.TRANSACTIONCURRENCYID is null or REVENUEVAT.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
and (
REVENUEVAT.ORGANIZATIONVATAMOUNT <> REVENUEVAT.VATAMOUNT
or REVENUEVAT.TRANSACTIONVATAMOUNT <> REVENUEVAT.VATAMOUNT
or REVENUEVAT.VATAMOUNT = 0 or
REVENUEVAT.ORGANIZATIONAMOUNTTOTAX <> REVENUEVAT.AMOUNTTOTAX
or REVENUEVAT.TRANSACTIONAMOUNTTOTAX <> REVENUEVAT.AMOUNTTOTAX
or REVENUEVAT.AMOUNTTOTAX = 0
);
end
end