From 53d25dc0a8bbc40d7033f3e258ed338c42019320 Mon Sep 17 00:00:00 2001 From: "vishalsingh.qlo325" Date: Thu, 24 Oct 2024 13:01:29 +0530 Subject: [PATCH 01/50] Fixed: Price is calculated and saved incorrectly when admin tries to update booking not having any service/demands in the back-office --- controllers/admin/AdminOrdersController.php | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/controllers/admin/AdminOrdersController.php b/controllers/admin/AdminOrdersController.php index 6dfcdaced..1e467e15d 100644 --- a/controllers/admin/AdminOrdersController.php +++ b/controllers/admin/AdminOrdersController.php @@ -4886,10 +4886,6 @@ class AdminOrdersControllerCore extends AdminController $order->total_products_wt += (float)$diff_price_tax_incl; $order->total_products_wt = $order->total_products_wt > 0 ? $order->total_products_wt : 0; - $order->total_paid = Tools::ps_round($order->getOrderTotal(), _PS_PRICE_COMPUTE_PRECISION_); - $order->total_paid_tax_incl = Tools::ps_round($order->getOrderTotal(), _PS_PRICE_COMPUTE_PRECISION_); - $order->total_paid_tax_excl = Tools::ps_round($order->getOrderTotal(false), _PS_PRICE_COMPUTE_PRECISION_); - $res &= $order->update(); } @@ -5043,7 +5039,6 @@ class AdminOrdersControllerCore extends AdminController )) { // update extra demands total prices if dates are changes (price calc method for each day) if ($extraDemands) { - $order = new Order($id_order); foreach ($extraDemands as $demand) { if (isset($demand['extra_demands']) && $demand['extra_demands']) { foreach ($demand['extra_demands'] as $rDemand) { @@ -5072,19 +5067,13 @@ class AdminOrdersControllerCore extends AdminController } } } - // change order total save - $order->total_paid = Tools::ps_round($order->getOrderTotal(), _PS_PRICE_COMPUTE_PRECISION_); - $order->total_paid_tax_incl = Tools::ps_round($order->getOrderTotal(), _PS_PRICE_COMPUTE_PRECISION_); - $order->total_paid_tax_excl = Tools::ps_round($order->getOrderTotal(false), _PS_PRICE_COMPUTE_PRECISION_); - $order->save(); } if (isset($orderServiceProducts) && is_array($orderServiceProducts) && count($orderServiceProducts) ) { - $order = new Order((int) $id_order); foreach ($orderServiceProducts as $orderServiceProduct) { if (isset($orderServiceProduct['additional_services']) && is_array($orderServiceProduct['additional_services']) @@ -5140,13 +5129,15 @@ class AdminOrdersControllerCore extends AdminController } } - $order->total_paid = Tools::ps_round($order->getOrderTotal(), _PS_PRICE_COMPUTE_PRECISION_); - $order->total_paid_tax_incl = Tools::ps_round($order->getOrderTotal(), _PS_PRICE_COMPUTE_PRECISION_); - $order->total_paid_tax_excl = Tools::ps_round($order->getOrderTotal(false), _PS_PRICE_COMPUTE_PRECISION_); - $order->save(); } } + $order = new Order((int) $id_order); + $order->total_paid = Tools::ps_round($order->getOrderTotal(), _PS_PRICE_COMPUTE_PRECISION_); + $order->total_paid_tax_incl = Tools::ps_round($order->getOrderTotal(), _PS_PRICE_COMPUTE_PRECISION_); + $order->total_paid_tax_excl = Tools::ps_round($order->getOrderTotal(false), _PS_PRICE_COMPUTE_PRECISION_); + $order->save(); + if (is_array(Tools::getValue('product_quantity'))) { $view = $this->createTemplate('_customized_data.tpl')->fetch(); } else { From 3a291feb1392dcf9af0746ae007fea526ea6b80d Mon Sep 17 00:00:00 2001 From: Aman deep sharma Date: Thu, 16 Jan 2025 20:31:43 +0530 Subject: [PATCH 02/50] [Fixed]: Order invoice does not get updated --- .../orders/modals/_edit_room_tab_content.tpl | 9 + controllers/admin/AdminOrdersController.php | 207 +++++++++--------- 2 files changed, 115 insertions(+), 101 deletions(-) diff --git a/admin/themes/default/template/controllers/orders/modals/_edit_room_tab_content.tpl b/admin/themes/default/template/controllers/orders/modals/_edit_room_tab_content.tpl index 1bb98114b..7df2e26b9 100644 --- a/admin/themes/default/template/controllers/orders/modals/_edit_room_tab_content.tpl +++ b/admin/themes/default/template/controllers/orders/modals/_edit_room_tab_content.tpl @@ -127,6 +127,15 @@ + {* Modal for extra demands *} @@ -229,3 +232,4 @@ #rooms_extra_demands .room_demand_detail { padding: 15px 15px 0px 15px;} +{/if} diff --git a/controllers/admin/AdminCartsController.php b/controllers/admin/AdminCartsController.php index 2ce84593f..0954044c1 100644 --- a/controllers/admin/AdminCartsController.php +++ b/controllers/admin/AdminCartsController.php @@ -612,10 +612,24 @@ class AdminCartsControllerCore extends AdminController $cart_detail_data = array(); $cart_detail_data_obj = new HotelCartBookingData(); $cart_detail_data_obj->updateIdCurrencyByIdCart($id_cart, $currency->id); - $cart_detail_data = $cart_detail_data_obj->getCartFormatedBookinInfoByIdCart((int) $id_cart); + + if ($cart_detail_data = $cart_detail_data_obj->getCartFormatedBookinInfoByIdCart((int) $id_cart)) { + $objRoomType = new HotelRoomType(); + foreach ($cart_detail_data as $key => $cart_data) { + + $cart_detail_data[$key]['room_type_info'] = $objRoomType->getRoomTypeInfoByIdProduct($cart_data['id_product']); + } + } + $occupancyRequiredForBooking = false; + if (Configuration::get('PS_BACKOFFICE_ROOM_BOOKING_TYPE') == HotelBookingDetail::PS_ROOM_UNIT_SELECTION_TYPE_OCCUPANCY) { + $occupancyRequiredForBooking = true; + } + $this->context->smarty->assign(array( 'cart_detail_data' => $cart_detail_data, 'currency' => new Currency((int)$this->context->cart->id_currency), + 'occupancy_required_for_booking' => $occupancyRequiredForBooking, + 'ajax' => true )); $tpl_path = 'default/template/controllers/orders/_current_cart_details_data.tpl'; From f3391db29eca63028cc1b30f7ed73d1b0b8a8cfb Mon Sep 17 00:00:00 2001 From: "vishalsingh.qlo325" Date: Mon, 20 Jan 2025 19:25:58 +0530 Subject: [PATCH 07/50] Fixed: Extra demands remained selected even when rooms were unavailable for the selected date range in the front office. --- themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js | 1 + 1 file changed, 1 insertion(+) diff --git a/themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js b/themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js index c2fcf30fe..8f672c73f 100644 --- a/themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js +++ b/themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js @@ -1281,6 +1281,7 @@ function disableRoomTypeDemands(show) { if (show) { $('.room_demands_container_overlay').show(); $('.room_demands_container').find('input:checkbox.id_room_type_demand').prop('checked', false); + $('.room_demand_block').find('.id_room_type_demand').prop('checked', false).parent().removeClass('checked'); $('.room_demands_container').find('input:checkbox.id_room_type_demand').attr('disabled', 'disabled'); } else { $('.room_demands_container_overlay').hide(); From 91a700e2e22fcf39256e7297f1534af36accc611 Mon Sep 17 00:00:00 2001 From: "vishalsingh.qlo325" Date: Tue, 21 Jan 2025 11:28:19 +0530 Subject: [PATCH 08/50] Added: Proper validations before calling the function deleteCartBookingData() --- classes/Customer.php | 10 ++++++---- .../admin/AdminHotelRoomsBookingController.php | 14 +++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/classes/Customer.php b/classes/Customer.php index 2983aa607..05e84952c 100644 --- a/classes/Customer.php +++ b/classes/Customer.php @@ -324,10 +324,12 @@ class CustomerCore extends ObjectModel $objHtlCartData = new HotelCartBookingData(); foreach ($carts as $cart) { $objCart = new Cart($cart['id_cart']); - Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'cart WHERE id_cart='.(int)$cart['id_cart']); - Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'cart_product WHERE id_cart='.(int)$cart['id_cart']); - // delete rows from hotel booking cart table - $objHtlCartData->deleteCartBookingData($cart['id_cart'], 0, 0, 0, 0, 0); + if ($cart['id_cart']) { + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'cart WHERE id_cart='.(int)$cart['id_cart']); + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'cart_product WHERE id_cart='.(int)$cart['id_cart']); + // delete rows from hotel booking cart table + $objHtlCartData->deleteCartBookingData($cart['id_cart'], 0, 0, 0, 0, 0); + } } } diff --git a/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php b/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php index 239306922..6ff7606c1 100644 --- a/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php +++ b/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php @@ -746,13 +746,13 @@ class AdminHotelRoomsBookingController extends ModuleAdminController } } else { // remove room from cart - if ((Validate::isLoadedObject($objHotelCartBookingData = new HotelCartBookingData((int) $id_cart_book_data))) - && $objHotelCartBookingData->deleteCartBookingData( - $obj_booking_dtl->id_cart, - $objHotelCartBookingData->id_product, - $objHotelCartBookingData->id_room, - $objHotelCartBookingData->date_from, - $objHotelCartBookingData->date_to + $objHotelCartBookingData = new HotelCartBookingData($id_cart_book_data); + if ($objHotelCartBookingData->deleteCartBookingData( + 0, + $objHotelCartBookingData->id_product, + $objHotelCartBookingData->id_room, + $objHotelCartBookingData->date_from, + $objHotelCartBookingData->date_to )) { $response['success'] = true; if ($ajax_delete) { From 2f728f513b87ba0155fd3230eac73787214b356b Mon Sep 17 00:00:00 2001 From: "vishalsingh.qlo325" Date: Tue, 21 Jan 2025 11:30:49 +0530 Subject: [PATCH 09/50] Added: proper validations before deleteCartBookingData() calls --- .../admin/AdminHotelRoomsBookingController.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php b/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php index 6ff7606c1..dd9983e67 100644 --- a/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php +++ b/modules/hotelreservationsystem/controllers/admin/AdminHotelRoomsBookingController.php @@ -746,13 +746,13 @@ class AdminHotelRoomsBookingController extends ModuleAdminController } } else { // remove room from cart - $objHotelCartBookingData = new HotelCartBookingData($id_cart_book_data); - if ($objHotelCartBookingData->deleteCartBookingData( - 0, - $objHotelCartBookingData->id_product, - $objHotelCartBookingData->id_room, - $objHotelCartBookingData->date_from, - $objHotelCartBookingData->date_to + if ((Validate::isLoadedObject($objHotelCartBookingData = new HotelCartBookingData((int) $id_cart_book_data))) + && $objHotelCartBookingData->deleteCartBookingData( + 0, + $objHotelCartBookingData->id_product, + $objHotelCartBookingData->id_room, + $objHotelCartBookingData->date_from, + $objHotelCartBookingData->date_to )) { $response['success'] = true; if ($ajax_delete) { From 39b3dfbc8e6a89f3790475f9e0afd3a0e7a84071 Mon Sep 17 00:00:00 2001 From: "vishalsingh.qlo325" Date: Tue, 21 Jan 2025 17:47:28 +0530 Subject: [PATCH 10/50] Updated: Parameters in 'actionRoomReallocateAfter' --- .../hotelreservationsystem/classes/HotelBookingDetail.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/hotelreservationsystem/classes/HotelBookingDetail.php b/modules/hotelreservationsystem/classes/HotelBookingDetail.php index 5686dad65..4357fc2a7 100644 --- a/modules/hotelreservationsystem/classes/HotelBookingDetail.php +++ b/modules/hotelreservationsystem/classes/HotelBookingDetail.php @@ -1872,6 +1872,7 @@ class HotelBookingDetail extends ObjectModel $reallocatedBookingId = 0; // get the cart booking data for the given booking if (Validate::isLoadedObject($objOldHotelBooking = new HotelBookingDetail($idHotelBooking))) { + $objectHotelbookingFrom = $objOldHotelBooking; $objHotelRoomInfo = new HotelRoomInformation($idRoom); $idNewRoomType = $objHotelRoomInfo->id_product; if ($objOldHotelBooking->id_product != $idNewRoomType) { @@ -2098,6 +2099,7 @@ class HotelBookingDetail extends ObjectModel if ($result &= $objBookingDetail->save()) { $reallocatedBookingId = $objBookingDetail->id; + $objectHotelbookingTo = $objBookingDetail; // Get Booking Demands of the old booking to add in the new booking creation $objBookingDemand = new HotelBookingDemands(); if ($oldBookingDemands = $objBookingDemand->getRoomTypeBookingExtraDemands( @@ -2278,6 +2280,7 @@ class HotelBookingDetail extends ObjectModel $result &= $objOldHotelBooking->save(); $reallocatedBookingId = $objOldHotelBooking->id; + $objectHotelbookingTo = $objOldHotelBooking; } if ($result && $reallocatedBookingId) { @@ -2286,6 +2289,8 @@ class HotelBookingDetail extends ObjectModel array( 'id_htl_booking_from' => $idHotelBooking, 'id_htl_booking_to' => $reallocatedBookingId, + 'objectHotelbookingFrom' => $objOldHotelBooking, + 'objectHotelbookingTo' => $objBookingDetail, ) ); From 9da53bd8321d24279cd80e43fd87d0c80f1b5359 Mon Sep 17 00:00:00 2001 From: "vishalsingh.qlo325" Date: Wed, 22 Jan 2025 15:13:00 +0530 Subject: [PATCH 11/50] Fixed: search panel on landing page does not displays properly if there are any issues in the jquery --- .../classes/WkRoomSearchHelper.php | 15 +++++++++++++ .../views/js/wk-room-search-block.js | 17 --------------- .../templates/hook/landingPageSearch.tpl | 2 +- .../views/templates/hook/searchForm.tpl | 21 +++++++------------ 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/modules/wkroomsearchblock/classes/WkRoomSearchHelper.php b/modules/wkroomsearchblock/classes/WkRoomSearchHelper.php index 9f90bf623..8a0c2335e 100644 --- a/modules/wkroomsearchblock/classes/WkRoomSearchHelper.php +++ b/modules/wkroomsearchblock/classes/WkRoomSearchHelper.php @@ -264,6 +264,21 @@ class WkRoomSearchHelper )); } + $totalColumns = 9;// min value + if ($locationEnabled) { + $totalColumns += 4; + } + + if (!(count($hotelsInfo) <= 1 && !$smartyVars['show_hotel_name'])) { + $totalColumns += 5; + } + + if (Configuration::get('PS_FRONT_SEARCH_TYPE') == HotelBookingDetail::SEARCH_TYPE_OWS) { + $totalColumns += 4; + } + + $smartyVars['total_columns'] = $totalColumns; + Context::getContext()->smarty->assign($smartyVars); } } diff --git a/modules/wkroomsearchblock/views/js/wk-room-search-block.js b/modules/wkroomsearchblock/views/js/wk-room-search-block.js index 36d0a4205..e18babcb7 100644 --- a/modules/wkroomsearchblock/views/js/wk-room-search-block.js +++ b/modules/wkroomsearchblock/views/js/wk-room-search-block.js @@ -337,23 +337,6 @@ const BookingSearchManager = { return true; }, } -function updateGridColumns() { - const gridContainer = $('#search_hotel_block_form > .grid'); - $(gridContainer).each(function() { - const gridItems = $(this).find('div.grid-item'); - let totalColumns = 0; - - Array.from(gridItems).forEach(item => { - totalColumns += parseInt(getComputedStyle(item).getPropertyValue('--col-span')); - }); - - $(this).css('grid-template-columns', `repeat(${totalColumns}, 1fr)`); - - Array.from(gridItems).forEach(item => { - item.style.gridColumn = `span ${getComputedStyle(item).getPropertyValue('--col-span')}`; - }); - }) -} $(document).ready(function() { // initialize booking search fields diff --git a/modules/wkroomsearchblock/views/templates/hook/landingPageSearch.tpl b/modules/wkroomsearchblock/views/templates/hook/landingPageSearch.tpl index 0849db558..e1173253d 100644 --- a/modules/wkroomsearchblock/views/templates/hook/landingPageSearch.tpl +++ b/modules/wkroomsearchblock/views/templates/hook/landingPageSearch.tpl @@ -23,7 +23,7 @@ {if isset($hotels_info) && count($hotels_info)}
-
+ diff --git a/modules/wkroomsearchblock/views/templates/hook/searchForm.tpl b/modules/wkroomsearchblock/views/templates/hook/searchForm.tpl index d7f89bc11..087033914 100644 --- a/modules/wkroomsearchblock/views/templates/hook/searchForm.tpl +++ b/modules/wkroomsearchblock/views/templates/hook/searchForm.tpl @@ -20,10 +20,10 @@
{hook h='displaySearchFormFieldsBefore'} {block name="search_form_fields_wrapper"} -
+
{block name='search_form_location'} {if isset($location_enabled) && $location_enabled} -
+