USP_REPORT_DEFAULTREFUNDITEMIZEDRECEIPT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CREDITID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_REPORT_DEFAULTREFUNDITEMIZEDRECEIPT
(
@CREDITID uniqueidentifier
)
as
set nocount on;
set transaction isolation level read uncommitted;
--The following are used for ORDERITEMTYPE and SUBORDERITEMTYPE
-- 0 - Ticket
-- 1 - Combination
-- 2 - Event Registration
-- 3 - Membership
-- 4 - Merchandise
-- 5 - Donation
-- 6 - Discounts
-- 7 - Fee
-- 8 - Tax
-- 9 - Security Deposit
-- 10 - Group Sales Refund (unearned revenue)
declare @CURRENTDATE date = getdate();
-- Tickets (not including combos)
select
0 ORDERITEMTYPE,
0 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
isnull([EVENT].ID, PROGRAM.ID) as ITEMCATEGORYID,
case
when [EVENT].ID is null then PROGRAM.NAME
else [EVENT].NAME + ' ' + cast([EVENT].STARTDATETIME as nvarchar)
end ITEMCATEGORYDESCRIPTION,
EXT.SALESORDERITEMIZEDITEMID ITEMID,
case
when cast(LI.QUANTITY as integer) = 1 then PRICETYPECODE.[DESCRIPTION]
else cast(cast(LI.QUANTITY as integer) as nvarchar) + ' ' + PRICETYPECODE.[DESCRIPTION]
end SUBORDERITEMDESCRIPTION,
(LI.QUANTITY * LI.UNITVALUE) ORDERITEMTOTAL,
isnull([EVENT].STARTDATETIME, @CURRENTDATE) as ORDERITEMSORTFIELD1,
isnull([EVENT].NAME, PROGRAM.NAME) as ORDERITEMSORTFIELD2,
PRICETYPECODE.[DESCRIPTION] SUBORDERITEMSORTFIELD1,
'' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKET.ID = EXT.SALESORDERITEMID
inner join dbo.PRICETYPECODE on PRICETYPECODE.ID = SALESORDERITEMTICKET.PRICETYPECODEID
inner join dbo.PROGRAM on PROGRAM.ID = SALESORDERITEMTICKET.PROGRAMID
left join dbo.[EVENT] on [EVENT].ID = SALESORDERITEMTICKET.EVENTID
left join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKETCOMBINATION.ID = SALESORDERITEMTICKET.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID is null
union all
-- Ticket discounts (not including combos)
select
0 ORDERITEMTYPE,
5 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
--when discounts are itemized this will have to be DISCOUNT.ID
newid() ITEMCATEGORYID,
case
when [EVENT].ID is null then PROGRAM.NAME
else [EVENT].NAME + ' ' + cast([EVENT].STARTDATETIME as nvarchar)
end as ITEMCATEGORYDESCRIPTION,
EXT.SALESORDERITEMIZEDITEMID ITEMID,
--when discounts are itemized this will have to be DISCOUNT.NAME
' Discounts' SUBORDERITEMDESCRIPTION,
-EXT.DISCOUNTS ORDERITEMTOTAL,
isnull([EVENT].STARTDATETIME, @CURRENTDATE) as ORDERITEMSORTFIELD1,
isnull([EVENT].NAME, PROGRAM.NAME) as ORDERITEMSORTFIELD2,
PRICETYPECODE.[DESCRIPTION] SUBORDERITEMSORTFIELD1,
--when discounts are itemized this will have to be DISCOUNT.NAME
'Discounts' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKET.ID = EXT.SALESORDERITEMID
inner join dbo.PRICETYPECODE on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
inner join dbo.PROGRAM on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
left join dbo.[EVENT] on SALESORDERITEMTICKET.EVENTID = [EVENT].ID
left join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID is null
and EXT.DISCOUNTS > 0
union all
-- Ticket fees (old refund style - fees are just a money field)
-- Doesn't include fees on combo tickets.
select
0 ORDERITEMTYPE,
6 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
--when fees are itemized this will have to be the FEE.ID
newid() ITEMCATEGORYID,
case
when [EVENT].ID is null then PROGRAM.NAME
else [EVENT].NAME + ' ' + cast([EVENT].STARTDATETIME as nvarchar)
end as ITEMCATEGORYDESCRIPTION,
null ITEMID,
--when fees are itemized this will have to be the FEE.NAME
' Fees' SUBORDERITEMDESCRIPTION,
EXT.FEES ORDERITEMTOTAL,
isnull([EVENT].STARTDATETIME, @CURRENTDATE) as ORDERITEMSORTFIELD1,
isnull([EVENT].NAME, PROGRAM.NAME) as ORDERITEMSORTFIELD2,
PRICETYPECODE.[DESCRIPTION] SUBORDERITEMSORTFIELD1,
--when fees are itemized this will have to be the FEE.NAME
'Fees' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKET.ID = EXT.SALESORDERITEMID
inner join dbo.PRICETYPECODE on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
inner join dbo.PROGRAM on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
left join dbo.[EVENT] on SALESORDERITEMTICKET.EVENTID = [EVENT].ID
left join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID is null
and EXT.FEES > 0
union all
-- Ticket fees (new refund style - item-level fees are their own line item)
-- Itemized fee refunds have non-null SALESORDERITEMIZEDITEMID and apply to tickets.
-- Doesn't include fees on combo tickets.
select
0 ORDERITEMTYPE,
6 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
SALESORDERITEMFEE.FEEID ITEMCATEGORYID,
case
when [EVENT].ID is null then PROGRAM.NAME
else [EVENT].NAME + ' ' + cast([EVENT].STARTDATETIME as nvarchar)
end as ITEMCATEGORYDESCRIPTION,
SALESORDERITEMTICKETFEE.TICKETID ITEMID, -- Group fees with the tickets they apply to.
case when exists (
select 1
from dbo.FINANCIALTRANSACTIONLINEITEM REFUNDEDTICKET
inner join dbo.CREDITITEM_EXT REFUNDEDTICKET_EXT on REFUNDEDTICKET_EXT.ID = REFUNDEDTICKET.ID
where REFUNDEDTICKET_EXT.SALESORDERITEMIZEDITEMID = SALESORDERITEMTICKETFEE.TICKETID
and REFUNDEDTICKET.FINANCIALTRANSACTIONID = @CREDITID
) then ' ' else '' end + FEE.NAME SUBORDERITEMDESCRIPTION,
LI.BASEAMOUNT ORDERITEMTOTAL,
isnull([EVENT].STARTDATETIME, @CURRENTDATE) as ORDERITEMSORTFIELD1,
isnull([EVENT].NAME, PROGRAM.NAME) as ORDERITEMSORTFIELD2,
PRICETYPECODE.[DESCRIPTION] SUBORDERITEMSORTFIELD1,
FEE.NAME SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMFEE on SALESORDERITEMFEE.ID = EXT.SALESORDERITEMID
inner join dbo.SALESORDERITEMTICKETFEE on SALESORDERITEMTICKETFEE.ID = EXT.SALESORDERITEMIZEDITEMID
inner join dbo.FEE on FEE.ID = SALESORDERITEMFEE.FEEID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKET.ID = SALESORDERITEMFEE.SALESORDERITEMID
inner join dbo.PRICETYPECODE on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
inner join dbo.PROGRAM on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
left join dbo.[EVENT] on SALESORDERITEMTICKET.EVENTID = [EVENT].ID
left join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKETCOMBINATION.ID = SALESORDERITEMTICKET.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID is null
and EXT.TYPECODE = 3
and EXT.SALESORDERITEMIZEDITEMID is not null
union all
-- Combination tickets
select
1 ORDERITEMTYPE,
1 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
isnull([EVENT].ID, PROGRAM.ID) ITEMCATEGORYID,
[COMBINATION].[NAME] ITEMCATEGORYDESCRIPTION,
EXT.SALESORDERITEMIZEDITEMID ITEMID,
coalesce
(
[EVENT].[NAME] + ' (' + convert(nvarchar(10), [EVENT].[STARTDATE], 101) + ' - ' + dbo.UFN_HOURMINUTE_DISPLAYTIME([EVENT].[STARTTIME]) + ')'
, PROGRAM.NAME
) SUBORDERITEMDESCRIPTION,
null ORDERITEMTOTAL,
0 ORDERITEMSORTFIELD1,
isnull([EVENT].NAME, PROGRAM.NAME) as ORDERITEMSORTFIELD2,
isnull([EVENT].NAME, PROGRAM.NAME) as SUBORDERITEMSORTFIELD1,
isnull([EVENT].NAME, PROGRAM.NAME) as SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKET.ID = EXT.SALESORDERITEMID
inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
inner join dbo.COMBINATION on SALESORDERITEMTICKETCOMBINATION.COMBINATIONID = COMBINATION.ID
inner join dbo.COMBINATIONPRICETYPE on COMBINATIONPRICETYPE.PRICETYPECODEID = SALESORDERITEMTICKET.PRICETYPECODEID and COMBINATION.ID = COMBINATIONPRICETYPE.COMBINATIONID
inner join dbo.PROGRAM on PROGRAM.ID = SALESORDERITEMTICKET.PROGRAMID
left join dbo.[EVENT] on [EVENT].ID = SALESORDERITEMTICKET.EVENTID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and SALESORDERITEMTICKET.PRICETYPECODEID in (
select COMBINATIONPRICETYPE.PRICETYPECODEID
from dbo.COMBINATIONPRICETYPE
inner join dbo.SALESORDERITEMTICKETCOMBINATION SOITC on COMBINATIONPRICETYPE.COMBINATIONID = SOITC.COMBINATIONID
inner join dbo.SALESORDERITEMTICKET on COMBINATIONPRICETYPE.PRICETYPECODEID = SALESORDERITEMTICKET.PRICETYPECODEID
where
SOITC.ID = SALESORDERITEMTICKET.ID and
SOITC.TICKETCOMBINATIONID = SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID
)
union all
-- Combination tickets
select
1 ORDERITEMTYPE,
2 SUBORDERITEMTYPE,
SALESORDERITEM.ID ORDERITEMID,
PRICETYPECODE.ID ITEMCATEGORYID,
COMBINATION.NAME ITEMCATEGORYDESCRIPTION,
EXT.SALESORDERITEMIZEDITEMID ITEMID,
case
when cast(LI.QUANTITY as integer) = 1 then PRICETYPECODE.[DESCRIPTION]
else cast(cast(LI.QUANTITY as integer) as nvarchar) + ' ' + PRICETYPECODE.[DESCRIPTION]
end SUBORDERITEMDESCRIPTION,
LI.QUANTITY * dbo.UFN_SALESORDER_GETTICKETCOMBINATIONPRICE(SALESORDERITEM.ID) ORDERITEMTOTAL,
1 ORDERITEMSORTFIELD1,
'1' ORDERITEMSORTFIELD2,
PRICETYPECODE.[DESCRIPTION] SUBORDERITEMSORTFIELD1,
isnull([EVENT].NAME, PROGRAM.NAME) as SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEM on SALESORDERITEM.ID = EXT.SALESORDERITEMID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKET.ID = EXT.SALESORDERITEMID
inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
inner join dbo.COMBINATION on SALESORDERITEMTICKETCOMBINATION.COMBINATIONID = COMBINATION.ID
inner join dbo.COMBINATIONPRICETYPE on COMBINATIONPRICETYPE.PRICETYPECODEID = SALESORDERITEMTICKET.PRICETYPECODEID and COMBINATION.ID = COMBINATIONPRICETYPE.COMBINATIONID
inner join dbo.PRICETYPECODE on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
inner join dbo.PROGRAM on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
left join dbo.[EVENT] on SALESORDERITEMTICKET.EVENTID = [EVENT].ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and SALESORDERITEM.QUANTITY > 0
and SALESORDERITEMTICKETCOMBINATION.PROGRAMGROUPID in (
select top 1 ID
from dbo.PROGRAMGROUP
where PROGRAMGROUP.COMBINATIONID = SALESORDERITEMTICKETCOMBINATION.COMBINATIONID
)
union all
-- Combo item fees (old-style refund - fees are a money field)
select
1 ORDERITEMTYPE,
2 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
--when fees are itemized this will have to be the FEE.ID
newid() ITEMCATEGORYID,
COMBINATION.NAME ITEMCATEGORYDESCRIPTION,
null ITEMID,
--when fees are itemized this will have to be the FEE.NAME
' Fees' SUBORDERITEMDESCRIPTION,
EXT.FEES ORDERITEMTOTAL,
1 ORDERITEMSORTFIELD1,
'1' ORDERITEMSORTFIELD2,
PRICETYPECODE.[DESCRIPTION] SUBORDERITEMSORTFIELD1,
--when fees are itemized this will have to be the FEE.NAME
'Fees' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKET.ID = EXT.SALESORDERITEMID
inner join dbo.PRICETYPECODE on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
inner join dbo.COMBINATION on SALESORDERITEMTICKETCOMBINATION.COMBINATIONID = COMBINATION.ID
inner join dbo.PROGRAM on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
left join dbo.[EVENT] on SALESORDERITEMTICKET.EVENTID = [EVENT].ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and EXT.FEES > 0
union all
-- Combo item fees (new-style refund - fees are their own line item)
select
1 ORDERITEMTYPE,
2 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
FEE.ID ITEMCATEGORYID,
COMBINATION.NAME ITEMCATEGORYDESCRIPTION,
null ITEMID,
--when fees are itemized this will have to be the FEE.NAME
' ' + FEE.NAME SUBORDERITEMDESCRIPTION,
LI.BASEAMOUNT ORDERITEMTOTAL,
1 ORDERITEMSORTFIELD1,
'1' ORDERITEMSORTFIELD2,
PRICETYPECODE.[DESCRIPTION] SUBORDERITEMSORTFIELD1,
--when fees are itemized this will have to be the FEE.NAME
FEE.NAME SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMFEE on SALESORDERITEMFEE.ID = EXT.SALESORDERITEMID
inner join dbo.FEE on FEE.ID = SALESORDERITEMFEE.FEEID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKET.ID = EXT.SALESORDERITEMID
inner join dbo.PRICETYPECODE on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
inner join dbo.COMBINATION on SALESORDERITEMTICKETCOMBINATION.COMBINATIONID = COMBINATION.ID
inner join dbo.PROGRAM on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
left join dbo.[EVENT] on SALESORDERITEMTICKET.EVENTID = [EVENT].ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and EXT.TYPECODE = 3
and EXT.SALESORDERITEMIZEDITEMID is not null
union all
-- Event registrations
select
2 ORDERITEMTYPE,
2 SUBORDERITEMTYPE,
LI.ID as ORDERITEMID,
REGISTRANT.ID ITEMCATEGORYID,
[EVENT].NAME + ' ' +
case
when [EVENT].STARTTIME = '' then
replace(convert(nvarchar, [EVENT].STARTDATE, 107), ',','')
else
cast([EVENT].STARTDATETIME as nvarchar)
end as ITEMCATEGORYDESCRIPTION,
null ITEMID,
'' SUBORDERITEMDESCRIPTION,
LI.UNITVALUE as ORDERITEMTOTAL,
[EVENT].STARTDATETIME ORDERITEMSORTFIELD1,
[EVENT].NAME ORDERITEMSORTFIELD2,
'' SUBORDERITEMSORTFIELD1,
'' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.CREDITITEMEVENTREGISTRATION on CREDITITEMEVENTREGISTRATION.ID = LI.ID
inner join dbo.REGISTRANT on CREDITITEMEVENTREGISTRATION.REGISTRANTID = REGISTRANT.ID
inner join dbo.[EVENT] on REGISTRANT.EVENTID = [EVENT].ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
union all
-- Memberships
select
3 ORDERITEMTYPE,
3 SUBORDERITEMTYPE,
LI.ID as ORDERITEMID,
MEMBERSHIPPROGRAM.ID ITEMCATEGORYID,
MEMBERSHIPPROGRAM.NAME ITEMCATEGORYDESCRIPTION,
CREDITITEMMEMBERSHIP.MEMBERSHIPID ITEMID,
case
when cast(LI.QUANTITY as integer) = 1 then MEMBERSHIPLEVEL.NAME
else cast(cast(LI.QUANTITY as integer) as nvarchar) + ' ' + MEMBERSHIPLEVEL.NAME
end SUBORDERITEMDESCRIPTION,
LI.UNITVALUE ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
MEMBERSHIPPROGRAM.NAME ORDERITEMSORTFIELD2,
cast(LI.ID as nvarchar(36)) as SUBORDERITEMSORTFIELD1,
MEMBERSHIPLEVEL.NAME SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.CREDITITEMMEMBERSHIP on CREDITITEMMEMBERSHIP.ID = LI.ID
inner join dbo.MEMBERSHIPPROGRAM on CREDITITEMMEMBERSHIP.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
inner join dbo.MEMBERSHIPLEVEL on CREDITITEMMEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
union all
-- Applied tickets to refunded membership
select
3 ORDERITEMTYPE,
5 SUBORDERITEMTYPE,
LI.ID as ORDERITEMID,
SALESORDERITEMMEMBERSHIPITEMPROMOTION.ID ITEMCATEGORYID,
MEMBERSHIPPROGRAM.NAME ITEMCATEGORYDESCRIPTION,
SALESORDERITEMMEMBERSHIP.MEMBERSHIPID ITEMID,
' ' + SALESORDERITEMMEMBERSHIPITEMPROMOTION.PROMOTIONNAME SUBORDERITEMDESCRIPTION,
-SALESORDERITEMMEMBERSHIPITEMPROMOTION.AMOUNT ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
MEMBERSHIPPROGRAM.NAME ORDERITEMSORTFIELD2,
cast(LI.ID as nvarchar(36)) SUBORDERITEMSORTFIELD1,
SALESORDERITEMMEMBERSHIPITEMPROMOTION.PROMOTIONNAME SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMMEMBERSHIP on SALESORDERITEMMEMBERSHIP.ID = EXT.SALESORDERITEMID
inner join dbo.MEMBERSHIPPROGRAM on SALESORDERITEMMEMBERSHIP.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
inner join dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTION on SALESORDERITEMMEMBERSHIPITEMPROMOTION.SALESORDERITEMID = EXT.SALESORDERITEMID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
union all
-- Merchandise
select distinct
4 ORDERITEMTYPE,
4 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
MPI.ID ITEMCATEGORYID,
MPI.BARCODE + ' ' + MPI.ITEMDETAILS ITEMCATEGORYDESCRIPTION,
EXT.SALESORDERITEMIZEDITEMID ITEMID,
case
when cast(LI.QUANTITY as integer) = 1 then MPI.ITEMDETAILS
else cast(cast(LI.QUANTITY as integer) as nvarchar) + ' ' + MPI.ITEMDETAILS
end SUBORDERITEMDESCRIPTION,
(LI.QUANTITY * LI.UNITVALUE) ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
'' ORDERITEMSORTFIELD2,
MPI.ITEMDETAILS SUBORDERITEMSORTFIELD1,
'' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMMERCHANDISE SOIM on SOIM.ID = EXT.SALESORDERITEMID
inner join dbo.MERCHANDISEPRODUCTINSTANCE MPI on SOIM.MERCHANDISEPRODUCTINSTANCEID = MPI.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
union all
-- Merchandise discounts
select
4 ORDERITEMTYPE,
5 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
--when discounts are itemized this will have to be DISCOUNT.ID
newid() ITEMCATEGORYID,
MPI.BARCODE + ' ' + MPI.ITEMDETAILS ITEMCATEGORYDESCRIPTION,
EXT.SALESORDERITEMIZEDITEMID ITEMID,
--when discounts are itemized this will have to be DISCOUNT.NAME
' Discounts' SUBORDERITEMDESCRIPTION,
-EXT.DISCOUNTS ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
'' ORDERITEMSORTFIELD2,
MPI.ITEMDETAILS SUBORDERITEMSORTFIELD1,
--when discounts are itemized this will have to be DISCOUNT.NAME
'Discounts' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMMERCHANDISE on SALESORDERITEMMERCHANDISE.ID = EXT.SALESORDERITEMID
inner join dbo.MERCHANDISEPRODUCTINSTANCE MPI on SALESORDERITEMMERCHANDISE.MERCHANDISEPRODUCTINSTANCEID = MPI.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and EXT.DISCOUNTS > 0
union all
-- Donations
select distinct
5 ORDERITEMTYPE,
5 SUBORDERITEMTYPE,
LI.ID ORDERITEMID,
SOID.ID ITEMCATEGORYID,
SOI.[DESCRIPTION] ITEMCATEGORYDESCRIPTION,
null ITEMID,
cast(LI.UNITVALUE as nvarchar) as SUBORDERITEMDESCRIPTION,
LI.UNITVALUE as ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
'' ORDERITEMSORTFIELD2,
SOID.DESIGNATIONNAME SUBORDERITEMSORTFIELD1,
'' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEM SOI on SOI.ID = EXT.SALESORDERITEMID
inner join dbo.SALESORDERITEMDONATION SOID on SOID.ID = SOI.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
union all
-- Order discounts
select
6 ORDERITEMTYPE,
6 SUBORDERITEMTYPE,
SALESORDERITEM.ID ORDERITEMID,
isnull(DISCOUNT.ID, SALESORDERADJUSTABLEDISCOUNT.ID) ITEMCATEGORYID,
'Discounts' ITEMCATEGORYDESCRIPTION,
null ITEMID,
SALESORDERITEMORDERDISCOUNT.DISCOUNTNAME SUBORDERITEMDESCRIPTION,
-SALESORDERITEM.TOTAL ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
'' ORDERITEMSORTFIELD2,
SALESORDERITEMORDERDISCOUNT.DISCOUNTNAME SUBORDERITEMSORTFIELD1,
'' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEM on SALESORDERITEM.ID = EXT.SALESORDERITEMID
inner join dbo.SALESORDERITEMORDERDISCOUNT on SALESORDERITEM.ID = SALESORDERITEMORDERDISCOUNT.ID
left join dbo.DISCOUNT on SALESORDERITEMORDERDISCOUNT.ISADJUSTABLEDISCOUNT = 0 and SALESORDERITEMORDERDISCOUNT.DISCOUNTID = DISCOUNT.ID
left join dbo.SALESORDERADJUSTABLEDISCOUNT on SALESORDERITEMORDERDISCOUNT.ISADJUSTABLEDISCOUNT = 1 and SALESORDERITEM.SALESORDERID = SALESORDERADJUSTABLEDISCOUNT.SALESORDERID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
and EXT.TYPECODE = 5
union all
-- Order fees
select
7 ORDERITEMTYPE,
7 SUBORDERITEMTYPE,
SALESORDERITEM.ID ORDERITEMID,
FEE.ID ITEMCATEGORYID,
'Fees' ITEMCATEGORYDESCRIPTION,
null ITEMID,
FEE.NAME SUBORDERITEMDESCRIPTION,
LI.BASEAMOUNT ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
'' ORDERITEMSORTFIELD2,
FEE.NAME SUBORDERITEMSORTFIELD1,
'' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEM on SALESORDERITEM.ID = EXT.SALESORDERITEMID
inner join dbo.SALESORDERITEMFEE on SALESORDERITEM.ID = SALESORDERITEMFEE.ID
inner join dbo.FEE on SALESORDERITEMFEE.FEEID = FEE.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID and
SALESORDERITEMFEE.SALESORDERITEMID is null
union all
-- Taxes
select distinct
8 ORDERITEMTYPE,
8 SUBORDERITEMTYPE,
EXT.SALESORDERITEMID as ORDERITEMID,
TAX.ID ITEMCATEGORYID,
'Taxes' ITEMCATEGORYDESCRIPTION,
EXT.SALESORDERITEMIZEDITEMID ITEMID,
TAX.NAME SUBORDERITEMDESCRIPTION,
(LI.QUANTITY * LI.UNITVALUE) as ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
'' ORDERITEMSORTFIELD2,
TAX.NAME SUBORDERITEMSORTFIELD1,
'' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.SALESORDERITEMTAX on SALESORDERITEMTAX.TAXITEMID = EXT.SALESORDERITEMID
inner join dbo.TAX on SALESORDERITEMTAX.TAXID = TAX.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID
union all
-- Security deposit
select distinct
9 ORDERITEMTYPE,
9 SUBORDERITEMTYPE,
@CREDITID as ORDERITEMID,
LI.ID as ITEMCATEGORYID,
'Security deposit' ITEMCATEGORYDESCRIPTION,
null ITEMID,
'Security deposit' SUBORDERITEMDESCRIPTION,
LI.UNITVALUE as ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
'' ORDERITEMSORTFIELD2,
'' SUBORDERITEMSORTFIELD1,
'' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
where
LI.FINANCIALTRANSACTIONID = @CREDITID and
EXT.TYPECODE = 12 -- Security Deposit
union all
-- Unearned revenue
select distinct
10 ORDERITEMTYPE,
10 SUBORDERITEMTYPE,
@CREDITID as ORDERITEMID,
LI.ID ITEMCATEGORYID,
'Reservation for' ITEMCATEGORYDESCRIPTION,
null ITEMID,
DISPLAYNAME.NAME SUBORDERITEMDESCRIPTION,
LI.TRANSACTIONAMOUNT ORDERITEMTOTAL,
'' ORDERITEMSORTFIELD1,
'' ORDERITEMSORTFIELD2,
'' SUBORDERITEMSORTFIELD1,
'' SUBORDERITEMSORTFIELD2
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.RESERVATION on EXT.SALESORDERID = RESERVATION.ID
inner join dbo.SALESORDER on SALESORDER.ID = RESERVATION.ID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SALESORDER.CONSTITUENTID) DISPLAYNAME
where
LI.FINANCIALTRANSACTIONID = @CREDITID and
EXT.TYPECODE = 255 -- Unearned revenue
order by ORDERITEMTYPE, ORDERITEMSORTFIELD1, ORDERITEMSORTFIELD2, SUBORDERITEMSORTFIELD1, ITEMID, SUBORDERITEMTYPE, SUBORDERITEMSORTFIELD2;
return 0;