Files
crm.twinpol.com/modules/Documents3/js/Bim-it.js

1482 lines
45 KiB
JavaScript
Raw Normal View History

2025-05-12 15:45:17 +00:00
var ajax_url = "index.php?module=EcmInvoiceOuts&action=javahelper&to_pdf=1";
var itemsTable = 'itemsTable';
var items = new Array();
var displayArray = new Array();
var searchedProducts = new Array();
function FillTable(data, allReadOnly) {
html = '';
var pozycja = 1;
var color;
// loop throw data rows
$
.each(
data,
function (row_index, row) {
html += '<tr>';
if (row.product_item == "false") {
color = '#D4D9DB';
} else {
color = '#ffffff';
}
// and insert columns
$
.each(
columns,
function (col_index, column) {
// row must have code and name
if (!row.product_code
|| row.product_code == ''
|| !row.name
|| row.name == '')
return; // return in each =
// continue in php for
// loop
// special types
if (column.name == 'number') {
html += '<td style="background-color:' + color + ';"><input class="inputs" style="text-align: center;background-color:' + color + ';" type="text" id="number_'
+ row_index
+ '" name="number_'
+ row_index
+ '" readonly value="';
if (row.product_item == "true") {
html += 'było';
allReadOnly = 'y';
} else if (row.product_item == "false") {
html += pozycja;
pozycja++;
readonly = 'readonly';
allReadOnly = null;
} else {
html += +row_index + 1;
}
html += '"/></td>';
} else if (column.name == 'name') {
html += '<td style="background-color:' + color + ';"><textarea style="width: 100%; height: 100%;background-color:' + color + ';" id="name_'
+ row_index
+ '" name="name_'
+ row_index + '"';
if (allReadOnly)
html += ' readonly';
html += '>' + row.name
+ '</textarea></td>';
} else if (column.name == 'options') {
if (allReadOnly)
html += '<td style="background-color:' + color + ';"></tr>';
else {
html += '<td style="background-color:' + color + ';">';
// move up
html += '<a onClick="moveUpRow('
+ row_index
+ ')" target="_blank"><img style="cursor:pointer;" src="modules/EcmInvoiceOuts/images/moverowup.gif"/></a>';
html += '&nbsp;';
// move down
html += '<a onClick="moveDownRow('
+ row_index
+ ')" target="_blank"><img style="cursor:pointer;" src="modules/EcmInvoiceOuts/images/moverowdown.gif"/></a>';
html += '<br>';
// delete row
html += '<a onClick="deleteRow('
+ row_index
+ ')" target="_blank"><img style="cursor:pointer;" src="modules/EcmInvoiceOuts/images/deleterow.gif"/></a>';
html += '</td>';
}
}
// other types
else {
html += '<td style="background-color:' + color + ';">';
$
.each(
column.content,
function (
cell_index,
cell) {
var cellname = column.name
+ cell.name;
if (cellname == 'product_link') {
html += '<a href="index.php?module=EcmProducts&action=DetailView&record='
+ row.product_id
+ '" target="_blank">'
+ row.product_code
+ '</a>';
} else if (cellname == 'price_start_div'
&& !allReadOnly) {
html += '<br><img style="cursor: pointer;" src="modules/EcmInvoiceOuts/images/search.gif" onClick="if ($(\'#price_start_div_'
+ row_index
+ '\').css(\'display\')==\'none\') getPricesInfo('
+ row_index
+ '); else $(\'#price_start_div_'
+ row_index
+ '\').hide(\'slow\')"/>';
html += '<div id="'
+ cellname
+ '_'
+ row_index
+ '" style="display:none;float:right;text-align:right;border: 1px #cccccc solid;padding:3px;"></div>';
} else {
if (cell.label
&& cell.label != '')
html += '<p>'
+ cell.label
+ '</p>';
html += '<input class="inputs" type="'
+ cell.type
+ '" name="'
+ cellname
+ '_'
+ row_index
+ '" id="'
+ cellname
+ '_'
+ row_index
+ '"';
if (cell.readonly
|| allReadOnly)
html += ' readonly ';
if (column.align)
html += ' style="text-align: '
+ column.align
+ ';background-color:' + color + ';"';
if (cell.onChange
|| cell.isNumber)
html += ' onChange="$(this).val(FormatNumber($(this).val()));'
+ cell.onChange
+ '" onClick="$(this).select();"';
else if (cell.onChange
|| !cell.isNumber)
html += ' onChange="'
+ cell.onChange
+ '" ';
if (row[cellname]
&& cell.isNumber)
html += ' value="'
+ FormatNumber(row[cellname])
+ '" ';
else if (row[cellname])
html += ' value="'
+ row[cellname]
+ '" ';
else {
if (cell.isNumber)
html += ' value="0,00" ';
else
html += ' value="" ';
}
html += '>';
}
});
html += '</td>';
}
});
html += '</tr>';
});
$('#' + itemsTable + '_T > tbody').html(html);
if (!allReadOnly) {
// calculate totals
var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
for (var index = 0; index != count; index++)
calculateRow(index);
} else
DrawDetailSummary();
}
function calculatePaymentDate(pid) {
var date = $("#register_date").val();
var d = date.split(".");
date = d.join(".");
var params = {
job: 'calculatePaymentDate',
pid: pid,
date: date,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
$('#payment_date').val(data);
},
data: params
});
}
function getNBPCurrencyExchange(c_id) {
var date = $("#register_date").val();
var d = date.split(".");
d[0] -= 1;
date = d.join(".");
var params = {
job: 'getNBPCurrencyExchange',
c_id: c_id,
date: date,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
if (data != false) {
$("#currency_value_nbp").val(data);
} else {
$("#currency_value_nbp").val(0);
}
},
data: params
});
}
function getPayer(id) {
var account_id = $("#address_id :selected").val();
var params = {
job: 'getAddress',
account_id: account_id,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
if (data != '-1') {
$("#parent_payer_address_name").val(data[0].description);
$("#parent_payer_address_street").val(data[0].street);
$("#parent_payer_address_postalcode").val(data[0].postalcode);
$("#parent_payer_address_city").val(data[0].city);
$("#parent_payer_address_country").val(data[0].country);
}
//$(".loading_panel").css("display", "none");
},
data: params
});
}
function getAddress(id) {
var account_id = $("#address_id :selected").val();
var params = {
job: 'getAddress',
account_id: account_id,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
if (data != '-1') {
$("#parent_shipping_address_name").val(data[0].description);
$("#parent_shipping_address_street").val(data[0].street);
$("#parent_shipping_address_postalcode").val(data[0].postalcode);
$("#parent_shipping_address_city").val(data[0].city);
$("#parent_shipping_address_country").val(data[0].country);
}
//$(".loading_panel").css("display", "none");
},
data: params
});
}
function setAddressSend(result) {
var p = new Object();
p.street = result.street;
alert(p.street);
}
function getAddresses(account_id) {
//show loading
var params = {
job: 'getAddresses',
account_id: account_id,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
$('#addresses').append(data);
$(".loading_panel").css("display", "none");
},
data: params
});
}
function getPayers(account_id) {
//show loading
var params = {
job: 'getPayers',
account_id: account_id,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
$('#payer').append(data);
$(".loading_panel").css("display", "none");
},
data: params
});
}
function calculateRow(index) {
if (index == -1)
return;
// liczone według najlepszych zasad księgowości
var price_start = UnformatNumber($('#price_start_' + index).val());
var discount = UnformatNumber($('#discount_' + index).val());
var vat_value = $('#ecmvat_value_' + index).val();
var quantity = UnformatNumber($('#quantity_' + index).val());
var price_netto = 0;
if (discount > 0)
price_netto = price_start - (price_start * (discount / 100));
else
price_netto = price_start;
var total_netto = price_netto * quantity;
// put data
$('#price_netto_' + index).val(FormatNumber(price_netto));
$('#total_netto_' + index).val(FormatNumber(total_netto));
$('#total_vat_' + index).val(FormatNumber((total_netto * vat_value) / 100));
$('#price_brutto_' + index).val(FormatNumber(((price_netto * vat_value) / 100) + price_netto));
$('#total_brutto_' + index).val(FormatNumber(((total_netto * vat_value) / 100) + total_netto));
// put data to items array
items[index].price_start = toFixed(price_start, 2);
items[index].price_netto = toFixed(price_netto, 2);
items[index].price_brutto = toFixed(((price_netto * vat_value) / 100) + price_netto, 2);
items[index].total_netto = toFixed(total_netto, 2);
items[index].total_brutto = toFixed(((total_netto * vat_value) / 100) + total_netto, 2);
items[index].total_vat = toFixed(((total_netto * vat_value) / 100), 2);
items[index].quantity = toFixed(quantity, 2);
items[index].discount = toFixed(discount, 2);
items[index].ecmvat_id = $('#ecmvat_id_' + index).val();
items[index].ecmvat_name = $('#ecmvat_name_' + index).val();
items[index].ecmvat_value = vat_value;
// put other data
items[index].recipient_code = $('#recipient_code_' + index).val();
items[index].remarks = $('#remarks_' + index).val();
// change name or language?
items[index].name = $('#name_' + index).val();
items[index].unit_name = $('#unit_name_' + index).val();
// calculate total
calculateTotal();
}
function calculateTotal() {
var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
var vats = new Array();
var all_subtotal = 0;
var all_total = 0;
var sum_vats = 0;
var sum_discounts = 0;
for (var index = 0; index != count; index++) {
subtotal = UnformatNumber($('#total_netto_' + index).val());
product_item = $('#product_item_' + index).val();
if (product_item == 'true')
continue;
all_subtotal += subtotal;
if (!$("#no_tax").is(":checked")) {
// font color to black
$("#ecmvat_name_" + index).css("color", "black");
if (!($('#ecmvat_id_' + index).val() in vats)) {
vats[$('#ecmvat_id_' + index).val()] = new Object();
vats[$('#ecmvat_id_' + index).val()].value_name = $(
'#ecmvat_name_' + index).val(); // ex. 23
vats[$('#ecmvat_id_' + index).val()].value = subtotal
* ($('#ecmvat_value_' + index).val() / 100);
} else
vats[$('#ecmvat_id_' + index).val()].value += subtotal
* ($('#ecmvat_value_' + index).val() / 100);
sum_vats += subtotal * ($('#ecmvat_value_' + index).val() / 100);
} else {
// set color to red
$("#ecmvat_name_" + index).css("color", "red");
}
if (UnformatNumber($('#discount_' + index).val()) > 0)
sum_discounts += (UnformatNumber($('#price_start_' + index).val()) * UnformatNumber($(
'#quantity_' + index).val()))
* (UnformatNumber($('#discount_' + index).val()) / 100);
}
all_total = all_subtotal + sum_vats;
DrawSummary();
$('#total_vat').val(sum_vats);
$("#t_netto").val(FormatNumber(all_subtotal));
$("#t_brutto").val(FormatNumber(all_total));
$('#to_paid').text(FormatNumber(all_total));
var paid = $('#paid_val').val();
var prepaid = $('#prepaid').val();
$('#left').text(FormatNumber(all_total - paid - prepaid));
$("#disc").val(FormatNumber(sum_discounts));
// add vats
var html = '';
var vats_summary = '';
for (var x in vats) {
html += '<td class="positionsLabel">' + vats[x].value_name + '</td>';
html += '<td class="positionsField"><input type="text" readonly="readonly" style="border:0px;font-weight:900;width:100%;text-align:right;" name="vat" id="vat" value="'
+ FormatNumber(vats[x].value) + '"></td>';
$('#result_table > tbody > tr:eq(1)').after(html);
vats_summary += vats[x].value_name + ':' + toFixed(vats[x].value, 2)
+ ',';
}
$("#vats_summary").val(vats_summary);
}
function deleteRow(index) {
items.splice(index, 1);
FillTable(items);
}
function moveUpRow(index) {
if (index == 0)
return; // Can't go upper.. :(
var new_index = index - 1;
var old_index = index;
if (new_index >= items.length) {
var k = new_index - items.length;
while ((k--) + 1) {
items.push(undefined);
}
}
items.splice(new_index, 0, items.splice(old_index, 1)[0]);
FillTable(items);
}
function moveDownRow(index) {
if (index == items.length - 1)
return; // Can't go lower.. :(
var new_index = index + 1;
var old_index = index;
if (new_index >= items.length) {
var k = new_index - items.length;
while ((k--) + 1) {
items.push(undefined);
}
}
items.splice(new_index, 0, items.splice(old_index, 1)[0]);
FillTable(items);
}
function searchAllProducts() {
var searchKey = '%';
$("#searchResultDiv").html(
'<img src="modules/EcmSales/images/loading.gif"/>');
setTimeout(function () {
var params = {
job: 'searchProducts',
searchKey: searchKey,
searchCategory: $("#productSearchCategory :selected").val(),
searchStock: $("#productSearchStock :selected").val(),
searchSort: $("#productSearchSort :selected").val(),
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
success: function (data) {
if (data != '-1')
if (data.length == 0)
$('#searchResultDiv').html(
'MOD.LBL_SEARCH_NO_RESULT');
else
createSearchResult(data);
},
data: params
});
}, 1000);
}
// draw table
function DrawHeaders() {
var html = '<link rel="stylesheet" type="text/css" href="modules/EcmInvoiceOuts/MyTable.css" />';
html += '<div style="width:100%;border: 1px solid rgb(48,192,255);background-color:white;height: 250px;overflow:auto;" id="'
+ itemsTable + 'DIV">';
html += '<table class="positions" style="width:100%;" id="' + itemsTable
+ '_T">';
html += '<thead id="head">';
html += '<tr id="tr">';
// draw columns headers
$.each(columns, function (index, column) {
html += '<td width="' + column.width + '%">' + column.label + '</td>';
});
html += '</tr></thead><tbody></tbody></table>';
html += '</div><br>';
// totals table
html += '<table width="100%"" cellpadding="0" cellspacing="0" border="0">';
html += '<tr>';
html += '<td width="55%" class="dataLabel" valign="top">';
html += '&nbsp;';
html += '</td> <!--color:#b3b9cf;-->';
html += '<td width="40%" class="dataField" style="text-align: left;">';
html += '<br>';
html += '<table id="result_table" cellpadding="0" cellspacing="0" style="width:100%; height:100%; border: 1px solid rgb(48,192,255);">';
html += '</table>';
html += '</td>';
html += '<td width="5%" class="dataField" style="text-align: left;">&nbsp;</td>';
html += '</tr>';
html += '</table>';
// sort? why not!
/*
* html += 'Sortowanie:&nbsp;'; html += '<select id="sort_field"
* onChange="sortTable();"'; html += '<option value=""></option>'; html += '<option
* value="name">Nazwa</option>'; html += '<option value="code">Kod</option>';
* html += '<option value="category">Kategoria</option>'; html += '<option
* value="category">Kategoria</option>'; html += '<option
* value="price">Cena po<br>upuście</option>'; html += '<option
* value="total">Wartość</option>'; html += '</select>';
*/
$('#' + itemsTable).html(html);
}
function DrawSummary() {
$("#result_table").html('');
html = '';
html += '<tr id="subtotal_tr"> ';
html += '<td class="positionsLabel" style="border-top:0px;">Suma netto</td>';
html += '<td class="positionsField" style="border-top:0px;"><input type="text" style="border:0px;font-weight:900;width:100%;text-align:right;" readonly="readonly" name="t_netto" id="t_netto" value=\'\'></td>';
html += '</tr>';
html += '<tr id="discount_tr"> ';
html += '<td class="positionsLabel">Upust</td>';
html += '<td class="positionsField"><input type="text" readonly="readonly" style="border:0px;font-weight:900;width:100%;text-align:right;" name="disc" id="disc" value=\'\'></td>';
html += '</tr>';
html += '<tr id="total_tr"> ';
html += '<td class="positionsLabel">Suma brutto</td>';
html += '<td class="positionsField"><input type="text" readonly="readonly" style="border:0px;font-weight:900;width:100%;text-align:right;" name="t_brutto" id="t_brutto" value=\'\'></td>';
html += '</tr>';
$("#result_table").html(html);
}
function searchProducts() {
var searchKey = $('#searchProductsInput').val();
if (searchKey.length < 2 && searchKey != '%') {
return;
}
$("#searchResultDiv").html(
'<img src="modules/EcmInvoiceOuts/images/loading.gif"/>');
setTimeout(function () {
if (searchKey == $('#searchProductsInput').val()) {
var params = {
job: 'searchProducts',
searchKey: searchKey,
searchCategory: $("#productSearchCategory :selected").val(),
searchStock: $("#productSearchStock :selected").val(),
searchSort: $("#productSearchSort :selected").val(),
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
success: function (data) {
if (data != '-1')
if (data.length == 0)
$('#searchResultDiv').html(
'MOD.LBL_SEARCH_NO_RESULT');
else
createSearchResult(data);
},
data: params
});
}
}, 1000);
}
function createSearchResult(data) {
var html = '<table style="text-align: center;" cellpadding="0" cellspacing="0" width="100%" border="0" class="list view">';
html += '<theader><tr>';
html += '<th style="width: 15pt; margin: auto auto;">&nbsp</th>';
html += '<th style="width: 100pt; text-align: center;">Kod</th>';
html += '<th style="width: 300pt; text-align: center;">Nazwa</th>';
if ($("#productSearchStock :selected").val() != '1')
html += '<th style="width: 30pt; text-align: center;">Stan</th>';
html += '<th style="width: 15pt; margin: auto auto;">&nbsp</th>';
html += '</tr></thead>';
var counter;
$
.each(
data,
function (index, value) {
if (counter % 2 == 0) {
html += '<tr style="height: 15pt;" class="oddListRowS1">';
} else {
html += '<tr style="height: 15pt;" class="evenListRowS1">';
}
html += '<td style=""><input id="prod_'
+ value.id + '" type="checkbox"/></td>';
html += '<td style="" onClick="$(\'#prod_'
+ value.id
+ '\').prop(\'checked\', true);">'
+ value.code + '</td>';
html += '<td style="" onClick="unsetAllCheckboxes(); $(\'#prod_'
+ value.id
+ '\').prop(\'checked\', true); return addProducts();">'
+ value.name + '</td>';
if ($("#productSearchStock :selected").val() != '1')
html += '<td style="">'
+ value.stock_state + '</td>';
html += '<td style="">';
html += '<img style="cursor: pointer;" src="modules/EcmSales/images/search.gif" onClick="if ($(\'#search_info_div_'
+ value.id
+ '\').css(\'display\')==\'none\') getSearchInfo(\''
+ value.id
+ '\',\''
+ value.code
+ '\'); else $(\'#search_info_div_'
+ value.id
+ '\').hide(\'slow\')"/>';
html += '<div id="'
+ 'search_info_div_'
+ value.id
+ '" style="display:none;float:right;text-align:right;border: 1px #cccccc solid;padding:3px;"></div>';
html += '</td>';
html += '</tr>';
searchedProducts.push(value.id);
counter++;
});
// add button
html += '</table><br>';
html += 'Cena:&nbsp<input type="text" id="searchInputPrice" value=""/>&nbspIlość:&nbsp<input type="text" id="searchInputQty" value=""/>';
html += '<br><br><input type="button" value="Dodaj wiele" onClick="return addProducts();"/>';
$('#searchResultDiv').html(html);
}
function unsetAllCheckboxes() {
$("#searchResultDiv input[type=checkbox]").each(function () {
$(this).prop("checked", false);
});
}
function addProducts() {
$(".loading_panel").css("display", "block");
var products = new Array();
$.each(searchedProducts, function (index, value) {
if ($('#prod_' + value).is(':checked'))
products[value] = true;
});
var pricebook = $("#pricebook_id :selected").val();
for (var key in products) {
var params = {
job: 'getProduct',
id: key,
pricebook: pricebook,
account_id: $("#parent_id").val(),
language: $("#ecmlanguage").val(),
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
if (data != '-1') {
var p = new Object();
p.product_id = data.id;
p.name = data.name;
p.product_code = data.code;
p.product_id = data.id;
p.ecmvat_id = data.ecmvat_id;
p.ecmvat_value = data.ecmvat_value;
p.ecmvat_name = data.ecmvat_name;
p.product_ean = data.ean;
p.product_ean2 = data.ean2;
p.unit_name = data.unit_name;
p.unit_id = data.unit_id;
p.price_start = data.price_start;
p.recipient_code = data.recipient_code;
if ($("#searchInputPrice").val() != ''
&& !isNaN(parseFloat(UnformatNumber($(
"#searchInputPrice").val()))))
p.price_start = $("#searchInputPrice").val();
if ($("#searchInputQty").val() != ''
&& !isNaN(parseFloat(UnformatNumber($(
"#searchInputQty").val()))))
p.quantity = $("#searchInputQty").val();
items.push(p);
}
},
data: params
});
}
FillTable(items);
// clear results
$('#searchResultDiv').html('');
searchedProducts = new Array();
$('#searchProductsInput').val('');
$(".loading_panel").css("display", "none");
}
function getItems(editview) {
var record = '';
if ($("#duplicate").val() == true)
record = $("input[name='return_id']").val();
else
record = $("input[name='record']").val();
var type = '';
if ($("#is_correct").val() == true)
type = true;
else
type = '';
if (isNaN(editview))
editview = true;
var params = {
job: 'getItems',
record: record,
type: type,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
success: function (data) {
items = data;
if (editview)
FillTable(items, false);
else
FillTable(items, true);
$(".loading_panel").css("display", "none");
},
data: params
});
}
function getItemsFromSale(editview) {
var record = '';
if ($("#is_sale").val() == true)
record = $("input[name='so_id']").val();
else
record = $("input[name='so_id']").val();
var type = '';
if ($("#is_correct").val() == true)
type = true;
else
type = '';
if (isNaN(editview))
editview = true;
var params = {
job: 'getItemsFromSale',
record: record,
type: type,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
success: function (data) {
items = data;
if (editview)
FillTable(items, false);
else
FillTable(items, true);
$(".loading_panel").css("display", "none");
},
data: params
});
}
function getItemsFromWZ(editview) {
var record = '';
if ($("#is_wz").val() == true)
record = $("input[name='wz_id']").val();
else
record = $("input[name='wz_id']").val();
var type = '';
if ($("#is_correct").val() == true)
type = true;
else
type = '';
if (isNaN(editview))
editview = true;
var params = {
job: 'getItemsFromWZ',
record: record,
type: type,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
success: function (data) {
items = data;
if (editview)
FillTable(items, false);
else
FillTable(items, true);
$(".loading_panel").css("display", "none");
},
data: params
});
}
function DrawDetailSummary() {
DrawSummary();
$("#t_netto").val(FormatNumber($("#total_netto").val()));
$("#t_brutto").val(FormatNumber($("#total_brutto").val()));
$("#disc").val(FormatNumber($("#discount").val()));
if ($("#no_tax").val() == '1') {
$("input[name^=ecmvat_name]").css("color", "red");
return;
}
var html = '';
var vats = $("#vats_summary").val().split(",");
for (var i = 0; i < vats.length - 1; i++) {// last element is empty
var vat = vats[i].split(":");
html += '<tr><td class="positionsLabel">' + vat[0] + '</td>';
html += '<td class="positionsField"><input type="text" readonly="readonly" style="border:0px;font-weight:900;width:100%;text-align:right;" name="vat" id="vat" value="'
+ FormatNumber(vat[2]) + '"></td></tr>';
}
$('#result_table > tbody > tr:eq(1)').after(html);
}
function changeLanguage() {
$(".loading_panel").css("display", "block");
var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
for (var index = 0; index != count; index++) {
var params = {
job: 'getTranslation',
product_id: $("#product_id_" + index).val(),
language: $("#ecmlanguage").val(),
unit_id: $("#unit_id_" + index).val(),
};
$.ajax({
type: "POST",
url: ajax_url,
async: false,
dataType: "json",
success: function (data) {
$("#name_" + index).val(data.name);
$("#unit_name_" + index).val(data.unit_name);
calculateRow(index);
},
data: params
});
}
$(".loading_panel").css("display", "none");
}
function getPricesInfo(index) {
$("#price_start_div_" + index).show('slow');
$("#price_start_div_" + index).html(
'<img src="modules/EcmInvoiceOuts/images/loading.gif"/>');
var params = {
job: 'getPricesInfo',
product_id: $("#product_id_" + index).val(),
pricebook_id: $("#pricebook_id :selected").val(),
account_id: $("#parent_id").val(),
};
$
.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
html = '<ul style="font-size: 7pt;">';
$
.each(
data,
function (key, value) {
if (value.name == 'pricebook') {
html += '<li style="cursor:pointer;" onClick="$(\'#price_start_'
+ index
+ '\').val(\''
+ FormatNumber(value.price)
+ '\'); $(this).closest(\'div\').hide(\'slow\');calculateRow('
+ index
+ ')"><u>'
+ $(
"#pricebook_id :selected")
.html()
+ ': '
+ FormatNumber(value.price)
+ '</u></li>';
} else if (value.name == $(
"#ecmprice_name").val()) {
html += '<li style="cursor:pointer;" onClick="$(\'#price_start_'
+ index
+ '\').val(\''
+ FormatNumber(value.price)
+ '\'); $(this).closest(\'div\').hide(\'slow\');calculateRow('
+ index
+ ');"><b>'
+ value.name
+ ': '
+ FormatNumber(value.price)
+ '</b></li>';
} else {
html += '<li style="cursor:pointer;" onClick="$(\'#price_start_'
+ index
+ '\').val(\''
+ FormatNumber(value.price)
+ '\'); $(this).closest(\'div\').hide(\'slow\');calculateRow('
+ index
+ ');">'
+ value.name
+ ': '
+ FormatNumber(value.price)
+ '</li>';
}
});
html += '</ul>';
},
data: params
});
$("#price_start_div_" + index).html(html);
}
function getSearchInfo(product_id, product_code) {
$("#search_info_div_" + product_id).show('slow');
var html = '<a href="index.php?module=EcmProducts&action=DetailView&record='
+ product_id + '" target="_blank">' + product_code + '</a><br><br>';
html += '<table><tr><td><table><tr><td>';
// get prices info
var params = {
job: 'getPricesInfo',
product_id: product_id,
pricebook_id: $("#pricebook_id :selected").val(),
account_id: $("#parent_id").val(),
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
html += 'Ceny<br>';
$.each(data, function (key, value) {
if (value.name == 'pricebook')
html += $("#pricebook_id :selected").html() + ': '
+ FormatNumber(value.price) + '<br>';
if (value.name == $("#ecmprice_name").val())
html += '<b>' + value.name + ': '
+ FormatNumber(value.price) + '</b><br>';
else
html += value.name + ': ' + FormatNumber(value.price)
+ '<br>';
});
},
data: params
});
html += '</td></tr></table></td><td><table><tr><td>';
var params = {
job: 'getStockArray',
product_id: product_id,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
html += 'Stany<br>';
$.each(data, function (key, value) {
html += key + ': ' + FormatNumber(value)
+ '<br>';
});
},
data: params
});
html += '</td></tr></table></td>';
var show_purchase_prices = false;
if (show_purchase_prices) {
html += '<td><table><tr><td>';
var params = {
job: 'getPurchaseArray',
product_id: product_id,
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
async: false,
success: function (data) {
console.log(data);
},
data: params
});
html += '</td></tr></table></td>';
}
html += '</tr></table>';
$("#search_info_div_" + product_id).html(html);
}
//sortable rows in main table
$("#" + itemsTable + " tbody").sortable();
//get parent info use ajax
function getParentInfo(parent_id, parent_type) {
var params = {
id: parent_id,
type: parent_type,
job: 'getParentInfo'
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
success: function (data) {
if (data == '-1') {
alert('Błąd');
$("#parent_name").val('');
$("#parent_id").val('');
} else {
setParentInfo(data);
}
},
data: params
});
getAddresses(parent_id);
getPayers(parent_id);
}
//insert parent info in fields
function setParentInfo(data) {
//pricebooks
createPricebookSelect(data.pricebooks);
if (data.ecmprice_id && data.ecmprice_name) {
$("#ecmprice_id").val(data.ecmprice_id);
$("#ecmprice_name").val(data.ecmprice_name);
}
if ($("#new_number").val() == false)
return; //if edit exists load only pricebooks
if (data.name)
$("#parent_name_copy").val(data.name);
if (data.parent_nip)
$("#parent_nip").val(data.parent_nip);
if (data.parent_address_street)
$("#parent_address_street").val(data.parent_address_street);
if (data.parent_address_city)
$("#parent_address_city").val(data.parent_address_city);
if (data.parent_address_postalcode)
$("#parent_address_postalcode").val(data.parent_address_postalcode);
if (data.parent_address_country)
$("#parent_address_country").val(data.parent_address_country);
if (data.invoice_type && data.invoice_type != 'K')
$("#no_tax").attr('checked', true);
if (data.ecmpaymentcondition_id && data.ecmpaymentcondition_name) {
$("#ecmpaymentcondition_id").val(data.ecmpaymentcondition_id);
$("#ecmpaymentcondition_name").val(data.ecmpaymentcondition_name);
}
if (data.ecmdeliverycondition_id && data.ecmdeliverycondition_name) {
$("#ecmdeliverycondition_id").val(data.ecmdeliverycondition_id);
$("#ecmdeliverycondition_name").val(data.ecmdeliverycondition_name);
}
if (data.currency_id)
$("#currency_id option[value=\"" + data.currency_id + "\"]").attr('selected', 'selected');
//hide loading
$(".loading_panel").css("display", "none");
}
function createPricebookSelect(pricebooks) {
var s = $("<select id=\"pricebook_id\"/>");
var opt = '';
$.each(pricebooks, function (index, value) {
opt += '<option value="' + value.id + '">' + value.name + '</option>';
});
s.html(opt);
$("#pricebooks").append(s);
}
function generateNumber(stock_id) {
var params = {
job: 'generateNumber',
stock_id: stock_id
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
success: function (data) {
if (data == '-1') {
//try loading again
generateNumber(stock_id);
} else {
$("#document_no").val(data.document_no);
$("#number").val(data.number);
$(".loading_panel").css("display", "none");
}
},
data: params
});
}
function generateNumberCorrect() {
var params = {
job: 'generateNumberCorrect'
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
success: function (data) {
if (data == '-1') {
//try loading again
generateNumberCorrect();
} else {
$("#document_no").val(data.document_no);
$("#number").val(data.number);
$(".loading_panel").css("display", "none");
}
},
data: params
});
}
$.event.special.inputchange = {
setup: function () {
var self = this, val;
$.data(this, 'timer', window.setInterval(function () {
val = self.value;
if ($.data(self, 'cache') != val) {
$.data(self, 'cache', val);
$(self).trigger('inputchange');
}
}, 20));
},
teardown: function () {
window.clearInterval($.data(this, 'timer'));
},
add: function () {
$.data(this, 'cache', this.value);
}
};
function getCategoriesList() {
var params = {
job: 'getCategoriesList'
};
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
success: function (data) {
var html = '<option value=""></option>';
$.each(data, function (index, value) {
html += '<option value="' + value.id + '">' + value.name + '</option>';
$("#productSearchCategory").html(html);
});
},
data: params
});
}
function htmlspecialchars_decode(string, quote_style) {
// discuss at: http://phpjs.org/functions/htmlspecialchars_decode/
// original by: Mirek Slugen
// improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// bugfixed by: Mateusz "loonquawl" Zalega
// bugfixed by: Onno Marsman
// bugfixed by: Brett Zamir (http://brett-zamir.me)
// bugfixed by: Brett Zamir (http://brett-zamir.me)
// input by: ReverseSyntax
// input by: Slawomir Kaniecki
// input by: Scott Cariss
// input by: Francois
// input by: Ratheous
// input by: Mailfaker (http://www.weedem.fr/)
// revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// reimplemented by: Brett Zamir (http://brett-zamir.me)
// example 1: htmlspecialchars_decode("<p>this -&gt; &quot;</p>",
// 'ENT_NOQUOTES');
// returns 1: '<p>this -> &quot;</p>'
// example 2: htmlspecialchars_decode("&amp;quot;");
// returns 2: '&quot;'
var optTemp = 0,
i = 0,
noquotes = false;
if (typeof quote_style === 'undefined') {
quote_style = 2;
}
string = string.toString()
.replace(/&lt;/g, '<')
.replace(/&gt;/g, '>');
var OPTS = {
'ENT_NOQUOTES': 0,
'ENT_HTML_QUOTE_SINGLE': 1,
'ENT_HTML_QUOTE_DOUBLE': 2,
'ENT_COMPAT': 2,
'ENT_QUOTES': 3,
'ENT_IGNORE': 4
};
if (quote_style === 0) {
noquotes = true;
}
if (typeof quote_style !== 'number') { // Allow for a single string or an
// array of string flags
quote_style = [].concat(quote_style);
for (i = 0; i < quote_style.length; i++) {
// Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4
if (OPTS[quote_style[i]] === 0) {
noquotes = true;
} else if (OPTS[quote_style[i]]) {
optTemp = optTemp | OPTS[quote_style[i]];
}
}
quote_style = optTemp;
}
if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) {
string = string.replace(/&#0*39;/g, "'"); // PHP doesn't currently escape
// if more than one 0, but it
// should
// string = string.replace(/&apos;|&#x0*27;/g, "'"); // This would also be
// useful here, but not a part of PHP
}
if (!noquotes) {
string = string.replace(/&quot;/g, '"');
}
// Put this in last place to avoid escape being double-decoded
string = string.replace(/&amp;/g, '&');
return string;
}
function drawbuttons(number) {
var buttons = '<button onclick="'
+ "open_popup( $('#parent_type_" + number + "').val(), 600, 400, &quot;&quot;, true, false,"
+ "{&quot;call_back_function&quot;:&quot;set_return&quot;,&quot;form_name&quot;:&quot;EditView&quot;,&quot;field_to_name_array&quot;:"
+ "{&quot;id&quot;:&quot;parent_id_" + number + "&quot;,&quot;name&quot;:&quot;parent_name_" + number + "&quot;}}, &quot;single&quot;, true);"
+ '" value="Wybierz" class="button firstChild" accesskey="T" title="Wybierz [Alt+T]" tabindex="101" id="btn_parent_name" name="btn_parent_name" style="vertical-align: top;" type="button">'
+ '<img src="themes/default/images/id-ff-select.png?s=bed8cd35065048ceebdc639ebe305e2c&amp;c=1"></button>'
+ '&nbsp;<button value="Wyczyść" onclick="'
+ "$('#parent_name_" + number + "').val(''); $('#parent_id_" + number + "').val('');"
+ '" class="button lastChild" style="vertical-align: top;" accesskey="C" title="Wyczyść[Alt+C]" tabindex="101" id="btn_clr_parent_name" name="btn_clr_parent_name" type="button">'
+ '<img src="themes/default/images/id-ff-clear.png?s=bed8cd35065048ceebdc639ebe305e2c&amp;c=1"></button>';
return buttons;
}
function ParentEditList() {
// parent start
var MaxInputs = 10; // maximum input boxes allowed
var InputsWrapper = $("#InputsWrapper"); // Input boxes wrapper ID
var AddButton = $("#AddMoreWWWBox"); // Add button ID
var x = InputsWrapper.length; // initlal text box count
var FieldCount = 1; // to keep track of text box added
var parent_list = $.parseJSON($("input[name='parent_list']").val()); // get
// and
// decode
// json
// object
var parent_type = $.parseJSON($("input[name='parent_type_list']").val()); // get
// and
// decode
// json
// object
// create select parent type
$.each(parent_list, function (idx, obj) { // add existing elements
FieldCount++; // text box added increment
// add input box
if (idx == 0) {
// first element
$("div select[name='parent_type[]'] option[value='" + obj.parent_type + "s']").attr('selected', 'selected');
$("div input[name='parent_name[]']").first().val(htmlspecialchars_decode(obj.parent_name));
$("div input[name='parent_name[]']").first().attr('tabindex',60);
$("div input[name='list_id[]']").first().val(obj.id);
$("div input[name='parent_id[]']").first().val(obj.parent_id);
} else {
var select_parent = '<select id="parent_type_' + x + '" name="parent_type[]">';
var seleted = '';
$.each(parent_type, function (idx2, obj2) {
if (idx2 == obj.parent_type + 's') {
seleted = 'selected="selected"';
} else {
seleted = '';
}
select_parent = select_parent + '<option value="' + idx2 + '" label="' + obj2 + '" ' + seleted + '>' + obj2 + '</OPTION>';
});
select_parent = select_parent + '</select>';
$(InputsWrapper).append('<tr><td>' + select_parent + '&nbsp;<input type="hidden" value="' + obj.parent_id + '" id="parent_id_' + x + '" name="parent_id[]"><input type="hidden" value="' + obj.id + '" name="list_id[]"><input type="text" size="30" tabindex="16" name="parent_name[]" id="parent_name_' + x + '" value=""/></td><td><a href="#" class="removeclass"><img class="id-ff-remove" name="0" src="index.php?entryPoint=getImage&amp;themeName=Sugar5&amp;imageName=id-ff-remove.png"></a>&nbsp;' + drawbuttons(x) + '</td></tr>');
$('#parent_name_' + x).val(htmlspecialchars_decode(obj.parent_name));
}
x++; // text box increment
});
$(AddButton).click(function (e) // on add input button click
{
if (x <= MaxInputs) // max input box allowed
{
if (x == 1)
x = 2;
var select_parent = '<select id="parent_type_' + x + '" name="parent_type[]">';
$.each(parent_type, function (idx2, obj2) {
select_parent = select_parent + '<option value="' + idx2 + '" label="' + obj2 + '">' + obj2 + '</OPTION>';
});
select_parent = select_parent + '</select>';
FieldCount++; // text box added increment
// add input box
$(InputsWrapper).append('<tr><td>' + select_parent + '&nbsp;<input type="hidden" value="" name="parent_id[]" id="parent_id_' + x + '"><input type="hidden" value="" name="list_id[]"><input type="text" size="30" name="parent_name[]" id="parent_name_' + x + '" value=""/></td><td><a href="#" class="removeclass"><img class="id-ff-remove" name="0" src="index.php?entryPoint=getImage&amp;themeName=Sugar5&amp;imageName=id-ff-remove.png"></a>&nbsp;' + drawbuttons(x) + '</td>,/tr>');
x++; // text box increment
}
return false;
});
$("body").on("click", ".removeclass", function (e) { // user click on remove
// text
if (x > 1) {
$(this).closest('tr').remove();// remove text box
x--; // decrement textbox
}
return false;
});
}
function InitializeVatTable() {
// Initialize appendGrid
$('#tblAppendGrid').appendGrid({
hideRowNumColumn: true,
initRows: 1,
// definicje kolumn
columns: [
{name: 'vat_value', display: 'Stawka VAT', ctrlClass: 'inputs', ctrlAttr: {maxlength: 100, readonly: 'readonly'}},
{name: 'netto', display: 'Wartość netto', type: 'text', ctrlAttr: {maxlength: 100}, ctrlCss: {width: '100%', 'text-align': 'right'}, ctrlClass: 'inputs',
onChange: function (evt, rowIndex) {
// liczenie vatu
var data = $('#tblAppendGrid').appendGrid('getRowValue', rowIndex);
if (data.netto != '' && data.vat_id != '') {
var vat_value = (UnformatNumber(FormatNumber(data.netto)) * UnformatNumber(FormatNumber(data.vat_id))) / 100;
console.log(vat_value);
// wtrzykwianie danych
$('#tblAppendGrid').appendGrid('setCtrlValue', 'vat', rowIndex, FormatNumber(vat_value));
$('#tblAppendGrid').appendGrid('setCtrlValue', 'netto', rowIndex, FormatNumber(data.netto));
}
},
onClick: function (evt, rowIndex) {
// zaznacznie wybranego pola
var elem = $('#tblAppendGrid').appendGrid('getCellCtrl', 'netto', rowIndex);
$(elem).select();
}},
{name: 'vat', display: 'Wartość VAT', type: 'text', ctrlAttr: {maxlength: 100}, ctrlCss: {width: '100%', 'text-align': 'right'}, ctrlClass: 'inputs',
onChange: function (evt, rowIndex) {
// liczenie vatu
var data = $('#tblAppendGrid').appendGrid('getRowValue', rowIndex);
$('#tblAppendGrid').appendGrid('setCtrlValue', 'vat', rowIndex, FormatNumber(data.vat));
},},
{name: 'vat_id', display: 'ID', invisible: true}
],
// custome guziczki
customGridButtons: {
insert: $('<img>').css('color', 'red').text('Insert').get(0),
// Use a function that create DOM element
moveUp: function () {
var button = document.createElement('img');
button.src = 'modules/EcmQuotes/images/moverowup.gif';
return button;
},
moveDown: function () {
var button = document.createElement('img');
button.src = 'modules/EcmQuotes/images/moverowdown.gif';
return button;
}
},
// startowa zawartosc tableki
initData: [
{'vat_value': '23%', 'netto': '', 'vat': '', 'vat_id': '23'},
{'vat_value': '8%', 'netto': '', 'vat': '', 'vat_id': '8'},
{'vat_value': '0%', 'netto': '', 'vat': '', 'vat_id': '0'},
{'vat_value': 'OO', 'netto': '', 'vat': '', 'vat_id': 'OO'},
{'vat_value': 'ZW', 'netto': '', 'vat': '', 'vat_id': '0'},
{'vat_value': 'NP', 'netto': '', 'vat': '', 'vat_id': 'np'},
],
// ukrywanie nie potrzebnych guziczkow
hideButtons: {
remove: true,
removeLast: true,
insert: true,
append: true,
moveUp: true,
moveDown: true,
}
});
// wczytywanie danych do tabelki
LoadDataFromVatList();
// hide css classes
$('thead').removeClass('ui-widget-header');
$('td').removeClass('ui-widget-header');
$('tbody').removeClass('ui-widget-content');
$('td').removeClass('ui-widget-content');
$('tfoot').removeClass('ui-widget-header');
}
function LoadDataFromVatList() {
var vat_list = $.parseJSON($("input[name='vat_list']").val());
if (vat_list.length > 0) {
$.each(vat_list, function (idx2, obj2) {
if ($.isNumeric(obj2.vat)) {
obj2.vat = FormatNumber(obj2.vat);
} else {
obj2.vat = 0;
}
if ($.isNumeric(obj2.netto)) {
obj2.netto = FormatNumber(obj2.netto);
} else {
obj2.netto = 0;
}
$('#tblAppendGrid').appendGrid('setCtrlValue', 'vat_value', idx2, obj2.vat_value);
$('#tblAppendGrid').appendGrid('setCtrlValue', 'vat', idx2, obj2.vat);
$('#tblAppendGrid').appendGrid('setCtrlValue', 'vat_id', idx2, obj2.vat_id);
$('#tblAppendGrid').appendGrid('setCtrlValue', 'netto', idx2, obj2.netto);
});
}
}