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;