- 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)
299 lines
9.5 KiB
JavaScript
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;
|
|
}
|
|
}; |