V1.4.1 released: Hotel wise permissions, order confirmation mail management, Pricing variants in upselling feature
This commit is contained in:
@@ -1,3 +1,50 @@
|
||||
####################################
|
||||
# V1.4.1
|
||||
####################################
|
||||
|
||||
## Added Features:
|
||||
|
||||
[+] BO : Hotel wise employee permission management is added. now admin can give permission to his employees according to the specific hotel selections
|
||||
|
||||
[+] BO : Additional facility : functionality is added at backoffice order creation process also.
|
||||
[+] BO : Additional facility : Tax can be applied on additional facilities.
|
||||
[+] BO : Additional facility : Per day price calculation option is added.[Price will be calculated on per day basis of the booking or for entire date range of the booking]
|
||||
[+] BO : Order Confirmation Email : Now admin can set to whom order confirmation email will be sent from Preferences -> orders tab.
|
||||
[+] CO : displayNavigationBottomHook hook added "hotelcommerce/modules/blockuserinfo/nav-xs.tpl".
|
||||
|
||||
## Improved/changed features:
|
||||
|
||||
[*] FO : Address details on Order details page is changed. Only details (name, email and mobile number) will be shown which we are showing to the customer at checkout page
|
||||
[*] FO : Address will not be shown to the customer while checkout process. edit link also removed from "Guest Information" section at checkout page.
|
||||
|
||||
[*] BO : Option to delete one room in two default created rows in while saving rooms of the room type.
|
||||
[*] BO : unit price fields removed from backoffice room type creation page.
|
||||
|
||||
[*] CO : blocknavigationmenu : Navigaion menu improved. All links are dynamic now.
|
||||
[*] CO : wkfooterexploreblock module is removed. All functionalities are merged with blocknavigationmenu module.
|
||||
[*] CO : Orders will be splitted now hotelwise. A new order will be created for each hotel.
|
||||
[*] CO : Trademark and powered by changed to webkul (from presatshop).
|
||||
[*] CO : Correct single quotes and double quotes of Class HotelBookingDetail.php
|
||||
[*] CO : Installed paypal module by prestashop by default while QloApps installation.
|
||||
[*] CO : Translations are improved.
|
||||
|
||||
## Bug/Issues Resolved:
|
||||
|
||||
[-] BO : Resolved : Room does not free even after room status set to checkout.
|
||||
[-] BO : Resolved : Infinite loop on Room type page while loading Booking Information tab.
|
||||
[-] BO : Resolved : Book now page showing error when current date is last date of the month.
|
||||
[-] BO : Resolved : Image is not showing while feature update (Catalog->features) and issue while updating feature.
|
||||
|
||||
[-] CO : Resolved : As theme name was "hotel-theme". So on saving theme translations a new theme directory "hotel-theme" is created and translations are saved in this directory. now "hotel-theme" is replaced with "hotel-reservation-theme".
|
||||
[-] CO : Resolved : Feature price plans not working. [ Create two plans one for sunday and other for saturday. At the moment it's only showing the change/increase on Saturdays not Sundays. If I unable Saturdays it is showing the price change on Sundays and not Saturdays.
|
||||
[-] CO : Resolved : Order status is 'Payment Error' if payment is done by advance payment with real payment gateways.
|
||||
|
||||
[-] FO : Resolved : blockcart and blocknavigationmenu modules swaps randomly at displayTop hook.
|
||||
[-] FO : Resolved : Disable dates of last room will be saved for all previous rooms while saving rooms of a room type.
|
||||
[-] FO : Resolved : Rooms are not visible when changing minimum price in filter by price.
|
||||
[-] FO : Resolved : Null quantity issue when check-in date and check-out dates are the same. When the date_from and the date_to passed in the URL parameter are identical they are accepted in the entries (Check-In Date & Check-out Date) on the room type detail page. Once we click on Book now pop up with "Null quantity" message appears.
|
||||
|
||||
|
||||
####################################
|
||||
# V1.4.0
|
||||
####################################
|
||||
@@ -134,7 +181,7 @@
|
||||
|
||||
[-] CO : Resolved :: hotelreservationsystem - Parent:: replaced with parent:: in classes/hotelHotelBranchInformation.php which was creating problems in installation.
|
||||
|
||||
[-] CO : Resolved :: RecursiveDirectoryIterator::__construct(/var/www/html/themes/hotel-theme/): failed to open dir While installation.
|
||||
[-] CO : Resolved :: RecursiveDirectoryIterator::__construct(/var/www/html/themes/hotel-reservation-theme/): failed to open dir While installation.
|
||||
|
||||
[-] BO : Resolved :: hotelreservationsystem:: Hotel images not saved while saving hotel details.
|
||||
[-] BO : Resolved :: hotelreservationsystem - $max_phone_digit is undefined issue resolved on hotel creation form.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -474,4 +474,9 @@ $(document).ready(function() {
|
||||
|
||||
//scroll_if_anchor(window.location.hash);
|
||||
$("body").on("click", "a.anchor", scroll_if_anchor);
|
||||
|
||||
// Unselect the room types when room types with no hotel access are selected.
|
||||
$('.no-htl-access-option').on('click', function() {
|
||||
$(this).prop('selected', false);
|
||||
});
|
||||
}); //end dom ready
|
||||
|
||||
@@ -24,10 +24,10 @@
|
||||
*}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
|
||||
var id_tab_parentmodule = {$id_tab_parentmodule|intval};
|
||||
var id_tab_module = {$id_tab_module|intval};
|
||||
|
||||
|
||||
$('tr.child-'+id_tab_parentmodule+' > td > input.view.'+id_tab_module).change( function () {
|
||||
|
||||
if (!$(this).prop('checked'))
|
||||
@@ -37,7 +37,7 @@
|
||||
$('#table_module_2 thead th:eq(1) input').trigger('click');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('tr.child-'+id_tab_parentmodule+' > td > input.edit.'+id_tab_module).change( function () {
|
||||
|
||||
if (!$(this).prop('checked'))
|
||||
@@ -47,7 +47,7 @@
|
||||
$('#table_module_2 thead th:eq(2) input').trigger('click');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('div.productTabs').find('a').each(function() {
|
||||
$(this).attr('href', '#');
|
||||
});
|
||||
@@ -187,6 +187,49 @@
|
||||
});
|
||||
});
|
||||
|
||||
// Change Accesses of hotels
|
||||
$(".changeHotelAccess").change(function(){
|
||||
var tout = $(this).data('rel').split('||');
|
||||
var id_hotel = tout[0];
|
||||
var id_profile = tout[2];
|
||||
var enabled = $(this).is(':checked') ? 1 : 0;
|
||||
var enabled_attr = $(this).is(':checked') ? true : false;
|
||||
var table = 'table#table_hotel_'+id_profile;
|
||||
|
||||
if (id_hotel == -1) {
|
||||
$(table+' .ajax-htl-all').attr("checked", enabled_attr);
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "{$link->getAdminLink('AdminAccess')|addslashes}",
|
||||
cache: false,
|
||||
data : {
|
||||
ajaxMode: '1',
|
||||
id_hotel: id_hotel,
|
||||
enabled: enabled,
|
||||
id_profile: id_profile,
|
||||
submitAddHotelAccess: '1',
|
||||
action: 'updateHotelAccess',
|
||||
ajax: '1',
|
||||
token: '{getAdminToken tab='AdminAccess'}'
|
||||
},
|
||||
success : function(res,textStatus,jqXHR)
|
||||
{
|
||||
try {
|
||||
if (res == 'ok') {
|
||||
showSuccessMessage("{l s='Update successful'}");
|
||||
} else {
|
||||
showErrorMessage("{l s='Update error'}");
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
jAlert('Technical error');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{if $show_toolbar}
|
||||
@@ -213,9 +256,42 @@
|
||||
{/foreach}
|
||||
{foreach $profiles as $profile}
|
||||
<div class="profile-{$profile.id_profile} tab-profile" style="display:{if $profile.id_profile != $current_profile}none{/if}">
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
{if $profile.id_profile != $admin_profile}
|
||||
<div class="col-lg-6">
|
||||
<div class="col-lg-6">
|
||||
{if isset($hotels) && $hotels}
|
||||
<div class="panel">
|
||||
<h3>{l s='Hotel Permissions'}</h3>
|
||||
<table class="table" id="table_hotel_{$profile.id_profile}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{l s='Hotel'}</th>
|
||||
<th>
|
||||
<input type="checkbox"{if $access_edit == 1} class="changeHotelAccess" data-rel="-1||all||{$profile.id_profile}"{else} disabled="disabled"{/if}/>
|
||||
{l s='All'}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{if !count($hotels)}
|
||||
<tr>
|
||||
<td colspan="6">{l s='No menu'}</td>
|
||||
</tr>
|
||||
{else}
|
||||
{foreach $hotels as $hotelInfo}
|
||||
{assign var=result_accesses value=0}
|
||||
<tr class="parentTr">
|
||||
<td>{$hotelInfo['hotel_name']|escape:'html':'UTF-8'}</td>
|
||||
<td>
|
||||
<input type="checkbox"{if $access_edit == 1} data-rel="{$hotelInfo['id']}||specific||{$profile.id_profile|escape:'html':'UTF-8'}||all" class="changeHotelAccess ajax-htl-all"{else} class="all" disabled="disabled"{/if}{if isset($hotelAccess[$profile.id_profile][$hotelInfo.id]['access']) && $hotelAccess[$profile.id_profile][$hotelInfo.id]['access']} checked="checked"{/if}/>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="panel">
|
||||
<h3>{l s='Menu'}</h3>
|
||||
<table class="table" id="table_{$profile.id_profile}">
|
||||
@@ -255,8 +331,8 @@
|
||||
{if !$tab.id_parent OR $tab.id_parent == -1}
|
||||
{assign var=is_child value=false}
|
||||
{assign var=result_accesses value=0}
|
||||
<tr{if !$is_child} class="parent"{/if}>
|
||||
<td{if !$is_child} class="bold"{/if}>{if $is_child} » {/if}<strong>{$tab.name}</strong></td>
|
||||
<tr {if !$is_child} class="parent"{/if}>
|
||||
<td {if !$is_child} class="bold"{/if}>{if $is_child} » {/if}<strong>{$tab.name}</strong></td>
|
||||
{foreach $perms as $perm}
|
||||
{if $access_edit == 1}
|
||||
<td>
|
||||
|
||||
@@ -73,14 +73,60 @@ function toggleCartRuleFilter(id)
|
||||
|
||||
function removeCartRuleOption(item)
|
||||
{
|
||||
var error = 0;
|
||||
var id = $(item).attr('id').replace('_remove', '');
|
||||
$('#' + id + '_2 option:selected').remove().appendTo('#' + id + '_1');
|
||||
var selectedOpt = $('#' + id + '_2 option:selected');
|
||||
var notAlloedRooms = [];
|
||||
// validate if rooms with no hotel access are selected
|
||||
$.each( selectedOpt, function( key, val ) {
|
||||
if ($(this).attr('data-htl_access') == 0) {
|
||||
notAlloedRooms.push($(this).text());
|
||||
error = 1;
|
||||
}
|
||||
});
|
||||
if (error == 0) {
|
||||
selectedOpt.remove().appendTo('#' + id + '_1');;
|
||||
} else {
|
||||
var errorHtml = '';
|
||||
errorHtml += room_access_err;
|
||||
if (notAlloedRooms.length) {
|
||||
errorHtml += '<br />' + room_rmv_txt + '<ul>';
|
||||
$.each( notAlloedRooms, function( key, val ) {
|
||||
errorHtml += '<li>' + val + '</li>';
|
||||
});
|
||||
errorHtml += '</ul>';
|
||||
}
|
||||
showErrorMessage(errorHtml);
|
||||
}
|
||||
}
|
||||
|
||||
function addCartRuleOption(item)
|
||||
{
|
||||
var error = 0;
|
||||
var id = $(item).attr('id').replace('_add', '');
|
||||
$('#' + id + '_1 option:selected').remove().appendTo('#' + id + '_2');
|
||||
var selectedOpt = $('#' + id + '_1 option:selected');
|
||||
var notAlloedRooms = [];
|
||||
// validate if rooms with no hotel access are selected
|
||||
$.each( selectedOpt, function( key, val ) {
|
||||
if ($(this).attr('data-htl_access') == 0) {
|
||||
notAlloedRooms.push($(this).text());
|
||||
error = 1;
|
||||
}
|
||||
});
|
||||
if (error == 0) {
|
||||
selectedOpt.remove().appendTo('#' + id + '_2');
|
||||
} else {
|
||||
var errorHtml = '';
|
||||
errorHtml += room_access_err;
|
||||
if (notAlloedRooms.length) {
|
||||
errorHtml += '<br />' + room_rmv_txt + '<ul>';
|
||||
$.each( notAlloedRooms, function( key, val ) {
|
||||
errorHtml += '<li>' + val + '</li>';
|
||||
});
|
||||
errorHtml += '</ul>';
|
||||
}
|
||||
showErrorMessage(errorHtml);
|
||||
}
|
||||
}
|
||||
|
||||
function updateProductRuleShortDescription(item)
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
var timeText = '{l s='Time' js=1}';
|
||||
var hourText = '{l s='Hour' js=1}';
|
||||
var minuteText = '{l s='Minute' js=1}';
|
||||
|
||||
|
||||
var languages = new Array();
|
||||
{foreach from=$languages item=language key=k}
|
||||
languages[{$k}] = {
|
||||
|
||||
@@ -1,34 +1,42 @@
|
||||
<div class="col-lg-12 bootstrap">
|
||||
<div class="col-lg-6">
|
||||
<div class="col-lg-6 select-options-div">
|
||||
{l s='Unselected'}
|
||||
<select multiple size="10" id="product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_1">
|
||||
{foreach from=$product_rule_itemlist.unselected item='item'}
|
||||
<option value="{$item.id|intval}" title="{$item.name}"> {$item.name}</option>
|
||||
<option {if !$item.htl_access}class="no-htl-access-option"{/if} data-htl_access="{$item.htl_access|intval}" value="{$item.id|intval}" title="{$item.name}"> {$item.name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
<div class="clearfix"> </div>
|
||||
<a id="product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_add" class="btn btn-default btn-block" >
|
||||
<a id="product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_add" class="btn btn-default btn-block add-select-options" >
|
||||
{l s='Add'}
|
||||
<i class="icon-arrow-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="col-lg-6 select-options-div">
|
||||
{l s='Selected'}
|
||||
<select multiple size="10" name="product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}[]" id="product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_2" class="product_rule_toselect" >
|
||||
{foreach from=$product_rule_itemlist.selected item='item'}
|
||||
<option value="{$item.id|intval}" title="{$item.name}"> {$item.name}</option>
|
||||
<option data-htl_access="{$item.htl_access|intval}" {if !$item.htl_access}class="no-htl-access-option"{/if} value="{$item.id|intval}" title="{$item.name}"> {$item.name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
<div class="clearfix"> </div>
|
||||
<a id="product_rule_select_{$product_rule_group_id}_{$product_rule_id}_remove" class="btn btn-default btn-block" >
|
||||
<a id="product_rule_select_{$product_rule_group_id}_{$product_rule_id}_remove" class="btn btn-default btn-block add-select-options" >
|
||||
<i class="icon-arrow-left"></i>
|
||||
{l s='Remove'}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
$('#product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_remove').click(function() { removeCartRuleOption(this); updateProductRuleShortDescription(this); });
|
||||
$('#product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_add').click(function() { addCartRuleOption(this); updateProductRuleShortDescription(this); });
|
||||
$(document).ready(function() { updateProductRuleShortDescription($('#product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_add')); });
|
||||
$('#product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_remove').click(function() {
|
||||
removeCartRuleOption(this);
|
||||
updateProductRuleShortDescription(this);
|
||||
});
|
||||
$('#product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_add').click(function() {
|
||||
addCartRuleOption(this);
|
||||
updateProductRuleShortDescription(this);
|
||||
});
|
||||
$(document).ready(function() {
|
||||
updateProductRuleShortDescription($('#product_rule_select_{$product_rule_group_id|intval}_{$product_rule_id|intval}_add'));
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
{hook h="displayAdminLogin"}
|
||||
<div id="login-footer">
|
||||
<p class="text-center text-muted">
|
||||
<a href="https://webkul.com/" onclick="return !window.open(this.href);">
|
||||
<a href="https://webkul.com" onclick="return !window.open(this.href);">
|
||||
© Webkul™ 2015-{$smarty.now|date_format:"%Y"} - All rights reserved
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
{*
|
||||
* 2010-2019 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through this link for complete license : https://store.webkul.com/license.html
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to https://store.webkul.com/customisation-guidelines/ for more information.
|
||||
*
|
||||
* @author Webkul IN <support@webkul.com>
|
||||
* @copyright 2010-2019 Webkul IN
|
||||
* @license https://store.webkul.com/license.html
|
||||
*}
|
||||
|
||||
{if isset($selectedRoomDemands) && $selectedRoomDemands}
|
||||
{assign var=roomCount value=1}
|
||||
{foreach $selectedRoomDemands as $key => $roomDemand}
|
||||
<div class="row room_demands_container">
|
||||
<div class="col-sm-12 demand_header">
|
||||
<span>
|
||||
<i class="icon-bed"></i>
|
||||
{if isset($roomDemand['room_num']) && $roomDemand['room_num']}
|
||||
{l s='Room'} {$roomDemand['room_num']|escape:'html':'UTF-8'}
|
||||
{else}
|
||||
{l s='Room'} {$roomCount|escape:'html':'UTF-8'}
|
||||
{/if}
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-sm-12 room_demand_detail">
|
||||
{if isset($roomTypeDemands) && $roomTypeDemands}
|
||||
{foreach $roomTypeDemands as $idGlobalDemand => $demand}
|
||||
<div class="row room_demand_block">
|
||||
<div class="col-xs-6">
|
||||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
<input id_cart_booking="{$roomDemand['id']}" value="{$idGlobalDemand|escape:'html':'UTF-8'}" type="checkbox" class="id_room_type_demand" {if isset($roomDemand['selected_global_demands']) && $roomDemand['selected_global_demands'] && ($idGlobalDemand|in_array:$roomDemand['selected_global_demands'])}checked{/if} />
|
||||
</div>
|
||||
<div class="col-xs-10 demand_adv_option_block">
|
||||
<p>{$demand['name']|escape:'html':'UTF-8'}</p>
|
||||
{if isset($demand['adv_option']) && $demand['adv_option']}
|
||||
<select class="id_option">
|
||||
{foreach $demand['adv_option'] as $idOption => $option}
|
||||
{assign var=demand_key value="`$idGlobalDemand`-`$idOption`"}
|
||||
<option optionPrice="{$option['price']|escape:'html':'UTF-8'}" value="{$idOption|escape:'html':'UTF-8'}" {if isset($roomDemand['extra_demands'][$demand_key])}selected{/if} key="{$demand_key}">{$option['name']}</option>
|
||||
{if isset($roomDemand['extra_demands'][$demand_key])}
|
||||
{assign var=selected_adv_option value="$idOption"}
|
||||
{/if}
|
||||
{/foreach}
|
||||
</select>
|
||||
{else}
|
||||
<input type="hidden" class="id_option" value="0" />
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<p><span class="pull-right extra_demand_option_price">{if isset($selected_adv_option) && isset($demand['adv_option'][$selected_adv_option]['price'])}{convertPrice price = $demand['adv_option'][$selected_adv_option]['price']|escape:'html':'UTF-8'}{else}{convertPrice price = $demand['price']|escape:'html':'UTF-8'}{/if}</span></p>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{assign var=roomCount value=$roomCount+1}
|
||||
{/foreach}
|
||||
{/if}
|
||||
@@ -0,0 +1,278 @@
|
||||
{*
|
||||
* 2010-2019 Webkul.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* All right is reserved,
|
||||
* Please go through this link for complete license : https://store.webkul.com/license.html
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade this module to newer
|
||||
* versions in the future. If you wish to customize this module for your
|
||||
* needs please refer to https://store.webkul.com/customisation-guidelines/ for more information.
|
||||
*
|
||||
* @author Webkul IN <support@webkul.com>
|
||||
* @copyright 2010-2019 Webkul IN
|
||||
* @license https://store.webkul.com/license.html
|
||||
*}
|
||||
|
||||
<div class="panel form-horizontal" id="customer_cart_details">
|
||||
<div class="panel-heading">
|
||||
<i class="icon-shopping-cart"></i>
|
||||
{l s='Cart Details'}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<table class="table" id="customer_cart_details_table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><span class="title_box">{l s='Room No.'}</span></th>
|
||||
<th><span class="title_box">{l s='Room Image'}</th>
|
||||
<th><span class="title_box">{l s='Room Type'}</span></th>
|
||||
<th><span class="title_box">{l s='Duration'}</span></th>
|
||||
<th><span class="title_box">{l s='Unit Price (tax excl)'}</span></th>
|
||||
<th><span class="title_box">{l s='Additinal Facilities (tax excl)'}</span></th>
|
||||
<th><span class="title_box">{l s='Total Rooms Price (tax excl)'}</span></th>
|
||||
<th><span class="title_box">{l s='Total Price (tax excl)'}</span></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{if isset($cart_detail_data) && $cart_detail_data}
|
||||
{assign var=curr_id value=$cart->id_currency|intval}
|
||||
{foreach from=$cart_detail_data item=data}
|
||||
<tr>
|
||||
<td>{$data.room_num|escape:'html':'UTF-8'}</td>
|
||||
<td><img src="{$data.image_link|escape:'html':'UTF-8'}" title="Room image" /></td>
|
||||
<td>
|
||||
<p>{$data.room_type|escape:'html':'UTF-8'}</p>
|
||||
{if isset($data.selected_demands) && $data.selected_demands}
|
||||
<ul class="extra-demand-list">
|
||||
{foreach $data.selected_demands as $selDemand}
|
||||
<li>
|
||||
{$selDemand.name|escape:'html':'UTF-8'}
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
</td>
|
||||
<td>{$data.date_from|escape:'html':'UTF-8'|date_format:"%d-%m-%Y"} - {$data.date_to|escape:'html':'UTF-8'|date_format:"%d-%m-%Y"}</td>
|
||||
<td id="cart_detail_data_unit_price_{$data.id|escape:'html':'UTF-8'}">
|
||||
<span class="product_original_price {if $data.feature_price_diff > 0}room_type_old_price{/if}" {if $data.feature_price_diff < 0} style="display:none;"{/if}>
|
||||
{displayPrice price=$data.product_price_tax_excl|escape:'html':'UTF-8'}
|
||||
</span>
|
||||
<span class="room_type_current_price" {if !$data.feature_price_diff}style="display:none;"{/if}>
|
||||
{displayPrice price=$data.feature_price_tax_excl|escape:'html':'UTF-8'}
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
{if isset($data.extra_demands) && $data.extra_demands}
|
||||
{displayPrice price=$data.demand_price|escape:'html':'UTF-8'}
|
||||
{else}
|
||||
{displayPrice price=0}
|
||||
{/if}
|
||||
</td>
|
||||
<td id="cart_detail_data_price_{$data.id|escape:'html':'UTF-8'}">{displayPrice price=$data.amt_with_qty}</td>
|
||||
<td>
|
||||
{if isset($data.extra_demands) && $data.extra_demands}
|
||||
{displayPrice price=$data.amt_with_qty|escape:'html':'UTF-8'+$data.demand_price|escape:'html':'UTF-8'}
|
||||
{else}
|
||||
{displayPrice price=$data.amt_with_qty|escape:'html':'UTF-8'}
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
<button class="delete_hotel_cart_data btn btn-danger" data-id_room={$data.id_room|escape:'html':'UTF-8'} data-id_product={$data.id_product|escape:'html':'UTF-8'} data-id = {$data.id|escape:'html':'UTF-8'} data-id_cart = {$data.id_cart|escape:'html':'UTF-8'} data-date_to = {$data.date_to|escape:'html':'UTF-8'} data-date_from = {$data.date_from|escape:'html':'UTF-8'}>
|
||||
<i class="icon-trash"></i> {l s='Delete'}
|
||||
</button>
|
||||
{if isset($data.extra_demands) && $data.extra_demands}
|
||||
<br />
|
||||
<a href="#" id_room={$data.id_room|escape:'html':'UTF-8'} date_from="{$data.date_from|escape:'html':'UTF-8'}" date_to="{$data.date_to|escape:'html':'UTF-8'}" id_product="{$data.id_product|escape:'html':'UTF-8'}" id_cart="{$data.id_cart|escape:'html':'UTF-8'}" class="open_rooms_extra_demands btn btn-success" title="{l s='Click here to add or remove the additinal facilities of this room type.'}">
|
||||
<i class="icon-plus"></i> {l s='Facilities'}
|
||||
</a>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{else}
|
||||
<tr>
|
||||
<td>{l s='No Room Found in the cart.'}</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{* Modal for extra demands *}
|
||||
<div class="modal" tabindex="-1" role="dialog" id="rooms_type_extra_demands">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h3 class="modal-title">{l s='Additional Facilities'}</h3>
|
||||
</div>
|
||||
<div class="modal-body" id="rooms_extra_demands">
|
||||
<div class="rooms_extra_demands_head">
|
||||
<p class="rooms_extra_demands_text">{l s='Add below additional facilities to the room for better hotel experience'}</p>
|
||||
</div>
|
||||
<div id="room_type_demands_desc"></div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">{l s='Close'}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{strip}
|
||||
{addJsDefL name=txtExtraDemandSucc}{l s='Updated Successfully' js=1}{/addJsDefL}
|
||||
{addJsDefL name=txtExtraDemandErr}{l s='Some error occurred while updating demands' js=1}{/addJsDefL}
|
||||
{/strip}
|
||||
|
||||
{* Css for handling extra demands changes *}
|
||||
<style type="text/css">
|
||||
#customer_cart_details .extra-demand-list {
|
||||
padding-left:15px;}
|
||||
#customer_cart_details .delete_hotel_cart_data {
|
||||
margin-bottom:2px !important;}
|
||||
#customer_cart_details .room_type_old_price {
|
||||
text-decoration: line-through;
|
||||
color:#979797;
|
||||
font-size:12px;}
|
||||
/*Extra demands CSS*/
|
||||
#rooms_extra_demands {
|
||||
font-size: 16px;}
|
||||
#rooms_extra_demands .room_demands_container {
|
||||
border: 1px solid #ddd;}
|
||||
#rooms_extra_demands .demand_header {
|
||||
padding: 10px;
|
||||
color: #333;
|
||||
border-bottom: 1px solid #ddd;}
|
||||
#rooms_extra_demands .rooms_extra_demands_head {
|
||||
margin-bottom: 18px;}
|
||||
#rooms_extra_demands .room_demand_block {
|
||||
margin-bottom: 15px;
|
||||
color: #333;
|
||||
font-size: 14px;}
|
||||
#rooms_extra_demands .room_demand_detail {
|
||||
padding: 15px 15px 0px 15px;}
|
||||
</style>
|
||||
|
||||
{* JS for handling extra demands changes *}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
// modalbox for extra bed requirement
|
||||
$('body').on('click', '.open_rooms_extra_demands', 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');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
headers: {
|
||||
"cache-control": "no-cache"
|
||||
},
|
||||
url: "{$link->getAdminLink('AdminOrders')|addslashes}",
|
||||
cache: false,
|
||||
data: {
|
||||
date_from: dateFrom,
|
||||
date_to: dateTo,
|
||||
id_room: idRoom,
|
||||
id_cart: idCart,
|
||||
id_product: idProduct,
|
||||
action: 'getRoomTypeCartDemands',
|
||||
ajax: true
|
||||
},
|
||||
success: function(result) {
|
||||
$('#rooms_type_extra_demands').find('#room_type_demands_desc').html('');
|
||||
$('#rooms_type_extra_demands').find('#room_type_demands_desc').append(result);
|
||||
$('#rooms_type_extra_demands').modal('show');
|
||||
},
|
||||
});
|
||||
});
|
||||
$('#rooms_type_extra_demands').on('hidden.bs.modal', function (e) {
|
||||
// reload so that changes prices will reflect everywhere
|
||||
location.reload();
|
||||
});
|
||||
|
||||
// select/unselect extra demand
|
||||
$(document).on('click', '.id_room_type_demand', function() {
|
||||
var roomDemands = [];
|
||||
// get the selected extra demands by customer
|
||||
$(this).closest('.room_demand_detail').find('input:checkbox.id_room_type_demand:checked').each(function () {
|
||||
roomDemands.push({
|
||||
'id_global_demand':$(this).val(),
|
||||
'id_option': $(this).closest('.room_demand_block').find('.id_option').val()
|
||||
});
|
||||
});
|
||||
var idBookingCart = $(this).attr('id_cart_booking');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
headers: {
|
||||
"cache-control": "no-cache"
|
||||
},
|
||||
url: "{$link->getAdminLink('AdminOrders')|addslashes}",
|
||||
dataType: 'JSON',
|
||||
cache: false,
|
||||
data: {
|
||||
id_cart_booking: idBookingCart,
|
||||
room_demands: JSON.stringify(roomDemands),
|
||||
action: 'changeRoomDemands',
|
||||
ajax: true
|
||||
},
|
||||
success: function(result) {
|
||||
if (result == 1) {
|
||||
showSuccessMessage(txtExtraDemandSucc);
|
||||
} else {
|
||||
showErrorMessage(txtExtraDemandErr);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// change advance option of extra demand
|
||||
$(document).on('change', '.demand_adv_option_block .id_option', function(e) {
|
||||
var option_selected = $(this).find('option:selected');
|
||||
var extra_demand_price = option_selected.attr("optionPrice")
|
||||
extra_demand_price = parseFloat(extra_demand_price);
|
||||
extra_demand_price = formatCurrency(extra_demand_price, currency_format, currency_sign, currency_blank);
|
||||
$(this).closest('.room_demand_block').find('.extra_demand_option_price').text(extra_demand_price);
|
||||
var roomDemands = [];
|
||||
// get the selected extra demands by customer
|
||||
$(this).closest('.room_demand_detail').find('input:checkbox.id_room_type_demand:checked').each(function () {
|
||||
roomDemands.push({
|
||||
'id_global_demand':$(this).val(),
|
||||
'id_option': $(this).closest('.room_demand_block').find('.id_option').val()
|
||||
});
|
||||
});
|
||||
var idBookingCart = $(this).closest('.room_demand_block').find('.id_room_type_demand').attr('id_cart_booking');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
headers: {
|
||||
"cache-control": "no-cache"
|
||||
},
|
||||
url: "{$link->getAdminLink('AdminOrders')|addslashes}",
|
||||
dataType: 'JSON',
|
||||
cache: false,
|
||||
data: {
|
||||
id_cart_booking: idBookingCart,
|
||||
room_demands: JSON.stringify(roomDemands),
|
||||
action: 'changeRoomDemands',
|
||||
ajax: true
|
||||
},
|
||||
success: function(result) {
|
||||
if (result == 1) {
|
||||
showSuccessMessage(txtExtraDemandSucc);
|
||||
} else {
|
||||
showErrorMessage(txtExtraDemandErr);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@@ -39,7 +39,7 @@
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
{convertPriceWithCurrency price=$data['extra_demands_price'] currency=$currency->id}
|
||||
{convertPriceWithCurrency price=$data['extra_demands_price_ti'] currency=$currency->id}
|
||||
</p>
|
||||
{/if}
|
||||
</td>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
{foreach $roomDemand['extra_demands'] as $demand}
|
||||
<p>
|
||||
<span>{$demand['name']}</span>
|
||||
<span class="pull-right">{displayPrice price=$demand['price'] currency=$orderCurrency}</span>
|
||||
<span class="pull-right">{displayPrice price=$demand['total_price_tax_incl'] currency=$orderCurrency}</span>
|
||||
</p>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
<div class="panel form-horizontal" id="customer_cart_details">
|
||||
<div class="panel-heading">
|
||||
<i class="icon-shopping-cart"></i>
|
||||
{l s='Cart Details'}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<table class="table" id="customer_cart_details_table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><span class="title_box">{l s='Room No.'}</span></th>
|
||||
<th><span class="title_box">{l s='Room Image'}</th>
|
||||
<th><span class="title_box">{l s='Room Type'}</span></th>
|
||||
<th><span class="title_box">{l s='Duration'}</span></th>
|
||||
<th><span class="title_box">{l s='Unit Price (Tax incl.)'}</span></th>
|
||||
<th><span class="title_box">{l s='Price (Tax excl.)'}</span></th>
|
||||
<th><span class="title_box">{l s='Action'}</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{if isset($cart_detail_data) && $cart_detail_data}
|
||||
{assign var=curr_id value=$cart->id_currency|intval}
|
||||
{foreach from=$cart_detail_data item=data}
|
||||
<tr>
|
||||
<td>{$data.room_num}</td>
|
||||
<td><img src="{$data.image_link}" title="Room image" /></td>
|
||||
<td>{$data.room_type}</td>
|
||||
<td>{$data.date_from|date_format:"%d-%m-%Y"} -  {$data.date_to|date_format:"%d-%m-%Y"}</td>
|
||||
<td id="cart_detail_data_unit_price_{$data.id}">
|
||||
<span class="product_original_price {if $data.feature_price_diff > 0}room_type_old_price{/if}" {if $data.feature_price_diff < 0} style="display:none;"{/if}>
|
||||
{displayPrice price=$data.product_price}
|
||||
</span>
|
||||
<span class="room_type_current_price" {if !$data.feature_price_diff}style="display:none;"{/if}>
|
||||
{displayPrice price=$data.feature_price}
|
||||
</span>
|
||||
</td>
|
||||
<td id="cart_detail_data_price_{$data.id}">{displayPrice price=$data.amt_with_qty}</td>
|
||||
<td>
|
||||
<button class="btn btn-primary delete_hotel_cart_data" data-id_room={$data.id_room} data-id_product={$data.id_product} data-id = {$data.id} data-id_cart = {$data.id_cart} data-date_to = {$data.date_to} data-date_from = {$data.date_from}><i class="icon-trash"></i> {l s='Delete'}</button>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{else}
|
||||
<tr>
|
||||
<td>{l s='No Room Found in the cart.'}</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style type="text/css">
|
||||
.room_type_old_price {
|
||||
text-decoration: line-through;
|
||||
color:#979797;
|
||||
font-size:12px;
|
||||
}
|
||||
</style>
|
||||
@@ -912,6 +912,7 @@
|
||||
$('#total_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_tax), currency_format, currency_sign, currency_blank));
|
||||
$('#total_without_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_price_without_tax), currency_format, currency_sign, currency_blank));
|
||||
$('#total_with_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_price), currency_format, currency_sign, currency_blank));
|
||||
$('#total_extra_demands').html(formatCurrency(parseFloat(jsonSummary.summary.total_extra_demands_tax_exc), currency_format, currency_sign, currency_blank));
|
||||
$('#total_products').html(formatCurrency(parseFloat(jsonSummary.summary.total_products), currency_format, currency_sign, currency_blank));
|
||||
id_currency = jsonSummary.cart.id_currency;
|
||||
$('#id_currency option').removeAttr('selected');
|
||||
@@ -1181,7 +1182,7 @@
|
||||
</script>
|
||||
|
||||
<div class="leadin">{block name="leadin"}{/block}</div>
|
||||
{include file='controllers/orders/current_cart_details_data.tpl'}
|
||||
{include file='controllers/orders/_current_cart_details_data.tpl'}
|
||||
<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>
|
||||
@@ -1571,34 +1572,34 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-2">
|
||||
<div class="data-focus">
|
||||
<span>{l s='Total products'}</span><br/>
|
||||
<span>{l s='Total rooms (Tax excl.)'}</span><br/>
|
||||
<span id="total_products" class="size_l text-success"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<div class="data-focus">
|
||||
<span>{l s='Total additinal facilties (Tax excl.)'}</span><br/>
|
||||
<span id="total_extra_demands" class="size_l text-success"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<div class="data-focus">
|
||||
<span>{l s='Total vouchers (Tax excl.)'}</span><br/>
|
||||
<span id="total_vouchers" class="size_l text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="col-lg-2">
|
||||
<div class="data-focus">
|
||||
<span>{l s='Total shipping (Tax excl.)'}</span><br/>
|
||||
<span id="total_shipping" class="size_l"></span>
|
||||
</div>
|
||||
</div> --><!-- by webkul to hide unnessesary content -->
|
||||
<div class="col-lg-2">
|
||||
<div class="data-focus">
|
||||
<span>{l s='Total taxes'}</span><br/>
|
||||
<span id="total_taxes" 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><br/>
|
||||
<span id="total_taxes" class="size_l"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<div class="data-focus data-focus-primary">
|
||||
<span>{l s='Total (Tax incl.)'}</span><br/>
|
||||
|
||||
@@ -1166,26 +1166,37 @@
|
||||
{assign var=order_shipping_price value=$order->total_shipping_tax_incl}
|
||||
{/if}
|
||||
<tr id="total_products">
|
||||
<td class="text-right"><strong>{l s='Total Rooms Cost'}</strong></td>
|
||||
<td class="text-right"><strong>{l s='Total Rooms Cost (tax excl.)'}</strong></td>
|
||||
<td class="amount text-right nowrap">
|
||||
<strong>{displayPrice price=$totalRoomsCostTE currency=$currency->id}</strong>
|
||||
</td>
|
||||
<td class="partial_refund_fields current-edit" style="display:none;"></td>
|
||||
</tr>
|
||||
<tr id="total_products">
|
||||
<td class="text-right"><strong>{l s='Total Additional Facilities Cost'}</strong></td>
|
||||
<td class="amount text-right nowrap">
|
||||
<strong>{displayPrice price=$totalDemandsPrice currency=$currency->id}</strong>
|
||||
</td>
|
||||
<td class="partial_refund_fields current-edit" style="display:none;"></td>
|
||||
</tr>
|
||||
{if isset($totalDemandsPriceTE) && $totalDemandsPriceTE > 0}
|
||||
<tr id="total_products">
|
||||
<td class="text-right"><strong>{l s='Additional Facilities Cost (tax excl.)'}</strong></td>
|
||||
<td class="amount text-right nowrap">
|
||||
<strong>{displayPrice price=$totalDemandsPriceTE currency=$currency->id}</strong>
|
||||
</td>
|
||||
<td class="partial_refund_fields current-edit" style="display:none;"></td>
|
||||
</tr>
|
||||
{/if}
|
||||
<tr id="total_tax_order">
|
||||
<td class="text-right"><strong>{l s='Total Tax'}</strong></td>
|
||||
<td class="text-right"><strong>{l s='Total Rooms Tax'}</strong></td>
|
||||
<td class="text-right nowrap">
|
||||
<strong>{displayPrice price=$total_tax_in_order currency=$currency->id}</strong>
|
||||
<strong>{displayPrice price=$total_room_tax currency=$currency->id}</strong>
|
||||
</td>
|
||||
<td class="partial_refund_fields current-edit" style="display:none;"></td>
|
||||
</tr>
|
||||
{if isset($totalDemandsPriceTE) && $totalDemandsPriceTE > 0}
|
||||
<tr id="total_tax_order">
|
||||
<td class="text-right"><strong>{l s='Additional Facilities Tax'}</strong></td>
|
||||
<td class="text-right nowrap">
|
||||
<strong>{displayPrice price=($totalDemandsPriceTI - $totalDemandsPriceTE) currency=$currency->id}</strong>
|
||||
</td>
|
||||
<td class="partial_refund_fields current-edit" style="display:none;"></td>
|
||||
</tr>
|
||||
{/if}
|
||||
<tr id="total_discounts" {if $order->total_discounts_tax_incl == 0}style="display: none;"{/if}>
|
||||
<td class="text-right">{l s='Discounts'}</td>
|
||||
<td class="amount text-right nowrap">
|
||||
@@ -1216,15 +1227,7 @@
|
||||
</div>
|
||||
<p class="help-block"><i class="icon-warning-sign"></i> {l s='(%s)' sprintf=$smarty.capture.TaxMethod}</p>
|
||||
</td>
|
||||
</tr>
|
||||
{if ($order->getTaxCalculationMethod() == $smarty.const.PS_TAX_EXC)}
|
||||
<tr id="total_taxes">
|
||||
<td class="text-right">{l s='Taxes'}</td>
|
||||
<td class="amount text-right nowrap" >{displayPrice price=($order->total_paid_tax_incl-$order->total_paid_tax_excl) currency=$currency->id}</td>
|
||||
<td class="partial_refund_fields current-edit" style="display:none;"></td>
|
||||
</tr>
|
||||
{/if} <!-- by webkul to hide unnessary things in the page-->
|
||||
*}
|
||||
</tr>*}
|
||||
|
||||
{if isset($order_adv_dtl)}
|
||||
<tr>
|
||||
@@ -1244,11 +1247,17 @@
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{if ($order->getTaxCalculationMethod() == $smarty.const.PS_TAX_EXC)}
|
||||
<tr id="total_taxes">
|
||||
<td class="text-right"><strong>{l s='Total Taxes'}</strong></td>
|
||||
<td class="amount text-right nowrap" ><strong>{displayPrice price=($order->total_paid_tax_incl-$order->total_paid_tax_excl) currency=$currency->id}</strong></td>
|
||||
<td class="partial_refund_fields current-edit" style="display:none;"></td>
|
||||
</tr>
|
||||
{/if}
|
||||
{assign var=order_total_price value=$order->total_paid_tax_incl}
|
||||
|
||||
<tr id="total_order">
|
||||
<td class="text-right"><strong>{l s='Total'}</strong></td>
|
||||
<td class="text-right"><strong>{l s='Final Order Total'}</strong></td>
|
||||
<td class="amount text-right nowrap">
|
||||
<strong>{displayPrice price=$order_total_price currency=$currency->id}</strong>
|
||||
</td>
|
||||
@@ -1458,7 +1467,7 @@
|
||||
</ul>
|
||||
<div class="tab-content panel active">
|
||||
<div role="tabpanel" class="tab-pane active" id="reallocate_room_tab">
|
||||
<form method="post" action="">
|
||||
<form method="post" action="{$link->getAdminLink('AdminOrders')|escape:'html':'UTF-8'}&vieworder&id_order={$order->id|intval}">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title" id="realloc_myModalLabel">{l s='Reallocate Rooms'}</h4>
|
||||
@@ -1497,7 +1506,7 @@
|
||||
</form>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="swap_room_tab">
|
||||
<form method="post" action="">
|
||||
<form method="post" action="{$link->getAdminLink('AdminOrders')|escape:'html':'UTF-8'}&vieworder&id_order={$order->id|intval}">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title" id="swap_myModalLabel">{l s='Swap Rooms'}</h4>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{if isset($product->id) && isset($htl_config)}
|
||||
<div id="product-configuration" class="panel product-tab">
|
||||
<input type="hidden" name="submitted_tabs[]" value="Booking"/>
|
||||
<h3 class="tab"> <i class="icon-info"></i> {l s='Booking Information' mod='hotelreservationsystem'}</h3>
|
||||
<h3 class="tab"> <i class="icon-info"></i> {l s='Booking Information'}</h3>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-1"></div>
|
||||
<label for="from_date" class="control-label col-sm-1 required">
|
||||
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Booking Date starts from'}">{l s='From' mod='hotelreservationsystem'}</span>
|
||||
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Booking date starts from'}">{l s='From'}</span>
|
||||
</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="hidden" id="checkTabClick" value="0" name="checkTabClick">
|
||||
@@ -14,7 +14,7 @@
|
||||
</div>
|
||||
|
||||
<label for="to_date" class="control-label col-sm-1 required">
|
||||
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Booking Date upto'}">{l s='To' mod='hotelreservationsystem'}</span>
|
||||
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Booking date upto'}">{l s='To'}</span>
|
||||
</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" name="to_date" class="form-control" id="to_date" value="{$date_to}">
|
||||
@@ -50,7 +50,7 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 htl_room_cat_data">
|
||||
<p class="room_cat_header">{l s='Total Rooms' mod='hotelreservationsystem'}</p>
|
||||
<p class="room_cat_header">{l s='Total Rooms'}</p>
|
||||
<p class="room_cat_data">{$booking_data['stats']['total_rooms']}</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -59,7 +59,7 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 htl_room_cat_data no_border">
|
||||
<p class="room_cat_header">{l s='Partially Available' mod='hotelreservationsystem'}</p>
|
||||
<p class="room_cat_header">{l s='Partially Available'}</p>
|
||||
<p class="room_cat_data">{$booking_data['stats']['num_part_avai']}</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -70,7 +70,7 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 htl_room_cat_data">
|
||||
<p class="room_cat_header">{l s='Available Rooms' mod='hotelreservationsystem'}</p>
|
||||
<p class="room_cat_header">{l s='Available Rooms'}</p>
|
||||
<p class="room_cat_data">{$booking_data['stats']['num_avail']}</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -79,7 +79,7 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 htl_room_cat_data no_border">
|
||||
<p class="room_cat_header">{l s='Booked Rooms' mod='hotelreservationsystem'}</p>
|
||||
<p class="room_cat_header">{l s='Booked Rooms'}</p>
|
||||
<p class="room_cat_data">{$booking_data['stats']['num_booked']}</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -90,7 +90,7 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 htl_room_cat_data">
|
||||
<p class="room_cat_header">{l s='Unavailable Rooms' mod='hotelreservationsystem'}</p>
|
||||
<p class="room_cat_header">{l s='Unavailable Rooms'}</p>
|
||||
<p class="room_cat_data">{$booking_data['stats']['num_unavail']}</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -101,19 +101,19 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6 indi_cont clearfix">
|
||||
<div class="color_indicate bg-green"></div>
|
||||
<span class="indi_label">{l s='Available Rooms' mod='hotelreservationsystem'}</span>
|
||||
<span class="indi_label">{l s='Available Rooms'}</span>
|
||||
</div>
|
||||
<div class="col-sm-6 indi_cont clearfix">
|
||||
<div class="color_indicate bg-yellow"></div>
|
||||
<span class="indi_label">{l s='Partially Available' mod='hotelreservationsystem'}</span>
|
||||
<span class="indi_label">{l s='Partially Available'}</span>
|
||||
</div>
|
||||
<div class="col-sm-6 indi_cont clearfix">
|
||||
<div class="color_indicate bg-red"></div>
|
||||
<span class="indi_label">{l s='Unavailable Rooms' mod='hotelreservationsystem'}</span>
|
||||
<span class="indi_label">{l s='Unavailable Rooms'}</span>
|
||||
</div>
|
||||
<div class="col-sm-6 indi_cont clearfix">
|
||||
<div class="color_indicate bg-gray"></div>
|
||||
<span class="indi_label">{l s='Hold For Maintenance' mod='hotelreservationsystem'}</span>
|
||||
<span class="indi_label">{l s='Hold For Maintenance'}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -122,7 +122,7 @@
|
||||
<div class="panel-footer">
|
||||
<a href="{$link->getAdminLink('AdminProducts')|escape:'html':'UTF-8'}{if isset($smarty.request.page) && $smarty.request.page > 1}&submitFilterproduct={$smarty.request.page|intval}{/if}" class="btn btn-default">
|
||||
<i class="process-icon-cancel"></i>
|
||||
{l s='Cancel' mod='hotelreservationsystem'}
|
||||
{l s='Cancel'}
|
||||
</a>
|
||||
<button type="submit" name="submitAddproductAndStay" class="btn btn-default pull-right" disabled="disabled" id="stayBookingTab">
|
||||
<i class="process-icon-loading"></i>
|
||||
@@ -132,15 +132,15 @@
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<h3 class="tab"> <i class="icon-list"></i> {l s='LIST OF HOTEL ROOMS' mod='hotelreservationsystem'}</h3>
|
||||
<h3 class="tab"> <i class="icon-list"></i> {l s='LIST OF HOTEL ROOMS'}</h3>
|
||||
<div class="form-group">
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{l s='Room No.' mod='hotelreservationsystem'}</th>
|
||||
<th>{l s='Status' mod='hotelreservationsystem'}</th>
|
||||
<th>{l s='Message' mod='hotelreservationsystem'}</th>
|
||||
<th>{l s='Room No.'}</th>
|
||||
<th>{l s='Status'}</th>
|
||||
<th>{l s='Message'}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -149,7 +149,7 @@
|
||||
{foreach from=$b_val key=data_k item=data_v}
|
||||
<tr>
|
||||
<td>{$data_v['room_num']}</td>
|
||||
<td>{l s='Available' mod='hotelreservationsystem'}</td>
|
||||
<td>{l s='Available'}</td>
|
||||
<td>{$data_v['room_comment']}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
@@ -157,7 +157,7 @@
|
||||
{foreach from=$b_val key=data_k item=data_v}
|
||||
<tr>
|
||||
<td>{$data_v['room_num']}</td>
|
||||
<td>{l s='Unavailable' mod='hotelreservationsystem'}</td>
|
||||
<td>{l s='Unavailable'}</td>
|
||||
<td>{$data_v['room_comment']}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
@@ -167,11 +167,11 @@
|
||||
<td>{$data_v['room_num']}</td>
|
||||
<td>
|
||||
{if $data_v['detail'][0]['booking_status'] == 1}
|
||||
{l s='Alloted' mod='hotelreservationsystem'}
|
||||
{l s='Alloted'}
|
||||
{elseif $data_v['detail'][0]['booking_status'] == 2}
|
||||
{l s='Checked-in' mod='hotelreservationsystem'}
|
||||
{l s='Checked-in'}
|
||||
{elseif $data_v['detail'][0]['booking_status'] == 3}
|
||||
{l s='Checked-out' mod='hotelreservationsystem'}
|
||||
{l s='Checked-out'}
|
||||
{/if}
|
||||
</td>
|
||||
<td>{$data_v['detail'][0]['comment']}</td>
|
||||
@@ -181,7 +181,7 @@
|
||||
{foreach from=$b_val key=data_k item=data_v}
|
||||
<tr>
|
||||
<td>{$data_v['room_num']}</td>
|
||||
<td>{l s='Partially Available' mod='hotelreservationsystem'}</td>
|
||||
<td>{l s='Partially Available'}</td>
|
||||
<td>{if isset($data_v['comment'])}{$data_v['comment']}{/if}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{if isset($product->id)}
|
||||
<div id="product-configuration" class="panel product-tab">
|
||||
<input type="hidden" name="submitted_tabs[]" value="Configuration" />
|
||||
<h3 class="tab"> <i class="icon-AdminAdmin"></i> {l s='Configuration' mod='hotelreservationsystem'}</h3>
|
||||
<h3 class="tab"> <i class="icon-AdminAdmin"></i> {l s='Configuration'}</h3>
|
||||
|
||||
{if isset($htl_room_type)}
|
||||
<input type="hidden" value="{$htl_room_type['id']}" name="wk_id_room_type">
|
||||
@@ -10,7 +10,7 @@
|
||||
<div class="form-group">
|
||||
{if isset($htl_room_type)}
|
||||
<label class="control-label col-sm-2" for="hotel_place">
|
||||
{l s='Hotel' mod='hotelreservationsystem'}
|
||||
{l s='Hotel'}
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control" value="{$htl_full_info['hotel_name']}" readonly>
|
||||
@@ -18,7 +18,7 @@
|
||||
</div>
|
||||
{else}
|
||||
<label class="control-label col-sm-2" for="hotel_place">
|
||||
{l s='Select Hotel' mod='hotelreservationsystem'}
|
||||
{l s='Select Hotel'}
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<select name="id_hotel" id="hotel_place" class="form-control">
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2" for="num_adults">
|
||||
{l s='Adults' mod='hotelreservationsystem'}
|
||||
{l s='Adults'}
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input id="num_adults" type="text" name="num_adults" class="form-control" {if isset($htl_room_type)}value="{$htl_room_type['adult']}"{/if}>
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2" for="num_child">
|
||||
{l s='Children' mod='hotelreservationsystem'}
|
||||
{l s='Children'}
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input id="num_child" type="text" name="num_child" class="form-control" {if isset($htl_room_type)}value="{$htl_room_type['children']}"{/if}>
|
||||
@@ -59,13 +59,13 @@
|
||||
</label>
|
||||
</th>
|
||||
<th class="col-sm-2 center">
|
||||
<span>{l s='Floor' mod='hotelreservationsystem'}</span>
|
||||
<span>{l s='Floor'}</span>
|
||||
</th>
|
||||
<th class="col-sm-2">
|
||||
<span>{l s='Status' mod='hotelreservationsystem'}</span>
|
||||
<span>{l s='Status'}</span>
|
||||
</th>
|
||||
<th class="col-sm-6 center">
|
||||
<span>{l s='Extra Information' mod='hotelreservationsystem'}</span>
|
||||
<span>{l s='Extra Information'}</span>
|
||||
</th>
|
||||
</tr>
|
||||
{if isset($htl_room_info) && $htl_room_info}
|
||||
@@ -85,7 +85,7 @@
|
||||
</select>
|
||||
</td>
|
||||
<td class="center col-sm-6">
|
||||
<a class="btn btn-default deactiveDatesModal" data-toggle="modal" data-target="#deactiveDatesModal" {if $info['id_status'] != 3 }style="display: none;"{/if}>{if $info['id_status'] != 3 }{l s='Add Dates' mod='hotelreservationsystem'}{else}{l s='View Dates' mod='hotelreservationsystem'}{/if}
|
||||
<a class="btn btn-default deactiveDatesModal" data-toggle="modal" data-target="#deactiveDatesModal" {if $info['id_status'] != 3 }style="display: none;"{/if}>{if $info['id_status'] != 3 }{l s='Add Dates'}{else}{l s='View Dates'}{/if}
|
||||
</a>
|
||||
<input type="text" class="form-control room_comment" value="{$info['comment']}" name="room_comment[]" {if $info['id_status'] == 3 }style="display: none;"{/if}>
|
||||
<input type="hidden" class="form-control disableDatesJSON" name="disableDatesJSON[]" {if $info['id_status'] == 3}value="{$info['disabled_dates_json']|escape:'html':'UTF-8'}"{/if}>
|
||||
@@ -114,11 +114,16 @@
|
||||
</td>
|
||||
<td class="center col-sm-6">
|
||||
<a class="deactiveDatesModal" data-toggle="modal" data-target="#deactiveDatesModal" style="display: none;">
|
||||
{l s='add Dates' mod='hotelreservationsystem'}
|
||||
{l s='add Dates'}
|
||||
</a>
|
||||
<input type="hidden" class="form-control disableDatesJSON" name="disableDatesJSON" value="0">
|
||||
<input type="text" class="form-control room_comment" name="room_comment[]">
|
||||
</td>
|
||||
{if $k == 1}
|
||||
<td class="center col-sm-1">
|
||||
<a href="#" class="remove-rooms-button btn btn-default"><i class="icon-trash"></i></a>
|
||||
</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/for}
|
||||
{/if}
|
||||
@@ -128,7 +133,7 @@
|
||||
<div class="col-sm-12">
|
||||
<button id="add-more-rooms-button" class="btn btn-default" type="button" data-size="s" data-style="expand-right">
|
||||
<i class="icon-folder-open"></i>
|
||||
{l s='Add More Rooms' mod='hotelreservationsystem'}
|
||||
{l s='Add More Rooms'}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -158,7 +163,7 @@
|
||||
<button type="button" class="close margin-right-10" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h4 class="modal-title"><i class="icon-calendar"></i> {l s='Disable dates' mod='hotelreservationsystem'}</h4>
|
||||
<h4 class="modal-title"><i class="icon-calendar"></i> {l s='Disable dates'}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="from-group table-responsive-row clearfix">
|
||||
@@ -166,13 +171,13 @@
|
||||
<thead>
|
||||
<tr class="nodrag nodrop">
|
||||
<th class="col-sm-1 center">
|
||||
<span>{l s='Date From' mod='hotelreservationsystem'}</span>
|
||||
<span>{l s='Date From'}</span>
|
||||
</th>
|
||||
<th class="col-sm-2 center">
|
||||
<span>{l s='Date To' mod='hotelreservationsystem'}</span>
|
||||
<span>{l s='Date To'}</span>
|
||||
</th>
|
||||
<th class="col-sm-2 center">
|
||||
<span>{l s='Reason' mod='hotelreservationsystem'}</span>
|
||||
<span>{l s='Reason'}</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -181,13 +186,13 @@
|
||||
</table>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12">
|
||||
<a href="#" class="add_more_room_disable_dates btn btn-default"><i class="icon icon-plus"></i>{l s="Add More" mod='hotelreservationsystem'}</a>
|
||||
<a href="#" class="add_more_room_disable_dates btn btn-default"><i class="icon icon-plus"></i>{l s="Add More"}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default deactiveDatesModalSubmit">{l s='Done' mod='hotelreservationsystem'}</button>
|
||||
<button type="button" class="btn btn-default deactiveDatesModalSubmit">{l s='Done'}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -321,7 +326,7 @@
|
||||
html += '</td>';
|
||||
html += '<td class="center col-sm-6">';
|
||||
html += '<a class="btn btn-default deactiveDatesModal" data-toggle="modal" data-target="#deactiveDatesModal" style="display: none;">';
|
||||
html += "{l s='Add Dates' mod='hotelreservationsystem'}";
|
||||
html += "{l s='Add Dates'}";
|
||||
html += '</a>';
|
||||
html += '<input type="hidden" class="form-control disableDatesJSON" name="disableDatesJSON[]" value="0">';
|
||||
html += '<input type="text" class="form-control room_comment" name="room_comment[]">';
|
||||
@@ -337,7 +342,7 @@
|
||||
// delete room
|
||||
$('.rm_htl_room').on('click',function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var $current = $(this);
|
||||
var id_htl_info = $(this).attr('data-id-htl-info');
|
||||
$.ajax({
|
||||
url: prod_link,
|
||||
@@ -348,15 +353,18 @@
|
||||
action:'deleteHotelRoom',
|
||||
id: id_htl_info,
|
||||
},
|
||||
success: function (result)
|
||||
{
|
||||
if (parseInt(result) == 1)
|
||||
{
|
||||
success: function (result) {
|
||||
if (parseInt(result) == 1) {
|
||||
showSuccessMessage("{l s='Removed successfully'}");
|
||||
}
|
||||
}
|
||||
$current.closest(".room_data_values").remove();
|
||||
} else {
|
||||
showErrorMessage("{l s='Some error occurred'}");
|
||||
}
|
||||
},
|
||||
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
||||
showErrorMessage("{l s='Some error occurred'}");
|
||||
}
|
||||
});
|
||||
$(this).closest(".room_data_values").remove();
|
||||
});
|
||||
|
||||
$(".checkConfigurationClick").on("click", function() {
|
||||
|
||||
@@ -155,7 +155,7 @@ $(document).ready(function () {
|
||||
</script>
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<select onchange="javascript:calcPrice(); unitPriceWithTax('unit');" name="id_tax_rules_group" id="id_tax_rules_group" {if $tax_exclude_taxe_option}disabled="disabled"{/if} >
|
||||
<select onchange="javascript:calcPrice(); {*unitPriceWithTax('unit');*}" name="id_tax_rules_group" id="id_tax_rules_group" {if $tax_exclude_taxe_option}disabled="disabled"{/if} >
|
||||
<option value="0">{l s='No Tax'}</option>
|
||||
{foreach from=$tax_rules_groups item=tax_rules_group}
|
||||
<option value="{$tax_rules_group.id_tax_rules_group}" {if $product->getIdTaxRulesGroup() == $tax_rules_group.id_tax_rules_group}selected="selected"{/if} >
|
||||
@@ -202,8 +202,8 @@ $(document).ready(function () {
|
||||
</div>
|
||||
{if isset($pack) && $pack->isPack($product->id)}<p class="col-lg-9 col-lg-offset-3 help-block">{l s='The sum of prices of the room types in the pack is %s%s%s' sprintf=[$currency->prefix,{toolsConvertPrice price=$pack->noPackPrice($product->id)|string_format:$priceDisplayPrecisionFormat},$currency->suffix]}</p>{/if}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{* As no use in QloApps currently so commented *}
|
||||
{* <div class="form-group">
|
||||
<div class="col-lg-1"><span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="unit_price" type="unit_price"}</span></div>
|
||||
<label class="control-label col-lg-2" for="unit_price">
|
||||
<span class="label-tooltip" data-toggle="tooltip" title="{l s='When selling a pack of items, you can indicate the unit price for each item of the pack. For instance, "per bottle" or "per pound".'}">{l s='Unit price (tax excl.)'}</span>
|
||||
@@ -216,7 +216,7 @@ $(document).ready(function () {
|
||||
<input id="unity" name="unity" type="text" value="{$product->unity|htmlentitiesUTF8}" maxlength="255" onkeyup="if (isArrowKey(event)) return ;unitySecond();" onchange="unitySecond();"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> *}
|
||||
{if isset($product->unity) && $product->unity}
|
||||
<div class="form-group">
|
||||
<div class="col-lg-9 col-lg-offset-3">
|
||||
@@ -712,7 +712,7 @@ $(document).ready(function () {
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{l s='Rule'}</th>
|
||||
<th>{l s='Combination'}</th>
|
||||
{* <th>{l s='Combination'}</th> *}
|
||||
{if $multi_shop}<th>{l s='Shop'}</th>{/if}
|
||||
<th>{l s='Currency'}</th>
|
||||
<th>{l s='Country'}</th>
|
||||
@@ -735,7 +735,7 @@ $(document).ready(function () {
|
||||
$(document).ready(function() {
|
||||
delete_price_rule = '{l s="Do you really want to remove this price rule?"}';
|
||||
calcPriceTI();
|
||||
unitPriceWithTax('unit');
|
||||
});
|
||||
//unitPriceWithTax('unit');
|
||||
});
|
||||
</script>
|
||||
{/if}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<div id="footer" class="bootstrap hide">
|
||||
|
||||
<div class="col-sm-2 hidden-xs">
|
||||
<a href="https://webkul.com/" class="_blank">Webkul™</a>
|
||||
<a href="https://webkul.com" class="_blank">Webkul™</a>
|
||||
-
|
||||
<span id="footer-load-time"><i class="icon-time" title="{l s='Load time: '}"></i> {number_format(microtime(true) - $timer_start, 3, '.', '')}s</span>
|
||||
</div>
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
|
||||
{$header}
|
||||
{$content}
|
||||
{$footer}
|
||||
|
||||
|
||||
@@ -1753,9 +1753,8 @@ class CartCore extends ObjectModel
|
||||
|
||||
// price of extra demands on room type in the cart
|
||||
if ($type == Cart::BOTH || $type == Cart::BOTH_WITHOUT_SHIPPING) {
|
||||
if ($totalDemandsPrice = $objCartBookingData->getCartExtraDemands($this->id, 0, 0, 0, 0, 1)) {
|
||||
$order_total += $totalDemandsPrice;
|
||||
}
|
||||
$totalDemandsPrice = $objCartBookingData->getCartExtraDemands($this->id, 0, 0, 0, 0, 1, 0, (int)$with_taxes);
|
||||
$order_total += $totalDemandsPrice;
|
||||
}
|
||||
|
||||
return Tools::ps_round((float)$order_total, $compute_precision);
|
||||
@@ -2077,6 +2076,45 @@ class CartCore extends ObjectModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Step 6 : Break $package_list hotel wise
|
||||
$orderPackage = array();
|
||||
$objRoomType = new HotelRoomType();
|
||||
foreach ($final_package_list as $id_address => $packages) {
|
||||
foreach ($packages as $id_package => $package) {
|
||||
foreach ($package['product_list'] as $product) {
|
||||
$productInfo = $objRoomType->getRoomTypeInfoByIdProduct($product['id_product']);
|
||||
$idHotel = $productInfo['id_hotel'] ? $productInfo['id_hotel'] : 0;
|
||||
|
||||
$orderPackage[$id_address][$idHotel]['product_list'][] = $product;
|
||||
if (!isset($orderPackage[$id_address][$idHotel]['carrier_list'])) {
|
||||
$orderPackage[$id_address][$idHotel]['carrier_list'] = $product['carrier_list'];
|
||||
} else {
|
||||
$orderPackage[$id_address][$idHotel]['carrier_list'] = array_intersect($orderPackage[$id_address][$idHotel]['carrier_list'], $product['carrier_list']);
|
||||
}
|
||||
if (!isset($orderPackage[$id_address][$idHotel]['warehouse_list'])) {
|
||||
$orderPackage[$id_address][$idHotel]['warehouse_list'] = $package['warehouse_list'];
|
||||
}
|
||||
if (!isset($orderPackage[$id_address][$idHotel]['id_warehouse'])) {
|
||||
$orderPackage[$id_address][$idHotel]['id_warehouse'] = $package['id_warehouse'];
|
||||
}
|
||||
if (isset($package['id_carrier'])) {
|
||||
if (!isset($orderPackage[$id_address][$idHotel]['id_carrier'])) {
|
||||
$orderPackage[$id_address][$idHotel]['id_carrier'] = $package['id_carrier'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$hotelWisePackageList = array();
|
||||
foreach ($orderPackage as $id_address => $packageByAddress) {
|
||||
foreach ($packageByAddress as $id_package => $package) {
|
||||
$hotelWisePackageList[$id_address][] = $package;
|
||||
}
|
||||
}
|
||||
$final_package_list = $hotelWisePackageList;
|
||||
// END $package_list hotel wise
|
||||
|
||||
$cache[$cache_key] = $final_package_list;
|
||||
return $final_package_list;
|
||||
}
|
||||
@@ -3246,7 +3284,27 @@ class CartCore extends ObjectModel
|
||||
$total_products = $this->getOrderTotal(false, Cart::ONLY_PRODUCTS);
|
||||
$total_discounts = $this->getOrderTotal(true, Cart::ONLY_DISCOUNTS);
|
||||
$total_discounts_tax_exc = $this->getOrderTotal(false, Cart::ONLY_DISCOUNTS);
|
||||
|
||||
$objCartBookingData = new HotelCartBookingData();
|
||||
$totalDemandsWT = $objCartBookingData->getCartExtraDemands(
|
||||
$this->id,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1
|
||||
);
|
||||
$totalDemandsTaxExcl = $objCartBookingData->getCartExtraDemands(
|
||||
$this->id,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
);
|
||||
// The cart content is altered for display
|
||||
foreach ($cart_rules as &$cart_rule) {
|
||||
// If the cart rule is automatic (wihtout any code) and include free shipping, it should not be displayed as a cart rule but only set the shipping cost to 0
|
||||
@@ -3332,6 +3390,8 @@ class CartCore extends ObjectModel
|
||||
'total_shipping_tax_exc' => $total_shipping_tax_exc,
|
||||
'total_products_wt' => $total_products_wt,
|
||||
'total_products' => $total_products,
|
||||
'total_extra_demands_wt' => $totalDemandsWT,
|
||||
'total_extra_demands_tax_exc' => $totalDemandsTaxExcl,
|
||||
'total_price' => $base_total_tax_inc,
|
||||
'total_tax' => $total_tax,
|
||||
'total_price_without_tax' => $base_total_tax_exc,
|
||||
|
||||
@@ -433,11 +433,10 @@ class CategoryCore extends ObjectModel
|
||||
}
|
||||
$right = (int)$n++;
|
||||
|
||||
Db::getInstance()->execute(
|
||||
'UPDATE '._DB_PREFIX_.'category
|
||||
SET nleft = '.(int)$left.', nright = '.(int)$right.'
|
||||
WHERE id_category = '.(int)$id_category.' LIMIT 1'
|
||||
);
|
||||
Db::getInstance()->execute('
|
||||
UPDATE '._DB_PREFIX_.'category
|
||||
SET nleft = '.(int)$left.', nright = '.(int)$right.'
|
||||
WHERE id_category = '.(int)$id_category.' LIMIT 1');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -41,7 +41,7 @@ class FeatureCore extends ObjectModel
|
||||
'position' => array('type' => self::TYPE_INT, 'validate' => 'isInt'),
|
||||
|
||||
/* Lang fields */
|
||||
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),
|
||||
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
@@ -418,8 +418,15 @@ class HookCore extends ObjectModel
|
||||
*
|
||||
* @return string/array modules output
|
||||
*/
|
||||
public static function exec($hook_name, $hook_args = array(), $id_module = null, $array_return = false, $check_exceptions = true, $use_push = false, $id_shop = null)
|
||||
{
|
||||
public static function exec(
|
||||
$hook_name,
|
||||
$hook_args = array(),
|
||||
$id_module = null,
|
||||
$array_return = false,
|
||||
$check_exceptions = true,
|
||||
$use_push = false,
|
||||
$id_shop = null
|
||||
) {
|
||||
if (defined('PS_INSTALLATION_IN_PROGRESS')) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -370,7 +370,15 @@ abstract class PaymentModuleCore extends Module
|
||||
// We don't use the following condition to avoid the float precision issues : http://www.php.net/manual/en/language.types.float.php
|
||||
// if ($order->total_paid != $order->total_paid_real)
|
||||
// We use number_format in order to compare two string
|
||||
if ($order_status->logable && number_format($cart_total_paid, _PS_PRICE_COMPUTE_PRECISION_) != number_format($amount_paid, _PS_PRICE_COMPUTE_PRECISION_)) {
|
||||
if (Configuration::get('WK_ALLOW_ADVANCED_PAYMENT')) {
|
||||
$objCustAdv = new HotelCustomerAdvancedPayment();
|
||||
$advOrderTotal = $objCustAdv->getOrdertTotal($this->context->cart->id, $this->context->cart->id_guest);
|
||||
// if customer is paying advance payment amount
|
||||
if ($order_status->logable && number_format($advOrderTotal, _PS_PRICE_COMPUTE_PRECISION_) != number_format($amount_paid, _PS_PRICE_COMPUTE_PRECISION_)) {
|
||||
$id_order_state = Configuration::get('PS_OS_ERROR');
|
||||
}
|
||||
} elseif ($order_status->logable && number_format($cart_total_paid, _PS_PRICE_COMPUTE_PRECISION_) != number_format($amount_paid, _PS_PRICE_COMPUTE_PRECISION_)) {
|
||||
// if customer is paying full payment amount
|
||||
$id_order_state = Configuration::get('PS_OS_ERROR');
|
||||
}
|
||||
|
||||
@@ -440,11 +448,14 @@ abstract class PaymentModuleCore extends Module
|
||||
|
||||
// Make sure CartRule caches are empty
|
||||
CartRule::cleanCache();
|
||||
$objRoomType = new HotelRoomType();
|
||||
foreach ($order_detail_list as $key => $order_detail) {
|
||||
/** @var OrderDetail $order_detail */
|
||||
|
||||
$order = $order_list[$key];
|
||||
if (!$order_creation_failed && isset($order->id)) {
|
||||
// first set if_hotel as 0 and get the hotel id from room type info -> below
|
||||
$idHotel = 0;
|
||||
if (!$secure_key) {
|
||||
$message .= '<br />'.Tools::displayError('Warning: the secure key is empty, check your payment account before validation');
|
||||
}
|
||||
@@ -519,6 +530,12 @@ abstract class PaymentModuleCore extends Module
|
||||
if (!$product['is_virtual']) {
|
||||
$virtual_product &= false;
|
||||
}
|
||||
// If id_hotel is not available then find id_hotel for sending mails hotel wise
|
||||
if (!$idHotel) {
|
||||
if ($roomDetail = $objRoomType->getRoomTypeInfoByIdProduct((int)$product['id_product'])) {
|
||||
$idHotel = $roomDetail['id_hotel'];
|
||||
}
|
||||
}
|
||||
} // end foreach ($products)
|
||||
|
||||
$product_list_txt = '';
|
||||
@@ -728,6 +745,8 @@ abstract class PaymentModuleCore extends Module
|
||||
$cart_booking_data_text = $this->getEmailTemplateContent('hotel-booking-cart-data.text', Mail::TYPE_TEXT, $cart_booking_data['cart_htl_data']);
|
||||
$cart_booking_data_html = $this->getEmailTemplateContent('hotel-booking-cart-data.tpl', Mail::TYPE_HTML, $cart_booking_data['cart_htl_data']);
|
||||
|
||||
$extra_demands_details_html = $this->getEmailTemplateContent('booking_extra_demands.tpl', Mail::TYPE_HTML, $cart_booking_data['cart_htl_data']);
|
||||
|
||||
//For Advanced Payment
|
||||
$obj_customer_adv = new HotelCustomerAdvancedPayment();
|
||||
$order_adv_dtl = $obj_customer_adv->getCstAdvPaymentDtlByIdOrder($order->id);
|
||||
@@ -743,69 +762,68 @@ abstract class PaymentModuleCore extends Module
|
||||
$adv_data_text = $this->getEmailTemplateContent('advanced-book-data.txt', Mail::TYPE_TEXT, $order_adv_dtl);
|
||||
|
||||
$data = array(
|
||||
'{adv_data_html}' => $adv_data_html,//by webkul
|
||||
'{adv_data_text}' => $adv_data_text,//by webkul
|
||||
'{cart_booking_data_html}' => $cart_booking_data_html,//by webkul
|
||||
'{total_demands_price}' => Tools::displayPrice(
|
||||
$cart_booking_data['total_extra_demads'],
|
||||
$this->context->currency,
|
||||
false
|
||||
),//by webkul
|
||||
'{firstname}' => $this->context->customer->firstname,
|
||||
'{lastname}' => $this->context->customer->lastname,
|
||||
'{email}' => $this->context->customer->email,
|
||||
'{delivery_block_txt}' => $this->_getFormatedAddress($delivery, "\n"),
|
||||
'{invoice_block_txt}' => $this->_getFormatedAddress($invoice, "\n"),
|
||||
'{delivery_block_html}' => $this->_getFormatedAddress($delivery, '<br />', array(
|
||||
'firstname' => '<span style="font-weight:bold;">%s</span>',
|
||||
'lastname' => '<span style="font-weight:bold;">%s</span>'
|
||||
)),
|
||||
'{invoice_block_html}' => $this->_getFormatedAddress($invoice, '<br />', array(
|
||||
'{adv_data_html}' => $adv_data_html,//by webkul
|
||||
'{adv_data_text}' => $adv_data_text,//by webkul
|
||||
'{cart_booking_data_html}' => $cart_booking_data_html,//by webkul
|
||||
'{extra_demands_details_html}' => $extra_demands_details_html,//by webkul
|
||||
'{total_extra_demands_te}' => Tools::displayPrice(
|
||||
$cart_booking_data['total_extra_demands_te'],
|
||||
$this->context->currency,
|
||||
false
|
||||
),
|
||||
'{extra_demands_tax}' => Tools::displayPrice(
|
||||
($cart_booking_data['total_extra_demands_ti']-$cart_booking_data['total_extra_demands_te']),
|
||||
$this->context->currency,
|
||||
false
|
||||
),
|
||||
'{delivery_block_txt}' => $this->_getFormatedAddress($delivery, "\n"),
|
||||
'{invoice_block_txt}' => $this->_getFormatedAddress($invoice, "\n"),
|
||||
'{delivery_block_html}' => $this->_getFormatedAddress($delivery, '<br />', array(
|
||||
'firstname' => '<span style="font-weight:bold;">%s</span>',
|
||||
'lastname' => '<span style="font-weight:bold;">%s</span>'
|
||||
)),
|
||||
'{delivery_company}' => $delivery->company,
|
||||
'{delivery_firstname}' => $delivery->firstname,
|
||||
'{delivery_lastname}' => $delivery->lastname,
|
||||
'{delivery_address1}' => $delivery->address1,
|
||||
'{delivery_address2}' => $delivery->address2,
|
||||
'{delivery_city}' => $delivery->city,
|
||||
'{delivery_postal_code}' => $delivery->postcode,
|
||||
'{delivery_country}' => $delivery->country,
|
||||
'{delivery_state}' => $delivery->id_state ? $delivery_state->name : '',
|
||||
'{delivery_phone}' => ($delivery->phone) ? $delivery->phone : $delivery->phone_mobile,
|
||||
'{delivery_other}' => $delivery->other,
|
||||
'{invoice_company}' => $invoice->company,
|
||||
'{invoice_vat_number}' => $invoice->vat_number,
|
||||
'{invoice_firstname}' => $invoice->firstname,
|
||||
'{invoice_lastname}' => $invoice->lastname,
|
||||
'{invoice_address2}' => $invoice->address2,
|
||||
'{invoice_address1}' => $invoice->address1,
|
||||
'{invoice_city}' => $invoice->city,
|
||||
'{invoice_postal_code}' => $invoice->postcode,
|
||||
'{invoice_country}' => $invoice->country,
|
||||
'{invoice_state}' => $invoice->id_state ? $invoice_state->name : '',
|
||||
'{invoice_phone}' => ($invoice->phone) ? $invoice->phone : $invoice->phone_mobile,
|
||||
'{invoice_other}' => $invoice->other,
|
||||
'{order_name}' => $order->getUniqReference(),
|
||||
'{date}' => Tools::displayDate(date('Y-m-d H:i:s'), null, 1),
|
||||
'{carrier}' => ($virtual_product || !isset($carrier->name)) ? Tools::displayError('No carrier') : $carrier->name,
|
||||
'{payment}' => Tools::substr($order->payment, 0, 32),
|
||||
'{products}' => $product_list_html,
|
||||
'{products_txt}' => $product_list_txt,
|
||||
'{discounts}' => $cart_rules_list_html,
|
||||
'{discounts_txt}' => $cart_rules_list_txt,
|
||||
'{total_extra_demands}' => Tools::displayPrice(
|
||||
$cart_booking_data['total_extra_demads'],
|
||||
$this->context->currency,
|
||||
false
|
||||
),
|
||||
'{total_paid}' => Tools::displayPrice($order->total_paid, $this->context->currency, false),
|
||||
'{total_products}' => Tools::displayPrice(Product::getTaxCalculationMethod() == PS_TAX_EXC ? $order->total_products : $order->total_products_wt, $this->context->currency, false),
|
||||
'{total_discounts}' => Tools::displayPrice($order->total_discounts, $this->context->currency, false),
|
||||
'{total_shipping}' => Tools::displayPrice($order->total_shipping, $this->context->currency, false),
|
||||
'{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $this->context->currency, false),
|
||||
'{total_tax_paid}' => Tools::displayPrice(($order->total_products_wt - $order->total_products) + ($order->total_shipping_tax_incl - $order->total_shipping_tax_excl), $this->context->currency, false));
|
||||
)),
|
||||
'{invoice_block_html}' => $this->_getFormatedAddress($invoice, '<br />', array(
|
||||
'firstname' => '<span style="font-weight:bold;">%s</span>',
|
||||
'lastname' => '<span style="font-weight:bold;">%s</span>'
|
||||
)),
|
||||
'{delivery_company}' => $delivery->company,
|
||||
'{delivery_firstname}' => $delivery->firstname,
|
||||
'{delivery_lastname}' => $delivery->lastname,
|
||||
'{delivery_address1}' => $delivery->address1,
|
||||
'{delivery_address2}' => $delivery->address2,
|
||||
'{delivery_city}' => $delivery->city,
|
||||
'{delivery_postal_code}' => $delivery->postcode,
|
||||
'{delivery_country}' => $delivery->country,
|
||||
'{delivery_state}' => $delivery->id_state ? $delivery_state->name : '',
|
||||
'{delivery_phone}' => ($delivery->phone) ? $delivery->phone : $delivery->phone_mobile,
|
||||
'{delivery_other}' => $delivery->other,
|
||||
'{invoice_company}' => $invoice->company,
|
||||
'{invoice_vat_number}' => $invoice->vat_number,
|
||||
'{invoice_firstname}' => $invoice->firstname,
|
||||
'{invoice_lastname}' => $invoice->lastname,
|
||||
'{invoice_address2}' => $invoice->address2,
|
||||
'{invoice_address1}' => $invoice->address1,
|
||||
'{invoice_city}' => $invoice->city,
|
||||
'{invoice_postal_code}' => $invoice->postcode,
|
||||
'{invoice_country}' => $invoice->country,
|
||||
'{invoice_state}' => $invoice->id_state ? $invoice_state->name : '',
|
||||
'{invoice_phone}' => ($invoice->phone) ? $invoice->phone : $invoice->phone_mobile,
|
||||
'{invoice_other}' => $invoice->other,
|
||||
'{order_name}' => $order->getUniqReference(),
|
||||
'{date}' => Tools::displayDate(date('Y-m-d H:i:s'), null, 1),
|
||||
'{carrier}' => ($virtual_product || !isset($carrier->name)) ? Tools::displayError('No carrier') : $carrier->name,
|
||||
'{payment}' => Tools::substr($order->payment, 0, 32),
|
||||
'{products}' => $product_list_html,
|
||||
'{products_txt}' => $product_list_txt,
|
||||
'{discounts}' => $cart_rules_list_html,
|
||||
'{discounts_txt}' => $cart_rules_list_txt,
|
||||
'{total_paid}' => Tools::displayPrice($order->total_paid, $this->context->currency, false),
|
||||
'{total_products}' => Tools::displayPrice(Product::getTaxCalculationMethod() == PS_TAX_EXC ? $order->total_products : $order->total_products_wt, $this->context->currency, false),
|
||||
'{total_discounts}' => Tools::displayPrice($order->total_discounts, $this->context->currency, false),
|
||||
'{total_shipping}' => Tools::displayPrice($order->total_shipping, $this->context->currency, false),
|
||||
'{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $this->context->currency, false),
|
||||
'{total_tax_paid}' => Tools::displayPrice(($order->total_products_wt - $order->total_products) + ($order->total_shipping_tax_incl - $order->total_shipping_tax_excl), $this->context->currency, false)
|
||||
);
|
||||
|
||||
if (is_array($extra_vars)) {
|
||||
$data = array_merge($data, $extra_vars);
|
||||
@@ -827,19 +845,108 @@ abstract class PaymentModuleCore extends Module
|
||||
PrestaShopLogger::addLog('PaymentModule::validateOrder - Mail is about to be sent', 1, null, 'Cart', (int)$id_cart, true);
|
||||
}
|
||||
|
||||
if (Validate::isEmail($this->context->customer->email)) {
|
||||
Mail::Send(
|
||||
(int)$order->id_lang,
|
||||
'order_conf',
|
||||
Mail::l('Order confirmation', (int)$order->id_lang),
|
||||
$data,
|
||||
$this->context->customer->email,
|
||||
$this->context->customer->firstname.' '.$this->context->customer->lastname,
|
||||
null,
|
||||
null,
|
||||
$file_attachement,
|
||||
null, _PS_MAIL_DIR_, false, (int)$order->id_shop
|
||||
);
|
||||
// Send order confirmation mails to the reciepients according to the order mail configuration
|
||||
if (Configuration::get('PS_ORDER_CONF_MAIL_TO_CUSTOMER')){
|
||||
if (Validate::isEmail($this->context->customer->email)) {
|
||||
// send customer information
|
||||
$data['{firstname}'] = $this->context->customer->firstname;
|
||||
$data['{lastname}'] = $this->context->customer->lastname;
|
||||
$data['{email}'] = $this->context->customer->email;
|
||||
Mail::Send(
|
||||
(int)$order->id_lang,
|
||||
'order_conf',
|
||||
Mail::l('Order confirmation', (int)$order->id_lang),
|
||||
$data,
|
||||
$this->context->customer->email,
|
||||
$this->context->customer->firstname.' '.$this->context->customer->lastname,
|
||||
null,
|
||||
null,
|
||||
$file_attachement,
|
||||
null, _PS_MAIL_DIR_, false, (int)$order->id_shop
|
||||
);
|
||||
}
|
||||
}
|
||||
if (Configuration::get('PS_ORDER_CONF_MAIL_TO_SUPERADMIN')){
|
||||
// send superadmin information
|
||||
if (Validate::isLoadedObject($superAdmin = new Employee(_PS_ADMIN_PROFILE_))) {
|
||||
if (Validate::isEmail($superAdmin->email)) {
|
||||
$data['{customer_name}'] = $this->context->customer->firstname.' '.$this->context->customer->lastname;
|
||||
$data['{customer_email}'] = $this->context->customer->email;
|
||||
$data['{firstname}'] = $superAdmin->firstname;
|
||||
$data['{lastname}'] = $superAdmin->lastname;
|
||||
$data['{email}'] = $superAdmin->email;
|
||||
Mail::Send(
|
||||
(int)$order->id_lang,
|
||||
'order_conf_admin',
|
||||
Mail::l('Order confirmation', (int)$order->id_lang),
|
||||
$data,
|
||||
$superAdmin->email,
|
||||
$superAdmin->firstname.' '.$superAdmin->lastname,
|
||||
null,
|
||||
null,
|
||||
$file_attachement,
|
||||
null, _PS_MAIL_DIR_, false, (int)$order->id_shop
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($idHotel
|
||||
&& Validate::isLoadedObject($objHotel = new HotelBranchInformation($idHotel))
|
||||
) {
|
||||
if (Configuration::get('PS_ORDER_CONF_MAIL_TO_HOTEL_MANAGER')){
|
||||
// send hotel information
|
||||
$data['{firstname}'] = '';
|
||||
$data['{lastname}'] = '';
|
||||
$data['{email}'] = $objHotel->email;
|
||||
$data['{customer_name}'] = $this->context->customer->firstname.' '.$this->context->customer->lastname;
|
||||
$data['{customer_email}'] = $this->context->customer->email;
|
||||
if (Validate::isEmail($objHotel->email)) {
|
||||
Mail::Send(
|
||||
(int)$order->id_lang,
|
||||
'order_conf_admin',
|
||||
Mail::l('Order confirmation', (int)$order->id_lang),
|
||||
$data,
|
||||
$objHotel->email,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
$file_attachement,
|
||||
null, _PS_MAIL_DIR_, false, (int)$order->id_shop
|
||||
);
|
||||
}
|
||||
}
|
||||
if (Configuration::get('PS_ORDER_CONF_MAIL_TO_EMPLOYEE')){
|
||||
if ($htlAccesses = $objHotel->getHotelAccess($idHotel)) {
|
||||
$data['{customer_name}'] = $this->context->customer->firstname.' '.$this->context->customer->lastname;
|
||||
$data['{customer_email}'] = $this->context->customer->email;
|
||||
foreach ($htlAccesses as $access) {
|
||||
if ($access['id_profile'] != _PS_ADMIN_PROFILE_) {
|
||||
if ($htlEmployees = Employee::getEmployeesByProfile($access['id_profile'])) {
|
||||
foreach ($htlEmployees as $empl) {
|
||||
if (Validate::isEmail($empl['email'])) {
|
||||
// send hotel manager (employee) have permission for this hotel
|
||||
$data['{firstname}'] = $empl['firstname'];
|
||||
$data['{lastname}'] = $empl['lastname'];
|
||||
$data['{email}'] = $empl['email'];
|
||||
Mail::Send(
|
||||
(int)$order->id_lang,
|
||||
'order_conf_admin',
|
||||
Mail::l('Order confirmation', (int)$order->id_lang),
|
||||
$data,
|
||||
$empl['email'],
|
||||
$empl['firstname'].' '.$empl['lastname'],
|
||||
null,
|
||||
null,
|
||||
$file_attachement,
|
||||
null, _PS_MAIL_DIR_, false, (int)$order->id_shop
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1077,7 +1184,8 @@ abstract class PaymentModuleCore extends Module
|
||||
$obj_htl_bk_dtl = new HotelBookingDetail();
|
||||
$obj_rm_type = new HotelRoomType();
|
||||
$objBookingDemand = new HotelBookingDemands();
|
||||
$totalDemandsPrice = 0;
|
||||
$result['total_extra_demands_te'] = 0;
|
||||
$result['total_extra_demands_ti'] = 0;
|
||||
$cart_htl_data = array();
|
||||
if (!empty($products)) {
|
||||
foreach ($products as $type_key => $type_value) {
|
||||
@@ -1132,13 +1240,24 @@ abstract class PaymentModuleCore extends Module
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to']
|
||||
);
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order->id,
|
||||
$type_value['product_id'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
0
|
||||
);
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order->id,
|
||||
$type_value['product_id'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
} else {
|
||||
@@ -1162,22 +1281,33 @@ abstract class PaymentModuleCore extends Module
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to']
|
||||
);
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order->id,
|
||||
$type_value['product_id'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
0
|
||||
);
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order->id,
|
||||
$type_value['product_id'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
$totalDemandsPrice += $cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price'];
|
||||
$result['total_extra_demands_te'] += $cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_te'];
|
||||
$result['total_extra_demands_ti'] += $cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$result['cart_htl_data'] = $cart_htl_data;
|
||||
$result['total_extra_demads'] = $totalDemandsPrice;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -178,7 +178,7 @@ class ThemeCore extends ObjectModel
|
||||
|
||||
if (file_exists(_PS_ROOT_DIR_.'/config/xml/themes/'.$theme->directory.'.xml')) {
|
||||
$config_file = _PS_ROOT_DIR_.'/config/xml/themes/'.$theme->directory.'.xml';
|
||||
} elseif ($theme->name == 'hotel-theme') {
|
||||
} elseif ($theme->name == 'hotel-reservation-theme') {
|
||||
$config_file = _PS_ROOT_DIR_.'/config/xml/themes/default.xml';
|
||||
} else {
|
||||
$config_file = false;
|
||||
@@ -197,7 +197,7 @@ class ThemeCore extends ObjectModel
|
||||
$theme_arr['author_'.$key] = (string)$value;
|
||||
}
|
||||
|
||||
if ($theme_arr['theme_name'] == 'hotel-theme') {
|
||||
if ($theme_arr['theme_name'] == 'hotel-reservation-theme') {
|
||||
$theme_arr['tc'] = Module::isEnabled('wkthemeconfigurator');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
|
||||
class CheckoutCartSummaryStep extends AbstractCheckoutStep
|
||||
{
|
||||
public function __construct() {
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->step_key = 'checkout_rooms_summary';
|
||||
}
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
|
||||
class CheckoutCustomerDetailsStep extends AbstractCheckoutStep
|
||||
{
|
||||
public function __construct() {
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->step_key = 'checkout_customer';
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ class CheckoutPaymentStep extends AbstractCheckoutStep
|
||||
|
||||
public function handleRequest()
|
||||
{
|
||||
if ($this->context->cookie->__get('customer_details_proceeded')) {
|
||||
if ($this->context->cookie->__get('customer_details_proceeded'))
|
||||
{
|
||||
$this->step_is_reachable = 1;
|
||||
$this->step_is_current = 1;
|
||||
$this->step_is_complete = 0;
|
||||
|
||||
@@ -487,6 +487,34 @@ class AdminControllerCore extends Controller
|
||||
}
|
||||
$this->tabAccess = Profile::getProfileAccess($this->context->employee->id_profile, $this->id);
|
||||
|
||||
if ($this->context->employee->id_profile != _PS_ADMIN_PROFILE_) {
|
||||
// Here we wiil check the query if hotel wise access is available
|
||||
$this->access_query = '';
|
||||
if (isset($this->access_select)) {
|
||||
$this->access_query .= $this->access_select;
|
||||
}
|
||||
if (isset($this->access_join)) {
|
||||
$this->access_query .= $this->access_join;
|
||||
}
|
||||
if (isset($this->access_where)) {
|
||||
$this->access_query .= $this->access_where;
|
||||
} elseif ($this->access_query && (!isset($this->access_where) || !$this->access_where)) {
|
||||
$this->access_query .= ' WHERE 0';
|
||||
}
|
||||
if ($this->access_query) {
|
||||
if (Tools::getValue($this->identifier)) {
|
||||
$this->access_query .= ' AND a.'.$this->identifier.'='.(int) Tools::getValue($this->identifier);
|
||||
if (!Db::getInstance()->executeS($this->access_query)) {
|
||||
$this->tabAccess['view'] = '0';
|
||||
$this->tabAccess['add'] = '0';
|
||||
$this->tabAccess['edit'] = '0';
|
||||
$this->tabAccess['delete'] = '0';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Access control End
|
||||
|
||||
// Fix for homepage
|
||||
if ($this->controller_name == 'AdminDashboard') {
|
||||
$_POST['token'] = $this->token;
|
||||
@@ -548,7 +576,7 @@ class AdminControllerCore extends Controller
|
||||
*/
|
||||
public function initBreadcrumbs($tab_id = null, $tabs = null)
|
||||
{
|
||||
if (is_array($tabs) || count($tabs)) {
|
||||
if (is_array($tabs)) {
|
||||
$tabs = array();
|
||||
}
|
||||
|
||||
@@ -2894,9 +2922,9 @@ class AdminControllerCore extends Controller
|
||||
$this->errors[] = Tools::displayError('You do not have permission to edit this.');
|
||||
}
|
||||
} elseif (Tools::isSubmit('submitAdd'.$this->table)
|
||||
|| Tools::isSubmit('submitAdd'.$this->table.'AndStay')
|
||||
|| Tools::isSubmit('submitAdd'.$this->table.'AndPreview')
|
||||
|| Tools::isSubmit('submitAdd'.$this->table.'AndBackToParent')) {
|
||||
|| Tools::isSubmit('submitAdd'.$this->table.'AndStay')
|
||||
|| Tools::isSubmit('submitAdd'.$this->table.'AndPreview')
|
||||
|| Tools::isSubmit('submitAdd'.$this->table.'AndBackToParent')) {
|
||||
// case 1: updating existing entry
|
||||
if ($this->id_object) {
|
||||
if ($this->tabAccess['edit'] === '1') {
|
||||
@@ -3216,8 +3244,15 @@ class AdminControllerCore extends Controller
|
||||
'.$lang_join.'
|
||||
'.(isset($this->_join) ? $this->_join.' ' : '').'
|
||||
'.$join_shop;
|
||||
$sql_where = ' '.(isset($this->_where) ? $this->_where.' ' : '').($this->deleted ? 'AND a.`deleted` = 0 ' : '').
|
||||
(isset($this->_filter) ? $this->_filter : '').$where_shop.'
|
||||
$sql_where = ' '.(isset($this->_where) ? $this->_where.' ' : '');
|
||||
$sql_where .= ($this->deleted ? 'AND a.`deleted` = 0 ' : '');
|
||||
|
||||
// here add condition of hotel accesses
|
||||
if (isset($this->access_query) && $this->access_query) {
|
||||
$sql_where .= ' AND a.'.$this->identifier.' IN ('.$this->access_query.')';
|
||||
}
|
||||
|
||||
$sql_where .= (isset($this->_filter) ? $this->_filter : '').$where_shop.'
|
||||
'.(isset($this->_group) ? $this->_group.' ' : '').'
|
||||
'.$having_clause;
|
||||
$sql_order_by = ' ORDER BY '.((str_replace('`', '', $order_by) == $this->identifier) ? 'a.' : '').$order_by.' '.pSQL($order_way).
|
||||
|
||||
@@ -315,7 +315,6 @@ class OrderInvoiceCore extends ObjectModel
|
||||
/**
|
||||
* This method returns true if at least one order details uses the
|
||||
* One After Another tax computation method.
|
||||
*
|
||||
* @since 1.5
|
||||
* @return bool
|
||||
*/
|
||||
@@ -323,13 +322,13 @@ class OrderInvoiceCore extends ObjectModel
|
||||
{
|
||||
// if one of the order details use the tax computation method the display will be different
|
||||
return Db::getInstance()->getValue('
|
||||
SELECT od.`tax_computation_method`
|
||||
FROM `'._DB_PREFIX_.'order_detail_tax` odt
|
||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON (od.`id_order_detail` = odt.`id_order_detail`)
|
||||
WHERE od.`id_order` = '.(int)$this->id_order.'
|
||||
AND od.`id_order_invoice` = '.(int)$this->id.'
|
||||
AND od.`tax_computation_method` = '.(int)TaxCalculator::ONE_AFTER_ANOTHER_METHOD)
|
||||
|| Configuration::get('PS_INVOICE_TAXES_BREAKDOWN');
|
||||
SELECT od.`tax_computation_method`
|
||||
FROM `' . _DB_PREFIX_ . 'order_detail_tax` odt
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'order_detail` od ON (od.`id_order_detail` = odt.`id_order_detail`)
|
||||
WHERE od.`id_order` = ' . (int) $this->id_order . '
|
||||
AND od.`id_order_invoice` = ' . (int) $this->id . '
|
||||
AND od.`tax_computation_method` = ' . (int) TaxCalculator::ONE_AFTER_ANOTHER_METHOD)
|
||||
|| Configuration::get('PS_INVOICE_TAXES_BREAKDOWN');
|
||||
}
|
||||
|
||||
public function displayTaxBasesInProductTaxesBreakdown()
|
||||
@@ -360,7 +359,6 @@ class OrderInvoiceCore extends ObjectModel
|
||||
$breakdown = array();
|
||||
|
||||
$details = $order->getProductTaxesDetails();
|
||||
|
||||
if ($sum_composite_taxes) {
|
||||
$grouped_details = array();
|
||||
foreach ($details as $row) {
|
||||
@@ -377,10 +375,8 @@ class OrderInvoiceCore extends ObjectModel
|
||||
$grouped_details[$row['id_order_detail']]['total_tax_base'] += $row['total_tax_base'];
|
||||
$grouped_details[$row['id_order_detail']]['total_amount'] += $row['total_amount'];
|
||||
}
|
||||
|
||||
$details = $grouped_details;
|
||||
}
|
||||
|
||||
foreach ($details as $row) {
|
||||
$rate = sprintf('%.3f', $row['tax_rate']);
|
||||
if (!isset($breakdown[$rate])) {
|
||||
@@ -388,7 +384,7 @@ class OrderInvoiceCore extends ObjectModel
|
||||
'total_price_tax_excl' => 0,
|
||||
'total_amount' => 0,
|
||||
'id_tax' => $row['id_tax'],
|
||||
'rate' =>$rate,
|
||||
'rate' => $rate,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -402,7 +398,68 @@ class OrderInvoiceCore extends ObjectModel
|
||||
}
|
||||
|
||||
ksort($breakdown);
|
||||
return $breakdown;
|
||||
}
|
||||
|
||||
public function getExtraDemandTaxesBreakdown($order = null)
|
||||
{
|
||||
if (!$order) {
|
||||
$order = $this->getOrder();
|
||||
}
|
||||
$breakdown = array();
|
||||
$objBookingDemand = new HotelBookingDemands();
|
||||
$details = $objBookingDemand->getExtraDemandsTaxesDetails($order->id);
|
||||
if (!$this->useOneAfterAnotherTaxComputationMethod()) {
|
||||
$grouped_details = array();
|
||||
foreach ($details as $row) {
|
||||
if (!isset($grouped_details[$row['id_htl_booking']][$row['id_booking_demand']])) {
|
||||
$grouped_details[$row['id_htl_booking']][$row['id_booking_demand']] = array(
|
||||
'tax_rate' => 0,
|
||||
'total_tax_base' => 0,
|
||||
'total_amount' => 0,
|
||||
'id_tax' => $row['id_tax'],
|
||||
);
|
||||
$grouped_details[$row['id_htl_booking']][$row['id_booking_demand']]['total_tax_base'] += $row['total_price_tax_excl'];
|
||||
}
|
||||
$grouped_details[$row['id_htl_booking']][$row['id_booking_demand']]['total_amount'] += $row['total_amount'];
|
||||
$grouped_details[$row['id_htl_booking']][$row['id_booking_demand']]['tax_rate'] += $row['rate'];
|
||||
}
|
||||
$details = $grouped_details;
|
||||
foreach ($details as $detail) {
|
||||
foreach ($detail as $row) {
|
||||
$rate = sprintf('%.3f', $row['tax_rate']);
|
||||
if (!isset($breakdown[$rate])) {
|
||||
$breakdown[$rate] = array(
|
||||
'total_price_tax_excl' => 0,
|
||||
'total_amount' => 0,
|
||||
'id_tax' => $row['id_tax'],
|
||||
'rate' =>$rate,
|
||||
);
|
||||
}
|
||||
$breakdown[$rate]['total_price_tax_excl'] += $row['total_tax_base'];
|
||||
$breakdown[$rate]['total_amount'] += $row['total_amount'];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach ($details as $row) {
|
||||
$rate = sprintf('%.3f', $row['rate']);
|
||||
if (!isset($breakdown[$rate])) {
|
||||
$breakdown[$rate] = array(
|
||||
'total_price_tax_excl' => 0,
|
||||
'total_amount' => 0,
|
||||
'id_tax' => $row['id_tax'],
|
||||
'rate' =>$rate,
|
||||
);
|
||||
}
|
||||
$breakdown[$rate]['total_price_tax_excl'] += $row['total_tax_base'];
|
||||
$breakdown[$rate]['total_amount'] += $row['total_amount'];
|
||||
}
|
||||
}
|
||||
foreach ($breakdown as $rate => $data) {
|
||||
$breakdown[$rate]['total_price_tax_excl'] = Tools::ps_round($data['total_price_tax_excl'], _PS_PRICE_COMPUTE_PRECISION_, $order->round_mode);
|
||||
$breakdown[$rate]['total_amount'] = Tools::ps_round($data['total_amount'], _PS_PRICE_COMPUTE_PRECISION_, $order->round_mode);
|
||||
}
|
||||
ksort($breakdown);
|
||||
return $breakdown;
|
||||
}
|
||||
|
||||
@@ -716,7 +773,7 @@ class OrderInvoiceCore extends ObjectModel
|
||||
$query->innerJoin(
|
||||
'order_invoice_payment',
|
||||
'oip2',
|
||||
'oip2.id_order_payment = oip1.id_order_payment AND oip2.id_order_invoice <> oip1.id_order_invoice AND oip1.id_order = oip2.id_order'
|
||||
'oip2.id_order_payment = oip1.id_order_payment AND oip2.id_order_invoice <> oip1.id_order_invoice AND oip1.id_order = oip2.id_order'
|
||||
);
|
||||
$query->where('oip1.id_order_invoice = '.$this->id);
|
||||
|
||||
|
||||
@@ -284,16 +284,16 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
|
||||
$round_type = null;
|
||||
switch ($this->order->round_type) {
|
||||
case Order::ROUND_TOTAL:
|
||||
$round_type = 'total';
|
||||
$round_type = 'total';
|
||||
break;
|
||||
case Order::ROUND_LINE:
|
||||
$round_type = 'line';
|
||||
$round_type = 'line';
|
||||
break;
|
||||
case Order::ROUND_ITEM:
|
||||
$round_type = 'item';
|
||||
$round_type = 'item';
|
||||
break;
|
||||
default:
|
||||
$round_type = 'line';
|
||||
$round_type = 'line';
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -393,15 +393,27 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to']
|
||||
);
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order_obj->id,
|
||||
$type_value['product_id'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
0
|
||||
);
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order_obj->id,
|
||||
$type_value['product_id'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['num_rm'] += 1;
|
||||
|
||||
$num_days = $cart_htl_data[$type_key]['date_diff'][$date_join]['num_days'];
|
||||
@@ -423,13 +435,24 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to']
|
||||
);
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order_obj->id,
|
||||
$type_value['product_id'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
0
|
||||
);
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order_obj->id,
|
||||
$type_value['product_id'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
|
||||
@@ -447,10 +470,24 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
|
||||
// For order refund
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['stage_name'] = $stage_name;
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['id_room'] = $data_v['id_room'];
|
||||
$totalDemandsPrice += $cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price'];
|
||||
$totalDemandsPriceTE += $cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_te'];
|
||||
$totalDemandsPriceTI += $cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'];
|
||||
}
|
||||
|
||||
// Set tax_code
|
||||
if ($taxes = OrderDetail::getTaxListStatic($data_v['id_order_detail'])) {
|
||||
$tax_temp = array();
|
||||
foreach ($taxes as $tax) {
|
||||
$obj = new Tax($tax['id_tax']);
|
||||
$tax_temp[] = sprintf($this->l('%1$s%2$s%%'), ($obj->rate + 0), '');
|
||||
}
|
||||
$cart_htl_data[$type_key]['order_detail_tax_label'] = implode(', ', $tax_temp);
|
||||
} else {
|
||||
$cart_htl_data[$type_key]['order_detail_tax_label'] = HTMLTemplateInvoice::l('No tax');
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($tax_temp);
|
||||
// For Advanced Payment
|
||||
$obj_customer_adv = new HotelCustomerAdvancedPayment();
|
||||
$order_adv_dtl = $obj_customer_adv->getCstAdvPaymentDtlByIdOrder($order_obj->id);
|
||||
@@ -458,7 +495,8 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
|
||||
$this->smarty->assign('order_adv_dtl', $order_adv_dtl);
|
||||
}
|
||||
// enter extra demands price to the footer total details
|
||||
$footer['total_extra_demands'] = $totalDemandsPrice;
|
||||
$footer['total_extra_demands_ti'] = $totalDemandsPriceTI;
|
||||
$footer['total_extra_demands_te'] = $totalDemandsPriceTE;
|
||||
}
|
||||
}
|
||||
$data = array(
|
||||
@@ -493,6 +531,7 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
|
||||
'addresses_tab' => $this->smarty->fetch($this->getTemplate('invoice.addresses-tab')),
|
||||
'summary_tab' => $this->smarty->fetch($this->getTemplate('invoice.summary-tab')),
|
||||
'product_tab' => $this->smarty->fetch($this->getTemplate('invoice.product-tab')),
|
||||
'extra_demands_tab' => $this->smarty->fetch($this->getTemplate('invoice.extra-demands-tab')),
|
||||
'tax_tab' => $this->getTaxTabContent(),
|
||||
'payment_tab' => $this->smarty->fetch($this->getTemplate('invoice.payment-tab')),
|
||||
'note_tab' => $this->smarty->fetch($this->getTemplate('invoice.note-tab')),
|
||||
@@ -572,6 +611,7 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
|
||||
{
|
||||
$breakdowns = array(
|
||||
'product_tax' => $this->order_invoice->getProductTaxesBreakdown($this->order),
|
||||
'extra_demands_tax' => $this->order_invoice->getExtraDemandTaxesBreakdown($this->order),
|
||||
'shipping_tax' => $this->order_invoice->getShippingTaxesBreakdown($this->order),
|
||||
'ecotax_tax' => $this->order_invoice->getEcoTaxTaxesBreakdown(),
|
||||
'wrapping_tax' => $this->order_invoice->getWrappingTaxesBreakdown(),
|
||||
@@ -593,6 +633,12 @@ class HTMLTemplateInvoiceCore extends HTMLTemplate
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($breakdowns['extra_demands_tax'])) {
|
||||
foreach ($breakdowns['extra_demands_tax'] as &$bd) {
|
||||
$bd['total_tax_excl'] = $bd['total_price_tax_excl'];
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($breakdowns['ecotax_tax'])) {
|
||||
foreach ($breakdowns['ecotax_tax'] as &$bd) {
|
||||
$bd['total_tax_excl'] = $bd['ecotax_tax_excl'];
|
||||
|
||||
@@ -262,4 +262,6 @@ if (!defined('_MEDIA_SERVER_2_')) {
|
||||
}
|
||||
if (!defined('_MEDIA_SERVER_3_')) {
|
||||
define('_MEDIA_SERVER_3_', Configuration::get('PS_MEDIA_SERVER_3'));
|
||||
}
|
||||
}
|
||||
|
||||
require_once (_PS_ROOT_DIR_.'/modules/hotelreservationsystem/define.php');
|
||||
@@ -76,8 +76,14 @@ class AdminAccessControllerCore extends AdminController
|
||||
}
|
||||
}
|
||||
|
||||
// Send all hotels for the permissions of the hotels
|
||||
$objHtlBranchInfo = new HotelBranchInformation();
|
||||
$hotels = $objHtlBranchInfo->hotelBranchesInfo();
|
||||
|
||||
$modules = array();
|
||||
$hotelAccess = array();
|
||||
foreach ($profiles as $profile) {
|
||||
// Get modules accesses by profiles
|
||||
$modules[$profile['id_profile']] = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
|
||||
SELECT ma.`id_module`, m.`name`, ma.`view`, ma.`configure`, ma.`uninstall`
|
||||
FROM '._DB_PREFIX_.'module_access ma
|
||||
@@ -85,7 +91,7 @@ class AdminAccessControllerCore extends AdminController
|
||||
ON ma.id_module = m.id_module
|
||||
WHERE id_profile = '.(int)$profile['id_profile'].'
|
||||
ORDER BY m.name
|
||||
');
|
||||
');
|
||||
foreach ($modules[$profile['id_profile']] as $k => &$module) {
|
||||
$m = Module::getInstanceById($module['id_module']);
|
||||
// the following condition handles invalid modules
|
||||
@@ -95,12 +101,24 @@ class AdminAccessControllerCore extends AdminController
|
||||
unset($modules[$profile['id_profile']][$k]);
|
||||
}
|
||||
}
|
||||
|
||||
uasort($modules[$profile['id_profile']], array($this, 'sortModuleByName'));
|
||||
// End module accesses
|
||||
|
||||
// Get Hotels accesses by profiles
|
||||
foreach ($hotels as $hotelInfo) {
|
||||
$idHotel = $hotelInfo['id'];
|
||||
$hotelAccess[$profile['id_profile']][$idHotel] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(
|
||||
'SELECT * FROM `'._DB_PREFIX_.'htl_access`
|
||||
WHERE `id_profile` = '.(int)$profile['id_profile'].' AND `id_hotel` = '.(int)$idHotel
|
||||
);
|
||||
}
|
||||
// End Hotels accesses
|
||||
}
|
||||
|
||||
$this->fields_form = array('');
|
||||
$this->tpl_form_vars = array(
|
||||
'hotelAccess' => $hotelAccess,
|
||||
'hotels' => $hotels,
|
||||
'profiles' => $profiles,
|
||||
'accesses' => $accesses,
|
||||
'id_tab_parentmodule' => (int)Tab::getIdFromClassName('AdminParentModules'),
|
||||
@@ -132,13 +150,15 @@ class AdminAccessControllerCore extends AdminController
|
||||
$this->initPageHeaderToolbar();
|
||||
|
||||
$this->content .= $this->renderForm();
|
||||
$this->context->smarty->assign(array(
|
||||
'content' => $this->content,
|
||||
'url_post' => self::$currentIndex.'&token='.$this->token,
|
||||
'show_page_header_toolbar' => $this->show_page_header_toolbar,
|
||||
'page_header_toolbar_title' => $this->page_header_toolbar_title,
|
||||
'page_header_toolbar_btn' => $this->page_header_toolbar_btn
|
||||
));
|
||||
$this->context->smarty->assign(
|
||||
array(
|
||||
'content' => $this->content,
|
||||
'url_post' => self::$currentIndex.'&token='.$this->token,
|
||||
'show_page_header_toolbar' => $this->show_page_header_toolbar,
|
||||
'page_header_toolbar_title' => $this->page_header_toolbar_title,
|
||||
'page_header_toolbar_btn' => $this->page_header_toolbar_btn
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function initToolbarTitle()
|
||||
@@ -152,6 +172,37 @@ class AdminAccessControllerCore extends AdminController
|
||||
unset($this->page_header_toolbar_btn['cancel']);
|
||||
}
|
||||
|
||||
public function ajaxProcessUpdateHotelAccess()
|
||||
{
|
||||
if (_PS_MODE_DEMO_) {
|
||||
throw new PrestaShopException(Tools::displayError('This functionality has been disabled.'));
|
||||
}
|
||||
if ($this->tabAccess['edit'] != '1') {
|
||||
throw new PrestaShopException(Tools::displayError('You do not have permission to edit this.'));
|
||||
}
|
||||
|
||||
if (Tools::isSubmit('submitAddHotelAccess')) {
|
||||
$enabled = (int)Tools::getValue('enabled');
|
||||
$idHotel = (int)Tools::getValue('id_hotel');
|
||||
$idProfile = (int)Tools::getValue('id_profile');
|
||||
$where = '`id_hotel`';
|
||||
|
||||
if ($idHotel == -1) {
|
||||
$sql = 'UPDATE `'._DB_PREFIX_.'htl_access`
|
||||
SET `access` = '.(int)$enabled.'
|
||||
WHERE `id_profile` = '.(int)$idProfile;
|
||||
} else {
|
||||
$sql = 'UPDATE `'._DB_PREFIX_.'htl_access`
|
||||
SET `access` = '.(int)$enabled.'
|
||||
WHERE `id_hotel` = '.(int)$idHotel.' AND `id_profile` = '.(int)$idProfile;
|
||||
}
|
||||
|
||||
$res = Db::getInstance()->execute($sql) ? 'ok' : 'error';
|
||||
|
||||
die($res);
|
||||
}
|
||||
}
|
||||
|
||||
public function ajaxProcessUpdateAccess()
|
||||
{
|
||||
if (_PS_MODE_DEMO_) {
|
||||
|
||||
@@ -74,6 +74,16 @@ class AdminAddressesControllerCore extends AdminController
|
||||
'city' => array('title' => $this->l('City')),
|
||||
'country' => array('title' => $this->l('Country'), 'type' => 'select', 'list' => $this->countries_array, 'filter_key' => 'cl!id_country'));
|
||||
|
||||
|
||||
// START send access query information to the admin controller
|
||||
$this->access_select = ' SELECT a.`id_address` FROM '._DB_PREFIX_.'address a';
|
||||
$this->access_join = ' INNER JOIN '._DB_PREFIX_.'customer cust ON (cust.id_customer = a.id_customer)';
|
||||
$this->access_join .= ' INNER JOIN '._DB_PREFIX_.'orders ord ON (cust.id_customer = ord.id_customer)';
|
||||
$this->access_join .= ' INNER JOIN '._DB_PREFIX_.'htl_booking_detail hbd ON (hbd.id_order = ord.id_order)';
|
||||
if ($acsHtls = HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, 1, 1)) {
|
||||
$this->access_where = ' WHERE hbd.id_hotel IN ('.implode(',', $acsHtls).')';
|
||||
}
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->_select = 'cl.`name` as country';
|
||||
|
||||
@@ -39,6 +39,8 @@ class AdminCartRulesControllerCore extends AdminController
|
||||
$this->addRowAction('delete');
|
||||
$this->_orderWay = 'DESC';
|
||||
|
||||
$this->context = Context::getContext();
|
||||
|
||||
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'),'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?')));
|
||||
|
||||
$this->fields_list = array(
|
||||
@@ -51,6 +53,25 @@ class AdminCartRulesControllerCore extends AdminController
|
||||
'active' => array('title' => $this->l('Status'), 'active' => 'status', 'type' => 'bool', 'align' => 'center', 'class' => 'fixed-width-xs', 'orderby' => false),
|
||||
);
|
||||
|
||||
// START send access query information to the admin controller
|
||||
$this->access_select = ' SELECT a.`id_cart_rule` FROM '._DB_PREFIX_.'cart_rule a';
|
||||
if ($acsHtls = HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, 1, 1)) {
|
||||
// check roomtypes access if at least one hotel is acessed
|
||||
$permittedIdsQuery = ' SELECT DISTINCT crprg.`id_cart_rule`
|
||||
FROM '._DB_PREFIX_.'cart_rule_product_rule_group crprg';
|
||||
$permittedIdsQuery .= ' INNER JOIN '._DB_PREFIX_.'cart_rule_product_rule crpr
|
||||
ON (crprg.id_product_rule_group = crpr.id_product_rule_group)';
|
||||
$permittedIdsQuery .= ' INNER JOIN '._DB_PREFIX_.'cart_rule_product_rule_value crpv
|
||||
ON (crpv.id_product_rule = crpr.id_product_rule)';
|
||||
$permittedIdsQuery .= ' INNER JOIN '._DB_PREFIX_.'htl_room_type hrt ON (crpv.id_item = hrt.id_product)';
|
||||
$permittedIdsQuery .= ' WHERE hrt.id_hotel IN ('.implode(',', $acsHtls).')';
|
||||
}
|
||||
$notInCond = ' SELECT DISTINCT cprg.`id_cart_rule` FROM '._DB_PREFIX_.'cart_rule_product_rule_group cprg';
|
||||
//check access if at least one hotel is acessed other wise remove all cart rules created for room types
|
||||
if ($acsHtls) {
|
||||
$notInCond .= ' WHERE cprg.`id_cart_rule` NOT IN ('.$permittedIdsQuery.')';
|
||||
}
|
||||
$this->access_where = ' WHERE a.`id_cart_rule` NOT IN ('.$notInCond.')';
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
@@ -125,6 +146,12 @@ class AdminCartRulesControllerCore extends AdminController
|
||||
public function setMedia()
|
||||
{
|
||||
parent::setMedia();
|
||||
Media::addJsDef(
|
||||
array(
|
||||
'room_access_err' => $this->l('You can only select room types which hotel(s) access is provided to this employee.'),
|
||||
'room_rmv_txt' => $this->l('Unselect below room types'),
|
||||
)
|
||||
);
|
||||
$this->addJqueryPlugin(array('typewatch', 'fancybox', 'autocomplete'));
|
||||
}
|
||||
|
||||
@@ -250,8 +277,6 @@ class AdminCartRulesControllerCore extends AdminController
|
||||
foreach (array('country', 'carrier', 'group', 'product_rule_group', 'shop') as $type) {
|
||||
Db::getInstance()->delete('cart_rule_'.$type, '`id_cart_rule` = '.(int)$id_cart_rule);
|
||||
}
|
||||
|
||||
|
||||
Db::getInstance()->delete('cart_rule_product_rule', 'NOT EXISTS (SELECT 1 FROM `'._DB_PREFIX_.'cart_rule_product_rule_group`
|
||||
WHERE `'._DB_PREFIX_.'cart_rule_product_rule`.`id_product_rule_group` = `'._DB_PREFIX_.'cart_rule_product_rule_group`.`id_product_rule_group`)');
|
||||
Db::getInstance()->delete('cart_rule_product_rule_value', 'NOT EXISTS (SELECT 1 FROM `'._DB_PREFIX_.'cart_rule_product_rule`
|
||||
@@ -462,9 +487,26 @@ class AdminCartRulesControllerCore extends AdminController
|
||||
foreach ($results as $row) {
|
||||
$products[in_array($row['id'], $selected) ? 'selected' : 'unselected'][] = $row;
|
||||
}
|
||||
// filter hotels as per accessed hotels
|
||||
$products['selected'] = HotelBranchInformation::filterDataByHotelAccess(
|
||||
$products['selected'],
|
||||
$this->context->employee->id_profile,
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
$products['unselected'] = HotelBranchInformation::filterDataByHotelAccess(
|
||||
$products['unselected'],
|
||||
$this->context->employee->id_profile,
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
|
||||
Context::getContext()->smarty->assign('product_rule_itemlist', $products);
|
||||
$choose_content = $this->createTemplate('product_rule_itemlist.tpl')->fetch();
|
||||
Context::getContext()->smarty->assign('product_rule_choose_content', $choose_content);
|
||||
|
||||
break;
|
||||
case 'manufacturers':
|
||||
$products = array('selected' => array(), 'unselected' => array());
|
||||
@@ -547,6 +589,11 @@ class AdminCartRulesControllerCore extends AdminController
|
||||
// Both product filter (free product and product discount) search for products
|
||||
if (Tools::isSubmit('giftProductFilter') || Tools::isSubmit('reductionProductFilter')) {
|
||||
$products = Product::searchByName(Context::getContext()->language->id, trim(Tools::getValue('q')));
|
||||
// filter hotels as per accessed hotels
|
||||
$products = HotelBranchInformation::filterDataByHotelAccess(
|
||||
$products,
|
||||
$this->context->employee->id_profile
|
||||
);
|
||||
die(Tools::jsonEncode($products));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ class AdminCartsControllerCore extends AdminController
|
||||
$this->addRowAction('delete');
|
||||
$this->allow_export = true;
|
||||
$this->_orderWay = 'DESC';
|
||||
$this->context = Context::getContext();
|
||||
|
||||
$this->_select = 'CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) `customer`, a.id_cart total, ca.name carrier,
|
||||
IF (IFNULL(o.id_order, \''.$this->l('Non ordered').'\') = \''.$this->l('Non ordered').'\', IF(TIME_TO_SEC(TIMEDIFF(\''.pSQL(date('Y-m-d H:i:00', time())).'\', a.`date_add`)) > 86400, \''.$this->l('Abandoned cart').'\', \''.$this->l('Non ordered').'\'), o.id_order) AS status, IF(o.id_order, 1, 0) badge_success, IF(o.id_order, 0, 1) badge_danger, IF(co.id_guest, 1, 0) id_guest';
|
||||
@@ -112,6 +113,13 @@ class AdminCartsControllerCore extends AdminController
|
||||
)
|
||||
);
|
||||
|
||||
// START send access query information to the admin controller
|
||||
$this->access_select = ' SELECT a.`id_cart` FROM '._DB_PREFIX_.'cart a';
|
||||
$this->access_join = ' INNER JOIN '._DB_PREFIX_.'htl_cart_booking_data hcb ON (hcb.id_cart = a.id_cart)';
|
||||
if ($acsHtls = HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, 1, 1)) {
|
||||
$this->access_where = ' WHERE hcb.id_hotel IN ('.implode(',', $acsHtls).')';
|
||||
}
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
@@ -586,10 +594,10 @@ class AdminCartsControllerCore extends AdminController
|
||||
$this->context->smarty->assign(array(
|
||||
'cart_detail_data' => $cart_detail_data,
|
||||
));
|
||||
|
||||
|
||||
$tpl_path = 'default/template/controllers/orders/current_cart_details_data.tpl';
|
||||
$cart_dtl_tpl = $this->context->smarty->fetch(_PS_BO_ALL_THEMES_DIR_.$tpl_path);
|
||||
|
||||
|
||||
$result = $this->ajaxReturnVars();
|
||||
$result['cart_detail_html'] = $cart_dtl_tpl;//tpl is added to the returned array
|
||||
echo Tools::jsonEncode($result);
|
||||
@@ -796,7 +804,7 @@ class AdminCartsControllerCore extends AdminController
|
||||
$id_customer = (int)Tools::getValue('id_customer');
|
||||
$customer = new Customer($id_customer);
|
||||
$this->context->customer = $customer;
|
||||
|
||||
|
||||
$carts = Cart::getCustomerCarts((int)$id_customer);
|
||||
$orders = Order::getCustomerOrders((int)$id_customer);
|
||||
|
||||
|
||||
@@ -153,6 +153,15 @@ class AdminCustomersControllerCore extends AdminController
|
||||
$this->shopLinkType = 'shop';
|
||||
$this->shopShareDatas = Shop::SHARE_CUSTOMER;
|
||||
|
||||
|
||||
// START send access query information to the admin controller
|
||||
$this->access_select = ' SELECT a.`id_customer` FROM '._DB_PREFIX_.'customer a';
|
||||
$this->access_join = ' INNER JOIN '._DB_PREFIX_.'orders ord ON (a.id_customer = ord.id_customer)';
|
||||
$this->access_join .= ' INNER JOIN '._DB_PREFIX_.'htl_booking_detail hbd ON (hbd.id_order = ord.id_order)';
|
||||
if ($acsHtls = HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, 1, 1)) {
|
||||
$this->access_where = ' WHERE hbd.id_hotel IN ('.implode(',', $acsHtls).')';
|
||||
}
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->_select = '
|
||||
|
||||
@@ -171,7 +171,7 @@ class AdminFeaturesControllerCore extends AdminController
|
||||
}
|
||||
$ps_img_url = _PS_IMG_DIR_.'rf/'.$obj->id.'.png';
|
||||
if ($img_exist = file_exists($ps_img_url)) {
|
||||
$img_url = '../../hotelcommerce/img/rf/'.$obj->id.'.png';
|
||||
$img_url = _PS_IMG_.'rf/'.$obj->id.'.png';
|
||||
$image = "<img class='img-thumbnail img-responsive' style='max-width:100px' src='".$img_url."'>";
|
||||
}
|
||||
|
||||
|
||||
@@ -131,43 +131,41 @@ class AdminOrderPreferencesControllerCore extends AdminController
|
||||
),
|
||||
'submit' => array('title' => $this->l('Save'))
|
||||
),
|
||||
/*'gift' => array(
|
||||
'title' => $this->l('Gift options'),
|
||||
'icon' => 'icon-gift',
|
||||
'email' => array(
|
||||
'title' => $this->l('Email'),
|
||||
'icon' => 'icon-cogs',
|
||||
'fields' => array(
|
||||
'PS_GIFT_WRAPPING' => array(
|
||||
'title' => $this->l('Offer gift wrapping'),
|
||||
'hint' => $this->l('Suggest gift-wrapping to customers.'),
|
||||
'PS_ORDER_CONF_MAIL_TO_CUSTOMER' => array(
|
||||
'title' => $this->l('Order confirmation mail to customer'),
|
||||
'hint' => $this->l('Enable, if you want to send order confirmation email to the customer.'),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
'type' => 'bool'
|
||||
),
|
||||
'PS_GIFT_WRAPPING_PRICE' => array(
|
||||
'title' => $this->l('Gift-wrapping price'),
|
||||
'hint' => $this->l('Set a price for gift wrapping.'),
|
||||
'validation' => 'isPrice',
|
||||
'cast' => 'floatval',
|
||||
'type' => 'price'
|
||||
),
|
||||
'PS_GIFT_WRAPPING_TAX_RULES_GROUP' => array(
|
||||
'title' => $this->l('Gift-wrapping tax'),
|
||||
'hint' => $this->l('Set a tax for gift wrapping.'),
|
||||
'validation' => 'isInt',
|
||||
'PS_ORDER_CONF_MAIL_TO_SUPERADMIN' => array(
|
||||
'title' => $this->l('Order confirmation mail to super admin'),
|
||||
'hint' => $this->l('Enable, if you want to send order confirmation email to the super admin.'),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
'type' => 'select',
|
||||
'list' => array_merge(array(array('id_tax_rules_group' => 0, 'name' => $this->l('None'))), TaxRulesGroup::getTaxRulesGroups(true)),
|
||||
'identifier' => 'id_tax_rules_group'
|
||||
'type' => 'bool'
|
||||
),
|
||||
'PS_RECYCLABLE_PACK' => array(
|
||||
'title' => $this->l('Offer recycled packaging'),
|
||||
'hint' => $this->l('Suggest recycled packaging to customer.'),
|
||||
'PS_ORDER_CONF_MAIL_TO_HOTEL_MANAGER' => array(
|
||||
'title' => $this->l('Order confirmation mail to hotelier'),
|
||||
'hint' => $this->l('Enable, if you want to send order confirmation email to the hotelier. Mail will be sent to the email saved while creating the hotel.'),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
'type' => 'bool'
|
||||
),
|
||||
'PS_ORDER_CONF_MAIL_TO_EMPLOYEE' => array(
|
||||
'title' => $this->l('Order confirmation mail to employee'),
|
||||
'hint' => $this->l('Enable, if you want to send order confirmation email to the employees with profiles which have permission to manage the hotel.'),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
'type' => 'bool'
|
||||
),
|
||||
),
|
||||
'submit' => array('title' => $this->l('Save')),
|
||||
),*/
|
||||
'submit' => array('title' => $this->l('Save'))
|
||||
),
|
||||
);
|
||||
|
||||
if (!Configuration::get('PS_ALLOW_MULTISHIPPING')) {
|
||||
|
||||
@@ -207,6 +207,13 @@ class AdminOrdersControllerCore extends AdminController
|
||||
'updateOrderStatus' => array('text' => $this->l('Change Order Status'), 'icon' => 'icon-refresh')
|
||||
);
|
||||
|
||||
// START send access query information to the admin controller
|
||||
$this->access_select = ' SELECT a.`id_order` FROM '._DB_PREFIX_.'orders a';
|
||||
$this->access_join = ' INNER JOIN '._DB_PREFIX_.'htl_booking_detail hbd ON (hbd.id_order = a.id_order)';
|
||||
if ($acsHtls = HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, 1, 1)) {
|
||||
$this->access_where = ' WHERE hbd.id_hotel IN ('.implode(',', $acsHtls).')';
|
||||
}
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
@@ -216,31 +223,6 @@ class AdminOrdersControllerCore extends AdminController
|
||||
return Tools::displayPrice($echo, (int)$order->id_currency);
|
||||
}
|
||||
|
||||
####################################################
|
||||
/*commented by webkul to hide 'Add New Order' from order list page*/
|
||||
####################################################
|
||||
|
||||
/*public function initPageHeaderToolbar()
|
||||
{
|
||||
parent::initPageHeaderToolbar();
|
||||
|
||||
if (empty($this->display)) {
|
||||
$this->page_header_toolbar_btn['new_order'] = array(
|
||||
'href' => self::$currentIndex.'&addorder&token='.$this->token,
|
||||
'desc' => $this->l('Add new order', null, null, false),
|
||||
'icon' => 'process-icon-new'
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->display == 'add') {
|
||||
unset($this->page_header_toolbar_btn['save']);
|
||||
}
|
||||
|
||||
if (Context::getContext()->shop->getContext() != Shop::CONTEXT_SHOP && isset($this->page_header_toolbar_btn['new_order'])
|
||||
&& Shop::isFeatureActive()) {
|
||||
unset($this->page_header_toolbar_btn['new_order']);
|
||||
}*/
|
||||
|
||||
public function renderForm()
|
||||
{
|
||||
if (Context::getContext()->shop->getContext() != Shop::CONTEXT_SHOP && Shop::isFeatureActive()) {
|
||||
@@ -485,65 +467,73 @@ class AdminOrdersControllerCore extends AdminController
|
||||
{
|
||||
// by webkul for reallocation of rooms
|
||||
if (Tools::isSubmit('realloc_allocated_rooms')) {
|
||||
$order_id = Tools::getValue('id_order');
|
||||
$current_room_id = Tools::getValue('modal_id_room');
|
||||
$current_room = Tools::getValue('modal_curr_room_num');
|
||||
$date_from = Tools::getValue('modal_date_from');
|
||||
$date_to = Tools::getValue('modal_date_to');
|
||||
$realloc_room_id = Tools::getValue('realloc_avail_rooms');
|
||||
if ($this->tabAccess['edit'] === '1') {
|
||||
$order_id = Tools::getValue('id_order');
|
||||
$current_room_id = Tools::getValue('modal_id_room');
|
||||
$current_room = Tools::getValue('modal_curr_room_num');
|
||||
$date_from = Tools::getValue('modal_date_from');
|
||||
$date_to = Tools::getValue('modal_date_to');
|
||||
$realloc_room_id = Tools::getValue('realloc_avail_rooms');
|
||||
|
||||
if ($realloc_room_id == 0) {
|
||||
$this->errors[] = Tools::displayError('Please select a room to swap with this room.');
|
||||
}
|
||||
if ($current_room_id == 0) {
|
||||
$this->errors[] = Tools::displayError('Cuurent room is missing.');
|
||||
}
|
||||
if ($date_from == 0) {
|
||||
$this->errors[] = Tools::displayError('Check In date is missing.');
|
||||
}
|
||||
if ($date_to == 0) {
|
||||
$this->errors[] = Tools::displayError('Check Out date is missing.');
|
||||
}
|
||||
|
||||
if (!count($this->errors)) {
|
||||
$obj_booking_dtl = new HotelBookingDetail();
|
||||
$room_swapped = $obj_booking_dtl->reallocateRoomWithAvailableSameRoomType($current_room_id, $date_from, $date_to, $realloc_room_id);
|
||||
if (!$room_swapped) {
|
||||
$this->errors[] = Tools::displayError('Some error occured. Please try again.');
|
||||
} else {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int) $order_id.'&vieworder&token='.$this->token);
|
||||
if ($realloc_room_id == 0) {
|
||||
$this->errors[] = Tools::displayError('Please select a room to swap with this room.');
|
||||
}
|
||||
if ($current_room_id == 0) {
|
||||
$this->errors[] = Tools::displayError('Cuurent room is missing.');
|
||||
}
|
||||
if ($date_from == 0) {
|
||||
$this->errors[] = Tools::displayError('Check In date is missing.');
|
||||
}
|
||||
if ($date_to == 0) {
|
||||
$this->errors[] = Tools::displayError('Check Out date is missing.');
|
||||
}
|
||||
|
||||
if (!count($this->errors)) {
|
||||
$obj_booking_dtl = new HotelBookingDetail();
|
||||
$room_swapped = $obj_booking_dtl->reallocateRoomWithAvailableSameRoomType($current_room_id, $date_from, $date_to, $realloc_room_id);
|
||||
if (!$room_swapped) {
|
||||
$this->errors[] = Tools::displayError('Some error occured. Please try again.');
|
||||
} else {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int) $order_id.'&vieworder&token='.$this->token);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('You do not have permission to edit this.');
|
||||
}
|
||||
}
|
||||
if (Tools::isSubmit('swap_allocated_rooms')) {
|
||||
$order_id = Tools::getValue('id_order');
|
||||
$current_room_id = Tools::getValue('modal_id_room');
|
||||
$current_room = Tools::getValue('modal_curr_room_num');
|
||||
$date_from = Tools::getValue('modal_date_from');
|
||||
$date_to = Tools::getValue('modal_date_to');
|
||||
$swapped_room_id = Tools::getValue('swap_avail_rooms');
|
||||
if ($this->tabAccess['edit'] === '1') {
|
||||
$order_id = Tools::getValue('id_order');
|
||||
$current_room_id = Tools::getValue('modal_id_room');
|
||||
$current_room = Tools::getValue('modal_curr_room_num');
|
||||
$date_from = Tools::getValue('modal_date_from');
|
||||
$date_to = Tools::getValue('modal_date_to');
|
||||
$swapped_room_id = Tools::getValue('swap_avail_rooms');
|
||||
|
||||
if ($swapped_room_id == 0) {
|
||||
$this->errors[] = Tools::displayError('Please select a room to swap with this room.');
|
||||
}
|
||||
if ($current_room_id == 0) {
|
||||
$this->errors[] = Tools::displayError('Cuurent room is missing.');
|
||||
}
|
||||
if ($date_from == 0) {
|
||||
$this->errors[] = Tools::displayError('Check In date is missing.');
|
||||
}
|
||||
if ($date_to == 0) {
|
||||
$this->errors[] = Tools::displayError('Check Out date is missing.');
|
||||
}
|
||||
|
||||
if (!count($this->errors)) {
|
||||
$obj_booking_dtl = new HotelBookingDetail();
|
||||
$room_swapped = $obj_booking_dtl->swapRoomWithAvailableSameRoomType($current_room_id, $date_from, $date_to, $swapped_room_id);
|
||||
if (!$room_swapped) {
|
||||
$this->errors[] = Tools::displayError('Some error occured. Please try again.');
|
||||
} else {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int) $order_id.'&vieworder&token='.$this->token);
|
||||
if ($swapped_room_id == 0) {
|
||||
$this->errors[] = Tools::displayError('Please select a room to swap with this room.');
|
||||
}
|
||||
if ($current_room_id == 0) {
|
||||
$this->errors[] = Tools::displayError('Cuurent room is missing.');
|
||||
}
|
||||
if ($date_from == 0) {
|
||||
$this->errors[] = Tools::displayError('Check In date is missing.');
|
||||
}
|
||||
if ($date_to == 0) {
|
||||
$this->errors[] = Tools::displayError('Check Out date is missing.');
|
||||
}
|
||||
|
||||
if (!count($this->errors)) {
|
||||
$obj_booking_dtl = new HotelBookingDetail();
|
||||
$room_swapped = $obj_booking_dtl->swapRoomWithAvailableSameRoomType($current_room_id, $date_from, $date_to, $swapped_room_id);
|
||||
if (!$room_swapped) {
|
||||
$this->errors[] = Tools::displayError('Some error occured. Please try again.');
|
||||
} else {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int) $order_id.'&vieworder&token='.$this->token);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('You do not have permission to edit this.');
|
||||
}
|
||||
}
|
||||
//by webkul to update order status when admin changes from order detail page
|
||||
@@ -553,16 +543,40 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$date_to = Tools::getValue('date_to');
|
||||
$order_id = (int) Tools::getValue('id_order');
|
||||
$new_status = (int) Tools::getValue('booking_order_status');
|
||||
if ($order_id && $new_status && $id_room) {
|
||||
$obj_booking_detail = new HotelBookingDetail();
|
||||
$update = $obj_booking_detail->updateBookingOrderStatusByOrderId($order_id, $new_status, $id_room, $date_from, $date_to);
|
||||
if ($update) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int) $order_id.'&vieworder&token='.$this->token);
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('New order status is invalid.');
|
||||
}
|
||||
|
||||
$currentDate = date('Y-m-d H:i:s');
|
||||
|
||||
// @todo This is a valid condition but will be used after managing after order data management
|
||||
// elseif (($new_status == 2 || $new_status == 3) && !($date_from <= $currentDate && $date_to >= $currentDate)) {
|
||||
// $this->errors[] = Tools::displayError('Check-in and Check-out dates must be in between the booking dates.');
|
||||
// }
|
||||
|
||||
if (!$order_id || !$id_room) {
|
||||
$this->errors[] = Tools::displayError('Something went wrong, Please try again !!');
|
||||
} elseif (!$new_status) {
|
||||
$this->errors[] = Tools::displayError('Invalid room check-in status, Please try again !!');
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('New order status is invalid.');
|
||||
$obj_booking_detail = new HotelBookingDetail();
|
||||
$roomBookingDetail = $obj_booking_detail->getRoomBookingData($id_room, $order_id);
|
||||
if ($roomBookingDetail) {
|
||||
if ($new_status == 3 && !($roomBookingDetail['check_in'] != '0000-00-00 00:00:00' && $roomBookingDetail['check_in'] <= $currentDate)) {
|
||||
$this->errors[] = Tools::displayError('Room status must be set to check-in, before setting the room status to check-out.');
|
||||
} else {
|
||||
if ($obj_booking_detail->updateBookingOrderStatusByOrderId(
|
||||
$order_id,
|
||||
$new_status,
|
||||
$id_room,
|
||||
$date_from,
|
||||
$date_to
|
||||
)) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int) $order_id.'&vieworder&token='.$this->token);
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('Error while updating room status.');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('Something went wrong, please try again!');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -609,9 +623,21 @@ class AdminOrdersControllerCore extends AdminController
|
||||
'{shipping_number}' => $order->shipping_number,
|
||||
'{order_name}' => $order->getUniqReference()
|
||||
);
|
||||
if (@Mail::Send((int)$order->id_lang, 'in_transit', Mail::l('Package in transit', (int)$order->id_lang), $templateVars,
|
||||
$customer->email, $customer->firstname.' '.$customer->lastname, null, null, null, null,
|
||||
_PS_MAIL_DIR_, true, (int)$order->id_shop)) {
|
||||
if (@Mail::Send(
|
||||
(int)$order->id_lang,
|
||||
'in_transit',
|
||||
Mail::l('Package in transit', (int)$order->id_lang),
|
||||
$templateVars,
|
||||
$customer->email,
|
||||
$customer->firstname.' '.$customer->lastname,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
_PS_MAIL_DIR_,
|
||||
true,
|
||||
(int)$order->id_shop
|
||||
)) {
|
||||
Hook::exec('actionAdminOrdersTrackingNumberUpdate', array('order' => $order, 'customer' => $customer, 'carrier' => $carrier), null, false, true, false, $order->id_shop);
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token);
|
||||
} else {
|
||||
@@ -748,9 +774,21 @@ class AdminOrdersControllerCore extends AdminController
|
||||
'{order_name}' => $order->getUniqReference(),
|
||||
'{message}' => $message
|
||||
);
|
||||
if (@Mail::Send((int)$order->id_lang, 'order_merchant_comment',
|
||||
Mail::l('New message regarding your order', (int)$order->id_lang), $varsTpl, $customer->email,
|
||||
$customer->firstname.' '.$customer->lastname, null, null, null, null, _PS_MAIL_DIR_, true, (int)$order->id_shop)) {
|
||||
if (@Mail::Send(
|
||||
(int)$order->id_lang,
|
||||
'order_merchant_comment',
|
||||
Mail::l('New message regarding your order', (int)$order->id_lang),
|
||||
$varsTpl,
|
||||
$customer->email,
|
||||
$customer->firstname.' '.$customer->lastname,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
_PS_MAIL_DIR_,
|
||||
true,
|
||||
(int)$order->id_shop
|
||||
)) {
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=11'.'&token='.$this->token);
|
||||
}
|
||||
}
|
||||
@@ -787,9 +825,8 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$order_detail_list[$id_order_detail]['unit_price'] = (!Tools::getValue('TaxMethod') ? $order_detail->unit_price_tax_excl : $order_detail->unit_price_tax_incl);
|
||||
$order_detail_list[$id_order_detail]['amount'] = $order_detail->unit_price_tax_incl * $order_detail_list[$id_order_detail]['quantity'];
|
||||
} else {
|
||||
$order_detail_list[$id_order_detail]['unit_price'] = $order_detail_list[$id_order_detail]['amount'] / $order_detail_list[$id_order_detail]['quantity'];
|
||||
$order_detail_list[$id_order_detail]['unit_price'] = $order_detail_list[$id_order_detail]['amount'] / $order_detail_list[$id_order_detail]['quantity'];
|
||||
$order_detail_list[$id_order_detail]['amount'] = (float)str_replace(',', '.', $amount_detail);
|
||||
|
||||
}
|
||||
$amount += $order_detail_list[$id_order_detail]['amount'];
|
||||
if (!$order->hasBeenDelivered() || ($order->hasBeenDelivered() && Tools::isSubmit('reinjectQuantities')) && $order_detail_list[$id_order_detail]['quantity'] > 0) {
|
||||
@@ -838,8 +875,14 @@ class AdminOrdersControllerCore extends AdminController
|
||||
}
|
||||
|
||||
if ($amount >= 0) {
|
||||
if (!OrderSlip::create($order, $order_detail_list, $shipping_cost_amount, $voucher, $choosen,
|
||||
(Tools::getValue('TaxMethod') ? false : true))) {
|
||||
if (!OrderSlip::create(
|
||||
$order,
|
||||
$order_detail_list,
|
||||
$shipping_cost_amount,
|
||||
$voucher,
|
||||
$choosen,
|
||||
(Tools::getValue('TaxMethod') ? false : true)
|
||||
)) {
|
||||
$this->errors[] = Tools::displayError('You cannot generate a partial credit slip.');
|
||||
} else {
|
||||
Hook::exec('actionOrderSlipAdd', array('order' => $order, 'productList' => $order_detail_list, 'qtyList' => $full_quantity_list), null, false, true, false, $order->id_shop);
|
||||
@@ -920,9 +963,21 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$params['{order_name}'] = $order->getUniqReference();
|
||||
$params['{voucher_amount}'] = Tools::displayPrice($cart_rule->reduction_amount, $currency, false);
|
||||
$params['{voucher_num}'] = $cart_rule->code;
|
||||
@Mail::Send((int)$order->id_lang, 'voucher', sprintf(Mail::l('New voucher for your order #%s', (int)$order->id_lang), $order->reference),
|
||||
$params, $customer->email, $customer->firstname.' '.$customer->lastname, null, null, null,
|
||||
null, _PS_MAIL_DIR_, true, (int)$order->id_shop);
|
||||
@Mail::Send(
|
||||
(int)$order->id_lang,
|
||||
'voucher',
|
||||
sprintf(Mail::l('New voucher for your order #%s', (int)$order->id_lang), $order->reference),
|
||||
$params,
|
||||
$customer->email,
|
||||
$customer->firstname.' '.$customer->lastname,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
_PS_MAIL_DIR_,
|
||||
true,
|
||||
(int)$order->id_shop
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1175,9 +1230,21 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$currency = $this->context->currency;
|
||||
$params['{voucher_amount}'] = Tools::displayPrice($cartrule->reduction_amount, $currency, false);
|
||||
$params['{voucher_num}'] = $cartrule->code;
|
||||
@Mail::Send((int)$order->id_lang, 'voucher', sprintf(Mail::l('New voucher for your order #%s', (int)$order->id_lang), $order->reference),
|
||||
$params, $customer->email, $customer->firstname.' '.$customer->lastname, null, null, null,
|
||||
null, _PS_MAIL_DIR_, true, (int)$order->id_shop);
|
||||
@Mail::Send(
|
||||
(int)$order->id_lang,
|
||||
'voucher',
|
||||
sprintf(Mail::l('New voucher for your order #%s', (int)$order->id_lang), $order->reference),
|
||||
$params,
|
||||
$customer->email,
|
||||
$customer->firstname.' '.$customer->lastname,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
_PS_MAIL_DIR_,
|
||||
true,
|
||||
(int)$order->id_shop
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1272,9 +1339,16 @@ class AdminOrdersControllerCore extends AdminController
|
||||
} else {
|
||||
$employee = new Employee((int)Context::getContext()->cookie->id_employee);
|
||||
$payment_module->validateOrder(
|
||||
(int)$cart->id, (int)$id_order_state,
|
||||
$cart->getOrderTotal(true, Cart::BOTH), $payment_module->displayName, $this->l('Manual order -- Employee:').' '.
|
||||
substr($employee->firstname, 0, 1).'. '.$employee->lastname, array(), null, false, $cart->secure_key
|
||||
(int)$cart->id,
|
||||
(int)$id_order_state,
|
||||
$cart->getOrderTotal(true, Cart::BOTH),
|
||||
$payment_module->displayName,
|
||||
$this->l('Manual order -- Employee:').' '.
|
||||
substr($employee->firstname, 0, 1).'. '.$employee->lastname,
|
||||
array(),
|
||||
null,
|
||||
false,
|
||||
$cart->secure_key
|
||||
);
|
||||
/*
|
||||
setcookie('wk_id_cart', ' ', time() - 86400, '/');
|
||||
@@ -1663,7 +1737,6 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$this->errors[] = Tools::displayError('You do not have permission to edit this.');
|
||||
}
|
||||
}
|
||||
|
||||
parent::postProcess();
|
||||
}
|
||||
|
||||
@@ -1870,9 +1943,10 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$obj_htl_bk_dtl = new HotelBookingDetail();
|
||||
|
||||
$order_detail_data = $obj_htl_bk_dtl->getOrderFormatedBookinInfoByIdOrder((int) Tools::getValue('id_order'));
|
||||
$total_tax = 0;
|
||||
$total_room_tax = 0;
|
||||
$totalRoomsCostTE = 0;
|
||||
$totalDemandsPrice = 0;
|
||||
$totalDemandsPriceTE = 0;
|
||||
$totalDemandsPriceTI = 0;
|
||||
if ($order_detail_data) {
|
||||
$objBookingDemand = new HotelBookingDemands();
|
||||
foreach ($order_detail_data as $key => $value) {
|
||||
@@ -1892,16 +1966,28 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$value['date_from'],
|
||||
$value['date_to']
|
||||
);
|
||||
$order_detail_data[$key]['extra_demands_price'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order_detail_data[$key]['extra_demands_price_ti'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order->id,
|
||||
$value['id_product'],
|
||||
$value['id_room'],
|
||||
$value['date_from'],
|
||||
$value['date_to'],
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
$totalDemandsPrice += $order_detail_data[$key]['extra_demands_price'];
|
||||
$totalDemandsPriceTI += $order_detail_data[$key]['extra_demands_price_ti'];
|
||||
$order_detail_data[$key]['extra_demands_price_te'] = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$order->id,
|
||||
$value['id_product'],
|
||||
$value['id_room'],
|
||||
$value['date_from'],
|
||||
$value['date_to'],
|
||||
0,
|
||||
1,
|
||||
0
|
||||
);
|
||||
$totalDemandsPriceTE += $order_detail_data[$key]['extra_demands_price_te'];
|
||||
$cust_obj = new Customer($value['id_customer']);
|
||||
if ($cust_obj->firstname) {
|
||||
$order_detail_data[$key]['alloted_cust_name'] = $cust_obj->firstname.' '.$cust_obj->lastname;
|
||||
@@ -1919,7 +2005,7 @@ class AdminOrdersControllerCore extends AdminController
|
||||
|
||||
/*Product price when order was created*/
|
||||
$totalRoomsCostTE += $value['total_price_tax_excl'];
|
||||
$total_tax += $value['total_price_tax_incl']-$value['total_price_tax_excl'];
|
||||
$total_room_tax += $value['total_price_tax_incl']-$value['total_price_tax_excl'];
|
||||
$num_days = $obj_htl_bk_dtl->getNumberOfDays($value['date_from'], $value['date_to']);
|
||||
$order_detail_data[$key]['unit_amt_tax_excl'] = $value['total_price_tax_excl']/$num_days;
|
||||
$order_detail_data[$key]['unit_amt_tax_incl'] = $value['total_price_tax_incl']/$num_days;
|
||||
@@ -1958,32 +2044,36 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$order_adv_dtl = $obj_customer_adv->getCstAdvPaymentDtlByIdOrder($order->id);
|
||||
if ($order_adv_dtl) {
|
||||
if (Tools::isSubmit('payDueAmount')) {
|
||||
$due_submit_amount = Tools::getValue('submitted_amount');
|
||||
if (!Validate::isPrice($due_submit_amount)) {
|
||||
$this->errors[] = $this->l('Submitted Amount must be valid amount.');
|
||||
} else {
|
||||
$obj_customer_adv = new HotelCustomerAdvancedPayment($order_adv_dtl['id']);
|
||||
$due_submit_amount += $obj_customer_adv->total_paid_amount;
|
||||
if (($due_submit_amount <= $obj_customer_adv->total_order_amount) && ($due_submit_amount > 0)) {
|
||||
$obj_customer_adv->total_paid_amount = $due_submit_amount;
|
||||
$obj_customer_adv->save();
|
||||
|
||||
Tools::redirectAdmin($this->context->link->getAdminLink('AdminOrders').'&vieworder&id_order='.$order->id);
|
||||
if ($this->tabAccess['edit'] === '1') {
|
||||
$due_submit_amount = Tools::getValue('submitted_amount');
|
||||
if (!Validate::isPrice($due_submit_amount)) {
|
||||
$this->errors[] = $this->l('Submitted Amount must be valid amount.');
|
||||
} else {
|
||||
$this->errors[] = $this->l('Submitted Amount must be less than total order amount.');
|
||||
$obj_customer_adv = new HotelCustomerAdvancedPayment($order_adv_dtl['id']);
|
||||
$due_submit_amount += $obj_customer_adv->total_paid_amount;
|
||||
if (($due_submit_amount <= $obj_customer_adv->total_order_amount) && ($due_submit_amount > 0)) {
|
||||
$obj_customer_adv->total_paid_amount = $due_submit_amount;
|
||||
$obj_customer_adv->save();
|
||||
|
||||
Tools::redirectAdmin($this->context->link->getAdminLink('AdminOrders').'&vieworder&id_order='.$order->id);
|
||||
} else {
|
||||
$this->errors[] = $this->l('Submitted Amount must be less than total order amount.');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('You do not have permission to edit this.');
|
||||
}
|
||||
}
|
||||
$this->context->smarty->assign('order_adv_dtl', $order_adv_dtl);
|
||||
}
|
||||
|
||||
// get order extra demands
|
||||
$objBookingDemand = new HotelBookingDemands();
|
||||
$this->tpl_view_vars = array(
|
||||
/*Assigned variable to view.tpl By webkul*/
|
||||
'totalDemandsPrice' => $totalDemandsPrice,
|
||||
'totalDemandsPriceTI' => $totalDemandsPriceTI,
|
||||
'totalDemandsPriceTE' => $totalDemandsPriceTE,
|
||||
'totalRoomsCostTE' => $totalRoomsCostTE,
|
||||
'total_tax_in_order' => $total_tax,
|
||||
'total_room_tax' => $total_room_tax,
|
||||
'htl_booking_order_data' => $htl_booking_data_order_id,
|
||||
'hotel_order_status' => $htl_order_status,
|
||||
'order_detail_data' => $order_detail_data,
|
||||
@@ -2029,22 +2119,30 @@ class AdminOrdersControllerCore extends AdminController
|
||||
'payment_methods' => $payment_methods,
|
||||
'invoice_management_active' => Configuration::get('PS_INVOICE', null, null, $order->id_shop),
|
||||
'display_warehouse' => (int)Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'),
|
||||
'HOOK_CONTENT_ORDER' => Hook::exec('displayAdminOrderContentOrder', array(
|
||||
'HOOK_CONTENT_ORDER' => Hook::exec(
|
||||
'displayAdminOrderContentOrder',
|
||||
array(
|
||||
'order' => $order,
|
||||
'products' => $products,
|
||||
'customer' => $customer)
|
||||
),
|
||||
'HOOK_CONTENT_SHIP' => Hook::exec('displayAdminOrderContentShip', array(
|
||||
'HOOK_CONTENT_SHIP' => Hook::exec(
|
||||
'displayAdminOrderContentShip',
|
||||
array(
|
||||
'order' => $order,
|
||||
'products' => $products,
|
||||
'customer' => $customer)
|
||||
),
|
||||
'HOOK_TAB_ORDER' => Hook::exec('displayAdminOrderTabOrder', array(
|
||||
'HOOK_TAB_ORDER' => Hook::exec(
|
||||
'displayAdminOrderTabOrder',
|
||||
array(
|
||||
'order' => $order,
|
||||
'products' => $products,
|
||||
'customer' => $customer)
|
||||
),
|
||||
'HOOK_TAB_SHIP' => Hook::exec('displayAdminOrderTabShip', array(
|
||||
'HOOK_TAB_SHIP' => Hook::exec(
|
||||
'displayAdminOrderTabShip',
|
||||
array(
|
||||
'order' => $order,
|
||||
'products' => $products,
|
||||
'customer' => $customer)
|
||||
@@ -2145,8 +2243,21 @@ class AdminOrdersControllerCore extends AdminController
|
||||
'{firstname}' => $customer->firstname,
|
||||
'{lastname}' => $customer->lastname
|
||||
);
|
||||
if (Mail::Send((int)$cart->id_lang, 'backoffice_order', Mail::l('Process the payment of your order', (int)$cart->id_lang), $mailVars, $customer->email,
|
||||
$customer->firstname.' '.$customer->lastname, null, null, null, null, _PS_MAIL_DIR_, true, $cart->id_shop)) {
|
||||
if (Mail::Send(
|
||||
(int)$cart->id_lang,
|
||||
'backoffice_order',
|
||||
Mail::l('Process the payment of your order', (int)$cart->id_lang),
|
||||
$mailVars,
|
||||
$customer->email,
|
||||
$customer->firstname.' '.$customer->lastname,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
_PS_MAIL_DIR_,
|
||||
true,
|
||||
$cart->id_shop
|
||||
)) {
|
||||
die(Tools::jsonEncode(array('errors' => false, 'result' => $this->l('The email was sent to your customer.'))));
|
||||
}
|
||||
}
|
||||
@@ -2332,8 +2443,20 @@ class AdminOrdersControllerCore extends AdminController
|
||||
// always add taxes even if there are not displayed to the customer
|
||||
$use_taxes = true;
|
||||
|
||||
$initial_product_price_tax_incl = Product::getPriceStatic($product->id, $use_taxes, isset($combination) ? $combination->id : null, 2, null, false, true, 1,
|
||||
false, $order->id_customer, $cart->id, $order->{Configuration::get('PS_TAX_ADDRESS_TYPE', null, null, $order->id_shop)});
|
||||
$initial_product_price_tax_incl = Product::getPriceStatic(
|
||||
$product->id,
|
||||
$use_taxes,
|
||||
isset($combination) ? $combination->id : null,
|
||||
2,
|
||||
null,
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
false,
|
||||
$order->id_customer,
|
||||
$cart->id,
|
||||
$order->{Configuration::get('PS_TAX_ADDRESS_TYPE', null, null, $order->id_shop)}
|
||||
);
|
||||
|
||||
// Creating specific price if needed
|
||||
if ($product_informations['product_price_tax_incl'] != $initial_product_price_tax_incl) {
|
||||
@@ -2361,8 +2484,15 @@ class AdminOrdersControllerCore extends AdminController
|
||||
}
|
||||
|
||||
// Add product to cart
|
||||
$update_quantity = $cart->updateQty($product_informations['product_quantity'], $product->id, isset($product_informations['product_attribute_id']) ? $product_informations['product_attribute_id'] : null,
|
||||
isset($combination) ? $combination->id : null, 'up', 0, new Shop($cart->id_shop));
|
||||
$update_quantity = $cart->updateQty(
|
||||
$product_informations['product_quantity'],
|
||||
$product->id,
|
||||
isset($product_informations['product_attribute_id']) ? $product_informations['product_attribute_id'] : null,
|
||||
isset($combination) ? $combination->id : null,
|
||||
'up',
|
||||
0,
|
||||
new Shop($cart->id_shop)
|
||||
);
|
||||
|
||||
if ($update_quantity < 0) {
|
||||
// If product has attribute, minimal quantity is set with minimal quantity of attribute
|
||||
@@ -3031,8 +3161,8 @@ class AdminOrdersControllerCore extends AdminController
|
||||
/*$totalProductPriceBeforeTE = $order_detail->total_price_tax_excl;
|
||||
$totalProductPriceBeforeTI = $order_detail->total_price_tax_incl;*/
|
||||
// by webkul to calculate rates of the product from hotelreservation syatem tables with feature prices....
|
||||
/* $hotelCartBookingData = new HotelCartBookingData();
|
||||
$roomTypesByIdProduct = $hotelCartBookingData->getCartInfoIdCartIdProduct($this->id, $product['id_product']);*/
|
||||
/* $hotelCartBookingData = new HotelCartBookingData();
|
||||
$roomTypesByIdProduct = $hotelCartBookingData->getCartInfoIdCartIdProduct($this->id, $product['id_product']);*/
|
||||
|
||||
/*This code below to alter the values in the order detail table*/
|
||||
//$diff_products_tax_incl = $order_detail->unit_price_tax_incl * $product_quantity;
|
||||
@@ -3123,7 +3253,7 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$htl_refund_info = new HotelOrderRefundInfo();
|
||||
$delete_room_refunf_info = $htl_refund_info->deleteOrderedRoomRefundInfo($id_order, $id_product, $date_from, $date_to);
|
||||
/*END*/
|
||||
//Update Order Info in Customer Advance payment table
|
||||
//Update Order Info in Customer Advance payment table
|
||||
$obj_customer_adv = new HotelCustomerAdvancedPayment($id_order);
|
||||
$obj_customer_adv->updateAdvancePaymentInfoOnOrderEdit($id_order);
|
||||
/*End*/
|
||||
@@ -3271,7 +3401,6 @@ class AdminOrdersControllerCore extends AdminController
|
||||
'result' => false,
|
||||
'error' => Tools::displayError('This product is no longer in stock with those attributes ')
|
||||
)));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3321,11 +3450,11 @@ class AdminOrdersControllerCore extends AdminController
|
||||
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && $product->advanced_stock_management && $order_detail->id_warehouse != 0) {
|
||||
$manager = StockManagerFactory::getManager();
|
||||
$movements = StockMvt::getNegativeStockMvts(
|
||||
$order_detail->id_order,
|
||||
$order_detail->product_id,
|
||||
$order_detail->product_attribute_id,
|
||||
$quantity_to_reinject
|
||||
);
|
||||
$order_detail->id_order,
|
||||
$order_detail->product_id,
|
||||
$order_detail->product_attribute_id,
|
||||
$quantity_to_reinject
|
||||
);
|
||||
$left_to_reinject = $quantity_to_reinject;
|
||||
foreach ($movements as $movement) {
|
||||
if ($left_to_reinject > $movement['physical_quantity']) {
|
||||
@@ -3335,37 +3464,26 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$left_to_reinject -= $quantity_to_reinject;
|
||||
if (Pack::isPack((int)$product->id)) {
|
||||
// Gets items
|
||||
if ($product->pack_stock_type == 1 || $product->pack_stock_type == 2 || ($product->pack_stock_type == 3 && Configuration::get('PS_PACK_STOCK_TYPE') > 0)) {
|
||||
$products_pack = Pack::getItems((int)$product->id, (int)Configuration::get('PS_LANG_DEFAULT'));
|
||||
// Foreach item
|
||||
foreach ($products_pack as $product_pack) {
|
||||
if ($product_pack->advanced_stock_management == 1) {
|
||||
$manager->addProduct(
|
||||
$product_pack->id,
|
||||
$product_pack->id_pack_product_attribute,
|
||||
new Warehouse($movement['id_warehouse']),
|
||||
$product_pack->pack_quantity * $quantity_to_reinject,
|
||||
null,
|
||||
$movement['price_te'],
|
||||
true
|
||||
);
|
||||
}
|
||||
if ($product->pack_stock_type == 1 || $product->pack_stock_type == 2 || ($product->pack_stock_type == 3 && Configuration::get('PS_PACK_STOCK_TYPE') > 0)) {
|
||||
$products_pack = Pack::getItems((int)$product->id, (int)Configuration::get('PS_LANG_DEFAULT'));
|
||||
// Foreach item
|
||||
foreach ($products_pack as $product_pack) {
|
||||
if ($product_pack->advanced_stock_management == 1) {
|
||||
$manager->addProduct(
|
||||
$product_pack->id,
|
||||
$product_pack->id_pack_product_attribute,
|
||||
new Warehouse($movement['id_warehouse']),
|
||||
$product_pack->pack_quantity * $quantity_to_reinject,
|
||||
null,
|
||||
$movement['price_te'],
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($product->pack_stock_type == 0 || $product->pack_stock_type == 2 ||
|
||||
($product->pack_stock_type == 3 && (Configuration::get('PS_PACK_STOCK_TYPE') == 0 || Configuration::get('PS_PACK_STOCK_TYPE') == 2))) {
|
||||
$manager->addProduct(
|
||||
$order_detail->product_id,
|
||||
$order_detail->product_attribute_id,
|
||||
new Warehouse($movement['id_warehouse']),
|
||||
$quantity_to_reinject,
|
||||
null,
|
||||
$movement['price_te'],
|
||||
true
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$manager->addProduct(
|
||||
$order_detail->product_id,
|
||||
$order_detail->product_attribute_id,
|
||||
new Warehouse($movement['id_warehouse']),
|
||||
@@ -3374,6 +3492,17 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$movement['price_te'],
|
||||
true
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$manager->addProduct(
|
||||
$order_detail->product_id,
|
||||
$order_detail->product_attribute_id,
|
||||
new Warehouse($movement['id_warehouse']),
|
||||
$quantity_to_reinject,
|
||||
null,
|
||||
$movement['price_te'],
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3384,11 +3513,11 @@ class AdminOrdersControllerCore extends AdminController
|
||||
StockAvailable::synchronize($id_product);
|
||||
} elseif ($order_detail->id_warehouse == 0) {
|
||||
StockAvailable::updateQuantity(
|
||||
$order_detail->product_id,
|
||||
$order_detail->product_attribute_id,
|
||||
$quantity_to_reinject,
|
||||
$order_detail->id_shop
|
||||
);
|
||||
$order_detail->product_id,
|
||||
$order_detail->product_attribute_id,
|
||||
$quantity_to_reinject,
|
||||
$order_detail->id_shop
|
||||
);
|
||||
|
||||
if ($delete) {
|
||||
$order_detail->delete();
|
||||
@@ -3477,7 +3606,7 @@ class AdminOrdersControllerCore extends AdminController
|
||||
die(Tools::jsonEncode($result));
|
||||
}
|
||||
|
||||
// To show rooms extra demands in the modal box
|
||||
// To show rooms extra demands in the modal box in order details view page
|
||||
public function ajaxProcessGetRoomTypeBookingDemands()
|
||||
{
|
||||
$extraDemandsTpl = '';
|
||||
@@ -3497,7 +3626,7 @@ class AdminOrdersControllerCore extends AdminController
|
||||
)) {
|
||||
$objOrder = new Order($idOrder);
|
||||
$this->context->smarty->assign(
|
||||
array (
|
||||
array(
|
||||
'extraDemands' => $extraDemands,
|
||||
'orderCurrency' => $objOrder->id_currency
|
||||
)
|
||||
@@ -3509,4 +3638,72 @@ class AdminOrdersControllerCore extends AdminController
|
||||
}
|
||||
die($extraDemandsTpl);
|
||||
}
|
||||
|
||||
// Process to get extra demands of any room while order creation process form.tpl
|
||||
public function ajaxProcessGetRoomTypeCartDemands()
|
||||
{
|
||||
$extraDemandsTpl = '';
|
||||
if ($idProduct = Tools::getValue('id_product')) {
|
||||
if (($dateFrom = Tools::getValue('date_from'))
|
||||
&& ($dateTo = Tools::getValue('date_to'))
|
||||
&& ($idRoom = Tools::getValue('id_room'))
|
||||
&& ($idCart = Tools::getValue('id_cart'))
|
||||
) {
|
||||
$objCartBookingData = new HotelCartBookingData();
|
||||
if ($selectedRoomDemands = $objCartBookingData->getCartExtraDemands(
|
||||
$idCart,
|
||||
$idProduct,
|
||||
$idRoom,
|
||||
$dateFrom,
|
||||
$dateTo
|
||||
)) {
|
||||
// get room type additional demands
|
||||
$objRoomDemands = new HotelRoomTypeDemand();
|
||||
if ($roomTypeDemands = $objRoomDemands->getRoomTypeDemands($idProduct)) {
|
||||
foreach ($roomTypeDemands as &$demand) {
|
||||
// if demand has advance options then set demand price as first advance option price.
|
||||
if (isset($demand['adv_option']) && $demand['adv_option']) {
|
||||
$demand['price'] = current($demand['adv_option'])['price'];
|
||||
}
|
||||
}
|
||||
foreach ($selectedRoomDemands as &$selectedDemand) {
|
||||
$objRoom = new HotelRoomInformation($selectedDemand['id_room']);
|
||||
$selectedDemand['room_num'] = $objRoom->room_num;
|
||||
if (isset($selectedDemand['extra_demands']) && $selectedDemand['extra_demands']) {
|
||||
$extraDmd = array();
|
||||
foreach ($selectedDemand['extra_demands'] as $sDemand) {
|
||||
$selectedDemand['selected_global_demands'][] = $sDemand['id_global_demand'];
|
||||
$extraDmd[$sDemand['id_global_demand'].'-'.$sDemand['id_option']] = $sDemand;
|
||||
}
|
||||
$selectedDemand['extra_demands'] = $extraDmd;
|
||||
}
|
||||
}
|
||||
$this->context->smarty->assign('roomTypeDemands', $roomTypeDemands);
|
||||
$this->context->smarty->assign('selectedRoomDemands', $selectedRoomDemands);
|
||||
$extraDemandsTpl .= $this->context->smarty->fetch(
|
||||
_PS_ADMIN_DIR_.'/themes/default/template/controllers/orders/_cart_booking_demands.tpl'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
die($extraDemandsTpl);
|
||||
}
|
||||
|
||||
// Process when admin changes extra demands of any room while order creation process form.tpl
|
||||
public function ajaxProcessChangeRoomDemands()
|
||||
{
|
||||
if ($idCartBooking = Tools::getValue('id_cart_booking')) {
|
||||
if (Validate::isLoadedObject($objCartbookingCata = new HotelCartBookingData($idCartBooking))) {
|
||||
$roomDemands = Tools::getValue('room_demands');
|
||||
$roomDemands = Tools::jsonDecode($roomDemands, true);
|
||||
$roomDemands = Tools::jsonEncode($roomDemands);
|
||||
$objCartbookingCata->extra_demands = $roomDemands;
|
||||
if ($objCartbookingCata->save()) {
|
||||
die('1');
|
||||
}
|
||||
}
|
||||
}
|
||||
die('0');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,6 +76,14 @@ class AdminProductsControllerCore extends AdminController
|
||||
if (!Tools::getValue('id_product')) {
|
||||
$this->multishop_context_group = false;
|
||||
}
|
||||
$this->context = Context::getContext();
|
||||
|
||||
// START send access query information to the admin controller
|
||||
$this->access_select = ' SELECT a.`id_product` FROM '._DB_PREFIX_.'product a';
|
||||
$this->access_join = ' INNER JOIN '._DB_PREFIX_.'htl_room_type hrt ON (hrt.id_product = a.id_product)';
|
||||
if ($acsHtls = HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, 1, 1)) {
|
||||
$this->access_where = ' WHERE hrt.id_hotel IN ('.implode(',', $acsHtls).')';
|
||||
}
|
||||
|
||||
parent::__construct();
|
||||
|
||||
@@ -256,19 +264,6 @@ class AdminProductsControllerCore extends AdminController
|
||||
'search' => false
|
||||
);
|
||||
|
||||
//By webkul ..need not to show quantity of the product
|
||||
/*if (Configuration::get('PS_STOCK_MANAGEMENT')) {
|
||||
$this->fields_list['sav_quantity'] = array(
|
||||
'title' => $this->l('Quantity'),
|
||||
'type' => 'int',
|
||||
'align' => 'text-right',
|
||||
'filter_key' => 'sav!quantity',
|
||||
'orderby' => true,
|
||||
'badge_danger' => true,
|
||||
//'hint' => $this->l('This is the quantity available in the current shop/group.'),
|
||||
);
|
||||
}*/
|
||||
|
||||
$this->fields_list['active'] = array(
|
||||
'title' => $this->l('Status'),
|
||||
'active' => 'status',
|
||||
@@ -3341,9 +3336,7 @@ class AdminProductsControllerCore extends AdminController
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!count($disableDates)) {
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('Please add dates for status temporary disable.');
|
||||
}
|
||||
}
|
||||
@@ -3392,10 +3385,11 @@ class AdminProductsControllerCore extends AdminController
|
||||
}
|
||||
}
|
||||
//validate room status
|
||||
$disableDtsArr = array();
|
||||
foreach ($room_status as $key => $status) {
|
||||
if ($status == 3) {
|
||||
$disableDatesArray = Tools::jsonDecode($disable_dates[$key], true);
|
||||
$this->validateDisableDateRanges($disableDatesArray);
|
||||
$disableDtsArr[$key] = Tools::jsonDecode($disable_dates[$key], true);
|
||||
$this->validateDisableDateRanges($disableDtsArr[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3452,16 +3446,18 @@ class AdminProductsControllerCore extends AdminController
|
||||
$objRoomInfo->comment = $room_comment[$key];
|
||||
if ($objRoomInfo->save()) {
|
||||
if ($room_status[$key] == 3) {
|
||||
if ($disableDatesArray) {
|
||||
$objRoomDisableDates = new HotelRoomDisableDates();
|
||||
$objRoomDisableDates->deleteRoomDisableDates($objRoomInfo->id);
|
||||
foreach ($disableDatesArray as $disableDateRange) {
|
||||
$objRoomDisableDates->id_room_type = $id_product;
|
||||
$objRoomDisableDates->id_room = $objRoomInfo->id;
|
||||
$objRoomDisableDates->date_from = $disableDateRange['date_from'];
|
||||
$objRoomDisableDates->date_to = $disableDateRange['date_to'];
|
||||
$objRoomDisableDates->reason = $disableDateRange['reason'];
|
||||
$objRoomDisableDates->add();
|
||||
$objDisDts = new HotelRoomDisableDates();
|
||||
$objDisDts->deleteRoomDisableDates($objRoomInfo->id);
|
||||
if (isset($disableDtsArr[$key]) && $disableDtsArr[$key]) {
|
||||
// delete privious save dats
|
||||
foreach ($disableDtsArr[$key] as $disDtRange) {
|
||||
$objDisDts = new HotelRoomDisableDates();
|
||||
$objDisDts->id_room_type = $id_product;
|
||||
$objDisDts->id_room = $objRoomInfo->id;
|
||||
$objDisDts->date_from = $disDtRange['date_from'];
|
||||
$objDisDts->date_to = $disDtRange['date_to'];
|
||||
$objDisDts->reason = $disDtRange['reason'];
|
||||
$objDisDts->add();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3476,10 +3472,14 @@ class AdminProductsControllerCore extends AdminController
|
||||
|
||||
public function ajaxProcessDeleteHotelRoom()
|
||||
{
|
||||
$idRoom = Tools::getValue('id');
|
||||
|
||||
$objRoomInfo = new HotelRoomInformation((int)$idRoom);
|
||||
die($objRoomInfo->delete());
|
||||
if ($this->tabAccess['edit'] == 1) {
|
||||
$idRoom = Tools::getValue('id');
|
||||
$objRoomInfo = new HotelRoomInformation((int)$idRoom);
|
||||
if ($objRoomInfo->delete()) {
|
||||
die('1');
|
||||
}
|
||||
}
|
||||
die('0');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3526,10 +3526,11 @@ class AdminProductsControllerCore extends AdminController
|
||||
$bookingParams['only_active_roomtype'] = 0;
|
||||
|
||||
$booking_data = $obj_booking_dtl->getBookingData($bookingParams);
|
||||
|
||||
$bookingParams['for_calendar'] = 1;
|
||||
while ($start_date <= $last_date) {
|
||||
$cal_date_from = $start_date;
|
||||
$cal_date_to = date('Y-m-d', strtotime($cal_date_from) + 86400);
|
||||
$cal_date_to = date('Y-m-d', strtotime('+1 day', strtotime($cal_date_from)));
|
||||
$booking_calendar_data[$cal_date_from] = $obj_booking_dtl->getBookingData($bookingParams);
|
||||
|
||||
// if product is inactive then booking_details will be false
|
||||
@@ -3539,8 +3540,7 @@ class AdminProductsControllerCore extends AdminController
|
||||
$booking_calendar_data[$cal_date_from]['stats']['num_unavail'] = 0;
|
||||
$booking_calendar_data[$cal_date_from]['stats']['num_booked'] = 0;
|
||||
}
|
||||
|
||||
$start_date = date('Y-m-d', strtotime($start_date)+ 86400);
|
||||
$start_date = date('Y-m-d', strtotime('+1 day', strtotime($start_date)));
|
||||
}
|
||||
if (isset($search_flag) && $search_flag) {
|
||||
if ($booking_data['stats']['num_avail'] > 0) {
|
||||
@@ -4128,8 +4128,8 @@ class AdminProductsControllerCore extends AdminController
|
||||
if (!$specific_price['id_shop'] || in_array($specific_price['id_shop'], Shop::getContextListShopID())) {
|
||||
$content .= '
|
||||
<tr '.($i % 2 ? 'class="alt_row"' : '').'>
|
||||
<td>'.$rule_name.'</td>
|
||||
<td>'.$attributes_name.'</td>';
|
||||
<td>'.$rule_name.'</td>';
|
||||
// <td>'.$attributes_name.'</td>';
|
||||
|
||||
$can_delete_specific_prices = true;
|
||||
if (Shop::isFeatureActive()) {
|
||||
|
||||
@@ -57,7 +57,7 @@ class AdminProfilesControllerCore extends AdminController
|
||||
),
|
||||
'name' => array('title' => $this->l('Name'))
|
||||
);
|
||||
|
||||
|
||||
$this->identifier = 'id_profile';
|
||||
|
||||
$this->fields_form = array(
|
||||
@@ -112,7 +112,7 @@ class AdminProfilesControllerCore extends AdminController
|
||||
'icon' => 'process-icon-new'
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
parent::initPageHeaderToolbar();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -269,41 +269,56 @@ class CartControllerCore extends FrontController
|
||||
$id_cart = $this->context->cart->id;
|
||||
$id_guest = $this->context->cart->id_guest;
|
||||
|
||||
/*
|
||||
* By Webkul
|
||||
* This code is to check available quantity of Room before adding it to cart.
|
||||
*/
|
||||
// By Webkul : This code is to check available quantity of Room before adding it to cart.
|
||||
if (Module::isInstalled('hotelreservationsystem') && Module::isEnabled('hotelreservationsystem')) {
|
||||
require_once _PS_MODULE_DIR_.'hotelreservationsystem/define.php';
|
||||
|
||||
$obj_booking_detail = new HotelBookingDetail();
|
||||
$num_days = $obj_booking_detail->getNumberOfDays($date_from, $date_to);
|
||||
|
||||
$req_rm = $this->qty;
|
||||
$this->qty = $this->qty * (int) $num_days;
|
||||
$obj_room_type = new HotelRoomType();
|
||||
$room_info_by_id_product = $obj_room_type->getRoomTypeInfoByIdProduct($this->id_product);
|
||||
|
||||
if ($room_info_by_id_product) {
|
||||
$id_hotel = $room_info_by_id_product['id_hotel'];
|
||||
|
||||
if ($id_hotel) {
|
||||
/*Check Order restrict condition before adding in to cart*/
|
||||
$max_order_date = HotelOrderRestrictDate::getMaxOrderDate($id_hotel);
|
||||
if ($max_order_date) {
|
||||
$max_order_date = date('Y-m-d', strtotime($max_order_date));
|
||||
if ($max_order_date < $date_from || $max_order_date < $date_to) {
|
||||
$this->errors[] = Tools::displayError('You can\'t Book room after date '.$max_order_date);
|
||||
$objRoomType = new HotelRoomType();
|
||||
if ($roomTypeInfo = $objRoomType->getRoomTypeInfoByIdProduct($this->id_product)) {
|
||||
if ($id_hotel = $roomTypeInfo['id_hotel']) {
|
||||
if (strtotime($date_from) < strtotime(date('Y-m-d'))) {
|
||||
$this->errors[] = Tools::displayError('You can\'t book room before current date');
|
||||
} elseif (strtotime($date_from) >= strtotime($date_to)) {
|
||||
$this->errors[] = Tools::displayError('Check-out date must be after check-in date');
|
||||
} elseif ($maxOrdDate = HotelOrderRestrictDate::getMaxOrderDate($id_hotel)) {
|
||||
// Check Order restrict condition before adding in to cart
|
||||
if (strtotime($maxOrdDate) < strtotime($date_from)
|
||||
|| strtotime($maxOrdDate) < strtotime($date_to)
|
||||
) {
|
||||
$maxOrdDate = date('d-m-Y', strtotime($maxOrdDate));
|
||||
$this->errors[] = Tools::displayError('You can\'t book room after date '.$maxOrdDate);
|
||||
}
|
||||
}
|
||||
/*END*/
|
||||
$obj_booking_dtl = new HotelBookingDetail();
|
||||
$hotel_room_data = $obj_booking_dtl->DataForFrontSearch($date_from, $date_to, $id_hotel, $this->id_product, 1, 0, 0, -1, 0, 0, $id_cart, $id_guest);
|
||||
|
||||
$total_available_rooms = $hotel_room_data['stats']['num_avail'];
|
||||
|
||||
if ($total_available_rooms < $req_rm) {
|
||||
die(Tools::jsonEncode(array('status' => 'unavailable_quantity', 'avail_rooms' => $total_available_rooms)));
|
||||
if (!$this->errors) {
|
||||
$objBookingDtl = new HotelBookingDetail();
|
||||
$num_days = $objBookingDtl->getNumberOfDays($date_from, $date_to);
|
||||
$req_rm = $this->qty;
|
||||
$this->qty = $this->qty * (int) $num_days;
|
||||
$obj_booking_dtl = new HotelBookingDetail();
|
||||
if ($hotel_room_data = $obj_booking_dtl->DataForFrontSearch(
|
||||
$date_from,
|
||||
$date_to,
|
||||
$id_hotel,
|
||||
$this->id_product,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
-1,
|
||||
0,
|
||||
0,
|
||||
$id_cart,
|
||||
$id_guest
|
||||
)) {
|
||||
if (isset($hotel_room_data['stats']['num_avail'])) {
|
||||
$total_available_rooms = $hotel_room_data['stats']['num_avail'];
|
||||
if ($total_available_rooms < $req_rm) {
|
||||
die(Tools::jsonEncode(array('status' => 'unavailable_quantity', 'avail_rooms' => $total_available_rooms)));
|
||||
}
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('Rooms are unavailable. Please try with different dates');
|
||||
}
|
||||
} else {
|
||||
$this->errors[] = Tools::displayError('Rooms are unavailable. Please try with different dates');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
die(Tools::jsonEncode(array('status' => 'failed3')));
|
||||
|
||||
@@ -272,7 +272,10 @@ class CategoryControllerCore extends FrontController
|
||||
|
||||
$obj_booking_dtl = new HotelBookingDetail();
|
||||
$booking_data = $obj_booking_dtl->DataForFrontSearch($date_from, $date_to, $id_hotel, 0, 0, $adult, $child, $ratting, $amenities, $price, $id_cart, $id_guest);
|
||||
|
||||
if (isset($booking_data['rm_data']) && $booking_data['rm_data']) {
|
||||
// reset array keys from 0
|
||||
$booking_data['rm_data'] = array_values($booking_data['rm_data']);
|
||||
}
|
||||
if ($sort_by && $sort_value) {
|
||||
$indi_arr = array();
|
||||
|
||||
@@ -281,7 +284,6 @@ class CategoryControllerCore extends FrontController
|
||||
} elseif ($sort_value == 2) {
|
||||
$direction = SORT_DESC;
|
||||
}
|
||||
|
||||
foreach ($booking_data['rm_data'] as $s_k => $s_v) {
|
||||
if ($sort_by == 1) {
|
||||
$indi_arr[$s_k] = $s_v['ratting'];
|
||||
|
||||
@@ -122,14 +122,28 @@ class GuestTrackingControllerCore extends FrontController
|
||||
&& ($dateTo = Tools::getValue('date_to'))
|
||||
) {
|
||||
$objBookingDemand = new HotelBookingDemands();
|
||||
$order = new Order($idOrder);
|
||||
$customer = new Customer((int)$order->id_customer);
|
||||
$useTax = 0;
|
||||
if (Group::getPriceDisplayMethod($customer->id_default_group) == PS_TAX_INC) {
|
||||
$useTax = 1;
|
||||
}
|
||||
if ($extraDemands = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$idOrder,
|
||||
$idProduct,
|
||||
0,
|
||||
$dateFrom,
|
||||
$dateTo
|
||||
$dateTo,
|
||||
1,
|
||||
0,
|
||||
$useTax
|
||||
)) {
|
||||
$this->context->smarty->assign('extraDemands', $extraDemands);
|
||||
$this->context->smarty->assign(
|
||||
array(
|
||||
'useTax' => $useTax,
|
||||
'extraDemands' => $extraDemands,
|
||||
)
|
||||
);
|
||||
$extraDemandsTpl .= $this->context->smarty->fetch(_PS_THEME_DIR_.'_partials/order_booking_demands.tpl');
|
||||
}
|
||||
}
|
||||
@@ -212,7 +226,8 @@ class GuestTrackingControllerCore extends FrontController
|
||||
// enter the details of the booking the order
|
||||
if ($hotelresInstalled) {
|
||||
if ($orderProducts = $order->getProducts()) {
|
||||
$total_demands_price = 0;
|
||||
$total_demands_price_te = 0;
|
||||
$total_demands_price_ti = 0;
|
||||
foreach ($orderProducts as $type_key => $type_value) {
|
||||
if (in_array($type_value['product_id'], $processedProducts)) {
|
||||
continue;
|
||||
@@ -303,19 +318,36 @@ class GuestTrackingControllerCore extends FrontController
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to']
|
||||
);
|
||||
if (empty($cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price'])) {
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price'] = 0;
|
||||
if (empty($cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'])) {
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] = 0;
|
||||
}
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price'] += $extraDemandPrice = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$extraDemandPriceTI = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$idOrder,
|
||||
$type_value['product_id'],
|
||||
$data_v['id_room'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
$total_demands_price += $extraDemandPrice;
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] += $extraDemandPriceTI;
|
||||
if (empty($cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_te'])) {
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] = 0;
|
||||
}
|
||||
$extraDemandPriceTE = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$idOrder,
|
||||
$type_value['product_id'],
|
||||
0,
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
0
|
||||
);
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] += $extraDemandPriceTE;
|
||||
$total_demands_price_ti += $extraDemandPriceTI;
|
||||
$total_demands_price_te += $extraDemandPriceTE;
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['product_price_tax_excl'] = $order_details_obj->unit_price_tax_excl;
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['product_price_tax_incl'] = $order_details_obj->unit_price_tax_incl;
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['product_price_without_reduction_tax_excl'] = $order_details_obj->unit_price_tax_excl + $order_details_obj->reduction_amount_tax_excl;
|
||||
@@ -346,7 +378,8 @@ class GuestTrackingControllerCore extends FrontController
|
||||
|
||||
$this->context->smarty->assign(
|
||||
array(
|
||||
'total_demands_price' => $total_demands_price,
|
||||
'total_demands_price_ti' => $total_demands_price_ti,
|
||||
'total_demands_price_te' => $total_demands_price_te,
|
||||
'any_back_order' => $anyBackOrder,
|
||||
'shw_bo_msg' => Configuration::get('WK_SHOW_MSG_ON_BO'),
|
||||
'back_ord_msg' => Configuration::get('WK_BO_MESSAGE'),
|
||||
@@ -372,7 +405,8 @@ class GuestTrackingControllerCore extends FrontController
|
||||
'CUSTOMIZE_FILE' => Product::CUSTOMIZE_FILE,
|
||||
'CUSTOMIZE_TEXTFIELD' => Product::CUSTOMIZE_TEXTFIELD,
|
||||
'use_tax' => Configuration::get('PS_TAX'),
|
||||
));
|
||||
'guestInformations' => (array)$customer,
|
||||
));
|
||||
}
|
||||
|
||||
public function setMedia()
|
||||
|
||||
@@ -115,7 +115,8 @@ class OrderConfirmationControllerCore extends FrontController
|
||||
$any_back_order = 0;
|
||||
$processed_product = array();
|
||||
$orderTotalInfo = array();
|
||||
$orderTotalInfo['total_demands_price'] = 0;
|
||||
$orderTotalInfo['total_demands_price_te'] = 0;
|
||||
$orderTotalInfo['total_demands_price_ti'] = 0;
|
||||
$orderTotalInfo['total_products_te'] = 0;
|
||||
$orderTotalInfo['total_products_ti'] = 0;
|
||||
$orderTotalInfo['total_discounts'] = 0;
|
||||
@@ -219,19 +220,36 @@ class OrderConfirmationControllerCore extends FrontController
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to']
|
||||
);
|
||||
if (empty($cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price'])) {
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price'] = 0;
|
||||
if (empty($cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'])) {
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] = 0;
|
||||
}
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price'] += $extraDemandPrice = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$extraDemandPriceTI = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$idOrder,
|
||||
$type_value['product_id'],
|
||||
$data_v['id_room'],
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
$orderTotalInfo['total_demands_price'] += $extraDemandPrice;
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] += $extraDemandPriceTI;
|
||||
if (empty($cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_te'])) {
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] = 0;
|
||||
}
|
||||
$extraDemandPriceTE = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$idOrder,
|
||||
$type_value['product_id'],
|
||||
$data_v['id_room'],
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
0
|
||||
);
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] += $extraDemandPriceTE;
|
||||
$orderTotalInfo['total_demands_price_ti'] += $extraDemandPriceTI;
|
||||
$orderTotalInfo['total_demands_price_te'] += $extraDemandPriceTE;
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['product_price_tax_excl'] = $order_details_obj->unit_price_tax_excl;
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['product_price_tax_incl'] = $order_details_obj->unit_price_tax_incl;
|
||||
$cart_htl_data[$type_key]['date_diff'][$date_join]['product_price_without_reduction_tax_excl'] = $order_details_obj->unit_price_tax_excl + $order_details_obj->reduction_amount_tax_excl;
|
||||
|
||||
@@ -172,14 +172,27 @@ class OrderDetailControllerCore extends FrontController
|
||||
&& ($dateTo = Tools::getValue('date_to'))
|
||||
) {
|
||||
$objBookingDemand = new HotelBookingDemands();
|
||||
$useTax = 0;
|
||||
$customer = Context::getContext()->customer;
|
||||
if (Group::getPriceDisplayMethod($customer->id_default_group) == PS_TAX_INC) {
|
||||
$useTax = 1;
|
||||
}
|
||||
if ($extraDemands = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$idOrder,
|
||||
$idProduct,
|
||||
0,
|
||||
$dateFrom,
|
||||
$dateTo
|
||||
$dateTo,
|
||||
1,
|
||||
0,
|
||||
$useTax
|
||||
)) {
|
||||
$this->context->smarty->assign('extraDemands', $extraDemands);
|
||||
$this->context->smarty->assign(
|
||||
array(
|
||||
'useTax' => $useTax,
|
||||
'extraDemands' => $extraDemands,
|
||||
)
|
||||
);
|
||||
$extraDemandsTpl .= $this->context->smarty->fetch(_PS_THEME_DIR_.'_partials/order_booking_demands.tpl');
|
||||
}
|
||||
}
|
||||
@@ -370,7 +383,8 @@ class OrderDetailControllerCore extends FrontController
|
||||
|
||||
if ($hotelresInstalled) {
|
||||
if (!empty($products)) {
|
||||
$total_demands_price = 0;
|
||||
$total_demands_price_te = 0;
|
||||
$total_demands_price_ti = 0;
|
||||
foreach ($products as $type_key => $type_value) {
|
||||
if (in_array($type_value['product_id'], $processedProducts)) {
|
||||
continue;
|
||||
@@ -437,7 +451,6 @@ class OrderDetailControllerCore extends FrontController
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['stage_name'] = $stage_name;
|
||||
} else {
|
||||
$num_days = $objBookingDetail->getNumberOfDays($data_v['date_from'], $data_v['date_to']);
|
||||
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['num_rm'] = 1;
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['data_form'] = $data_v['date_from'];
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['data_to'] = $data_v['date_to'];
|
||||
@@ -461,19 +474,34 @@ class OrderDetailControllerCore extends FrontController
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to']
|
||||
);
|
||||
if (empty($cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price'])) {
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price'] = 0;
|
||||
if (empty($cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'])) {
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] = 0;
|
||||
}
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price'] += $extraDemandPrice = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_ti'] += $extraDemandPriceTI = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$id_order,
|
||||
$type_value['product_id'],
|
||||
$data_v['id_room'],
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
1
|
||||
);
|
||||
$total_demands_price += $extraDemandPrice;
|
||||
if (empty($cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_te'])) {
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] = 0;
|
||||
}
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['extra_demands_price_te'] += $extraDemandPriceTE = $objBookingDemand->getRoomTypeBookingExtraDemands(
|
||||
$id_order,
|
||||
$type_value['product_id'],
|
||||
$data_v['id_room'],
|
||||
$data_v['date_from'],
|
||||
$data_v['date_to'],
|
||||
0,
|
||||
1,
|
||||
0
|
||||
);
|
||||
$total_demands_price_ti += $extraDemandPriceTI;
|
||||
$total_demands_price_te += $extraDemandPriceTE;
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['product_price_tax_excl'] = $order_details_obj->unit_price_tax_excl;
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['product_price_tax_incl'] = $order_details_obj->unit_price_tax_incl;
|
||||
$cartHotelData[$type_key]['date_diff'][$date_join]['product_price_without_reduction_tax_excl'] = $order_details_obj->unit_price_tax_excl + $order_details_obj->reduction_amount_tax_excl;
|
||||
@@ -498,7 +526,8 @@ class OrderDetailControllerCore extends FrontController
|
||||
$orderAdvDetail = $objCustomerAdv->getCstAdvPaymentDtlByIdOrder($order->id);
|
||||
$this->context->smarty->assign(
|
||||
array(
|
||||
'total_demands_price' => $total_demands_price,
|
||||
'total_demands_price_ti' => $total_demands_price_ti,
|
||||
'total_demands_price_te' => $total_demands_price_te,
|
||||
'any_back_order' => $anyBackOrder,
|
||||
'shw_bo_msg' => Configuration::get('WK_SHOW_MSG_ON_BO'),
|
||||
'back_ord_msg' => Configuration::get('WK_BO_MESSAGE'),
|
||||
@@ -516,6 +545,7 @@ class OrderDetailControllerCore extends FrontController
|
||||
array(
|
||||
'shop_name' => strval(Configuration::get('PS_SHOP_NAME')),
|
||||
'order' => $order,
|
||||
'guestInformations' => (array)new Customer($order->id_customer),
|
||||
'return_allowed' => (int) $order->isReturnable(),
|
||||
'currency' => new Currency($order->id_currency),
|
||||
'order_state' => (int) $id_order_state,
|
||||
|
||||
@@ -414,21 +414,18 @@ class OrderOpcControllerCore extends ParentOrderController
|
||||
$this->context->smarty->assign('checkout_process_steps', $this->checkoutProcess->getSteps());
|
||||
|
||||
// set room type demands
|
||||
$objCartBookingData = new HotelCartBookingData();
|
||||
$objGlobalDemand = new HotelRoomTypeGlobalDemand();
|
||||
$allDemands = $objGlobalDemand->getAllDemands();
|
||||
$objCurrency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT'));
|
||||
// get room type additional services
|
||||
$objRoomDemand = new HotelRoomTypeDemand();
|
||||
$this->context->smarty->assign(
|
||||
array (
|
||||
'allDemands' => $allDemands,
|
||||
'defaultcurrencySign' => $objCurrency->sign,
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$totalFacilityCostTI = $objCartBookingData->getCartExtraDemands($this->context->cart->id, 0, 0, 0, 0, 1, 0, 1);
|
||||
$totalFacilityCostTE = $objCartBookingData->getCartExtraDemands($this->context->cart->id, 0, 0, 0, 0, 1, 0, 0);
|
||||
$this->context->smarty->assign(
|
||||
array(
|
||||
'additional_facilities_tax' => ($totalFacilityCostTI - $totalFacilityCostTE),
|
||||
'totalFacilityCostTE' => $totalFacilityCostTE,
|
||||
'allDemands' => $allDemands,
|
||||
'defaultcurrencySign' => $objCurrency->sign,
|
||||
'THEME_DIR' => _THEME_DIR_,
|
||||
'PS_CUSTOMER_ADDRESS_CREATION' => Configuration::get('PS_CUSTOMER_ADDRESS_CREATION'),
|
||||
'free_shipping' => $free_shipping,
|
||||
@@ -487,8 +484,8 @@ class OrderOpcControllerCore extends ParentOrderController
|
||||
$id_product = Tools::getValue('id_product');
|
||||
$date_from = Tools::getValue('date_from');
|
||||
$date_to = Tools::getValue('date_to');
|
||||
$obj_cart_bk_data = new HotelCartBookingData();
|
||||
if ($cart_data_dlt = $obj_cart_bk_data->deleteRoomDataFromOrderLine(
|
||||
$objCartBookingData = new HotelCartBookingData();
|
||||
if ($cart_data_dlt = $objCartBookingData->deleteRoomDataFromOrderLine(
|
||||
$this->context->cart->id,
|
||||
$this->context->cart->id_guest,
|
||||
$id_product,
|
||||
@@ -505,8 +502,6 @@ class OrderOpcControllerCore extends ParentOrderController
|
||||
} else {
|
||||
if (Module::isInstalled('hotelreservationsystem')) {
|
||||
require_once _PS_MODULE_DIR_.'hotelreservationsystem/define.php';
|
||||
|
||||
$obj_cart_bk_data = new HotelCartBookingData();
|
||||
$obj_htl_bk_dtl = new HotelBookingDetail();
|
||||
$obj_rm_type = new HotelRoomType();
|
||||
|
||||
@@ -516,7 +511,7 @@ class OrderOpcControllerCore extends ParentOrderController
|
||||
$cartChanged = false;
|
||||
foreach ($htl_rm_types as $t_key => $t_value) {
|
||||
$rm_dtl = $obj_rm_type->getRoomTypeInfoByIdProduct($t_value['id_product']);
|
||||
$cart_bk_data = $obj_cart_bk_data->getOnlyCartBookingData($this->context->cart->id, $this->context->cart->id_guest, $t_value['id_product']);
|
||||
$cart_bk_data = $objCartBookingData->getOnlyCartBookingData($this->context->cart->id, $this->context->cart->id_guest, $t_value['id_product']);
|
||||
|
||||
$cart_data = array();
|
||||
foreach ($cart_bk_data as $cd_key => $cd_val) {
|
||||
@@ -544,7 +539,7 @@ class OrderOpcControllerCore extends ParentOrderController
|
||||
'date_from' => $cl_val['date_from'],
|
||||
'date_to' => $cl_val['date_to'],
|
||||
);
|
||||
$iscartdlt = $obj_cart_bk_data->deleteRowByCartBookingData($cartData);
|
||||
$iscartdlt = $objCartBookingData->deleteRowByCartBookingData($cartData);
|
||||
if ($iscartdlt) {
|
||||
$nbDays = $obj_htl_bk_dtl->getNumberOfDays($cl_val['date_from'], $cl_val['date_to']);
|
||||
$this->context->cart->updateQty($nbDays, $t_value['id_product'], null, false, 'down');
|
||||
@@ -625,18 +620,6 @@ class OrderOpcControllerCore extends ParentOrderController
|
||||
$this->context->smarty->assign('advance_payment_active', $advance_payment_active);
|
||||
}
|
||||
}
|
||||
// total price of extra demands in the cart
|
||||
$objCartBookingData = new HotelCartBookingData();
|
||||
if ($totalDemandsPrice = $objCartBookingData->getCartExtraDemands(
|
||||
$this->context->cart->id,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
)) {
|
||||
$this->context->smarty->assign('totalDemandsPrice', $totalDemandsPrice);
|
||||
}
|
||||
}
|
||||
/*Check Order restrict condition before Payment by the customer*/
|
||||
if (Module::isInstalled('hotelreservationsystem') && Module::isEnabled('hotelreservationsystem')) {
|
||||
|
||||
@@ -169,7 +169,7 @@ class ParentOrderControllerCore extends FrontController
|
||||
{
|
||||
// For Advanced Payment (when advance paid amount will be zero when voucher will be applied)
|
||||
$freeAdvancePaymentOrder = false;
|
||||
if (Module::isInstalled('hotelreservationsystem'))
|
||||
if (Module::isInstalled('hotelreservationsystem'))
|
||||
{
|
||||
require_once (_PS_MODULE_DIR_.'hotelreservationsystem/define.php');
|
||||
$obj_adv_pmt = new HotelAdvancedPayment();
|
||||
|
||||
@@ -355,7 +355,6 @@ class ProductControllerCore extends FrontController
|
||||
$num_days = $obj_booking_detail->getNumberOfDays($date_from, $date_to);
|
||||
//$price_tax_incl = Product::getPriceStatic($this->product->id, HotelBookingDetail::useTax());
|
||||
//$total_price = $price_tax_incl * $num_days;
|
||||
//
|
||||
//// By webkul New way to calculate product prices with feature Prices
|
||||
$roomTypeDateRangePrice = HotelRoomTypeFeaturePricing::getRoomTypeTotalPrice($this->product->id, $date_from, $date_to);
|
||||
if ($useTax) {
|
||||
@@ -1035,13 +1034,17 @@ class ProductControllerCore extends FrontController
|
||||
$objRoomDemandPrice = new HotelRoomTypeDemandPrice();
|
||||
$demandsPrice = $objRoomDemandPrice->getRoomTypeDemandsTotalPrice(
|
||||
$idProduct,
|
||||
$roomDemand
|
||||
$roomDemand,
|
||||
$useTax,
|
||||
$dateFrom,
|
||||
$dateTo
|
||||
);
|
||||
$demandsPrice *= $quantity;
|
||||
$totalPrice += $demandsPrice;
|
||||
}
|
||||
}
|
||||
$result['msg'] = 'success';
|
||||
$result['quantity'] = (int)$quantity;
|
||||
$result['total_price'] = $totalPrice;
|
||||
$result['total_room_price'] = $totalRoomPrice;
|
||||
$result['extra_demand_price'] = $demandsPrice;
|
||||
|
||||
@@ -110,10 +110,6 @@ UPDATE `PREFIX_hook_module` SET position = 1
|
||||
WHERE id_module = (SELECT id_module FROM `PREFIX_module` WHERE name = 'blocksearch')
|
||||
AND id_hook = @id_hook;
|
||||
|
||||
UPDATE `PREFIX_hook_module` SET position = 2
|
||||
WHERE id_module = (SELECT id_module FROM `PREFIX_module` WHERE name = 'blockcart')
|
||||
AND id_hook = @id_hook;
|
||||
|
||||
UPDATE `PREFIX_hook_module` SET position = 3
|
||||
WHERE id_module = (SELECT id_module FROM `PREFIX_module` WHERE name = 'blocktopmenu')
|
||||
AND id_hook = @id_hook;
|
||||
|
||||
@@ -323,6 +323,18 @@
|
||||
<configuration id="PS_GUEST_CHECKOUT_ENABLED" name="PS_GUEST_CHECKOUT_ENABLED">
|
||||
<value>0</value>
|
||||
</configuration>
|
||||
<configuration id="PS_ORDER_CONF_MAIL_TO_CUSTOMER" name="PS_ORDER_CONF_MAIL_TO_CUSTOMER">
|
||||
<value>1</value>
|
||||
</configuration>
|
||||
<configuration id="PS_ORDER_CONF_MAIL_TO_SUPERADMIN" name="PS_ORDER_CONF_MAIL_TO_SUPERADMIN">
|
||||
<value>1</value>
|
||||
</configuration>
|
||||
<configuration id="PS_ORDER_CONF_MAIL_TO_HOTEL_MANAGER" name="PS_ORDER_CONF_MAIL_TO_HOTEL_MANAGER">
|
||||
<value>1</value>
|
||||
</configuration>
|
||||
<configuration id="PS_ORDER_CONF_MAIL_TO_EMPLOYEE" name="PS_ORDER_CONF_MAIL_TO_EMPLOYEE">
|
||||
<value>1</value>
|
||||
</configuration>
|
||||
<configuration id="PS_DISPLAY_SUPPLIERS" name="PS_DISPLAY_SUPPLIERS">
|
||||
<value>1</value>
|
||||
</configuration>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
</fields>
|
||||
<entities>
|
||||
<theme id="default">
|
||||
<name>hotel-theme</name>
|
||||
<name>hotel-reservation-theme</name>
|
||||
<directory>hotel-reservation-theme</directory>
|
||||
<responsive>1</responsive>
|
||||
<default_left_column>1</default_left_column>
|
||||
|
||||
@@ -25,4 +25,4 @@
|
||||
*/
|
||||
|
||||
define('_PS_INSTALL_VERSION_', '1.6.1.23');
|
||||
define('_QLO_INSTALL_VERSION_', '1.4.0');
|
||||
define('_QLO_INSTALL_VERSION_', '1.4.1');
|
||||
@@ -10,4 +10,4 @@ Adresse électronique : {email}
|
||||
|
||||
|
||||
|
||||
{shop_url} propulsé par PrestaShop™
|
||||
{shop_url} propulsé par Webkul™
|
||||
|
||||
@@ -7,4 +7,4 @@ E-mail : {email}
|
||||
|
||||
{shop_name} - {shop_url}
|
||||
|
||||
{shop_url} didukung oleh PrestaShop™
|
||||
{shop_url} didukung oleh Webkul™
|
||||
@@ -7,4 +7,4 @@ E-mail: {email}
|
||||
|
||||
{shop_name} - {shop_url}
|
||||
|
||||
{shop_url} na silniku PrestaShop™
|
||||
{shop_url} na silniku Webkul™
|
||||
@@ -10,4 +10,4 @@ Adresse électronique : {email}
|
||||
|
||||
|
||||
|
||||
{shop_url} propulsé par PrestaShop™
|
||||
{shop_url} propulsé par Webkul™
|
||||
|
||||
@@ -7,4 +7,4 @@ Adresa de e-mail: {email}
|
||||
|
||||
{shop_name} - {shop_url}
|
||||
|
||||
{shop_url} motorizat de PrestaShop™
|
||||
{shop_url} motorizat de Webkul™
|
||||
@@ -7,4 +7,4 @@
|
||||
|
||||
{shop_name} - {shop_url}
|
||||
|
||||
{shop_url} под управлением PrestaShop™
|
||||
{shop_url} под управлением Webkul™
|
||||
@@ -7,4 +7,4 @@
|
||||
|
||||
{shop_name} - {shop_url}
|
||||
|
||||
{shop_url} 是透過 PrestaShop™ 建置
|
||||
{shop_url} 是透過 Webkul™ 建置
|
||||
@@ -645,7 +645,6 @@ class InstallModelInstall extends InstallAbstractModel
|
||||
} else {
|
||||
$modules = array(
|
||||
'hotelreservationsystem',
|
||||
'blocknavigationmenu',
|
||||
'blocknewsletter',
|
||||
'blocksocial',
|
||||
'wkfooterblock',
|
||||
@@ -658,14 +657,20 @@ class InstallModelInstall extends InstallAbstractModel
|
||||
'wktestimonialblock',
|
||||
'socialsharing',
|
||||
'bankwire',
|
||||
'blockcart',
|
||||
'blockmyaccount',
|
||||
'blockuserinfo',
|
||||
'cheque',
|
||||
'paypal',
|
||||
'wkpaypaladaptive',
|
||||
'blockmyaccount',
|
||||
'blocklanguages',
|
||||
'blockcurrencies',
|
||||
'dashactivity',
|
||||
'productcomments',
|
||||
'wkfooterlangcurrencyblock',
|
||||
'wkfooterpaymentinfoblockcontainer',
|
||||
'wkfooteraboutblock',
|
||||
'wkfooterpaymentblock',
|
||||
'wkfooternotificationblock',
|
||||
'blocknavigationmenu',
|
||||
'dashactivity',
|
||||
'dashtrends',
|
||||
'dashgoals',
|
||||
'dashproducts',
|
||||
@@ -689,14 +694,9 @@ class InstallModelInstall extends InstallAbstractModel
|
||||
'statsbestvouchers',
|
||||
'statsbestcustomers',
|
||||
'statsequipment',
|
||||
'wkpaypaladaptive',
|
||||
'wkfooterlangcurrencyblock',
|
||||
'wkfooterexploreblock',
|
||||
'wkfooterpaymentinfoblockcontainer',
|
||||
'wkfooteraboutblock',
|
||||
'wkfooterpaymentblock',
|
||||
'wkfooternotificationblock',
|
||||
);
|
||||
'blockcart',
|
||||
'blockuserinfo',
|
||||
);
|
||||
}
|
||||
return $modules;
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ function create_multistore()
|
||||
$all_themes_dir = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.'themes';
|
||||
$themes = scandir($all_themes_dir);
|
||||
foreach ($themes as $theme) {
|
||||
if (!is_file($all_themes_dir.DIRECTORY_SEPARATOR.$theme) && is_dir($all_themes_dir.DIRECTORY_SEPARATOR.$theme.DIRECTORY_SEPARATOR) && $theme[0] != '.' && $theme != 'prestashop' && $theme != 'hotel-theme') {
|
||||
if (!is_file($all_themes_dir.DIRECTORY_SEPARATOR.$theme) && is_dir($all_themes_dir.DIRECTORY_SEPARATOR.$theme.DIRECTORY_SEPARATOR) && $theme[0] != '.' && $theme != 'prestashop' && $theme != 'hotel-reservation-theme') {
|
||||
$res &= Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'theme (name) VALUES("'.Db::getInstance()->escape($theme).'")');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ ALTER TABLE `PREFIX_theme` ADD `default_left_column` TINYINT( 1 ) NOT NULL DEFAU
|
||||
ALTER TABLE `PREFIX_theme` ADD `default_right_column` TINYINT( 1 ) NOT NULL DEFAULT '1';
|
||||
ALTER TABLE `PREFIX_theme` ADD `product_per_page` INT UNSIGNED NOT NULL;
|
||||
|
||||
ALTER TABLE `PREFIX_tab_lang` CHANGE `name` `name` VARCHAR(64) DEFAULT NULL;
|
||||
ALTER TABLE `PREFIX_tab_lang` CHANGE `name` `name` VARCHAR(64) DEFAULT NULL;
|
||||
|
||||
ALTER TABLE `PREFIX_attachment` ADD `file_size` bigint(10) unsigned NOT NULL DEFAULT 0 AFTER `file_name`;
|
||||
/* PHP:p1603_add_attachment_size(); */;
|
||||
@@ -21,10 +21,10 @@ INSERT INTO `PREFIX_web_browser` (name) VALUES ('IE 11');
|
||||
DELETE FROM `PREFIX_theme` WHERE `directory` = 'hotel-reservation-theme';
|
||||
|
||||
INSERT INTO `PREFIX_theme` (`name`, `directory`, `responsive`, `default_left_column`, `default_right_column`, `product_per_page`)
|
||||
VALUES ('hotel-theme', 'hotel-reservation-theme', 1, 1, 0, 12);
|
||||
VALUES ('hotel-reservation-theme', 'hotel-reservation-theme', 1, 1, 0, 12);
|
||||
|
||||
INSERT IGNORE INTO `PREFIX_theme_meta` ( `id_theme` , `id_meta` , `left_column` , `right_column` )
|
||||
SELECT `PREFIX_theme`.`id_theme` , `PREFIX_meta`.`id_meta` , `default_left_column` , `default_right_column`
|
||||
FROM `PREFIX_theme` , `PREFIX_meta`;
|
||||
|
||||
|
||||
ALTER TABLE `PREFIX_import_match` ADD UNIQUE (`name` ( 32 ));
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -88,7 +88,7 @@
|
||||
<p data-html-only="1" style="border-bottom:1px solid #D6D4D4;margin:3px 0 7px;text-transform:uppercase;font-weight:500;font-size:18px;padding-bottom:10px">
|
||||
Your {shop_name} login details </p>
|
||||
<span style="color:#777">
|
||||
Here are your login details:<br />
|
||||
Here are your login details:<br />
|
||||
<span style="color:#333"><strong>E-mail address: <a href="mailto:{email}" style="color:#337ff1">{email}</a></strong></span><br />
|
||||
<span style="color:#333"><strong>Password:</strong></span> {passwd}
|
||||
</span>
|
||||
@@ -139,7 +139,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
Thank you for creating a customer account at {shop_name}.
|
||||
Thank you for creating a customer account at {shop_name}.
|
||||
|
||||
Here are your login details:
|
||||
|
||||
E-MAIL ADDRESS: {email}
|
||||
|
||||
PASSWORD: {passwd}
|
||||
PASSWORD: {passwd}
|
||||
|
||||
Important Security Tips:
|
||||
|
||||
@@ -22,8 +22,8 @@ Important Security Tips:
|
||||
* Should you suspect someone is using your account illegally, please
|
||||
notify us immediately.
|
||||
|
||||
You can now place orders on our shop: {shop_name} [/{shop_url}]
|
||||
You can now place orders on our shop: {shop_name} [/{shop_url}]
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -102,7 +102,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
A new order has been generated on your behalf.
|
||||
A new order has been generated on your behalf.
|
||||
|
||||
Please go on {order_link} [/{order_link}] to finalize the payment.
|
||||
Please go on {order_link} [/{order_link}] to finalize the payment.
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -86,7 +86,7 @@
|
||||
<td style="padding:7px 0">
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
<p data-html-only="1" style="border-bottom:1px solid #D6D4D4;margin:3px 0 7px;text-transform:uppercase;font-weight:500;font-size:18px;padding-bottom:10px">
|
||||
Order {order_name} - Awaiting wire payment
|
||||
Order {order_name} - Awaiting wire payment
|
||||
</p>
|
||||
<span style="color:#777">
|
||||
Your order with the reference <span style="color:#333"><strong>{order_name}</strong></span> has been placed successfully and will be <strong>shipped as soon as we receive your payment</strong>. </span>
|
||||
@@ -107,10 +107,10 @@
|
||||
<td width="10" style="padding:7px 0"> </td>
|
||||
<td style="padding:7px 0">
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
<p style="border-bottom:1px solid #D6D4D4;margin:3px 0 7px;text-transform:uppercase;font-weight:500;font-size:18px;padding-bottom:10px">
|
||||
<p style="border-bottom:1px solid #D6D4D4;margin:3px 0 7px;text-transform:uppercase;font-weight:500;font-size:18px;padding-bottom:10px">
|
||||
You have selected to pay by wire transfer. </p>
|
||||
<span style="color:#777">
|
||||
Here are the bank details for your transfer:<br />
|
||||
Here are the bank details for your transfer:<br />
|
||||
<span style="color:#333"><strong>Amount:</strong></span> {total_paid}<br />
|
||||
<span style="color:#333"><strong>Account owner:</strong></span> {bankwire_owner}<br />
|
||||
<span style="color:#333"><strong>Account details:</strong></span> {bankwire_details}<br />
|
||||
@@ -148,7 +148,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
Thank you for shopping with {shop_name}!
|
||||
Thank you for shopping with {shop_name}!
|
||||
|
||||
Your order with the reference {order_name} has been placed
|
||||
successfully and will be SHIPPED AS SOON AS WE RECEIVE YOUR PAYMENT.
|
||||
successfully and will be SHIPPED AS SOON AS WE RECEIVE YOUR PAYMENT.
|
||||
|
||||
You have selected to pay by wire transfer.
|
||||
You have selected to pay by wire transfer.
|
||||
|
||||
Here are the bank details for your transfer:
|
||||
|
||||
@@ -18,15 +18,15 @@ ACCOUNT OWNER: {bankwire_owner}
|
||||
|
||||
ACCOUNT DETAILS: {bankwire_details}
|
||||
|
||||
BANK ADDRESS: {bankwire_address}
|
||||
BANK ADDRESS: {bankwire_address}
|
||||
|
||||
You can review your order and download your invoice from the
|
||||
"Order history" [/{history_url}] section of your customer account by
|
||||
clicking "My account" [/{my_account_url}] on our shop.
|
||||
clicking "My account" [/{my_account_url}] on our shop.
|
||||
|
||||
If you have a guest account, you can follow your order via the
|
||||
"Guest Tracking" [/{guest_tracking_url}] section on our shop.
|
||||
"Guest Tracking" [/{guest_tracking_url}] section on our shop.
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
71
mails/en/booking_extra_demands.tpl
Normal file
71
mails/en/booking_extra_demands.tpl
Normal file
@@ -0,0 +1,71 @@
|
||||
{if isset($list)}
|
||||
<table class="table table-recap extra-demand-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="3">{l s='Extra Demands Details'}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{l s='Room Type'}</th>
|
||||
<th>{l s='Extra demand name'}</th>
|
||||
<th>{l s='Total'} <br /> {l s='(Tax excl.)'}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{if isset($list)}
|
||||
{foreach from=$list key=data_k item=data_v}
|
||||
{foreach from=$data_v['date_diff'] key=rm_k item=rm_v}
|
||||
{if isset($rm_v['extra_demands']) && $rm_v['extra_demands']}
|
||||
{assign var=roomCount value=1}
|
||||
{foreach $rm_v['extra_demands'] as $roomDemand}
|
||||
{foreach name=demandRow from=$roomDemand['extra_demands'] item=demand}
|
||||
<tr>
|
||||
{if $smarty.foreach.demandRow.first}
|
||||
<td class="text-center" rowspan="{$roomDemand['extra_demands']|count}">
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
{$data_v['name']}<br>
|
||||
{$rm_v['data_form']|date_format:"%d-%m-%Y"} {l s='to'} {$rm_v['data_to']|date_format:"%d-%m-%Y"}<br>
|
||||
<strong>{l s='Room'} - {$roomCount}</strong>
|
||||
</font>
|
||||
</td>
|
||||
{/if}
|
||||
<td class="text-center">
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
{$demand['name']}
|
||||
</font>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
{convertPrice price=$demand['total_price_tax_excl']}
|
||||
</font>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{assign var=roomCount value=$roomCount+1}
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
<style>
|
||||
.extra-demand-table {
|
||||
width:100%;
|
||||
border-collapse:collapse;
|
||||
padding:5px;
|
||||
}
|
||||
.extra-demand-table th {
|
||||
border:1px solid #D6D4D4;
|
||||
background-color: #fbfbfb;
|
||||
color: #333;
|
||||
font-family: Arial;
|
||||
font-size: 13px;
|
||||
padding: 7px 5px;
|
||||
text-align:left;
|
||||
}
|
||||
.extra-demand-table td {
|
||||
border:1px solid #D6D4D4;
|
||||
padding:5px;
|
||||
}
|
||||
</style>
|
||||
{/if}
|
||||
40
mails/en/booking_extra_demands.txt
Normal file
40
mails/en/booking_extra_demands.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
{if isset($list)}
|
||||
{l s='Extra Demands Details'}
|
||||
{l s='Room Type'}
|
||||
{l s='Extra demand name'}
|
||||
{l s='Total'} {l s='(Tax excl.)'}
|
||||
|
||||
{if isset($list)}
|
||||
{foreach from=$list key=data_k item=data_v}
|
||||
{foreach from=$data_v['date_diff'] key=rm_k item=rm_v}
|
||||
{if isset($rm_v['extra_demands']) && $rm_v['extra_demands']}
|
||||
{assign var=roomCount value=1}
|
||||
{foreach $rm_v['extra_demands'] as $roomDemand}
|
||||
{foreach name=demandRow from=$roomDemand['extra_demands'] item=demand}
|
||||
{if $smarty.foreach.demandRow.first}
|
||||
<td class="text-center" rowspan="{$roomDemand['extra_demands']|count}">
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
{$data_v['name']}<br>
|
||||
{$rm_v['data_form']|date_format:"%d-%m-%Y"} {l s='to'} {$rm_v['data_to']|date_format:"%d-%m-%Y"}<br>
|
||||
<strong>{l s='Room'} - {$roomCount}</strong>
|
||||
</font>
|
||||
</td>
|
||||
{/if}
|
||||
<td class="text-center">
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
{$demand['name']}
|
||||
</font>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
{convertPrice price=$demand['total_price_tax_excl']}
|
||||
</font>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{assign var=roomCount value=$roomCount+1}
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
{/if}
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -112,7 +112,7 @@
|
||||
Here are the bank details for your check:<br />
|
||||
<span style="color:#333"><strong>Amount:</strong></span> {total_paid}<br />
|
||||
<span style="color:#333"><strong>Payable to the order of:</strong></span> {cheque_name}<br />
|
||||
<span style="color:#333"><strong>Please mail your check to:</strong></span> {cheque_address_html}
|
||||
<span style="color:#333"><strong>Please mail your check to:</strong></span> {cheque_address_html}
|
||||
</span>
|
||||
</font>
|
||||
</td>
|
||||
@@ -147,7 +147,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
Thank you for shopping with {shop_name}!
|
||||
Thank you for shopping with {shop_name}!
|
||||
|
||||
Your order with the reference {order_name} has been placed
|
||||
successfully and will be SHIPPED AS SOON AS WE RECEIVE YOUR PAYMENT.
|
||||
successfully and will be SHIPPED AS SOON AS WE RECEIVE YOUR PAYMENT.
|
||||
|
||||
You have selected to pay by check.
|
||||
You have selected to pay by check.
|
||||
|
||||
Here are the bank details for your check:
|
||||
|
||||
@@ -16,15 +16,15 @@ AMOUNT: {total_paid}
|
||||
|
||||
PAYABLE TO THE ORDER OF: {cheque_name}
|
||||
|
||||
PLEASE MAIL YOUR CHECK TO: {cheque_address}
|
||||
PLEASE MAIL YOUR CHECK TO: {cheque_address}
|
||||
|
||||
You can review your order and download your invoice from the
|
||||
"Order history" [/{history_url}] section of your customer account by
|
||||
clicking "My account" [/{my_account_url}] on our shop.
|
||||
clicking "My account" [/{my_account_url}] on our shop.
|
||||
|
||||
If you have a guest account, you can follow your order via the
|
||||
"Guest Tracking" [/{guest_tracking_url}] section on our shop.
|
||||
"Guest Tracking" [/{guest_tracking_url}] section on our shop.
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -103,7 +103,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Message from a {shop_name} customer
|
||||
Message from a {shop_name} customer
|
||||
|
||||
CUSTOMER E-MAIL ADDRESS: {email}
|
||||
|
||||
@@ -9,8 +9,8 @@ CUSTOMER MESSAGE: {message}
|
||||
|
||||
ORDER ID: {order_name}
|
||||
|
||||
ATTACHED FILE: {attached_file}
|
||||
ATTACHED FILE: {attached_file}
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -115,7 +115,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Your message to {shop_name} Customer Service
|
||||
Your message to {shop_name} Customer Service
|
||||
|
||||
Your message has been sent successfully.
|
||||
|
||||
@@ -11,10 +11,10 @@ ORDER ID: {order_name}
|
||||
|
||||
PRODUCT: {product_name}
|
||||
|
||||
ATTACHED FILE: {attached_file}
|
||||
ATTACHED FILE: {attached_file}
|
||||
|
||||
We will answer as soon as possible.
|
||||
We will answer as soon as possible.
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -112,7 +112,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
We have generated a credit slip in your name for order with the
|
||||
reference {order_name}.
|
||||
reference {order_name}.
|
||||
|
||||
You can review this credit slip and download your invoice from the
|
||||
"My credit slips" [/{history_url}] section of your account by clicking
|
||||
"My account" [/{my_account_url}] on our shop.
|
||||
"My account" [/{my_account_url}] on our shop.
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -123,7 +123,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
Thank you for your order with the reference {order_name} from
|
||||
{shop_name}
|
||||
{shop_name}
|
||||
|
||||
You have {nbproducts} product(s) now available for download using the
|
||||
following link(s):
|
||||
|
||||
{virtualproducts}
|
||||
{virtualproducts}
|
||||
|
||||
You can review your order and download your invoice from the
|
||||
"Order history" [/{history_url}] section of your customer account by
|
||||
clicking "My account" [/{my_account_url}] on our shop.
|
||||
clicking "My account" [/{my_account_url}] on our shop.
|
||||
|
||||
If you have a guest account, you can follow your order via the
|
||||
"Guest Tracking" [/{guest_tracking_url}?id_order={order_name}] section
|
||||
on our shop.
|
||||
on our shop.
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -106,7 +106,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
Here is your personal login information for {shop_name}:
|
||||
|
||||
@@ -11,8 +11,8 @@ LAST NAME: {lastname}
|
||||
|
||||
PASSWORD: {passwd}
|
||||
|
||||
E-MAIL ADDRESS: {email}
|
||||
E-MAIL ADDRESS: {email}
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top: 4px solid #333333">
|
||||
<span><a href="{shop_url}">{shop_name}</a> powered by <a href="http://www.prestashop.com/">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}">{shop_name}</a> powered by <a href="https://webkul.com">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -89,7 +89,7 @@
|
||||
<span style="color:#777">
|
||||
<span style="color:#333"><strong>{employee}</strong></span> wanted to forward this discussion to you. <br /><br />
|
||||
<span style="color:#333"><strong>Discussion history:</strong></span> {messages}<br /><br />
|
||||
<span style="color:#333"><strong>{employee}</strong></span> added <span style="color:#333"><strong>"{comment}"</strong></span>
|
||||
<span style="color:#333"><strong>{employee}</strong></span> added <span style="color:#333"><strong>"{comment}"</strong></span>
|
||||
</span>
|
||||
</font>
|
||||
</td>
|
||||
@@ -104,7 +104,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
{employee} wanted to forward this discussion to you.
|
||||
{employee} wanted to forward this discussion to you.
|
||||
|
||||
DISCUSSION HISTORY: {messages}
|
||||
|
||||
{employee} added "{comment}"
|
||||
{employee} added "{comment}"
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -124,7 +124,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
Your guest account for {shop_name} was converted to a customer
|
||||
account.
|
||||
account.
|
||||
|
||||
E-MAIL ADDRESS: {email}
|
||||
|
||||
PASSWORD: {passwd}
|
||||
PASSWORD: {passwd}
|
||||
|
||||
Please be careful when sharing these login details with others.
|
||||
Please be careful when sharing these login details with others.
|
||||
|
||||
You can access your customer account on our shop: {shop_url}
|
||||
You can access your customer account on our shop: {shop_url}
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
|
||||
@@ -4,58 +4,58 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
thead, tbody{width: 100%}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:425px!important;margin:auto!important;}
|
||||
thead, tbody{width: 100%}
|
||||
.table {margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table {margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr th{font-size: 10px !important}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
thead, tbody{width: 100%}
|
||||
.table {margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table {margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:340px!important;margin:auto!important;}
|
||||
thead, tbody{width: 100%}
|
||||
.table {margin:auto!important;}
|
||||
.table {margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
|
||||
@@ -109,53 +109,10 @@
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{if isset($rm_v['extra_demands']) && $rm_v['extra_demands']}
|
||||
<tr>
|
||||
<td colspan="8" style="border:1px solid #D6D4D4;">
|
||||
<p bgcolor="#f8f8f8" style="color: #333;font-family: Arial;font-weight:bold;font-size: 13px;padding-top:5px;"> {l s='Additional Facilities Details'}</p>
|
||||
<table class="demands-table" cellpadding="4" cellspacing="0" style="width:100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
{assign var=roomCount value=1}
|
||||
{foreach $rm_v['extra_demands'] as $roomDemand}
|
||||
<th bgcolor="#f8f8f8" style="border:1px solid #D6D4D4;background-color: #fbfbfb;color: #333;font-family: Arial;font-size: 13px;padding: 10px;" align="left">{l s='Room'} - {$roomCount}<br></th>
|
||||
{assign var=roomCount value=$roomCount+1}
|
||||
{/foreach}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
{foreach $rm_v['extra_demands'] as $roomDemands}
|
||||
<td style="border:1px solid #D6D4D4;">
|
||||
{foreach $roomDemands['extra_demands'] as $demand}
|
||||
<p>
|
||||
<span>
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
{$demand['name']}
|
||||
</font>
|
||||
</span> -
|
||||
<span>
|
||||
<font size="2" face="Open-sans, sans-serif" color="#555454">
|
||||
{convertPrice price=$demand['price']}
|
||||
</font>
|
||||
</span>
|
||||
</p>
|
||||
{/foreach}
|
||||
</td>
|
||||
{/foreach}
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
{/if}
|
||||
<style>
|
||||
.demands-table td, .demands-table th {
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
.pull-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
@@ -17,19 +17,6 @@
|
||||
{$rm_v['data_to']|date_format:"%d-%b-%G"}
|
||||
|
||||
{$rm_v['amount']}
|
||||
{if isset($rm_v['extra_demands']) && $rm_v['extra_demands']}
|
||||
{assign var=roomCount value=1}
|
||||
{foreach $rm_v['extra_demands'] as $roomDemand}
|
||||
{l s='Room'} - {$roomCount}
|
||||
{assign var=roomCount value=$roomCount+1}
|
||||
{/foreach}
|
||||
{foreach $rm_v['extra_demands'] as $roomDemands}
|
||||
{foreach $roomDemands['extra_demands'] as $demand}
|
||||
{$demand['name']}
|
||||
{convertPrice price=$demand['price']}
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
{/if}
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -122,7 +122,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
Your order with the reference {order_name} is currently in transit.
|
||||
Your order with the reference {order_name} is currently in transit.
|
||||
|
||||
You can track your package using the following link: {followup}
|
||||
[/{followup}]
|
||||
[/{followup}]
|
||||
|
||||
You can review your order and download your invoice from the
|
||||
"Order history" [/{history_url}] section of your customer account by
|
||||
clicking "My account" [/{my_account_url}] on our shop.
|
||||
clicking "My account" [/{my_account_url}] on our shop.
|
||||
|
||||
If you have a guest account, you can follow your order via the
|
||||
"Guest Tracking" [/{guest_tracking_url}?id_order={order_name}] section
|
||||
on our shop.
|
||||
on our shop.
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -102,7 +102,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
|
||||
[/{shop_url}]
|
||||
[/{shop_url}]
|
||||
|
||||
Hi {firstname} {lastname},
|
||||
Hi {firstname} {lastname},
|
||||
|
||||
WARNING: you have received a new log alert in your Back Office.
|
||||
|
||||
You can check for it in the "TOOLS" > "LOGS" section of your Back
|
||||
Office.
|
||||
Office.
|
||||
|
||||
{shop_name} [/{shop_url}] powered by PrestaShop(tm)
|
||||
[http://www.prestashop.com/]
|
||||
{shop_name} [/{shop_url}] powered by Webkul(tm)
|
||||
[https://webkul.com]
|
||||
|
||||
|
||||
@@ -4,56 +4,56 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>Message from {shop_name}</title>
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
|
||||
|
||||
<style> @media only screen and (max-width: 300px){
|
||||
body {
|
||||
width:218px !important;
|
||||
margin:auto !important;
|
||||
}
|
||||
.table {width:195px !important;margin:auto !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;}
|
||||
span.title{font-size:20px !important;line-height: 23px !important}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;}
|
||||
td.box p{font-size: 12px !important;font-weight: bold !important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 200px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
@media only screen and (min-width: 301px) and (max-width: 500px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
.table {width:285px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
.table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr {
|
||||
display: block !important;
|
||||
}
|
||||
.table-recap{width: 295px !important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center !important;}
|
||||
|
||||
|
||||
}
|
||||
@media only screen and (min-width: 501px) and (max-width: 768px) {
|
||||
body {width:478px!important;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.table {width:450px!important;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
}
|
||||
@media only screen and (max-device-width: 480px) {
|
||||
body {width:308px!important;margin:auto!important;}
|
||||
.table {width:285px;margin:auto!important;}
|
||||
.logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;}
|
||||
|
||||
.table-recap{width: 295px!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.table-recap tr td, .conf_body td{text-align:center!important;}
|
||||
.address{display: block !important;margin-bottom: 10px !important;}
|
||||
.space_address{display: none !important;}
|
||||
.space_address{display: none !important;}
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" >
|
||||
<body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto">
|
||||
<table class="table table-mail" style="width:100%;margin-top:10px;-moz-box-shadow:0 0 5px #afafaf;-webkit-box-shadow:0 0 5px #afafaf;-o-box-shadow:0 0 5px #afafaf;box-shadow:0 0 5px #afafaf;filter:progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5)">
|
||||
<tr>
|
||||
<td class="space" style="width:20px;padding:7px 0"> </td>
|
||||
@@ -83,7 +83,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="footer" style="border-top:4px solid #333333;padding:7px 0">
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="http://www.prestashop.com/" style="color:#337ff1">PrestaShop™</a></span>
|
||||
<span><a href="{shop_url}" style="color:#337ff1">{shop_name}</a> powered by <a href="https://webkul.com" style="color:#337ff1">Webkul™</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user