Files
PVM/public_html/gest-lib/check_doc_acquisti/js/main.js
2023-06-13 15:19:13 +02:00

435 lines
16 KiB
JavaScript

const _chkDocsA = {
el: null,
module: null,
table: null,
waitModal: null,
checkDocPopup: null,
debouncedLoad: null,
init() {
const self = this;
self.el = $(".main");
self.module = new Module();
self.module
.onLoad(_.bind(self.onLoad, self))
.load();
},
onLoad() {
const self = this;
self.initTable();
self.checkDocPopup = _popupCheckDoc.init(self, self.module);
},
initTable() {
const self = this;
$("li").on("shown.bs.tab", (event) => {
let li = $(event.target);
let popup = li.attr("href");
switch (popup) {
case "#popup_tab-controllare":
initKendoControllare();
break;
case "#popup_tab-assegnare":
initKendoAssegnare();
break;
}
});
const transport = {
dataType: "json",
};
const options = {
filterable: {
mode: "menu, row",
operators: { // redefine the string operators
date: {
eq: "È uguale a",
neq: "Non è uguale a",
inday: "È nella giornata del",
gte: "È dopo o uguale al",
gt: "È dopo il",
lte: "È prima o uguale al",
lt: "È prima del",
isnull: "È vuoto",
isnotnull: "Non è vuoto",
}
}
},
pageable: {
pageSizes: [20, 50, 70, 100, 1000, 5000]
}
};
const schema = {
schema: {
total: "total",
data: "data",
},
pageSize: 20,
serverPaging: true,
serverFiltering: true,
serverSorting: true,
sort: {field: "data_doc", dir: "asc"},
};
const columns = _kendo.setDefaultCellOptions([
{
selectable: true,
attributes: {
"class": "!k-text-center selezionatore",
}
},
{
field: "data_doc",
title: "Data documento",
type: "date",
format: "{0:dd/MM/yyyy}",
filterable: {
cell: {
minLength: 100,
operator: "eq",
suggestionOperator: "eq"
}
}
},
{field: "num_doc", title: "Numero documento", filterable: true},
{field: "ser_doc", title: "Serie documento", filterable: true},
{field: "cod_dtip", title: "Tipo documento", filterable: true},
{
field: "cod_anag",
title: "Fornitore",
filterable: {
ui(element) {
$(element).siblings("select").addClass("hidden");
element.kendoAutoComplete({
dataSource: {
transport: {
read(options) {
_kendo.checkFilterValuesColumns(options.data.filter, _pianificazioneProduzioneOrto.columns);
new Ajax()
.get("searchCliente")
.data(this.parameterMap ? this.parameterMap(options.data, "read") : options.data)
.noticeAsToast()
.onSuccess(data => {
options.success(data.returnData);
})
.onError({
toast: {message: "Errore nel caricamento dei clienti."},
callback(result) {
options.error(result.errorText);
}
})
.execute();
}
}
},
template: `
<span class="k-state-default">
<p>#: data.cod_anag # - #: data.rag_soc #</p>
<p>#: data.indirizzo # - #: data.citta #</p>
</span>`,
filter: "contains",
dataTextField: "field",
valuePrimitive: true,
minLength: 3
});
},
extra: false,
operators: {
string: {
contains: "Contiene"
},
}
}
},
{
field: "data_reg",
title: "Data registrazione",
type: "date",
format: "{0:dd/MM/yyyy}",
filterable: {
cell: {
minLength: 100,
operator: "eq",
suggestionOperator: "eq"
}
}
},
{
field: "data_ins",
title: "Data ins.",
type: "date",
format: "{0:dd/MM/yyyy}",
filterable: {
cell: {
minLength: 100,
operator: "eq",
suggestionOperator: "eq"
}
}
},
{field: "cod_alis", title: "Listino", filterable: true},
{
field: "unchecked_rows",
type: "number",
title: "Righe da controllare",
filterable: {
cell: {
template(args) {
args.element.kendoNumericTextBox({
format: "n0"
});
}
},
ui(element) {
element.kendoNumericTextBox({
format: "n0"
});
}
}
},
{field: "db_name", title: "DB", filterable: true},
]);
const dataBound = function () {
if (!this.dataSource.data().length) {
this.tbody.append($("<tr class='no-drag'><td colspan='3'>Nessun documento presente</td></tr>"));
} else {
const grid = this;
grid.table.find("tr").each(function (a, tr) {
const dataItem = grid.dataItem(tr);
const item = {...dataItem};
item.data_doc = moment(item.data_doc).unix();
item.data_ins = moment(item.data_ins).unix();
item.data_reg = moment(item.data_reg).unix();
$(tr).on("click", "td:not(.selezionatore)", _.bind(self.rowOnClick, self, item));
if (dataItem.unchecked_rows > 0) {
$(tr).addClass("daControllare");
}
});
}
};
function initKendoControllare() {
let gridControllare = $("#gridControllare");
if (!gridControllare.data("kendoGrid")) {
gridControllare.kendoGrid({
dataSource: {
transport: {
read: "?loadDocsControllare",
...transport,
parameterMap: function (data) {
data.username = _USER.username;
if (data.filter) {
_kendo.checkFilterValuesColumns(data.filter, columns);
}
return data;
}
},
...schema
},
height: "80vh",
columns,
dataBound,
...options
}).data("kendoGrid");
}
}
function initKendoAssegnare() {
let gridAssegnare = $("#gridAssegnare");
if (!gridAssegnare.data("kendoGrid")) {
gridAssegnare.kendoGrid({
dataSource: {
transport: {
read: "?loadDocsAssegnare",
...transport,
parameterMap: function (data) {
if (data.filter) {
_kendo.checkFilterValuesColumns(data.filter, columns);
}
data.username = self.module.get_dataSource("usernameDaAssegnare");
return data;
}
},
...schema
},
height: "75vh",
columns,
dataBound,
...options
}).data("kendoGrid");
}
}
$("a[href*='#popup_tab-controllare']").trigger("click");
$("#bt_confermaDocumenti").on("click", function () {
const kendoGrid = $("#gridControllare").data("kendoGrid");
if (kendoGrid) {
const selectedRows = kendoGrid.select();
if (selectedRows && selectedRows.length > 0) {
const rows = selectedRows.map((index, selectedRow) => {
const dataItem = kendoGrid.dataItem(selectedRow);
const item = {...dataItem?.toJSON()};
item.data_doc = moment(item.data_doc).unix();
item.data_ins = moment(item.data_ins).unix();
item.data_reg = moment(item.data_reg).unix();
return item;
}).toArray();
const data = {
rows: rows,
};
const ajax = new Ajax();
ajax
.post("confermaDocumenti")
.data(data)
.confirmModal("Vuoi confermare i documenti selezionati?")
.noticeAsModal()
.onSuccess(function () {
const toast = new Toast();
toast.success("Salvataggio completato!");
const gridControllare = $("#gridControllare");
if (gridControllare && gridControllare.data("kendoGrid")) {
gridControllare.data("kendoGrid").dataSource.read();
gridControllare.data("kendoGrid").refresh();
}
})
.execute();
}
}
});
$("#bt_assegnaDocumenti").on("click", function () {
const kendoGrid = $("#gridAssegnare").data("kendoGrid");
const ajax = new Ajax();
ajax
.get("loadUtentiDaAssegnare")
.onSuccess(function (ret) {
const utenti = ret.returnData;
if (kendoGrid) {
const selectedRows = kendoGrid.select();
if (selectedRows && selectedRows.length > 0) {
const template = self.module.get_$template("popupCheckDoc.popupUtenteDaAssegnare");
const modalBox = new ModalBox();
modalBox
.title("Selezionare utente")
.btOK({
text: "Salva", style: "primary",
onClick: function (e, $btOk, $div) {
const utente = $div.find("#utente_da_assegnare").val();
const rows = selectedRows.map((index, selectedRow) => {
let dataItem = kendoGrid.dataItem(selectedRow);
let item = {...dataItem?.toJSON()};
item.data_doc = moment(item.data_doc).unix();
item.data_ins = moment(item.data_ins).unix();
item.data_reg = moment(item.data_reg).unix();
return item;
}).toArray();
const data = {
rows: rows,
utente: utente,
};
new Ajax()
.get("assegnaDocumenti")
.data(data)
.waitModal()
.onSuccess(function () {
const toast = new Toast();
toast.success("Salvataggio completato!");
modalBox.close();
const gridAssegnare = $("#gridAssegnare");
if (gridAssegnare && gridAssegnare.data("kendoGrid")) {
gridAssegnare.data("kendoGrid").dataSource.read();
gridAssegnare.data("kendoGrid").refresh();
}
})
.execute();
}
})
.onBeforeShow(function ($div) {
let $utenteDaAssegnare = $div.find("#utente_da_assegnare");
$utenteDaAssegnare.select2({
dropdownParent: $div,
});
_.each(utenti, function (utente) {
const newOption = new Option(utente.user_name, utente.user_name, false, false);
$utenteDaAssegnare.append(newOption).trigger("change");
});
})
// .primary("Selezionare l'utente a cui assegnare " + rows.length + " documento/i")
.content(template)
.backdropStatic().backhash().md().okCancel().primary().show();
}
}
})
.execute();
});
},
onEditClose() {
let self = this;
const gridControllare = $("#gridControllare");
if (gridControllare && gridControllare.data("kendoGrid")) {
gridControllare.data("kendoGrid").dataSource.read();
gridControllare.data("kendoGrid").refresh();
}
const gridAssegnare = $("#gridAssegnare");
if (gridAssegnare && gridAssegnare.data("kendoGrid")) {
gridAssegnare.data("kendoGrid").dataSource.read();
gridAssegnare.data("kendoGrid").refresh();
}
},
onEditStart() {
let self = this;
if (_.isNumber(self.debouncedLoad)) {
clearTimeout(self.debouncedLoad);
self.debouncedLoad = null;
}
},
rowOnClick(data) {
const self = this;
self.checkDocPopup.setDocument(data);
self.checkDocPopup.open();
}
};
$(function () {
_chkDocsA.init();
});