var itemsTable = 'itemsTable'; var items = new Array(); var displayArray = new Array(); var searchedProducts = new Array(); var ajax_url = "index.php?module=EcmStockDocIns&action=javahelper&to_pdf=1"; function calculateRow(index) { if (index == -1) return; // liczone według najlepszych zasad księgowości var price = UnformatNumber($('#price_' + index).val()); var price_fk = UnformatNumber($('#price_fk_' + index).val()); var vat_value = $('#ecmvat_value_' + index).val(); var quantity = UnformatNumber($('#quantity_' + index).val()); var palet = UnformatNumber($('#palet_' + index).val()); var precision = UnformatNumber($('#product_precision_' + index).val()); var waga = UnformatNumber($('#waga_' + index).val()); var clo = UnformatNumber($('#clo_' + index).val()); var last_price = ($('#product_last_price_' + index).val()); if(price!=0){ if(last_price!=''){ if(parseFloat(price)!=parseFloat(last_price)){ var content="Poprzednia cena wynoni: "+FormatNumber(last_price)+""; last_price = parseFloat(last_price); var procent = ((parseFloat(price) - last_price)/last_price)*100; if(procent!=0){ procent = procent.toFixed(2); if(procent>0){ content = content + " Cena wzrosła o: "+Math.abs(procent)+'%'; } else { content = content + " Cena zmalała o: "+Math.abs(procent)+'%'; } $('#row_alert_'+index).html(content); } else { $('#row_alert_'+index).html(null); } } else { $('#row_alert_'+index).html(null); } } } //alert(palet); var total = price * quantity; // put data $('#total_' + index).val(FormatNumber(total)); // put data to items array items[index].price = toFixed(price, 2); items[index].price_fk = toFixed(price_fk, 2); items[index].palet = palet; items[index].total = total; items[index].quantity = toFixed(quantity, precision); items[index].ecmvat_id = $('#ecmvat_id_' + index).val(); items[index].ecmvat_name = $('#ecmvat_name_' + index).val(); items[index].ecmvat_value = vat_value; items[index].waga = waga; items[index].clo = clo; // put other data items[index].recipient_code = $('#recipient_code_' + index).val(); items[index].remarks = $('#remarks_' + index).val(); // change name or language? items[index].name = htmlEscape($('#name_' + index).val()); items[index].unit_name = $('#unit_name_' + index).val(); // calculate total calculateTotal(); } function calculatePrices() { var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row if ($("#kind").val() == 'import') { var TZ = 0; if ($("#foreign_transport_cur_id").val() == 'PLN') TZ = UnformatNumber($("#foreign_transport_val").val()); else TZ = UnformatNumber($("#foreign_transport_val").val()) * UnformatNumber($("#foreign_transport_cur_val").val()); var TK = 0; if ($("#country_transport_cur_id").val() == 'PLN') TK = UnformatNumber($("#country_transport_val").val()); else TK = UnformatNumber($("#country_transport_val").val()) * UnformatNumber($("#country_transport_cur_val").val()); var KD = 0; if ($("#addition_cost_cur_id").val() == 'PLN') KD = UnformatNumber($("#addition_cost_val").val()); else KD = UnformatNumber($("#addition_cost_val").val()) * UnformatNumber($("#addition_cost_cur_val").val()); var inv_total = 0; var weight_total = 0; var error = false; // hope :) for (var index = 0; index != count; index++) { var qty = UnformatNumber($("#quantity_" + index).val()); var cat_id = $("#product_category_id_" + index).val(); // refresh items array items[index].quantity = qty; items[index].price = UnformatNumber($("#price_" + index).val()); items[index].price_fk = UnformatNumber($("#price_fk_" + index).val()); items[index].palet = UnformatNumber($("#palet_" + index).val()); inv_total += UnformatNumber($("#price_fk_" + index).val()) * qty; weight_total += UnformatNumber($("#waga_" + index).val()); } var sum = 0; var participation = new Array(); for (var index = 0; index != count; index++) { if (index != count - 1) { participation[index] = UnformatNumber($("#waga_" + index).val()) / weight_total; sum += participation[index]; } else participation[index] = 1 - sum; } var currency_id = $("#currency_id").val(); var exchange; var sad_exchange; if (currency_id == 'PLN') exchange = 1; else { exchange = UnformatNumber($("#currency_value").val()); sad_exchange = UnformatNumber($("#currency_sad_value").val()); } for (var index = 0; index != count; index++) { var pprice = 0; //alert(document.forms.EditView.currency_value.value); var duty = UnformatNumber($("#clo_" + index).val()) / 100; //pprice = (participation[i]*TZ/pf(data.quantity))+(data.invoice_price*exchange * (1+duty)) + (participation[i]*TK/pf(data.quantity)) + (participation[i]*KD/pf(data.quantity)); //data.price = pprice; foreign_costs = (participation[index] * TZ / UnformatNumber($("#quantity_" + index).val())); country_costs = (participation[index] * TK / UnformatNumber($("#quantity_" + index).val())); add_costs = (participation[index] * KD / UnformatNumber($("#quantity_" + index).val())); //alert(duty+' '+pf(data.quantity)); //alert(foreign_costs+' '+country_costs+' '+add_costs); price = (UnformatNumber($("#price_fk_" + index).val()) * exchange + (UnformatNumber($("#price_fk_" + index).val()) * sad_exchange + foreign_costs) * duty); pprice = foreign_costs + country_costs + add_costs + price; items[index].price =pprice; $('#price_' + index).val(FormatNumber(pprice)); var total = UnformatNumber($('#price_' + index).val()) * UnformatNumber($('#quantity_' + index).val()); // put data $('#total_' + index).val(FormatNumber(total)); //N.row(i).cells.item(6).setData(data); //N.row(i).calculateTotal(); } 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; var weight_total = 0; var total_quantity=0; for (var index = 0; index != count; index++) { subtotal = UnformatNumber($('#total_' + index).val()); all_subtotal += subtotal; total_quantity+=UnformatNumber($('#quantity_' + index).val()); // 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); } all_total = all_subtotal + sum_vats; // add vats var html = ''; var vats_summary = ''; for (var x in vats) { if (vats[x].value_name != '') { html += '' + vats[x].value_name + ''; html += ''; vats_summary += vats[x].value_name + ':' + toFixed(vats[x].value, 2) + ','; } } DrawSummary(html); $("#t_netto").val(FormatNumber(all_subtotal)); $("#t_brutto").val(FormatNumber(all_total)); $("#total_netto").val($("#t_netto").val()); $("#total_brutto").val(FormatNumber(all_total)); $("#total_quantity").val(FormatNumber(total_quantity)); $("#vats_summary").val(vats_summary); } function DrawSummary(vats) { $("#result_table").html(''); html = ''; html += ' '; html += 'Suma netto'; html += ''; html += ''; html += 'Ilość razem'; html += ''; $("#result_table").html(html); } function DrawHeaders() { var html = ''; html += '
'; html += ''; html += ''; html += ''; // draw columns headers $.each(columns, function (index, column) { html += ''; }); html += '
' + column.label + '
'; html += '

'; // totals table html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += '
'; html += ' '; html += ' '; html += '
'; html += ''; html += '
'; html += '
 
'; $('#' + itemsTable).html(html); } function addProducts() { $(".loading_panel").css("display", "block"); clearEmpty(); var products = new Array(); $.each(searchedProducts, function (index, value) { if ($('#prod_' + value).is(':checked')) products[value] = true; }); for (var key in products) { var params = { job: 'getProduct', id: key, stockId: $("#stock_id :selected").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.price = data.price; p.unit_name = data.unit_name; p.unit_id = data.unit_id; p.ecmvat_id = data.ecmvat_id; p.ecmvat_value = data.ecmvat_value; p.ecmvat_name = data.ecmvat_name; p.stock_state = data.stock_state; p.price_last = data.price_last; p.product_category_id = data.product_category_id; p.product_precision = data.unit_precision; p.unit_precision = data.unit_precision; p.product_is_consignment = data.is_consignment; if ($("#searchInputPrice").val() != '' && !isNaN(parseFloat(UnformatNumber($( "#searchInputPrice").val())))) p.price = $("#searchInputPrice").val(); if ($("#searchInputQty").val() != '' && !isNaN(parseFloat(UnformatNumber($( "#searchInputQty").val())))) p.quantity = $("#searchInputQty").val(); p.product_last_price=data.product_last_price; items.push(p); } }, data: params }); } AddSearchRecord(); FillTable(items); checkProductIsConsignment(); // clear results $('#searchResultDiv').html(''); searchedProducts = new Array(); $('#searchProductsInput').val(''); $(".loading_panel").css("display", "none"); } function AddProduct(index, record) { $(".loading_panel").css("display", "block"); var record; var pricebook = $("#pricebook_id :selected").val(); var params = { job: 'getProduct', id: record, stockId: $("#stock_out_id :selected").val(), }; $.ajax({ type: "POST", url: ajax_url, dataType: "json", async: false, success: function (data) { if (data != '-1') { items[index].product_id = data.id; items[index].name = data.name; items[index].product_code = data.code; items[index].product_id = data.id; items[index].ecmvat_id = data.ecmvat_id; items[index].ecmvat_value = data.ecmvat_value; items[index].ecmvat_name = data.ecmvat_name; items[index].product_ean = data.ean; items[index].discount = data.discount; items[index].product_ean2 = data.ean2; items[index].unit_name = data.unit_name; items[index].price_last = data.price_last; items[index].unit_id = data.unit_id; items[index].price_start = data.price_start; items[index].recipient_code = data.recipient_code; items[index].product_precision = data.unit_precision; items[index].unit_precision = data.unit_precision; items[index].product_last_price=data.product_last_price; items[index].product_is_consignment = data.is_consignment; if ($("#searchInputPrice").val() != '' && !isNaN(parseFloat(UnformatNumber($( "#searchInputPrice").val())))) items[index].price_start = $("#searchInputPrice").val(); if ($("#searchInputQty").val() != '' && !isNaN(parseFloat(UnformatNumber($( "#searchInputQty").val())))) items[index].quantity = $("#searchInputQty").val(); } }, data: params }); AddSearchRecord(); FillTable(items); checkProductIsConsignment(); $('#searchResultDiv').html(''); $(".loading_panel").css("display", "none"); $("#quantity_" + index).focus().select(); } function getItems(editview) { var record = ''; if ($("#duplicate").val() == true) record = $("input[name='return_id']").val(); else record = $("input[name='record']").val(); if (isNaN(editview)) editview = true; var params = { job: 'getItems', record: record, }; $.ajax({ type: "POST", url: ajax_url, dataType: "json", async: false, success: function (data) { items = data; if (editview) { FillTable(items, false); } else FillTable(items, true); $(".loading_panel").css("display", "none"); }, data: params }); } function getItems2(editview) { var record = ''; record = $("#out_id").val(); var module2 = ''; module2 = $("#out_module").val(); if (isNaN(editview)) editview = true; var params = { job: 'getItems2', record: record, module2: module2, }; $.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 }); calculateTotal(); } function DrawDetailSummary() { $("#result_table").html(''); html = ''; html += ' '; html += 'Razem ilość'; html += ''; html += ''; html += ' '; html += 'Suma netto'; html += ''; html += ''; $("#result_table").html(html); } function generateNumber() { var params = { job: 'generateNumber', stock_id: $("#stock_id").val(), date: $("#register_date").val(), }; $.ajax({ type: "POST", url: ajax_url, dataType: "json", success: function (data) { if (data == '-1') { // try loading again generateNumber(); } else { $("#document_no").val(data.document_no); $("#number").val(data.number); $(".loading_panel").css("display", "none"); } }, data: params }); } 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 }); } //insert parent info in fields function setParentInfo(data) { //pricebooks if ($("#new_number").val() == false) return; //if edit exists load only pricebooks if (data.name) $("#parent_name_copy").val(data.name); if (data.name) $("#parent_name").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') $("#to_is_vat_free").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 getCategoriesList() { var params = { job: 'getCategoriesList' }; $.ajax({ type: "POST", url: ajax_url, dataType: "json", success: function (data) { var html = ''; $.each(data, function (index, value) { html += ''; $("#productSearchCategory").html(html); }); }, data: params }); } function refreshStock(index) { var params = { job: 'getStockState', id: $("#product_id_" + index).val(), stockId: $("#stock_id").val(), }; $.ajax({ type: "POST", url: ajax_url, dataType: "json", async: false, success: function (data) { $("#stock_state_" + index).val(FormatNumber(data)); }, data: params }); } function checkProducts() { var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row var error = false; // hope :) for (var index = 0; index != count; index++) { if($("#quantity_" + index).length == 0){ continue; } //refreshStock(index); var qty = UnformatNumber($("#quantity_" + index).val()); var cat_id = $("#product_category_id_" + index).val(); // refresh items array items[index].quantity = qty; items[index].price = UnformatNumber($("#price_" + index).val()); items[index].price_fk = UnformatNumber($("#price_fk_" + index).val()); items[index].palet = UnformatNumber($("#palet_" + index).val()); var stock = UnformatNumber($("#stock_state_" + index).val()); $("#quantity_" + index).css("color", "black"); if(!(items[index].price>0)){ error=true; $("#price_" + index).css("color", "red"); } } if (error) return false; else return true; } function getComponents(index) { $(".loading_panel").css("display", "block"); var product_id = items[index].product_id; var qty = items[index].quantity; var price_fk = items[index].price_fk; var palet = items[index].palet; //var price = items[index].price; var params = { job: 'getComponents', product_id: product_id, }; $.ajax({ type: "POST", url: ajax_url, dataType: "json", async: false, success: function (data) { if (data.length > 0) { items.splice(index, 1); $.each(data, function (index, value) { var p = new Object(); p.product_id = value.id; p.name = value.name; p.product_code = value.code; p.price = value.price; p.unit_name = value.unit_name; p.unit_id = value.unit_id; p.price_fk = value.price_fk; p.palet = value.palet; p.quantity = qty * parseInt(value.quantity); p.product_category_id = value.product_category_id; if (p.product_category_id == 'd7f876b0-1a3d-43a1-7c9b-511ba40df3d1') return; items.push(p); }); } ; }, data: params }); FillTable(items); $(".loading_panel").css("display", "none"); } function getSearchInfo2(product_id, product_code) { $("#search_info_div2_" + product_id).show().draggable(); var html = ''; html += '' + product_code + '

'; html += ''; var params = { job: 'getStockArray', product_id: product_id, }; $.ajax({ type: "POST", url: ajax_url, dataType: "json", async: false, success: function (data) { $.each(data, function (key, value) { html += ''; }); }, data: params }); html += '
MagazynIlość
' + key + '' + FormatNumber(value) + '
'; $("#search_info_div2_" + product_id).html(html); } function getSearchInfo(product_id, product_code) { $("#search_info_div_" + product_id).show().draggable(); var html = ''; html += '' + product_code + '

'; // get prices info html += ''; 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) { $.each(data, function (key, value) { if (value.name == 'pricebook') html += $("#pricebook_id :selected").html() + ': ' + FormatNumber(value.price) + '
'; if (value.name == $("#ecmprice_name").val()) html += '' + value.name + ': ' + FormatNumber(value.price) + '
'; else if (value.module == 'EcmStockDocIns') { html += ''; } //html += value.name + ': ' + FormatNumber(value.price) // + '
'; }); }, data: params }); html += '
NazwaIlośćCenaData dok
' + value.name + '' + value.quantity + ' ' + FormatNumber(value.price) + '' + value.register_date + '
'; $("#search_info_div_" + product_id).html(html); } function getSearchInfo3(product_id, product_code) { $("#search_info_div3_" + product_id).show().draggable(); var html = ''; html += '' + product_code + '

'; // get prices info html += ''; 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) { $.each(data, function (key, value) { if (value.name == 'pricebook') html += $("#pricebook_id :selected").html() + ': ' + FormatNumber(value.price) + '
'; if (value.name == $("#ecmprice_name").val()) html += '' + value.name + ': ' + FormatNumber(value.price) + '
'; else if (value.module == 'EcmPrices') { html += ''; } if (value.module == 'EcmInvoiceOuts') { html += ''; } //html += value.name + ': ' + FormatNumber(value.price) // + '
'; }); }, data: params }); html += '
NazwaCena
' + value.name + ': ' + FormatNumber(value.price) + '
' + value.name + ': ' + FormatNumber(value.price) + '
'; $("#search_info_div3_" + product_id).html(html); } function createAccount() { var parent_name = document.getElementById("parent_name"); var parent_id = document.getElementById("parent_id"); newAccount = window.open('index.php?module=Accounts&action=EditView&IamPopup=1', 'newAccount', 'toolbar=no,menubar=no,scrollbars=yes,scrollbars=1'); newAccount.parent_name = parent_name; newAccount.parent_id = parent_id; newAccount.focus(); } function createProduct() { var newProdId = document.getElementById("newProductId"); newProduct = window.open('index.php?module=EcmProducts&action=EditView&IamPopup=1', 'newProduct', 'toolbar=no,menubar=no,scrollbars=yes,scrollbars=1'); newProduct.newProdId = newProdId; newProduct.focus(); } $.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); } }; $("#" + itemsTable + " tbody").sortable();