From 685f37c4daa6eb0eebdb730778a5b7daefb0bede Mon Sep 17 00:00:00 2001 From: aradhana kumari Date: Fri, 1 May 2026 19:22:05 +0530 Subject: [PATCH] Update the validation Co-authored-by: Name --- .../template/controllers/orders/form.tpl | 1 + .../controllers/orders/helpers/view/view.tpl | 1 + cache/smarty/cache/index.php | 2 +- cache/smarty/compile/index.php | 2 +- classes/controller/FrontController.php | 1 + controllers/admin/AdminOrdersController.php | 2 + controllers/admin/AdminProductsController.php | 8 ++++ controllers/admin/AdminSlipController.php | 2 +- .../classes/HotelHelper.php | 2 +- .../AdminHotelRoomsBookingController.php | 2 + .../helpers/view/_partials/booking-rooms.tpl | 4 +- .../hotel_rooms_booking/helpers/view/view.tpl | 4 +- .../views/js/wk-room-search-block.js | 47 ++++++++++++------- themes/hotel-reservation-theme/global.tpl | 1 + .../hotel-reservation-theme/js/occupancy.js | 2 + 15 files changed, 55 insertions(+), 26 deletions(-) diff --git a/admin/themes/default/template/controllers/orders/form.tpl b/admin/themes/default/template/controllers/orders/form.tpl index dda7d6aa5..1de5ef4e7 100644 --- a/admin/themes/default/template/controllers/orders/form.tpl +++ b/admin/themes/default/template/controllers/orders/form.tpl @@ -2450,6 +2450,7 @@ {strip} {addJsDef max_child_age=$max_child_age} + {addJsDef max_child_in_room=$max_child_in_room} {addJsDefL name='select_age_txt'}{l s='Select age' js=1}{/addJsDefL} {addJsDefL name='under_1_age'}{l s='Under 1' js=1}{/addJsDefL} {addJsDefL name='room_txt'}{l s='Room' js=1}{/addJsDefL} diff --git a/admin/themes/default/template/controllers/orders/helpers/view/view.tpl b/admin/themes/default/template/controllers/orders/helpers/view/view.tpl index 7f9046cdf..c0c841758 100644 --- a/admin/themes/default/template/controllers/orders/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/orders/helpers/view/view.tpl @@ -1335,6 +1335,7 @@ {addJsDefL name='invalid_occupancy_txt'}{l s='Invalid occupancy(adults/children) found.' js=1}{/addJsDefL} {addJsDefL name='select_room_txt'}{l s='Select room' js=1}{/addJsDefL} {addJsDef max_child_age=$max_child_age|escape:'quotes':'UTF-8'} + {addJsDef max_child_in_room=$max_child_in_room|escape:'quotes':'UTF-8'} {addJsDef ROOM_STATUS_CHECKED_IN=$ROOM_STATUS_CHECKED_IN|escape:'quotes':'UTF-8'} {addJsDef ROOM_STATUS_CHECKED_OUT=$ROOM_STATUS_CHECKED_OUT|escape:'quotes':'UTF-8'} {addJsDef ALLOTMENT_MANUAL=$ALLOTMENT_MANUAL|escape:'quotes':'UTF-8'} diff --git a/cache/smarty/cache/index.php b/cache/smarty/cache/index.php index 91e3c84b0..369a7a3f3 100644 --- a/cache/smarty/cache/index.php +++ b/cache/smarty/cache/index.php @@ -19,7 +19,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/cache/smarty/compile/index.php b/cache/smarty/compile/index.php index 91e3c84b0..369a7a3f3 100644 --- a/cache/smarty/compile/index.php +++ b/cache/smarty/compile/index.php @@ -19,7 +19,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/classes/controller/FrontController.php b/classes/controller/FrontController.php index 5252400ca..6885395fc 100644 --- a/classes/controller/FrontController.php +++ b/classes/controller/FrontController.php @@ -498,6 +498,7 @@ class FrontControllerCore extends Controller 'is_occupancy_wise_search' => $isOccupancyWiseSearch, 'occupancy_required_for_booking' => $occupancyRequiredForBooking, 'max_child_age' => Configuration::get('WK_GLOBAL_CHILD_MAX_AGE'), + 'max_child_in_room' => Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM'), 'show_full_date' => $this->show_full_date )); diff --git a/controllers/admin/AdminOrdersController.php b/controllers/admin/AdminOrdersController.php index 2e15844e7..ad7ae4225 100644 --- a/controllers/admin/AdminOrdersController.php +++ b/controllers/admin/AdminOrdersController.php @@ -492,6 +492,7 @@ class AdminOrdersControllerCore extends AdminController 'payment_types' => $paymentTypes, 'PAYMENT_TYPE_PAY_AT_HOTEL' => OrderPayment::PAYMENT_TYPE_PAY_AT_HOTEL, 'currency' => new Currency((int)$cart->id_currency), + 'max_child_in_room' => Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM'), 'max_child_age' => Configuration::get('WK_GLOBAL_CHILD_MAX_AGE'), 'occupancy_required_for_booking' => $occupancyRequiredForBooking, )); @@ -3626,6 +3627,7 @@ class AdminOrdersControllerCore extends AdminController 'htl_booking_order_data' => $bookingOrderInfo, 'hotel_order_status' => $htlOrderStatus, 'order_detail_data' => $order_detail_data, + 'max_child_in_room' => Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM'), 'max_child_age' => Configuration::get('WK_GLOBAL_CHILD_MAX_AGE'), 'hotel_service_products' => $orderHotelServiceProducts, 'standalone_service_products' => $orderStandaloneServiceProducts, diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php index 6c6b7fc4e..0a7acb76f 100644 --- a/controllers/admin/AdminProductsController.php +++ b/controllers/admin/AdminProductsController.php @@ -3407,6 +3407,10 @@ class AdminProductsControllerCore extends AdminController } if ($baseChildren == '' || !Validate::isUnsignedInt($baseChildren)) { $this->errors[] = Tools::displayError('Invalid base children'); + } else if (Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM')) { + if ($baseChildren > Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM')) { + $this->errors[] = sprintf(Tools::displayError('Base children cannot be greater than max childern allowed in the room of this room type (Max: %s)'), Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM')); + } } if (!$maxAdults || !Validate::isUnsignedInt($maxAdults)) { $this->errors[] = Tools::displayError('Invalid maximum number of adults'); @@ -3421,6 +3425,10 @@ class AdminProductsControllerCore extends AdminController $this->errors[] = Tools::displayError('Maximum number of children cannot be less than base children'); } elseif ($maxChildren >= $maxGuests) { $this->errors[] = Tools::displayError('Maximum number of children cannot be more or equal than maximum number of guests.(1 adult is mandatory in a room)'); + } else if (Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM')) { + if ($maxChildren > Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM')) { + $this->errors[] = sprintf(Tools::displayError('Maximum number of children cannot be greater than max childern allowed in the room of this room type (Max: %s)'), Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM')); + } } if (!$maxGuests || !Validate::isUnsignedInt($maxGuests)) { $this->errors[] = Tools::displayError('Invalid maximum number of guests'); diff --git a/controllers/admin/AdminSlipController.php b/controllers/admin/AdminSlipController.php index 426146c23..6f104daee 100644 --- a/controllers/admin/AdminSlipController.php +++ b/controllers/admin/AdminSlipController.php @@ -353,4 +353,4 @@ class AdminSlipControllerCore extends AdminController $this->addJS(_PS_JS_DIR_.'admin/slips.js'); } -} \ No newline at end of file +} diff --git a/modules/hotelreservationsystem/classes/HotelHelper.php b/modules/hotelreservationsystem/classes/HotelHelper.php index 0070f18e8..a196694f5 100644 --- a/modules/hotelreservationsystem/classes/HotelHelper.php +++ b/modules/hotelreservationsystem/classes/HotelHelper.php @@ -1063,7 +1063,7 @@ class HotelHelper Configuration::updateValue('WK_ADVANCED_PAYMENT_INC_TAX', 1); Configuration::updateValue('WK_GLOBAL_CHILD_MAX_AGE', 15); - Configuration::updateValue('QLO_GLOBAL_MAX_INFANT_AGE', 1); + Configuration::updateValue('WK_GLOBAL_MAX_CHILD_IN_ROOM', 0); Configuration::updateValue('PS_MAX_CHECKOUT_OFFSET', 365); Configuration::updateValue('PS_MIN_BOOKING_OFFSET', 0); diff --git a/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php b/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php index 87c31f89b..fac60d468 100644 --- a/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php +++ b/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php @@ -384,6 +384,7 @@ class AdminHotelRoomsBookingController extends ModuleAdminController 'date_to' => $this->date_to, 'occupancy_required_for_booking' => $occupancyRequiredForBooking, 'max_child_age' => Configuration::get('WK_GLOBAL_CHILD_MAX_AGE'), + 'max_child_in_room' => Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM'), 'link' => $this->context->link, 'ALLOTMENT_MANUAL' => HotelBookingDetail::ALLOTMENT_MANUAL, )); @@ -980,6 +981,7 @@ class AdminHotelRoomsBookingController extends ModuleAdminController 'SELLING_PREFERENCE_WITH_ROOM_TYPE' => Product::SELLING_PREFERENCE_WITH_ROOM_TYPE, 'SELLING_PREFERENCE_STANDALONE' => Product::SELLING_PREFERENCE_STANDALONE, 'max_child_age' => Configuration::get('WK_GLOBAL_CHILD_MAX_AGE'), + 'max_child_in_room' => Configuration::get('WK_GLOBAL_MAX_CHILD_IN_ROOM'), 'occupancy_required_for_booking' => $occupancyRequiredForBooking, 'rooms_reallocation_url' => $this->context->link->getAdminLink('AdminHotelRoomsBooking'), 'rooms_booking_url' => $this->context->link->getAdminLink('AdminHotelRoomsBooking'), diff --git a/modules/hotelreservationsystem/views/templates/admin/hotel_rooms_booking/helpers/view/_partials/booking-rooms.tpl b/modules/hotelreservationsystem/views/templates/admin/hotel_rooms_booking/helpers/view/_partials/booking-rooms.tpl index ccc73a37c..710d60348 100644 --- a/modules/hotelreservationsystem/views/templates/admin/hotel_rooms_booking/helpers/view/_partials/booking-rooms.tpl +++ b/modules/hotelreservationsystem/views/templates/admin/hotel_rooms_booking/helpers/view/_partials/booking-rooms.tpl @@ -74,7 +74,7 @@
- + ({l s='Below' mod='hotelreservationsystem'} {$max_child_age|escape:'htmlall':'UTF-8'} {l s='years' mod='hotelreservationsystem'})
@@ -163,7 +163,7 @@
- + ({l s='Below'} {$max_child_age|escape:'htmlall':'UTF-8'} {l s='years' mod='hotelreservationsystem'})
diff --git a/modules/hotelreservationsystem/views/templates/admin/hotel_rooms_booking/helpers/view/view.tpl b/modules/hotelreservationsystem/views/templates/admin/hotel_rooms_booking/helpers/view/view.tpl index 2557827b9..6dfd81da5 100644 --- a/modules/hotelreservationsystem/views/templates/admin/hotel_rooms_booking/helpers/view/view.tpl +++ b/modules/hotelreservationsystem/views/templates/admin/hotel_rooms_booking/helpers/view/view.tpl @@ -84,7 +84,7 @@
- + ({l s='Below' mod='hotelreservationsystem'} {$max_child_age|escape:'htmlall':'UTF-8'} {l s='years' mod='hotelreservationsystem'})
@@ -126,7 +126,7 @@
- + ({l s='Below' mod='hotelreservationsystem'} {$max_child_age|escape:'htmlall':'UTF-8'} {l s='years' mod='hotelreservationsystem'})
diff --git a/modules/wkroomsearchblock/views/js/wk-room-search-block.js b/modules/wkroomsearchblock/views/js/wk-room-search-block.js index 0b6c67465..aacaa38b0 100644 --- a/modules/wkroomsearchblock/views/js/wk-room-search-block.js +++ b/modules/wkroomsearchblock/views/js/wk-room-search-block.js @@ -696,26 +696,37 @@ $(document).ready(function() { if (childElement) { var totalChilds = $(this).closest('.occupancy_info_block').find('.guest_child_age').length; - element.val(elementVal); - $(this).closest('.occupancy_info_block').find('.children_age_info_block').show(); + if (max_child_in_room == 0 || totalChilds < max_child_in_room) { + element.val(elementVal); + $(this).closest('.occupancy_info_block').find('.children_age_info_block').show(); - var roomBlockIndex = parseInt($(this).closest('.occupancy_info_block').attr('occ_block_index')); + var roomBlockIndex = parseInt($(this).closest('.occupancy_info_block').attr('occ_block_index')); - var childAgeSelect = '
'; - childAgeSelect += ''; + childAgeSelect += ''; + childAgeSelect += ''; + for (let age = 1; age < max_child_age; age++) { + childAgeSelect += ''; + } + childAgeSelect += ''; + childAgeSelect += '
'; + + $(this).closest('.occupancy_info_block').find('.children_ages').append(childAgeSelect); + + // set input field value + $(this).closest('.occupancy_count_block').find('.occupancy_count > span').text(elementVal); + } else { + if (elementVal >= max_child_in_room) { + if (elementVal == 0) { + showOccupancyError(no_children_allowed_txt, $(this).closest(".occupancy_info_block")); + } else { + showOccupancyError(max_children_txt, $(this).closest(".occupancy_info_block")); } - childAgeSelect += ''; - childAgeSelect += ''; - - $(this).closest('.occupancy_info_block').find('.children_ages').append(childAgeSelect); - - // set input field value - $(this).closest('.occupancy_count_block').find('.occupancy_count > span').text(elementVal); - + } else { + showOccupancyError(max_occupancy_reached_txt, $(this).closest(".occupancy_info_block")); + } + } } else { element.val(elementVal); @@ -923,7 +934,7 @@ $(document).ready(function() { // set positions of popups when required if (page_name == 'index') { - $('#hotel_location, #id_hotel_button_chosen, #guest_occupancy').focus(function () { + $('#hotel_location, #id_hotel_button, #guest_occupancy').focus(function () { setBookingSearchPositions(); }); diff --git a/themes/hotel-reservation-theme/global.tpl b/themes/hotel-reservation-theme/global.tpl index eaa7cd71a..55a1cdd44 100644 --- a/themes/hotel-reservation-theme/global.tpl +++ b/themes/hotel-reservation-theme/global.tpl @@ -62,6 +62,7 @@ {addJsDef is_occupancy_wise_search=$is_occupancy_wise_search|boolval} {addJsDef occupancy_required_for_booking=$occupancy_required_for_booking|boolval} {addJsDef max_child_age=$max_child_age} +{addJsDef max_child_in_room=$max_child_in_room} {addJsDefL name='max_occupancy_reached_txt'}{l s='Maximum room occupancy reached' js=1}{/addJsDefL} {addJsDefL name='max_adults_txt'}{l s='Maximum adult occupancy reached' js=1}{/addJsDefL} diff --git a/themes/hotel-reservation-theme/js/occupancy.js b/themes/hotel-reservation-theme/js/occupancy.js index 56b59edea..fddb7006f 100644 --- a/themes/hotel-reservation-theme/js/occupancy.js +++ b/themes/hotel-reservation-theme/js/occupancy.js @@ -58,6 +58,8 @@ $(document).ready(function(){ let max_child_in_room; if ($(this).closest(".booking_occupancy_wrapper").find('.max_children').val()) { max_child_in_room = $(this).closest(".booking_occupancy_wrapper").find('.max_children').val(); + } else { + max_child_in_room = window.max_child_in_room; } if (elementVal < max_child_in_room && elementVal < max_allowed_for_current) { element.val(elementVal + 1);