94 lines
3.6 KiB
JavaScript
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);
|
|
}
|
|
}
|
|
})();
|