%PDF- %PDF-
Direktori : /www/varak.net/shop.varak.net/adminjanicka22/themes/default/template/controllers/orders/ |
Current File : //www/varak.net/shop.varak.net/adminjanicka22/themes/default/template/controllers/orders/form.tpl |
{* * 2007-2016 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} <script type="text/javascript"> var id_cart = {$cart->id|intval}; var id_customer = 0; var admin_order_tab_link = "{$link->getAdminLink('AdminOrders')|addslashes}"; var changed_shipping_price = false; var shipping_price_selected_carrier = ''; var current_index = '{$current|escape:'html':'UTF-8'}&token={$token|escape:'html':'UTF-8'}'; var admin_cart_link = '{$link->getAdminLink('AdminCarts')|addslashes}'; var cart_quantity = new Array(); var currencies = new Array(); var id_currency = ''; var id_lang = ''; //var txt_show_carts = '{l s='Show carts and orders for this customer.' js=1}'; //var txt_hide_carts = '{l s='Hide carts and orders for this customer.' js=1}'; var defaults_order_state = new Array(); var customization_errors = false; var pic_dir = '{$pic_dir}'; var currency_format = 5; var currency_sign = ''; var currency_blank = false; var priceDisplayPrecision = {$smarty.const._PS_PRICE_DISPLAY_PRECISION_|intval}; {foreach from=$defaults_order_state key='module' item='id_order_state'} defaults_order_state['{$module}'] = '{$id_order_state}'; {/foreach} $(document).ready(function() { $('#customer').typeWatch({ captureLength: 3, highlight: true, wait: 100, callback: function(){ searchCustomers(); } }); $('#product').typeWatch({ captureLength: 1, highlight: true, wait: 750, callback: function(){ searchProducts(); } }); $('#payment_module_name').change(function() { var id_order_state = defaults_order_state[this.value]; if (typeof(id_order_state) == 'undefined') id_order_state = defaults_order_state['other']; $('#id_order_state').val(id_order_state); }); $("#id_address_delivery").change(function() { updateAddresses(); }); $("#id_address_invoice").change(function() { updateAddresses(); }); $('#id_currency').change(function() { updateCurrency(); }); $('#id_lang').change(function(){ updateLang(); }); $('#delivery_option,#carrier_recycled_package,#order_gift,#gift_message').change(function() { updateDeliveryOption(); }); $('#shipping_price').change(function() { if ($(this).val() != shipping_price_selected_carrier) changed_shipping_price = true; }); $('#payment_module_name').change(); $.ajaxSetup({ type:"post" }); $("#voucher").autocomplete('{$link->getAdminLink('AdminCartRules')|addslashes}', { minChars: 3, max: 15, width: 250, selectFirst: false, scroll: false, dataType: "json", formatItem: function(data, i, max, value, term) { return value; }, parse: function(data) { if (!data.found) $('#vouchers_err').html('{l s='No voucher was found'}').show(); else $('#vouchers_err').hide(); var mytab = new Array(); for (var i = 0; i < data.vouchers.length; i++) mytab[mytab.length] = { data: data.vouchers[i], value: data.vouchers[i].name + (data.vouchers[i].code.length > 0 ? ' - ' + data.vouchers[i].code : '')}; return mytab; }, extraParams: { ajax: "1", token: "{getAdminToken tab='AdminCartRules'}", tab: "AdminCartRules", action: "searchCartRuleVouchers" } } ) .result(function(event, data, formatted) { $('#voucher').val(data.name); add_cart_rule(data.id_cart_rule); }); {if $cart->id} setupCustomer({$cart->id_customer|intval}); useCart('{$cart->id|intval}'); {/if} $('.delete_product').live('click', function(e) { e.preventDefault(); var to_delete = $(this).attr('rel').split('_'); deleteProduct(to_delete[1], to_delete[2], to_delete[3]); }); $('.delete_discount').live('click', function(e) { e.preventDefault(); deleteVoucher($(this).attr('rel')); }); $('.use_cart').live('click', function(e) { e.preventDefault(); useCart($(this).attr('rel')); return false; }); $('input:radio[name="free_shipping"]').on('change',function() { var free_shipping = $('input[name=free_shipping]:checked').val(); $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "updateFreeShipping", id_cart: id_cart, id_customer: id_customer, 'free_shipping': free_shipping }, success : function(res) { displaySummary(res); } }); }); $('.duplicate_order').live('click', function(e) { e.preventDefault(); duplicateOrder($(this).attr('rel')); }); $('.cart_quantity').live('change', function(e) { e.preventDefault(); if ($(this).val() != cart_quantity[$(this).attr('rel')]) { var product = $(this).attr('rel').split('_'); updateQty(product[0], product[1], product[2], $(this).val() - cart_quantity[$(this).attr('rel')]); } }); $('.increaseqty_product, .decreaseqty_product').live('click', function(e) { e.preventDefault(); var product = $(this).attr('rel').split('_'); var sign = ''; if ($(this).hasClass('decreaseqty_product')) sign = '-'; updateQty(product[0], product[1],product[2], sign+1); }); $('#id_product').live('keydown', function(e) { $(this).click(); return true; }); $('#id_product, .id_product_attribute').live('change', function(e) { e.preventDefault(); displayQtyInStock(this.id); }); $('#id_product, .id_product_attribute').live('keydown', function(e) { $(this).change(); return true; }); $('.product_unit_price').live('change', function(e) { e.preventDefault(); var product = $(this).attr('rel').split('_'); updateProductPrice(product[0], product[1], $(this).val()); }); $('#order_message').live('change', function(e) { e.preventDefault(); $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "updateOrderMessage", id_cart: id_cart, id_customer: id_customer, message: $(this).val() }, success : function(res) { displaySummary(res); } }); }); resetBind(); $('#customer').focus(); $('#submitAddProduct').on('click',function(){ addProduct(); }); $('#product').bind('keypress', function(e) { var code = (e.keyCode ? e.keyCode : e.which); if(code == 13) { e.stopPropagation(); e.preventDefault(); if ($('#submitAddProduct').length) addProduct(); } }); $('#send_email_to_customer').on('click',function(){ sendMailToCustomer(); return false; }); $('#products_found').hide(); $('#carts').hide(); $('#customer_part').on('click','button.setup-customer',function(e){ e.preventDefault(); setupCustomer($(this).data('customer')); $(this).removeClass('setup-customer').addClass('change-customer').html('<i class="icon-refresh"></i> {l s="Change"}').blur(); $(this).closest('.customerCard').addClass('selected-customer'); $('.selected-customer .panel-heading').prepend('<i class="icon-ok text-success"></i>'); $('.customerCard').not('.selected-customer').remove(); $('#search-customer-form-group').hide(); var query = 'ajax=1&token='+token+'&action=changePaymentMethod&id_customer='+$(this).data('customer'); $.ajax({ type: 'POST', url: admin_order_tab_link, headers: { "cache-control": "no-cache" }, cache: false, dataType: 'json', data : query, success : function(data) { if (data.result) $('#payment_module_name').replaceWith(data.view) } }); }); $('#customer_part').on('click','button.change-customer',function(e){ e.preventDefault(); $('#search-customer-form-group').show(); $(this).blur(); }); }); function resetBind() { $('.fancybox').fancybox({ 'type': 'iframe', 'width': '90%', 'height': '90%', }); $('.fancybox_customer').fancybox({ 'type': 'iframe', 'width': '90%', 'height': '90%', 'afterClose' : function () { searchCustomers(); } }); /*$("#new_address").fancybox({ onClosed: useCart(id_cart) });*/ } function add_cart_rule(id_cart_rule) { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "addVoucher", id_cart_rule: id_cart_rule, id_cart: id_cart, id_customer: id_customer }, success : function(res) { displaySummary(res); $('#voucher').val(''); var errors = ''; if (res.errors.length > 0) { $.each(res.errors, function() { errors += this+'<br/>'; }); $('#vouchers_err').html(errors).show(); } else $('#vouchers_err').hide(); } }); } function updateProductPrice(id_product, id_product_attribute, new_price) { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "updateProductPrice", id_cart: id_cart, id_product: id_product, id_product_attribute: id_product_attribute, id_customer: id_customer, price: new Number(new_price.replace(",",".")).toFixed(4).toString() }, success : function(res) { displaySummary(res); } }); } function displayQtyInStock(id) { var id_product = $('#id_product').val(); if ($('#ipa_' + id_product + ' option').length) var id_product_attribute = $('#ipa_' + id_product).val(); else var id_product_attribute = 0; $('#qty_in_stock').html(stock[id_product][id_product_attribute]); } function duplicateOrder(id_order) { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "duplicateOrder", id_order: id_order, id_customer: id_customer }, success : function(res) { id_cart = res.cart.id; $('#id_cart').val(id_cart); displaySummary(res); } }); } function useCart(id_new_cart) { id_cart = id_new_cart; $('#id_cart').val(id_cart); $('#id_cart').val(id_cart); $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: false, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "getSummary", id_cart: id_cart, id_customer: id_customer }, success : function(res) { displaySummary(res); } }); } function getSummary() { useCart(id_cart); } function deleteVoucher(id_cart_rule) { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "deleteVoucher", id_cart_rule: id_cart_rule, id_cart: id_cart, id_customer: id_customer }, success : function(res) { displaySummary(res); } }); } function deleteProduct(id_product, id_product_attribute, id_customization) { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "deleteProduct", id_product: id_product, id_product_attribute: id_product_attribute, id_customization: id_customization, id_cart: id_cart, id_customer: id_customer }, success : function(res) { displaySummary(res); } }); } function searchCustomers() { $.ajax({ type:"POST", url : "{$link->getAdminLink('AdminCustomers')}", async: true, dataType: "json", data : { ajax: "1", tab: "AdminCustomers", action: "searchCustomers", customer_search: $('#customer').val()}, success : function(res) { if(res.found) { var html = ''; $.each(res.customers, function() { html += '<div class="customerCard col-lg-4">'; html += '<div class="panel">'; html += '<div class="panel-heading">'+this.firstname+' '+this.lastname; html += '<span class="pull-right">#'+this.id_customer+'</span></div>'; html += '<span>'+this.email+'</span><br/>'; html += '<span class="text-muted">'+((this.birthday != '0000-00-00') ? this.birthday : '')+'</span><br/>'; html += '<div class="panel-footer">'; html += '<a href="{$link->getAdminLink('AdminCustomers')}&id_customer='+this.id_customer+'&viewcustomer&liteDisplaying=1" class="btn btn-default fancybox"><i class="icon-search"></i> {l s='Details'}</a>'; html += '<button type="button" data-customer="'+this.id_customer+'" class="setup-customer btn btn-default pull-right"><i class="icon-arrow-right"></i> {l s='Choose'}</button>'; html += '</div>'; html += '</div>'; html += '</div>'; }); } else html = '<div class="alert alert-warning">{l s='No customers found'}</div>'; $('#customers').html(html); resetBind(); } }); } function setupCustomer(idCustomer) { $('#carts').show(); $('#products_part').show(); $('#vouchers_part').show(); $('#address_part').show(); $('#carriers_part').show(); $('#summary_part').show(); var address_link = $('#new_address').attr('href'); id_customer = idCustomer; id_cart = 0; $('#new_address').attr('href', address_link.replace(/id_customer=[0-9]+/, 'id_customer='+id_customer)); $.ajax({ type:"POST", url : "{$link->getAdminLink('AdminCarts')|addslashes}", async: false, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "searchCarts", id_customer: id_customer, id_cart: id_cart }, success : function(res) { if(res.found) { var html_carts = ''; var html_orders = ''; $.each(res.carts, function() { html_carts += '<tr>'; html_carts += '<td>'+this.id_cart+'</td>'; html_carts += '<td>'+this.date_add+'</td>'; html_carts += '<td>'+this.total_price+'</td>'; html_carts += '<td class="text-right">'; html_carts += '<a title="{l s='View this cart'}" class="fancybox btn btn-default" href="index.php?tab=AdminCarts&id_cart='+this.id_cart+'&viewcart&token={getAdminToken tab='AdminCarts'}&liteDisplaying=1#"><i class="icon-search"></i> {l s="Details"}</a>'; html_carts += ' <a href="#" title="{l s='Use this cart'}" class="use_cart btn btn-default" rel="'+this.id_cart+'"><i class="icon-arrow-right"></i> {l s="Use"}</a>'; html_carts += '</td>'; html_carts += '</tr>'; }); $.each(res.orders, function() { html_orders += '<tr>'; html_orders += '<td>'+this.id_order+'</td><td>'+this.date_add+'</td><td>'+(this.nb_products ? this.nb_products : '0')+'</td><td>'+this.total_paid_real+'</span></td><td>'+this.payment+'</td><td>'+this.order_state+'</td>'; html_orders += '<td class="text-right">'; html_orders += '<a href="{$link->getAdminLink('AdminOrders')}&id_order='+this.id_order+'&vieworder&liteDisplaying=1#" title="{l s='View this order'}" class="fancybox btn btn-default"><i class="icon-search"></i> {l s="Details"}</a>'; html_orders += ' <a href="#" "title="{l s='Duplicate this order'}" class="duplicate_order btn btn-default" rel="'+this.id_order+'"><i class="icon-arrow-right"></i> {l s="Use"}</a>'; html_orders += '</td>'; html_orders += '</tr>'; }); $('#nonOrderedCarts table tbody').html(html_carts); $('#lastOrders table tbody').html(html_orders); } if (res.id_cart) { id_cart = res.id_cart; $('#id_cart').val(id_cart); } displaySummary(res); resetBind(); } }); } function updateDeliveryOptionList(delivery_option_list) { var html = ''; if (delivery_option_list.length > 0) { $.each(delivery_option_list, function() { html += '<option value="'+this.key+'" '+(($('#delivery_option').val() == this.key) ? 'selected="selected"' : '')+'>'+this.name+'</option>'; }); $('#carrier_form').show(); $('#delivery_option').html(html); $('#carriers_err').hide(); $("button[name=\"submitAddOrder\"]").removeAttr("disabled"); } else { $('#carrier_form').hide(); $('#carriers_err').show().html('{l s='No carrier can be applied to this order'}'); $("button[name=\"submitAddOrder\"]").attr("disabled", "disabled"); } } function searchProducts() { $('#products_part').show(); $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminOrders')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{$token|escape:'html':'UTF-8'}", tab: "AdminOrders", action: "searchProducts", id_cart: id_cart, id_customer: id_customer, id_currency: id_currency, product_search: $('#product').val()}, success : function(res) { var products_found = ''; var attributes_html = ''; var customization_html = ''; stock = {}; if(res.found) { if (!customization_errors) $('#products_err').addClass('hide'); else customization_errors = false; $('#products_found').show(); products_found += '<label class="control-label col-lg-3">{l s='Product'}</label><div class="col-lg-6"><select id="id_product" onclick="display_product_attributes();display_product_customizations();"></div>'; attributes_html += '<label class="control-label col-lg-3">{l s='Combination'}</label><div class="col-lg-6">'; $.each(res.products, function() { products_found += '<option '+(this.combinations.length > 0 ? 'rel="'+this.qty_in_stock+'"' : '')+' value="'+this.id_product+'">'+this.name+(this.combinations.length == 0 ? ' - '+this.formatted_price : '')+'</option>'; attributes_html += '<select class="id_product_attribute" id="ipa_'+this.id_product+'" style="display:none;">'; var id_product = this.id_product; stock[id_product] = new Array(); if (this.customizable == '1' || this.customizable == '2') { customization_html += '<div class="bootstrap"><div class="panel"><div class="panel-heading">{l s='Customization'}</div><form id="customization_'+id_product+'" class="id_customization" method="post" enctype="multipart/form-data" action="'+admin_cart_link+'" style="display:none;">'; customization_html += '<input type="hidden" name="id_product" value="'+id_product+'" />'; customization_html += '<input type="hidden" name="id_cart" value="'+id_cart+'" />'; customization_html += '<input type="hidden" name="action" value="updateCustomizationFields" />'; customization_html += '<input type="hidden" name="id_customer" value="'+id_customer+'" />'; customization_html += '<input type="hidden" name="ajax" value="1" />'; $.each(this.customization_fields, function() { class_customization_field = ""; if (this.required == 1){ class_customization_field = 'required' }; customization_html += '<div class="form-group"><label class="control-label col-lg-3 ' + class_customization_field + '" for="customization_'+id_product+'_'+this.id_customization_field+'">'; customization_html += this.name+'</label><div class="col-lg-9">'; if (this.type == 0) customization_html += '<input class="form-control customization_field" type="file" name="customization_'+id_product+'_'+this.id_customization_field+'" id="customization_'+id_product+'_'+this.id_customization_field+'">'; else if (this.type == 1) customization_html += '<input class="form-control customization_field" type="text" name="customization_'+id_product+'_'+this.id_customization_field+'" id="customization_'+id_product+'_'+this.id_customization_field+'">'; customization_html += '</div></div>'; }); customization_html += '</form></div></div>'; } $.each(this.combinations, function() { attributes_html += '<option rel="'+this.qty_in_stock+'" '+(this.default_on == 1 ? 'selected="selected"' : '')+' value="'+this.id_product_attribute+'">'+this.attributes+' - '+this.formatted_price+'</option>'; stock[id_product][this.id_product_attribute] = this.qty_in_stock; }); stock[this.id_product][0] = this.stock[0]; attributes_html += '</select>'; }); products_found += '</select></div>'; $('#products_found #product_list').html(products_found); $('#products_found #attributes_list').html(attributes_html); $('link[rel="stylesheet"]').each(function (i, element) { sheet = $(element).clone(); $('#products_found #customization_list').contents().find('head').append(sheet); }); $('#products_found #customization_list').contents().find('body').html(customization_html); display_product_attributes(); display_product_customizations(); $('#id_product').change(); } else { $('#products_found').hide(); $('#products_err').html('{l s='No products found'}'); $('#products_err').removeClass('hide'); } resetBind(); } }); } function display_product_customizations() { if ($('#products_found #customization_list').contents().find('#customization_'+$('#id_product option:selected').val()).children().length === 0) $('#customization_list').hide(); else { $('#customization_list').show(); $('#products_found #customization_list').contents().find('.id_customization').hide(); $('#products_found #customization_list').contents().find('#customization_'+$('#id_product option:selected').val()).show(); $('#products_found #customization_list').css('height',$('#products_found #customization_list').contents().find('#customization_'+$('#id_product option:selected').val()).height()+95+'px'); } } function display_product_attributes() { if ($('#ipa_'+$('#id_product option:selected').val()+' option').length === 0) $('#attributes_list').hide(); else { $('#attributes_list').show(); $('.id_product_attribute').hide(); $('#ipa_'+$('#id_product option:selected').val()).show(); } } function updateCartProducts(products, gifts, id_address_delivery) { var cart_content = ''; $.each(products, function() { var id_product = Number(this.id_product); var id_product_attribute = Number(this.id_product_attribute); cart_quantity[Number(this.id_product)+'_'+Number(this.id_product_attribute)+'_'+Number(this.id_customization)] = this.cart_quantity; cart_content += '<tr><td><img src="'+this.image_link+'" title="'+this.name+'" /></td><td>'+this.name+'<br />'+this.attributes_small+'</td><td>'+this.reference+'</td><td><input type="text" rel="'+this.id_product+'_'+this.id_product_attribute+'" class="product_unit_price" value="' + this.numeric_price + '" /></td><td>'; cart_content += (!this.id_customization ? '<div class="input-group fixed-width-md"><div class="input-group-btn"><a href="#" class="btn btn-default increaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><i class="icon-caret-up"></i></a><a href="#" class="btn btn-default decreaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'"><i class="icon-caret-down"></i></a></div>' : ''); cart_content += (!this.id_customization ? '<input type="text" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" class="cart_quantity" value="'+this.cart_quantity+'" />' : ''); cart_content += (!this.id_customization ? '<div class="input-group-btn"><a href="#" class="delete_product btn btn-default" rel="delete_'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><i class="icon-remove text-danger"></i></a></div></div>' : ''); cart_content += '</td><td>' + formatCurrency(this.numeric_total, currency_format, currency_sign, currency_blank) + '</td></tr>'; if (this.id_customization && this.id_customization != 0) { $.each(this.customized_datas[this.id_product][this.id_product_attribute][id_address_delivery], function() { var customized_desc = ''; if (typeof this.datas[1] !== 'undefined' && this.datas[1].length) { $.each(this.datas[1],function() { customized_desc += this.name + ': ' + this.value + '<br />'; id_customization = this.id_customization; }); } if (typeof this.datas[0] !== 'undefined' && this.datas[0].length) { $.each(this.datas[0],function() { customized_desc += this.name + ': <img src="' + pic_dir + this.value + '_small" /><br />'; id_customization = this.id_customization; }); } cart_content += '<tr><td></td><td>'+customized_desc+'</td><td></td><td></td><td>'; cart_content += '<div class="input-group fixed-width-md"><div class="input-group-btn"><a href="#" class="btn btn-default increaseqty_product" rel="'+id_product+'_'+id_product_attribute+'_'+id_customization+'" ><i class="icon-caret-up"></i></a><a href="#" class="btn btn-default decreaseqty_product" rel="'+id_product+'_'+id_product_attribute+'_'+id_customization+'"><i class="icon-caret-down"></i></a></div>'; cart_content += '<input type="text" rel="'+id_product+'_'+id_product_attribute+'_'+id_customization +'" class="cart_quantity" value="'+this.quantity+'" />'; cart_content += '<div class="input-group-btn"><a href="#" class="delete_product btn btn-default" rel="delete_'+id_product+'_'+id_product_attribute+'_'+id_customization+'" ><i class="icon-remove"></i></a></div></div>'; cart_content += '</td><td></td></tr>'; }); } }); $.each(gifts, function() { cart_content += '<tr><td><img src="'+this.image_link+'" title="'+this.name+'" /></td><td>'+this.name+'<br />'+this.attributes_small+'</td><td>'+this.reference+'</td>'; cart_content += '<td>{l s='Gift'}</td><td>'+this.cart_quantity+'</td><td>{l s='Gift'}</td></tr>'; }); $('#customer_cart tbody').html(cart_content); } function updateCartVouchers(vouchers) { var vouchers_html = ''; if (typeof(vouchers) == 'object') $.each(vouchers, function(){ if (parseFloat(this.value_real) === 0 && parseInt(this.free_shipping) === 1) var value = '{l s='Free shipping'}'; else var value = this.value_real; vouchers_html += '<tr><td>'+this.name+'</td><td>'+this.description+'</td><td>'+value+'</td><td class="text-right"><a href="#" class="btn btn-default delete_discount" rel="'+this.id_discount+'"><i class="icon-remove text-danger"></i> {l s='Delete'}</a></td></tr>'; }); $('#voucher_list tbody').html($.trim(vouchers_html)); if ($('#voucher_list tbody').html().length == 0) $('#voucher_list').hide(); else $('#voucher_list').show(); } function updateCartPaymentList(payment_list) { $('#payment_list').html(payment_list); } function fixPriceFormat(price) { if(price.indexOf(',') > 0 && price.indexOf('.') > 0) // if contains , and . if(price.indexOf(',') < price.indexOf('.')) // if , is before . price = price.replace(',',''); // remove , price = price.replace(' ',''); // remove any spaces price = price.replace(',','.'); // remove , if price did not cotain both , and . return price; } function displaySummary(jsonSummary) { currency_format = jsonSummary.currency.format; currency_sign = jsonSummary.currency.sign; currency_blank = jsonSummary.currency.blank; priceDisplayPrecision = jsonSummary.currency.decimals ? 2 : 0; updateCartProducts(jsonSummary.summary.products, jsonSummary.summary.gift_products, jsonSummary.cart.id_address_delivery); updateCartVouchers(jsonSummary.summary.discounts); updateAddressesList(jsonSummary.addresses, jsonSummary.cart.id_address_delivery, jsonSummary.cart.id_address_invoice); if (!jsonSummary.summary.products.length || !jsonSummary.addresses.length || !jsonSummary.delivery_option_list) $('#carriers_part,#summary_part').hide(); else $('#carriers_part,#summary_part').show(); updateDeliveryOptionList(jsonSummary.delivery_option_list); if (jsonSummary.cart.gift == 1) $('#order_gift').attr('checked', true); else $('#carrier_gift').removeAttr('checked'); if (jsonSummary.cart.recyclable == 1) $('#carrier_recycled_package').attr('checked', true); else $('#carrier_recycled_package').removeAttr('checked'); if (jsonSummary.free_shipping == 1) $('#free_shipping').attr('checked', true); else $('#free_shipping_off').attr('checked', true); $('#gift_message').html(jsonSummary.cart.gift_message); if (!changed_shipping_price) $('#shipping_price').html('<b>' + formatCurrency(parseFloat(jsonSummary.summary.total_shipping), currency_format, currency_sign, currency_blank) + '</b>'); shipping_price_selected_carrier = jsonSummary.summary.total_shipping; $('#total_vouchers').html(formatCurrency(parseFloat(jsonSummary.summary.total_discounts_tax_exc), currency_format, currency_sign, currency_blank)); $('#total_shipping').html(formatCurrency(parseFloat(jsonSummary.summary.total_shipping_tax_exc), currency_format, currency_sign, currency_blank)); $('#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_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'); $('#id_currency option[value="'+id_currency+'"]').attr('selected', true); id_lang = jsonSummary.cart.id_lang; $('#id_lang option').removeAttr('selected'); $('#id_lang option[value="'+id_lang+'"]').attr('selected', true); $('#send_email_to_customer').attr('rel', jsonSummary.link_order); $('#go_order_process').attr('href', jsonSummary.link_order); $('#order_message').val(jsonSummary.order_message); resetBind(); } function updateQty(id_product, id_product_attribute, id_customization, qty) { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "updateQty", id_product: id_product, id_product_attribute: id_product_attribute, id_customization: id_customization, qty: qty, id_customer: id_customer, id_cart: id_cart, }, success : function(res) { displaySummary(res); var errors = ''; if (res.errors.length) { $.each(res.errors, function() { errors += this + '<br />'; }); $('#products_err').removeClass('hide'); } else $('#products_err').addClass('hide'); $('#products_err').html(errors); } }); } function resetShippingPrice() { $('#shipping_price').val(shipping_price_selected_carrier); changed_shipping_price = false; } function addProduct() { var id_product = $('#id_product option:selected').val(); $('#products_found #customization_list').contents().find('#customization_'+id_product).submit(); addProductProcess(); } //Called from form_customization_feedback.tpl function customizationProductListener() { //refresh form customization searchProducts(); addProductProcess(); } function addProductProcess() { if (customization_errors) { $('#products_err').removeClass('hide'); } else { $('#products_err').addClass('hide'); updateQty($('#id_product').val(), $('#ipa_'+$('#id_product').val()+' option:selected').val(), 0, $('#qty').val()); } } function updateCurrency() { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "updateCurrency", id_currency: $('#id_currency option:selected').val(), id_customer: id_customer, id_cart: id_cart }, success : function(res) { displaySummary(res); } }); } function updateLang() { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "admincarts", action: "updateLang", id_lang: $('#id_lang option:selected').val(), id_customer: id_customer, id_cart: id_cart }, success : function(res) { displaySummary(res); } }); } function updateDeliveryOption() { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "updateDeliveryOption", delivery_option: $('#delivery_option option:selected').val(), gift: $('#order_gift').is(':checked')?1:0, gift_message: $('#gift_message').val(), recyclable: $('#carrier_recycled_package').is(':checked')?1:0, id_customer: id_customer, id_cart: id_cart }, success : function(res) { displaySummary(res); } }); } function sendMailToCustomer() { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminOrders')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminOrders'}", tab: "AdminOrders", action: "sendMailValidateOrder", id_customer: id_customer, id_cart: id_cart }, success : function(res) { if (res.errors) $('#send_email_feedback').removeClass('hide').removeClass('alert-success').addClass('alert-danger'); else $('#send_email_feedback').removeClass('hide').removeClass('alert-danger').addClass('alert-success'); $('#send_email_feedback').html(res.result); } }); } function updateAddressesList(addresses, id_address_delivery, id_address_invoice) { var addresses_delivery_options = ''; var addresses_invoice_options = ''; var address_invoice_detail = ''; var address_delivery_detail = ''; var delivery_address_edit_link = ''; var invoice_address_edit_link = ''; $.each(addresses, function() { if (this.id_address == id_address_invoice) { address_invoice_detail = this.formated_address; invoice_address_edit_link = "{$link->getAdminLink('AdminAddresses')}&id_address="+this.id_address+"&updateaddress&realedit=1&liteDisplaying=1&submitFormAjax=1#"; } if(this.id_address == id_address_delivery) { address_delivery_detail = this.formated_address; delivery_address_edit_link = "{$link->getAdminLink('AdminAddresses')}&id_address="+this.id_address+"&updateaddress&realedit=1&liteDisplaying=1&submitFormAjax=1#"; } addresses_delivery_options += '<option value="'+this.id_address+'" '+(this.id_address == id_address_delivery ? 'selected="selected"' : '')+'>'+this.alias+'</option>'; addresses_invoice_options += '<option value="'+this.id_address+'" '+(this.id_address == id_address_invoice ? 'selected="selected"' : '')+'>'+this.alias+'</option>'; }); if (addresses.length == 0) { $('#addresses_err').show().html('{l s='You must add at least one address to process the order.'}'); $('#address_delivery, #address_invoice').hide(); } else { $('#addresses_err').hide(); $('#address_delivery, #address_invoice').show(); } $('#id_address_delivery').html(addresses_delivery_options); $('#id_address_invoice').html(addresses_invoice_options); $('#address_delivery_detail').html(address_delivery_detail); $('#address_invoice_detail').html(address_invoice_detail); $('#edit_delivery_address').attr('href', delivery_address_edit_link); $('#edit_invoice_address').attr('href', invoice_address_edit_link); } function updateAddresses() { $.ajax({ type:"POST", url: "{$link->getAdminLink('AdminCarts')|addslashes}", async: true, dataType: "json", data : { ajax: "1", token: "{getAdminToken tab='AdminCarts'}", tab: "AdminCarts", action: "updateAddresses", id_customer: id_customer, id_cart: id_cart, id_address_delivery: $('#id_address_delivery option:selected').val(), id_address_invoice: $('#id_address_invoice option:selected').val() }, success : function(res) { updateDeliveryOption(); } }); } </script> <div class="leadin">{block name="leadin"}{/block}</div> <div class="panel form-horizontal" id="customer_part"> <div class="panel-heading"> <i class="icon-user"></i> {l s='Customer'} </div> <div id="search-customer-form-group" class="form-group"> <label class="control-label col-lg-3"> <span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Search for an existing customer by typing the first letters of his/her name.'}"> {l s='Search for a customer'} </span> </label> <div class="col-lg-9"> <div class="row"> <div class="col-lg-6"> <div class="input-group"> <input type="text" id="customer" value="" /> <span class="input-group-addon"> <i class="icon-search"></i> </span> </div> </div> <div class="col-lg-6"> <span class="form-control-static">{l s='Or'} </span> <a class="fancybox_customer btn btn-default" href="{$link->getAdminLink('AdminCustomers')|escape:'html':'UTF-8'}&addcustomer&liteDisplaying=1&submitFormAjax=1#"> <i class="icon-plus-sign-alt"></i> {l s='Add new customer'} </a> </div> </div> </div> </div> <div class="row"> <div id="customers"></div> </div> <div id="carts"> <button type="button" id="show_old_carts" class="btn btn-default pull-right" data-toggle="collapse" data-target="#old_carts_orders"> <i class="icon-caret-down"></i> </button> <ul id="old_carts_orders_navtab" class="nav nav-tabs"> <li class="active"> <a href="#nonOrderedCarts" data-toggle="tab"> <i class="icon-shopping-cart"></i> {l s='Carts'} </a> </li> <li> <a href="#lastOrders" data-toggle="tab"> <i class="icon-credit-card"></i> {l s='Orders'} </a> </li> </ul> <div id="old_carts_orders" class="tab-content panel collapse in"> <div id="nonOrderedCarts" class="tab-pane active"> <table class="table"> <thead> <tr> <th><span class="title_box">{l s='ID'}</span></th> <th><span class="title_box">{l s='Date'}</span></th> <th><span class="title_box">{l s='Total'}</span></th> <th></th> </tr> </thead> <tbody> </tbody> </table> </div> <div id="lastOrders" class="tab-pane"> <table class="table"> <thead> <tr> <th><span class="title_box">{l s='ID'}</span></th> <th><span class="title_box">{l s='Date'}</span></th> <th><span class="title_box">{l s='Products'}</span></th> <th><span class="title_box">{l s='Total paid'}</span></th> <th><span class="title_box">{l s='Payment'}</span></th> <th><span class="title_box">{l s='Status'}</span></th> <th></th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> </div> <form class="form-horizontal" action="{$link->getAdminLink('AdminOrders')|escape:'html':'UTF-8'}&submitAdd{$table|escape:'html':'UTF-8'}=1" method="post" autocomplete="off"> <div class="panel" id="products_part" style="display:none;"> <div class="panel-heading"> <i class="icon-shopping-cart"></i> {l s='Cart'} </div> <div class="form-group"> <label class="control-label col-lg-3"> <span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Search for an existing product by typing the first letters of its name.'}"> {l s='Search for a product'} </span> </label> <div class="col-lg-9"> <input type="hidden" value="" id="id_cart" name="id_cart" /> <div class="input-group"> <input type="text" id="product" value="" /> <span class="input-group-addon"> <i class="icon-search"></i> </span> </div> </div> </div> <div id="products_found"> <hr/> <div id="product_list" class="form-group"></div> <div id="attributes_list" class="form-group"></div> <!-- @TODO: please be kind refacto --> <div class="form-group"> <div class="col-lg-9 col-lg-offset-3"> <iframe id="customization_list" seamless> <html> <head> {if isset($css_files_orders)} {foreach from=$css_files_orders key=css_uri item=media} <link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" /> {/foreach} {/if} </head> <body> </body> </html> </iframe> </div> </div> <div class="form-group"> <label class="control-label col-lg-3" for="qty">{l s='Quantity'}</label> <div class="col-lg-9"> <input type="text" name="qty" id="qty" class="form-control fixed-width-sm" value="1" /> <p class="help-block">{l s='In stock'} <span id="qty_in_stock"></span></p> </div> </div> <div class="form-group"> <div class="col-lg-9 col-lg-offset-3"> <button type="button" class="btn btn-default" id="submitAddProduct" /> <i class="icon-ok text-success"></i> {l s='Add to cart'} </div> </div> </div> <div id="products_err" class="hide alert alert-danger"></div> <hr/> <div class="row"> <div class="col-lg-12"> <table class="table" id="customer_cart"> <thead> <tr> <th><span class="title_box">{l s='Product'}</span></th> <th><span class="title_box">{l s='Description'}</span></th> <th><span class="title_box">{l s='Reference'}</span></th> <th><span class="title_box">{l s='Unit price'}</span></th> <th><span class="title_box">{l s='Quantity'}</span></th> <th><span class="title_box">{l s='Price'}</span></th> </tr> </thead> <tbody> </tbody> </table> </div> </div> <div class="form-group"> <div class="col-lg-9 col-lg-offset-3"> <div class="alert alert-warning">{l s='The prices are without taxes.'}</div> </div> </div> <div class="form-group"> <label class="control-label col-lg-3" for="id_currency"> {l s='Currency'} </label> <script type="text/javascript"> {foreach from=$currencies item='currency'} currencies['{$currency.id_currency}'] = '{$currency.sign}'; {/foreach} </script> <div class="col-lg-9"> <select id="id_currency" name="id_currency"> {foreach from=$currencies item='currency'} <option rel="{$currency.iso_code}" value="{$currency.id_currency}">{$currency.name}</option> {/foreach} </select> </div> </div> <div class="form-group"> <label class="control-label col-lg-3" for="id_lang"> {l s='Language'} </label> <div class="col-lg-9"> <select id="id_lang" name="id_lang"> {foreach from=$langs item='lang'} <option value="{$lang.id_lang}">{$lang.name}</option> {/foreach} </select> </div> </div> </div> <div class="panel" id="vouchers_part" style="display:none;"> <div class="panel-heading"> <i class="icon-ticket"></i> {l s='Vouchers'} </div> <div class="form-group"> <label class="control-label col-lg-3"> {l s='Search for a voucher'} </label> <div class="col-lg-9"> <div class="row"> <div class="col-lg-6"> <div class="input-group"> <input type="text" id="voucher" value="" /> <div class="input-group-addon"> <i class="icon-search"></i> </div> </div> </div> <div class="col-lg-6"> <span class="form-control-static">{l s='Or'} </span> <a class="fancybox btn btn-default" href="{$link->getAdminLink('AdminCartRules')|escape:'html':'UTF-8'}&addcart_rule&liteDisplaying=1&submitFormAjax=1#"> <i class="icon-plus-sign-alt"></i> {l s='Add new voucher'} </a> </div> </div> </div> </div> <div class="row"> <table class="table" id="voucher_list"> <thead> <tr> <th><span class="title_box">{l s='Name'}</span></th> <th><span class="title_box">{l s='Description'}</span></th> <th><span class="title_box">{l s='Value'}</span></th> <th></th> </tr> </thead> <tbody> </tbody> </table> </div> <div id="vouchers_err" class="alert alert-warning" style="display:none;"></div> </div> <div class="panel" id="address_part" style="display:none;"> <div class="panel-heading"> <i class="icon-envelope"></i> {l s='Addresses'} </div> <div id="addresses_err" class="alert alert-warning" style="display:none;"></div> <div class="row"> <div id="address_delivery" class="col-lg-6"> <h4> <i class="icon-truck"></i> {l s='Delivery'} </h4> <div class="row-margin-bottom"> <select id="id_address_delivery" name="id_address_delivery"></select> </div> <div class="well"> <a href="" id="edit_delivery_address" class="btn btn-default pull-right fancybox"><i class="icon-pencil"></i> {l s='Edit'}</a> <div id="address_delivery_detail"></div> </div> </div> <div id="address_invoice" class="col-lg-6"> <h4> <i class="icon-file-text"></i> {l s='Invoice'} </h4> <div class="row-margin-bottom"> <select id="id_address_invoice" name="id_address_invoice"></select> </div> <div class="well"> <a href="" id="edit_invoice_address" class="btn btn-default pull-right fancybox"><i class="icon-pencil"></i> {l s='Edit'}</a> <div id="address_invoice_detail"></div> </div> </div> </div> <div class="row"> <div class="col-lg-12"> <a class="fancybox btn btn-default" id="new_address" href="{$link->getAdminLink('AdminAddresses')|escape:'html':'UTF-8'}&addaddress&id_customer=42&liteDisplaying=1&submitFormAjax=1#"> <i class="icon-plus-sign-alt"></i> {l s='Add a new address'} </a> </div> </div> </div> <div class="panel" id="carriers_part" style="display:none;"> <div class="panel-heading"> <i class="icon-truck"></i> {l s='Shipping'} </div> <div id="carriers_err" style="display:none;" class="alert alert-warning"></div> <div id="carrier_form"> <div class="form-group"> <label class="control-label col-lg-3"> {l s='Delivery option'} </label> <div class="col-lg-9"> <select name="delivery_option" id="delivery_option"> </select> </div> </div> <div class="form-group"> <label class="control-label col-lg-3" for="shipping_price"> {l s='Shipping price (Tax incl.)'} </label> <div class="col-lg-9"> <p id="shipping_price" class="form-control-static" name="shipping_price"></p> </div> </div> <div class="form-group"> <label class="control-label col-lg-3" for="free_shipping"> {l s='Free shipping'} </label> <div class="input-group col-lg-9 fixed-width-lg"> <span class="switch prestashop-switch"> <input type="radio" name="free_shipping" id="free_shipping" value="1"> <label for="free_shipping" class="radioCheck"> {l s='yes'} </label> <input type="radio" name="free_shipping" id="free_shipping_off" value="0" checked="checked"> <label for="free_shipping_off" class="radioCheck"> {l s='No'} </label> <a class="slide-button btn"></a> </span> </div> </div> {if $recyclable_pack} <div class="form-group"> <div class="checkbox col-lg-9 col-offset-3"> <label for="carrier_recycled_package"> <input type="checkbox" name="carrier_recycled_package" value="1" id="carrier_recycled_package" /> {l s='Recycled package'} </label> </div> </div> {/if} {if $gift_wrapping} <div class="form-group"> <div class="checkbox col-lg-9 col-offset-3"> <label for="order_gift"> <input type="checkbox" name="order_gift" id="order_gift" value="1" /> {l s='Gift'} </label> </div> </div> <div class="form-group"> <label class="control-label col-lg-3" for="gift_message">{l s='Gift message'}</label> <div class="col-lg-9"> <textarea id="gift_message" class="form-control" cols="40" rows="4"></textarea> </div> </div> {/if} </div> </div> <div class="panel" id="summary_part" style="display:none;"> <div class="panel-heading"> <i class="icon-align-justify"></i> {l s='Summary'} </div> <div id="send_email_feedback" class="hide alert"></div> <div id="cart_summary" class="panel row-margin-bottom text-center"> <div class="row"> <div class="col-lg-2"> <div class="data-focus"> <span>{l s='Total products'}</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 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> <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 data-focus-primary"> <span>{l s='Total (Tax incl.)'}</span><br/> <span id="total_with_taxes" class="size_l"></span> </div> </div> </div> </div> <div class="row"> <div class="order_message_right col-lg-12"> <div class="form-group"> <label class="control-label col-lg-3" for="order_message">{l s='Order message'}</label> <div class="col-lg-6"> <textarea name="order_message" id="order_message" rows="3" cols="45"></textarea> </div> </div> <div class="form-group"> {if !$PS_CATALOG_MODE} <div class="col-lg-9 col-lg-offset-3"> <a href="javascript:void(0);" id="send_email_to_customer" class="btn btn-default"> <i class="icon-credit-card"></i> {l s='Send an email to the customer with the link to process the payment.'} </a> <a id="go_order_process" href="" class="btn btn-link _blank"> {l s='Go on payment page to process the payment.'} <i class="icon-external-link"></i> </a> </div> {/if} </div> <div class="form-group"> <label class="control-label col-lg-3">{l s='Payment'}</label> <div class="col-lg-9"> <select name="payment_module_name" id="payment_module_name"> {if !$PS_CATALOG_MODE} {foreach from=$payment_modules item='module'} <option value="{$module->name}" {if isset($smarty.post.payment_module_name) && $module->name == $smarty.post.payment_module_name}selected="selected"{/if}>{$module->displayName}</option> {/foreach} {else} <option value="boorder">{l s='Back office order'}</option> {/if} </select> </div> </div> <div class="form-group"> <label class="control-label col-lg-3">{l s='Order status'}</label> <div class="col-lg-9"> <select name="id_order_state" id="id_order_state"> {foreach from=$order_states item='order_state'} <option value="{$order_state.id_order_state}" {if isset($smarty.post.id_order_state) && $order_state.id_order_state == $smarty.post.id_order_state}selected="selected"{/if}>{$order_state.name}</option> {/foreach} </select> </div> </div> <div class="form-group"> <div class="col-lg-9 col-lg-offset-3"> <button type="submit" name="submitAddOrder" class="btn btn-default" /> <i class="icon-check"></i> {l s='Create the order'} </button> </div> </div> </div> </div> </div> </form> <div id="loader_container"> <div id="loader"></div> </div>