ALTER PROCEDURE [dbo].[usp_GetBiWeeklyDates] (@first_perf datetime, @last_perf datetime, @show_id int) as
BEGIN
DECLARE @current_date datetime
DECLARE @tempdate TABLE (tempdate_id int Identity, tempdate_date Datetime)
IF DATEPART(dw, @first_perf) > 4
SET @current_date = DATEADD(day, -2-DATEPART(dw, @first_perf), @first_perf)
ELSE
SET @current_date = DATEADD(day, -9-DATEPART(dw, @first_perf), @first_perf)
WHILE @current_date < @last_perf
BEGIN
INSERT INTO @tempdate (tempdate_date) VALUES (@current_date)
SET @current_date = dateadd(week, 2, @current_date)
END
SELECT tempdate_date,
SUM(CASE ReservationStyle WHEN 'comp' THEN ISNULL(orderline.TicketCount,0) ELSE 0 END) AS comps,
SUM(CASE WHEN DiscountValue = 100 AND DiscountMethod = 'percent' THEN ISNULL(orderline.TicketCount,0) ELSE 0 END) AS zerotix,
SUM(CASE WHEN (ISNULL(DiscountValue, 0) <> 100 OR ISNULL(DiscountMethod,'') <> 'percent') AND ReservationStyle = 'paid' AND ReservationSubStyle = 'cod' THEN ISNULL(orderline.TicketCount,0) ELSE 0 END) AS cods,
SUM(CASE WHEN (ISNULL(DiscountValue, 0) <> 100 OR ISNULL(DiscountMethod,'') <> 'percent') AND ReservationStyle = 'paid' AND ReservationSubStyle = 'prepaid' THEN ISNULL(orderline.TicketCount,0) ELSE 0 END) AS prepaids,
SUM(CASE WHEN (ISNULL(DiscountValue, 0) <> 100 OR ISNULL(DiscountMethod,'') <> 'percent') AND ReservationStyle = 'hold' THEN ISNULL(orderline.TicketCount,0) ELSE 0 END) AS holds,
SUM(CASE WHEN (ISNULL(DiscountValue, 0) <> 100 OR ISNULL(DiscountMethod,'') <> 'percent') AND ReservationStyle = 'paid' AND ReservationPayClient = 1 THEN ISNULL(orderline.TicketCount,0) ELSE 0 END) AS sales,
SUM(CASE WHEN (ISNULL(DiscountValue, 0) <> 100 OR ISNULL(DiscountMethod,'') <> 'percent') AND ReservationStyle = 'paid' AND ReservationPayClient = 1 THEN ISNULL(orderline.TicketCount * (orderline.TicketPrice - orderline.TicketDiscount),0) ELSE 0 END) AS amount
FROM (show LEFT JOIN runall ON show.show_id = runall.show_id
LEFT JOIN (orders JOIN orderline on orders.orderID = orderline.orderID AND transactionvalid = 1 AND order_status = 1
JOIN reservationcode ON orders.reservationID = reservationcode.reservationID AND Reservation_Status = 1 AND ReservationPending = 0)
ON runall.runall_id = orderline.PerformanceID
LEFT JOIN promocodes ON orderline.promoID = promocodes.promoID)
CROSS JOIN @tempdate
WHERE runall.date BETWEEN tempdate_date AND DATEADD(day, 13, tempdate_date) AND runall.date >= @first_perf
AND show.show_id = @show_id
GROUP BY tempdate_date
ORDER BY tempdate_date
END