USP_EVENT_UPDATEPAYMENT
Updates a payment to an event reg fee.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@CHANGEDATE | datetime | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@PREVIOUSDATE | datetime | IN | |
@UPDATERECOGNITIONOPTION | tinyint | IN | |
@BASEAPPLIEDAMOUNT | money | IN | |
@ORGANIZATIONAPPLIEDAMOUNT | money | IN | |
@UPDATESOLICITORSOPTION | tinyint | IN | |
@CATEGORYCODEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_EVENT_UPDATEPAYMENT
(
@ID uniqueidentifier,
@AMOUNT money,
@CHANGEDATE datetime = null,
@CHANGEAGENTID uniqueidentifier = null,
@PREVIOUSDATE datetime = null,
@UPDATERECOGNITIONOPTION tinyint = null,
@BASEAPPLIEDAMOUNT money = null,
@ORGANIZATIONAPPLIEDAMOUNT money = null,
@UPDATESOLICITORSOPTION tinyint = null,
@CATEGORYCODEID uniqueidentifier = null
)
as
set nocount on;
-- Get multicurrency values from the revenue.
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @DATE datetime;
declare @ORIGINALAPPLIEDAMOUNTCONVERTED money;
declare @APPLICATIONID uniqueidentifier;
select
@TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID,
@BASECURRENCYID = CS.BASECURRENCYID,
@BASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = REVENUE.ORGEXCHANGERATEID,
@DATE = cast(REVENUE.DATE as datetime),
@ORIGINALAPPLIEDAMOUNTCONVERTED = EVENTREGISTRANTPAYMENT.AMOUNT,
@APPLICATIONID = EVENTREGISTRANTPAYMENT.REGISTRANTID
from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUESPLIT.FINANCIALTRANSACTIONID = REVENUE.ID
inner join dbo.REVENUE_EXT on REVENUE_EXT.ID = REVENUE.ID
inner join dbo.PDACCOUNTSYSTEM PD on PD.ID = REVENUE.PDACCOUNTSYSTEMID
inner join dbo.CURRENCYSET CS on CS.ID = PD.CURRENCYSETID
inner join dbo.EVENTREGISTRANTPAYMENT on REVENUESPLIT.ID = EVENTREGISTRANTPAYMENT.PAYMENTID
where
REVENUESPLIT.ID = @ID;
-- Convert the applied amount into base and organization amounts.
if @BASEAPPLIEDAMOUNT is null or @ORGANIZATIONAPPLIEDAMOUNT is null
exec dbo.USP_CURRENCY_GETCURRENCYVALUES
@AMOUNT,
null,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@BASEAPPLIEDAMOUNT output,
null,
@ORGANIZATIONAPPLIEDAMOUNT output,
@ORGANIZATIONEXCHANGERATEID,
0;
declare @BUSINESSUNITS table (FINANCIALTRANSACTIONLINEITEMID uniqueidentifier, DESIGNATIONID uniqueidentifier, OVERRIDEBUSINESSUNITS bit, REASON uniqueidentifier, BUSINESSUNITCODEID uniqueidentifier, RATIO float)
insert into @BUSINESSUNITS
select
REVENUESPLIT.ID,
REVENUESPLIT_EXT.DESIGNATIONID,
REVENUESPLIT_EXT.OVERRIDEBUSINESSUNITS,
REVENUESPLIT_EXT.REVENUESPLITBUSINESSUNITOVERRIDECODEID as REASON,
REVENUESPLITBUSINESSUNIT.BUSINESSUNITCODEID,
REVENUESPLITBUSINESSUNIT.AMOUNT/REVENUESPLIT.BASEAMOUNT as RATIO
from
dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
inner join dbo.REVENUESPLITBUSINESSUNIT on REVENUESPLITBUSINESSUNIT.REVENUESPLITID = REVENUESPLIT.ID
where
REVENUESPLIT.ID = @ID
and REVENUESPLIT_EXT.OVERRIDEBUSINESSUNITS = 1
declare @REVENUEID uniqueidentifier;
select @REVENUEID = FINANCIALTRANSACTIONID from dbo.FINANCIALTRANSACTIONLINEITEM where ID=@ID;
declare @ORIGINALREVENUESPLITAMOUNT money;
select @ORIGINALREVENUESPLITAMOUNT = BASEAMOUNT from dbo.FINANCIALTRANSACTIONLINEITEM where ID = @ID;
update dbo.FINANCIALTRANSACTIONLINEITEM set
TRANSACTIONAMOUNT = @AMOUNT
,BASEAMOUNT = @BASEAPPLIEDAMOUNT
,ORGAMOUNT = @ORGANIZATIONAPPLIEDAMOUNT
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CHANGEDATE
where ID = @ID
and (
TRANSACTIONAMOUNT != @AMOUNT or
BASEAMOUNT != @BASEAPPLIEDAMOUNT or
ORGAMOUNT != @ORGANIZATIONAPPLIEDAMOUNT);
exec dbo.USP_REVENUESPLIT_UPDATESOLICITORS
@REVENUESPLITID = @ID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CHANGEDATE = @CHANGEDATE,
@UPDATEOPTION = @UPDATESOLICITORSOPTION;
declare @APPLICATIONCURRENCYID uniqueidentifier;
declare @PREVIOUSAPPLICATIONEXCHANGERATEID uniqueidentifier;
declare @APPLICATIONEXCHANGERATEID uniqueidentifier;
declare @APPLIEDAMOUNTCONVERTED money;
select
@APPLICATIONCURRENCYID = EVENTREGISTRANTPAYMENT.APPLICATIONCURRENCYID,
@PREVIOUSAPPLICATIONEXCHANGERATEID = EVENTREGISTRANTPAYMENT.APPLICATIONEXCHANGERATEID
from
dbo.EVENTREGISTRANTPAYMENT
where
EVENTREGISTRANTPAYMENT.PAYMENTID = @ID;
exec dbo.USP_REVENUE_GETUPDATEDAPPLICATIONEXCHANGERATE
@PREVIOUSAPPLICATIONEXCHANGERATEID = @PREVIOUSAPPLICATIONEXCHANGERATEID,
@PREVIOUSDATE = @PREVIOUSDATE,
@APPLIEDAMOUNT = @AMOUNT,
@DATE = @DATE,
@TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,
@BASECURRENCYID = @BASECURRENCYID,
@BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
@APPLICATIONCURRENCYID = @APPLICATIONCURRENCYID,
@APPLICATIONEXCHANGERATEID = @APPLICATIONEXCHANGERATEID output,
@APPLIEDAMOUNTCONVERTED = @APPLIEDAMOUNTCONVERTED output;
update dbo.EVENTREGISTRANTPAYMENT
set
AMOUNT = @APPLIEDAMOUNTCONVERTED,
APPLICATIONEXCHANGERATEID = @APPLICATIONEXCHANGERATEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where
PAYMENTID = @ID
and
(
AMOUNT <> @APPLIEDAMOUNTCONVERTED
or (APPLICATIONEXCHANGERATEID is null and @APPLICATIONEXCHANGERATEID is not null)
or (APPLICATIONEXCHANGERATEID is not null and @APPLICATIONEXCHANGERATEID is null)
or (APPLICATIONEXCHANGERATEID is not null and @APPLICATIONEXCHANGERATEID is not null and APPLICATIONEXCHANGERATEID <> @APPLICATIONEXCHANGERATEID)
);
/* Update recognitions based on user selection */
exec dbo.USP_REVENUESPLIT_UPDATERECOGNITION @ID, @ORIGINALREVENUESPLITAMOUNT, @UPDATERECOGNITIONOPTION, @CHANGEAGENTID, @CHANGEDATE;
update
dbo.REVENUESPLITBUSINESSUNIT
set
REVENUESPLITBUSINESSUNIT.AMOUNT = REVENUESPLIT.BASEAMOUNT * BU.RATIO
from
dbo.REVENUESPLITBUSINESSUNIT
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUESPLIT.ID = REVENUESPLITBUSINESSUNIT.REVENUESPLITID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
inner join @BUSINESSUNITS BU on BU.FINANCIALTRANSACTIONLINEITEMID = REVENUESPLIT_EXT.ID
where
REVENUESPLIT.ID = @ID
and REVENUESPLITBUSINESSUNIT.BUSINESSUNITCODEID = BU.BUSINESSUNITCODEID
and REVENUESPLIT.DELETEDON is null
and REVENUESPLIT.TYPECODE != 1;
exec dbo.USP_REVENUECATEGORY_ADDEDIT @ID, @CATEGORYCODEID, @CHANGEAGENTID;