USP_DATAFORMTEMPLATE_ADD_MGPLEDGE
The save procedure used by the add dataform template "Matching Gift Claim Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@ORIGINALGIFTID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@MATCHINGORGANIZATIONID | uniqueidentifier | IN | Matching organization |
@DATE | datetime | IN | Date |
@AMOUNT | money | IN | Amount |
@SPLITS | xml | IN | Designations |
@POSTSTATUSCODE | tinyint | IN | Post status |
@POSTDATE | datetime | IN | Post date |
@MATCHINGGIFTCONDITIONID | uniqueidentifier | IN | Relationship type |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_MGPLEDGE
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier,
@ORIGINALGIFTID uniqueidentifier,
@MATCHINGORGANIZATIONID uniqueidentifier,
@DATE datetime,
@AMOUNT money = 0,
@SPLITS xml,
@POSTSTATUSCODE tinyint = 2,
@POSTDATE datetime = null,
@MATCHINGGIFTCONDITIONID uniqueidentifier = null
)
as
set nocount on;
declare @CURRENTDATE datetime;
declare @SOURCECONSTITUENTID uniqueidentifier;
declare @STARTDATE datetime;
declare @FREQUENCYCODE tinyint;
declare @NUMBEROFINSTALLMENTS int;
declare @INSTALLMENTSEQUENCE int;
set @STARTDATE = @DATE;
set @FREQUENCYCODE = 5; --Single Installment
set @NUMBEROFINSTALLMENTS = 1;
set @INSTALLMENTSEQUENCE = 1;
if @ID is null
set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
declare @SUM money;
declare @COUNT int;
begin try
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT, 3;
select
@COUNT = count(REVENUE.ID)
from dbo.REVENUE
inner join dbo.REVENUEMATCHINGGIFT RMG on REVENUE.ID = RMG.ID
where REVENUE.CONSTITUENTID = @MATCHINGORGANIZATIONID
and RMG.MGSOURCEREVENUEID = @ORIGINALGIFTID;
if @COUNT > 0
raiserror('An organization cannot match a single gift more than once.', 13, 1);
declare @paymentid uniqueidentifier;
set @paymentid=NewID();
declare @MAILINGID uniqueidentifier;
declare @APPEALID uniqueidentifier;
declare @SOURCECODE nvarchar(50);
select @MAILINGID = MAILINGID, @APPEALID = APPEALID, @SOURCECODE = SOURCECODE
from dbo.REVENUE
where ID = @ORIGINALGIFTID;
insert into dbo.REVENUE (ID, CONSTITUENTID, DATE, DONOTPOST, POSTDATE, DONOTRECEIPT, AMOUNT, TRANSACTIONTYPECODE, RECEIPTAMOUNT, MAILINGID, APPEALID, SOURCECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @MATCHINGORGANIZATIONID, @DATE, 1, null, 1, @AMOUNT, 3, 0, @MAILINGID, @APPEALID, @SOURCECODE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE ,@CURRENTDATE);
--Add origination source
exec dbo.USP_REVENUE_ADDORIGIN @ID, @MATCHINGORGANIZATIONID, @CHANGEAGENTID, @CURRENTDATE;
insert into dbo.REVENUEPAYMENTMETHOD (REVENUEID, AMOUNT, PAYMENTMETHODCODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @AMOUNT, 9, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE ,@CURRENTDATE);
insert into dbo.REVENUEMATCHINGGIFT (ID, MATCHINGGIFTCONDITIONID, MGSOURCEREVENUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @MATCHINGGIFTCONDITIONID, @ORIGINALGIFTID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
insert into dbo.REVENUESCHEDULE (ID, STARTDATE, FREQUENCYCODE, NUMBEROFINSTALLMENTS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @STARTDATE, @FREQUENCYCODE, @NUMBEROFINSTALLMENTS, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
insert into dbo.INSTALLMENT (ID, REVENUEID, AMOUNT, DATE, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (newid(), @ID, @AMOUNT, @DATE, @INSTALLMENTSEQUENCE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
exec dbo.USP_REVENUE_GETSPLITS_ADDFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_PLEDGE_GENERATEINSTALLMENTSPLITS @ID, @CHANGEAGENTID, @CURRENTDATE;
if dbo.UFN_PLEDGE_INSTALLMENTSPLITSBALANCE(@ID) = 0
raiserror('INSTALLMENTSPLITSBALANCE', 13, 10);
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;