USP_RESERVATIONSECURITYDEPOSITPAYMENT_ADD
Adds a payment to a reservation security deposit.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@SALESORDERID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@CHECKDATE | UDT_FUZZYDATE | IN | |
@CHECKNUMBER | nvarchar(20) | IN | |
@CARDHOLDERNAME | nvarchar(255) | IN | |
@CREDITCARDNUMBER | nvarchar(4) | IN | |
@CREDITTYPECODEID | uniqueidentifier | IN | |
@AUTHORIZATIONCODE | nvarchar(20) | IN | |
@EXPIRESON | UDT_FUZZYDATE | IN | |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_RESERVATIONSECURITYDEPOSITPAYMENT_ADD
(
@ID uniqueidentifier = null output,
@SALESORDERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@AMOUNT money = 0,
@PAYMENTMETHODCODE tinyint = 2,
@CHECKDATE dbo.UDT_FUZZYDATE = '00000000',
@CHECKNUMBER nvarchar(20) = '',
@CARDHOLDERNAME nvarchar(255) = '',
@CREDITCARDNUMBER nvarchar(4) = '',
@CREDITTYPECODEID uniqueidentifier = null,
@AUTHORIZATIONCODE nvarchar(20) = '',
@EXPIRESON dbo.UDT_FUZZYDATE = '00000000',
@OTHERPAYMENTMETHODCODEID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount on;
if @ID is null
set @ID = newid()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
declare @CURRENTDATETIMEOFFSET datetimeoffset
set @CURRENTDATETIMEOFFSET = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(getutcdate(), 1)
declare @CONSTITUENTID uniqueidentifier
declare @SECURITYDEPOSITBALANCE money
declare @SALESMETHODTYPECODE tinyint = 3
declare @TRANSACTIONDATE datetime
declare @ALLOWGLDISTRIBUTIONS bit;
declare @PDACCOUNTSYSTEMID uniqueidentifier;
select
@PDACCOUNTSYSTEMID = ID,
@ALLOWGLDISTRIBUTIONS = ALLOWGLDISTRIBUTIONS
from
dbo.UFN_PDACCOUNTSYSTEM_DEFAULTORSYSTEM();
select @CONSTITUENTID = CONSTITUENTID,
@SECURITYDEPOSITBALANCE = dbo.UFN_RESERVATION_GETSECURITYDEPOSITAMOUNTDUE(@SALESORDERID)
from dbo.SALESORDER with (nolock)
where ID = @SALESORDERID;
begin try
if @CONSTITUENTID is null begin
raiserror('BBERR_CONSTITUENTREQUIRED.', 13, 1);
end
set @AMOUNT = ROUND(@AMOUNT, 2);
--validate payments
if @AMOUNT <= 0 begin
raiserror('BBERR_AMOUNTREQUIRED.', 13, 1);
end
if @TRANSACTIONDATE is null begin
set @TRANSACTIONDATE = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEFROMUTC(getutcdate())
end
declare @CHANGEDUE money;
declare @AMOUNTTENDERED money;
set @AMOUNTTENDERED = @AMOUNT;
set @CHANGEDUE = 0;
--temporarily removing time stamp when storing the payment revenue record for consistency
--reference WI 88752
set @TRANSACTIONDATE = dbo.UFN_DATE_GETEARLIESTTIME(@TRANSACTIONDATE)
--insert a new payment
insert into dbo.REVENUE (
ID,
CONSTITUENTID,
DATE,
POSTDATE,
AMOUNT,
TRANSACTIONTYPECODE,
DONOTPOST,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@ID,
@CONSTITUENTID,
@TRANSACTIONDATE,
case when @ALLOWGLDISTRIBUTIONS=1 then @TRANSACTIONDATE else null end,
@AMOUNT,
0, --Payment
case when @ALLOWGLDISTRIBUTIONS=1 then 0 else 1 end,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
)
--Add origination source
exec dbo.USP_REVENUE_ADDORIGIN @ID, @CONSTITUENTID, @CHANGEAGENTID, @CURRENTDATE;
--Add payment original amount
exec dbo.USP_PAYMENT_ADDORIGINALAMOUNT @ID, @CHANGEAGENTID, @CURRENTDATE;
--Add reference
declare @REFERENCE nvarchar(255);
select @REFERENCE = 'Payment-SecurityDeposit-' + convert(nvarchar(50),(select SALESORDER.SEQUENCEID from dbo.SALESORDER with (nolock) where SALESORDER.ID = @SALESORDERID))
exec dbo.USP_REVENUEREFERENCE_ADD @ID, @REFERENCE, @CHANGEAGENTID
-- link the payment to the sales order
insert into dbo.RESERVATIONSECURITYDEPOSITPAYMENT with (rowlock)
(ID, RESERVATIONID, PAYMENTID, AMOUNTTENDERED, AMOUNT, CHANGEDUE, PAYMENTDATEWITHTIMEOFFSET, APPUSERID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (
newid(),
@SALESORDERID,
@ID,
@AMOUNTTENDERED,
@AMOUNT,
@CHANGEDUE,
@CURRENTDATETIMEOFFSET,
@CURRENTAPPUSERID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
--add payment method details
declare @REVENUEPAYMETHODID uniqueidentifier = newid();
insert into dbo.REVENUEPAYMENTMETHOD
(ID,REVENUEID, PAYMENTMETHODCODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (
@REVENUEPAYMETHODID,
@ID,
@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,@ORIGINALPAYMENTMETHODCODE=@PAYMENTMETHODCODE;
insert into dbo.REVENUESPLIT(ID, REVENUEID, APPLICATIONCODE, TYPECODE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (newid(), @ID, 10, 13, @AMOUNT, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
--gl distributions
if @ALLOWGLDISTRIBUTIONS = 1
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE
-- update security deposit status
if dbo.UFN_RESERVATION_GETSECURITYDEPOSITAMOUNTDUE(@ID) <= 0
update dbo.RESERVATION set SECURITYDEPOSITSTATUSCODE = 1 where ID = @SALESORDERID
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0