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