624 lines
18 KiB
JavaScript
624 lines
18 KiB
JavaScript
var itemsTable = 'itemsTable';
|
|
var items = new Array();
|
|
var displayArray = new Array();
|
|
var searchedProducts = new Array();
|
|
var ajax_url = "index.php?module=EcmStockDocCorrects&action=javahelper&to_pdf=1";
|
|
|
|
//custom Fill Table
|
|
|
|
function calculateAll() {
|
|
var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
|
|
for (var index = 0; index != count; index++) {
|
|
calculateRow(index);
|
|
}
|
|
}
|
|
|
|
function calculateRow(index) {
|
|
if (index == -1)
|
|
return;
|
|
items[index].quantity_consignment_id = $('#quantity_consignment_id_' + index).val();
|
|
items[index].quantity_consignment_doc = $('#quantity_consignment_doc_' + index).val();
|
|
if ($('#type').val() != '8a6b804b-fac7-5cc2-de19-54c209116b19') {
|
|
getConsignmentsDiv(index);
|
|
} else {
|
|
getInsertConsignmentsDiv(index);
|
|
}
|
|
|
|
|
|
// liczone według najlepszych zasad księgowości
|
|
var price = UnformatNumber($('#price_' + index).val());
|
|
var price_old = UnformatNumber($('#price_old_' + index).val());
|
|
var quantity = UnformatNumber($('#quantity_' + index).val());
|
|
|
|
|
|
//alert(palet);
|
|
var total = price * quantity;
|
|
var total2 = price_old * quantity;
|
|
// put data
|
|
$('#product_total_' + index).val(FormatNumber(total));
|
|
|
|
// put data to items array
|
|
items[index].price = toFixed(price, 2);
|
|
items[index].price_old = toFixed(price_old, 2);
|
|
|
|
items[index].product_total = total;
|
|
items[index].quantity = toFixed(quantity, 2);
|
|
|
|
items[index].name = $('#name_' + index).val();
|
|
items[index].unit_name = $('#unit_name_' + index).val();
|
|
if ($('#type').val() == '6ed5b076-ddd1-9809-b236-54e5b2bcbd97') {
|
|
$('#onlyRemoveDif_' + index).remove();
|
|
$('#unit_name_' + index).parent().append('<div id="onlyRemoveDif_' + index + '"><p style="text-align:right">(Różnica: ' + FormatNumber(total - total2) + ')<input type="hidden" id="diff_this_' + index + '" value="' + FormatNumber(total - total2) + '"></p></div>');
|
|
|
|
}
|
|
// calculate total
|
|
calculateTotal();
|
|
}
|
|
function calculateTotal() {
|
|
if ($('#type').val() == '6ed5b076-ddd1-9809-b236-54e5b2bcbd97') {
|
|
var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
|
|
count = items.length;
|
|
var vats = new Array();
|
|
var all_subtotal = 0;
|
|
var all_total = 0;
|
|
var sum_vats = 0;
|
|
var sum_discounts = 0;
|
|
var weight_total = 0;
|
|
|
|
|
|
for (var index = 0; index != count; index++) {
|
|
subtotal = UnformatNumber($('#diff_this_' + index).val());
|
|
if (!isNaN(subtotal)) {
|
|
all_subtotal += subtotal;
|
|
|
|
}
|
|
|
|
}
|
|
all_total = all_subtotal;
|
|
|
|
DrawSummary();
|
|
|
|
$("#t_netto").val(FormatNumber(all_total));
|
|
} else {
|
|
var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
|
|
count = items.length;
|
|
var vats = new Array();
|
|
var all_subtotal = 0;
|
|
var all_total = 0;
|
|
var sum_vats = 0;
|
|
var sum_discounts = 0;
|
|
var weight_total = 0;
|
|
|
|
|
|
for (var index = 0; index != count; index++) {
|
|
subtotal = UnformatNumber($('#product_total_' + index).val());
|
|
if (!isNaN(subtotal)) {
|
|
all_subtotal += subtotal;
|
|
|
|
}
|
|
|
|
}
|
|
all_total = all_subtotal;
|
|
|
|
DrawSummary();
|
|
|
|
$("#t_netto").val(FormatNumber(all_total));
|
|
}
|
|
|
|
|
|
}
|
|
function DrawSummary() {
|
|
$("#result_table").html('');
|
|
html = '';
|
|
html += '<tr id="subtotal_tr"> ';
|
|
html += '<td class="positionsLabel" style="border-top:0px;">Suma</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>';
|
|
$("#result_table").html(html);
|
|
}
|
|
|
|
// draw table
|
|
function DrawHeaders() {
|
|
var html = '<link rel="stylesheet" type="text/css" href="modules/EcmQuotes/MyTable.css" />';
|
|
html += '<div style="width:100%;border: 1px solid rgb(48,192,255);background-color:white;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) {
|
|
if (column.hide == 'yes') {
|
|
hide = 'display:none;'
|
|
} else {
|
|
hide = '';
|
|
}
|
|
html += '<td width="' + column.width + '%" style="' + hide + '">' + 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 += ' ';
|
|
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;"> </td>';
|
|
html += '</tr>';
|
|
html += '</table>';
|
|
// sort? why not!
|
|
/*
|
|
* html += 'Sortowanie: '; 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 searchProducts() {
|
|
var searchKey = $('#searchProductsInput').val();
|
|
if (searchKey.length < 2 && searchKey != '%') {
|
|
return;
|
|
}
|
|
$("#searchResultDiv").html(
|
|
'<img src="modules/EcmQuotes/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(),
|
|
searchStockId : $("#stock :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;"><input type="checkbox" name="selectall" id="selectall"></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 += '</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 + '" name="prod_s" 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 += '</tr>';
|
|
searchedProducts.push(value.id);
|
|
counter++;
|
|
});
|
|
// add button
|
|
html += '</table><br>';
|
|
html += 'Ilość: <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");
|
|
clearEmpty();
|
|
var products = new Array();
|
|
$.each(searchedProducts, function (index, value) {
|
|
if ($('#prod_' + value).is(':checked'))
|
|
products[value] = true;
|
|
});
|
|
var stockId = $("#stock_id").val();
|
|
for (var key in products) {
|
|
var params = {
|
|
job: 'getProduct',
|
|
id: key,
|
|
stockId: stockId,
|
|
};
|
|
$.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.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 ($("#searchInputQty").val() != ''
|
|
&& !isNaN(parseFloat(UnformatNumber($(
|
|
"#searchInputQty").val()))))
|
|
p.quantity = $("#searchInputQty").val();
|
|
items.push(p);
|
|
}
|
|
},
|
|
data: params
|
|
});
|
|
}
|
|
AddSearchRecord();
|
|
FillTable(items);
|
|
calculateAll();
|
|
// 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_id").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].unit_id = data.unit_id;
|
|
items[index].price_start = data.price_start;
|
|
items[index].recipient_code = data.recipient_code;
|
|
items[index].stock_state = data.stock_state;
|
|
items[index].product_precision = data.unit_precision;
|
|
items[index].unit_precision = data.unit_precision;
|
|
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);
|
|
calculateAll();
|
|
$('#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",
|
|
success: function (data) {
|
|
items = data;
|
|
if (editview)
|
|
FillTable(items, false);
|
|
else {
|
|
FillTable(items, true);
|
|
var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
|
|
for (var index = 0; index != count; index++) {
|
|
if (items[index].product_consignment_doc) {
|
|
$('#product_code_' + index).parent().append($("<p>" + items[index].product_consignment_doc + "</p>"));
|
|
}
|
|
}
|
|
}
|
|
$(".loading_panel").css("display", "none");
|
|
},
|
|
data: params
|
|
});
|
|
}
|
|
|
|
function DrawDetailSummary() {
|
|
$("#result_table").html('');
|
|
html = '';
|
|
html += '<tr id="subtotal_tr"> ';
|
|
html += '<td class="positionsLabel" style="border-top:0px;">Suma dokumentu</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=\''
|
|
+ $("#doc_total").val() + '\'></td>';
|
|
html += '</tr>';
|
|
$("#result_table").html(html);
|
|
}
|
|
|
|
function generateNumber() {
|
|
var params = {
|
|
job: 'generateNumber',
|
|
stock: $("#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 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 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 refreshAllStocks(ids) {
|
|
return new Promise((resolve) => {
|
|
var params = {
|
|
job: "getStockStates",
|
|
ids: ids.join("|"),
|
|
stockId: $("#stock_id").val(),
|
|
};
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: ajax_url,
|
|
dataType: "json",
|
|
async: false,
|
|
success: function (data) {
|
|
resolve(data);
|
|
},
|
|
data: params
|
|
});
|
|
});
|
|
}
|
|
|
|
async function checkProducts() {
|
|
//var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
|
|
var count = items.length;
|
|
|
|
var ids = [];
|
|
for (var index = 0; index != count; index++) {
|
|
var id = $("#product_id_" + index).val();
|
|
if (id !== "") {
|
|
ids.push(id);
|
|
}
|
|
}
|
|
var states = [];
|
|
if (ids.length > 0) {
|
|
states = await refreshAllStocks(ids);
|
|
}
|
|
var error = false; // hope :)
|
|
for (var index = 0; index != count; index++) {
|
|
if ($("#product_id_" + index).val() != '') {
|
|
var prodId = $("#product_id_" + index).val();
|
|
var state = states.find(x => x.id === prodId);
|
|
if (state) {
|
|
$("#stock_state_" + index).val(FormatNumber(state.state, $("#product_precision_" + index).val()));
|
|
} else {
|
|
$("#stock_state_" + index).val(FormatNumber(0, $("#product_precision_" + index).val()));
|
|
}
|
|
//refreshStock(index);
|
|
var qty = UnformatNumber($("#quantity_" + index).val());
|
|
var cat_id = $("#product_category_id_" + index).val();
|
|
var con_qty = $("#product_consignment_qty_" + index).val();
|
|
var stock = UnformatNumber($("#stock_state_" + index).val());
|
|
var price_new = UnformatNumber($("#price_" + index).val());
|
|
var price_old = UnformatNumber($("#price_old_" + index).val());
|
|
// refresh items array
|
|
items[index].quantity = qty;
|
|
if ($('#product_is_consignment_' + index).val() != '1' && $('#product_consignment_id_' + index).val() == '') {
|
|
con_qty = stock;
|
|
}
|
|
items[index].price = UnformatNumber($("#price_" + index).val());
|
|
// przecena
|
|
if ($('#type').val() == '6ed5b076-ddd1-9809-b236-54e5b2bcbd97') {
|
|
if ($('#product_consignment_id_' + index).val() == '') {
|
|
error = true;
|
|
alert("Można przecenić tylko konkretną pozycje!");
|
|
}
|
|
if (qty <= 0 || qty < con_qty || price_new == price_old || price_new <= 0) {
|
|
error = true;
|
|
$("#quantity_" + index).css("color", "red");
|
|
|
|
} else {
|
|
$("#quantity_" + index).css("color", "black");
|
|
}
|
|
}
|
|
// korekta minus
|
|
if ($('#type').val() == '7bb903d0-c296-7d1b-6e50-54c209e30850') {
|
|
if (qty >= 0 || Math.abs(qty) > con_qty) {
|
|
|
|
error = true;
|
|
$("#quantity_" + index).css("color", "red");
|
|
|
|
} else {
|
|
$("#quantity_" + index).css("color", "black");
|
|
}
|
|
}
|
|
// korekta plus
|
|
if ($('#type').val() == '8a6b804b-fac7-5cc2-de19-54c209116b19') {
|
|
if (qty <= 0 || price_new <= 0) {
|
|
error = true;
|
|
$("#quantity_" + index).css("color", "red");
|
|
|
|
} else {
|
|
$("#quantity_" + index).css("color", "black");
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
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 = 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.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);
|
|
//getConsignmentsDiv(index);
|
|
$(".loading_panel").css("display", "none");
|
|
}
|
|
|
|
// sortable rows in main table
|
|
$("#" + itemsTable + " tbody").sortable(); |