Merge branch 'develop' into gli-3047
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
{**
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Open Software License version 3.0
|
||||
* that is bundled with this package in the file LICENSE.md
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/license/osl-3-0-php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to support@qloapps.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to a newer
|
||||
* versions in the future. If you wish to customize this module for your needs
|
||||
* please refer to https://store.webkul.com/customisation-guidelines for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright Since 2010 Webkul
|
||||
* @license https://opensource.org/license/osl-3-0-php Open Software License version 3.0
|
||||
*}
|
||||
|
||||
<div class="panel">
|
||||
<div class="panel-heading">
|
||||
<i class="icon-list-ul"></i>
|
||||
{l s='Guest Registration Card Information'}
|
||||
</div>
|
||||
|
||||
<form id="grcCardInfoForm" method="post" action="{$guest_reg_card_form_action|escape:'html':'UTF-8'}" class="form-horizontal">
|
||||
<input type="hidden" name="submitGrcCardInfo" value="1" />
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-lg-3">
|
||||
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Select sections and fields to display on the Guest Registration Card PDF.'}">{l s='Select fields'}</span>
|
||||
</label>
|
||||
<div class="col-xs-7">
|
||||
{$guest_reg_card_info_tree}
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<a href="#" class="btn btn-default" data-toggle="modal" data-target="#guestRegPreviewModal">
|
||||
<i class="icon-eye"></i> {l s='Preview'}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel-footer">
|
||||
<button type="submit" class="btn btn-default pull-right">
|
||||
<i class="process-icon-save"></i> {l s='Save'}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="guestRegPreviewModal" tabindex="-1" role="dialog" aria-labelledby="guestRegPreviewModalLabel">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h4 class="modal-title" id="guestRegPreviewModalLabel">{$guest_reg_card_preview_title|escape:'html':'UTF-8'}</h4>
|
||||
</div>
|
||||
<div class="modal-body text-center">
|
||||
<img src="{$guest_reg_card_preview_img_url|escape:'html':'UTF-8'}" alt="{$guest_reg_card_preview_title|escape:'html':'UTF-8'}" class="img-responsive" style="max-width:100%;" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.md
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to support@qloapps.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to a newer
|
||||
* versions in the future. If you wish to customize this module for your needs
|
||||
* please refer to https://store.webkul.com/customisation-guidelines for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright Since 2010 Webkul
|
||||
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License 3.0
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../../../');
|
||||
exit;
|
||||
@@ -164,6 +164,11 @@
|
||||
<span class="badge badge-info">{if $data.num_checkin_documents > 0}{$data.num_checkin_documents}{else}0{/if}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="{l s='Guest Registration Card'}" href="{$link->getAdminLink('AdminPdf')|escape:'html':'UTF-8'}&submitAction=generateGuestRegistrationFormPDF&id_hotel_booking_detail={$data['id']}" target="_blank">
|
||||
<i class="icon-download"></i> {l s='GRC'}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="room_reallocate_swap" id="reallocate_room_{$data['id']}" data-room_type_name="{$data['room_type_name']}" data-toggle="modal" data-target="#mySwappigModal" data-id_htl_booking="{$data['id']}" data-id_order="{$data['id_order']}" data-room_num='{$data.room_num}' data-id_room_type='{$data.id_product}' data-cust_name='{$data.alloted_cust_name}' data-cust_email='{$data.alloted_cust_email}' data-avail_rm_swap='{$data.avail_rooms_to_swap|@json_encode}' data-avail_realloc_room_types='{$data.avail_room_types_to_realloc|@json_encode}' data-allotment_type='{$data.booking_type}' data-allotment_type_label='{if $data.booking_type == $ALLOTMENT_MANUAL}{l s='Manual'}{else}{l s='Auto'}{/if}' data-comment='{$data.comment}'>
|
||||
<i class="icon-refresh"></i>
|
||||
|
||||
@@ -543,14 +543,14 @@ class AddressCore extends ObjectModel
|
||||
LEFT JOIN `'._DB_PREFIX_.'state` s
|
||||
ON s.`id_country` = cl.`id_country` AND s.`id_state` = a.`id_state`
|
||||
WHERE id_customer > 0 AND a.`deleted` = 0 AND
|
||||
(a.`address1` LIKE \'%'.$query.'%\' OR
|
||||
a.`postcode` LIKE \'%'.$query.'%\' OR
|
||||
a.`city` LIKE \'%'.$query.'%\' OR
|
||||
a.`phone` LIKE \'%'.$query.'%\' OR
|
||||
a.`company` LIKE \'%'.$query.'%\' OR
|
||||
a.`alias` LIKE \'%'.$query.'%\' OR
|
||||
s.`name` LIKE \'%'.$query.'%\' OR
|
||||
cl.`name` LIKE \'%'.$query.'%\'
|
||||
(a.`address1` LIKE \'%'.pSQL($query).'%\' OR
|
||||
a.`postcode` LIKE \'%'.pSQL($query).'%\' OR
|
||||
a.`city` LIKE \'%'.pSQL($query).'%\' OR
|
||||
a.`phone` LIKE \'%'.pSQL($query).'%\' OR
|
||||
a.`company` LIKE \'%'.pSQL($query).'%\' OR
|
||||
a.`alias` LIKE \'%'.pSQL($query).'%\' OR
|
||||
s.`name` LIKE \'%'.pSQL($query).'%\' OR
|
||||
cl.`name` LIKE \'%'.pSQL($query).'%\'
|
||||
)
|
||||
');
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ class CustomerMessageCore extends ObjectModel
|
||||
ON (ct.`id_customer_thread` = cm.`id_customer_thread`)
|
||||
LEFT JOIN '._DB_PREFIX_.'customer c
|
||||
ON (IFNULL(ct.`id_customer`, ct.`email`) = IFNULL(c.`id_customer`, c.`email`))
|
||||
WHERE `message` LIKE \'%'.$query.'%\'
|
||||
WHERE `message` LIKE \'%'.pSQL($query).'%\'
|
||||
');
|
||||
}
|
||||
|
||||
|
||||
@@ -677,8 +677,14 @@ abstract class PaymentModuleCore extends Module
|
||||
$orderTotals[$order->id]['excl'] -= $used['excl'];
|
||||
$cart_rules[$key]['remaining'] -= $used['excl'];
|
||||
}
|
||||
|
||||
$order->addCartRule($cart_rule['obj']->id, $cart_rule['obj']->name, $values, 0, $cart_rule['obj']->free_shipping);
|
||||
|
||||
$order->addCartRule(
|
||||
$cart_rule['obj']->id,
|
||||
$cart_rule['obj']->name,
|
||||
array('tax_incl' => $used['incl'], 'tax_excl' => $used['excl']),
|
||||
0,
|
||||
$cart_rule['obj']->free_shipping
|
||||
);
|
||||
|
||||
if ($id_order_state != Configuration::get('PS_OS_ERROR') && $id_order_state != Configuration::get('PS_OS_CANCELED') && !in_array($cart_rule['obj']->id, $cart_rule_used)) {
|
||||
$cart_rule_used[] = $cart_rule['obj']->id;
|
||||
@@ -691,7 +697,7 @@ abstract class PaymentModuleCore extends Module
|
||||
|
||||
$cart_rules_list[] = array(
|
||||
'voucher_name' => $cart_rule['obj']->name,
|
||||
'voucher_reduction' => ($values['tax_incl'] != 0.00 ? '-' : '').Tools::displayPrice($values['tax_incl'], $this->context->currency, false)
|
||||
'voucher_reduction' => ($used['incl'] != 0.00 ? '-' : '').Tools::displayPrice($used['incl'], $this->context->currency, false)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1211,10 +1211,25 @@ class AdminControllerCore extends Controller
|
||||
if (ob_get_level() && ob_get_length() > 0) {
|
||||
ob_clean();
|
||||
}
|
||||
$fields_to_export = array();
|
||||
if((int)Configuration::get('PS_EXPORT_FIELDS_TYPE') === HelperList::QLO_EXPORT_FIELDS_SELECTED){
|
||||
$list_visibility = json_decode($this->context->cookie->{'list_visibility_'.$this->context->controller->controller_name});
|
||||
foreach ($this->fields_list as $key => $field) {
|
||||
if ((!isset($field['displayed']) || $field['displayed'])
|
||||
&& (empty($field['optional'])
|
||||
|| (!is_array($list_visibility) && !empty($field['visible_default']))
|
||||
|| (is_array($list_visibility) && in_array($key, $list_visibility))
|
||||
)) {
|
||||
$fields_to_export[$key] = $field;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->getList($this->context->language->id, null, null, 0, false);
|
||||
if (!count($this->_list)) {
|
||||
return;
|
||||
}
|
||||
$fields_to_export = (int)Configuration::get('PS_EXPORT_FIELDS_TYPE') === HelperList::QLO_EXPORT_FIELDS_SELECTED ? $fields_to_export : $this->fields_list;
|
||||
|
||||
header('Content-type: text/csv');
|
||||
header('Content-Type: application/force-download; charset=UTF-8');
|
||||
@@ -1223,9 +1238,9 @@ class AdminControllerCore extends Controller
|
||||
|
||||
$fd = fopen('php://output', 'wb');
|
||||
$headers = array();
|
||||
foreach ($this->fields_list as $key => $datas) {
|
||||
foreach ($fields_to_export as $key => $datas) {
|
||||
if ('PDF' === $datas['title']) {
|
||||
unset($this->fields_list[$key]);
|
||||
unset($fields_to_export[$key]);
|
||||
} else {
|
||||
if ('ID' === $datas['title']) {
|
||||
$headers[] = strtolower(Tools::htmlentitiesDecodeUTF8($datas['title']));
|
||||
@@ -1239,7 +1254,7 @@ class AdminControllerCore extends Controller
|
||||
foreach ($this->_list as $i => $row) {
|
||||
$content = array();
|
||||
$path_to_image = false;
|
||||
foreach ($this->fields_list as $key => $params) {
|
||||
foreach ($fields_to_export as $key => $params) {
|
||||
$field_value = isset($row[$key]) ? Tools::htmlentitiesDecodeUTF8(Tools::nl2br($row[$key])) : '';
|
||||
if ($key == 'image') {
|
||||
if ($params['image'] != 'p' || Configuration::get('PS_LEGACY_IMAGES')) {
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
*/
|
||||
class HelperListCore extends Helper
|
||||
{
|
||||
const QLO_EXPORT_FIELDS_ALL = 0;
|
||||
const QLO_EXPORT_FIELDS_SELECTED = 1;
|
||||
/**
|
||||
* @var int|null
|
||||
*/
|
||||
|
||||
292
classes/pdf/HTMLTemplateGuestRegistrationForm.php
Normal file
292
classes/pdf/HTMLTemplateGuestRegistrationForm.php
Normal file
@@ -0,0 +1,292 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Open Software License version 3.0
|
||||
* that is bundled with this package in the file LICENSE.md
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/license/osl-3.0-php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to support@qloapps.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to a newer
|
||||
* versions in the future. If you wish to customize this module for your needs
|
||||
* please refer to https://store.webkul.com/customisation-guidelines for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright Since 2010 Webkul
|
||||
* @license https://opensource.org/license/osl-3.0-php Open Software License version 3.0
|
||||
*/
|
||||
|
||||
class HTMLTemplateGuestRegistrationFormCore extends HTMLTemplate
|
||||
{
|
||||
public $order;
|
||||
public $available_in_your_account = false;
|
||||
protected $hotelBookingDetail = null;
|
||||
|
||||
/**
|
||||
* @param int $idHotelBookingDetail
|
||||
* @param $smarty
|
||||
*/
|
||||
public function __construct($idHotelBookingDetail, $smarty)
|
||||
{
|
||||
$this->hotelBookingDetail = new HotelBookingDetail((int)$idHotelBookingDetail);
|
||||
$this->order = new Order((int)$this->hotelBookingDetail->id_order);
|
||||
$this->smarty = $smarty;
|
||||
$this->date = Tools::displayDate($this->order->date_add);
|
||||
$this->title = $this->order->getUniqReference();
|
||||
$this->shop = new Shop((int)$this->order->id_shop);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the template's HTML header
|
||||
*
|
||||
* @return string HTML header
|
||||
*/
|
||||
public function getHeader()
|
||||
{
|
||||
$this->assignCommonHeaderData();
|
||||
$this->smarty->assign(array('header' => HTMLTemplateGuestRegistrationForm::l('Guest Registration Card')));
|
||||
|
||||
return $this->smarty->fetch($this->getTemplate('header'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the template's HTML content
|
||||
*
|
||||
* @return string HTML content
|
||||
*/
|
||||
public function getContent()
|
||||
{
|
||||
$idLang = (int)$this->order->id_lang;
|
||||
$objHotelBookingDetail = $this->hotelBookingDetail;
|
||||
$idHotel = (int)$objHotelBookingDetail->id_hotel;
|
||||
|
||||
$objHotelBranchInformation = null;
|
||||
$hotelCountry = '';
|
||||
|
||||
if ($idHotel) {
|
||||
$objHotelBranchInformation = new HotelBranchInformation($idHotel, $idLang);
|
||||
if (Validate::isLoadedObject($objHotelBranchInformation)) {
|
||||
if ($objHotelBranchInformation->id_country) {
|
||||
$objCountry = new Country((int)$objHotelBranchInformation->id_country, $idLang);
|
||||
if (Validate::isLoadedObject($objCountry)) {
|
||||
$hotelCountry = (string)$objCountry->name;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$objHotelBranchInformation = null;
|
||||
}
|
||||
}
|
||||
|
||||
$ratePerNight = '';
|
||||
$arrivalDateTime = '';
|
||||
$departureDateTime = '';
|
||||
|
||||
if (Validate::isLoadedObject($objHotelBookingDetail)) {
|
||||
$nights = (int)HotelHelper::getNumberOfDays($objHotelBookingDetail->date_from, $objHotelBookingDetail->date_to);
|
||||
if ($nights > 0) {
|
||||
$currency = new Currency((int)$this->order->id_currency);
|
||||
$ratePerNight = Tools::displayPrice((float)$objHotelBookingDetail->total_price_tax_incl / $nights, $currency, false);
|
||||
}
|
||||
$arrivalDateTime = $objHotelBookingDetail->date_from ? Tools::displayDate($objHotelBookingDetail->date_from) : '';
|
||||
$departureDateTime = $objHotelBookingDetail->date_to ? Tools::displayDate($objHotelBookingDetail->date_to) : '';
|
||||
if ($arrivalDateTime && $objHotelBranchInformation && $objHotelBranchInformation->check_in && $objHotelBranchInformation->check_in != '00:00:00') {
|
||||
$arrivalDateTime .= ' '.date('h:i a', strtotime($objHotelBranchInformation->check_in));
|
||||
}
|
||||
if ($departureDateTime && $objHotelBranchInformation && $objHotelBranchInformation->check_out && $objHotelBranchInformation->check_out != '00:00:00') {
|
||||
$departureDateTime .= ' '.date('h:i a', strtotime($objHotelBranchInformation->check_out));
|
||||
}
|
||||
}
|
||||
|
||||
$additionalGuestsRows = 0;
|
||||
if (Validate::isLoadedObject($objHotelBookingDetail)) {
|
||||
$totalGuests = (int)$objHotelBookingDetail->adults + (int)$objHotelBookingDetail->children;
|
||||
$additionalGuestsRows = ($totalGuests > 1) ? ($totalGuests - 1) : 0;
|
||||
}
|
||||
|
||||
// Build saved config: [sectionId => [fieldId => true, ...]]
|
||||
$grcFields = array();
|
||||
$grcInfoJson = Configuration::get('QLO_GUEST_REGISTRATION_CARD_INFO');
|
||||
if ($grcInfoJson !== false && $grcInfoJson !== '') {
|
||||
$grcData = Tools::jsonDecode($grcInfoJson, true);
|
||||
if (is_array($grcData)) {
|
||||
foreach ($grcData as $sectionId => $fieldIds) {
|
||||
$fieldIds = array_map('intval', (array)$fieldIds);
|
||||
if (!empty($fieldIds)) {
|
||||
$grcFields[(int)$sectionId] = array_flip($fieldIds);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// When nothing saved, show all sections and fields
|
||||
$allVisible = empty($grcFields);
|
||||
|
||||
// One pass: build false|string label for every field directly.
|
||||
// false = hidden, non-empty string = visible (used for both visibility check and label text in template).
|
||||
$grcInfo = $this->hotelBookingDetail->getRegistrationCardInfo();
|
||||
$fieldLabels = array();
|
||||
foreach ($grcInfo as $sectionId => $section) {
|
||||
$isSectionEnabled = $allVisible || isset($grcFields[$sectionId]);
|
||||
$fieldLabels[$sectionId] = array();
|
||||
foreach ($section['fields'] as $fieldId => $fieldLabel) {
|
||||
$isVisible = $isSectionEnabled && ($allVisible || isset($grcFields[$sectionId][$fieldId]));
|
||||
$fieldLabels[$sectionId][$fieldId] = $isVisible ? $fieldLabel : false;
|
||||
}
|
||||
}
|
||||
|
||||
$section1 = HotelBookingDetail::GRC_SECTION_GUEST_INFO;
|
||||
$section2 = HotelBookingDetail::GRC_SECTION_TRAVEL_INFO;
|
||||
$section3 = HotelBookingDetail::GRC_SECTION_BOOKING_INFO;
|
||||
$section4 = HotelBookingDetail::GRC_SECTION_IDENTIFICATION;
|
||||
$section5 = HotelBookingDetail::GRC_SECTION_ADDITIONAL_GUESTS;
|
||||
$section6 = HotelBookingDetail::GRC_SECTION_BILLING_CORPORATE;
|
||||
$section7 = HotelBookingDetail::GRC_SECTION_PAYMENT_DEPOSIT;
|
||||
$section8 = HotelBookingDetail::GRC_SECTION_GUEST_SIGNATURE;
|
||||
$section9 = HotelBookingDetail::GRC_SECTION_PROPERTY_REGS;
|
||||
$section10 = HotelBookingDetail::GRC_SECTION_OFFICE_USE_ONLY;
|
||||
|
||||
// $labels: false = field hidden, label string = field visible.
|
||||
// Template uses {if $labels.key} for visibility AND {$labels.key} for label — no separate boolean assigns.
|
||||
$labels = array(
|
||||
// Section 1: Guest Information
|
||||
'title' => $fieldLabels[$section1][HotelBookingDetail::GRC_GUEST_TITLE],
|
||||
'full_name' => $fieldLabels[$section1][HotelBookingDetail::GRC_GUEST_FULL_NAME],
|
||||
'phone' => $fieldLabels[$section1][HotelBookingDetail::GRC_GUEST_PHONE],
|
||||
'email' => $fieldLabels[$section1][HotelBookingDetail::GRC_GUEST_EMAIL],
|
||||
'dob' => $fieldLabels[$section1][HotelBookingDetail::GRC_GUEST_DOB],
|
||||
'nationality' => $fieldLabels[$section1][HotelBookingDetail::GRC_GUEST_NATIONALITY],
|
||||
'city_country' => $fieldLabels[$section1][HotelBookingDetail::GRC_GUEST_CITY_COUNTRY],
|
||||
'postal_code' => $fieldLabels[$section1][HotelBookingDetail::GRC_GUEST_POSTAL_CODE],
|
||||
'address' => $fieldLabels[$section1][HotelBookingDetail::GRC_GUEST_ADDRESS],
|
||||
|
||||
// Section 2: Travel Information
|
||||
'arrived_from' => $fieldLabels[$section2][HotelBookingDetail::GRC_TRAVEL_ARRIVED_FROM],
|
||||
'next_dest' => $fieldLabels[$section2][HotelBookingDetail::GRC_TRAVEL_NEXT_DESTINATION],
|
||||
'flight' => $fieldLabels[$section2][HotelBookingDetail::GRC_TRAVEL_FLIGHT_TRAIN],
|
||||
'vehicle' => $fieldLabels[$section2][HotelBookingDetail::GRC_TRAVEL_VEHICLE_REG],
|
||||
'purpose' => $fieldLabels[$section2][HotelBookingDetail::GRC_TRAVEL_PURPOSE_OF_VISIT],
|
||||
|
||||
// Section 3: Booking Information
|
||||
'booking_ref' => $fieldLabels[$section3][HotelBookingDetail::GRC_BOOKING_REFERENCE],
|
||||
'booking_rate' => $fieldLabels[$section3][HotelBookingDetail::GRC_BOOKING_RATE_PER_NIGHT],
|
||||
'booking_arrival' => $fieldLabels[$section3][HotelBookingDetail::GRC_BOOKING_ARRIVAL],
|
||||
'booking_departure' => $fieldLabels[$section3][HotelBookingDetail::GRC_BOOKING_DEPARTURE],
|
||||
'booking_room_type' => $fieldLabels[$section3][HotelBookingDetail::GRC_BOOKING_ROOM_TYPE],
|
||||
'booking_room_number' => $fieldLabels[$section3][HotelBookingDetail::GRC_BOOKING_ROOM_NUMBER],
|
||||
'num_guests' => $fieldLabels[$section3][HotelBookingDetail::GRC_BOOKING_NUM_GUESTS],
|
||||
|
||||
// Section 4: Identification Document
|
||||
'id_proof' => $fieldLabels[$section4][HotelBookingDetail::GRC_ID_IDENTITY_PROOF],
|
||||
'id_number' => $fieldLabels[$section4][HotelBookingDetail::GRC_ID_NUMBER],
|
||||
'passport' => $fieldLabels[$section4][HotelBookingDetail::GRC_ID_PASSPORT_NO],
|
||||
'place_of_issue' => $fieldLabels[$section4][HotelBookingDetail::GRC_ID_PLACE_OF_ISSUE],
|
||||
'date_of_issue' => $fieldLabels[$section4][HotelBookingDetail::GRC_ID_DATE_OF_ISSUE],
|
||||
'date_of_expiry' => $fieldLabels[$section4][HotelBookingDetail::GRC_ID_DATE_OF_EXPIRY],
|
||||
'visa' => $fieldLabels[$section4][HotelBookingDetail::GRC_ID_VISA_NUMBER],
|
||||
'valid_until' => $fieldLabels[$section4][HotelBookingDetail::GRC_ID_VALID_UNTIL],
|
||||
'arrival_in_country' => $fieldLabels[$section4][HotelBookingDetail::GRC_ID_ARRIVAL_DATE_IN_COUNTRY],
|
||||
|
||||
// Section 5: Additional Guests
|
||||
'addguest_name' => $fieldLabels[$section5][HotelBookingDetail::GRC_ADD_GUEST_NAME],
|
||||
'addguest_id_type' => $fieldLabels[$section5][HotelBookingDetail::GRC_ADD_GUEST_ID_TYPE],
|
||||
'addguest_id_number' => $fieldLabels[$section5][HotelBookingDetail::GRC_ADD_GUEST_ID_NUMBER],
|
||||
'addguest_nationality' => $fieldLabels[$section5][HotelBookingDetail::GRC_ADD_GUEST_NATIONALITY],
|
||||
|
||||
// Section 6: Billing & Corporate
|
||||
'company' => $fieldLabels[$section6][HotelBookingDetail::GRC_BILLING_COMPANY],
|
||||
'tax_id' => $fieldLabels[$section6][HotelBookingDetail::GRC_BILLING_TAX_ID],
|
||||
|
||||
// Section 7: Payment & Deposit
|
||||
'payment_method' => $fieldLabels[$section7][HotelBookingDetail::GRC_PAYMENT_METHOD],
|
||||
'card_number' => $fieldLabels[$section7][HotelBookingDetail::GRC_PAYMENT_CARD_NUMBER],
|
||||
'security_deposit' => $fieldLabels[$section7][HotelBookingDetail::GRC_PAYMENT_SECURITY_DEPOSIT],
|
||||
|
||||
// Section 8: Guest Signature
|
||||
'signature' => $fieldLabels[$section8][HotelBookingDetail::GRC_SIG_SIGNATURE],
|
||||
'sig_date' => $fieldLabels[$section8][HotelBookingDetail::GRC_SIG_DATE],
|
||||
|
||||
// Section 9: Property Regulations (checkin/checkout share one visibility flag; two separate PDF sub-labels)
|
||||
'checkin_time' => $fieldLabels[$section9][HotelBookingDetail::GRC_PROP_CHECKIN_CHECKOUT_TIME] ? 'Check-in Time' : false,
|
||||
'checkout_time' => $fieldLabels[$section9][HotelBookingDetail::GRC_PROP_CHECKIN_CHECKOUT_TIME] ? 'Check-out Time' : false,
|
||||
'hotel_policies' => $fieldLabels[$section9][HotelBookingDetail::GRC_PROP_HOTEL_POLICIES],
|
||||
|
||||
// Section 10: For Office Use Only
|
||||
'staff_name' => $fieldLabels[$section10][HotelBookingDetail::GRC_OFFICE_STAFF_NAME],
|
||||
'office_checkin_time' => $fieldLabels[$section10][HotelBookingDetail::GRC_OFFICE_CHECKIN_TIME],
|
||||
'id_verified' => $fieldLabels[$section10][HotelBookingDetail::GRC_OFFICE_ID_VERIFIED],
|
||||
'reg_no' => $fieldLabels[$section10][HotelBookingDetail::GRC_OFFICE_REG_NO],
|
||||
);
|
||||
|
||||
$showLocalIdGroup = (bool)$labels['id_proof'] || (bool)$labels['id_number'];
|
||||
$showIntIdGroup = (bool)$labels['passport'] || (bool)$labels['place_of_issue'] || (bool)$labels['date_of_issue']
|
||||
|| (bool)$labels['date_of_expiry'] || (bool)$labels['visa'] || (bool)$labels['valid_until']
|
||||
|| (bool)$labels['arrival_in_country'];
|
||||
|
||||
$this->smarty->assign(array(
|
||||
'style_tab' => $this->smarty->fetch($this->getTemplate('invoice.style-tab')),
|
||||
'hotel' => $objHotelBranchInformation,
|
||||
'hotel_country' => $hotelCountry,
|
||||
'booking_reference' => $this->order->getUniqReference(),
|
||||
'arrival_date_time' => $arrivalDateTime,
|
||||
'departure_date_time' => $departureDateTime,
|
||||
'room_type' => Validate::isLoadedObject($objHotelBookingDetail) ? $objHotelBookingDetail->room_type_name : '',
|
||||
'room_number' => Validate::isLoadedObject($objHotelBookingDetail) ? $objHotelBookingDetail->room_num : '',
|
||||
'adults' => Validate::isLoadedObject($objHotelBookingDetail) ? (int)$objHotelBookingDetail->adults : 0,
|
||||
'children' => Validate::isLoadedObject($objHotelBookingDetail) ? (int)$objHotelBookingDetail->children : 0,
|
||||
'rate_per_night' => $ratePerNight,
|
||||
'additional_guests_rows' => $additionalGuestsRows,
|
||||
|
||||
// Section visibility
|
||||
'show_section_guest_info' => !empty(array_filter($fieldLabels[$section1])),
|
||||
'show_section_travel_info' => !empty(array_filter($fieldLabels[$section2])),
|
||||
'show_section_booking_info' => !empty(array_filter($fieldLabels[$section3])),
|
||||
'show_section_identification' => !empty(array_filter($fieldLabels[$section4])),
|
||||
'show_section_additional_guests' => !empty(array_filter($fieldLabels[$section5])),
|
||||
'show_section_billing_corporate' => !empty(array_filter($fieldLabels[$section6])),
|
||||
'show_section_payment_deposit' => !empty(array_filter($fieldLabels[$section7])),
|
||||
'show_section_guest_signature' => !empty(array_filter($fieldLabels[$section8])),
|
||||
'show_section_property_regs' => !empty(array_filter($fieldLabels[$section9])),
|
||||
'show_section_office_use' => !empty(array_filter($fieldLabels[$section10])),
|
||||
|
||||
'section_additional_guests' => $grcInfo[$section5]['name'],
|
||||
'section_property_regs' => $grcInfo[$section9]['name'],
|
||||
|
||||
'local_id' => $showLocalIdGroup,
|
||||
'int_id' => $showIntIdGroup,
|
||||
'labels' => $labels,
|
||||
));
|
||||
|
||||
return $this->smarty->fetch($this->getTemplate('guest-registration-form'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the template filename when using bulk rendering
|
||||
*
|
||||
* @return string filename
|
||||
*/
|
||||
public function getBulkFilename()
|
||||
{
|
||||
return 'guest-registration-forms.pdf';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the template filename
|
||||
*
|
||||
* @return string filename
|
||||
*/
|
||||
public function getFilename()
|
||||
{
|
||||
$filename = 'guest-registration-form-'.$this->order->reference;
|
||||
if ($this->hotelBookingDetail->id) {
|
||||
$filename .= '-room-'.$this->hotelBookingDetail->id;
|
||||
}
|
||||
|
||||
return $filename.'.pdf';
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ class PDFCore
|
||||
protected $smarty;
|
||||
|
||||
const TEMPLATE_INVOICE = 'Invoice';
|
||||
const TEMPLATE_GUEST_REGISTRATION_FORM = 'GuestRegistrationForm';
|
||||
const TEMPLATE_ORDER_RETURN = 'OrderReturn';
|
||||
const TEMPLATE_ORDER_SLIP = 'OrderSlip';
|
||||
const TEMPLATE_DELIVERY_SLIP = 'DeliverySlip';
|
||||
|
||||
@@ -384,13 +384,13 @@ class AdminAddressesControllerCore extends AdminController
|
||||
public function processExport($text_delimiter = '"')
|
||||
{
|
||||
$this->fields_list = array_merge($this->fields_list, array(
|
||||
'email' => array('title' => $this->l('Customer Email')),
|
||||
'phone' => array('title' => $this->l('Phone'), 'filter_key' => 'a!phone'),
|
||||
'phone_mobile' => array('title' => $this->l('Mobile phone')),
|
||||
'address1' => array('title' => $this->l('Address (2)')),
|
||||
'dni' => array('title' => $this->l('Identification Number')),
|
||||
'vat_number' => array('title' => $this->l('VAT number')),
|
||||
'other' => array('title' => $this->l('Other')),
|
||||
'email' => array('title' => $this->l('Customer Email'), 'displayed' => false),
|
||||
'phone' => array('title' => $this->l('Phone'), 'filter_key' => 'a!phone', 'displayed' => false),
|
||||
'phone_mobile' => array('title' => $this->l('Mobile phone'), 'displayed' => false),
|
||||
'address2' => array('title' => $this->l('Address (2)'), 'displayed' => false),
|
||||
'dni' => array('title' => $this->l('Identification Number'), 'displayed' => false),
|
||||
'vat_number' => array('title' => $this->l('VAT number'), 'displayed' => false),
|
||||
'other' => array('title' => $this->l('Other'), 'displayed' => false),
|
||||
));
|
||||
|
||||
return parent::processExport($text_delimiter);
|
||||
|
||||
123
controllers/admin/AdminGuestRegistrationController.php
Normal file
123
controllers/admin/AdminGuestRegistrationController.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Open Software License version 3.0
|
||||
* that is bundled with this package in the file LICENSE.md
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/license/osl-3.0-php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to support@qloapps.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to a newer
|
||||
* versions in the future. If you wish to customize this module for your needs
|
||||
* please refer to https://store.webkul.com/customisation-guidelines for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright Since 2010 Webkul
|
||||
* @license https://opensource.org/license/osl-3.0-php Open Software License version 3.0
|
||||
*/
|
||||
|
||||
class AdminGuestRegistrationControllerCore extends AdminController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->bootstrap = true;
|
||||
$this->table = 'configuration';
|
||||
$this->className = 'Configuration';
|
||||
$this->identifier = 'id_configuration';
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function initContent()
|
||||
{
|
||||
$this->display = 'view';
|
||||
$this->initToolbar();
|
||||
parent::initContent();
|
||||
}
|
||||
|
||||
public function renderView()
|
||||
{
|
||||
$grcInfoJson = Configuration::get('QLO_GUEST_REGISTRATION_CARD_INFO');
|
||||
$savedSections = array();
|
||||
if ($grcInfoJson !== false && $grcInfoJson !== '') {
|
||||
$grcData = Tools::jsonDecode($grcInfoJson, true);
|
||||
if (is_array($grcData)) {
|
||||
$savedSections = $grcData;
|
||||
}
|
||||
}
|
||||
|
||||
$allSelected = empty($savedSections);
|
||||
$nodes = array();
|
||||
$objHotelBookingDetail = new HotelBookingDetail();
|
||||
foreach ($objHotelBookingDetail->getRegistrationCardInfo() as $sectionId => $section) {
|
||||
$sectionFields = isset($savedSections[$sectionId]) ? $savedSections[$sectionId] : array();
|
||||
$fieldNodes = array();
|
||||
foreach ($section['fields'] as $fieldId => $fieldName) {
|
||||
$fieldSelected = $allSelected || in_array($fieldId, $sectionFields);
|
||||
$fieldNodes[] = array(
|
||||
'value' => $fieldId,
|
||||
'name' => $fieldName,
|
||||
'input_name' => 'grc_field_'.$sectionId,
|
||||
'selected' => $fieldSelected,
|
||||
);
|
||||
}
|
||||
$fieldsSelected = $allSelected || !empty(array_filter($fieldNodes, function ($n) { return $n['selected']; }));
|
||||
$nodes[] = array(
|
||||
'value' => $sectionId,
|
||||
'name' => $section['name'],
|
||||
'input_name' => 'grc_section',
|
||||
'selected' => $fieldsSelected,
|
||||
'children' => $fieldNodes,
|
||||
);
|
||||
}
|
||||
|
||||
$tree = new HelperTree('grc-card-info-tree');
|
||||
$tree->setData($nodes)
|
||||
->setUseCheckBox(true)
|
||||
->setAutoSelectChildren(true)
|
||||
->setUseBulkActions(true);
|
||||
|
||||
$this->context->smarty->assign(array(
|
||||
'guest_reg_card_info_tree' => $tree->render(),
|
||||
'guest_reg_card_form_action' => self::$currentIndex.'&token='.$this->token,
|
||||
'guest_reg_card_preview_img_url' => $this->context->link->getBaseLink().'img/admin/guest_registration_preview.jpg',
|
||||
'guest_reg_card_preview_title' => $this->l('Guest Registration Card Preview'),
|
||||
));
|
||||
|
||||
return parent::renderView();
|
||||
}
|
||||
|
||||
public function initToolbarTitle()
|
||||
{
|
||||
$this->toolbar_title = array($this->l('Guest Registration Card'));
|
||||
}
|
||||
|
||||
public function postProcess()
|
||||
{
|
||||
if (Tools::isSubmit('submitGrcCardInfo')) {
|
||||
$grcInfo = array();
|
||||
$objHotelBookingDetail = new HotelBookingDetail();
|
||||
foreach (array_keys($objHotelBookingDetail->getRegistrationCardInfo()) as $sectionId) {
|
||||
$fields = array_values(array_filter(array_map('intval', (array)Tools::getValue('grc_field_'.$sectionId, array()))));
|
||||
if (!empty($fields)) {
|
||||
$grcInfo[$sectionId] = $fields;
|
||||
}
|
||||
}
|
||||
if (empty($grcInfo)) {
|
||||
$this->errors[] = $this->l('Please select at least one field for the Guest Registration Card.');
|
||||
return;
|
||||
}
|
||||
Configuration::updateValue('QLO_GUEST_REGISTRATION_CARD_INFO', Tools::jsonEncode($grcInfo));
|
||||
Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token.'&conf=4');
|
||||
return;
|
||||
}
|
||||
|
||||
parent::postProcess();
|
||||
}
|
||||
}
|
||||
@@ -64,6 +64,15 @@ class AdminPdfControllerCore extends AdminController
|
||||
}
|
||||
}
|
||||
|
||||
public function processGenerateGuestRegistrationFormPDF()
|
||||
{
|
||||
if (Tools::isSubmit('id_hotel_booking_detail')) {
|
||||
$this->generateGuestRegistrationFormPDF((int)Tools::getValue('id_hotel_booking_detail'));
|
||||
} else {
|
||||
die(Tools::displayError('The hotel booking detail ID is missing.'));
|
||||
}
|
||||
}
|
||||
|
||||
public function processGenerateBookingVoucherPDF()
|
||||
{
|
||||
if (Tools::isSubmit('id_order')) {
|
||||
@@ -234,6 +243,17 @@ class AdminPdfControllerCore extends AdminController
|
||||
$this->generatePDF($order_invoice, PDF::TEMPLATE_INVOICE);
|
||||
}
|
||||
|
||||
public function generateGuestRegistrationFormPDF($idHotelBookingDetail)
|
||||
{
|
||||
$idHotelBookingDetail = (int)$idHotelBookingDetail;
|
||||
if (!$idHotelBookingDetail || !Validate::isLoadedObject(new HotelBookingDetail($idHotelBookingDetail))) {
|
||||
die(Tools::displayError('The hotel booking cannot be found within your database.'));
|
||||
}
|
||||
|
||||
$pdf = new PDF($idHotelBookingDetail, PDF::TEMPLATE_GUEST_REGISTRATION_FORM, Context::getContext()->smarty);
|
||||
$pdf->render('I');
|
||||
}
|
||||
|
||||
public function generateBookingVoucherPDFByIdOrder($id_order)
|
||||
{
|
||||
$order = new Order((int)$id_order);
|
||||
|
||||
@@ -195,6 +195,19 @@ class AdminPreferencesControllerCore extends AdminController
|
||||
'class' => 'fixed-width-xl',
|
||||
'desc' => sprintf($this->l('If set to 0, the maximum limit will be %d characters.'), Configuration::PS_SHORT_DESC_LIMIT)
|
||||
),
|
||||
'PS_EXPORT_FIELDS_TYPE' => array(
|
||||
'title' => $this->l('CSV export fields'),
|
||||
'desc' => $this->l('Choose whether list CSV exports include all fields, or only the fields currently checked in the "Available Fields" selector of the list being exported.'),
|
||||
'validation' => 'isInt',
|
||||
'cast' => 'intval',
|
||||
'type' => 'select',
|
||||
'list' => array(
|
||||
array('id' => HelperList::QLO_EXPORT_FIELDS_ALL, 'name' => $this->l('All Fields')),
|
||||
array('id' => HelperList::QLO_EXPORT_FIELDS_SELECTED, 'name' => $this->l('Selected Fields')),
|
||||
),
|
||||
'identifier' => 'id',
|
||||
'defaultValue' => HelperList::QLO_EXPORT_FIELDS_ALL,
|
||||
),
|
||||
// 'PS_DISPLAY_SUPPLIERS' => array(
|
||||
// 'title' => $this->l('Display suppliers and manufacturers'),
|
||||
// 'desc' => $this->l('Enable suppliers and manufacturers pages on your front office even when their respective modules are disabled.'),
|
||||
|
||||
@@ -92,37 +92,45 @@ class CategoryControllerCore extends FrontController
|
||||
public function init()
|
||||
{
|
||||
// Get category ID
|
||||
$id_category = (int)Tools::getValue('id_category');
|
||||
if (!$id_category || !Validate::isUnsignedId($id_category)) {
|
||||
$this->errors[] = Tools::displayError('Missing category ID');
|
||||
}
|
||||
$idCategory = (int) Tools::getValue('id_category');
|
||||
$this->category = new Category($idCategory, $this->context->language->id);
|
||||
|
||||
// validate dates if available
|
||||
$dateFrom = Tools::getValue('date_from');
|
||||
$dateTo = Tools::getValue('date_to');
|
||||
$idHotel = HotelBranchInformation::getHotelIdByIdCategory($id_category);
|
||||
if (!HotelHelper::validateDateRangeForHotel($dateFrom, $dateTo, $idHotel)) {
|
||||
$idHotel = HotelBranchInformation::getHotelIdByIdCategory($idCategory);
|
||||
|
||||
if (!$idCategory || !Validate::isUnsignedId($idCategory)) {
|
||||
Tools::redirect($this->context->link->getPageLink('pagenotfound'));
|
||||
}
|
||||
|
||||
// Instantiate category
|
||||
$this->category = new Category($id_category, $this->context->language->id);
|
||||
|
||||
parent::init();
|
||||
|
||||
// Check if the category is active and return 404 error if is disable.
|
||||
if (!$this->category->active || !Validate::isLoadedObject($this->category) || !$this->category->inShop() || !$this->category->isAssociatedToShop() || in_array($this->category->id, array(Configuration::get('PS_HOME_CATEGORY'), Configuration::get('PS_ROOT_CATEGORY')))) {
|
||||
header('HTTP/1.1 404 Not Found');
|
||||
header('Status: 404 Not Found');
|
||||
} elseif (!Validate::isLoadedObject($this->category) || !$this->category->active) {
|
||||
Tools::redirect($this->context->link->getPageLink('pagenotfound'));
|
||||
} else
|
||||
// Check if category can be accessible by current customer and return 403 if not
|
||||
if (!$this->category->checkAccess($this->context->customer->id)) {
|
||||
} elseif ($idHotel && !(new HotelBranchInformation())->hotelBranchInfoByCategoryId($idCategory)) {
|
||||
Tools::redirect($this->context->link->getPageLink('pagenotfound'));
|
||||
} elseif ($idHotel && !HotelHelper::validateDateRangeForHotel($dateFrom, $dateTo, $idHotel)) {
|
||||
Tools::redirect($this->context->link->getPageLink('pagenotfound'));
|
||||
} else {
|
||||
parent::init();
|
||||
|
||||
if (
|
||||
!$this->category->inShop()
|
||||
|| !$this->category->isAssociatedToShop()
|
||||
|| in_array(
|
||||
$this->category->id,
|
||||
array(
|
||||
Configuration::get('PS_HOME_CATEGORY'),
|
||||
Configuration::get('PS_ROOT_CATEGORY')
|
||||
)
|
||||
)
|
||||
) {
|
||||
header('HTTP/1.1 404 Not Found');
|
||||
header('Status: 404 Not Found');
|
||||
Tools::redirect($this->context->link->getPageLink('pagenotfound'));
|
||||
} elseif (!$this->category->checkAccess($this->context->customer->id)) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
header('Status: 403 Forbidden');
|
||||
$this->errors[] = Tools::displayError('You do not have access to this category.');
|
||||
$this->customer_access = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -130,14 +138,15 @@ class CategoryControllerCore extends FrontController
|
||||
*/
|
||||
public function initContent()
|
||||
{
|
||||
if (!$this->customer_access) {
|
||||
$this->display_column_left = false;
|
||||
$this->display_column_right = false;
|
||||
}
|
||||
|
||||
parent::initContent();
|
||||
|
||||
$this->setTemplate(_PS_THEME_DIR_.'category.tpl');
|
||||
|
||||
if (!$this->customer_access) {
|
||||
return;
|
||||
}
|
||||
|
||||
$id_category = Tools::getValue('id_category');
|
||||
|
||||
$displayAllRoomsTypes = false;
|
||||
|
||||
@@ -126,6 +126,12 @@ class ProductControllerCore extends FrontController
|
||||
$objHotelRoomType = new HotelRoomType();
|
||||
if ($hotelRoomInfo = $objHotelRoomType->getRoomTypeInfoByIdProduct($this->product->id)) {
|
||||
$idHotel = (int) $hotelRoomInfo['id_hotel'];
|
||||
|
||||
// If the hotel this room type belongs to is disabled, redirect to home page
|
||||
if (!(new HotelBranchInformation())->hotelBranchesInfo(false, 1, 0, $idHotel)) {
|
||||
Tools::redirect($this->context->link->getPageLink('pagenotfound'));
|
||||
}
|
||||
|
||||
if (!HotelHelper::validateDateRangeForHotel($dateFrom, $dateTo, $idHotel)) {
|
||||
Tools::redirect($this->context->link->getPageLink('pagenotfound'));
|
||||
}
|
||||
|
||||
BIN
img/admin/guest_registration_preview.jpg
Normal file
BIN
img/admin/guest_registration_preview.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 481 KiB |
@@ -120,6 +120,9 @@
|
||||
<tab id="Order_Messages" id_parent="Orders" active="1" hide_host_mode="0">
|
||||
<class_name>AdminOrderMessage</class_name>
|
||||
</tab>
|
||||
<tab id="Guest_Registration" id_parent="Orders" active="1" hide_host_mode="0">
|
||||
<class_name>AdminGuestRegistration</class_name>
|
||||
</tab>
|
||||
<tab id="Customers_1" id_parent="Customers" active="1" hide_host_mode="0">
|
||||
<class_name>AdminCustomers</class_name>
|
||||
</tab>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<theme_meta id="theme_meta_6" id_theme="1" id_meta="6" left_column="1" right_column="0"/>
|
||||
<theme_meta id="theme_meta_7" id_theme="1" id_meta="7" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_8" id_theme="1" id_meta="8" left_column="1" right_column="0"/>
|
||||
<theme_meta id="theme_meta_9" id_theme="1" id_meta="9" left_column="1" right_column="0"/>
|
||||
<theme_meta id="theme_meta_9" id_theme="1" id_meta="9" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_10" id_theme="1" id_meta="10" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_11" id_theme="1" id_meta="11" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_12" id_theme="1" id_meta="12" left_column="0" right_column="0"/>
|
||||
@@ -29,9 +29,9 @@
|
||||
<theme_meta id="theme_meta_20" id_theme="1" id_meta="20" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_21" id_theme="1" id_meta="21" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_22" id_theme="1" id_meta="22" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_23" id_theme="1" id_meta="23" left_column="1" right_column="0"/>
|
||||
<theme_meta id="theme_meta_23" id_theme="1" id_meta="23" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_24" id_theme="1" id_meta="24" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_25" id_theme="1" id_meta="25" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_25" id_theme="1" id_meta="25" left_column="1" right_column="0"/>
|
||||
<theme_meta id="theme_meta_26" id_theme="1" id_meta="26" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_27" id_theme="1" id_meta="27" left_column="0" right_column="0"/>
|
||||
<theme_meta id="theme_meta_28" id_theme="1" id_meta="28" left_column="0" right_column="0"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Кредитни известия"/>
|
||||
<tab id="Statuses" name="Статуси"/>
|
||||
<tab id="Order_Messages" name="Съобщения при поръчка"/>
|
||||
<tab id="Guest_Registration" name="Карта за регистрация на гост"/>
|
||||
<tab id="Customers_1" name="Клиенти"/>
|
||||
<tab id="Addresses" name="Адреси"/>
|
||||
<tab id="Groups" name="Групи"/>
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
<tab id='Credit_Slips' name='বকেয়া বিল'/>
|
||||
<tab id='Statuses' name='অবস্থা'/>
|
||||
<tab id='Order_Messages' name='অর্ডার এর মাসাআজ'/>
|
||||
<tab id='Guest_Registration' name='অতিথি নিবন্ধন কার্ড'/>
|
||||
<tab id='Customers_1' name='গ্রাহকরা'/>
|
||||
<tab id='Addresses' name='ঠিকানা'/>
|
||||
<tab id='Groups' name='দল'/>
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<tab id="Monitoring" name="Monitoramento"/>
|
||||
<tab id="Multistore" name="Multiloja"/>
|
||||
<tab id="Order_Messages" name="Mensagens de compras"/>
|
||||
<tab id="Guest_Registration" name="Cartão de Registro de Hóspede"/>
|
||||
<tab id="Orders_2" name="Compras"/>
|
||||
<tab id="Orders" name="Compras"/>
|
||||
<tab id="Orders_1" name="Compras"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Dobropisy"/>
|
||||
<tab id="Statuses" name="Stavy objednávek"/>
|
||||
<tab id="Order_Messages" name="Zprávy k objednávkám"/>
|
||||
<tab id="Guest_Registration" name="Registrační karta hosta"/>
|
||||
<tab id="Customers_1" name="Zákazníci"/>
|
||||
<tab id="Addresses" name="Adresy"/>
|
||||
<tab id="Groups" name="Skupiny zákazníků"/>
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<tab id="Monitoring" name="Kontrollübersicht"/>
|
||||
<tab id="Multistore" name="Multishop"/>
|
||||
<tab id="Order_Messages" name="Bestellnachrichten"/>
|
||||
<tab id="Guest_Registration" name="Gästeregistrierungskarte"/>
|
||||
<tab id="Orders_2" name="Bestellungen"/>
|
||||
<tab id="Orders" name="Bestellungen"/>
|
||||
<tab id="Orders_1" name="Bestellungen"/>
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
<tab id="Credit_Slips" name="Credit Slips"/>
|
||||
<tab id="Statuses" name="Statuses"/>
|
||||
<tab id="Order_Messages" name="Order Messages"/>
|
||||
<tab id="Guest_Registration" name="Guest Registration Card"/>
|
||||
<tab id="Customers_1" name="Customers"/>
|
||||
<tab id="Addresses" name="Addresses"/>
|
||||
<tab id="Groups" name="Groups"/>
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
<tab id="Credit_Slips" name="Factura de abonos"/>
|
||||
<tab id="Statuses" name="Estados"/>
|
||||
<tab id="Order_Messages" name="Mensajes predefinidos"/>
|
||||
<tab id="Guest_Registration" name="Tarjeta de Registro de Huésped"/>
|
||||
<tab id="Customers_1" name="Clientes"/>
|
||||
<tab id="Addresses" name="Direcciones"/>
|
||||
<tab id="Groups" name="Grupos"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="رسیدهای اعتبار"/>
|
||||
<tab id="Statuses" name="وضعیتها"/>
|
||||
<tab id="Order_Messages" name="پیامهای سفارش"/>
|
||||
<tab id="Guest_Registration" name="کارت ثبت نام مهمان"/>
|
||||
<tab id="Customers_1" name="مشتریان"/>
|
||||
<tab id="Addresses" name="آدرسها"/>
|
||||
<tab id="Groups" name="گروهها"/>
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<tab id="Monitoring" name="Suivi"/>
|
||||
<tab id="Multistore" name="Multiboutique"/>
|
||||
<tab id="Order_Messages" name="Messages prédéfinis"/>
|
||||
<tab id="Guest_Registration" name="Carte d'enregistrement des hôtes"/>
|
||||
<tab id="Orders_2" name="Commandes"/>
|
||||
<tab id="Orders" name="Commandes"/>
|
||||
<tab id="Orders_1" name="Commandes"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="שוברי זיכוי"/>
|
||||
<tab id="Statuses" name="סטטוסי הזמנה ומלאי"/>
|
||||
<tab id="Order_Messages" name="תבניות עבור הודעות הזמנה"/>
|
||||
<tab id="Guest_Registration" name="כרטיס רישום אורח"/>
|
||||
<tab id="Customers_1" name="לקוחות"/>
|
||||
<tab id="Addresses" name="כתובות"/>
|
||||
<tab id="Groups" name="קבוצות"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Kreditne note"/>
|
||||
<tab id="Statuses" name="Statusi"/>
|
||||
<tab id="Order_Messages" name="Poruke narudžbe"/>
|
||||
<tab id="Guest_Registration" name="Kartica registracije gosta"/>
|
||||
<tab id="Customers_1" name="Kupci"/>
|
||||
<tab id="Addresses" name="Adrese"/>
|
||||
<tab id="Groups" name="Grupe"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Credit Slips"/>
|
||||
<tab id="Statuses" name="Statuses"/>
|
||||
<tab id="Order_Messages" name="Order Messages"/>
|
||||
<tab id="Guest_Registration" name="Vendég regisztráció"/>
|
||||
<tab id="Customers_1" name="Vásárlók"/>
|
||||
<tab id="Addresses" name="Címek"/>
|
||||
<tab id="Groups" name="Csoportok"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Nota kredit"/>
|
||||
<tab id="Statuses" name="Status"/>
|
||||
<tab id="Order_Messages" name="Pesan"/>
|
||||
<tab id="Guest_Registration" name="Kartu Registrasi Tamu"/>
|
||||
<tab id="Customers_1" name="Pelanggan"/>
|
||||
<tab id="Addresses" name="Alamat"/>
|
||||
<tab id="Groups" name="Grup"/>
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<tab id="Monitoring" name="Monitoraggio"/>
|
||||
<tab id="Multistore" name="Multi-negozio"/>
|
||||
<tab id="Order_Messages" name="Messaggi predefiniti"/>
|
||||
<tab id="Guest_Registration" name="Scheda di registrazione ospite"/>
|
||||
<tab id="Orders_2" name="Ordini"/>
|
||||
<tab id="Orders" name="Ordini"/>
|
||||
<tab id="Orders_1" name="Ordini"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Grąžinimo kuponai"/>
|
||||
<tab id="Statuses" name="Būsenos"/>
|
||||
<tab id="Order_Messages" name="Užsakymo pranešimai"/>
|
||||
<tab id="Guest_Registration" name="Svečio registracijos kortelė"/>
|
||||
<tab id="Customers_1" name="Klientai"/>
|
||||
<tab id="Addresses" name="Adresai"/>
|
||||
<tab id="Groups" name="Grupės"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Кредитни исечоци"/>
|
||||
<tab id="Statuses" name="Состојби"/>
|
||||
<tab id="Order_Messages" name="Пораки за нарачки"/>
|
||||
<tab id="Guest_Registration" name="Картичка за регистрација на гостин"/>
|
||||
<tab id="Customers_1" name="Клиенти"/>
|
||||
<tab id="Addresses" name="Адреси"/>
|
||||
<tab id="Groups" name="Групи"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Creditnota's"/>
|
||||
<tab id="Statuses" name="Statussen"/>
|
||||
<tab id="Order_Messages" name="Bestellingsberichten"/>
|
||||
<tab id="Guest_Registration" name="Gasten registratiekaart"/>
|
||||
<tab id="Customers_1" name="Klanten"/>
|
||||
<tab id="Addresses" name="Adressen"/>
|
||||
<tab id="Groups" name="Groepen"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Credit Slips"/>
|
||||
<tab id="Statuses" name="Statuses"/>
|
||||
<tab id="Order_Messages" name="Order Messages"/>
|
||||
<tab id="Guest_Registration" name="Guest Registration Card"/>
|
||||
<tab id="Customers_1" name="Customers"/>
|
||||
<tab id="Addresses" name="Addresses"/>
|
||||
<tab id="Groups" name="Groups"/>
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<tab id="Monitoring" name="Monitorowanie"/>
|
||||
<tab id="Multistore" name="Zestawienie sklepów ?"/>
|
||||
<tab id="Order_Messages" name="Treść powiadomienia zamówień"/>
|
||||
<tab id="Guest_Registration" name="Karta rejestracji gościa"/>
|
||||
<tab id="Orders_2" name="Zamówienia"/>
|
||||
<tab id="Orders" name="Zamówienia"/>
|
||||
<tab id="Orders_1" name="Zamówienia"/>
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<tab id="Monitoring" name="Monitoramento"/>
|
||||
<tab id="Multistore" name="Multi loja"/>
|
||||
<tab id="Order_Messages" name="Mensagens de encomendas"/>
|
||||
<tab id="Guest_Registration" name="Cartão de Registo de Hóspede"/>
|
||||
<tab id="Orders_2" name="Encomendas"/>
|
||||
<tab id="Orders" name="Encomendas"/>
|
||||
<tab id="Orders_1" name="Encomendas"/>
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<tab id="Monitoring" name="Suivi"/>
|
||||
<tab id="Multistore" name="Multiboutique"/>
|
||||
<tab id="Order_Messages" name="Messages prédéfinis"/>
|
||||
<tab id="Guest_Registration" name="Carte d'enregistrement des hôtes"/>
|
||||
<tab id="Orders_2" name="Commandes"/>
|
||||
<tab id="Orders" name="Commandes"/>
|
||||
<tab id="Orders_1" name="Commandes"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Note de credit"/>
|
||||
<tab id="Statuses" name="Stadii"/>
|
||||
<tab id="Order_Messages" name="Mesaje la comenzi"/>
|
||||
<tab id="Guest_Registration" name="Card de înregistrare a oaspeților"/>
|
||||
<tab id="Customers_1" name="Clienți"/>
|
||||
<tab id="Addresses" name="Adrese"/>
|
||||
<tab id="Groups" name="Grupuri"/>
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
<tab id="Monitoring" name="Мониторинг"/>
|
||||
<tab id="Multistore" name="Мульти-магазин"/>
|
||||
<tab id="Order_Messages" name="Сообщения"/>
|
||||
<tab id="Guest_Registration" name="Карта регистрации гостя"/>
|
||||
<tab id="Orders_2" name="Заказы"/>
|
||||
<tab id="Orders" name="Заказы"/>
|
||||
<tab id="Orders_1" name="Заказы"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Dobropisi"/>
|
||||
<tab id="Statuses" name="Statusi"/>
|
||||
<tab id="Order_Messages" name="Sporočila ob naročilu"/>
|
||||
<tab id="Guest_Registration" name="Kartica za registracijo gosta"/>
|
||||
<tab id="Customers_1" name="Kupci"/>
|
||||
<tab id="Addresses" name="Naslovi"/>
|
||||
<tab id="Groups" name="Skupine"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Komadi kredita"/>
|
||||
<tab id="Statuses" name="Statusi"/>
|
||||
<tab id="Order_Messages" name="Poruke porudžbina"/>
|
||||
<tab id="Guest_Registration" name="Kartica za registraciju gosta"/>
|
||||
<tab id="Customers_1" name="Kupci"/>
|
||||
<tab id="Addresses" name="Adrese"/>
|
||||
<tab id="Groups" name="Grupe"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Kreditnota"/>
|
||||
<tab id="Statuses" name="Statusar"/>
|
||||
<tab id="Order_Messages" name="Ordermeddelanden"/>
|
||||
<tab id="Guest_Registration" name="Gästregistreringskort"/>
|
||||
<tab id="Customers_1" name="Kunder"/>
|
||||
<tab id="Addresses" name="Adresser"/>
|
||||
<tab id="Groups" name="Grupper"/>
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
<tab id="Credit_Slips" name="折讓單"/>
|
||||
<tab id="Statuses" name="狀態"/>
|
||||
<tab id="Order_Messages" name="訂單訊息"/>
|
||||
<tab id="Guest_Registration" name="住客登記表"/>
|
||||
<tab id="Customers_1" name="客戶"/>
|
||||
<tab id="Addresses" name="地址"/>
|
||||
<tab id="Groups" name="群組"/>
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<tab id="Monitoring" name="Giám sát"/>
|
||||
<tab id="Multistore" name="Multistore"/>
|
||||
<tab id="Order_Messages" name="Tin nhắn đơn hàng"/>
|
||||
<tab id="Guest_Registration" name="Thẻ đăng ký khách"/>
|
||||
<tab id="Orders" name="đặt hàng"/>
|
||||
<tab id="Orders_1" name="Đơn hàng"/>
|
||||
<tab id="Orders_2" name="Đơn hàng"/>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<tab id="Credit_Slips" name="Credit Slips"/>
|
||||
<tab id="Statuses" name="Statuses"/>
|
||||
<tab id="Order_Messages" name="Order Messages"/>
|
||||
<tab id="Guest_Registration" name="住客登记卡"/>
|
||||
<tab id="Customers_1" name="Customers"/>
|
||||
<tab id="Addresses" name="Addresses"/>
|
||||
<tab id="Groups" name="Groups"/>
|
||||
|
||||
@@ -25,7 +25,9 @@
|
||||
|
||||
var current_product = null;
|
||||
var ajaxQueries = new Array();
|
||||
|
||||
if (typeof jQuery !== 'undefined' && jQuery.effects && !jQuery.effects.effect) {
|
||||
jQuery.effects.effect = {};
|
||||
}
|
||||
$(document).ready(function() {
|
||||
// Init all events
|
||||
init();
|
||||
|
||||
@@ -23,6 +23,85 @@
|
||||
|
||||
class HotelBookingDetail extends ObjectModel
|
||||
{
|
||||
// Guest Registration Card — Section IDs
|
||||
const GRC_SECTION_GUEST_INFO = 1;
|
||||
const GRC_SECTION_TRAVEL_INFO = 2;
|
||||
const GRC_SECTION_BOOKING_INFO = 3;
|
||||
const GRC_SECTION_IDENTIFICATION = 4;
|
||||
const GRC_SECTION_ADDITIONAL_GUESTS = 5;
|
||||
const GRC_SECTION_BILLING_CORPORATE = 6;
|
||||
const GRC_SECTION_PAYMENT_DEPOSIT = 7;
|
||||
const GRC_SECTION_GUEST_SIGNATURE = 8;
|
||||
const GRC_SECTION_PROPERTY_REGS = 9;
|
||||
const GRC_SECTION_OFFICE_USE_ONLY = 10;
|
||||
|
||||
// Guest Registration Card — Guest Information fields (section 1)
|
||||
const GRC_GUEST_TITLE = 1;
|
||||
const GRC_GUEST_FULL_NAME = 2;
|
||||
const GRC_GUEST_PHONE = 3;
|
||||
const GRC_GUEST_EMAIL = 4;
|
||||
const GRC_GUEST_DOB = 5;
|
||||
const GRC_GUEST_NATIONALITY = 6;
|
||||
const GRC_GUEST_CITY_COUNTRY = 7;
|
||||
const GRC_GUEST_POSTAL_CODE = 8;
|
||||
const GRC_GUEST_ADDRESS = 9;
|
||||
|
||||
// Guest Registration Card — Travel Information fields (section 2)
|
||||
const GRC_TRAVEL_ARRIVED_FROM = 1;
|
||||
const GRC_TRAVEL_NEXT_DESTINATION = 2;
|
||||
const GRC_TRAVEL_FLIGHT_TRAIN = 3;
|
||||
const GRC_TRAVEL_VEHICLE_REG = 4;
|
||||
const GRC_TRAVEL_PURPOSE_OF_VISIT = 5;
|
||||
|
||||
// Guest Registration Card — Booking Information fields (section 3)
|
||||
const GRC_BOOKING_REFERENCE = 1;
|
||||
const GRC_BOOKING_RATE_PER_NIGHT = 2;
|
||||
const GRC_BOOKING_ARRIVAL = 3;
|
||||
const GRC_BOOKING_DEPARTURE = 4;
|
||||
const GRC_BOOKING_ROOM_TYPE = 5;
|
||||
const GRC_BOOKING_ROOM_NUMBER = 6;
|
||||
const GRC_BOOKING_NUM_GUESTS = 7;
|
||||
|
||||
// Guest Registration Card — Identification Document fields (section 4)
|
||||
const GRC_ID_IDENTITY_PROOF = 1;
|
||||
const GRC_ID_NUMBER = 2;
|
||||
const GRC_ID_PASSPORT_NO = 3;
|
||||
const GRC_ID_PLACE_OF_ISSUE = 4;
|
||||
const GRC_ID_DATE_OF_ISSUE = 5;
|
||||
const GRC_ID_DATE_OF_EXPIRY = 6;
|
||||
const GRC_ID_VISA_NUMBER = 7;
|
||||
const GRC_ID_VALID_UNTIL = 8;
|
||||
const GRC_ID_ARRIVAL_DATE_IN_COUNTRY = 9;
|
||||
|
||||
// Guest Registration Card — Additional Guests fields (section 5)
|
||||
const GRC_ADD_GUEST_NAME = 1;
|
||||
const GRC_ADD_GUEST_ID_TYPE = 2;
|
||||
const GRC_ADD_GUEST_ID_NUMBER = 3;
|
||||
const GRC_ADD_GUEST_NATIONALITY = 4;
|
||||
|
||||
// Guest Registration Card — Billing & Corporate Details fields (section 6)
|
||||
const GRC_BILLING_COMPANY = 1;
|
||||
const GRC_BILLING_TAX_ID = 2;
|
||||
|
||||
// Guest Registration Card — Payment & Deposit fields (section 7)
|
||||
const GRC_PAYMENT_METHOD = 1;
|
||||
const GRC_PAYMENT_CARD_NUMBER = 2;
|
||||
const GRC_PAYMENT_SECURITY_DEPOSIT = 3;
|
||||
|
||||
// Guest Registration Card — Guest Signature fields (section 8)
|
||||
const GRC_SIG_SIGNATURE = 1;
|
||||
const GRC_SIG_DATE = 2;
|
||||
|
||||
// Guest Registration Card — Property Regulations fields (section 9)
|
||||
const GRC_PROP_CHECKIN_CHECKOUT_TIME = 1;
|
||||
const GRC_PROP_HOTEL_POLICIES = 2;
|
||||
|
||||
// Guest Registration Card — For Office Use Only fields (section 10)
|
||||
const GRC_OFFICE_STAFF_NAME = 1;
|
||||
const GRC_OFFICE_CHECKIN_TIME = 2;
|
||||
const GRC_OFFICE_ID_VERIFIED = 3;
|
||||
const GRC_OFFICE_REG_NO = 4;
|
||||
|
||||
private $allReqDates;
|
||||
private $dltDates;
|
||||
private $partAvaiDates; // used to remove cart rooms from partial available rooms
|
||||
@@ -3814,4 +3893,119 @@ class HotelBookingDetail extends ObjectModel
|
||||
|
||||
return parent::add($auto_date, $null_values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all Guest Registration Card sections and their fields.
|
||||
* Modules may add, remove, or reorder sections/fields via the hook.
|
||||
*
|
||||
* @return array sectionId => ['name' => string, 'fields' => [fieldId => string, ...]]
|
||||
*/
|
||||
public function getRegistrationCardInfo()
|
||||
{
|
||||
$guestRegCardInfo = array(
|
||||
self::GRC_SECTION_GUEST_INFO => array(
|
||||
'name' => $this->moduleInstance->l('Guest Information', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_GUEST_TITLE => $this->moduleInstance->l('Title', 'hotelreservationsystem'),
|
||||
self::GRC_GUEST_FULL_NAME => $this->moduleInstance->l('Full Name (As per ID)', 'hotelreservationsystem'),
|
||||
self::GRC_GUEST_PHONE => $this->moduleInstance->l('Phone / Mobile', 'hotelreservationsystem'),
|
||||
self::GRC_GUEST_EMAIL => $this->moduleInstance->l('Email', 'hotelreservationsystem'),
|
||||
self::GRC_GUEST_DOB => $this->moduleInstance->l('Date of Birth', 'hotelreservationsystem'),
|
||||
self::GRC_GUEST_NATIONALITY => $this->moduleInstance->l('Nationality', 'hotelreservationsystem'),
|
||||
self::GRC_GUEST_CITY_COUNTRY => $this->moduleInstance->l('City / Country', 'hotelreservationsystem'),
|
||||
self::GRC_GUEST_POSTAL_CODE => $this->moduleInstance->l('Postal Code', 'hotelreservationsystem'),
|
||||
self::GRC_GUEST_ADDRESS => $this->moduleInstance->l('Address', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
self::GRC_SECTION_TRAVEL_INFO => array(
|
||||
'name' => $this->moduleInstance->l('Travel Information', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_TRAVEL_ARRIVED_FROM => $this->moduleInstance->l('Arrived From', 'hotelreservationsystem'),
|
||||
self::GRC_TRAVEL_NEXT_DESTINATION => $this->moduleInstance->l('Next Destination', 'hotelreservationsystem'),
|
||||
self::GRC_TRAVEL_FLIGHT_TRAIN => $this->moduleInstance->l('Flight / Train Number', 'hotelreservationsystem'),
|
||||
self::GRC_TRAVEL_VEHICLE_REG => $this->moduleInstance->l('Vehicle Reg. No.', 'hotelreservationsystem'),
|
||||
self::GRC_TRAVEL_PURPOSE_OF_VISIT => $this->moduleInstance->l('Purpose of Visit', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
self::GRC_SECTION_BOOKING_INFO => array(
|
||||
'name' => $this->moduleInstance->l('Booking Information', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_BOOKING_REFERENCE => $this->moduleInstance->l('Booking Reference No.', 'hotelreservationsystem'),
|
||||
self::GRC_BOOKING_RATE_PER_NIGHT => $this->moduleInstance->l('Rate per Night', 'hotelreservationsystem'),
|
||||
self::GRC_BOOKING_ARRIVAL => $this->moduleInstance->l('Arrival Date & Time', 'hotelreservationsystem'),
|
||||
self::GRC_BOOKING_DEPARTURE => $this->moduleInstance->l('Departure Date & Time', 'hotelreservationsystem'),
|
||||
self::GRC_BOOKING_ROOM_TYPE => $this->moduleInstance->l('Room Type', 'hotelreservationsystem'),
|
||||
self::GRC_BOOKING_ROOM_NUMBER => $this->moduleInstance->l('Room Number', 'hotelreservationsystem'),
|
||||
self::GRC_BOOKING_NUM_GUESTS => $this->moduleInstance->l('Number of Guests', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
self::GRC_SECTION_IDENTIFICATION => array(
|
||||
'name' => $this->moduleInstance->l('Identification Document', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_ID_IDENTITY_PROOF => $this->moduleInstance->l('Identity Proof', 'hotelreservationsystem'),
|
||||
self::GRC_ID_NUMBER => $this->moduleInstance->l('ID Number', 'hotelreservationsystem'),
|
||||
self::GRC_ID_PASSPORT_NO => $this->moduleInstance->l('Passport No.', 'hotelreservationsystem'),
|
||||
self::GRC_ID_PLACE_OF_ISSUE => $this->moduleInstance->l('Place of Issue', 'hotelreservationsystem'),
|
||||
self::GRC_ID_DATE_OF_ISSUE => $this->moduleInstance->l('Date of Issue', 'hotelreservationsystem'),
|
||||
self::GRC_ID_DATE_OF_EXPIRY => $this->moduleInstance->l('Date of Expiry', 'hotelreservationsystem'),
|
||||
self::GRC_ID_VISA_NUMBER => $this->moduleInstance->l('Visa Number', 'hotelreservationsystem'),
|
||||
self::GRC_ID_VALID_UNTIL => $this->moduleInstance->l('Valid Until', 'hotelreservationsystem'),
|
||||
self::GRC_ID_ARRIVAL_DATE_IN_COUNTRY => $this->moduleInstance->l('Arrival Date in Country', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
self::GRC_SECTION_ADDITIONAL_GUESTS => array(
|
||||
'name' => $this->moduleInstance->l('Additional Guests', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_ADD_GUEST_NAME => $this->moduleInstance->l('Guest Name', 'hotelreservationsystem'),
|
||||
self::GRC_ADD_GUEST_ID_TYPE => $this->moduleInstance->l('ID Type', 'hotelreservationsystem'),
|
||||
self::GRC_ADD_GUEST_ID_NUMBER => $this->moduleInstance->l('ID Number', 'hotelreservationsystem'),
|
||||
self::GRC_ADD_GUEST_NATIONALITY => $this->moduleInstance->l('Nationality', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
self::GRC_SECTION_BILLING_CORPORATE => array(
|
||||
'name' => $this->moduleInstance->l('Billing & Corporate Details', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_BILLING_COMPANY => $this->moduleInstance->l('Company / Agent', 'hotelreservationsystem'),
|
||||
self::GRC_BILLING_TAX_ID => $this->moduleInstance->l('Tax ID / VAT No.', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
self::GRC_SECTION_PAYMENT_DEPOSIT => array(
|
||||
'name' => $this->moduleInstance->l('Payment & Deposit', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_PAYMENT_METHOD => $this->moduleInstance->l('Payment Method', 'hotelreservationsystem'),
|
||||
self::GRC_PAYMENT_CARD_NUMBER => $this->moduleInstance->l('Credit Card Number', 'hotelreservationsystem'),
|
||||
self::GRC_PAYMENT_SECURITY_DEPOSIT => $this->moduleInstance->l('Security Deposit', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
self::GRC_SECTION_GUEST_SIGNATURE => array(
|
||||
'name' => $this->moduleInstance->l('Guest Signature', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_SIG_SIGNATURE => $this->moduleInstance->l('Signature', 'hotelreservationsystem'),
|
||||
self::GRC_SIG_DATE => $this->moduleInstance->l('Date', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
self::GRC_SECTION_PROPERTY_REGS => array(
|
||||
'name' => $this->moduleInstance->l('Property Regulations', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_PROP_CHECKIN_CHECKOUT_TIME => $this->moduleInstance->l('Check-in / Check-out Time', 'hotelreservationsystem'),
|
||||
self::GRC_PROP_HOTEL_POLICIES => $this->moduleInstance->l('Hotel Policies', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
self::GRC_SECTION_OFFICE_USE_ONLY => array(
|
||||
'name' => $this->moduleInstance->l('For Office Use Only', 'hotelreservationsystem'),
|
||||
'fields' => array(
|
||||
self::GRC_OFFICE_STAFF_NAME => $this->moduleInstance->l('Staff Name', 'hotelreservationsystem'),
|
||||
self::GRC_OFFICE_CHECKIN_TIME => $this->moduleInstance->l('Check-in Time', 'hotelreservationsystem'),
|
||||
self::GRC_OFFICE_ID_VERIFIED => $this->moduleInstance->l('ID Verified', 'hotelreservationsystem'),
|
||||
self::GRC_OFFICE_REG_NO => $this->moduleInstance->l('Registration No.', 'hotelreservationsystem'),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Hook::exec('actionGuestRegCardInfoModifier', array(
|
||||
'guest_registration_info' => &$guestRegCardInfo,
|
||||
));
|
||||
|
||||
return $guestRegCardInfo;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ class HotelBranchRefundRules extends ObjectModel
|
||||
$condition .= ' AND `id_refund_rule` = '.(int)$idRefundRule;
|
||||
}
|
||||
if ($notInVals) {
|
||||
$condition .= ' AND `id_refund_rule` NOT IN ('.implode(',', $notInVals).')';
|
||||
$condition .= ' AND `id_refund_rule` NOT IN ('.implode(',', array_map('intval', $notInVals)).')';
|
||||
}
|
||||
return Db::getInstance()->delete(
|
||||
'htl_branch_refund_rules',
|
||||
|
||||
@@ -149,7 +149,7 @@ class HotelRoomTypeFeaturePricing extends ObjectModel
|
||||
LEFT JOIN `'._DB_PREFIX_.'htl_room_type_feature_pricing` rtfp
|
||||
ON (rtfpr.`id_feature_price` = rtfp.`id_feature_price` AND rtfp.`id_product`='.(int) $idRoomType.')
|
||||
LEFT JOIN `'._DB_PREFIX_.'htl_room_type_feature_pricing_group` rtfpg
|
||||
ON (rtfp.`id_feature_price` = rtfpg.`id_feature_price` '.($groups ? ' AND rtfpg.`id_group` IN ('.pSQL(implode(', ',$groups)).')' : ' ' ).')
|
||||
ON (rtfp.`id_feature_price` = rtfpg.`id_feature_price` '.($groups ? ' AND rtfpg.`id_group` IN ('.implode(', ', array_map('intval', $groups)).')' : ' ' ).')
|
||||
WHERE 1 '.( !is_null($active) ? ' AND rtfp.`active`= '.(int) $active: ' ').' ' .(!is_null($skipFeaturePriceId) ? ' AND rtfpr.`id_feature_price`!='.(int) $skipFeaturePriceId : ' ');
|
||||
$sqlWhere = '';
|
||||
if ($restrictions && is_array($restrictions)) {
|
||||
|
||||
@@ -113,7 +113,7 @@ class HotelRoomTypeGlobalDemandAdvanceOption extends ObjectModel
|
||||
$sql = 'SELECT * FROM `'._DB_PREFIX_.'htl_room_type_global_demand_advance_option`
|
||||
WHERE `id_global_demand` = '.(int)$idGlobalDemand;
|
||||
if (count($skipIds)) {
|
||||
$sql .= ' AND `id_option` NOT IN ('.pSQL(implode(',', $skipIds)).')' ;
|
||||
$sql .= ' AND `id_option` NOT IN ('.implode(',', array_map('intval', $skipIds)).')' ;
|
||||
}
|
||||
if ($advOptions = Db::getInstance()->executeS($sql)) {
|
||||
foreach ($advOptions as &$option) {
|
||||
|
||||
@@ -61,6 +61,12 @@ class QloHotelReviewDefaultModuleFrontController extends ModuleFrontController
|
||||
$errors['general'][] = $objModule->l('Invalid order ID.', 'default');
|
||||
}
|
||||
|
||||
$submittedSecureKey = Tools::getValue('order_secure_key', '');
|
||||
if (!Validate::isLoadedObject($objOrder) || !$submittedSecureKey || $submittedSecureKey !== $objOrder->secure_key ) {
|
||||
$errors['general'][] = $objModule->l('You are not authorized to submit a review.', 'default');
|
||||
$this->ajaxDie(json_encode(array('status' => false, 'errors' => $errors)));
|
||||
}
|
||||
|
||||
if (!$subject) {
|
||||
$errors['by_key']['subject'] = $objModule->l('This field can not be empty.', 'default');
|
||||
} elseif(!Validate::isGenericName($subject)) {
|
||||
|
||||
@@ -199,10 +199,12 @@ class QloHotelReview extends Module
|
||||
&& !QhrHotelReview::getByIdOrder($idOrder)
|
||||
) {
|
||||
if ($hotel = QhrHotelReviewHelper::getHotelByOrder($idOrder)) {
|
||||
$objOrder = new Order((int) $idOrder);
|
||||
$this->smarty->assign(array(
|
||||
'id_order' => (int) $idOrder,
|
||||
'id_hotel' => $hotel['id_hotel'],
|
||||
'hotel_name' => $hotel['hotel_name'],
|
||||
'order_secure_key' => $objOrder->secure_key,
|
||||
));
|
||||
return $this->display(__FILE__, 'booking-action.tpl');
|
||||
}
|
||||
|
||||
@@ -21,10 +21,12 @@
|
||||
*/
|
||||
|
||||
var QhrReviewForm = {
|
||||
init: function(idOrder, idHotel, hotelName) {
|
||||
orderSecureKey: '',
|
||||
init: function(idOrder, idHotel, hotelName, secureKey) {
|
||||
$('#add-review-form').find('[name="id_order"]').val(idOrder);
|
||||
$('#add-review-form').find('[name="id_hotel"]').val(idHotel);
|
||||
$('#add-review-popup').find('.hotel-name').html(hotelName);
|
||||
QhrReviewForm.orderSecureKey = secureKey || '';
|
||||
QhrReviewImages.init();
|
||||
},
|
||||
show: function() {
|
||||
@@ -47,6 +49,7 @@ var QhrReviewForm = {
|
||||
formData.append('ajax', true);
|
||||
formData.append('token', qlo_hotel_review_js_vars.review_ajax_token);
|
||||
formData.append('action', 'AddReview');
|
||||
formData.append('order_secure_key', QhrReviewForm.orderSecureKey);
|
||||
$.ajax({
|
||||
url: qlo_hotel_review_js_vars.review_ajax_link,
|
||||
data: formData,
|
||||
@@ -228,7 +231,8 @@ $(document).on('click', '#add-review-btn', function(e) {
|
||||
var idOrder = parseInt($(this).data('id-order'));
|
||||
var idHotel = parseInt($(this).data('id-hotel'));
|
||||
var hotelName = $(this).data('hotel-name');
|
||||
QhrReviewForm.init(idOrder, idHotel, hotelName);
|
||||
var secureKey = $(this).data('secure-key') || '';
|
||||
QhrReviewForm.init(idOrder, idHotel, hotelName, secureKey);
|
||||
QhrReviewForm.show();
|
||||
});
|
||||
|
||||
|
||||
@@ -20,6 +20,6 @@
|
||||
* @license https://opensource.org/license/osl-3-0-php Open Software License version 3.0
|
||||
*}
|
||||
|
||||
<a class="btn btn-default btn-review pull-right" id="add-review-btn" data-id-order="{$id_order}" data-id-hotel="{$id_hotel}" data-hotel-name="{$hotel_name}">
|
||||
<a class="btn btn-default btn-review pull-right" id="add-review-btn" data-id-order="{$id_order}" data-id-hotel="{$id_hotel}" data-hotel-name="{$hotel_name}" data-secure-key="{$order_secure_key}">
|
||||
{l s='Write a Review' mod='qlohotelreview'}
|
||||
</a>
|
||||
631
pdf/guest-registration-form.tpl
Normal file
631
pdf/guest-registration-form.tpl
Normal file
@@ -0,0 +1,631 @@
|
||||
{*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License version 3.0
|
||||
* that is bundled with this package in the file LICENSE.txt
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to a newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
|
||||
*
|
||||
* @author Webkul IN
|
||||
* @copyright Since 2010 Webkul
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
|
||||
*}
|
||||
|
||||
{$style_tab}
|
||||
|
||||
<table width="100%" id="body" border="0" cellpadding="0" cellspacing="0" style="margin:0;">
|
||||
<tr>
|
||||
<td colspan="12" class="center" style="font-size: 12pt; font-weight: bold; vertical-align: top;">
|
||||
{if $hotel}{$hotel->hotel_name|escape:'html':'UTF-8'}{/if}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="12" class="center" style="vertical-align: top;">
|
||||
{if $hotel && $hotel->city}{$hotel->city|escape:'html':'UTF-8'}{if $hotel_country}, {/if}{/if}{if $hotel_country}{$hotel_country|escape:'html':'UTF-8'}{/if}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{* ===== SECTION 1: GUEST INFORMATION ===== *}
|
||||
{if $show_section_guest_info}
|
||||
<tr><td colspan="12" height="10"> </td></tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="white">
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
{if $labels.title || $labels.full_name}
|
||||
<tr>
|
||||
{if $labels.title && $labels.full_name}
|
||||
<td width="25%" class="bold">{l s=$labels.title pdf='true'}:</td>
|
||||
<td width="25%" class="white">
|
||||
<span style="font-family: freeserif;">□</span> {l s='Mr.' pdf='true'}
|
||||
<span style="font-family: freeserif;">□</span> {l s='Ms.' pdf='true'}
|
||||
</td>
|
||||
<td width="25%" class="bold">{l s=$labels.full_name pdf='true'}:</td>
|
||||
<td width="25%" class="white">________________________</td>
|
||||
{elseif $labels.title}
|
||||
<td width="25%" class="bold">{l s=$labels.title pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">
|
||||
<span style="font-family: freeserif;">□</span> {l s='Mr.' pdf='true'}
|
||||
<span style="font-family: freeserif;">□</span> {l s='Ms.' pdf='true'}
|
||||
</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.full_name pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.phone || $labels.email}
|
||||
<tr>
|
||||
{if $labels.phone && $labels.email}
|
||||
<td width="25%" class="bold">{l s=$labels.phone pdf='true'}:</td>
|
||||
<td width="25%" class="white">________________________</td>
|
||||
<td width="25%" class="bold">{l s=$labels.email pdf='true'}:</td>
|
||||
<td width="25%" class="white">________________________</td>
|
||||
{elseif $labels.phone}
|
||||
<td width="25%" class="bold">{l s=$labels.phone pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.email pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.dob || $labels.nationality}
|
||||
<tr>
|
||||
{if $labels.dob && $labels.nationality}
|
||||
<td width="25%" class="bold">{l s=$labels.dob pdf='true'}:</td>
|
||||
<td width="25%" class="white">____ / ____ / ________</td>
|
||||
<td width="25%" class="bold">{l s=$labels.nationality pdf='true'}:</td>
|
||||
<td width="25%" class="white">________________________</td>
|
||||
{elseif $labels.dob}
|
||||
<td width="25%" class="bold">{l s=$labels.dob pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">____ / ____ / ________</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.nationality pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.city_country || $labels.postal_code}
|
||||
<tr>
|
||||
{if $labels.city_country && $labels.postal_code}
|
||||
<td width="25%" class="bold">{l s=$labels.city_country pdf='true'}:</td>
|
||||
<td width="25%" class="white">________________________</td>
|
||||
<td width="25%" class="bold">{l s=$labels.postal_code pdf='true'}:</td>
|
||||
<td width="25%" class="white">________________________</td>
|
||||
{elseif $labels.city_country}
|
||||
<td width="25%" class="bold">{l s=$labels.city_country pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.postal_code pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.address}
|
||||
<tr>
|
||||
<td width="25%" class="bold">{l s=$labels.address pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">__________________________________________________________________________________</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{* ===== SECTION 2: TRAVEL INFORMATION ===== *}
|
||||
{if $show_section_travel_info}
|
||||
<tr><td colspan="12" height="10"> </td></tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="white">
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
{if $labels.arrived_from || $labels.next_dest}
|
||||
<tr>
|
||||
{if $labels.arrived_from && $labels.next_dest}
|
||||
<td width="25%" class="bold">{l s=$labels.arrived_from pdf='true'}:</td>
|
||||
<td width="25%" class="white">________________________</td>
|
||||
<td width="25%" class="bold">{l s=$labels.next_dest pdf='true'}:</td>
|
||||
<td width="25%" class="white">___________________</td>
|
||||
{elseif $labels.arrived_from}
|
||||
<td width="25%" class="bold">{l s=$labels.arrived_from pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.next_dest pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">___________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.flight || $labels.vehicle}
|
||||
<tr>
|
||||
{if $labels.flight && $labels.vehicle}
|
||||
<td width="25%" class="bold">{l s=$labels.flight pdf='true'}:</td>
|
||||
<td width="25%" class="white">________________________</td>
|
||||
<td width="25%" class="bold">{l s=$labels.vehicle pdf='true'}:</td>
|
||||
<td width="25%" class="white">___________________</td>
|
||||
{elseif $labels.flight}
|
||||
<td width="25%" class="bold">{l s=$labels.flight pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.vehicle pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">___________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.purpose}
|
||||
<tr>
|
||||
<td width="25%" class="bold">{l s=$labels.purpose pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{* ===== SECTION 3: BOOKING INFORMATION ===== *}
|
||||
{if $show_section_booking_info}
|
||||
<tr><td colspan="12" height="10"> </td></tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="white">
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
{if $labels.booking_ref || $labels.booking_rate}
|
||||
<tr>
|
||||
{if $labels.booking_ref && $labels.booking_rate}
|
||||
<td width="25%" class="bold">{l s=$labels.booking_ref pdf='true'}:</td>
|
||||
<td width="25%" class="white">{$booking_reference|escape:'html':'UTF-8'}</td>
|
||||
<td width="25%" class="bold">{l s=$labels.booking_rate pdf='true'}:</td>
|
||||
<td width="25%" class="white">
|
||||
{if $rate_per_night}{$rate_per_night|escape:'html':'UTF-8'}{else}__________{/if}
|
||||
</td>
|
||||
{elseif $labels.booking_ref}
|
||||
<td width="25%" class="bold">{l s=$labels.booking_ref pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">{$booking_reference|escape:'html':'UTF-8'}</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.booking_rate pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">
|
||||
{if $rate_per_night}{$rate_per_night|escape:'html':'UTF-8'}{else}__________{/if}
|
||||
</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.booking_arrival || $labels.booking_departure}
|
||||
<tr>
|
||||
{if $labels.booking_arrival && $labels.booking_departure}
|
||||
<td width="25%" class="bold">{l s=$labels.booking_arrival pdf='true'}:</td>
|
||||
<td width="25%" class="white">
|
||||
{if $arrival_date_time}{$arrival_date_time|escape:'html':'UTF-8'}{else}____ / ____ / ____ ______{/if}
|
||||
</td>
|
||||
<td width="25%" class="bold">{l s=$labels.booking_departure pdf='true'}:</td>
|
||||
<td width="25%" class="white">
|
||||
{if $departure_date_time}{$departure_date_time|escape:'html':'UTF-8'}{else}____ / ____ / ____ ______{/if}
|
||||
</td>
|
||||
{elseif $labels.booking_arrival}
|
||||
<td width="25%" class="bold">{l s=$labels.booking_arrival pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">
|
||||
{if $arrival_date_time}{$arrival_date_time|escape:'html':'UTF-8'}{else}____ / ____ / ____ ______{/if}
|
||||
</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.booking_departure pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">
|
||||
{if $departure_date_time}{$departure_date_time|escape:'html':'UTF-8'}{else}____ / ____ / ____ ______{/if}
|
||||
</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.booking_room_type || $labels.booking_room_number}
|
||||
<tr>
|
||||
{if $labels.booking_room_type && $labels.booking_room_number}
|
||||
<td width="25%" class="bold">{l s=$labels.booking_room_type pdf='true'}:</td>
|
||||
<td width="25%" class="white">{$room_type|escape:'html':'UTF-8'}</td>
|
||||
<td width="25%" class="bold">{l s=$labels.booking_room_number pdf='true'}:</td>
|
||||
<td width="25%" class="white">{$room_number|escape:'html':'UTF-8'}</td>
|
||||
{elseif $labels.booking_room_type}
|
||||
<td width="25%" class="bold">{l s=$labels.booking_room_type pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">{$room_type|escape:'html':'UTF-8'}</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.booking_room_number pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">{$room_number|escape:'html':'UTF-8'}</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.num_guests}
|
||||
<tr>
|
||||
<td width="25%" class="bold">{l s=$labels.num_guests pdf='true'}:</td>
|
||||
<td width="25%" class="white">
|
||||
{l s='Adults:' pdf='true'} {$adults|escape:'html':'UTF-8'}
|
||||
{l s='Children:' pdf='true'} {$children|escape:'html':'UTF-8'}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{* ===== SECTION 4: IDENTIFICATION DOCUMENT ===== *}
|
||||
{if $show_section_identification}
|
||||
<tr><td colspan="12" height="10"> </td></tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<tbody>
|
||||
{if $local_id}
|
||||
<tr>
|
||||
<td class="white">
|
||||
<strong><span style="font-family: freeserif; font-size: 14pt;">□</span> {l s='LOCAL GUEST' pdf='true'}</strong><br /><br />
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
{if $labels.id_proof}
|
||||
<tr>
|
||||
<td width="25%" class="bold">{l s=$labels.id_proof pdf='true'}:</td>
|
||||
<td width="75%" class="white">________________________________</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.id_number}
|
||||
<tr>
|
||||
<td width="25%" class="bold">{l s=$labels.id_number pdf='true'}:</td>
|
||||
<td width="75%" class="white">________________________________</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $int_id}
|
||||
<tr>
|
||||
<td class="white">
|
||||
<strong><span style="font-family: freeserif; font-size: 14pt;">□</span> {l s='INTERNATIONAL GUEST' pdf='true'}</strong><br /><br />
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
{if $labels.passport || $labels.place_of_issue}
|
||||
<tr>
|
||||
{if $labels.passport && $labels.place_of_issue}
|
||||
<td width="25%" class="bold">{l s=$labels.passport pdf='true'}:</td>
|
||||
<td width="25%" class="white">____________________</td>
|
||||
<td width="25%" class="bold">{l s=$labels.place_of_issue pdf='true'}:</td>
|
||||
<td width="25%" class="white">____________________</td>
|
||||
{elseif $labels.passport}
|
||||
<td width="25%" class="bold">{l s=$labels.passport pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">____________________</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.place_of_issue pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">____________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.date_of_issue || $labels.date_of_expiry}
|
||||
<tr>
|
||||
{if $labels.date_of_issue && $labels.date_of_expiry}
|
||||
<td width="25%" class="bold">{l s=$labels.date_of_issue pdf='true'}:</td>
|
||||
<td width="25%" class="white">____ / ____ / ____</td>
|
||||
<td width="25%" class="bold">{l s=$labels.date_of_expiry pdf='true'}:</td>
|
||||
<td width="25%" class="white">____ / ____ / ____</td>
|
||||
{elseif $labels.date_of_issue}
|
||||
<td width="25%" class="bold">{l s=$labels.date_of_issue pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">____ / ____ / ____</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.date_of_expiry pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">____ / ____ / ____</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.visa || $labels.valid_until}
|
||||
<tr>
|
||||
{if $labels.visa && $labels.valid_until}
|
||||
<td width="25%" class="bold">{l s=$labels.visa pdf='true'}:</td>
|
||||
<td width="25%" class="white">____________________</td>
|
||||
<td width="25%" class="bold">{l s=$labels.valid_until pdf='true'}:</td>
|
||||
<td width="25%" class="white">____ / ____ / ____</td>
|
||||
{elseif $labels.visa}
|
||||
<td width="25%" class="bold">{l s=$labels.visa pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">____________________</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.valid_until pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">____ / ____ / ____</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.arrival_in_country}
|
||||
<tr>
|
||||
<td width="25%" class="bold">{l s=$labels.arrival_in_country pdf='true'}:</td>
|
||||
<td width="75%" class="white">____ / ____ / ____</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{* ===== SECTION 5: ADDITIONAL GUESTS ===== *}
|
||||
{if $show_section_additional_guests}
|
||||
<tr><td colspan="12" height="10"> </td></tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="header-left"> {$section_additional_guests|upper} ({l s='if any' pdf='true'})</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="white">
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
<tr>
|
||||
<th class="header small" width="8%">{l s='S.No.' pdf='true'}</th>
|
||||
{if $labels.addguest_name}<th class="header small" width="40%">{l s=$labels.addguest_name pdf='true'}</th>{/if}
|
||||
{if $labels.addguest_id_type}<th class="header small" width="20%">{l s=$labels.addguest_id_type pdf='true'}</th>{/if}
|
||||
{if $labels.addguest_id_number}<th class="header small" width="17%">{l s=$labels.addguest_id_number pdf='true'}</th>{/if}
|
||||
{if $labels.addguest_nationality}<th class="header small" width="15%">{l s=$labels.addguest_nationality pdf='true'}</th>{/if}
|
||||
</tr>
|
||||
{section name=ag loop=$additional_guests_rows}
|
||||
<tr class="color_line_even">
|
||||
<td class="center white">{$smarty.section.ag.iteration}</td>
|
||||
{if $labels.addguest_name}<td class="white">______________________________</td>{/if}
|
||||
{if $labels.addguest_id_type}<td class="white">________________</td>{/if}
|
||||
{if $labels.addguest_id_number}<td class="white">________________</td>{/if}
|
||||
{if $labels.addguest_nationality}<td class="white">____________</td>{/if}
|
||||
</tr>
|
||||
{/section}
|
||||
{if !$additional_guests_rows}
|
||||
<tr class="color_line_even">
|
||||
<td class="center white">1</td>
|
||||
{if $labels.addguest_name}<td class="white">______________________________</td>{/if}
|
||||
{if $labels.addguest_id_type}<td class="white">________________</td>{/if}
|
||||
{if $labels.addguest_id_number}<td class="white">________________</td>{/if}
|
||||
{if $labels.addguest_nationality}<td class="white">____________</td>{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{* ===== SECTION 6: BILLING & CORPORATE DETAILS ===== *}
|
||||
{if $show_section_billing_corporate}
|
||||
<tr><td colspan="12" height="10"> </td></tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="white">
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
{if $labels.company}
|
||||
<tr>
|
||||
<td width="25%" class="bold">{l s=$labels.company pdf='true'}:</td>
|
||||
<td width="75%" class="white">______________________________________________</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.tax_id}
|
||||
<tr>
|
||||
<td width="25%" class="bold">{l s=$labels.tax_id pdf='true'}:</td>
|
||||
<td width="75%" class="white">______________________________________________</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{* ===== SECTION 7: PAYMENT & DEPOSIT ===== *}
|
||||
{if $show_section_payment_deposit}
|
||||
<tr><td colspan="12" height="10"> </td></tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="white">
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
{if $labels.payment_method}
|
||||
<tr>
|
||||
<td width="25%" class="bold">{l s=$labels.payment_method pdf='true'}:</td>
|
||||
<td width="75%" class="white">________________________________</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.card_number || $labels.security_deposit}
|
||||
<tr>
|
||||
{if $labels.card_number && $labels.security_deposit}
|
||||
<td width="25%" class="bold">{l s=$labels.card_number pdf='true'}:</td>
|
||||
<td width="35%" class="white">________________________________</td>
|
||||
<td width="20%" class="bold">{l s=$labels.security_deposit pdf='true'}:</td>
|
||||
<td width="20%" class="white">__________________</td>
|
||||
{elseif $labels.card_number}
|
||||
<td width="25%" class="bold">{l s=$labels.card_number pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">________________________________</td>
|
||||
{else}
|
||||
<td width="25%" class="bold">{l s=$labels.security_deposit pdf='true'}:</td>
|
||||
<td width="75%" colspan="3" class="white">__________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{* ===== SECTION 8: GUEST SIGNATURE ===== *}
|
||||
{if $show_section_guest_signature}
|
||||
<tr>
|
||||
<td colspan="12" height="10"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="white">
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
<tr>
|
||||
{if $labels.signature && $labels.sig_date}
|
||||
<td width="20%" class="bold">{l s=$labels.signature pdf='true'}:</td>
|
||||
<td width="50%" class="white">______________________________________</td>
|
||||
<td width="10%" class="bold">{l s=$labels.sig_date pdf='true'}:</td>
|
||||
<td width="20%" class="white">____ / ____ / ________</td>
|
||||
{elseif $labels.signature}
|
||||
<td width="20%" class="bold">{l s=$labels.signature pdf='true'}:</td>
|
||||
<td width="80%" colspan="3" class="white">______________________________________</td>
|
||||
{else}
|
||||
<td width="20%" class="bold">{l s=$labels.sig_date pdf='true'}:</td>
|
||||
<td width="80%" colspan="3" class="white">____ / ____ / ________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{* ===== SECTION 9: PROPERTY REGULATIONS ===== *}
|
||||
{if $show_section_property_regs}
|
||||
<tr><td colspan="12" height="10"> </td></tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="header-left">{$section_property_regs|upper}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{if $labels.checkin_time}
|
||||
<tr>
|
||||
<td class="white">
|
||||
<strong> {l s=$labels.checkin_time pdf='true'}:</strong>
|
||||
{if $hotel && $hotel->check_in && $hotel->check_in != '00:00:00'}{$hotel->check_in|escape:'html':'UTF-8'}{else}__________{/if}
|
||||
|
||||
<strong>{l s=$labels.checkout_time pdf='true'}:</strong>
|
||||
{if $hotel && $hotel->check_out && $hotel->check_out != '00:00:00'}{$hotel->check_out|escape:'html':'UTF-8'}{else}__________{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.hotel_policies}
|
||||
<tr>
|
||||
<td class="white">
|
||||
<strong> {l s=$labels.hotel_policies pdf='true'}:</strong>
|
||||
{if $hotel && $hotel->policies && !($hotel->policies|@is_array)}
|
||||
{$hotel->policies}
|
||||
{else}
|
||||
______________________________<br />
|
||||
______________________________<br />
|
||||
______________________________
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{* ===== SECTION 10: FOR OFFICE USE ONLY ===== *}
|
||||
{if $show_section_office_use}
|
||||
<tr><td colspan="12" height="10"> </td></tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
<table class="bordered-table" width="100%" cellpadding="5" cellspacing="0" nobr="true">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="white">
|
||||
<table width="100%" cellpadding="4" cellspacing="0">
|
||||
{if $labels.staff_name || $labels.office_checkin_time}
|
||||
<tr>
|
||||
{if $labels.staff_name && $labels.office_checkin_time}
|
||||
<td width="20%" class="bold">{l s=$labels.staff_name pdf='true'}:</td>
|
||||
<td width="30%" class="white">____________________</td>
|
||||
<td width="20%" class="bold">{l s=$labels.office_checkin_time pdf='true'}:</td>
|
||||
<td width="30%" class="white">____________________</td>
|
||||
{elseif $labels.staff_name}
|
||||
<td width="20%" class="bold">{l s=$labels.staff_name pdf='true'}:</td>
|
||||
<td width="80%" colspan="3" class="white">____________________</td>
|
||||
{else}
|
||||
<td width="20%" class="bold">{l s=$labels.office_checkin_time pdf='true'}:</td>
|
||||
<td width="80%" colspan="3" class="white">____________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
{if $labels.id_verified || $labels.reg_no}
|
||||
<tr>
|
||||
{if $labels.id_verified && $labels.reg_no}
|
||||
<td width="20%" class="bold">{l s=$labels.id_verified pdf='true'}:</td>
|
||||
<td width="30%" class="white"><span style="font-family: freeserif;">□</span> {l s='Yes' pdf='true'} <span style="font-family: freeserif;">□</span> {l s='No' pdf='true'}</td>
|
||||
<td width="20%" class="bold">{l s=$labels.reg_no pdf='true'}:</td>
|
||||
<td width="30%" class="white">____________________</td>
|
||||
{elseif $labels.id_verified}
|
||||
<td width="20%" class="bold">{l s=$labels.id_verified pdf='true'}:</td>
|
||||
<td width="80%" colspan="3" class="white"><span style="font-family: freeserif;">□</span> {l s='Yes' pdf='true'} <span style="font-family: freeserif;">□</span> {l s='No' pdf='true'}</td>
|
||||
{else}
|
||||
<td width="20%" class="bold">{l s=$labels.reg_no pdf='true'}:</td>
|
||||
<td width="80%" colspan="3" class="white">____________________</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{if isset($HOOK_DISPLAY_PDF)}
|
||||
<tr>
|
||||
<td colspan="12" height="10"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="12">
|
||||
{$HOOK_DISPLAY_PDF}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
@@ -24,6 +24,11 @@
|
||||
*}
|
||||
|
||||
{block name='category'}
|
||||
{block name='errors'}
|
||||
{include file="$tpl_dir./errors.tpl"}
|
||||
{/block}
|
||||
|
||||
{if !isset($errors) OR !sizeof($errors)}
|
||||
<div class="row cat_cont">
|
||||
<div class="col-sm-12">
|
||||
{block name='category_top_left'}
|
||||
@@ -54,6 +59,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{block name='category_js_vars'}
|
||||
{strip}
|
||||
|
||||
Reference in New Issue
Block a user