USP_SALESORDER_ADDPAYMENT
Adds a payment for a sales order.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PAYMENTID | uniqueidentifier | INOUT | |
@SALESORDERID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@TRANSACTIONDATE | datetime | IN | |
@AMOUNT | money | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@CHECKDATE | UDT_FUZZYDATE | IN | |
@CHECKNUMBER | nvarchar(20) | IN | |
@CARDHOLDERNAME | nvarchar(100) | IN | |
@CREDITCARDNUMBER | nvarchar(8) | IN | |
@CREDITTYPECODEID | uniqueidentifier | IN | |
@AUTHORIZATIONCODE | nvarchar(20) | IN | |
@EXPIRESON | UDT_FUZZYDATE | IN | |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_SALESORDER_ADDPAYMENT
(@PAYMENTID uniqueidentifier output,
@SALESORDERID uniqueidentifier,
@CONSTITUENTID uniqueidentifier,
@TRANSACTIONDATE datetime,
@AMOUNT money,
@PAYMENTMETHODCODE tinyint,
@CHECKDATE dbo.UDT_FUZZYDATE,
@CHECKNUMBER nvarchar(20),
@CARDHOLDERNAME nvarchar(100),
@CREDITCARDNUMBER nvarchar(8),
@CREDITTYPECODEID uniqueidentifier,
@AUTHORIZATIONCODE nvarchar(20),
@EXPIRESON dbo.UDT_FUZZYDATE,
@OTHERPAYMENTMETHODCODEID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime,
@CURRENTAPPUSERID uniqueidentifier
)
as
begin
set nocount on;
declare @CHANGEDUE money;
declare @AMOUNTTENDERED money;
declare @ORDERAMOUNT money;
set @ORDERAMOUNT = dbo.UFN_SALESORDER_GETAMOUNTDUE(@SALESORDERID);
set @AMOUNTTENDERED = @AMOUNT;
set @CHANGEDUE = 0;
if @PAYMENTMETHODCODE = 0 --cash
begin
if @AMOUNT > @ORDERAMOUNT
begin
set @CHANGEDUE = @AMOUNT - @ORDERAMOUNT;
set @AMOUNT = @ORDERAMOUNT;
end
end
if @PAYMENTID is null
set @PAYMENTID = newid();
--insert a new payment
insert into dbo.REVENUE
(ID,
CONSTITUENTID,
DATE,
POSTDATE,
AMOUNT,
TRANSACTIONTYPECODE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
values (@PAYMENTID,
@CONSTITUENTID,
@TRANSACTIONDATE,
@TRANSACTIONDATE,
@AMOUNT,
0, --Payment
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE)
-- link the payment to the sales order
insert into dbo.SALESORDERPAYMENT
(ID, SALESORDERID, PAYMENTID, AMOUNTTENDERED, AMOUNT, CHANGEDUE, APPUSERID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (newid(),
@SALESORDERID,
@PAYMENTID,
@AMOUNTTENDERED,
@AMOUNT,
@CHANGEDUE,
@CURRENTAPPUSERID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE);
--add payment method details
declare @REVENUEPAYMETHODID uniqueidentifier
set @REVENUEPAYMETHODID = newid();
insert into dbo.REVENUEPAYMENTMETHOD
(ID,REVENUEID, PAYMENTMETHODCODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@REVENUEPAYMETHODID,
@PAYMENTID,
@PAYMENTMETHODCODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE);
-- update the payment information for each revenue record in the transaction
exec dbo.USP_REVENUE_UPDATEPAYMENTDETAILS @REVENUEPAYMETHODID, @PAYMENTMETHODCODE, @CHECKDATE, @CHECKNUMBER,
null, '00000000', '', @CARDHOLDERNAME, @CREDITCARDNUMBER, @CREDITTYPECODEID,
@AUTHORIZATIONCODE, @EXPIRESON, null, null, null, null, null, null, null, null, null, null, null,
@CHANGEAGENTID,@CURRENTDATE, 0, @OTHERPAYMENTMETHODCODEID;
return 0;
end