UFN_RESERVATION_GETEXTRAFLATRATEPEOPLE
Returns a table containing extra flat rate attendees.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RESERVATIONID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_RESERVATION_GETEXTRAFLATRATEPEOPLE
(
@RESERVATIONID uniqueidentifier
)
returns @EXTRAPEOPLE table
(
ITINERARYID uniqueidentifier,
PRICETYPEID uniqueidentifier,
QUANTITY int
)
as begin
if exists ( select 1
from dbo.RESERVATIONRATESCALEPRICE RRSP
inner join dbo.RESERVATIONRATESCALE RRS on RRSP.RESERVATIONRATESCALEID = RRS.ID
where
RRSP.INUSE = 1 and
RRSP.GROUPMAXIMUM = -1 and
RRS.ID = @RESERVATIONID and
RRS.USEPERTICKETAFTERMAX = 1 )
begin
declare @ALLPEOPLE table
(
ITINERARYID uniqueidentifier,
PRICETYPEID uniqueidentifier,
PRICE money,
QUANTITY int
)
insert into @ALLPEOPLE
(
ITINERARYID,
PRICETYPEID,
PRICE,
QUANTITY
) select
ITINERARYID,
PRICETYPECODEID,
PRICE,
QUANTITY
from dbo.UFN_RESERVATION_GETPERPERSONCHARGES(@RESERVATIONID, 1);
declare @EXCESSATTENDEES int;
declare @ITINERARYID uniqueidentifier;
declare @PRICETYPEID uniqueidentifier;
declare @QUANTITY int;
select
@EXCESSATTENDEES = isnull(sum(QUANTITY),0)
from dbo.ITINERARYATTENDEE
inner join dbo.ITINERARY on
ITINERARY.ID = ITINERARYATTENDEE.ITINERARYID
where
ITINERARY.RESERVATIONID = @RESERVATIONID
select
@EXCESSATTENDEES = case GROUPMINIMUM
when 0 then @EXCESSATTENDEES
else @EXCESSATTENDEES - coalesce(GROUPMINIMUM - 1, 0)
end
from dbo.RESERVATIONRATESCALEPRICE
where
RESERVATIONRATESCALEID = @RESERVATIONID and
INUSE = 1
while @EXCESSATTENDEES > 0
begin
select top(1)
@ITINERARYID = ITINERARYID,
@PRICETYPEID = PRICETYPEID,
@QUANTITY = QUANTITY
from @ALLPEOPLE
order by PRICE asc
if @ITINERARYID is null
begin
set @EXCESSATTENDEES = 0;
end
else
begin
if @QUANTITY >= @EXCESSATTENDEES
begin
insert into @EXTRAPEOPLE (ITINERARYID, PRICETYPEID, QUANTITY) values (@ITINERARYID, @PRICETYPEID, @EXCESSATTENDEES)
set @EXCESSATTENDEES = 0;
end
else
begin
insert into @EXTRAPEOPLE (ITINERARYID, PRICETYPEID, QUANTITY) values (@ITINERARYID, @PRICETYPEID, @QUANTITY)
set @EXCESSATTENDEES -= @QUANTITY;
end
delete from @ALLPEOPLE where ITINERARYID = @ITINERARYID and PRICETYPEID = @PRICETYPEID;
end
end
end
return
end