angular.module('focaAbmVehiculo') .controller('focaAbmVehiculoCisternaController', [ '$scope', 'focaAbmVehiculoService', '$routeParams', '$location', '$uibModal', 'focaModalService', 'focaBotoneraLateralService', '$timeout', function($scope, focaAbmVehiculoService, $routeParams, $location, $uibModal, focaModalService, focaBotoneraLateralService, $timeout) { $scope.editar = false; $scope.now = new Date(); $scope.cisterna = { cisternaCarga: { articulo: {} } }; $scope.focused = 1; $scope.next = function(key) { if (key === 13) $scope.focused++; }; $scope.capacidadVechiulo = 0; //SETEO BOTONERA LATERAL $timeout(function() { focaBotoneraLateralService.showSalir(false); focaBotoneraLateralService.showPausar(false); focaBotoneraLateralService.showCancelar(true); focaBotoneraLateralService.showGuardar(true, $scope.guardar); }); focaAbmVehiculoService.getCisterna($routeParams.id).then(function(res) { if(res.data) { $scope.cisterna = res.data; $scope.editar = true; }else { $scope.editar = false; } }); focaAbmVehiculoService.getVehiculo($routeParams.idVehiculo).then(function(res) { var codigo = ('00000' + res.data.transportista.COD).slice(-5); $scope.capacidadVechiulo = res.data.capacidad; $scope.$broadcast('addCabecera', { label: 'Transportista:', valor: codigo + ' - ' + res.data.transportista.NOM }); $scope.$broadcast('addCabecera', { label: 'Unidad:', valor: res.data.codigo }); }); $scope.cancelar = function() { $location.path('/vehiculo/' + $routeParams.idVehiculo); }; $scope.guardar = function() { if(!$scope.cisterna.unidadMedida) { focaModalService.alert('Ingrese unidad de medida'); return; } validaCodigoCapacidad().then(function() { $scope.cisterna.idVehiculo = $routeParams.idVehiculo; delete $scope.cisterna.vehiculo; delete $scope.cisterna.unidadMedida; delete $scope.cisterna.cisternaCarga.articulo; focaAbmVehiculoService.guardarCisterna($scope.cisterna).then(function(){ $location.path('/vehiculo/' + $routeParams.idVehiculo); }); }, function(err) { focaModalService.alert(err); }); }; $scope.seleccionarUnidadMedida = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Unidades de medida', templateUrl: 'modal-unidad-medida.html', controller: 'focaModalUnidadMedidaCtrl', size: 'lg' } ); modalInstance.result.then(function(unidaMedida) { $scope.cisterna.idUnidadMedida = unidaMedida.ID; $scope.cisterna.unidadMedida = unidaMedida; }); }; function validaCodigoCapacidad(){ return new Promise(function(resolve, reject) { focaAbmVehiculoService .getCisternadoPorVehiculo($routeParams.idVehiculo) .then(function(res){ var totalCargado = 0; res.data.forEach(function(cisterna) { //SI EL CODIGO YA EXISTE if(cisterna.codigo === $scope.cisterna.codigo && cisterna.id !== $scope.cisterna.id){ reject('Código de cisterna existente'); } if(cisterna.id !== $scope.cisterna.id){ totalCargado += cisterna.capacidad; } }); //SI EL TOTAL DE CAPACIDAD DE CISTERNAS ES MAYOR QUE LA DEL VEHICULO totalCargado = totalCargado + parseInt($scope.cisterna.capacidad); if(totalCargado > $scope.capacidadVechiulo) { reject('La capacidad total de las cisternas' + ' debe ser menor o igual a la del vehiculo'); }else { resolve(); } }); }); } } ]);