USP_REPORT_GROUPSALESREVENUE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | date | IN | |
@ENDDATE | date | IN | |
@ONLYOUTSTANDINGBALANCE | bit | IN | |
@ONLYNOPAYMENT | bit | IN | |
@INCLUDECANCELLEDRESERVATIONS | bit | IN | |
@GROUPTYPEFILTEROPTION | tinyint | IN | |
@INCLUDERESERVATIONSWITHNOGROUPTYPE | bit | IN | |
@GROUPTYPES | xml | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_REPORT_GROUPSALESREVENUE
(
@STARTDATE date = null,
@ENDDATE date = null,
@ONLYOUTSTANDINGBALANCE bit = 0,
@ONLYNOPAYMENT bit = 0,
@INCLUDECANCELLEDRESERVATIONS bit = 0,
@GROUPTYPEFILTEROPTION tinyint = 0,
@INCLUDERESERVATIONSWITHNOGROUPTYPE bit = 0,
@GROUPTYPES xml = null,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount on;
declare @GRANTEDRESERVATIONPAGE bit = 1;
if not @CURRENTAPPUSERID is null and not dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 begin
set @GRANTEDRESERVATIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'C8E970CA-858A-4066-AD34-DC049A2A2DE7');
end
declare @FILTEREDGROUPTYPES dbo.UDT_GENERICID;
if @GROUPTYPEFILTEROPTION = 1 begin -- Specific group types
insert into @FILTEREDGROUPTYPES
select GT.c.value('(@ID)[1]', 'uniqueidentifier')
from @GROUPTYPES.nodes('/GROUPTYPES/ITEM') as GT(c);
end
select
RESERVATION.NAME,
case
when @GRANTEDRESERVATIONPAGE = 1 then 'http://www.blackbaud.com/RESERVATIONID?RESERVATIONID=' + CONVERT(nvarchar(36), [RESERVATION].ID)
else null
end RESERVATIONURL,
SALESORDER.STATUSCODE,
dbo.UFN_RESERVATION_TOTALVISITORCOUNT(RESERVATION.ID) TOTALVISITORCOUNT,
RESERVATION.ARRIVALDATE,
TOTALS.REFUNDS,
TOTALS.OVERAGEKEPT,
TOTALS.TOTALDISCOUNTS,
TOTALS.TOTAL,
TOTALS.BALANCE,
TOTALS.AMOUNTPAID,
case when TOTALS.BALANCE < 0 then TOTALS.BALANCE else 0 end as BALANCEYOUOWE,
case when TOTALS.BALANCE > 0 then TOTALS.BALANCE else 0 end as BALANCETHEYOWE,
CONTACTCONSTITUENT.NAME as CONTACTNAME,
EMAILADDRESS.EMAILADDRESS as CONTACTEMAIL,
EMAILADDRESS.DONOTEMAIL as CONTACTDONOTEMAIL,
PHONE.NUMBER as CONTACTNUMBER,
PHONE.DONOTCALL as CONTACTDONOTCALL,
PHONE.ISCONFIDENTIAL as CONTACTCONFIDENTIALPHONE,
dbo.UFN_RESERVATION_GETGROUPTYPELIST(RESERVATION.ID, N', ') as GROUPTYPELIST
from
dbo.RESERVATION
inner join
dbo.SALESORDER on SALESORDER.ID = RESERVATION.ID
outer apply
dbo.UFN_SALESORDER_CONTACTRECORDS(RESERVATION.ID) as CONTACTRECORDS
left outer join
dbo.EMAILADDRESS on EMAILADDRESS.ID = CONTACTRECORDS.EMAILADDRESSID
left outer join
dbo.PHONE on PHONE.ID = CONTACTRECORDS.PHONEID
outer apply
dbo.UFN_SALESORDER_TOTALS(SALESORDER.ID) TOTALS
outer apply
dbo.UFN_CONSTITUENT_DISPLAYNAME(SALESORDER.RECIPIENTID) as CONTACTCONSTITUENT
where
(
@STARTDATE is null
or RESERVATION.ARRIVALDATE >= @STARTDATE
)
and (
@ENDDATE is null
or RESERVATION.ARRIVALDATE <= @ENDDATE
)
and (
@ONLYNOPAYMENT = 0
or TOTALS.NUMBEROFPAYMENTS = 0
)
and (
@ONLYOUTSTANDINGBALANCE = 0
or TOTALS.BALANCE <> 0
)
and (
@INCLUDECANCELLEDRESERVATIONS = 1
or SALESORDER.STATUSCODE <> 5 -- Cancelled
)
and (
@GROUPTYPEFILTEROPTION = 0 -- All
or exists (
select
*
from
dbo.ITINERARY
where
ITINERARY.RESERVATIONID = RESERVATION.ID
and (
ITINERARY.GROUPSALESGROUPTYPECODEID in (
select ID from @FILTEREDGROUPTYPES
)
or (@INCLUDERESERVATIONSWITHNOGROUPTYPE = 1 and ITINERARY.GROUPSALESGROUPTYPECODEID is null)
)
)
or (
@INCLUDERESERVATIONSWITHNOGROUPTYPE = 1
and not exists (
select *
from dbo.ITINERARY
where ITINERARY.RESERVATIONID = RESERVATION.ID
)
)
)
order by
RESERVATION.ARRIVALDATE, RESERVATION.NAME