Files
PVM/public_html/gest-lib/delivery_plan/js/planner/monthlyPlanner.js
ClaudioR 8716bedac1 [Delivery Plan]
- Modifiche al Popup (Aggiunte colonne Cod. Art. e Qta Evasa, 3 cifre decimali prezzi, Prezzo KG diventa Prezzo a U.M.)
- Fix filtro ricerca cliente (Problema ordini sdoppiati)
2024-03-04 16:42:28 +01:00

299 lines
9.5 KiB
JavaScript

$(function () {
_deliveryPlan.loadModule(function () {
$(document).on("click", "#btViewRiepMese", function () {
_deliveryPlan.mp.viewRiepMese();
});
$(document).on("click", "#bt_nuovoOrdine", function () {
new PopupOrdine()
.$domElement($(this))
.onUpdate(function (daysToUpdate) {
_deliveryPlan.mp.refreshOrdiniGiorni(daysToUpdate);
})
.open();
});
_deliveryPlan.mp.init();
});
});
_deliveryPlan.mp = {
planner: null,
init: function () {
var self = this;
var $selector = $("#monthlyPlannerSelector");
self.planner = new Planner();
self.planner
.noWorkingWeekDay(7)
.showOtherMonths()
.$container($("#monthlyPlanner"))
.monthPicker({
$item: $selector,
queryStringParameter: "ym", size: "md",
onChange: function () {
self.refreshOrdiniMese();
}
})
.onMoveItem(function ($item, dataPrev, dataNew) {
var itemKey = $item.getDataAttr("key");
$item.disableAll();
var p = _deliveryPlan.plannerUtils.moveConsegnaOrdine(itemKey, dataPrev, dataNew);
p.done(function () {
itemKey.data_cons = dataNew;
$item.attr("data-key", _ojbc.B64JSON_stringify(itemKey));
var $days = self.planner.getDayCell(dataPrev).add(self.planner.getDayCell(dataNew));
$days.disableAll();
self.refreshOrdiniGiorni([dataPrev, dataNew]).always(function () {
$days.enableAll();
});
})
.always(function () {
$item.enableAll();
});
return p;
})
.onDayClick(function (day) {
_deliveryPlan.plannerUtils.viewRiepGiorno(day);
});
if (self.planner.build()) {
self.refreshOrdiniMese();
_deliveryPlan.plannerUtils.filter.onChange(function (reloadOrders) {
_deliveryPlan.mp.refreshItems(reloadOrders);
}).init();
}
},
setTruckIcon: function (day, disponibilita) {
var self = this;
self.planner.getDayCell(day).find(".fa-shipping-fast, .fa-shipping-timed").remove();
if (!_.isEmpty(disponibilita)) {
var $truck = $("<i>", {class: "fa pull-right pt-8 pr-8"});
if (_.isEmpty(_.filter(disponibilita, {disponibilita: "Non disponibile"}))) {
$truck.addClass("fa-shipping-fast text-success");
} else {
$truck.addClass("fa-shipping-timed text-danger");
}
$truck.insertAfter(self.planner.getDayNumberHeader(day));
}
return self;
},
viewRiepMese: function () {
var self = this;
//var limitDays = self.planner.getLimitDays();
// PRENDO LE DATE DEL MESE ANCHE SE IL PLANNER INCLUDE GIORNI EXTRA
var limitDays = self.planner.getMonthLimitDays();
var startDay = limitDays[0];
var endDay = limitDays[1];
new Ajax()
.get("popup-riep-periodo")
.data({startDay: startDay, endDay: endDay})
.$button($("#btViewRiepMese"))
.noticeAsToast()
.onSuccess(function (ret) {
new ModalBox()
.gridSize({xs: 12, sm: 11, md: 10})
.content(ret.returnString)
.title("Riepilogo consegne del mese " + formatHumanDateRange(startDay, endDay))
.closeOnly().backhash().info().show();
})
.execute();
},
refreshOrdiniMese: function () {
const self = this;
const d = $.Deferred();
self.planner.get$monthPicker().disableAll();
_deliveryPlan.plannerUtils.filter.reset();
_deliveryPlan.plannerUtils.clearListOrdini();
self.planner.initDroppables();
const limitDays = self.planner.getLimitDays();
_deliveryPlan.plannerUtils.getGiorniUtili(limitDays).done(function (ret) {
self.refreshOrdiniGiorni(ret.returnData.days, true).always(function () {
d.resolve();
self.planner.get$monthPicker().enableAll();
});
});
return d.promise();
},
_isLoading: false,
refreshOrdiniGiorni: function (days, showToast) {
var self = this;
var d = $.Deferred();
if (days.length > 0) {
showToast = !(is_undefined(showToast) || showToast !== true);
self._isLoading = true;
_deliveryPlan.plannerUtils.clearDaysListOrdini(days);
_deliveryPlan.plannerUtils.filter.refresh().disable();
if (showToast) {
var toastProgress = new Toast();
toastProgress.bottomRight().progress().show("", "Caricamento ordini");
}
days = _.uniq(_.map(days, function (d) {
return +d;
}));
async.eachSeries(days, function (day, done) {
if (showToast) {
var dateFormatted = day.unixtime_format("D") + " " + ucfirst(getMonthName(day.unixtime_format("M"))) + " " + day.unixtime_format("YYYY");
var index = days.indexOf(day);
toastProgress.bottomRight().progressTime(index, days.length - 1, dateFormatted, "Caricamento ordini");
}
self._refreshOrdiniGiorno(day, _deliveryPlan.plannerUtils.filter.codMdep)
.done(function () {
//self.get$Planner().weekPlanner("enable_dayColumn", day);
done();
})
.fail(function () {
self._cleanDaysItems();
done(true);
});
}, function () {
self._isLoading = false;
_deliveryPlan.plannerUtils.filter.refresh().enable();
if (showToast) {
toastProgress.remove(500);
}
d.resolve();
});
} else {
d.resolve();
}
return d.promise();
},
_refreshOrdiniGiorno: function (day, codMdep) {
var self = this;
var p = _deliveryPlan.plannerUtils.getOrdiniGiorno(day, codMdep);
p.done(function (ret) {
_deliveryPlan.plannerUtils.clearDaysListOrdini([day]);
_deliveryPlan.plannerUtils.pushOrdini(ret.returnData.ordini);
self.setTruckIcon(day, ret.returnData.disponibilita)
._showOrdiniGiorno(day);
});
return p;
},
refreshItems: function (reloadOrders) {
const self = this;
if (reloadOrders) {
self.refreshOrdiniMese();
} else {
const days = self.planner.getDayList();
for (let i = 0; i < days.length; i++) {
self._showOrdiniGiorno(days[i]);
}
}
return self;
},
_cleanDaysItems: function () {
var self = this;
var days = self.planner.getDayList();
for (var i = 0; i < days.length; i++) {
self._cleanDayItems(days[i]);
}
return self;
},
_cleanDayItems: function (day) {
var self = this;
self.planner.cleanDayItems(day);
return self;
},
_showOrdiniGiorno: function (day) {
var self = this;
self._cleanDayItems(day);
var arr_ordiniGiorno = _deliveryPlan.plannerUtils.filterOrdiniGiorno(day);
if (_deliveryPlan.raggruppaPerCliente()) {
var arr_codAnag = Enumerable.From(arr_ordiniGiorno)
.Distinct(function (x) {
return x.cod_anag;
})
.Select(function (x) {
return x.cod_anag;
})
.ToArray();
for (var i = 0; i < arr_codAnag.length; i++) {
var codAnag = arr_codAnag[i];
var arr_ordiniClie = Enumerable.From(arr_ordiniGiorno).Where(function (x) {
return x.cod_anag === codAnag;
}).ToArray();
if (arr_ordiniClie.length === 1) {
self._appendOrdineSingolo(day, arr_ordiniClie[0]);
} else if (arr_ordiniClie.length > 1) {
self._appendOrdineMultiplo(day, arr_ordiniClie);
}
}
} else {
for (var i = 0; i < arr_ordiniGiorno.length; i++) {
self._appendOrdineSingolo(day, arr_ordiniGiorno[i]);
}
}
},
_appendOrdineMultiplo: function (day, arr_ordini) {
var self = this;
var $item = _deliveryPlan.plannerUtils.buildItemMultiplo(arr_ordini, day);
return self._appendItem($item, day);
},
_appendOrdineSingolo: async function (day, ordine) {
var self = this;
var $item = await _deliveryPlan.plannerUtils.buildItemSingolo(ordine);
_deliveryPlan.plannerUtils.popover.build($item, ordine, day);
self._appendItem($item, day);
if (_deliveryPlan.isEditabile(ordine)) {
//self.get$Planner().weekPlanner("makeDraggable", $item);
}
return self;
},
_appendItem: function ($item, day) {
this.planner.append($item, day);
return this;
}
};