USP_CREDIT_ADDCREDITPAYMENTS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CREDITID | uniqueidentifier | IN | |
@REFUNDMETHODS | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@ADDRESSID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_CREDIT_ADDCREDITPAYMENTS
(
@CREDITID uniqueidentifier,
@REFUNDMETHODS xml,
@CHANGEAGENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@ADDRESSID uniqueidentifier = null
)
as
begin
-- Verify that the credit card we want to refund to has actually been processed
if exists
(
select
CREDITCARDPAYMENTMETHODDETAIL.ID
from dbo.CREDITCARDPAYMENTMETHODDETAIL
inner join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
where
REVENUEPAYMENTMETHOD.REVENUEID in (
select
case when T.item.value('(@REVENUEID)[1]','uniqueidentifier') = '00000000-0000-0000-0000-000000000000'
then (select FINANCIALTRANSACTIONID from dbo.FINANCIALTRANSACTIONLINEITEM where ID = T.item.value('(@REVENUESPLITID)[1]','uniqueidentifier'))
else T.item.value('(@REVENUEID)[1]','uniqueidentifier')
end
from @REFUNDMETHODS.nodes('/REFUNDMETHODS/ITEM') T(item)
where T.item.value('(@PAYMENTTYPECODE)[1]','integer') = 2
)
and CREDITCARDPAYMENTMETHODDETAIL.TRANSACTIONID is null
)
begin
raiserror('BBERR_REFUNDCREDITCARDPAYMENT_MUSTBEPROCESSED', 16, 1);
return 1;
end;
-- Error if there are matching gifts
if exists
(
select 1
from dbo.REVENUEMATCHINGGIFT
inner join @REFUNDMETHODS.nodes('/REFUNDMETHODS/ITEM') T(item) on
T.item.value('(@REVENUEID)[1]', 'uniqueidentifier') = REVENUEMATCHINGGIFT.MGSOURCEREVENUEID
) begin
raiserror('ERR_REFUNDMETHODS_DONATIONMATCHINGGIFTS', 13, 1);
return 1;
end;
declare @CURRENTDATE datetime = getdate();
declare @CURRENTDATETIMEOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(getutcdate(), 1);
insert into dbo.CREDITPAYMENT
(
ID,
CREDITID,
APPUSERID,
CREDITPAYMENTDATEWITHTIMEOFFSET,
AMOUNT,
PAYMENTMETHODCODE,
OTHERPAYMENTMETHODCODEID,
REVENUEID,
REVENUESPLITID,
REFUNDPROCESSED,
[STATUS],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
T.item.value('(@CREDITPAYMENTID)[1]','uniqueidentifier'),
@CREDITID,
@CURRENTAPPUSERID,
@CURRENTDATETIMEOFFSET,
T.item.value('(@AMOUNTREFUNDING)[1]','money'),
T.item.value('(@PAYMENTTYPECODE)[1]','tinyint'),
case
when T.item.value('(@PAYMENTTYPECODE)[1]','tinyint') = 10
then T.item.value('(@OTHERPAYMENTMETHODCODEID)[1]','uniqueidentifier')
else
null
end,
case
when T.item.value('(@REVENUEID)[1]','uniqueidentifier') = '00000000-0000-0000-0000-000000000000'
then null
else
T.item.value('(@REVENUEID)[1]','uniqueidentifier')
end,
case
when T.item.value('(@REVENUESPLITID)[1]','uniqueidentifier') = '00000000-0000-0000-0000-000000000000'
then null
else
T.item.value('(@REVENUESPLITID)[1]','uniqueidentifier')
end,
case T.item.value('(@PAYMENTTYPECODE)[1]','tinyint')
when 2 then 0
else 1
end,
T.item.value('(@STATUS)[1]','nvarchar(255)'),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @REFUNDMETHODS.nodes('/REFUNDMETHODS/ITEM') T(item);
insert into dbo.CREDITPAYMENTCHECKPAYMENTMETHODDETAIL
(
ID,
ADDRESSID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
T.item.value('(@CREDITPAYMENTID)[1]','uniqueidentifier'),
case when @ADDRESSID = '00000000-0000-0000-0000-000000000000' then null else @ADDRESSID end,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@REFUNDMETHODS.nodes('/REFUNDMETHODS/ITEM') T(item)
where
T.item.value('(@PAYMENTTYPECODE)[1]','tinyint') = 1;
end