USP_DATALIST_CREDITPAYMENT
Returns a list of credits.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SALESORDERID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CREDITPAYMENT(@SALESORDERID uniqueidentifier)
as
set nocount on;
if exists (select * from dbo.RESERVATION where ID = @SALESORDERID) begin -- Group Sales
select
FT.ID,
'Refunded for $' + convert(nvarchar(100), FT.TRANSACTIONAMOUNT) as DESCRIPTION,
dbo.UFN_CREDIT_ISDEPOSITED(FT.ID) as ISDEPOSITED
from
dbo.FINANCIALTRANSACTION as FT
inner join
dbo.CREDIT_EXT on CREDIT_EXT.ID = FT.ID
where
@SALESORDERID = CREDIT_EXT.SALESORDERID
and exists (
select *
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT on CREDITITEM_EXT.ID = LI.ID
where LI.FINANCIALTRANSACTIONID = FT.ID
and CREDITITEM_EXT.TYPECODE = 255 -- Unearned revenue
)
order by
FT.DATE;
end
else begin
declare @CREDITITEMSCOUNT table (
CREDITID uniqueidentifier,
TICKETCOMBINATIONID uniqueidentifier,
PRICETYPECODEID uniqueidentifier,
QUANTITY int
)
insert into @CREDITITEMSCOUNT (CREDITID, TICKETCOMBINATIONID, PRICETYPECODEID, QUANTITY)
select
CREDITINFO.ID,
TICKETCOMBINATIONID,
SALESORDERITEMTICKET.PRICETYPECODEID,
case
when TICKETCOMBINATIONID is null then sum(CREDITINFO.QUANTITY)
else sum(CREDITINFO.QUANTITY) / count(SALESORDERITEMTICKETCOMBINATION.PROGRAMGROUPID)
end as QUANTITY
from (
select
FT.ID,
EXT.SALESORDERITEMID,
LI.QUANTITY
from
dbo.FINANCIALTRANSACTION as FT
inner join
dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FT.ID
inner join
dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join
dbo.SALESORDERITEM on SALESORDERITEM.ID = EXT.SALESORDERITEMID
where
SALESORDERITEM.SALESORDERID = @SALESORDERID
group by EXT.SALESORDERITEMID, FT.ID, LI.QUANTITY
) as CREDITINFO
left join dbo.SALESORDERITEMTICKET on CREDITINFO.SALESORDERITEMID = SALESORDERITEMTICKET.ID
left join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
left join (dbo.SALESORDERITEM as ITEMLEVELFEE inner join dbo.SALESORDERITEMFEE
on ITEMLEVELFEE.ID = SALESORDERITEMFEE.SALESORDERITEMID) on SALESORDERITEMFEE.ID = CREDITINFO.SALESORDERITEMID
where
ITEMLEVELFEE.ID is null
group by
CREDITINFO.ID, TICKETCOMBINATIONID, SALESORDERITEMTICKET.PRICETYPECODEID
select
FT.ID,
case sum(ITEMCOUNT.QUANTITY)
when 1 then
'Refunded 1 item for $' + convert(nvarchar(100), FT.TRANSACTIONAMOUNT)
else
'Refunded ' + convert(nvarchar(100), sum(coalesce(ITEMCOUNT.QUANTITY, 0)))
+ ' items for $' + convert(nvarchar(100), FT.TRANSACTIONAMOUNT)
end as DESCRIPTION,
dbo.UFN_CREDIT_ISDEPOSITED(FT.ID) as ISDEPOSITED
from
dbo.FINANCIALTRANSACTION as FT
inner join
@CREDITITEMSCOUNT as ITEMCOUNT on ITEMCOUNT.CREDITID = FT.ID
group by FT.ID, FT.TRANSACTIONAMOUNT, FT.DATE
order by FT.DATE
end
return 0;