TR_MEMBERSHIPPROGRAMADDON_INSERTUPDATE_CURRENCY
Definition
Copy
create trigger [dbo].[TR_MEMBERSHIPPROGRAMADDON_INSERTUPDATE_CURRENCY] on [dbo].[MEMBERSHIPPROGRAMADDON]
after insert, update
not for replication
as
begin
set nocount on;
-- if we try to save without explicitly setting an organization price and an exchange rate,
-- copy the price to the organization price and transaction price.
if update(PRICE)
begin
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
update
dbo.MEMBERSHIPPROGRAMADDON
set
MEMBERSHIPPROGRAMADDON.ORGANIZATIONPRICE = MEMBERSHIPPROGRAMADDON.PRICE,
MEMBERSHIPPROGRAMADDON.TRANSACTIONPRICE = MEMBERSHIPPROGRAMADDON.PRICE,
MEMBERSHIPPROGRAMADDON.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
MEMBERSHIPPROGRAMADDON.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID,
MEMBERSHIPPROGRAMADDON.CHANGEDBYID = MEMBERSHIPPROGRAMADDON.CHANGEDBYID,
MEMBERSHIPPROGRAMADDON.DATECHANGED = MEMBERSHIPPROGRAMADDON.DATECHANGED
from
inserted
inner join
dbo.MEMBERSHIPPROGRAMADDON on inserted.ID = MEMBERSHIPPROGRAMADDON.ID
where
MEMBERSHIPPROGRAMADDON.ORGANIZATIONEXCHANGERATEID is null
and (MEMBERSHIPPROGRAMADDON.BASECURRENCYID is null or MEMBERSHIPPROGRAMADDON.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
and MEMBERSHIPPROGRAMADDON.BASEEXCHANGERATEID is null
and (MEMBERSHIPPROGRAMADDON.TRANSACTIONCURRENCYID is null or MEMBERSHIPPROGRAMADDON.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
and (
MEMBERSHIPPROGRAMADDON.ORGANIZATIONPRICE <> MEMBERSHIPPROGRAMADDON.PRICE
or MEMBERSHIPPROGRAMADDON.TRANSACTIONPRICE <> MEMBERSHIPPROGRAMADDON.PRICE
or MEMBERSHIPPROGRAMADDON.PRICE = 0
);
end
end