Files
crm.e5.pl/modules/EcmServices/EcmServices.js

816 lines
24 KiB
JavaScript
Raw Permalink Normal View History

2024-04-27 09:23:34 +02:00
window.onbeforeunload = function() {
removeDocumentReservations(document.getElementById("temp_id").value);
//saveDocumentReservations(document.getElementById("temp_id").value);
alert("Wprowadzone zmiany nie zostały zapisane");
}
function BlockProducts(){
var tab = document.getElementById("tbody");
var tr = tab.getElementsByTagName("tr");
var qty;
var total;
for(var i=0; i < tr.length; i++){
var inp=tr[i].getElementsByTagName("input");
var img=tr[i].getElementsByTagName("img");
var tx=tr[i].getElementsByTagName("textarea");
//console.log(inp);
if (inp[2].value!='') {
inp[1].setAttribute('readonly', 'readonly');
inp[1].setAttribute('onkeydown', '');
img[2].setAttribute('style', 'display:none');
//img[1].setAttribute('style', 'display:none');
}
//if(inp[8].value==1)deleteEmptyComponents(inp[11].value);
}
return true;
}
function saveDocumentReservations(temp_id, operation) {
url = 'index.php?module=EcmStockOperations&action=saveDocumentReservations&temp_doc_id='+temp_id+'&to_pdf=1';
var req = mint.Request();
req.OnSuccess = function() {
switch(operation)
{
case 'cancel':
case 'list':
default:
//window.location = "index.php?module=EcmServices&action=index";
break;
}
return;
}
req.Send(url);
}
function removeDocumentReservations(temp_id, operation) {
url = 'index.php?module=EcmStockOperations&action=deleteDocumentReservations&temp_doc_id='+temp_id+'&to_pdf=1';
var req = mint.Request();
req.OnSuccess = function() {
switch(operation)
{
case 'cancel':
case 'list':
default:
window.location = "index.php?module=EcmServices&action=index";
break;
}
return;
}
req.Send(url);
}
function getProductQuantity(rowIndex, operation) {
//console.log('getProductQuantity');
var stock_id = document.getElementById("stock_id").value;
var product_id = N.row(rowIndex).getData().id;
url='index.php?module=EcmStockStates&action=getProductQuantity&stock_id=' + stock_id + '&product_id=' + product_id + '&to_pdf=1';
//console.log(url);
var req = mint.Request();
req.OnSuccess = function()
{
//console.log("getProductQuantity:OnSuccess");
//return;
var data = N.row(rowIndex).getData();
//console.log(data);
data.stock = this.responseText;
N.row(rowIndex).setData(data);
if (!data.reserved)
data.reserved = 0;
if (operation == "saveReservation") {
N.row(rowIndex).className='';
saveReservation(rowIndex, false);
//console.log(data);
if(parseFloat(data.stock) >= data.rq) {
N.row(rowIndex).addClass('greenRow');
} else {
N.row(rowIndex).addClass('redRow');
}
return;
//console.log(data);
//N.row(rowIndex).className='';
//if qty = 0 do clear reserved field
if (data.rq == 0 ) {
N.row(rowIndex).setData();
removeReservation(rowIndex);
}
if(data.quantity >= data.rq)
{
/*
saveReservation(rowIndex, false);
return;
*/
if (data.stock >= data.rq) {
saveReservation(rowIndex, false);
return;
}
if ((data.stock < data.rq) && (parseFloat(data.stock) + parseFloat(data.rq) > 0)) {
console.log(data.stock);
console.log(data.rq);
console.log( parseFloat(data.stock) + parseFloat(data.rq));
saveReservation(rowIndex, true, parseFloat(data.stock) + parseFloat(data.rq)); // orange row true;
return;
}
if (data.quantity==0) {
data.reserved = 0;
N.row(rowIndex).setData();
removeReservation(rowIndex);
setTimeout(function() {getProductQuantity(rowIndex);},1000);
return;
}
/*
//stock > qty - all OK, can reserve
if (data.stock>=data.quantity-data.reserved) {
saveReservation(rowIndex, false);
return;
}
if ((data.stock<(data.quantity-data.reserved)) && (parseFloat(data.stock)+parseFloat(data.reserved)>0)) {
saveReservation(rowIndex, true, parseFloat(data.stock)+parseFloat(data.reserved)); //orange row true;
return;
}
//stock <= qty + res, sand reserve, do nothing
if (data.stock<(data.quantity-data.reserved)) {
N.row(rowIndex).className = 'redRow';
return;
}
*/
}
//if (data.stock < data.rq || data.quantity > data.rq) {
N.row(rowIndex).addClass('redRow');//className = 'redRow';
// return;
//}
}
}
req.Send(url);
}
function saveReservation(rowIndex, orangeRow, qty){
//console.log('saveReservation');
var data = N.row(rowIndex).getData();
//console.log(data);
var product_id = data.id;
var temp_item_id = data.temp_item_id;
var quantity;
if (qty)
quantity = qty;
else
quantity = data.rq;
var date = document.getElementById("temp_date").value;
var stock_id = document.getElementById("stock_id").value;
var temp_doc_id = document.getElementById("temp_id").value;
var url='index.php?module=EcmStockOperations&action=saveReservation&stock_id='+stock_id+'&product_id='+product_id+'&temp_doc_id='+temp_doc_id+'&temp_item_id='+temp_item_id+'&date='+date+'&quantity='+quantity+'&to_pdf=1';
//console.log(url);
var req = mint.Request();
req.OnSuccess = function(){
//console.log("saveReservation:OnSuccess");
var data = N.row(rowIndex).getData();
data.reserved = quantity;
N.row(rowIndex).setData(data);
//N.row(rowIndex).cell(3).getElementById("reservation_info").innerHtml="("+data.reserved+")";
//N.row(rowIndex).cells.item(4).getElementsByTagName('input')[0].value = NumberToUserFormatNumber(data.reserved);
//cell(3).getElementById("reservation_info").innerHtml
if (orangeRow == true)
N.row(rowIndex).addClass('orangeRow'); //.className = 'orangeRow';
else
N.row(rowIndex).addClass('greenRow'); //.className = 'greenRow';
getProductQuantity(rowIndex);
}
req.Send(url);
}
function removeReservation(index) {
//Console.log('removeReservation');
var data = N.row(index).getData();
var temp_item_id = data.temp_item_id;
url='index.php?module=EcmStockOperations&action=deleteReservation&temp_item_id='+temp_item_id+'&to_pdf=1';
//console.log('removeReservation: ' + url);
var req=mint.Request();
req.OnSuccess = function() {
//console.log('removeReservation OnSuccess');
}
req.Send(url);
}
function SetTabIndexs() {
var main = document.getElementById("main");
var td = main.getElementsByTagName("td");
var selectedTable = null;
//var selectingColor = "red";
//var selectingCellTable = "green";
var TableIndex = 0;
for(var i=0; i<td.length; i++) {
if(td[i].className == "tabEditViewDF") {
var TI = 0;
if(td[i].parentNode.cells.item(1) == td[i]) TI = 101+TableIndex; else TI = 102+TableIndex;
var nodes = td[i].getElementsByTagName("input");
for(var j=0; j<nodes.length; j++) nodes[j].tabIndex = TI;
var nodes = td[i].getElementsByTagName("select");
for(var j=0; j<nodes.length; j++) nodes[j].tabIndex = TI;
var nodes = td[i].getElementsByTagName("textarea");
for(var j=0; j<nodes.length; j++) nodes[j].tabIndex = TI;
if(td[i].parentNode.parentNode.parentNode !== selectedTable) {
//if(selectingColor == "red") selectingColor = "blue"; else selectingColor = "red";
selectedTable = td[i].parentNode.parentNode.parentNode;
TableIndex++;
}
}
}
}
function doRequest(where, post, doFunction, error) {
this.Display = function(result) {
doFunction(result.responseText);
}
this.Fail = function(result){
if(error)
alert(error);
}
YAHOO.util.Connect.asyncRequest(
"POST",
where,
{
success:this.Display,
failure:this.Fail
},
post
);
}
function changeValidateRequired(formname,name,required) {
for(var i=0; i<validate[formname].length; i++)
if(validate[formname][i][0] == name) {
validate[formname][i][2] = required;
break;
}
}
function set_focus() {
document.getElementById("name").focus();
}
function my_popup(module, field_array, met, call_back_function, form_name) {
if(!call_back_function) call_back_function = "set_return";
if(!form_name) form_name = "EditView";
return open_popup(module, 900, 700, met, true, false, {
"call_back_function":call_back_function,
"form_name":form_name,
"field_to_name_array":field_array
});
}
function addEvent(object,eventName,do_function) {
if(typeof(object) == "string") object = document.getElementById(object);
if(!object) {
alert("No object in function addEvent!");
return;
}
if(object.addEventListener) {
object.addEventListener(eventName, do_function, false);
} else {
object.attachEvent("on"+eventName, do_function);
}
}
function findPos(obj) {
var nleft = 0;
var ntop = 0;
if (obj.offsetParent) {
nleft = obj.offsetLeft
ntop = obj.offsetTop
while (obj = obj.offsetParent) {
nleft += obj.offsetLeft
ntop += obj.offsetTop
}
}
return [nleft,ntop];
}
function cursorEOT(isField) {
isRange = isField.createTextRange();
isRange.move("textedit");
isRange.select();
testOverflow = isField.scrollTop;
if (testOverflow != 0){
return true
}
else {
return false
}
}
function adjustRows(isField) {
while (cursorEOT(isField)){
isField.rows++
}
}
function insertText(isField,isText) {
isField.value = testText;
isField.focus();
}
function changer() {
this.list = new Object();
this.add = function(object,type,do_function,start_value) {
if(typeof(object) == "string") object = document.getElementById(object);
if(!object) return;
this.list[object.id] = new Object();
this.list[object.id].object = object;
this.list[object.id].type = type;
this.list[object.id].do_function = do_function;
this.list[object.id].start_value = start_value;
this.list[object.id].value = "";
}
this.getValue = function(element) {
var value = null;
if(element.object) {
if(element.type == "innerHTML") value = element.object.innerHTML;
if(element.type == "value") value = element.object.value;
if(element.type == "checked") value = element.object.checked;
}
return value;
}
this.interval = 1000;
this.timer = null;
this.startTimer = function() {
var cc = this;
this.timer = setInterval(
function(){
var list = cc.list;
for(x in list) {
if(list[x].start_value) {
list[x].value = cc.getValue(list[x]);
list[x].start_value = false;
}
else {
var value = cc.getValue(list[x]);
if(list[x].value !== value)
if(list[x].do_function)
list[x].do_function(list[x].object);
list[x].value = value;
}
}
},
this.interval
);
}
this.stopTimer = function () {
clearInterval(this.timer);
this.timer = null;
}
}
var ERROR = false;
var ItemListSave = function(json) {
return "";
}
var ServiceListSave = function(json) {
return "";
}
var IncomeListSave = function(json) {
return "";
}
function ShowLoadingView() {
var slv = document.getElementById("ShowLoadingView");
if(!slv) {
slv = document.createElement("div");
slv.id = "ShowLoadingView";
slv.className = "transparent_class_loading";
slv.style.width = "100%";
slv.style.height = "500%";
var sli = document.createElement("img");
sli.className = "transparent_class_loading_image";
sli.src = "themes/default/images/loading.gif";
slv.appendChild(sli);
document.body.appendChild(slv);
}
slv.style.display = "";
}
function HideLoadingView() {
var slv = document.getElementById("ShowLoadingView");
if(slv) slv.style.display = "none";
}
function saveItems(){
document.getElementById("position_list").value = ItemsList(true);
}
function saveServices(){
document.getElementById("services_list").value = ServicesList(true);
}
function checkStockQuantity(){
var tab=document.getElementById("tbody");
var tr=tab.getElementsByTagName("tr");
var qtyinstock;
var qty;
var total;
for(var i=0;i<tr.length;i++){
qtyinstock=tr[i].getElementsByTagName("input")[18].value;
qty=tr[i].getElementsByTagName("input")[17].value;
total=parseFloat(qtyinstock)-parseFloat(qty);
if(tr[i].getElementsByTagName("input")[17].checked==true && tr[i].getElementsByTagName("input")[2].value && parseInt(qtyinstock)-parseInt(qty)<0){
alert("Brakuje produktów na magazynie aby zrobic rezerwacje");
tr[i].getElementsByTagName("input")[17].value=parseInt(qtyinstock);
if(tr[i].getElementsByTagName("input")[9].value<tr[i].getElementsByTagName("input")[18].value){
tr[i].getElementsByTagName("input")[18].value=parseInt(tr[i].getElementsByTagName("input")[9].value);
}
return false;
}
}
return true;
}
function removeHistoryRecord(id) {
var historyElement = document.forms.EditView.history;
var historyValue = JSON.parse(historyElement.value);
historyValue[id] = null;
//console.log(historyElement.value);
//console.log('Length: ' + historyValue.length);
historyElement.value = JSON.stringifyNoSecurity(historyValue);
return true;
}
function removeHistory(a) {
var paretLi = a.parentNode.parentNode;
var idParts = paretLi.id.split('_');
if(idParts[1] >= 0) {
removeHistoryRecord(idParts[1]);
//paretLi.removeChild(idParts[1]);
paretLi.style.display = 'none';
}
//console.log(paretLi.parentNode.children );
// Hide no-results item if needed.
if(paretLi.parentNode.children.length == 0) {
//
}
return true;
}
function addHistoryRecord(date, owner, record) {
var historyRecord = [
date,
owner,
record
];
var historyElement = document.forms.EditView.history;
var historyValue = JSON.parse(historyElement.value);
historyValue.unshift(historyRecord);
historyElement.value = JSON.stringifyNoSecurity(historyValue);
// Bof: Build list item.
{
var recordLi = document.createElement('li');
var dateP = document.createElement('p');
dateP.appendChild(document.createTextNode(date));
dateP.appendChild(document.createTextNode(', '));
dateP.appendChild(document.createTextNode(owner));
dateP.appendChild(document.createTextNode(':'));
//var ownerP = document.createElement('p');
//ownerP.appendChild(document.createTextNode(owner));
var recordP = document.createElement('p');
recordP.appendChild(document.createTextNode(record));
recordLi.appendChild(dateP);
//recordLi.appendChild(ownerP)
recordLi.appendChild(recordP);
}
// Eof: Build list item.
// Prepend new history record.
var wrapperList = document.getElementById('history_wrapper').children[0];
// Hide no-results item if needed.
if(wrapperList.children.length == 1 && wrapperList.children[0].getAttribute('class') == 'no-results') {
wrapperList.children[0].style.display = 'none';
}
wrapperList.insertBefore(recordLi, wrapperList.firstChild);
return true;
}
function addHistory() {
// Grab important form fields.
var owner = document.forms.EditView.history_owner;
var date = document.forms.EditView.history_date;
var record = document.forms.EditView.history_record;
// Check values.
if(owner.value.length == 0 || date.value.length == 0 || record.value.length == 0) {
alert('Wypełnij wszystkie pola.');
return false;
}
// Create row, update hidden history value.
addHistoryRecord(date.value, owner.value, record.value);
var date = new Date();
// Reset form.
owner.value = '';
date.value = date.toString('d.m.Y');
record.value = '';
return true;
}
function SaveForm() {
ShowLoadingView();
setTimeout(function() {
if(OPT["checkbox_demo"] == 1 && document.forms.EditView.record.value == "") {
alert(MOD.LBL_DEMO_VERSION_INFORMATION);
return;
}
ERROR = false;
//document.getElementById("position_list").value = ItemListSave(true);
if(ERROR) {
alert(MOD["LBL_SAVE_FORM_ERROR"]);
HideLoadingView();
return false;
}
document.forms.EditView.action.value = "Save";
if(check_form("EditView")) {
//var result = confirm(MOD.LBL_CONFIRM_QUESTION);
//if(result) document.forms.EditView.status.value = (OPT["auto_commiting"]?"s30":"s20");
doRequest(
"index.php",
getFormPost("Save"),
function(result){
/*
console.log(result);
HideLoadingView();
return;
*/
document.forms.EditView.record.value = result.substring(result.length - 36);
if(OPT["setEmailTab"])
setEMAIL(true);
else
window.location = "index.php?module="+document.forms.EditView.module.value+"&action=DetailView&record="+document.forms.EditView.record.value;
},
MOD["LBL_NOT_SAVED"]
);
} else {
alert(MOD["LBL_NOT_SAVED"]);
HideLoadingView();
return false;
}
},
200);
}
function ItemListClear() {
while(N.rowCount() > 0)
N.row(0).deleteRow();
}
function getFormPost(action) {
if(!action)
action = "previewPDF";
var pd =
"to_pdf=1" +
"&module=EcmServices&action=" +
action +
"&record=" +
document.forms.EditView.record.value;
pd += "&cache=fromJava" + ItemListSave(true) + ServiceListSave(true) + IncomeListSave(true);
pd += '&history=' + document.forms.EditView.history.value;
var pd2 = new Object();
pd2["module"] = "EcmServices";
pd2["action"] = action;
pd2["record"] = document.forms.EditView.record.value;
pd2["to_pdf"] = "1";
pd2["cache"] = "fromJava";
//pd2['history'] = document.forms.EditView.history.value;
document.forms.EditView.position_list.value = "";
document.forms["EditView"].action.value = action;
var tmp;
for(var i=0; i < document.forms["EditView"].elements.length; i++) {
tmp = document.forms["EditView"].elements[i];
if(tmp.name != "") {
if(tmp.type == "checkbox")
pd2[document.forms["EditView"].elements[i].name] =(document.forms["EditView"].elements[i].checked ? "1" : "0");
else
pd2[document.forms["EditView"].elements[i].name] = document.forms["EditView"].elements[i].value;
}
}
pd += "&otherFormData=" + JSON.stringifyNoSecurity(pd2);
return pd;
}
function sendFormPostToPdf(type, panel) {
var tab = '_';
if(type != null) {
tab += type.toUpperCase();
}
ERROR = false;
document.getElementById("position_list").value = ItemListSave(true);
document.getElementById("services_list").value = ServiceListSave(true);
document.getElementById("income_list").value = IncomeListSave(true);
if(ERROR) {
alert("There are some errors on list");
return false;
}
doRequest(
"index.php",
getFormPost("previewPDF"),
function(result) {
//console.log(result);
//return;
if(SHOW_PDF_IN_DIV==1){
HideLoadingView();
EcmPreviewPDF(
"index.php?module=EcmServices&action=previewPDF&to_pdf=1&from=EcmServices&type=" + type,
{
zoom:75
}
);
}
else{
SetTab((panel ? "panel_" : "" )+ "PREVIEW" + tab);
document.getElementById("previewPDF" + tab).innerHTML = '<iframe style="border: none; width: 100%; height: 1200px;" frameborder="no" src="index.php?module=EcmServices&action=previewPDF&to_pdf=1&from=EcmServices&type=' + type + '#zoom=75">Yours browser not accept iframes!</iframe>';
}
}
);
}
preview_pdf = function() {
var type = document.getElementById('preview_type').value;
switch(type)
{
default:
type = 'income';
case 'fault':
case 'income':
case 'qty':
case 'val':
case 'warranty':
break;
}
doRequest(
"index.php",
getFormPost("previewPDF"),
function(result) {
//console.log(result);
//return;
if(SHOW_PDF_IN_DIV==1){
HideLoadingView();
EcmPreviewPDF(
"index.php?module=EcmServices&action=previewPDF&to_pdf=1&from=EcmServices&type=" + type,
{
zoom:75
}
);
}
else{
document.getElementById("previewPDF").innerHTML = '<iframe style="border: none; width: 100%; height: 1200px;" frameborder="no" src="index.php?module=EcmServices&action=previewPDF&to_pdf=1&from=EcmServices&type=' + type + '#zoom=75">Yours browser not accept iframes!</iframe>';
}
}
);
//document.getElementById('previewPDF').innerHTML = '<iframe style="border:none;width:100%;height:1200px;" frameborder="no" src="index.php?module=EcmServices&action=previewPDF&type=' + type + '&to_pdf=1&method=I&record=' + document.forms.DetailView.record.value + '#zoom=75">Yours browser not accept iframes!</iframe>';
}
function canConfirm() {
if(document.forms.EditView.status.value == "accepted" && !OPT.user.confirm_quotes) {
alert("This option is disabled for You.");
document.forms.EditView.status.value = ((OPT.old_status)?OPT.old_status:"");
}
OPT.old_status = document.forms.EditView.status.value;
}
function CheckDiscount(noAlert) {
var discount = 0;
return 0;
}
var AjaxSearch1Items;
var AjaxSearch2Items;
var AjaxSearch3Items;
var parentFL;
var productFL;
var contactFL;