435 lines
16 KiB
JavaScript
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();
|
|
});
|
|
|