USP_RECEIVABLEPAYMENT_ADD

Adds the given receivable payment information to the system.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@CHANGEAGENTID uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@AMOUNT money IN
@PAYMENTDATE datetime IN
@POSTSTATUSCODE tinyint IN
@POSTDATE datetime IN
@PAYMENTMETHODCODE tinyint IN
@CONSTITUENTACCOUNTID uniqueidentifier IN
@CHECKDATE UDT_FUZZYDATE IN
@CHECKNUMBER nvarchar(20) IN
@REFERENCEDATE UDT_FUZZYDATE IN
@REFERENCENUMBER nvarchar(20) IN
@CARDHOLDERNAME nvarchar(255) IN
@CREDITCARDPARTIALNUMBER nvarchar(4) IN
@CREDITTYPECODEID uniqueidentifier IN
@EXPIRESON UDT_FUZZYDATE IN
@AUTHORIZATIONCODE nvarchar(20) IN
@DIRECTDEBITRESULTCODE nvarchar(10) IN
@OTHERPAYMENTMETHODCODEID uniqueidentifier IN
@RECEIVABLEPAYMENTID nvarchar(60) IN
@STUDENTID uniqueidentifier IN
@APPLICATIONS xml IN

Definition

Copy


            CREATE procedure dbo.USP_RECEIVABLEPAYMENT_ADD
            (
                @ID uniqueidentifier = null output,
                @CHANGEAGENTID uniqueidentifier,
                @CONSTITUENTID uniqueidentifier,
                @AMOUNT money = 0,
                @PAYMENTDATE datetime = null,
                @POSTSTATUSCODE tinyint = 1,
                @POSTDATE datetime = null,
                @PAYMENTMETHODCODE tinyint = 1,
                @CONSTITUENTACCOUNTID uniqueidentifier = null,
                @CHECKDATE dbo.UDT_FUZZYDATE = '00000000',
                @CHECKNUMBER nvarchar(20) = '',
                @REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
                @REFERENCENUMBER nvarchar(20) = '',
                @CARDHOLDERNAME nvarchar(255) = '',
                @CREDITCARDPARTIALNUMBER nvarchar(4) = '',
                @CREDITTYPECODEID uniqueidentifier = null,
                @EXPIRESON dbo.UDT_FUZZYDATE = '00000000',
                @AUTHORIZATIONCODE nvarchar(20) = '',
                @DIRECTDEBITRESULTCODE nvarchar(10) = '',
                @OTHERPAYMENTMETHODCODEID uniqueidentifier = null,
                @RECEIVABLEPAYMENTID nvarchar(60) = null,
                @STUDENTID uniqueidentifier = null,
                @APPLICATIONS xml = null
            )
            as
            begin
                set nocount on;

                -- Setup the basic information

                if (@CHANGEAGENTID is null)
                begin
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
                end

                declare @CURRENTDATE datetime;
                set @CURRENTDATE = GetDate();

                -- Make sure we have a student

                if (@STUDENTID is null)
                begin
                    raiserror('ERR_RECEIVABLEPAYMENT_STUDENTREQUIRED', 13, 1);
                end

                -- Make sure we have a constituent

                if (@CONSTITUENTID is null)
                begin
                    raiserror('ERR_RECEIVABLEPAYMENT_CONSTITUENTREQUIRED', 13, 1);
                end

                -- Make sure we have an ID

                if (@ID is null)
                begin
                    set @ID = newid();
                end

                -- Setup the next receivable payment ID

                if ((@RECEIVABLEPAYMENTID is null) or (len(@RECEIVABLEPAYMENTID) = 0))
                begin
                    set @RECEIVABLEPAYMENTID = dbo.UFN_FINANCIALTRANSACTION_GETNEXTFINANCIALTRANSACTIONID(105);
                end

                -- Insert the financial transaction

                exec dbo.USP_FINANCIALTRANSACTION_ADD @ID=@ID, @CHANGEAGENTID=@CHANGEAGENTID, @CONSTITUENTID=@STUDENTID, @TYPECODE=105, @AMOUNT=@AMOUNT, @DATE=@PAYMENTDATE, @POSTDATE=@POSTDATE, @POSTSTATUSCODE=@POSTSTATUSCODE, @USERDEFINEDID=@RECEIVABLEPAYMENTID;

                -- Insert into the receivable payment

                insert into dbo.RECEIVABLEPAYMENT
                    (ID, PAYMENTMETHODCODE, REFERENCEDATE, REFERENCENUMBER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, CONSTITUENTID)
                values
                    (@ID, @PAYMENTMETHODCODE, @REFERENCEDATE, @REFERENCENUMBER, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @CONSTITUENTID);

                -- Based on the payment method save to a different field

                if (@PAYMENTMETHODCODE = 1) -- Check

                begin
                    -- Insert the extra check information

                    insert into dbo.RECEIVABLEPAYMENTCHECK
                        (ID, CHECKNUMBER, CHECKDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values
                        (@ID, @CHECKNUMBER, @CHECKDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
                end
                else if (@PAYMENTMETHODCODE = 2) -- Credit card

                begin
                    -- Insert the extra credit card information

                    insert into dbo.RECEIVABLEPAYMENTCREDITCARD
                        (ID, CARDHOLDERNAME, CREDITTYPECODEID, CREDITCARDPARTIALNUMBER, EXPIRESON, AUTHORIZATIONCODE, TRANSACTIONID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values
                        (@ID, @CARDHOLDERNAME, @CREDITTYPECODEID, @CREDITCARDPARTIALNUMBER, @EXPIRESON, @AUTHORIZATIONCODE, null, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);                    
                end
                else if (@PAYMENTMETHODCODE = 3) -- Direct debit

                begin
                    -- Insert the extra direct debit information

                    insert into dbo.RECEIVABLEPAYMENTDIRECTDEBIT
                        (ID, DIRECTDEBITRESULTCODE, CONSTITUENTACCOUNTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values
                        (@ID, @DIRECTDEBITRESULTCODE, @CONSTITUENTACCOUNTID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);                    
                end
                else if (@PAYMENTMETHODCODE = 10) -- Other

                begin
                    -- Insert the extra direct debit information

                    insert into dbo.RECEIVABLEPAYMENTOTHERMETHOD
                        (ID, OTHERPAYMENTMETHODCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values
                        (@ID, @OTHERPAYMENTMETHODCODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);                    
                end

                declare @RECEIVABLEPAYMENTLINEITEMID uniqueidentifier;
                select top 1 @RECEIVABLEPAYMENTLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
                from FINANCIALTRANSACTION
                    inner join FINANCIALTRANSACTIONLINEITEM
                        on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
                where (FINANCIALTRANSACTION.ID = @ID) and
                        (FINANCIALTRANSACTIONLINEITEM.DELETEDON is null) and
                        (FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0);

                set @APPLICATIONS = 
                    (select ID uniqueidentifier,
                            @RECEIVABLEPAYMENTLINEITEMID as SOURCELINEITEMID,
                            TARGETLINEITEMID,
                            AMOUNT,
                            POSTDATE,
                            POSTSTATUSCODE
                    from dbo.UFN_RECEIVABLEPAYMENTCREDITAPPLICATIONS_FROMITEMLISTXML(@APPLICATIONS)
                    for xml raw('ITEM'),type,elements,root('APPLICATIONS'),BINARY BASE64);

                exec dbo.USP_FINANCIALTRANSACTION_LINEITEMAPPLICATIONS_EDIT @RECEIVABLEPAYMENTLINEITEMID, null, @CHANGEAGENTID, @APPLICATIONS

            end