You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

87 lines
3.3 KiB

$(function() {
var fix_float_input = function (e) {
var el = $(this);
var new_val = fix_float_string(el.val());
if (new_val != el.val())
el.val(new_val);
}
var calc_summa = function (e) {
var el = $(this);
var qty = parseFloat(el.closest('tr.row').find('td.qty input').val());
var price = parseFloat(el.closest('tr.row').find('td.price input').val());
var total_price = qty * price;
if (total_price)
el.closest('tr.row').find('td.total_price input').val(total_price.toFixed(2));
}
var calc_itogo_nds = function() {
$('#itogo_nds_text').html('НДС ' + $('#id_nds_value option:selected').text());
var nds = parseFloat($('#id_nds_value').val()) * parseFloat($('#itogo').html()) / 100;
$('#itogo_nds').html(nds.toFixed(2));
}
window.calc_itogo = function (e) {
var itogo_sum = 0;
$('#tbl_items').find('.total_price input:visible').each(function() {
var itogo_sum_row = $(this).val() ? parseFloat($(this).val()) : 0;
itogo_sum += itogo_sum_row;
})
$('#itogo').html(itogo_sum.toFixed(2));
calc_itogo_nds();
}
window.set_events = function set_events() {
$("#tbl_items tr.row td.qty input").on('keyup', fix_float_input);
$("#tbl_items tr.row td.price input").on('keyup', fix_float_input);
$("#tbl_items tr.row td.debit input").on('keyup', fix_float_input);
$("#tbl_items tr.row td.credit input").on('keyup', fix_float_input);
// not formset fields though...
$("div#saldo_debit input").on('keyup', fix_float_input);
$("div#saldo_credit input").on('keyup', fix_float_input);
$("#tbl_items tr.row td.qty input").on('keyup', calc_summa);
$("#tbl_items tr.row td.price input").on('keyup', calc_summa);
$("#tbl_items tr.row td.qty input").blur(window.calc_itogo);
$("#tbl_items tr.row td.price input").blur(window.calc_itogo);
$("#tbl_items tr.row td.total_price input").blur(window.calc_itogo);
//$('input[name=nds_type]').change(calc_itogo_nds);
$('#id_nds_value').change(calc_itogo_nds);
//
//$("#tbl_items tr.row td.qty input").blur(calc_itogo_nds);
//$("#tbl_items tr.row td.price input").blur(calc_itogo_nds);
//$("#tbl_items tr.row td.total_price input").blur(calc_itogo_nds);
}
window.set_events();
window.calc_itogo();
calc_itogo_nds();
})
function fix_float_string(val) {
try {
var part1, part2, lastpos;
lastpos = val.lastIndexOf('.');
if (lastpos != -1) { // string have at least one dot
part1 = val.substr(0, lastpos);
part2 = val.substr(lastpos+1);
val = part1.replace('.', '').replace(',', '') + '.' + part2.replace('.', '').replace(',', '');
}
else {
lastpos = val.lastIndexOf(',');
if (lastpos != -1) { // string have at least one comma
part1 = val.substr(0, lastpos);
part2 = val.substr(lastpos+1);
val = part1.replace('.', '').replace(',', '') + '.' + part2.replace('.', '').replace(',', '');
}
}
}
catch (e) {
if (!e instanceof TypeError)
throw(e);
}
return val;
}