USP_REVENUEDETAIL_EDIT
Stored procedure to save a payment.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@TYPECODE | tinyint | IN | |
@AMOUNT | money | IN | |
@RECEIPTAMOUNT | money | IN | |
@SPLITS | xml | IN | |
@SOURCECODE | nvarchar(50) | IN | |
@APPEALID | uniqueidentifier | IN | |
@BENEFITS | xml | IN | |
@BENEFITSWAIVED | bit | IN | |
@MAILINGID | uniqueidentifier | IN | |
@CHANNELCODEID | uniqueidentifier | IN | |
@DONOTACKNOWLEDGE | bit | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUEDETAIL_EDIT
(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@TYPECODE tinyint,
@AMOUNT money,
@RECEIPTAMOUNT money,
@SPLITS xml,
@SOURCECODE nvarchar(50),
@APPEALID uniqueidentifier,
@BENEFITS xml,
@BENEFITSWAIVED bit,
@MAILINGID uniqueidentifier,
@CHANNELCODEID uniqueidentifier,
@DONOTACKNOWLEDGE bit,
@CHANGEDATE datetime = null
)
as
set nocount on;
/*
TODO REVENUE CHANGES
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @AMOUNT < 0
raiserror('The amount cannot be negative.', 13, 1);
/*JamesWill CR270391-031907 2007/03/19 Validate to make sure that the new amount does not overpay a commitment*/
if not @TYPECODE in (0, 5) --You can't overpay gifts or recurring gifts, so it doesn't apply here
begin
declare @COMMITMENTID uniqueidentifier;
declare @BALANCE money;
declare @OLDAMOUNT money;
select @OLDAMOUNT = AMOUNT
from dbo.REVENUE
where ID = @ID;
if @TYPECODE in (4, 8) --Pledge Payment, Matching Gift Pledge Payment
begin
select @COMMITMENTID = PLEDGEID
from dbo.INSTALLMENTPAYMENT where PAYMENTID = @ID;
set @BALANCE = dbo.UFN_PLEDGE_GETBALANCE(@COMMITMENTID);
end
else if @TYPECODE = 6 --Event registration fee
begin
select @COMMITMENTID = REGISTRANTID
from dbo.EVENTREGISTRANTPAYMENT where PAYMENTID = @ID;
set @BALANCE = dbo.UFN_EVENTREGISTRANT_GETBALANCE(@COMMITMENTID);
end
else
set @BALANCE = 0; --Unknown
set @BALANCE = @BALANCE + @OLDAMOUNT; --The original amount for this revenue no longer applies.
set @BALANCE = @BALANCE - @AMOUNT;
if @BALANCE < 0
raiserror('The amount applied towards an application cannot be greater than its balance.', 13, 1);
end
if not (@TYPECODE in (6, 4, 8))-- update splits if not Event Fee\Pledge\MG payment
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT;
if @TYPECODE = 0
begin
-- do not allow the gift amount to be adjusted less than the applied tribute amount
declare @TRIBUTEAMOUNT money;
select @TRIBUTEAMOUNT = sum(AMOUNT) from dbo.REVENUETRIBUTE where REVENUEID = @ID;
if (@TRIBUTEAMOUNT is not null) and (@AMOUNT < @TRIBUTEAMOUNT)
begin
raiserror('The gift amount cannot be less than the sum of the tribute amounts applied to this gift.', 13, 1)
end
end
declare @FIELDCHANGED bit;
declare @AMOUNTCHANGED bit;
set @FIELDCHANGED = 0;
-- check to see if amount or receipt amount have changed
if (select count(REVENUE.ID) from dbo.REVENUE where REVENUE.ID = @ID and AMOUNT = @AMOUNT and RECEIPTAMOUNT = @RECEIPTAMOUNT) = 0
set @FIELDCHANGED = 1;
set @AMOUNTCHANGED = @FIELDCHANGED;
-- check to see if designations have changed
if @FIELDCHANGED = 0
if dbo.UFN_CHECKDETAIL_SPLITSCHANGED(@ID, @SPLITS) = 1
set @FIELDCHANGED = 1;
-- if re-receipts is turned on and a field has changed, determine if the revenue needs to be re-receipted
if @FIELDCHANGED = 1
begin
exec dbo.USP_REVENUE_UPDATERERECEIPTS @ID, @CHANGEAGENTID, @CHANGEDATE;
exec dbo.USP_REVENUELETTER_SETREACKNOWLEDGEMENTS @ID, @CHANGEAGENTID, @CHANGEDATE;
end
/* Validate payment information */
if @AMOUNTCHANGED = 1
-- make sure we aren't trying to modify revenue in a locked/closed deposit/bank
exec dbo.USP_EDIT_REVENUE_VALIDATE_DEPOSIT_STATUS @ID;
/* CMC
update dbo.REVENUE_EXT
set
RECEIPTAMOUNT = @RECEIPTAMOUNT,
SOURCECODE = @SOURCECODE,
APPEALID = @APPEALID,
BENEFITSWAIVED = @BENEFITSWAIVED,
MAILINGID = @MAILINGID,
CHANNELCODEID = @CHANNELCODEID,
DONOTACKNOWLEDGE = @DONOTACKNOWLEDGE,
NEEDSRERECEIPT = @NEEDSRERECEIPT
where ID = @ID;
update dbo.FINANCIALTRANSACTION
set AMOUNT = @AMOUNT
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
*/
update dbo.REVENUE
set AMOUNT = @AMOUNT,
RECEIPTAMOUNT = @RECEIPTAMOUNT,
SOURCECODE = @SOURCECODE,
APPEALID = @APPEALID,
BENEFITSWAIVED = @BENEFITSWAIVED,
MAILINGID = @MAILINGID,
CHANNELCODEID = @CHANNELCODEID,
DONOTACKNOWLEDGE = @DONOTACKNOWLEDGE,
NEEDSRERECEIPT = @NEEDSRERECEIPT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
if not (@TYPECODE in (6, 4, 8))-- update splits if not Event Fee\Pledge\MG payment
exec dbo.USP_REVENUE_GETSPLITS_UPDATEFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;
-- update benefits
exec dbo.USP_REVENUE_GETBENEFITS_UPDATEFROMXML @ID, @BENEFITS, @CHANGEAGENTID, @CHANGEDATE;
-- Update solicitors
exec dbo.USP_REVENUE_UPDATESOLICITORS @ID, @CHANGEAGENTID, @CHANGEDATE
/*Special handling for some payment types*/
if @TYPECODE = 4 or @TYPECODE = 8 --Pledge\MG payment
exec dbo.USP_PLEDGEPAYMENT_EDIT @ID, @AMOUNT, @CHANGEAGENTID, @CHANGEDATE
if @TYPECODE = 5 --Recurring gift payment
exec dbo.USP_RECURRINGPAYMENT_EDIT @ID, @AMOUNT, @CHANGEAGENTID, @CHANGEDATE
*/
return 0;