165 lines
6.0 KiB
JavaScript
165 lines
6.0 KiB
JavaScript
(function () {
|
|
global.dashModule.service('ordersUtilsService', ['$', '$http', '$translate', 'utilsService', ordersUtilsService]);
|
|
|
|
function ordersUtilsService($, $http, $translate, utilsService) {
|
|
let maxDeliveryDate = '';
|
|
const earliestInstallationDate = {};
|
|
const isNextStepTheOneWanted = {};
|
|
const callbackMethods = {};
|
|
|
|
return {
|
|
hasExtraAction,
|
|
calculatePrice,
|
|
hasAgreement,
|
|
setMaximumDeliveryDate,
|
|
getEarliestInstallationDateFromDb,
|
|
getEarliestInstallationDate,
|
|
checkIfIsNextStepWanted,
|
|
isComponentDisabled,
|
|
registerOrderFunction,
|
|
getOrderInfo
|
|
};
|
|
|
|
function hasExtraAction(step) {
|
|
return step.stepType === 'extraAction' && step.status === 'in-progress';
|
|
}
|
|
|
|
function calculatePrice(values, units) {
|
|
let total = 0;
|
|
values.forEach((val) => {
|
|
total += parseFloat(val);
|
|
});
|
|
|
|
return units ? total * units : 0;
|
|
}
|
|
|
|
function hasAgreement(packagePayPeriod, servicesContractPeriod) {
|
|
return parseInt(packagePayPeriod) > 0 || parseInt(servicesContractPeriod) > 0;
|
|
}
|
|
|
|
function setMaximumDeliveryDate(idOrder, idPackage, earliestIntallationDate) {
|
|
const params = $.param({
|
|
idOrder,
|
|
idPackage,
|
|
maxDeliveryDate: earliestIntallationDate
|
|
});
|
|
|
|
if (!maxDeliveryDate) {
|
|
maxDeliveryDate = '-';
|
|
}
|
|
|
|
if (earliestIntallationDate && earliestIntallationDate !== '-') {
|
|
maxDeliveryDate = earliestIntallationDate;
|
|
$http({
|
|
method: 'POST',
|
|
url: 'orders/api/setEarliestInstallationDateInDb',
|
|
data: params
|
|
}).then(getMaximumDeliveryDate, utilsService.onHttpError);
|
|
}
|
|
}
|
|
|
|
function getMaximumDeliveryDate(response) {
|
|
if (typeof response.data !== 'undefined' && Object.keys(response.data).length) {
|
|
getEarliestInstallationDateFromDb(response.data.idOrder, response.data.idPackage);
|
|
displayMessage(response);
|
|
|
|
if('callConfirmationInstallationDatesFct' in response.data && response.data.callConfirmationInstallationDatesFct) {
|
|
utilsService.executeRegisteredFunction('getConfirmationInstallationDates');
|
|
}
|
|
}
|
|
}
|
|
|
|
function getEarliestInstallationDateFromDb(idOrder, idPackage) {
|
|
const params = $.param({
|
|
idOrder,
|
|
idPackage,
|
|
maxDeliveryDate: maxDeliveryDate[idPackage]
|
|
});
|
|
|
|
$http({
|
|
method: 'POST',
|
|
url: 'orders/api/getEarliestInstallationDate',
|
|
data: params
|
|
}).then(setEarliestInstallationDate, utilsService.onHttpError);
|
|
}
|
|
|
|
function setEarliestInstallationDate(response) {
|
|
if (typeof response.data !== 'undefined') {
|
|
if (response.data.messages) {
|
|
displayMessage(response);
|
|
}
|
|
if (response.data.earliestInstallationDate) {
|
|
const paramData = {
|
|
idPackage: response.data.idPackage,
|
|
minDate: response.data.earliestInstallationDate
|
|
};
|
|
earliestInstallationDate[response.data.idOrder] = response.data.earliestInstallationDate;
|
|
utilsService.executeRegisteredFunction('setMinDateAvailable', paramData);
|
|
}
|
|
}
|
|
}
|
|
|
|
function getEarliestInstallationDate(idOrder) {
|
|
return earliestInstallationDate[idOrder] || '-';
|
|
}
|
|
|
|
function checkIfIsNextStepWanted(idOrder, usedForDirective, stepIds) {
|
|
const params = $.param({
|
|
idOrder,
|
|
stepIds: JSON.stringify(stepIds)
|
|
});
|
|
|
|
$http({
|
|
method: 'POST',
|
|
url: 'orders/api/checkIfIsNextStepWanted',
|
|
data: params
|
|
}).then((response) => {
|
|
isNextStepWanted(response, idOrder, usedForDirective);
|
|
}, utilsService.onHttpError);
|
|
}
|
|
|
|
function isNextStepWanted(response, idOrder, usedForDirective) {
|
|
if(typeof response.data !== 'undefined') {
|
|
if(!isNextStepTheOneWanted[usedForDirective]) {
|
|
isNextStepTheOneWanted[usedForDirective] = {};
|
|
}
|
|
isNextStepTheOneWanted[usedForDirective][idOrder] = response.data;
|
|
}
|
|
}
|
|
|
|
function isComponentDisabled(idOrder, usedForDirective) {
|
|
if(isNextStepTheOneWanted[usedForDirective] && isNextStepTheOneWanted[usedForDirective][idOrder]) {
|
|
return isNextStepTheOneWanted[usedForDirective][idOrder];
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function registerOrderFunction(key, showOrderInfo) {
|
|
callbackMethods[key] = showOrderInfo;
|
|
}
|
|
|
|
function getOrderInfo() {
|
|
const idOrder = global.getParameterByName('idOrder') || 0;
|
|
const params = $.param({
|
|
idOrder
|
|
});
|
|
|
|
$http({
|
|
method: 'POST',
|
|
url: 'orders/api/getOrderInfo',
|
|
data: params
|
|
}).then(callbackMethods.showOrderInfo, utilsService.onHttpError);
|
|
}
|
|
|
|
function displayMessage(response) {
|
|
if (typeof response.data.messages !== 'undefined') {
|
|
response.data.messages.forEach((messageObj) => {
|
|
let translatedMessage = $translate.instant('orders.messages.' + messageObj.message);
|
|
const messageKey = 'key' in messageObj ? ' ' + messageObj.key : '';
|
|
utilsService.displayMessage(messageObj.code, translatedMessage + messageKey);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
})();
|