161 lines
8.5 KiB
Smarty
161 lines
8.5 KiB
Smarty
{*
|
|
* Module Name: Perimeter / Length / Surface (Area) / Volume / Weight Calculator for Prestashop
|
|
* Module URI: Please contact with info@megventure.com
|
|
* Description: A utility to calculate quantity in perimeter, length, area, volume or weight units
|
|
* Version: 5.5.1
|
|
* Author: MEG Venture
|
|
*
|
|
* Copyright 2013, MEG Venture (info@megventure.com)
|
|
*
|
|
* This program is not a free software: you can't redistribute it and/or modify
|
|
* it. All rights reserved.
|
|
*
|
|
*
|
|
* This copyright notice and licence should be retained in all modules based on this framework.
|
|
* This does not affect your rights to assert copyright over your own original work.
|
|
*}
|
|
|
|
{if (($allow_ordering_from_listing) AND ($availability == 'available'))}
|
|
<form action="{$urls.pages.cart}" method="post" class="squaremeterProductListing" id="sqform_{$id_product}">
|
|
<input type="hidden" name="cartsource" value="listingpage">
|
|
<input type="hidden" name="token" value="{$token}">
|
|
<input type="hidden" name="id_product" value="{$id_product}" class="product_page_product_id">
|
|
<input type="hidden" name="id_product_attribute_{$id_product}" value="{$id_product_attribute}" class="product_page_product_attribute_id">
|
|
<input type="hidden" name="id_customization" value="0" class="product_customization_id">
|
|
<input type='hidden' id='dim_{$id_product}' name='dim_{$id_product}' value='' />
|
|
<input type='hidden' id='discretion' name='discretion' value='on' />
|
|
<input type='hidden' id='converted_ea_{$id_product}' name='converted_ea_{$id_product}' value='' />
|
|
<input type='hidden' id='calculated_total_{$id_product}' name='calculated_total_{$id_product}' value='' />
|
|
<input type='hidden' id='grand_calculated_total_{$id_product}' name='grand_calculated_total_{$id_product}' value='' />
|
|
<input type='hidden' id='product_total_price_calc_{$id_product}' name='product_total_price_calc_{$id_product}' value=''/>
|
|
<input type='hidden' id='qty_alt_{$id_product}' name='qty_alt_{$id_product}' value='' />
|
|
<input type='hidden' id='quantity_wanted_{$id_product}' name='qty_{$id_product}' value='{$minimal_qty}' min='{$minimal_qty}'>
|
|
{if ($admintab_dispquan != "decimalok")} {* If direct input is allowed, step value should be one unless decimal quantity is not allowed *}
|
|
{$step = 1}
|
|
{/if}
|
|
<div class="quantity_calculated product-quantity">
|
|
<div class="value-button decrease" onclick="decreaseValue('directinput_{$id_product}', {$step});price_calculation_{$id_product}({$id_product});check_directinput({$id_product}, {$min}, {$max});" value="Decrease Value">-</div>
|
|
<input type="text" class="directinput" id="directinput_{$id_product}" name="directinput_{$id_product}" onchange="check_directinput({$id_product}, {$min}, {$max})" value="0"/>
|
|
<div class="input-group-append">
|
|
<span class="input-group-text">{$admintab_conversion_unit|escape:'html':'UTF-8'}</span>
|
|
</div>
|
|
<div class="value-button increase" onclick="increaseValue('directinput_{$id_product}', {$step});price_calculation_{$id_product}({$id_product});check_directinput({$id_product}, {$min}, {$max});" value="Increase Value">+</div>
|
|
</div>
|
|
<button
|
|
id="button_{$id_product}"
|
|
class="btn btn-primary add-to-cart"
|
|
data-button-action="add-to-cart"
|
|
type="submit"
|
|
>
|
|
{l s='Add' mod='squaremeter'}
|
|
</button>
|
|
</form>
|
|
<span id="totalpriceinfo_{$id_product}" class="totalpriceinfo"></span>
|
|
<link rel="stylesheet" href="{$module_dir|escape:'html':'UTF-8'}views/css/jquery-ui.css">
|
|
<script src="{$module_dir|escape:'html':'UTF-8'}views/js/jquery-1.12.4.js"></script>
|
|
<script src="{$module_dir|escape:'html':'UTF-8'}views/js/jquery-ui.js"></script>
|
|
<script type="text/javascript">
|
|
{if ($psversion >= '1.7.8.0')}
|
|
$('#sqform_{$id_product}').prev().prev().find('span').after($('#totalpriceinfo_{$id_product}'));
|
|
{else}
|
|
$('#sqform_{$id_product}').prev().find('span').after($('#totalpriceinfo_{$id_product}'));
|
|
{/if}
|
|
price_calculation_{$id_product}({$id_product});
|
|
$(document).on('change', 'input#directinput_{$id_product}', function (event) {
|
|
price_calculation_{$id_product}({$id_product});
|
|
});
|
|
$(document).ready(function () {
|
|
check_directinput({$id_product}, {$min}, {$max});
|
|
if ($('button[data-id-product="{$id_product}"]')) //jms_yanka theme adaptation
|
|
$('button[data-id-product="{$id_product}"]').hide();
|
|
});
|
|
function price_calculation_{$id_product}(idProduct) {
|
|
var multiplication = $('#directinput_{$id_product}').val();
|
|
if (multiplication < 0)
|
|
multiplication = 0;
|
|
if (multiplication < {$min})
|
|
multiplication = {$min};
|
|
if (multiplication > {$max})
|
|
multiplication = {$max};
|
|
$('#qty_alt_{$id_product}').val(multiplication);
|
|
var qty_prod = document.getElementById('quantity_wanted_{$id_product}');
|
|
var qty_production = Number(qty_prod.value);
|
|
var selecteddimension = {$admintab_conversion|escape:'htmlall':'UTF-8'};
|
|
{if $admintab_secconversionselect}
|
|
selecteddimension = selecteddimension * {$admintab_secconversion|escape:'htmlall':'UTF-8'};
|
|
{/if}
|
|
fulldimension = multiplication;
|
|
extra = Math.ceil(multiplication / selecteddimension) * selecteddimension - fulldimension;
|
|
if (("{$admintab_dispquan|escape:'html':'UTF-8'}" == "onevisible")
|
|
|| ("{$admintab_dispquan|escape:'html':'UTF-8'}" == "oneinvisible")
|
|
|| ("{$admintab_dispquan|escape:'html':'UTF-8'}" == "onewithcalcvisible")
|
|
|| ("{$admintab_dispquan|escape:'html':'UTF-8'}" == "onewithcalcinvisible")
|
|
|| ("{$admintab_dispquan|escape:'html':'UTF-8'}" == "decimalok"))
|
|
{
|
|
qty_prod.value = 1;
|
|
qty_prod2 = Math.ceil(multiplication/selecteddimension);
|
|
qty_prod3 = parseFloat(Math.round((multiplication/selecteddimension) * 100) / 100).toFixed(2);
|
|
{if ($admintab_dispquan != "decimalok")}
|
|
if (qty_prod3 < 1)
|
|
qty_prod3 = 1;
|
|
{/if}
|
|
}
|
|
else
|
|
qty_prod.value = Math.ceil(multiplication/selecteddimension);
|
|
|
|
if (qty_prod.value == 0)
|
|
qty_prod.value = 1;
|
|
|
|
if ("{$admintab_dispquan|escape:'html':'UTF-8'}" == "decimalok")
|
|
product_calc_quantity = parseFloat(Math.round((multiplication/selecteddimension) * 100) / 100).toFixed(2);
|
|
else
|
|
product_calc_quantity = Math.ceil(multiplication/selecteddimension);
|
|
|
|
var dimen = document.getElementById("dim_{$id_product}");
|
|
var unit = "{$admintab_conversion_unit|escape:'html':'UTF-8'}";
|
|
dimen.value = "({l s='Total ' mod='squaremeter'}" + parseFloat(multiplication).toFixed(2) + " " + unit + ") ";
|
|
if (typeof fulldimension !== 'undefined') {
|
|
$('#calculated_total_{$id_product}').val(parseFloat(fulldimension).toFixed(2));
|
|
if ((typeof extra !== 'undefined') && ("{$admintab_dispquan|escape:'html':'UTF-8'}" != "decimalok")) {
|
|
$('#grand_calculated_total_{$id_product}').val((fulldimension).toFixed(2) + extra);
|
|
}
|
|
}
|
|
var qty_prod = document.getElementById('quantity_wanted_{$id_product}');
|
|
|
|
if(("{$admintab_dispquan|escape:'html':'UTF-8'}" == "onewithcalcinvisible")
|
|
|| ("{$admintab_dispquan|escape:'html':'UTF-8'}" == "onewithcalcvisible"))
|
|
var qty_production = qty_prod2;
|
|
else if ("{$admintab_dispquan|escape:'html':'UTF-8'}" == "decimalok")
|
|
var qty_production = qty_prod3;
|
|
else
|
|
var qty_production = Number(qty_prod.value);
|
|
$('#converted_ea_{$id_product}').val(qty_production);
|
|
var pricecurrencyval = "{$currency.sign}";
|
|
var pricenumberval = {$price};
|
|
$('#quantity_wanted_{$id_product}').change();
|
|
var product_total_price = Number({$admintab_startingprice|escape:'htmlall':'UTF-8'}) + pricenumberval * qty_production;
|
|
if ("{$admintab_dispquan|escape:'html':'UTF-8'}" == "onevisible"
|
|
|| "{$admintab_dispquan|escape:'html':'UTF-8'}" == "oneinvisible") {
|
|
product_total_price = pricenumberval;
|
|
}
|
|
{if $admintab_unit_baseprice}
|
|
if(pricenumberval > product_total_price)
|
|
product_total_price = pricenumberval;
|
|
{/if}
|
|
|
|
{if $admintab_reserve}
|
|
if(Number("{$admintab_reserve|escape:'htmlall':'UTF-8'}")>product_total_price)
|
|
product_total_price = Number({$admintab_reserve|escape:'htmlall':'UTF-8'});
|
|
{/if}
|
|
if ((product_total_price == 0) || (multiplication == 0))
|
|
$('#button_{$id_product}').prop( "disabled", true );
|
|
else
|
|
$('#button_{$id_product}').prop( "disabled", false );
|
|
$('#product_total_price_calc_{$id_product}').val(product_total_price.toFixed(2));
|
|
var totalpriceinfo = $('#totalpriceinfo_{$id_product}');
|
|
totalpriceinfo.html(" {l s='(Total' mod='squaremeter'} : <span>" + pricecurrencyval + parseFloat(product_total_price).toFixed(2) + ")</span>");
|
|
}
|
|
</script>
|
|
{/if}
|
|
|