2491 lines
99 KiB
Smarty
2491 lines
99 KiB
Smarty
{*
|
|
* 2007-2017 PrestaShop
|
|
*
|
|
* 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.txt.
|
|
* It is also available through the world-wide-web at this URL:
|
|
* http://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 license@prestashop.com so we can send you a copy immediately.
|
|
*
|
|
* DISCLAIMER
|
|
*
|
|
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
|
* versions in the future. If you wish to customize PrestaShop for your
|
|
* needs please refer to http://www.prestashop.com for more information.
|
|
*
|
|
* @author PrestaShop SA <contact@prestashop.com>
|
|
* @copyright 2007-2017 PrestaShop SA
|
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
|
* International Registered Trademark & Property of PrestaShop SA
|
|
*}
|
|
<script type="text/javascript">
|
|
{if isset($cart->id) && $cart->id}
|
|
var id_cart = {$cart->id|intval};
|
|
{/if}
|
|
var id_customer = 0;
|
|
var can_edit_booking_carts = {if isset($can_edit_booking_carts) && $can_edit_booking_carts}true{else}false{/if};
|
|
var can_add_addresses = {if isset($can_add_addresses) && $can_add_addresses}true{else}false{/if};
|
|
var admin_order_tab_link = "{$link->getAdminLink('AdminOrders')|addslashes}";
|
|
var new_service_pcm_once_for_booking = {Product::PRICE_CALCULATION_METHOD_ONCE_FOR_BOOKING|intval};
|
|
var changed_shipping_price = false;
|
|
var shipping_price_selected_carrier = '';
|
|
var current_index = '{$current|escape:'html':'UTF-8'}&token={$token|escape:'html':'UTF-8'}';
|
|
var admin_cart_link = '{$link->getAdminLink('AdminCarts')|addslashes}';
|
|
var cart_quantity = new Array();
|
|
var currencies = new Array();
|
|
var id_currency = '';
|
|
var id_lang = '';
|
|
//var txt_show_carts = '{l s='Show carts and orders for this customer.' js=1}';
|
|
//var txt_hide_carts = '{l s='Hide carts and orders for this customer.' js=1}';
|
|
var customization_errors = false;
|
|
var pic_dir = '{$pic_dir}';
|
|
var currency_format = 5;
|
|
var currency_sign = '';
|
|
var currency_blank = false;
|
|
var priceDisplayPrecision = {$smarty.const._PS_PRICE_DISPLAY_PRECISION_|intval};
|
|
var current_order_total = {$order_total|floatval};
|
|
|
|
$(document).ready(function() {
|
|
$(document).on('change', '#add_new_room_services_form select[name="price_calculation_type"]', function() {
|
|
if ($(this).val() == new_service_pcm_once_for_booking) {
|
|
$('#new_service_pcm_days_container').hide();
|
|
} else {
|
|
$('#new_service_pcm_days_container').show();
|
|
}
|
|
});
|
|
|
|
$(document).on('admin-theme.js.ready', function () {
|
|
initUITooltip();
|
|
});
|
|
|
|
$('#customer').typeWatch({
|
|
captureLength: 3,
|
|
highlight: true,
|
|
wait: 100,
|
|
callback: function(){ searchCustomers(); }
|
|
});
|
|
$('#product').typeWatch({
|
|
captureLength: 1,
|
|
highlight: true,
|
|
wait: 750,
|
|
callback: function(){ searchProducts(); }
|
|
});
|
|
$("#id_address_delivery").change(function() {
|
|
updateAddresses();
|
|
});
|
|
$("#id_address_invoice").change(function() {
|
|
updateAddresses();
|
|
});
|
|
$('#id_currency').change(function() {
|
|
updateCurrency();
|
|
});
|
|
$('#id_lang').change(function(){
|
|
updateLang();
|
|
});
|
|
$('#delivery_option,#carrier_recycled_package,#order_gift,#gift_message').change(function() {
|
|
updateDeliveryOption();
|
|
});
|
|
$('#shipping_price').change(function() {
|
|
if ($(this).val() != shipping_price_selected_carrier)
|
|
changed_shipping_price = true;
|
|
});
|
|
|
|
$('#payment_module_name').change();
|
|
$.ajaxSetup({ type:"post" });
|
|
$("#voucher").autocomplete('{$link->getAdminLink('AdminCartRules')|addslashes}', {
|
|
minChars: 3,
|
|
max: 15,
|
|
width: 250,
|
|
selectFirst: false,
|
|
scroll: false,
|
|
dataType: "json",
|
|
cacheLength: 0,
|
|
formatItem: function(data, i, max, value, term) {
|
|
return value;
|
|
},
|
|
parse: function(data) {
|
|
if (!data.found)
|
|
$('#vouchers_err').html('{l s='No voucher was found'}').show();
|
|
else
|
|
$('#vouchers_err').hide();
|
|
var mytab = new Array();
|
|
for (var i = 0; i < data.vouchers.length; i++)
|
|
mytab[mytab.length] = { data: data.vouchers[i], value: data.vouchers[i].name + (data.vouchers[i].code.length > 0 ? ' - ' + data.vouchers[i].code : '')};
|
|
return mytab;
|
|
},
|
|
extraParams: {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCartRules'}",
|
|
tab: "AdminCartRules",
|
|
action: "searchCartRuleVouchers",
|
|
id_customer: function () { return window.id_customer },
|
|
}
|
|
}
|
|
)
|
|
.result(function(event, data, formatted) {
|
|
$('#voucher').val(data.name);
|
|
add_cart_rule(data.id_cart_rule);
|
|
});
|
|
{if isset($cart->id) && $cart->id}
|
|
setupCustomer({$cart->id_customer|intval});
|
|
useCart('{$cart->id|intval}');
|
|
{/if}
|
|
|
|
$('.delete_product').live('click', function(e) {
|
|
e.preventDefault();
|
|
var to_delete = $(this).attr('rel').split('_');
|
|
deleteProduct(to_delete[1], to_delete[2], to_delete[3]);
|
|
});
|
|
$('.delete_discount').live('click', function(e) {
|
|
e.preventDefault();
|
|
deleteVoucher($(this).attr('rel'));
|
|
});
|
|
$('.use_cart').live('click', function(e) {
|
|
e.preventDefault();
|
|
useCart($(this).attr('rel'));
|
|
return false;
|
|
});
|
|
|
|
/*By Webkul to delete the rooms added in the cart*/
|
|
$('body').on('click', '.delete_hotel_cart_data', function(){
|
|
if (confirm("{l s='Are you sure?'}"))
|
|
{
|
|
var idCart = $(this).data('id_cart');
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminOrders')|addslashes}",
|
|
data : {
|
|
ajax: "1",
|
|
action: "deleteRoomProcess",
|
|
del_id: $(this).data('id'),
|
|
id_product: $(this).data('id_product'),
|
|
id_cart: idCart,
|
|
id_room: $(this).data('id_room'),
|
|
date_from: $(this).data('date_from'),
|
|
date_to: $(this).data('date_to'),
|
|
},
|
|
dataType:"json",
|
|
success : function(data)
|
|
{
|
|
if (data.status == 'deleted')
|
|
{
|
|
showSuccessMessage("{l s='Remove successful'}");
|
|
if (data.cart_rooms)
|
|
window.location.href = "{$link->getAdminLink('AdminOrders',true)}" + '&addorder&cart_id=' + idCart;
|
|
else
|
|
window.location.href = "{$link->getAdminLink('AdminHotelRoomsBooking',true)}";
|
|
}
|
|
else
|
|
{
|
|
alert("l s='Some error occured.please try again.'}");
|
|
}
|
|
}
|
|
});
|
|
$(this).closest("tr").remove();
|
|
}
|
|
});
|
|
|
|
$('body').on('click', '.delete_service_product', function(){
|
|
if (confirm("{l s='Are you sure?'}"))
|
|
{
|
|
$(".loading_overlay").show();
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminOrders')|addslashes}",
|
|
data : {
|
|
ajax: true,
|
|
action: "deleteProductProcess",
|
|
id_product: $(this).data('id_product'),
|
|
id_cart: $(this).data('id_cart'),
|
|
id_hotel: $(this).data('id_hotel'),
|
|
},
|
|
dataType:"json",
|
|
success : function(data)
|
|
{
|
|
if (data.status == 'deleted')
|
|
{
|
|
showSuccessMessage("{l s='Remove successful'}");
|
|
location.reload();
|
|
{* if (data.cart_rooms)
|
|
location.reload();
|
|
else
|
|
window.location.href = "{$link->getAdminLink('AdminHotelRoomsBooking',true)}"; *}
|
|
}
|
|
else
|
|
{
|
|
alert("l s='Some error occured.please try again.'}");
|
|
}
|
|
},
|
|
complete: function(){
|
|
$(".loading_overlay").hide();
|
|
}
|
|
});
|
|
$(this).closest("tr").remove();
|
|
}
|
|
});
|
|
/*END*/
|
|
|
|
$('input:radio[name="free_shipping"]').on('change',function() {
|
|
var free_shipping = $('input[name=free_shipping]:checked').val();
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "updateFreeShipping",
|
|
id_cart: id_cart,
|
|
id_customer: id_customer,
|
|
'free_shipping': free_shipping
|
|
},
|
|
success : function(res)
|
|
{
|
|
displaySummary(res);
|
|
}
|
|
});
|
|
});
|
|
|
|
$('.duplicate_order').live('click', function(e) {
|
|
e.preventDefault();
|
|
duplicateOrder($(this).attr('rel'));
|
|
});
|
|
$('.cart_quantity').live('change', function(e) {
|
|
e.preventDefault();
|
|
if ($(this).val() != cart_quantity[$(this).attr('rel')])
|
|
{
|
|
var product = $(this).attr('rel').split('_');
|
|
updateQty(product[0], product[1], product[2], $(this).val() - cart_quantity[$(this).attr('rel')]);
|
|
}
|
|
});
|
|
$('.increaseqty_product, .decreaseqty_product').live('click', function(e) {
|
|
e.preventDefault();
|
|
var product = $(this).attr('rel').split('_');
|
|
var sign = '';
|
|
if ($(this).hasClass('decreaseqty_product'))
|
|
sign = '-';
|
|
updateQty(product[0], product[1],product[2], sign+1);
|
|
});
|
|
$('#id_product').live('keydown', function(e) {
|
|
$(this).click();
|
|
return true;
|
|
});
|
|
$('#id_product, .id_product_attribute').live('change', function(e) {
|
|
e.preventDefault();
|
|
displayQtyInStock(this.id);
|
|
});
|
|
$('#id_product, .id_product_attribute').live('keydown', function(e) {
|
|
$(this).change();
|
|
return true;
|
|
});
|
|
$(document).on('change', '.room_unit_price', function(e) {
|
|
e.preventDefault();
|
|
var cart_row = $(this).closest('tr');
|
|
var params = {
|
|
id_booking_data: parseInt($(cart_row).attr('data-id-booking-data')),
|
|
id_product: parseInt($(cart_row).attr('data-id-product')),
|
|
id_room: parseInt($(cart_row).attr('data-id-room')),
|
|
date_from: $(cart_row).attr('data-date-from'),
|
|
date_to: $(cart_row).attr('data-date-to'),
|
|
price: new Number($(this).val().replace(",",".")).toString(),
|
|
id_cart: id_cart
|
|
};
|
|
updateProductPrice(params, cart_row);
|
|
})
|
|
$(document).on('change', '.product_quantity', function(e) {
|
|
var cart_row = $(this).closest('tr');
|
|
var qty = parseInt($(this).val());
|
|
var qtyhidden= parseInt($(this).siblings('.product_quantity_hidden').val());
|
|
var qty_to_update = qty - qtyhidden;
|
|
if ((qty_to_update) > 0) {
|
|
var opt = 'up';
|
|
} else {
|
|
var opt = 'down';
|
|
}
|
|
|
|
var params = {
|
|
id_product: parseInt($(cart_row).attr('data-id-product')),
|
|
qty: qty_to_update,
|
|
opt: opt,
|
|
id_cart: id_cart
|
|
};
|
|
|
|
updateQuantity(params, cart_row);
|
|
$(this).siblings('.product_quantity_hidden').val($(this).val())
|
|
});
|
|
$('#order_message').live('change', function(e) {
|
|
e.preventDefault();
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "updateOrderMessage",
|
|
id_cart: id_cart,
|
|
id_customer: id_customer,
|
|
message: $(this).val()
|
|
},
|
|
success : function(res)
|
|
{
|
|
displaySummary(res);
|
|
}
|
|
});
|
|
});
|
|
|
|
resetBind();
|
|
|
|
$('#customer').focus();
|
|
|
|
$('#submitAddProduct').on('click',function(){
|
|
addProduct();
|
|
});
|
|
|
|
$('#product').bind('keypress', function(e) {
|
|
var code = (e.keyCode ? e.keyCode : e.which);
|
|
if(code == 13)
|
|
{
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
if ($('#submitAddProduct').length)
|
|
addProduct();
|
|
}
|
|
});
|
|
|
|
$('#send_email_to_customer').on('click',function(){
|
|
sendMailToCustomer();
|
|
return false;
|
|
});
|
|
|
|
$('#products_found').hide();
|
|
$('#carts').hide();
|
|
|
|
$('#customer_part').on('click','button.setup-customer',function(e){
|
|
e.preventDefault();
|
|
setupCustomer($(this).data('customer'));
|
|
updateCurrency();
|
|
$(this).removeClass('setup-customer').addClass('change-customer').html('<i class="icon-refresh"></i> {l s="Change"}').blur();
|
|
$(this).closest('.customerCard').addClass('selected-customer');
|
|
$('.selected-customer .panel-heading').prepend('<i class="icon-ok text-success"></i>');
|
|
$('.customerCard').not('.selected-customer').remove();
|
|
$('#search-customer-form-group').hide();
|
|
//cart id is additionally send in query by webkul
|
|
var query = 'ajax=1&token='+token+'&action=changePaymentMethod&id_customer='+$(this).data('customer')+'&id_cart='+$(this).data('id_cart');
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: admin_order_tab_link,
|
|
headers: { "cache-control": "no-cache" },
|
|
cache: false,
|
|
dataType: 'json',
|
|
data : query,
|
|
success : function(data) {
|
|
if (data.result)
|
|
{
|
|
$('#cart_detail_form').show();//line added by webkul
|
|
$('#payment_method_options').replaceWith(data.view)
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#customer_part').on('click','button.change-customer',function(e){
|
|
e.preventDefault();
|
|
$('#search-customer-form-group').show();
|
|
$(this).blur();
|
|
});
|
|
|
|
{literal}
|
|
$(document).on('click', '.booking_occupancy_wrapper .remove-room-link', function(e) {
|
|
e.preventDefault();
|
|
|
|
booking_occupancy_inner = $(this).closest('.booking_occupancy_inner');
|
|
$(this).closest('.occupancy_info_block').remove();
|
|
$(booking_occupancy_inner).find('.room_num_wrapper').each(function(key, val) {
|
|
$(this).text(room_txt + ' - '+ (key+1) );
|
|
});
|
|
setRoomTypeGuestOccupancy($(booking_occupancy_inner).closest('.booking_occupancy_wrapper'));
|
|
});
|
|
|
|
$(document).on('change', '.num_occupancy', function(e) {
|
|
let elementVal = parseInt($(this).val());
|
|
let current_room_occupancy = 0;
|
|
$(this).closest('.occupancy_info_block').find('.num_occupancy').each(function(){
|
|
current_room_occupancy += parseInt($(this).val());
|
|
});
|
|
let max_guests_in_room = $(this).closest(".booking_occupancy_wrapper").find('.max_guests').val();
|
|
let max_allowed_for_current = (max_guests_in_room - current_room_occupancy) + parseInt($(this).val());
|
|
let haserror = false
|
|
if ($(this).hasClass('num_children')) {
|
|
max_child_in_room = $(this).closest(".booking_occupancy_wrapper").find('.max_children').val();
|
|
if (elementVal > max_child_in_room) {
|
|
$(this).val(max_child_in_room);
|
|
if (elementVal == 1) {
|
|
showOccupancyError(no_children_allowed_txt, $(this).closest(".occupancy_info_block"));
|
|
haserror = true;
|
|
} else {
|
|
showOccupancyError(max_children_txt, $(this).closest(".occupancy_info_block"));
|
|
haserror = true;
|
|
}
|
|
} else if (elementVal > max_allowed_for_current) {
|
|
$(this).val(max_allowed_for_current);
|
|
showOccupancyError(max_occupancy_reached_txt, $(this).closest(".occupancy_info_block"));
|
|
haserror = true;
|
|
}
|
|
} else {
|
|
max_adults_in_room = $(this).closest(".booking_occupancy_wrapper").find('.max_adults').val();
|
|
if (elementVal >= max_adults_in_room) {
|
|
$(this).val(max_adults_in_room);
|
|
showOccupancyError(max_adults_txt, $(this).closest(".occupancy_info_block"));
|
|
haserror = true;
|
|
} else if (elementVal > max_allowed_for_current) {
|
|
$(this).val(max_allowed_for_current);
|
|
showOccupancyError(max_occupancy_reached_txt, $(this).closest(".occupancy_info_block"));
|
|
haserror = true;
|
|
}
|
|
}
|
|
|
|
if (!haserror) {
|
|
if ($(this).hasClass('num_children')) {
|
|
let totalChilds = $(this).closest('.occupancy_info_block').find('.guest_child_age').length;
|
|
if (totalChilds < $(this).val()) {
|
|
$(this).closest('.occupancy_info_block').find('.children_age_info_block').show();
|
|
while ($(this).closest('.occupancy_info_block').find('.guest_child_age').length < $(this).val()) {
|
|
var roomBlockIndex = parseInt($(this).closest('.occupancy_info_block').attr('occ_block_index'));
|
|
var childAgeSelect = '<p class="col-xs-12 col-sm-12 col-md-6 col-lg-6">';
|
|
childAgeSelect += '<select class="guest_child_age room_occupancies" name="occupancy[' +roomBlockIndex+ '][child_ages][]">';
|
|
childAgeSelect += '<option value="-1">' + select_age_txt + '</option>';
|
|
childAgeSelect += '<option value="0">' + under_1_age + '</option>';
|
|
for (let age = 1; age < max_child_age; age++) {
|
|
childAgeSelect += '<option value="'+age+'">'+age+'</option>';
|
|
}
|
|
childAgeSelect += '</select>';
|
|
childAgeSelect += '</p>';
|
|
$(this).closest('.occupancy_info_block').find('.children_ages').append(childAgeSelect);
|
|
}
|
|
} else {
|
|
let child = $(this).val();
|
|
$(this).closest('.occupancy_info_block').find('.guest_child_age').each(function(ind, element) {
|
|
if (child <= ind) {
|
|
$(element).parent().remove();
|
|
}
|
|
});
|
|
if (child == 0) {
|
|
$(this).closest('.occupancy_info_block').find('.children_age_info_block').hide();
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
setRoomTypeGuestOccupancy($(this).closest('.booking_occupancy_wrapper'));
|
|
});
|
|
|
|
var errorMsgTime;
|
|
$('.occupancy-input-errors').parent().hide();
|
|
function showOccupancyError(msg, occupancy_info_block)
|
|
{
|
|
var errorMsgBlock = $(occupancy_info_block).find('.occupancy-input-errors')
|
|
$(errorMsgBlock).html(msg).parent().show('fast');
|
|
clearTimeout(errorMsgTime);
|
|
errorMsgTime = setTimeout(function() {
|
|
$(errorMsgBlock).parent().hide('fast');
|
|
}, 1000);
|
|
|
|
}
|
|
|
|
|
|
$(document).on('click', '.booking_guest_occupancy', function(e) {
|
|
$(this).parent().toggleClass('open');
|
|
});
|
|
|
|
$(document).on('click', function(e) {
|
|
if ($('.booking_occupancy_wrapper:visible').length) {
|
|
var occupancy_wrapper = $('.booking_occupancy_wrapper:visible');
|
|
$(occupancy_wrapper).find(".occupancy_info_block").addClass('selected');
|
|
if (!($(e.target).closest(".booking_occupancy_wrapper").length || $(e.target).closest(".booking_guest_occupancy").length || $(e.target).closest(".ajax_add_to_cart_button").length || $(e.target).closest(".exclusive.book_now_submit").length)) {
|
|
let hasErrors = 0;
|
|
|
|
let adults = $(occupancy_wrapper).find(".num_adults").map(function(){return $(this).val();}).get();
|
|
let children = $(occupancy_wrapper).find(".num_children").map(function(){return $(this).val();}).get();
|
|
let child_ages = $(occupancy_wrapper).find(".guest_child_age").map(function(){return $(this).val();}).get();
|
|
|
|
// start validating above values
|
|
if (!adults.length || (adults.length != children.length)) {
|
|
hasErrors = 1;
|
|
showErrorMessage(invalid_occupancy_txt);
|
|
} else {
|
|
$(occupancy_wrapper).find('.occupancy_count').removeClass('error_border');
|
|
|
|
// validate values of adults and children
|
|
adults.forEach(function (item, index) {
|
|
if (isNaN(item) || parseInt(item) < 1) {
|
|
hasErrors = 1;
|
|
$(occupancy_wrapper).find(".num_adults").eq(index).closest('.occupancy_count_block').find('.occupancy_count').addClass('error_border');
|
|
}
|
|
if (isNaN(children[index])) {
|
|
hasErrors = 1;
|
|
$(occupancy_wrapper).find(".num_children").eq(index).closest('.occupancy_count_block').find('.occupancy_count').addClass('error_border');
|
|
}
|
|
});
|
|
|
|
// validate values of selected child ages
|
|
$(occupancy_wrapper).find('.guest_child_age').parent().removeClass('has-error');
|
|
child_ages.forEach(function (age, index) {
|
|
age = parseInt(age);
|
|
if (isNaN(age) || (age < 0) || (age >= parseInt(max_child_age))) {
|
|
hasErrors = 1;
|
|
$(occupancy_wrapper).find(".guest_child_age").eq(index).parent().addClass('has-error');
|
|
}
|
|
});
|
|
}
|
|
if (hasErrors == 0) {
|
|
$(occupancy_wrapper).parent().removeClass('open');
|
|
$(document).trigger( "QloApps:updateRoomOccupancy", [occupancy_wrapper]);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
$(document).on('QloApps:updateRoomOccupancy', function (e, occupancy_wrapper) {
|
|
e.preventDefault();
|
|
let cart_row = $(occupancy_wrapper).closest('tr');
|
|
let occupancy = getBookingOccupancyDetails(cart_row);
|
|
let params = {
|
|
id_cart: id_cart,
|
|
id_booking_data: parseInt($(cart_row).attr('data-id-booking-data')),
|
|
occupancy : occupancy.shift(),
|
|
};
|
|
updateRoomOccupancy(params, cart_row);
|
|
});
|
|
|
|
function getBookingOccupancyDetails(bookingform)
|
|
{
|
|
let occupancy = [];
|
|
let selected_occupancy = $(bookingform).find(".occupancy_info_block.selected")
|
|
if (selected_occupancy.length) {
|
|
$(selected_occupancy).each(function(ind, element) {
|
|
if (parseInt($(element).find('.num_adults').val())) {
|
|
let child_ages = [];
|
|
$(element).find('.guest_child_age').each(function(index) {
|
|
if ($(this).val() > -1) {
|
|
child_ages.push($(this).val());
|
|
}
|
|
});
|
|
if ($(element).find('.num_children').val()) {
|
|
if (child_ages.length != $(element).find('.num_children').val()) {
|
|
$(bookingform).find('.booking_occupancy_wrapper').parent().addClass('open');
|
|
}
|
|
}
|
|
occupancy.push({
|
|
'adults': $(element).find('.num_adults').val(),
|
|
'children': $(element).find('.num_children').val(),
|
|
'child_ages': child_ages
|
|
});
|
|
} else {
|
|
$(bookingform).find('.booking_occupancy_wrapper').parent().addClass('open');
|
|
}
|
|
});
|
|
} else {
|
|
$(bookingform).find('.booking_occupancy_wrapper').parent().addClass('open');
|
|
}
|
|
|
|
return occupancy;
|
|
}
|
|
|
|
function setRoomTypeGuestOccupancy(booking_occupancy_wrapper)
|
|
{
|
|
var adults = 0;
|
|
var children = 0;
|
|
var rooms = $(booking_occupancy_wrapper).find('.occupancy_info_block').length;
|
|
|
|
$(booking_occupancy_wrapper).find(".num_adults" ).each(function(key, val) {
|
|
adults += parseInt($(this).val());
|
|
});
|
|
$(booking_occupancy_wrapper).find(".num_children" ).each(function(key, val) {
|
|
children += parseInt($(this).val());
|
|
});
|
|
|
|
var guestButtonVal = parseInt(adults) + ' ';
|
|
if (parseInt(adults) > 1) {
|
|
guestButtonVal += adults_txt;
|
|
} else {
|
|
guestButtonVal += adult_txt;
|
|
}
|
|
if (parseInt(children) > 0) {
|
|
if (parseInt(children) > 1) {
|
|
guestButtonVal += ', ' + parseInt(children) + ' ' + children_txt;
|
|
} else {
|
|
guestButtonVal += ', ' + parseInt(children) + ' ' + child_txt;
|
|
}
|
|
}
|
|
// if (parseInt(rooms) > 1) {
|
|
// guestButtonVal += ', ' + parseInt(rooms) + ' ' + rooms_txt;
|
|
// } else {
|
|
// guestButtonVal += ', ' + parseInt(rooms) + ' ' + room_txt;
|
|
// }
|
|
// console.log($(booking_occupancy_wrapper).siblings('.booking_guest_occupancy > span'));
|
|
$(booking_occupancy_wrapper).siblings('.booking_guest_occupancy').find('span').text(guestButtonVal);
|
|
}
|
|
{/literal}
|
|
|
|
if (!can_edit_booking_carts || !can_add_addresses) {
|
|
$('#address_part').hide();
|
|
}
|
|
});
|
|
|
|
function resetBind()
|
|
{
|
|
$('.fancybox').fancybox({
|
|
'type': 'iframe',
|
|
'width': '90%',
|
|
'height': '90%',
|
|
});
|
|
|
|
$('.fancybox_customer').fancybox({
|
|
'type': 'iframe',
|
|
'width': '90%',
|
|
'height': '90%',
|
|
'afterClose' : function () {
|
|
let customer = $('#customer').val();
|
|
if (customer != '' && customer.length > 3) {
|
|
searchCustomers();
|
|
}
|
|
}
|
|
});
|
|
/*$("#new_address").fancybox({
|
|
onClosed: useCart(id_cart)
|
|
});*/
|
|
}
|
|
|
|
function add_cart_rule(id_cart_rule)
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "addVoucher",
|
|
id_cart_rule: id_cart_rule,
|
|
id_cart: id_cart,
|
|
id_customer: id_customer
|
|
},
|
|
success : function(res)
|
|
{
|
|
displaySummary(res);
|
|
$('#voucher').val('');
|
|
var errors = '';
|
|
if (res.errors.length > 0)
|
|
{
|
|
$.each(res.errors, function() {
|
|
errors += this+'<br/>';
|
|
});
|
|
$('#vouchers_err').html(errors).show();
|
|
}
|
|
else
|
|
$('#vouchers_err').hide();
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateProductPrice(params, cart_row)
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "JSON",
|
|
data: {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "updateProductPrice",
|
|
params: params,
|
|
id_cart: id_cart,
|
|
id_customer: id_customer
|
|
},
|
|
success : function(response) {
|
|
updateCartLine(response.curr_booking_info, cart_row);
|
|
updateCartSummaryData(response.cart_info);
|
|
updateCartVouchers(response.cart_info.summary.discounts);
|
|
var $totalTaxesTrigger = $('#total_taxes').closest('.data-focus').find('.ui-tooltip-trigger');
|
|
initUITooltip($totalTaxesTrigger, function() {
|
|
return $totalTaxesTrigger.next('.tooltip-content').html();
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateRoomOccupancy(params, cart_row)
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "JSON",
|
|
data: {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "updateRoomOccupancy",
|
|
params: params,
|
|
},
|
|
success : function(response) {
|
|
updateCartLine(response.curr_booking_info, cart_row);
|
|
updateCartSummaryData(response.cart_info);
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateQuantity(params, cart_row)
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "JSON",
|
|
data: {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "updateProductQuantity",
|
|
params: params,
|
|
},
|
|
success : function(response) {
|
|
// updateCartLine(response.curr_booking_info, cart_row);
|
|
// updateCartSummaryData(response.cart_info);
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateCartLine(data, cart_row) {
|
|
$(cart_row).find('.cart_line_total_rooms_price').html(data.amt_with_qty);
|
|
$(cart_row).find('.cart_line_total_price').html(data.total_price);
|
|
}
|
|
|
|
function updateCartSummaryData(jsonSummary) {
|
|
$('#total_rooms').html(formatCurrency(parseFloat(jsonSummary.summary.total_rooms_with_services_without_discount_te), currency_format, currency_sign, currency_blank));
|
|
$('#total_vouchers').html(formatCurrency(parseFloat(jsonSummary.summary.total_discounts), currency_format, currency_sign, currency_blank));
|
|
$('#total_convenience_fees').html(formatCurrency(parseFloat(jsonSummary.summary.convenience_fee), currency_format, currency_sign, currency_blank));
|
|
$('#total_without_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.cart_total_without_discount_te), currency_format, currency_sign, currency_blank));
|
|
// $('#total_service_products').html(formatCurrency(parseFloat(jsonSummary.summary.total_service_products), currency_format, currency_sign, currency_blank));
|
|
$('#total_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_tax_without_discount) + parseFloat(jsonSummary.summary.total_tourism_tax || 0), currency_format, currency_sign, currency_blank));
|
|
$('#total_taxes_vat').html(formatCurrency(parseFloat(jsonSummary.summary.total_tax_without_discount || 0), currency_format, currency_sign, currency_blank));
|
|
var totalTaxesTourismAmt = parseFloat(jsonSummary.summary.total_tourism_tax || 0);
|
|
$('#total_taxes_tourism').closest('div').toggle(totalTaxesTourismAmt > 0);
|
|
$('#total_taxes_tourism').html(formatCurrency(totalTaxesTourismAmt, currency_format, currency_sign, currency_blank));
|
|
$('#total_with_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_price), currency_format, currency_sign, currency_blank));
|
|
|
|
current_order_total = parseFloat(jsonSummary.summary.total_price);
|
|
$('#payment_amount').val(jsonSummary.summary.total_price);
|
|
$('#full_payment_amount_value').html(formatCurrency(parseFloat(jsonSummary.summary.total_price), currency_format, currency_sign, currency_blank));
|
|
|
|
if (jsonSummary.summary.is_advance_payment_active) {
|
|
$('#advance_payment_amount').html(formatCurrency(parseFloat(jsonSummary.summary.advance_payment_amount_with_tax), currency_format, currency_sign, currency_blank));
|
|
$('#advance_payment_amount_block').show();
|
|
} else {
|
|
$('#advance_payment_amount_block').hide();
|
|
}
|
|
|
|
// toggle payment fields
|
|
if (jsonSummary.summary.total_price == 0) { // if free order
|
|
$('#send_email_to_customer, [name="is_full_payment"], #payment_amount, #payment_type, #payment_module_name, #payment_transaction_id').closest('.form-group').hide(200);
|
|
} else {
|
|
$('#send_email_to_customer, [name="is_full_payment"], #payment_type, #payment_module_name, #payment_transaction_id').closest('.form-group').show(200);
|
|
$('#payment_amount').closest('.form-group').toggle(!parseInt($('input[name="is_full_payment"]:checked').val()));
|
|
}
|
|
}
|
|
|
|
function displayQtyInStock(id)
|
|
{
|
|
var id_product = $('#id_product').val();
|
|
if ($('#ipa_' + id_product + ' option').length)
|
|
var id_product_attribute = $('#ipa_' + id_product).val();
|
|
else
|
|
var id_product_attribute = 0;
|
|
|
|
$('#qty_in_stock').html(stock[id_product][id_product_attribute]);
|
|
}
|
|
|
|
function duplicateOrder(id_order)
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "duplicateOrder",
|
|
id_order: id_order,
|
|
id_customer: id_customer
|
|
},
|
|
success : function(res)
|
|
{
|
|
id_cart = res.cart.id;
|
|
//$('#id_cart').val(id_cart);
|
|
displaySummary(res);
|
|
}
|
|
});
|
|
}
|
|
|
|
function useCart(id_new_cart)
|
|
{
|
|
id_cart = id_new_cart;
|
|
//$('#id_cart').val(id_cart);
|
|
//$('#id_cart').val(id_cart);
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: false,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "getSummary",
|
|
id_cart: id_cart,
|
|
id_customer: id_customer
|
|
},
|
|
success : function(res)
|
|
{
|
|
displaySummary(res);
|
|
}
|
|
});
|
|
}
|
|
|
|
function getSummary()
|
|
{
|
|
useCart(id_cart);
|
|
}
|
|
|
|
function deleteVoucher(id_cart_rule)
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "deleteVoucher",
|
|
id_cart_rule: id_cart_rule,
|
|
id_cart: id_cart,
|
|
id_customer: id_customer
|
|
},
|
|
success : function(res)
|
|
{
|
|
displaySummary(res);
|
|
}
|
|
});
|
|
}
|
|
|
|
function deleteProduct(id_product, id_product_attribute, id_customization)
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "deleteProduct",
|
|
id_product: id_product,
|
|
id_product_attribute: id_product_attribute,
|
|
id_customization: id_customization,
|
|
id_cart: id_cart,
|
|
id_customer: id_customer
|
|
},
|
|
success : function(res)
|
|
{
|
|
displaySummary(res);
|
|
}
|
|
});
|
|
}
|
|
|
|
let customerSearchAjax = '';
|
|
function searchCustomers()
|
|
{
|
|
abortRunningAjax(customerSearchAjax);
|
|
customerSearchAjax = $.ajax({
|
|
type:"POST",
|
|
url : "{$link->getAdminLink('AdminCustomers')}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
tab: "AdminCustomers",
|
|
action: "searchCustomers",
|
|
customer_search: $('#customer').val(),
|
|
skip_deleted: "1",
|
|
},
|
|
success : function(res)
|
|
{
|
|
if(res.found)
|
|
{
|
|
var html = '';
|
|
$.each(res.customers, function() {
|
|
html += '<div class="customerCard col-lg-4">';
|
|
html += '<div class="panel">';
|
|
html += '<div class="panel-heading">'+this.firstname+' '+this.lastname;
|
|
html += '<span class="pull-right">#'+this.id_customer+'</span></div>';
|
|
html += '<span>'+this.email+'</span><br/>';
|
|
html += '<span class="text-muted">'+((this.birthday != '0000-00-00') ? this.birthday : '')+'</span><br/>';
|
|
html += '<div class="panel-footer">';
|
|
html += '<a href="{$link->getAdminLink('AdminCustomers')}&id_customer='+this.id_customer+'&viewcustomer&liteDisplaying=1" class="btn btn-default fancybox"><i class="icon-search"></i> {l s='Details'}</a>';
|
|
html += '<button type="button" data-id_cart="'+id_cart+'" data-customer="'+this.id_customer+'" class="setup-customer btn btn-default pull-right"><i class="icon-arrow-right"></i> {l s='Choose'}</button>';
|
|
html += '</div>';
|
|
html += '</div>';
|
|
html += '</div>';
|
|
});
|
|
}
|
|
else
|
|
html = '<div class="alert alert-warning"><i class="icon-warning-sign"></i> {l s='No customers found'}</div>';
|
|
$('#customers').html(html);
|
|
resetBind();
|
|
}
|
|
});
|
|
}
|
|
|
|
function abortRunningAjax(ajaxVar) {
|
|
if (ajaxVar) {
|
|
ajaxVar.abort();
|
|
}
|
|
}
|
|
|
|
function setupCustomer(idCustomer)
|
|
{
|
|
//$('#carts').show();// by webkul
|
|
$('#products_part').show();
|
|
$('#vouchers_part').show();
|
|
//$('#address_part').show();// by webkul
|
|
//$('#carriers_part').show();// by webkul
|
|
$('#summary_part').show();
|
|
var address_link = $('#new_address').attr('href');
|
|
id_customer = idCustomer;
|
|
id_cart = 0;
|
|
{if isset($cart->id) && $cart->id}
|
|
id_cart = "{$cart->id}";
|
|
{/if}
|
|
if (address_link) {
|
|
$('#new_address').attr('href', address_link.replace(/id_customer=[0-9]+/, 'id_customer='+id_customer));
|
|
}
|
|
$.ajax({
|
|
type:"POST",
|
|
url : "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: false,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "searchCarts",
|
|
id_customer: id_customer,
|
|
id_cart: id_cart
|
|
},
|
|
success : function(res)
|
|
{
|
|
if(res.found)
|
|
{
|
|
var html_carts = '';
|
|
var html_orders = '';
|
|
$.each(res.carts, function() {
|
|
html_carts += '<tr>';
|
|
html_carts += '<td>'+this.id_cart+'</td>';
|
|
html_carts += '<td>'+this.date_add+'</td>';
|
|
html_carts += '<td>'+this.total_price+'</td>';
|
|
html_carts += '<td class="text-right">';
|
|
html_carts += '<a title="{l s='View this cart'}" class="fancybox btn btn-default" href="index.php?tab=AdminCarts&id_cart='+this.id_cart+'&viewcart&token={getAdminToken tab='AdminCarts'}&liteDisplaying=1#"><i class="icon-search"></i> {l s="Details"}</a>';
|
|
html_carts += ' <a href="#" title="{l s='Use this cart'}" class="use_cart btn btn-default" rel="'+this.id_cart+'"><i class="icon-arrow-right"></i> {l s="Use"}</a>';
|
|
html_carts += '</td>';
|
|
html_carts += '</tr>';
|
|
});
|
|
|
|
$.each(res.orders, function() {
|
|
html_orders += '<tr>';
|
|
html_orders += '<td>'+this.id_order+'</td><td>'+this.date_add+'</td><td>'+(this.nb_products ? this.nb_products : '0')+'</td><td>'+this.total_paid_real+'</span></td><td>'+this.payment+'</td><td>'+this.order_state+'</td>';
|
|
html_orders += '<td class="text-right">';
|
|
html_orders += '<a href="{$link->getAdminLink('AdminOrders')}&id_order='+this.id_order+'&vieworder&liteDisplaying=1#" title="{l s='View this order'}" class="fancybox btn btn-default"><i class="icon-search"></i> {l s="Details"}</a>';
|
|
html_orders += ' <a href="#" "title="{l s='Duplicate this order'}" class="duplicate_order btn btn-default" rel="'+this.id_order+'"><i class="icon-arrow-right"></i> {l s="Use"}</a>';
|
|
html_orders += '</td>';
|
|
html_orders += '</tr>';
|
|
});
|
|
$('#nonOrderedCarts table tbody').html(html_carts);
|
|
$('#lastOrders table tbody').html(html_orders);
|
|
}
|
|
if (res.id_cart)
|
|
{
|
|
id_cart = res.id_cart;
|
|
//$('#id_cart').val(id_cart);
|
|
}
|
|
displaySummary(res);
|
|
resetBind();
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateDeliveryOptionList(delivery_option_list)
|
|
{
|
|
var html = '';
|
|
if (delivery_option_list.length > 0)
|
|
{
|
|
$.each(delivery_option_list, function() {
|
|
html += '<option value="'+this.key+'" '+(($('#delivery_option').val() == this.key) ? 'selected="selected"' : '')+'>'+this.name+'</option>';
|
|
});
|
|
$('#carrier_form').show();
|
|
$('#delivery_option').html(html);
|
|
$('#carriers_err').hide();
|
|
}
|
|
else
|
|
{
|
|
$('#carrier_form').hide();
|
|
$('#carriers_err').show().html('{l s='No carrier can be applied to this order'}');
|
|
}
|
|
}
|
|
|
|
function searchProducts()
|
|
{
|
|
$('#products_part').show();
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminOrders')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{$token|escape:'html':'UTF-8'}",
|
|
tab: "AdminOrders",
|
|
action: "searchProducts",
|
|
id_cart: id_cart,
|
|
id_customer: id_customer,
|
|
id_currency: id_currency,
|
|
product_search: $('#product').val()},
|
|
success : function(res)
|
|
{
|
|
var products_found = '';
|
|
var attributes_html = '';
|
|
var customization_html = '';
|
|
stock = {};
|
|
|
|
if(res.found)
|
|
{
|
|
if (!customization_errors)
|
|
$('#products_err').addClass('hide');
|
|
else
|
|
customization_errors = false;
|
|
$('#products_found').show();
|
|
products_found += '<label class="control-label col-lg-3">{l s='Product'}</label><div class="col-lg-6"><select id="id_product" onchange="display_product_attributes();display_product_customizations();"></div>';
|
|
attributes_html += '<label class="control-label col-lg-3">{l s='Combination'}</label><div class="col-lg-6">';
|
|
$.each(res.products, function() {
|
|
products_found += '<option '+(this.combinations.length > 0 ? 'rel="'+this.qty_in_stock+'"' : '')+' value="'+this.id_product+'">'+this.name+(this.combinations.length == 0 ? ' - '+this.formatted_price : '')+'</option>';
|
|
attributes_html += '<select class="id_product_attribute" id="ipa_'+this.id_product+'" style="display:none;">';
|
|
var id_product = this.id_product;
|
|
stock[id_product] = new Array();
|
|
if (this.customizable == '1' || this.customizable == '2')
|
|
{
|
|
customization_html += '<div class="bootstrap"><div class="panel"><div class="panel-heading">{l s='Customization'}</div><form id="customization_'+id_product+'" class="id_customization" method="post" enctype="multipart/form-data" action="'+admin_cart_link+'" style="display:none;">';
|
|
customization_html += '<input type="hidden" name="id_product" value="'+id_product+'" />';
|
|
customization_html += '<input type="hidden" name="id_cart" value="'+id_cart+'" />';
|
|
customization_html += '<input type="hidden" name="action" value="updateCustomizationFields" />';
|
|
customization_html += '<input type="hidden" name="id_customer" value="'+id_customer+'" />';
|
|
customization_html += '<input type="hidden" name="ajax" value="1" />';
|
|
$.each(this.customization_fields, function() {
|
|
class_customization_field = "";
|
|
if (this.required == 1){ class_customization_field = 'required' };
|
|
customization_html += '<div class="form-group"><label class="control-label col-lg-3 ' + class_customization_field + '" for="customization_'+id_product+'_'+this.id_customization_field+'">';
|
|
customization_html += this.name+'</label><div class="col-lg-9">';
|
|
if (this.type == 0)
|
|
customization_html += '<input class="form-control customization_field" type="file" name="customization_'+id_product+'_'+this.id_customization_field+'" id="customization_'+id_product+'_'+this.id_customization_field+'">';
|
|
else if (this.type == 1)
|
|
customization_html += '<input class="form-control customization_field" type="text" name="customization_'+id_product+'_'+this.id_customization_field+'" id="customization_'+id_product+'_'+this.id_customization_field+'">';
|
|
customization_html += '</div></div>';
|
|
});
|
|
customization_html += '</form></div></div>';
|
|
}
|
|
|
|
$.each(this.combinations, function() {
|
|
attributes_html += '<option rel="'+this.qty_in_stock+'" '+(this.default_on == 1 ? 'selected="selected"' : '')+' value="'+this.id_product_attribute+'">'+this.attributes+' - '+this.formatted_price+'</option>';
|
|
stock[id_product][this.id_product_attribute] = this.qty_in_stock;
|
|
});
|
|
|
|
stock[this.id_product][0] = this.stock[0];
|
|
attributes_html += '</select>';
|
|
});
|
|
products_found += '</select></div>';
|
|
$('#products_found #product_list').html(products_found);
|
|
$('#products_found #attributes_list').html(attributes_html);
|
|
$('link[rel="stylesheet"]').each(function (i, element) {
|
|
sheet = $(element).clone();
|
|
$('#products_found #customization_list').contents().find('head').append(sheet);
|
|
});
|
|
$('#products_found #customization_list').contents().find('body').html(customization_html);
|
|
display_product_attributes();
|
|
display_product_customizations();
|
|
$('#id_product').change();
|
|
}
|
|
else
|
|
{
|
|
$('#products_found').hide();
|
|
$('#products_err').html('{l s='No products found'}');
|
|
$('#products_err').removeClass('hide');
|
|
}
|
|
resetBind();
|
|
}
|
|
});
|
|
}
|
|
|
|
function display_product_customizations()
|
|
{
|
|
if ($('#products_found #customization_list').contents().find('#customization_'+$('#id_product option:selected').val()).children().length === 0)
|
|
$('#customization_list').hide();
|
|
else
|
|
{
|
|
$('#customization_list').show();
|
|
$('#products_found #customization_list').contents().find('.id_customization').hide();
|
|
$('#products_found #customization_list').contents().find('#customization_'+$('#id_product option:selected').val()).show();
|
|
$('#products_found #customization_list').css('height',$('#products_found #customization_list').contents().find('#customization_'+$('#id_product option:selected').val()).height()+95+'px');
|
|
}
|
|
}
|
|
|
|
function display_product_attributes()
|
|
{
|
|
if ($('#ipa_'+$('#id_product option:selected').val()+' option').length === 0)
|
|
$('#attributes_list').hide();
|
|
else
|
|
{
|
|
$('#attributes_list').show();
|
|
$('.id_product_attribute').hide();
|
|
$('#ipa_'+$('#id_product option:selected').val()).show();
|
|
}
|
|
}
|
|
|
|
function updateCartProducts(products, gifts, id_address_delivery)
|
|
{
|
|
var cart_content = '';
|
|
$.each(products, function() {
|
|
var id_product = Number(this.id_product);
|
|
var id_product_attribute = Number(this.id_product_attribute);
|
|
cart_quantity[Number(this.id_product)+'_'+Number(this.id_product_attribute)+'_'+Number(this.id_customization)] = this.cart_quantity;
|
|
cart_content += '<tr><td><img src="'+this.image_link+'" title="'+this.name+'" /></td><td>'+this.name+'<br />'+this.attributes_small+'</td><td>'+this.reference+'</td><td><input type="text" rel="'+this.id_product+'_'+this.id_product_attribute+'" class="product_unit_price" value="' + this.numeric_price + '" /></td><td>';
|
|
cart_content += (!this.id_customization ? '<div class="input-group fixed-width-md"><div class="input-group-btn"><a href="#" class="btn btn-default increaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><i class="icon-caret-up"></i></a><a href="#" class="btn btn-default decreaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'"><i class="icon-caret-down"></i></a></div>' : '');
|
|
cart_content += (!this.id_customization ? '<input type="text" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" class="cart_quantity" value="'+this.cart_quantity+'" />' : '');
|
|
cart_content += (!this.id_customization ? '<div class="input-group-btn"><a href="#" class="delete_product btn btn-default" rel="delete_'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><i class="icon-remove text-danger"></i></a></div></div>' : '');
|
|
cart_content += '</td><td>' + formatCurrency(this.numeric_total, currency_format, currency_sign, currency_blank) + '</td></tr>';
|
|
|
|
if (this.id_customization && this.id_customization != 0)
|
|
{
|
|
$.each(this.customized_datas[this.id_product][this.id_product_attribute][id_address_delivery], function() {
|
|
var customized_desc = '';
|
|
if (typeof this.datas[1] !== 'undefined' && this.datas[1].length)
|
|
{
|
|
$.each(this.datas[1],function() {
|
|
customized_desc += this.name + ': ' + this.value + '<br />';
|
|
id_customization = this.id_customization;
|
|
});
|
|
}
|
|
if (typeof this.datas[0] !== 'undefined' && this.datas[0].length)
|
|
{
|
|
$.each(this.datas[0],function() {
|
|
customized_desc += this.name + ': <img src="' + pic_dir + this.value + '_small" /><br />';
|
|
id_customization = this.id_customization;
|
|
});
|
|
}
|
|
cart_content += '<tr><td></td><td>'+customized_desc+'</td><td></td><td></td><td>';
|
|
cart_content += '<div class="input-group fixed-width-md"><div class="input-group-btn"><a href="#" class="btn btn-default increaseqty_product" rel="'+id_product+'_'+id_product_attribute+'_'+id_customization+'" ><i class="icon-caret-up"></i></a><a href="#" class="btn btn-default decreaseqty_product" rel="'+id_product+'_'+id_product_attribute+'_'+id_customization+'"><i class="icon-caret-down"></i></a></div>';
|
|
cart_content += '<input type="text" rel="'+id_product+'_'+id_product_attribute+'_'+id_customization +'" class="cart_quantity" value="'+this.quantity+'" />';
|
|
cart_content += '<div class="input-group-btn"><a href="#" class="delete_product btn btn-default" rel="delete_'+id_product+'_'+id_product_attribute+'_'+id_customization+'" ><i class="icon-remove"></i></a></div></div>';
|
|
cart_content += '</td><td></td></tr>';
|
|
});
|
|
}
|
|
});
|
|
|
|
$.each(gifts, function() {
|
|
cart_content += '<tr><td><img src="'+this.image_link+'" title="'+this.name+'" /></td><td>'+this.name+'<br />'+this.attributes_small+'</td><td>'+this.reference+'</td>';
|
|
cart_content += '<td>{l s='Gift'}</td><td>'+this.cart_quantity+'</td><td>{l s='Gift'}</td></tr>';
|
|
});
|
|
$('#customer_cart tbody').html(cart_content);
|
|
}
|
|
|
|
function updateCartVouchers(vouchers)
|
|
{
|
|
var vouchers_html = '';
|
|
if (typeof(vouchers) == 'object')
|
|
$.each(vouchers, function(){
|
|
if (parseFloat(this.value_real) === 0 && parseInt(this.free_shipping) === 1)
|
|
var value = '{l s='Free shipping'}';
|
|
else
|
|
var value = this.value_real;
|
|
|
|
vouchers_html += '<tr><td>'+this.name+'</td><td>'+this.description+'</td><td>'+value+'</td><td class="text-right"><a href="#" class="btn btn-default delete_discount" rel="'+this.id_discount+'"><i class="icon-remove text-danger"></i> {l s='Delete'}</a></td></tr>';
|
|
});
|
|
$('#voucher_list tbody').html($.trim(vouchers_html));
|
|
if ($('#voucher_list tbody').html().length == 0)
|
|
$('#voucher_list').hide();
|
|
else
|
|
$('#voucher_list').show();
|
|
}
|
|
|
|
function updateCartPaymentList(payment_list)
|
|
{
|
|
$('#payment_list').html(payment_list);
|
|
}
|
|
|
|
function fixPriceFormat(price)
|
|
{
|
|
if(price.indexOf(',') > 0 && price.indexOf('.') > 0) // if contains , and .
|
|
if(price.indexOf(',') < price.indexOf('.')) // if , is before .
|
|
price = price.replace(',',''); // remove ,
|
|
price = price.replace(' ',''); // remove any spaces
|
|
price = price.replace(',','.'); // remove , if price did not cotain both , and .
|
|
return price;
|
|
}
|
|
|
|
function displaySummary(jsonSummary) {
|
|
currency_format = jsonSummary.currency.format;
|
|
currency_sign = jsonSummary.currency.sign;
|
|
currency_blank = jsonSummary.currency.blank;
|
|
priceDisplayPrecision = parseInt(jsonSummary.currency.decimals) ? {$smarty.const._PS_PRICE_DISPLAY_PRECISION_|intval} : 0;
|
|
|
|
updateCartProducts(jsonSummary.summary.products, jsonSummary.summary.gift_products, jsonSummary.cart.id_address_delivery);
|
|
updateCartVouchers(jsonSummary.summary.discounts);
|
|
updateAddressesList(jsonSummary.addresses, jsonSummary.cart.id_address_delivery, jsonSummary.cart.id_address_invoice);
|
|
|
|
if (!jsonSummary.summary.products.length || !jsonSummary.addresses.length || !jsonSummary.delivery_option_list) {
|
|
$('#carriers_part').hide();
|
|
} else {
|
|
$('#carriers_part').hide();
|
|
}
|
|
|
|
updateDeliveryOptionList(jsonSummary.delivery_option_list);
|
|
|
|
if (jsonSummary.cart.gift == 1) {
|
|
$('#order_gift').attr('checked', true);
|
|
} else {
|
|
$('#carrier_gift').removeAttr('checked');
|
|
}
|
|
if (jsonSummary.cart.recyclable == 1) {
|
|
$('#carrier_recycled_package').attr('checked', true);
|
|
} else {
|
|
$('#carrier_recycled_package').removeAttr('checked');
|
|
}
|
|
if (jsonSummary.free_shipping == 1) {
|
|
$('#free_shipping').attr('checked', true);
|
|
} else {
|
|
$('#free_shipping_off').attr('checked', true);
|
|
}
|
|
|
|
$('#gift_message').html(jsonSummary.cart.gift_message);
|
|
|
|
if (!changed_shipping_price) {
|
|
$('#shipping_price').html('<b>' + formatCurrency(parseFloat(jsonSummary.summary.total_shipping), currency_format, currency_sign, currency_blank) + '</b>');
|
|
}
|
|
|
|
shipping_price_selected_carrier = jsonSummary.summary.total_shipping;
|
|
|
|
$('#total_vouchers').html(formatCurrency(parseFloat(jsonSummary.summary.total_discounts), currency_format, currency_sign, currency_blank));
|
|
$('#total_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_tax_without_discount) + parseFloat(jsonSummary.summary.total_tourism_tax || 0), currency_format, currency_sign, currency_blank));
|
|
$('#total_taxes_vat').html(formatCurrency(parseFloat(jsonSummary.summary.total_tax_without_discount || 0), currency_format, currency_sign, currency_blank));
|
|
var totalTaxesTourismAmt2 = parseFloat(jsonSummary.summary.total_tourism_tax || 0);
|
|
$('#total_taxes_tourism').closest('div').toggle(totalTaxesTourismAmt2 > 0);
|
|
$('#total_taxes_tourism').html(formatCurrency(totalTaxesTourismAmt2, currency_format, currency_sign, currency_blank));
|
|
$('#total_without_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.cart_total_without_discount_te), currency_format, currency_sign, currency_blank));
|
|
$('#total_with_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_price), currency_format, currency_sign, currency_blank));
|
|
$('#total_rooms').html(formatCurrency(parseFloat(jsonSummary.summary.total_rooms_with_services_without_discount_te), currency_format, currency_sign, currency_blank));
|
|
$('#total_convenience_fees').html(formatCurrency(parseFloat(jsonSummary.summary.convenience_fee), currency_format, currency_sign, currency_blank));
|
|
// $('#total_service_products').html(formatCurrency(parseFloat(jsonSummary.summary.total_service_products), currency_format, currency_sign, currency_blank));
|
|
|
|
id_currency = jsonSummary.cart.id_currency;
|
|
$('#id_currency option').removeAttr('selected');
|
|
$('#id_currency option[value="'+id_currency+'"]').attr('selected', true);
|
|
id_lang = jsonSummary.cart.id_lang;
|
|
$('#id_lang option').removeAttr('selected');
|
|
$('#id_lang option[value="'+id_lang+'"]').attr('selected', true);
|
|
$('#send_email_to_customer').attr('rel', jsonSummary.link_order);
|
|
if (!jsonSummary.is_backdate_order) {
|
|
$('#go_order_process').show();
|
|
$('#go_order_process').attr('href', jsonSummary.link_order);
|
|
} else {
|
|
$('#go_order_process').hide();
|
|
}
|
|
$('#order_message').val(jsonSummary.order_message);
|
|
$('#payment_amount').siblings('.input-group-addon').html(currency_sign);
|
|
current_order_total = parseFloat(jsonSummary.summary.total_price);
|
|
$('#payment_amount').val(jsonSummary.summary.total_price);
|
|
$('#full_payment_amount_value').html(formatCurrency(parseFloat(jsonSummary.summary.total_price), currency_format, currency_sign, currency_blank));
|
|
|
|
if (jsonSummary.summary.is_advance_payment_active) {
|
|
$('#advance_payment_amount').html(formatCurrency(parseFloat(jsonSummary.summary.advance_payment_amount_with_tax), currency_format, currency_sign, currency_blank));
|
|
$('#advance_payment_amount_block').show();
|
|
} else {
|
|
$('#advance_payment_amount_block').hide();
|
|
}
|
|
|
|
// toggle payment fields
|
|
if (jsonSummary.summary.total_price == 0) { // if free order
|
|
$('#send_email_to_customer, [name="is_full_payment"], #payment_amount, #payment_type, #payment_module_name, #payment_transaction_id').closest('.form-group').hide(200);
|
|
} else {
|
|
$('#send_email_to_customer, [name="is_full_payment"], #payment_type, #payment_module_name, #payment_transaction_id').closest('.form-group').show(200);
|
|
$('#payment_amount').closest('.form-group').toggle(!parseInt($('input[name="is_full_payment"]:checked').val()));
|
|
}
|
|
|
|
resetBind();
|
|
}
|
|
|
|
function updateQty(id_product, id_product_attribute, id_customization, qty)
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "updateQty",
|
|
id_product: id_product,
|
|
id_product_attribute: id_product_attribute,
|
|
id_customization: id_customization,
|
|
qty: qty,
|
|
id_customer: id_customer,
|
|
id_cart: id_cart,
|
|
},
|
|
success : function(res)
|
|
{
|
|
displaySummary(res);
|
|
var errors = '';
|
|
if (res.errors.length)
|
|
{
|
|
$.each(res.errors, function() {
|
|
errors += this + '<br />';
|
|
});
|
|
$('#products_err').removeClass('hide');
|
|
}
|
|
else
|
|
$('#products_err').addClass('hide');
|
|
$('#products_err').html(errors);
|
|
}
|
|
});
|
|
}
|
|
|
|
function resetShippingPrice()
|
|
{
|
|
$('#shipping_price').val(shipping_price_selected_carrier);
|
|
changed_shipping_price = false;
|
|
}
|
|
|
|
function addProduct()
|
|
{
|
|
var id_product = $('#id_product option:selected').val();
|
|
$('#products_found #customization_list').contents().find('#customization_'+id_product).submit();
|
|
|
|
addProductProcess();
|
|
}
|
|
|
|
//Called from form_customization_feedback.tpl
|
|
function customizationProductListener()
|
|
{
|
|
//refresh form customization
|
|
searchProducts();
|
|
|
|
}
|
|
|
|
function addProductProcess()
|
|
{
|
|
if (customization_errors) {
|
|
$('#products_err').removeClass('hide');
|
|
} else {
|
|
$('#products_err').addClass('hide');
|
|
updateQty($('#id_product').val(), $('#ipa_'+$('#id_product').val()+' option:selected').val(), 0, $('#qty').val());
|
|
}
|
|
}
|
|
|
|
function updateCurrency()
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "updateCurrency",
|
|
id_currency: $('#id_currency option:selected').val(),
|
|
id_customer: id_customer,
|
|
id_cart: id_cart
|
|
},
|
|
success : function(res)
|
|
{
|
|
$("#customer_cart_details").empty();
|
|
$("#customer_cart_details").append(res.cart_detail_html);
|
|
initUITooltip();
|
|
|
|
displaySummary(res);
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateLang()
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "admincarts",
|
|
action: "updateLang",
|
|
id_lang: $('#id_lang option:selected').val(),
|
|
id_customer: id_customer,
|
|
id_cart: id_cart
|
|
},
|
|
success : function(res)
|
|
{
|
|
displaySummary(res);
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateDeliveryOption()
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "updateDeliveryOption",
|
|
delivery_option: $('#delivery_option option:selected').val(),
|
|
gift: $('#order_gift').is(':checked')?1:0,
|
|
gift_message: $('#gift_message').val(),
|
|
recyclable: $('#carrier_recycled_package').is(':checked')?1:0,
|
|
id_customer: id_customer,
|
|
id_cart: id_cart
|
|
},
|
|
success : function(res)
|
|
{
|
|
displaySummary(res);
|
|
}
|
|
});
|
|
}
|
|
|
|
function sendMailToCustomer()
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminOrders')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminOrders'}",
|
|
tab: "AdminOrders",
|
|
action: "sendMailValidateOrder",
|
|
id_customer: id_customer,
|
|
id_cart: id_cart
|
|
},
|
|
success : function(res)
|
|
{
|
|
if (res.errors)
|
|
$('#send_email_feedback').removeClass('hide').removeClass('alert-success').addClass('alert-danger');
|
|
else
|
|
$('#send_email_feedback').removeClass('hide').removeClass('alert-danger').addClass('alert-success');
|
|
$('#send_email_feedback').html(res.result);
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateAddressesList(addresses, id_address_delivery, id_address_invoice)
|
|
{
|
|
var addresses_delivery_options = '';
|
|
var addresses_invoice_options = '';
|
|
var address_invoice_detail = '';
|
|
var address_delivery_detail = '';
|
|
var delivery_address_edit_link = '';
|
|
var invoice_address_edit_link = '';
|
|
|
|
$.each(addresses, function() {
|
|
if (this.id_address == id_address_invoice)
|
|
{
|
|
address_invoice_detail = this.formated_address;
|
|
invoice_address_edit_link = "{$link->getAdminLink('AdminAddresses')}&id_address="+this.id_address+"&updateaddress&realedit=1&liteDisplaying=1&submitFormAjax=1#";
|
|
}
|
|
|
|
if(this.id_address == id_address_delivery)
|
|
{
|
|
address_delivery_detail = this.formated_address;
|
|
delivery_address_edit_link = "{$link->getAdminLink('AdminAddresses')}&id_address="+this.id_address+"&updateaddress&realedit=1&liteDisplaying=1&submitFormAjax=1#";
|
|
}
|
|
|
|
addresses_delivery_options += '<option value="'+this.id_address+'" '+(this.id_address == id_address_delivery ? 'selected="selected"' : '')+'>'+this.alias+'</option>';
|
|
addresses_invoice_options += '<option value="'+this.id_address+'" '+(this.id_address == id_address_invoice ? 'selected="selected"' : '')+'>'+this.alias+'</option>';
|
|
});
|
|
if (addresses.length == 0)
|
|
{
|
|
$('#address_delivery, #address_invoice').hide();
|
|
if (can_edit_booking_carts && can_add_addresses) {
|
|
$('#address_part').show();
|
|
$("#new_address").show();
|
|
} else {
|
|
$('#address_part').hide();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$('#addresses_err').hide();
|
|
$("#new_address").hide();
|
|
$('#address_delivery, #address_invoice').show();
|
|
$('#address_part').show();
|
|
$('#address_part .panel-heading').show();
|
|
}
|
|
|
|
$('#id_address_delivery').html(addresses_delivery_options).hide();
|
|
$('#id_address_invoice').html(addresses_invoice_options).hide();
|
|
$('#address_delivery_detail').html(address_delivery_detail);
|
|
$('#address_invoice_detail').html(address_invoice_detail);
|
|
$('#edit_delivery_address').attr('href', delivery_address_edit_link);
|
|
$('#edit_invoice_address').attr('href', invoice_address_edit_link);
|
|
}
|
|
|
|
function updateAddresses()
|
|
{
|
|
$.ajax({
|
|
type:"POST",
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
async: true,
|
|
dataType: "json",
|
|
data : {
|
|
ajax: "1",
|
|
token: "{getAdminToken tab='AdminCarts'}",
|
|
tab: "AdminCarts",
|
|
action: "updateAddresses",
|
|
id_customer: id_customer,
|
|
id_cart: id_cart,
|
|
id_address_delivery: $('#id_address_delivery option:selected').val(),
|
|
id_address_invoice: $('#id_address_invoice option:selected').val()
|
|
},
|
|
success : function(res)
|
|
{
|
|
updateDeliveryOption();
|
|
}
|
|
});
|
|
}
|
|
|
|
{* JS for handling extra services changes *}
|
|
$(document).ready(function() {
|
|
// modalbox for extra services
|
|
$('body').on('click', '.open_rooms_extra_services', function() {
|
|
var idProduct = $(this).attr('id_product');
|
|
var idCart = $(this).attr('id_cart');
|
|
var idRoom = $(this).attr('id_room');
|
|
var dateFrom = $(this).attr('date_from');
|
|
var dateTo = $(this).attr('date_to');
|
|
var idHotelCartBooking = $(this).attr('id_hotel_cart_booking');
|
|
|
|
$(".loading_overlay").show();
|
|
$.ajax({
|
|
type: 'POST',
|
|
dataType: 'JSON',
|
|
headers: {
|
|
"cache-control": "no-cache"
|
|
},
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
cache: false,
|
|
data: {
|
|
date_from: dateFrom,
|
|
date_to: dateTo,
|
|
id_room: idRoom,
|
|
id_cart: idCart,
|
|
id_product: idProduct,
|
|
id_customer: id_customer,
|
|
id_hotel_cart_booking: idHotelCartBooking,
|
|
action: 'getRoomTypeCartServices',
|
|
ajax: true
|
|
},
|
|
success: function(response) {
|
|
if (response.hasError) {
|
|
var errorHtml = error_found_txt + ':<br>';
|
|
errorHtml += '<ol>';
|
|
$.each(response.errors, function(key, errorMsg) {
|
|
errorHtml += '<li>' + errorMsg + '</li>';
|
|
});
|
|
errorHtml += '</ol>';
|
|
showErrorMessage(errorHtml);
|
|
} else {
|
|
$('#customer_cart_details').after(response.html_exta_services);
|
|
$('#rooms_type_extra_services').modal('show');
|
|
}
|
|
},
|
|
complete: function() {
|
|
$(".loading_overlay").hide();
|
|
initUITooltip();
|
|
}
|
|
});
|
|
});
|
|
$(document).on('hidden.bs.modal', '#rooms_type_extra_services', function (e) {
|
|
// reload to make changes reflect everywhere
|
|
location.reload();
|
|
});
|
|
|
|
$(document).on('keyup', '#payment_module_name', function() {
|
|
let paymentMethod = $('#payment_module_name').val().trim().toLowerCase();
|
|
|
|
let selectedMethod;
|
|
$('#payment_module_name_list option').each(function (index, element) {
|
|
if ($(element).attr('data-name').toLowerCase() == paymentMethod
|
|
|| $(element).val().toLowerCase() == paymentMethod
|
|
) {
|
|
selectedMethod = element;
|
|
}
|
|
});
|
|
|
|
if ($(selectedMethod).length) {
|
|
// set Payment source
|
|
let paymentType = $(selectedMethod).attr('data-payment-type');
|
|
if ($('select#payment_type option[value="' + paymentType + '"]').length) {
|
|
$('#payment_type').val(paymentType);
|
|
}
|
|
}
|
|
});
|
|
|
|
$(document).on('change', 'input[name="is_full_payment"]', function() {
|
|
if (parseInt($('input[name="is_full_payment"]:checked').val())) {
|
|
$('#payment_amount').val(current_order_total).attr('disabled', true);
|
|
$('#payment_amount').closest('.form-group').hide(200);
|
|
|
|
$('#payment_type, #payment_module_name, #payment_transaction_id').closest('.form-group').show(200);
|
|
} else {
|
|
$('#payment_amount').val(current_order_total).attr('disabled', false);
|
|
$('#payment_amount').closest('.form-group').show(200);
|
|
|
|
managePaymentOptions();
|
|
}
|
|
});
|
|
|
|
$(document).on('keyup', '#payment_amount', function() {
|
|
managePaymentOptions();
|
|
});
|
|
|
|
function managePaymentOptions() {
|
|
let paymentAmount = parseFloat($('#payment_amount').val().trim());
|
|
|
|
if (paymentAmount != 0) {
|
|
$('#payment_type, #payment_module_name, #payment_transaction_id').closest('.form-group').show(200);
|
|
} else {
|
|
$('#payment_type, #payment_module_name, #payment_transaction_id').closest('.form-group').hide(200);
|
|
}
|
|
}
|
|
|
|
$(document).on('change', '.room_type_service_product_qty', function(e) {
|
|
let quantityInputField = this;
|
|
let maximumQuantity = parseInt($(quantityInputField).attr('data-max-quantity'));
|
|
let currentQuantity = parseInt($(quantityInputField).val());
|
|
if (currentQuantity > maximumQuantity) {
|
|
$(quantityInputField).siblings('p').show();
|
|
} else {
|
|
$(quantityInputField).siblings('p').hide();
|
|
}
|
|
});
|
|
|
|
// click on back button on created extra service edit
|
|
$(document).on('click', '#back_to_service_btn', function() {
|
|
$('#room_type_services_desc').show();
|
|
$('#add_new_room_services_block').hide();
|
|
$('#back_to_service_btn').hide();
|
|
$('#btn_new_room_service').show();
|
|
});
|
|
|
|
// Add new custom service: Show hide new custom service form
|
|
$(document).on('click', '#btn_new_room_service', function() {
|
|
$('#add_new_room_services_block').show();
|
|
$('#back_to_service_btn').show();
|
|
$('#room_type_services_desc').hide();
|
|
$('#btn_new_room_service').hide();
|
|
});
|
|
|
|
// Add new custom service: change auto added option
|
|
$(document).on('change', '#add_new_room_services_form input[name="new_service_auto_added"]', function() {
|
|
var room_type_tax_rule_group_exist = $("#room_type_tax_rule_group_exist").val();
|
|
if ($(this).val() == 1) {
|
|
$("#new_service_price_tax_rule_container").hide();
|
|
$("#new_service_price_addition_type_container").show();
|
|
$("#new_service_qty_container").hide();
|
|
} else {
|
|
$("#new_service_price_addition_type_container").hide();
|
|
$("#new_service_qty_container").show();
|
|
$("#new_service_price_tax_rule_container").show();
|
|
}
|
|
});
|
|
|
|
// Add new custom service to the room
|
|
$(document).on('submit', '#add_new_room_services_form', function(e) {
|
|
e.preventDefault();
|
|
var form_data = new FormData(this);
|
|
form_data.append('ajax', true);
|
|
form_data.append('action', 'addNewRoomServices');
|
|
|
|
$(".loading_overlay").show();
|
|
$.ajax({
|
|
type: 'POST',
|
|
headers: {
|
|
"cache-control": "no-cache"
|
|
},
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
dataType: 'JSON',
|
|
cache: false,
|
|
data: form_data,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function(jsonData) {
|
|
if (!jsonData.hasError) {
|
|
if (jsonData.service_panel) {
|
|
$('#room_type_service_product_desc').replaceWith(jsonData.service_panel);
|
|
}
|
|
showSuccessMessage(txtExtraServiceSucc);
|
|
} else {
|
|
var errorHtml = error_found_txt + ':<br>';
|
|
errorHtml += '<ol>';
|
|
$.each(jsonData.errors, function(key, errorMsg) {
|
|
errorHtml += '<li>' + errorMsg + '</li>';
|
|
});
|
|
errorHtml += '</ol>';
|
|
showErrorMessage(errorHtml);
|
|
}
|
|
},
|
|
complete: function() {
|
|
$(".loading_overlay").hide();
|
|
initUITooltip();
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '.change_room_type_service_product', function() {
|
|
if ($(this).prop('checked')) {
|
|
$("#selected_service_product_"+$(this).val()).val(1);
|
|
} else {
|
|
$("#selected_service_product_"+$(this).val()).val(0);
|
|
}
|
|
});
|
|
|
|
$(document).on('submit', '#update_selected_room_services_form', function(e) {
|
|
e.preventDefault();
|
|
var form_data = new FormData(this);
|
|
form_data.append('ajax', true);
|
|
form_data.append('action', 'updateSelectedRoomServices');
|
|
|
|
$(".loading_overlay").show();
|
|
$.ajax({
|
|
type: 'POST',
|
|
headers: {
|
|
"cache-control": "no-cache"
|
|
},
|
|
url: "{$link->getAdminLink('AdminCarts')|addslashes}",
|
|
dataType: 'JSON',
|
|
cache: false,
|
|
data: form_data,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function(jsonData) {
|
|
if (!jsonData.hasError) {
|
|
if (jsonData.service_panel) {
|
|
$('#room_type_service_product_desc').replaceWith(jsonData.service_panel);
|
|
}
|
|
showSuccessMessage(txtExtraServiceSucc);
|
|
} else {
|
|
if (jsonData.errors != 'undefined' && jsonData.errors.length) {
|
|
var errorHtml = error_found_txt + ':<br>';
|
|
errorHtml += '<ol>';
|
|
$.each(jsonData.errors, function(key, errorMsg) {
|
|
errorHtml += '<li>' + errorMsg + '</li>';
|
|
});
|
|
errorHtml += '</ol>';
|
|
showErrorMessage(errorHtml);
|
|
}
|
|
}
|
|
},
|
|
complete: function() {
|
|
$(".loading_overlay").hide();
|
|
initUITooltip();
|
|
}
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<div class="leadin">{block name="leadin"}{/block}</div>
|
|
{* If cart has errors the do not allow to proceed with this cart *}
|
|
<div class="panel form-horizontal" id="customer_part" {if isset($is_order_created) && $is_order_created}style="display:none;"{/if}>
|
|
<div class="panel-heading">
|
|
<i class="icon-user"></i>
|
|
{l s='Customer'}
|
|
</div>
|
|
<div id="search-customer-form-group" {if isset($cart->id_customer) && $cart->id_customer && isset($customer) && $customer }style="display:none;"{/if} class="form-group">
|
|
<label class="control-label col-lg-3">
|
|
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Search for an existing customer by typing the first letters of his/her name.'}">
|
|
{l s='Search for a customer'}
|
|
</span>
|
|
</label>
|
|
<div class="col-lg-9">
|
|
<div class="row">
|
|
<div class="col-lg-6">
|
|
<div class="input-group">
|
|
<input type="text" id="customer" value="" />
|
|
<span class="input-group-addon">
|
|
<i class="icon-search"></i>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
{if isset($can_edit_booking_carts) && $can_edit_booking_carts && isset($can_add_customers) && $can_add_customers}
|
|
<div class="col-lg-6">
|
|
<span class="form-control-static">{l s='Or'} </span>
|
|
<a class="fancybox_customer btn btn-default" href="{$link->getAdminLink('AdminCustomers')|escape:'html':'UTF-8'}&addcustomer&liteDisplaying=1&submitFormAjax=1#">
|
|
<i class="icon-plus-sign-alt"></i>
|
|
{l s='Add new customer'}
|
|
</a>
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div id="customers">
|
|
{if isset($cart->id_customer) && $cart->id_customer && isset($customer) && $customer }
|
|
<div class="customerCard col-lg-4 selected-customer">
|
|
<div class="panel">
|
|
<div class="panel-heading">
|
|
<i class="icon-ok text-success"></i>{$customer->firstname} {$customer->lastname} <span class="pull-right">#{$customer->id}</span>
|
|
</div>
|
|
<span>{$customer->email}</span><br>
|
|
<span class="text-muted"></span><br>
|
|
<div class="panel-footer">
|
|
<a href="{$link->getAdminLink('AdminCustomers')}&id_customer={$customer->id}&viewcustomer&liteDisplaying=1" class="btn btn-default fancybox">
|
|
<i class="icon-search"></i> Details </a>
|
|
<button type="button" data-id_cart="6" data-customer="2" class="btn btn-default pull-right change-customer">
|
|
<i class="icon-refresh"></i> Change
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
</div>
|
|
{*<div id="carts">
|
|
<button type="button" id="show_old_carts" class="btn btn-default pull-right" data-toggle="collapse" data-target="#old_carts_orders">
|
|
<i class="icon-caret-down"></i>
|
|
</button>
|
|
|
|
<ul id="old_carts_orders_navtab" class="nav nav-tabs">
|
|
<li class="active">
|
|
<a href="#nonOrderedCarts" data-toggle="tab">
|
|
<i class="icon-shopping-cart"></i>
|
|
{l s='Carts'}
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#lastOrders" data-toggle="tab">
|
|
<i class="icon-credit-card"></i>
|
|
{l s='Orders'}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<div id="old_carts_orders" class="tab-content panel collapse in">
|
|
<div id="nonOrderedCarts" class="tab-pane active">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th><span class="title_box">{l s='ID'}</span></th>
|
|
<th><span class="title_box">{l s='Date'}</span></th>
|
|
<th><span class="title_box">{l s='Total'}</span></th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div id="lastOrders" class="tab-pane">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th><span class="title_box">{l s='ID'}</span></th>
|
|
<th><span class="title_box">{l s='Date'}</span></th>
|
|
<th><span class="title_box">{l s='Products'}</span></th>
|
|
<th><span class="title_box">{l s='Total paid'}</span></th>
|
|
<th><span class="title_box">{l s='Payment'}</span></th>
|
|
<th><span class="title_box">{l s='Status'}</span></th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div> -->*}<!-- by webkul to hide unnessesary content -->
|
|
</div>
|
|
{include file='controllers/orders/_current_cart_details_data.tpl'}
|
|
|
|
<form class="form-horizontal" action="{$link->getAdminLink('AdminOrders')|escape:'html':'UTF-8'}&addorder=1&cart_id={$cart->id}" method="post" {if !isset($customer) && !$customer }style="display:none;"{/if} id="cart_detail_form">
|
|
<div class="panel" id="products_part" style="display:none;">
|
|
<div class="panel-heading">
|
|
<i class="icon-shopping-cart"></i>
|
|
{l s='Cart'}
|
|
</div>
|
|
<div class="form-group">
|
|
<input type="hidden" value="{$cart->id}" id="id_cart" name="id_cart" />
|
|
</div>
|
|
{*<div class="form-group">
|
|
<label class="control-label col-lg-3">
|
|
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Search for an existing product by typing the first letters of its name.'}">
|
|
{l s='Search for a product'}
|
|
</span>
|
|
</label>
|
|
<div class="col-lg-9">
|
|
<input type="hidden" value="{$cart->id}" id="id_cart" name="id_cart" />
|
|
<div class="input-group">
|
|
<input type="text" id="product" value="" />
|
|
<span class="input-group-addon">
|
|
<i class="icon-search"></i>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="products_found">
|
|
<hr/>
|
|
<div id="product_list" class="form-group"></div>
|
|
<div id="attributes_list" class="form-group"></div> -->
|
|
<!-- @TODO: please be kind refacto -->
|
|
<div class="form-group">
|
|
<div class="col-lg-9 col-lg-offset-3">
|
|
<iframe id="customization_list" seamless>
|
|
<html>
|
|
<head>
|
|
{if isset($css_files_orders)}
|
|
{foreach from=$css_files_orders key=css_uri item=media}
|
|
<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />
|
|
{/foreach}
|
|
{/if}
|
|
</head>
|
|
<body>
|
|
</body>
|
|
</html>
|
|
</iframe>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3" for="qty">{l s='Quantity'}</label>
|
|
<div class="col-lg-9">
|
|
<input type="text" name="qty" id="qty" class="form-control fixed-width-sm" value="1" />
|
|
<p class="help-block">{l s='In stock'} <span id="qty_in_stock"></span></p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class="col-lg-9 col-lg-offset-3">
|
|
<button type="button" class="btn btn-default" id="submitAddProduct" />
|
|
<i class="icon-ok text-success"></i>
|
|
{l s='Add to cart'}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="products_err" class="hide alert alert-danger"></div>
|
|
|
|
<hr/>
|
|
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<table class="table" id="customer_cart">
|
|
<thead>
|
|
<tr>
|
|
<th><span class="title_box">{l s='Product'}</span></th>
|
|
<th><span class="title_box">{l s='Description'}</span></th>
|
|
<th><span class="title_box">{l s='Reference'}</span></th>
|
|
<th><span class="title_box">{l s='Unit price'}</span></th>
|
|
<th><span class="title_box">{l s='Quantity'}</span></th>
|
|
<th><span class="title_box">{l s='Price'}</span></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class="col-lg-9 col-lg-offset-3">
|
|
<div class="alert alert-warning">{l s='The prices are without taxes.'}</div>
|
|
</div>
|
|
</div> *}<!-- by webkul to hide unnessesary content -->
|
|
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3" for="id_currency">
|
|
{l s='Currency'}
|
|
</label>
|
|
<script type="text/javascript">
|
|
{foreach from=$currencies item='currency'}
|
|
currencies['{$currency.id_currency}'] = '{$currency.sign}';
|
|
{/foreach}
|
|
</script>
|
|
<div class="col-lg-9">
|
|
<select id="id_currency" name="id_currency">
|
|
{foreach from=$currencies item='currency'}
|
|
<option rel="{$currency.iso_code}" value="{$currency.id_currency}">{$currency.name}</option>
|
|
{/foreach}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3" for="id_lang">
|
|
{l s='Language'}
|
|
</label>
|
|
<div class="col-lg-9">
|
|
<select id="id_lang" name="id_lang">
|
|
{foreach from=$langs item='lang'}
|
|
<option value="{$lang.id_lang}">{$lang.name}</option>
|
|
{/foreach}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel" id="vouchers_part" style="display:none;">
|
|
<div class="panel-heading">
|
|
<i class="icon-ticket"></i>
|
|
{l s='Vouchers'}
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3">
|
|
{l s='Search for a voucher'}
|
|
</label>
|
|
<div class="col-lg-9">
|
|
<div class="row">
|
|
<div class="col-lg-6">
|
|
<div class="input-group">
|
|
<input type="text" id="voucher" value="" />
|
|
<div class="input-group-addon">
|
|
<i class="icon-search"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{if isset($can_edit_booking_carts) && $can_edit_booking_carts && isset($can_add_vouchers) && $can_add_vouchers}
|
|
<div class="col-lg-6">
|
|
<span class="form-control-static">{l s='Or'} </span>
|
|
<a class="fancybox btn btn-default" href="{$link->getAdminLink('AdminCartRules')|escape:'html':'UTF-8'}&addcart_rule&liteDisplaying=1&submitFormAjax=1#">
|
|
<i class="icon-plus-sign-alt"></i>
|
|
{l s='Add new voucher'}
|
|
</a>
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<table class="table" id="voucher_list">
|
|
<thead>
|
|
<tr>
|
|
<th><span class="title_box">{l s='Name'}</span></th>
|
|
<th><span class="title_box">{l s='Description'}</span></th>
|
|
<th><span class="title_box">{l s='Value'}</span></th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div id="vouchers_err" class="alert alert-warning" style="display:none;"></div>
|
|
</div>
|
|
|
|
<div class="panel" id="address_part" style="">
|
|
<div class="panel-heading" id="address_panel_heading">
|
|
<i class="icon-envelope"></i>
|
|
{l s='Addresses'}
|
|
</div>
|
|
<div id="addresses_err" class="alert alert-warning" style="display:none;"></div>
|
|
|
|
<div class="row">
|
|
<div id="address_delivery" class="col-xs-6 col-sm-6 hidden">
|
|
<h4>
|
|
<i class="icon-map-marker"></i>
|
|
{l s='Customer Address'}
|
|
</h4>
|
|
<div class="row-margin-bottom">
|
|
<select id="id_address_delivery" name="id_address_delivery"></select>
|
|
</div>
|
|
<div class="well">
|
|
<a href="" id="edit_delivery_address" class="btn btn-default pull-right fancybox"><i class="icon-pencil"></i> {l s='Edit'}</a>
|
|
<div id="address_delivery_detail"></div>
|
|
</div>
|
|
</div>
|
|
<div id="address_invoice" class="col-lg-6">
|
|
<h4>
|
|
<i class="icon-file-text"></i>
|
|
{l s='Invoice'}
|
|
</h4>
|
|
<div class="row-margin-bottom">
|
|
<select id="id_address_invoice" name="id_address_invoice"></select>
|
|
</div>
|
|
<div class="well">
|
|
<a href="" id="edit_invoice_address" class="btn btn-default pull-right fancybox"><i class="icon-pencil"></i> {l s='Edit'}</a>
|
|
<div id="address_invoice_detail"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{if isset($can_edit_booking_carts) && $can_edit_booking_carts && isset($can_add_addresses) && $can_add_addresses}
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<a class="fancybox btn btn-default" id="new_address" href="{$link->getAdminLink('AdminAddresses')|escape:'html':'UTF-8'}&addaddress&id_customer=42&liteDisplaying=1&submitFormAjax=1#">
|
|
<i class="icon-plus-sign-alt"></i>
|
|
{l s='Add a new address'}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
<div class="panel" id="carriers_part" style="display:none;">
|
|
<div class="panel-heading">
|
|
<i class="icon-truck"></i>
|
|
{l s='Shipping'}
|
|
</div>
|
|
<div id="carriers_err" style="display:none;" class="alert alert-warning"></div>
|
|
<div id="carrier_form">
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3">
|
|
{l s='Delivery option'}
|
|
</label>
|
|
<div class="col-lg-9">
|
|
<select name="delivery_option" id="delivery_option">
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3" for="shipping_price">
|
|
{l s='Shipping price (Tax incl.)'}
|
|
</label>
|
|
<div class="col-lg-9">
|
|
<p id="shipping_price" class="form-control-static" name="shipping_price"></p>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3" for="free_shipping">
|
|
{l s='Free shipping'}
|
|
</label>
|
|
<div class="input-group col-lg-9 fixed-width-lg">
|
|
<span class="switch prestashop-switch">
|
|
<input type="radio" name="free_shipping" id="free_shipping" value="1">
|
|
<label for="free_shipping" class="radioCheck">
|
|
{l s='yes'}
|
|
</label>
|
|
<input type="radio" name="free_shipping" id="free_shipping_off" value="0" checked="checked">
|
|
<label for="free_shipping_off" class="radioCheck">
|
|
{l s='No'}
|
|
</label>
|
|
<a class="slide-button btn"></a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
{if $recyclable_pack}
|
|
<div class="form-group">
|
|
<div class="checkbox col-lg-9 col-offset-3">
|
|
<label for="carrier_recycled_package">
|
|
<input type="checkbox" name="carrier_recycled_package" value="1" id="carrier_recycled_package" />
|
|
{l s='Recycled package'}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
{/if}
|
|
|
|
{if $gift_wrapping}
|
|
<div class="form-group">
|
|
<div class="checkbox col-lg-9 col-offset-3">
|
|
<label for="order_gift">
|
|
<input type="checkbox" name="order_gift" id="order_gift" value="1" />
|
|
{l s='Gift'}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3" for="gift_message">{l s='Gift message'}</label>
|
|
<div class="col-lg-9">
|
|
<textarea id="gift_message" class="form-control" cols="40" rows="4"></textarea>
|
|
</div>
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
</div>
|
|
<div class="panel" id="summary_part" style="display:none;">
|
|
<div class="panel-heading">
|
|
<i class="icon-align-justify"></i>
|
|
{l s='Summary'}
|
|
</div>
|
|
|
|
<div id="send_email_feedback" class="hide alert"></div>
|
|
|
|
<div id="cart_summary" class="panel row-margin-bottom text-center">
|
|
<div class="row">
|
|
<div class="col-lg-2">
|
|
<div class="data-focus">
|
|
<span>{l s='Total rooms (Tax excl.)'}</span><br/>
|
|
<span id="total_rooms" class="size_l text-success"></span>
|
|
</div>
|
|
</div>
|
|
{* <div class="col-lg-2">
|
|
<div class="data-focus">
|
|
<span>{l s='Total extra services (Tax excl.)'}</span><br/>
|
|
<span id="total_extra_services" class="size_l text-success"></span>
|
|
</div>
|
|
</div> *}
|
|
{* <div class="col-lg-2">
|
|
<div class="data-focus">
|
|
<span>{l s='Total Total service products (Tax excl.)'}</span><br/>
|
|
<span id="total_service_products" class="size_l text-success"></span>
|
|
</div>
|
|
</div> *}
|
|
<div class="col-lg-2">
|
|
<div class="data-focus">
|
|
<span>{l s='Convenience fees (Tax excl.)'}</span><br/>
|
|
<span id="total_convenience_fees" class="size_l"></span>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-2">
|
|
<div class="data-focus">
|
|
<span>{l s='Total (Tax excl.)'}</span><br/>
|
|
<span id="total_without_taxes" class="size_l"></span>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-2">
|
|
<div class="data-focus">
|
|
<span>{l s='Total taxes'}</span>
|
|
{capture name='total_taxes_tooltip_content'}
|
|
<div class="ui-tooltip-body">
|
|
<div class="ui-tooltip-service-tax-row">
|
|
<label class="ui-tooltip-label">{l s='Room & Service Tax:'}</label>
|
|
<span class="ui-tooltip-elem-txt" id="total_taxes_vat"></span>
|
|
</div>
|
|
<div class="ui-tooltip-tourism-tax-row">
|
|
<label class="ui-tooltip-label">{l s='Tourism Tax:'}</label>
|
|
<span class="ui-tooltip-elem-txt" id="total_taxes_tourism"></span>
|
|
</div>
|
|
</div>
|
|
{/capture}
|
|
{include file='helpers/ui-tooltip.tpl' tooltip_content=$smarty.capture.total_taxes_tooltip_content}
|
|
<br/>
|
|
<span id="total_taxes" class="size_l"></span>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-2">
|
|
<div class="data-focus">
|
|
<span>{l s='Total vouchers'}</span><br/>
|
|
<span id="total_vouchers" class="size_l text-danger"></span>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-2">
|
|
<div class="data-focus data-focus-primary">
|
|
<span>{l s='Total (Tax incl.)'}</span><br/>
|
|
<span id="total_with_taxes" class="size_l"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{hook h="displayAdminOrderMessageBefore"}
|
|
<div class="row">
|
|
<div class="order_message_right col-lg-12">
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3" for="order_message">{l s='Order message'}</label>
|
|
<div class="col-lg-6">
|
|
<textarea name="order_message" id="order_message" rows="3" cols="45"></textarea>
|
|
<p class="checkbox">
|
|
<label class="control-label" for="visibility">
|
|
<input type="checkbox" name="visibility" id="visibility" value="1" />
|
|
{l s='Display Message to Customer?'}
|
|
</label>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" {if $order_total <= 0}style="display: none;"{/if}>
|
|
{if !$PS_CATALOG_MODE}
|
|
<div class="col-lg-9 col-lg-offset-3">
|
|
<a href="javascript:void(0);" id="send_email_to_customer" class="btn btn-default">
|
|
<i class="icon-credit-card"></i>
|
|
{l s='Send an email to the customer with the link to process the payment.'}
|
|
</a>
|
|
<a id="go_order_process" href="" class="btn btn-link _blank">
|
|
{l s='Go on payment page to process the payment.'}
|
|
<i class="icon-external-link"></i>
|
|
</a>
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
{if isset($smarty.post.is_full_payment)}
|
|
{assign var=is_full_payment value=((bool) $smarty.post.is_full_payment)}
|
|
{else}
|
|
{assign var=is_full_payment value=true}
|
|
{/if}
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3">{l s="Send mails"}</label>
|
|
<div class="col-lg-9">
|
|
<span class="switch prestashop-switch fixed-width-lg">
|
|
<input type="radio" name="send_mails" id="send_mails_on" value="1" checked="checked">
|
|
<label for="send_mails_on">{l s="Yes"}</label>
|
|
<input type="radio" name="send_mails" id="send_mails_off" value="0">
|
|
<label for="send_mails_off">{l s="No"}</label>
|
|
<a class="slide-button btn"></a>
|
|
</span>
|
|
<p class="help-block">{l s='If disabled, no mail related to this order will be sent during order creation.'}</p>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" {if $order_total <= 0}style="display: none;"{/if}>
|
|
<label class="control-label col-lg-3">
|
|
<span class="label-tooltip" data-toggle="tooltip"
|
|
title="{l s='Keep this option enabled for full payment and disable it to take partial payment of the booking.'}">
|
|
{l s="Full payment"}
|
|
</span>
|
|
</label>
|
|
<div class="col-lg-9">
|
|
<span class="switch prestashop-switch fixed-width-lg">
|
|
<input type="radio" name="is_full_payment" id="is_full_payment_on" value="1" {if $is_full_payment}checked="checked"{/if}>
|
|
<label for="is_full_payment_on">{l s="Yes"}</label>
|
|
<input type="radio" name="is_full_payment" id="is_full_payment_off" value="0" {if !$is_full_payment}checked="checked"{/if}>
|
|
<label for="is_full_payment_off">{l s="No"}</label>
|
|
<a class="slide-button btn"></a>
|
|
</span>
|
|
<p class="help-block">
|
|
<span>{l s='Total amount: '}</span>
|
|
<span id="full_payment_amount_value">{displayPrice price=$order_total currency=$currency->id}</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" {if $order_total <= 0 || $is_full_payment}style="display: none;"{/if}>
|
|
<label class="control-label required col-lg-3">{l s='Payment amount'}</label>
|
|
<div class="col-lg-9">
|
|
<div class="input-group fixed-width-xxl">
|
|
<span class="input-group-addon">{$currency->sign}</span>
|
|
<input type="text" name="payment_amount" id="payment_amount" value="{if !$is_full_payment && isset($smarty.post.payment_amount)}{$smarty.post.payment_amount|escape:'html':'UTF-8'}{else}{$order_total}{/if}" {if $is_full_payment}disabled{/if} />
|
|
</div>
|
|
<p class="help-block" id="advance_payment_amount_block" {if isset($is_advance_payment_active) && $is_advance_payment_active}style="display: block;"{else}style="display: none;"{/if}>
|
|
<span>{l s='Advance payment amount: '}</span>
|
|
<span id="advance_payment_amount">{displayPrice price=$advance_payment_amount_with_tax currency=$currency->id}</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-lg-3">{l s='Booking Source'}</label>
|
|
<div class="col-lg-9">
|
|
<select class="fixed-width-xxl" name="id_booking_source" id="id_booking_source">
|
|
<option value="">{l s='-- Select Booking Source --'}</option>
|
|
{assign var="prev_business_source" value=""}
|
|
{foreach from=$booking_sources item=booking_source name=booking_sources_loop}
|
|
{if $booking_source.business_source_name != $prev_business_source}
|
|
{if !$smarty.foreach.booking_sources_loop.first}</optgroup>{/if}
|
|
<optgroup label="{$booking_source.business_source_name}">
|
|
{assign var="prev_business_source" value=$booking_source.business_source_name}
|
|
{/if}
|
|
<option value="{$booking_source.id_source}" {if (isset($smarty.post.id_booking_source) && $booking_source.id_source == $smarty.post.id_booking_source) || (!isset($smarty.post.id_booking_source) && $booking_source.code == 'WALKIN')}selected="selected"{/if}>
|
|
{$booking_source.name}
|
|
</option>
|
|
{/foreach}
|
|
{if $booking_sources}</optgroup>{/if}
|
|
</select>
|
|
<p class="help-block">{l s='Walk-in is selected by default. Change it if this booking came from a different source.'}</p>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" {if $order_total <= 0}style="display: none;"{/if}>
|
|
<label class="control-label col-lg-3">{l s='Payment source'}</label>
|
|
<div class="col-lg-9">
|
|
<select class="fixed-width-xxl" name="payment_type" id="payment_type">
|
|
{foreach from=$payment_types item=payment_type}
|
|
<option value="{$payment_type.value}" {if isset($smarty.post.payment_type) && $payment_type.value == $smarty.post.payment_type}selected="selected"{/if}>
|
|
{$payment_type.name}
|
|
</option>
|
|
{/foreach}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" {if $order_total <= 0}style="display: none;"{/if}>
|
|
<label class="control-label col-lg-3 required">{l s='Payment method'}</label>
|
|
<div class="col-lg-9">
|
|
<input name="payment_module_name" id="payment_module_name" list="payment_module_name_list" class="form-control fixed-width-xxl" {if isset($smarty.post.payment_module_name) && $smarty.post.payment_module_name}value="{$smarty.post.payment_module_name|escape:'html':'UTF-8'}"{/if}>
|
|
<datalist id="payment_module_name_list">
|
|
{foreach from=$payment_modules item=payment_module}
|
|
<option value="{$payment_module->displayName}" data-name="{$payment_module->name}" data-payment-type="{$payment_module->payment_type}">
|
|
{/foreach}
|
|
</datalist>
|
|
<p class="help-block">{l s='Select or type the payment method using which payment for booking will be made.'}</p>
|
|
</div>
|
|
</div>
|
|
{hook h="displayAdminOrderPaymentSelectionAfter"}
|
|
<div class="form-group" {if $order_total <= 0}style="display: none;"{/if}>
|
|
<label class="control-label col-lg-3">{l s='Transaction ID'}</label>
|
|
<div class="col-lg-9">
|
|
<input type="text" class="fixed-width-xxl" name="payment_transaction_id" id="payment_transaction_id" value="{if isset($smarty.post.payment_transaction_id)}{$smarty.post.payment_transaction_id}{/if}" />
|
|
</div>
|
|
</div>
|
|
{hook h="displayAdminOrderFormFieldsAfter"}
|
|
<div class="form-group">
|
|
<div class="col-lg-9 col-lg-offset-3">
|
|
<button type="submit" name="submitAddOrder" class="btn btn-default" />
|
|
<i class="icon-check"></i>
|
|
{l s='Create the order'}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
{strip}
|
|
{addJsDef max_child_age=$max_child_age}
|
|
{addJsDefL name='select_age_txt'}{l s='Select age' js=1}{/addJsDefL}
|
|
{addJsDefL name='under_1_age'}{l s='Under 1' js=1}{/addJsDefL}
|
|
{addJsDefL name='room_txt'}{l s='Room' js=1}{/addJsDefL}
|
|
{addJsDefL name='rooms_txt'}{l s='Rooms' js=1}{/addJsDefL}
|
|
{addJsDefL name='remove_txt'}{l s='Remove' js=1}{/addJsDefL}
|
|
{addJsDefL name='adult_txt'}{l s='Adult' js=1}{/addJsDefL}
|
|
{addJsDefL name='adults_txt'}{l s='Adults' js=1}{/addJsDefL}
|
|
{addJsDefL name='child_txt'}{l s='Child' js=1}{/addJsDefL}
|
|
{addJsDefL name='children_txt'}{l s='Children' js=1}{/addJsDefL}
|
|
{addJsDefL name='below_txt'}{l s='Below' js=1}{/addJsDefL}
|
|
{addJsDefL name='years_txt'}{l s='years' js=1}{/addJsDefL}
|
|
{addJsDefL name='all_children_txt'}{l s='All Children' js=1}{/addJsDefL}
|
|
{addJsDefL name='max_occupancy_reached_txt'}{l s='Maximum room occupancy reached' js=1}{/addJsDefL}
|
|
{addJsDefL name='max_adults_txt'}{l s='Maximum adult occupancy reached' js=1}{/addJsDefL}
|
|
{addJsDefL name='max_children_txt'}{l s='Maximum children occupancy reached' js=1}{/addJsDefL}
|
|
{addJsDefL name='no_children_allowed_txt'}{l s='Only adults can be accommodated' js=1}{/addJsDefL}
|
|
{addJsDefL name='invalid_occupancy_txt'}{l s='Invalid occupancy(adults/children) found.' js=1}{/addJsDefL}
|
|
{addJsDefL name='error_found_txt'}{l s='Errors found' js=1}{/addJsDefL}
|
|
{addJsDefL name='txtExtraServiceSucc'}{l s='Updated Successfully' js=1}{/addJsDefL}
|
|
{/strip}
|
|
|
|
<div id="loader_container">
|
|
<div id="loader"></div>
|
|
</div>
|