Files
old-wiaas-legacy/api-wiaas/client/js/components/financing/set-customers-discount.directive.js
2018-06-11 11:09:35 +02:00

94 lines
3.6 KiB
JavaScript

(function () {
global.dashModule
.controller('setCustomersDiscountCtrl', ['$scope', '$http', '$', '$translate', 'utilsService', setCustomersDiscountController])
.directive('setCustomersDiscount', [setCustomersDiscountDirective]);
function setCustomersDiscountDirective() {
return {
restrict: 'E',
templateUrl: 'financing/html/setCustomersDiscountTemplate'
};
}
function setCustomersDiscountController($scope, $http, $, $translate, utilsService) {
$scope.getCustomersAndDiscount = getCustomersAndDiscount;
$scope.saveCustomersDiscount = saveCustomersDiscount;
$scope.getNewInterestRate = getNewInterestRate;
$scope.customers = {};
$scope.discounts = {};
$scope.interestRate = 0;
$scope.showMessage = false;
$scope.getMaxInterestRateValue = getMaxInterestRateValue;
$scope.searchText = '';
function getCustomersAndDiscount() {
$http({
method: 'POST',
url: 'financing/api/getCustomersAndDiscount'
}).then(setCustomersAndDiscount, utilsService.onHttpError);
}
function setCustomersAndDiscount(response) {
$scope.customers = response.data.customers ? response.data.customers : {};
$scope.interestRate = response.data.interestRate ? response.data.interestRate : 0;
$scope.customers.forEach(detail => {
$scope.discounts[detail.idCustomer] = parseFloat(detail.discount);
});
}
function getNewInterestRate(idCustomer) {
const newDiscount = $scope.discounts[idCustomer] || 0;
const newInterestRate = $scope.interestRate - newDiscount;
$scope.showMessage = newInterestRate <= 0 ||
newInterestRate > $scope.interestRate ||
$scope.discounts[idCustomer] === undefined ?
true : false;
return newInterestRate.toFixed(2);
}
function saveCustomersDiscount() {
const modifiedDiscounts = getOnlyModifiedDiscounts();
const params = $.param({
discounts: modifiedDiscounts
});
$http({
method: 'POST',
url: 'financing/api/saveCustomersDiscount',
data: params
}).then(showUpdateDefaultMessage, utilsService.onHttpError);
}
function getOnlyModifiedDiscounts() {
const filteredCustomers = $scope.customers.filter(info => {
$scope.discounts[info.idCustomer] = $scope.discounts[info.idCustomer] || 0;
return parseFloat(info.discount) !== $scope.discounts[info.idCustomer];
});
filteredCustomers.map(info => {
info.discount = $scope.discounts[info.idCustomer].toFixed(2);
});
return filteredCustomers;
}
function showUpdateDefaultMessage(response) {
if (typeof response.data.messages !== 'undefined') {
response.data.messages.forEach((messageObj) => {
const key = messageObj.key || '';
let translatedMessage = $translate.instant('financing.messages.' + messageObj.message);
translatedMessage = key !== '' ? translatedMessage + ': ' + key : translatedMessage;
utilsService.displayMessage(messageObj.code, translatedMessage);
});
}
}
function getMaxInterestRateValue() {
return ($scope.interestRate - 0.01).toFixed(2);
}
}
})();