1103 lines
35 KiB
JavaScript
1103 lines
35 KiB
JavaScript
var itemsTable = 'itemsTable';
|
|
var items = new Array();
|
|
var displayArray = new Array();
|
|
var validation = new Object();
|
|
var shipping_addresses = new Array();
|
|
var searchedProducts = new Array();
|
|
var ajax_url = "index.php?module=EcmStockDocOuts&action=javahelper&to_pdf=1";
|
|
|
|
function FillTable(data, allReadOnly) {
|
|
html = '';
|
|
// loop throw data rows
|
|
$
|
|
.each(
|
|
data,
|
|
function(row_index, row) {
|
|
html += '<tr>';
|
|
// 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><input class="inputs" style="text-align: center;" type="text" id="number_'
|
|
+ row_index
|
|
+ '" name="number_'
|
|
+ row_index
|
|
+ '" readonly value="'
|
|
+ (row_index + 1)
|
|
+ '"/></td>';
|
|
} else if (column.name == 'name') {
|
|
html += '<td><textarea style="width: 100%; height: 100%;" 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></tr>';
|
|
else {
|
|
html += '<td>';
|
|
// move up
|
|
html += '<a onClick="moveUpRow('
|
|
+ row_index
|
|
+ ')" target="_blank"><img style="cursor:pointer;" src="modules/EcmStockDocOuts/images/moverowup.gif"/></a>';
|
|
html += ' ';
|
|
// move down
|
|
html += '<a onClick="moveDownRow('
|
|
+ row_index
|
|
+ ')" target="_blank"><img style="cursor:pointer;" src="modules/EcmStockDocOuts/images/moverowdown.gif"/></a>';
|
|
html += '<br>';
|
|
// delete row
|
|
html += '<a onClick="deleteRow('
|
|
+ row_index
|
|
+ ')" target="_blank"><img style="cursor:pointer;" src="modules/EcmStockDocOuts/images/deleterow.gif"/></a>';
|
|
html += ' ';
|
|
// get components
|
|
html += '<a onClick="getComponents('
|
|
+ row_index
|
|
+ ')" target="_blank"><img style="cursor:pointer;" src="modules/EcmStockDocOuts/images/get_components.gif"/></a>';
|
|
html += '</td>';
|
|
}
|
|
}
|
|
// other types
|
|
else {
|
|
hide='';
|
|
|
|
html += '<td'+hide+'>';
|
|
$
|
|
.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/EcmQuotes/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
|
|
+ ';"';
|
|
if (cell.precision) precision = cell.precision; else precision = 2;
|
|
if (cell.isNumber) {
|
|
if (cellname == 'quantity')
|
|
precision = 4;
|
|
else
|
|
precision = 2;
|
|
html += ' onChange="$(this).val(FormatNumber($(this).val(),'+precision+'));'
|
|
+ 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], precision)
|
|
+ '" ';
|
|
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)
|
|
DrawDetailSummary();
|
|
else{
|
|
|
|
calculateTotal();
|
|
}
|
|
|
|
}
|
|
|
|
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 FormatNumber(number, precision) {
|
|
if (number < 0)
|
|
number = 0;
|
|
|
|
var precision = precision || 2;
|
|
// make string..
|
|
number = number + '';
|
|
number = number.replace(',', '.');
|
|
// round
|
|
number = toFixed(number, precision);
|
|
// add 1000 sep
|
|
var tmp = number.split(".");
|
|
var c = '';
|
|
for (var i = tmp[0].length; i != -1; i--) {
|
|
c += tmp[0].charAt(i);
|
|
if ((tmp[0].length - i) == 0 || i == 0)
|
|
continue;
|
|
if ((tmp[0].length - i) % 3 == 0)
|
|
c += '.';
|
|
}
|
|
// reverse c
|
|
c = c.split("").reverse().join("");
|
|
|
|
return c + ',' + tmp[1];
|
|
}
|
|
|
|
function UnformatNumber(number) {
|
|
// make string..
|
|
number = number + '';
|
|
// remove 1000 sep
|
|
number = number.replace('.', '');
|
|
// change ',' to '.'
|
|
number = number.replace(',', '.');
|
|
|
|
return parseFloat(number);
|
|
}
|
|
|
|
// round with precision
|
|
function toFixed(value, precision) {
|
|
var precision = precision || 0, neg = value < 0, power = Math.pow(10,
|
|
precision), value = Math.round(value * power), integral = String((neg ? Math.ceil
|
|
: Math.floor)(value / power)), fraction = String((neg ? -value
|
|
: value)
|
|
% power), padding = new Array(Math.max(precision - fraction.length,
|
|
0) + 1).join('0');
|
|
|
|
return precision ? integral + '.' + padding + fraction : integral;
|
|
}
|
|
|
|
// 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;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) {
|
|
hide='';
|
|
html += '<td width="' + column.width + '%"'+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;"> </th>';
|
|
html += '<th style="width: 100pt; text-align: left;">Kod</th>';
|
|
html += '<th style="width: 300pt; text-align: left;">Nazwa</th>';
|
|
if ($("#productSearchStock :selected").val() != '1')
|
|
html += '<th style="width: 30pt; text-align: right;">Stan</th>';
|
|
html += '<th style="width: 15pt; margin: auto auto;"> </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="text-align:left;" onClick="$(\'#prod_'
|
|
+ value.id
|
|
+ '\').prop(\'checked\', true);">'
|
|
+ value.code + '</td>';
|
|
html += '<td style="text-align:left;" onClick="unsetAllCheckboxes(); $(\'#prod_'
|
|
+ value.id
|
|
+ '\').prop(\'checked\', true); return addProducts();">'
|
|
+ value.name + '</td>';
|
|
if ($("#productSearchStock :selected").val() != '1')
|
|
html += '<td style="text-align:right">'
|
|
+ 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 += 'Ilość: <input type="text" id="searchInputQty" value=""/>';
|
|
html += '<br><br><input type="button" value="Dodaj wiele" onClick="return addProducts();"/>';
|
|
$('#searchResultDiv').html(html);
|
|
}
|
|
|
|
function setAddresses() {
|
|
if (shipping_addresses.length == 0)
|
|
return;
|
|
var s = $("<select id=\"shipping_addresses\"/>");
|
|
var opt='<option value=""></option>';
|
|
$.each(shipping_addresses, function (index, value) {
|
|
|
|
opt+='<option value="'+index+'">'+value.name+'</option>';
|
|
});
|
|
s.html(opt);
|
|
$("#addresses").html("");
|
|
$("#addresses").append(s);
|
|
//set on change
|
|
$("#shipping_addresses").change(function(){
|
|
putShippingAddress($( "#shipping_addresses option:selected" ).val());
|
|
});
|
|
}
|
|
|
|
function putShippingAddress(number) {
|
|
if (number == '') {
|
|
$("#shipping_address_name").val("");
|
|
$("#shipping_address_street").val("");
|
|
$("#shipping_address_postalcode").val("");
|
|
$("#shipping_address_city").val("");
|
|
$("#shipping_address_country").val("");
|
|
$("#shipping_iln").val("");
|
|
$("#shipping_nip").val("");
|
|
$("#shipping_supplier_code").val("");
|
|
} else {
|
|
$("#shipping_address_name").val(shipping_addresses[number].name);
|
|
$("#shipping_address_street").val(shipping_addresses[number].street);
|
|
$("#shipping_address_postalcode").val(shipping_addresses[number].postalcode);
|
|
$("#shipping_address_city").val(shipping_addresses[number].city);
|
|
$("#shipping_address_country").val(shipping_addresses[number].country);
|
|
$("#shipping_iln").val(shipping_addresses[number].iln);
|
|
$("#shipping_nip").val(shipping_addresses[number].nip);
|
|
$("#shipping_supplier_code").val(shipping_addresses[number].supplier_code);
|
|
}
|
|
}
|
|
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.parent_nip)
|
|
$("#parent_nip").val(data.parent_nip);
|
|
if (data.parent_iln)
|
|
$("#parent_iln").val(data.parent_iln);
|
|
if (data.parent_supplier_code)
|
|
$("#parent_supplier_code").val(data.parent_supplier_code);
|
|
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.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');
|
|
$.each(validation, function(index, value) {
|
|
validation.index = false;
|
|
});
|
|
//validation
|
|
if (data.document_recipient_code=='1')
|
|
validation.recipient_code = true;
|
|
if (data.document_parent_order_no=='1')
|
|
validation.parent_order_no = true;
|
|
if (data.document_delivery_address=='1')
|
|
validation.delivery_address=true;
|
|
if (data.document_parent_iln=='1')
|
|
validation.parent_iln=true;
|
|
if (data.document_shipping_iln=='1')
|
|
validation.shipping_iln=true;
|
|
if (data.document_parent_nip=='1')
|
|
validation.parent_nip=true;
|
|
if (data.document_shipping_nip=='1')
|
|
validation.shipping_nip=true;
|
|
setAccountValidation();
|
|
|
|
//clear prevoius validation data
|
|
shipping_addresses.length = 0; //clear array
|
|
shipping_addresses = data.addresses;
|
|
setAddresses();
|
|
//hide loading
|
|
$(".loading_panel").css("display", "none");
|
|
}
|
|
function unsetAllCheckboxes() {
|
|
$("#searchResultDiv input[type=checkbox]").each(function() {
|
|
$(this).prop("checked", false);
|
|
});
|
|
}
|
|
function setAccountValidation() {
|
|
//first clear validation
|
|
removeFromValidate('EditView', 'parent_order_no');
|
|
removeFromValidate('EditView', 'parent_shipping_address_name');
|
|
removeFromValidate('EditView', 'parent_shipping_address_street');
|
|
removeFromValidate('EditView', 'parent_shipping_address_postalcode');
|
|
removeFromValidate('EditView', 'parent_shipping_address_city');
|
|
removeFromValidate('EditView', 'parent_iln');
|
|
removeFromValidate('EditView', 'shipping_iln');
|
|
|
|
//now add what we need
|
|
if (validation.parent_order_no==true)
|
|
addToValidate('EditView', 'parent_document_no', 'id', 'true','');
|
|
if (validation.parent_order_no==true)
|
|
addToValidate('EditView', 'parent_document_no', 'id', 'true','');
|
|
if (validation.delivery_address==true) {
|
|
addToValidate('EditView', 'shipping_address_name', 'id', 'true','');
|
|
addToValidate('EditView', 'shipping_address_street', 'id', 'true','');
|
|
addToValidate('EditView', 'shipping_address_postalcode', 'id', 'true','');
|
|
addToValidate('EditView', 'shipping_address_city', 'id', 'true','');
|
|
}
|
|
if (validation.parent_iln==true)
|
|
addToValidate('EditView', 'parent_iln', 'id', 'true','');
|
|
if (validation.shipping_iln==true)
|
|
addToValidate('EditView', 'shipping_iln', 'id', 'true','');
|
|
if (validation.parent_nip==true)
|
|
addToValidate('EditView', 'parent_nip', 'id', 'true','');
|
|
if (validation.shipping_nip==true)
|
|
addToValidate('EditView', 'shipping_nip', 'id', 'true','');
|
|
}
|
|
function addProducts() {
|
|
$(".loading_panel").css("display", "block");
|
|
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.unit_name = data.unit_name;
|
|
p.unit_id = data.unit_id;
|
|
p.product_ean = data.ean;
|
|
p.stock_state = data.stock_state;
|
|
p.product_category_id = data.product_category_id;
|
|
p.product_pieces_per_carton = data.pieces_per_carton;
|
|
if ($("#searchInputQty").val() != ''
|
|
&& !isNaN(parseFloat(UnformatNumber($(
|
|
"#searchInputQty").val()))))
|
|
p.quantity = $("#searchInputQty").val();
|
|
p.product_cartons = 0;
|
|
if (p.product_pieces_per_carton > 0) {
|
|
p.product_cartons = Math.ceil(p.quantity / p.product_pieces_per_carton);
|
|
}
|
|
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();
|
|
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);
|
|
$(".loading_panel").css("display", "none");
|
|
},
|
|
data : params
|
|
});
|
|
|
|
}
|
|
function getItemsFromEcmSale(editview) {
|
|
var record = '';
|
|
if ($("#duplicate").val() == true)
|
|
record = $("input[name='return_id']").val();
|
|
else
|
|
record = $("input[name='ecmsale_id']").val();
|
|
if (isNaN(editview))
|
|
editview = true;
|
|
var params = {
|
|
job : 'getItemsFromEcmSale',
|
|
record : record,
|
|
};
|
|
$.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() {
|
|
$("#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=\''
|
|
+ FormatNumber($("#doc_total").val()) + '\'></td>';
|
|
html += '</tr>';
|
|
html += '<tr id="discount_tr"> ';
|
|
html += '<td class="positionsLabel">Suma operacji: wyjście</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=\''
|
|
+ $("#operations_out").val() + '\'></td>';
|
|
html += '</tr>';
|
|
html += '<tr id="total_tr"> ';
|
|
html += '<td class="positionsLabel">Suma operacji: wyjście</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=\''
|
|
+ $("#operations_in").val() + '\'></td>';
|
|
html += '</tr>';
|
|
html += '<tr id="total_tr"> ';
|
|
html += '<td class="positionsLabel"><a href="index.php?module=EcmStockOperations&custom_parent_id='
|
|
+ $("input[name=record]").val()
|
|
+ '" target="blank">Podgląd operacji magazynowych</a></td>';
|
|
html += '<td class="positionsField"> </td>';
|
|
html += '</tr>';
|
|
$("#result_table").html(html);
|
|
}
|
|
|
|
function generateDocNumberStock() {
|
|
var params = {
|
|
job : 'generateDocNumberStock',
|
|
stock_id: $("#stock_id").val(),
|
|
};
|
|
$.ajax({
|
|
type : "POST",
|
|
url : ajax_url,
|
|
dataType : "json",
|
|
success : function(data) {
|
|
if (data == '-1') {
|
|
// try loading again
|
|
generateDocNumberStock();
|
|
} 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) {
|
|
items[index].stock_state = 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++) {
|
|
refreshStock(index);
|
|
var qty = UnformatNumber($("#quantity_" + index).val());
|
|
var cat_id = $("#product_category_id_" + index).val();
|
|
// refresh items array
|
|
items[index].quantity = qty;
|
|
var stock = UnformatNumber($("#stock_state_" + index).val());
|
|
if ((qty > stock || qty == 0) && cat_id!='d7f876b0-1a3d-43a1-7c9b-511ba40df3d1') {
|
|
error = true;
|
|
$("#quantity_" + index).css("color", "red");
|
|
} else
|
|
$("#quantity_" + index).css("color", "black");
|
|
}
|
|
if (error){
|
|
alert('Brak produktów na stanie!');
|
|
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.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);
|
|
$(".loading_panel").css("display", "none");
|
|
}
|
|
function getPricesInfo(index) {
|
|
$("#price_start_div_" + index).show('slow');
|
|
$("#price_start_div_" + index).html(
|
|
'<img src="modules/EcmQuotes/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('
|
|
+ value.price
|
|
+ '); $(this).closest(\'div\').hide(\'slow\');calculateRow('
|
|
+ index
|
|
+ ');"><b>'
|
|
+ value.name
|
|
+ ': '
|
|
+ FormatNumber(value.price)
|
|
+ '</b></li>';
|
|
} else {
|
|
if(value.visible=='1'){
|
|
html += '<li style="cursor:pointer;" onClick="$(\'#price_start_'
|
|
+ index
|
|
+ '\').val('
|
|
+ value.price
|
|
+ '); $(this).closest(\'div\').hide(\'slow\');calculateRow('
|
|
+ index
|
|
+ ');">'
|
|
+ value.name
|
|
+ ': ';
|
|
if(value.module=='EcmPrices'){
|
|
html+='<font style="color:#7FFF00;">'+FormatNumber(value.price)+'</font>';
|
|
}
|
|
if(value.module=='EcmInvoiceOuts'){
|
|
html+='<font style="color:#FF3333;">'+FormatNumber(value.price)+'</font>';
|
|
}
|
|
html+ '</li>';
|
|
}
|
|
}
|
|
});
|
|
html += '</ul>';
|
|
},
|
|
data : params
|
|
});
|
|
$("#price_start_div_" + index).html(html);
|
|
}
|
|
|
|
function getSearchInfo2(product_id, product_code) {
|
|
$("#search_info_div2_" + product_id).show().draggable();
|
|
var html = '<img style="cursor: pointer;" align="left" src="themes/Sugar/images/close_inline.gif" onClick="$(\'#search_info_div2_'
|
|
+ product_id
|
|
+ '\').hide(\'slow\')"/>';
|
|
html += '<a href="index.php?module=EcmProducts&action=DetailView&record='
|
|
+ product_id + '" target="_blank">' + product_code + '</a><br><br>';
|
|
html +='<table><tr><td style="text-align:left;">Magazyn</td><td>Ilość</td></tr>';
|
|
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 += '<tr><td style="text-align:left;">'+key + '</td><td>' + FormatNumber(value)
|
|
+ '</td></tr>';
|
|
});
|
|
},
|
|
data : params
|
|
});
|
|
html += '</table>';
|
|
|
|
$("#search_info_div2_" + product_id).html(html);
|
|
}
|
|
|
|
function calculateRow(index) {
|
|
if (index == -1)
|
|
return;
|
|
|
|
var price = UnformatNumber($('#price_sell_' + index).val());
|
|
var quantity = UnformatNumber($('#quantity_' + index).val());
|
|
|
|
var total_sell = toFixed(price * quantity,2);
|
|
$('#price_total_sell_' + index).val(FormatNumber(total_sell));
|
|
|
|
//format quantity
|
|
$('#price_quantity_' + index).val(FormatNumber(quantity,2));
|
|
|
|
// put data to items array
|
|
items[index].price_sell = toFixed(price, 2);
|
|
items[index].price_total_sell = total_sell;
|
|
items[index].quantity = toFixed(quantity, 2);
|
|
// calculate total
|
|
calculateTotal();
|
|
|
|
//update cartons
|
|
var pieces_per_carton = UnformatNumber($('#product_pieces_per_carton_' + index).val());
|
|
var cartons = 0;
|
|
if (pieces_per_carton > 0) {
|
|
cartons = Math.ceil(quantity / pieces_per_carton);
|
|
}
|
|
$('#product_cartons_' + index).val(FormatNumber(cartons,2));
|
|
items[index].product_pieces_per_carton = toFixed(pieces_per_carton, 2);
|
|
items[index].product_cartons = toFixed(cartons, 2);
|
|
}
|
|
function updatePartNo(index) {
|
|
items[index].part_no = $('#part_no_' + index).val();
|
|
}
|
|
function calculateTotal() {
|
|
var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
|
|
var all_subtotal = 0;
|
|
var all_total = 0;
|
|
var weight_total=0;
|
|
|
|
for (var index = 0; index != count; index++) {
|
|
subtotal = UnformatNumber($('#price_total_sell_' + 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);
|
|
}
|
|
|
|
function getSearchInfo(product_id, product_code) {
|
|
$("#search_info_div_" + product_id).show().draggable();
|
|
var html = '<img style="cursor: pointer;" align="left" src="themes/Sugar/images/close_inline.gif" onClick="$(\'#search_info_div_'
|
|
+ product_id
|
|
+ '\').hide(\'slow\')"/>';
|
|
html += '<a href="index.php?module=EcmProducts&action=DetailView&record='
|
|
+ product_id + '" target="_blank">' + product_code + '</a><br><br>';
|
|
// get prices info
|
|
html +='<table><tr><td style="text-align:left;">Nazwa</td><td>Ilość</td><td>Cena</td><td>Data dok</td></tr>';
|
|
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) + '<br>';
|
|
if (value.name == $("#ecmprice_name").val())
|
|
html += '<b>' + value.name + ': '
|
|
+ FormatNumber(value.price) + '</b><br>';
|
|
else
|
|
|
|
if(value.module=='EcmStockDocIns'){
|
|
html+='<tr><td style="text-align:left;">'+value.name + '</td><td>'+value.quantity+'</td><td> <font style="color:#7FFF00;text-align:right;">'+FormatNumber(value.price)+'</font></td><td>'+value.register_date+'</td></tr>';
|
|
}
|
|
//html += value.name + ': ' + FormatNumber(value.price)
|
|
// + '<br>';
|
|
});
|
|
},
|
|
data : params
|
|
});
|
|
html+='</tr></table>';
|
|
|
|
$("#search_info_div_" + product_id).html(html);
|
|
}
|
|
|
|
function getSearchInfo3(product_id, product_code) {
|
|
$("#search_info_div3_" + product_id).show().draggable();
|
|
var html = '<img style="cursor: pointer;" align="left" src="themes/Sugar/images/close_inline.gif" onClick="$(\'#search_info_div3_'
|
|
+ product_id
|
|
+ '\').hide(\'slow\')"/>';
|
|
html += '<a href="index.php?module=EcmProducts&action=DetailView&record='
|
|
+ product_id + '" target="_blank">' + product_code + '</a><br><br>';
|
|
// get prices info
|
|
html +='<table><tr><td style="text-align:left;">Nazwa</td><td>Cena</td></tr>';
|
|
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) + '<br>';
|
|
if (value.name == $("#ecmprice_name").val())
|
|
html += '<b>' + value.name + ': '
|
|
+ FormatNumber(value.price) + '</b><br>';
|
|
else
|
|
|
|
if(value.module=='EcmPrices'){
|
|
html+='<tr><td style="text-align:left;">'+value.name + ':</td><td> <font style="color:#7FFF00;text-align:right;">'+FormatNumber(value.price)+'</font></td></tr>';
|
|
}
|
|
if(value.module=='EcmInvoiceOuts'){
|
|
html+='<tr><td "text-align:left;">'+value.name + ':</td><td> <font style="color:#FF3333;text-align:right;">'+FormatNumber(value.price)+'</font></td></tr>';
|
|
}
|
|
//html += value.name + ': ' + FormatNumber(value.price)
|
|
// + '<br>';
|
|
});
|
|
},
|
|
data : params
|
|
});
|
|
html+='</table>';
|
|
|
|
$("#search_info_div3_" + product_id).html(html);
|
|
}
|
|
$.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);
|
|
}
|
|
};
|
|
// sortable rows in main table
|
|
$("#" + itemsTable + " tbody").sortable(); |