8 #include <stdair/bom/BomManager.hpp>
9 #include <stdair/bom/FlightDate.hpp>
10 #include <stdair/bom/LegCabin.hpp>
11 #include <stdair/bom/SegmentCabin.hpp>
12 #include <stdair/bom/FareFamily.hpp>
13 #include <stdair/bom/BookingClass.hpp>
24 const stdair::LegCabinList_T& lLCList =
25 stdair::BomManager::getList<stdair::LegCabin> (iSegmentCabin);
27 stdair::CabinCapacity_T lCapacity =
28 std::numeric_limits<stdair::CabinCapacity_T>::max();
29 for (stdair::LegCabinList_T::const_iterator itLC = lLCList.begin();
30 itLC != lLCList.end(); ++itLC) {
32 const stdair::LegCabin* lLC_ptr = *itLC;
33 assert (lLC_ptr != NULL);
35 const stdair::CabinCapacity_T& lCabinCap = lLC_ptr->getOfferedCapacity();
36 if (lCapacity > lCabinCap) {
37 lCapacity = lCabinCap;
40 iSegmentCabin.setCapacity (lCapacity);
41 iSegmentCabin.setAvailabilityPool (lCapacity);
45 const stdair::BookingClassList_T& lBCList =
46 stdair::BomManager::getList<stdair::BookingClass> (iSegmentCabin);
47 for (stdair::BookingClassList_T::const_iterator itBC = lBCList.begin();
48 itBC != lBCList.end(); ++itBC) {
49 stdair::BookingClass* lBC_ptr = *itBC;
50 assert (lBC_ptr != NULL);
51 lBC_ptr->setAuthorizationLevel (lCapacity);
58 stdair::SegmentCabin& ioSegmentCabin,
59 const stdair::PartySize_T& iNbOfBookings){
61 ioSegmentCabin.updateFromReservation (iNbOfBookings);
64 const stdair::LegCabinList_T& lLegCabinList =
65 stdair::BomManager::getList<stdair::LegCabin> (ioSegmentCabin);
66 for (stdair::LegCabinList_T::const_iterator itLegCabin =
67 lLegCabinList.begin();
68 itLegCabin != lLegCabinList.end(); ++itLegCabin) {
69 stdair::LegCabin* lLegCabin_ptr = *itLegCabin;
70 assert (lLegCabin_ptr != NULL);
71 lLegCabin_ptr->updateFromReservation (iNbOfBookings);
76 const stdair::CabinCode_T& lCabinCode = ioSegmentCabin.getCabinCode();
84 const stdair::Availability_T& lAvlPool=ioSegmentCabin.getAvailabilityPool();
85 const unsigned int lAvlPoolInt =
86 static_cast<unsigned int> (lAvlPool);
87 stdair::BidPriceVector_T lPseudoBidPriceVector (lAvlPoolInt, 0.0);
90 const stdair::LegCabinList_T& lLCList =
91 stdair::BomManager::getList<stdair::LegCabin> (ioSegmentCabin);
92 for (stdair::LegCabinList_T::const_iterator itLC = lLCList.begin();
93 itLC != lLCList.end(); ++itLC) {
94 const stdair::LegCabin* lLC_ptr = *itLC;
95 assert (lLC_ptr != NULL);
97 const stdair::BidPriceVector_T& lBPV = lLC_ptr->getBidPriceVector();
98 stdair::BidPriceVector_T::const_reverse_iterator itBP = lBPV.rbegin();
99 for (stdair::BidPriceVector_T::reverse_iterator itPBP =
100 lPseudoBidPriceVector.rbegin();
101 itPBP != lPseudoBidPriceVector.rend(); ++itPBP, ++itBP) {
102 assert (itBP != lBPV.rend());
103 stdair::BidPrice_T& lCurrentPBP = *itPBP;
104 const stdair::BidPrice_T& lCurrentBP = *itBP;
105 lCurrentPBP += lCurrentBP;
109 ioSegmentCabin.setBidPriceVector (lPseudoBidPriceVector);
128 const stdair::BidPriceVector_T& lPseudoBPV =
129 iSegmentCabin.getBidPriceVector();
130 const stdair::Availability_T& lAvlPool=iSegmentCabin.getAvailabilityPool();
133 const stdair::BookingClassList_T& lBCList =
134 stdair::BomManager::getList<stdair::BookingClass> (iSegmentCabin);
135 for (stdair::BookingClassList_T::const_iterator itBC = lBCList.begin();
136 itBC != lBCList.end(); ++itBC) {
137 stdair::BookingClass* lBC_ptr = *itBC;
138 assert (lBC_ptr != NULL);
140 lBC_ptr->setCumulatedBookingLimit (lAvlPool);
141 const stdair::Yield_T& lYield = lBC_ptr->getYield();
142 for (stdair::BidPriceVector_T::const_reverse_iterator itBP =
143 lPseudoBPV.rbegin(); itBP != lPseudoBPV.rend(); ++itBP) {
144 const stdair::BidPrice_T& lBP = *itBP;
146 stdair::BookingLimit_T lCumuBL = itBP - lPseudoBPV.rbegin();
147 lBC_ptr->setCumulatedBookingLimit (lCumuBL);
161 stdair::NbOfBookings_T lCumulativeBookingCounter = 0.0;
162 const stdair::BookingClassList_T& lBCList =
163 stdair::BomManager::getList<stdair::BookingClass> (iSegmentCabin);
164 for (stdair::BookingClassList_T::const_reverse_iterator itBC =
165 lBCList.rbegin(); itBC != lBCList.rend(); ++itBC) {
166 stdair::BookingClass* lBC_ptr = *itBC;
167 assert (lBC_ptr != NULL);
169 const stdair::NbOfBookings_T& lNbOfBookings = lBC_ptr->getNbOfBookings();
170 lCumulativeBookingCounter += lNbOfBookings;
172 const stdair::BookingLimit_T& lCumuBookingLimit =
173 lBC_ptr->getCumulatedBookingLimit();
175 stdair::AuthorizationLevel_T lAU =
176 lCumulativeBookingCounter + lCumuBookingLimit;
177 lBC_ptr->setAuthorizationLevel (lAU);
193 stdair::NbOfBookings_T lCumulativeBookingCounter = 0.0;
194 const stdair::BookingClassList_T& lBCList =
195 stdair::BomManager::getList<stdair::BookingClass> (iSegmentCabin);
196 for (stdair::BookingClassList_T::const_reverse_iterator itBC =
197 lBCList.rbegin(); itBC != lBCList.rend(); ++itBC) {
198 stdair::BookingClass* lBC_ptr = *itBC;
199 assert (lBC_ptr != NULL);
201 const stdair::NbOfBookings_T& lNbOfBookings = lBC_ptr->getNbOfBookings();
202 lCumulativeBookingCounter += lNbOfBookings;
204 const stdair::AuthorizationLevel_T& lAU=lBC_ptr->getAuthorizationLevel();
206 const stdair::Availability_T lAvl = lAU - lCumulativeBookingCounter;
207 lBC_ptr->setSegmentAvailability (lAvl);