TR_OPPORTUNITY_INSERTUPDATE_CURRENCY
Definition
Copy
CREATE trigger [dbo].[TR_OPPORTUNITY_INSERTUPDATE_CURRENCY] on [dbo].[OPPORTUNITY]
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(EXPECTEDASKAMOUNT) or update(ASKAMOUNT)
begin
update
dbo.OPPORTUNITY
set
OPPORTUNITY.ORGANIZATIONEXPECTEDASKAMOUNT = OPPORTUNITY.EXPECTEDASKAMOUNT,
OPPORTUNITY.TRANSACTIONEXPECTEDASKAMOUNT = OPPORTUNITY.EXPECTEDASKAMOUNT,
OPPORTUNITY.ORGANIZATIONASKAMOUNT = OPPORTUNITY.ASKAMOUNT,
OPPORTUNITY.TRANSACTIONASKAMOUNT = OPPORTUNITY.ASKAMOUNT,
OPPORTUNITY.ORGANIZATIONACCEPTEDASKAMOUNT = OPPORTUNITY.ACCEPTEDASKAMOUNT,
OPPORTUNITY.TRANSACTIONACCEPTEDASKAMOUNT = OPPORTUNITY.ACCEPTEDASKAMOUNT,
OPPORTUNITY.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
OPPORTUNITY.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID,
OPPORTUNITY.CHANGEDBYID = OPPORTUNITY.CHANGEDBYID,
OPPORTUNITY.DATECHANGED = OPPORTUNITY.DATECHANGED
from
inserted
inner join
dbo.OPPORTUNITY on inserted.ID = OPPORTUNITY.ID
where
OPPORTUNITY.ORGANIZATIONEXCHANGERATEID is null
and (OPPORTUNITY.BASECURRENCYID is null or OPPORTUNITY.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
and OPPORTUNITY.BASEEXCHANGERATEID is null
and (OPPORTUNITY.TRANSACTIONCURRENCYID is null or OPPORTUNITY.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
and
(
OPPORTUNITY.ORGANIZATIONEXPECTEDASKAMOUNT <> OPPORTUNITY.EXPECTEDASKAMOUNT
or OPPORTUNITY.TRANSACTIONEXPECTEDASKAMOUNT <> OPPORTUNITY.EXPECTEDASKAMOUNT
or OPPORTUNITY.ORGANIZATIONASKAMOUNT <> OPPORTUNITY.ASKAMOUNT
or OPPORTUNITY.TRANSACTIONASKAMOUNT <> OPPORTUNITY.ASKAMOUNT
or OPPORTUNITY.ORGANIZATIONACCEPTEDASKAMOUNT <> OPPORTUNITY.ACCEPTEDASKAMOUNT
or OPPORTUNITY.TRANSACTIONACCEPTEDASKAMOUNT <> OPPORTUNITY.ACCEPTEDASKAMOUNT
or (OPPORTUNITY.EXPECTEDASKAMOUNT = 0 and OPPORTUNITY.ASKAMOUNT = 0 and OPPORTUNITY.ACCEPTEDASKAMOUNT = 0)
);
end
end