Files
crm.e5.pl/modules/EcmReports/BimIT-Reports/productionSchedule/productionSchedule.js

353 lines
12 KiB
JavaScript
Raw Normal View History

2025-07-06 08:39:16 +00:00
var SelectedTab = "";
var TabsMainBlock = false;
var Components;
2024-12-03 09:55:11 +00:00
$(document).ready(function () {
$.tablesorter.addParser({
id: "production_date",
is: function () {
return false;
},
format: function (s, table, cell) {
2025-01-16 10:16:01 +00:00
return $(cell).find("input[id^=production-date]").val() || "2222-01-01";
2024-12-03 09:55:11 +00:00
},
parsed: false,
type: "text"
});
$("#allTable").tablesorter({
sortList: [[3, 1]],
theme: "blue",
widthFixed: true,
widgets: ["filter", "zebra", "stickyHeaders"],
fixedWidth: true,
widgetOptions: {
resizable: false,
filter_formatter: {
7: function (cell, index) {
return $.tablesorter.filterFormatter.select2(cell, index, {
match: true
});
},
8: function (cell, index) {
return $.tablesorter.filterFormatter.select2(cell, index, {
match: true
});
},
9: function (cell, index) {
return $.tablesorter.filterFormatter.select2(cell, index, {
match: true
});
},
10: function (cell, index) {
return $.tablesorter.filterFormatter.select2(cell, index, {
match: true
});
},
12: function (cell, index) {
return $.tablesorter.filterFormatter.select2(cell, index, {
match: true
});
},
13: function (cell, index) {
return $.tablesorter.filterFormatter.select2(cell, index, {
match: true
});
},
},
filter_functions: {
3: function (e, f, i) {
return f.includes(i);
}
}
},
headers: {
3: { sorter: "production_date" },
},
});
2025-01-16 10:16:01 +00:00
$("#allTable").bind('filterEnd', function () {
localStorage.setItem("productionSchedule_filter", $.tablesorter.getFilters($("#allTable")));
});
$("#allTable").bind("sortEnd", function () {
try {
localStorage.setItem('productionSchedule_sort',
$("#allTable")[0].config.sortList[0][0] + "|" + $("#allTable")[0].config.sortList[0][1]);
} catch (e) {}
});
setTimeout(() => {
const filters = localStorage.getItem("productionSchedule_filter");
if (filters) {
$.tablesorter.setFilters($('#allTable'), filters.split(','), true);
}
const sort = localStorage.getItem("productionSchedule_sort");
if (sort) {
try {
var tmp = sort.split("|");
$("#allTable")[0].config.sortList = [[parseInt(tmp[0]), parseInt(tmp[1])]];
$.tablesorter.sortOn($("#allTable")[0].config, [[parseInt(tmp[0]), parseInt(tmp[1])]]);
} catch (e) { }
}
}, 500);
2025-07-06 08:39:16 +00:00
$("#selectAll").click(function () {
if (this.checked) {
$(".allCheck").prop("checked", true);
} else {
$(".allCheck").prop("checked", false);
}
});
2024-12-03 09:55:11 +00:00
$("#duplicateBtn").click(() => duplicatePositions());
$("#deleteBtn").click(() => { removePositions(); });
$("#excelBtn").click(() => { exportExcel(); });
$("#pdfBtn").click(() => { window.alert("In progress."); });
$("#productionBtn").click(() => { window.alert("In progress."); });
2025-01-23 16:10:25 +00:00
$("#createInsideOrder").click(createInsideOrder);
2025-07-06 08:39:16 +00:00
2024-12-03 09:55:11 +00:00
});
2025-07-06 08:39:16 +00:00
function SetTab(tab_name) {
if (TabsMainBlock) { return; }
var TabMenu = document.getElementById("groupTabsPanels");
var tabs = TabMenu.getElementsByTagName("li");
for (var i = 0; i < tabs.length; i++) {
if ((tab_name + "_menu") === tabs[i].id) {
tabs[i].className = "active";
tabs[i].getElementsByTagName("a")[0].className = "current";
} else {
tabs[i].className = "";
tabs[i].getElementsByTagName("a")[0].className = "";
}
}
var prev = document.getElementById(SelectedTab);
var curr = document.getElementById(tab_name);
prev.style.display = "none";
curr.style.display = "";
SelectedTab = tab_name;
if (SelectedTab === "3") {
2024-12-03 09:55:11 +00:00
2025-07-06 08:39:16 +00:00
}
if (SelectedTab === "2") {
getRawMaterials();
}
if (SelectedTab === "1") {
}
}
function getRawMaterials() {
var ids = [];
$("input.allCheck:checkbox:checked").each(function () {
// check if this element is visible on site
if ($(this).parent().parent().css("display") === "table-row") {
ids.push($(this).val());
}
});
if (ids.length === 0) {
window.alert("Wybierz pozycje zamówień");
SetTab("1");
return;
}
showLoader();
var url = $(location).attr("href") + "&to_pdf=1&ajaxAction=getRawMaterials";
$.ajax({
method: "post",
url: url,
data: {
ids
},
success: function (data) {
var result = JSON.parse(data);
Components = result;
drawRawMaterials(result);
//drawComponents(result);
//updateComponentsPositions();
hideLoader();
},
error: function () {
window.alert("Błąd ładowania surowców");
hideLoader();
}
});
}
function drawRawMaterials(data) {
$("#rawMaterialsTableContainer").html(rawMaterialsTablePrototype());
data.forEach((el, index) => {
var tr = $("<tr></tr>");
tr.append("<td><input type=\"checkbox\" value=" + el.id + " class=\"rawMaterialCheck\" /></td>");
tr.append("<td>" + (index + 1) + "</td>");
tr.append("<td><a target=\"_blank\" href=\"index.php?module=EcmProducts&action=DetailView&record=" + el.id + "\">" + el.code + "</a></td>");
tr.append("<td title=\""+ el.fullName +"\">" + el.name + "</td>");
tr.append("<td id=\"qty-" + el.id + "\">" + el.quantity + "</td>");
tr.append("<td>" + el.unit + "</td>");
tr.append("<td id=\"state-" + el.id + "\">" + el.stockState + "</td>");
tr.append("<td id=\"ordered-" + el.id + "\">" + el.stockAddress + "</td>");
$("#rawMaterialsTable > tbody").append(tr);
});
$("#rawMaterialsTable").tablesorter({
theme: "blue",
widthFixed: true,
widgets: ["filter", "stickyHeaders"],
sortList: [[2, 0]],
});
$("#rawMaterialsTable").bind("filterEnd", function (event, config) {
updateRawMaterialsPositions();
});
$("#rawMaterialsTable").bind("sortEnd", function (event, config) {
updateRawMaterialsPositions();
$("#rawMaterialsTable tfoot").find("td").each(function () {
$(this).css("background-color", "white");
});
});
$("#selectAllRawMaterials").attr('checked', false);
$("#selectAllRawMaterials").click(function () {
if (this.checked) {
$(".rawMaterialCheck").prop('checked', true);
} else {
$(".rawMaterialCheck").prop('checked', false);
}
});
}
function rawMaterialsTablePrototype() {
return '<table id="rawMaterialsTable"><thead><tr><th class="filter-false"><input type="checkbox" id="selectAllRawMaterials" /></th><th>Pozycja</th><th>Indeks</th><th>Nazwa</th><th>Ilość</th><th>JM.</th><th>Stan</th><th>Adres magazynowy</th></tr></thead><tbody aria-live="polite" aria-relevant="all"></tbody></table>';
}
function updateRawMaterialsPositions() {
var i = 0;
$("#rawMaterialsTable").find("tr").each(function (index) {
if (index >= 2 && $(this).css('display') === 'table-row' && $(this).find("td").length > 3) {
i++;
$($(this).find("td")[1]).html(i);
}
});
}
2024-12-03 09:55:11 +00:00
function editQty(id) {
$("#edit-" + id).css("display", "none");
$("#qty-" + id).css("display", "none");
$("#qtyInput-" + id).css("display", "inline");
$("#qtyInput-" + id).select();
$("#save-" + id).css("display", "inline-block");
}
function saveQty(id) {
showLoader("Trwa aktualizacja...");
$("#edit-" + id).css("display", "inline-block");
$("#qty-" + id).css("display", "inline");
$("#qtyInput-" + id).css("display", "none");
$("#save-" + id).css("display", "none");
$.ajax({
method: "get",
url: $(location).attr("href") + "&to_pdf=1&ajaxAction=saveQty&id=" + id + "&qty=" + $("#qtyInput-" + id).val(),
success: function () {
$("#qty-" + id).html($("#qtyInput-" + id).val());
hideLoader();
},
});
}
function duplicatePositions() {
var ids = [];
$("input.allCheck:checkbox:checked").each(function () {
ids.push($(this).val());
});
if (ids.length === 0) {
window.alert("Wybierz pozycje zamówień");
return;
}
var userResponse = window.confirm("Zduplikować pozycje?");
if (!userResponse) { return; }
showLoader("Duplikowanie...");
$.ajax({
method: "get",
url: $(location).attr("href") + "&to_pdf=1&ajaxAction=duplicatePositions&ids=" + ids.join("|"),
success: function () {
window.location.reload();
},
});
}
function removePositions() {
var ids = [];
$("input.allCheck:checkbox:checked").each(function () {
ids.push($(this).val());
});
if (ids.length === 0) {
window.alert("Wybierz pozycje zamówień");
return;
}
var userResponse = window.confirm("Usunąć pozycje?");
if (!userResponse) { return; }
showLoader("Usuwanie...");
$.ajax({
method: "get",
url: $(location).attr("href") + "&to_pdf=1&ajaxAction=removePositions&ids=" + ids.join("|"),
success: function ()
{
window.location.reload();
},
});
}
function saveProductionDate(id) {
$.ajax({
method: "get",
url: $(location).attr("href") + "&to_pdf=1&ajaxAction=saveProductionDate&id=" + id + "&date=" + $("#production-date-" + id).val(),
});
}
function editDescription(id) {
$("#edit-description-" + id).css("display", "none");
$("#description-" + id).css("display", "none");
$("#descriptionInput-" + id).css("display", "inline");
$("#descriptionInput-" + id).select();
$("#save-description-" + id).css("display", "inline-block");
}
function saveDescription(id) {
$("#edit-description-" + id).css("display", "inline-block");
$("#description-" + id).css("display", "inline");
$("#descriptionInput-" + id).css("display", "none");
$("#save-description-" + id).css("display", "none");
$.ajax({
method: "get",
url: $(location).attr("href") + "&to_pdf=1&ajaxAction=saveProductDescription&id=" + id + "&description=" + $("#descriptionInput-" + id).val(),
2025-01-16 10:16:01 +00:00
success: function () {
2024-12-03 09:55:11 +00:00
$("#description-" + id).html($("#descriptionInput-" + id).val());
},
});
}
function showLoader(msg = "Pobieranie danych") {
$.blockUI({
css: {
border: "none",
padding: "15px",
backgroundColor: "#000",
"-webkit-border-radius": "10px",
"-moz-border-radius": "10px",
opacity: 0.5,
"font-weight": "bold",
"font-size": "16px",
color: "#fff",
},
message: msg
});
}
function hideLoader() {
$.unblockUI();
}
function exportExcel() {
showLoader("Generowanie pliku...");
$.ajax({
method: "get",
url: $(location).attr("href") + "&to_pdf=1&ajaxAction=exportExcel",
success: function (data)
{
window.console.log(data);
},
});
2025-01-23 16:10:25 +00:00
}
function createInsideOrder() {
var ids = [];
$('input.allCheck:checkbox:checked').each(function () {
ids.push($(this).val());
});
if (ids.length === 0) {
alert('Wybierz pozycje.');
return;
}
var products = [];
ids.forEach(el => {
const qty = parseFloat($("#qtyInput-" + el).val().trim());
const id = $("#productId-" + el).val();
products.push(id + "|" + qty);
});
$("#insideOrderProducts").val(products.join('*'));
$("#createInsideOrderForm").submit();
}