angular.module('focaLogisticaPedidoRuta') .controller('focaDetalleVehiculo', ['$scope', '$uibModalInstance', 'idVehiculo', 'idRemito', 'focaModalService', '$filter', 'focaLogisticaPedidoRutaService', function($scope, $uibModalInstance, idVehiculo, idRemito, focaModalService, $filter, focaLogisticaPedidoRutaService ) { //seteo variables $scope.articulos = []; $scope.vehiculo = {}; $scope.remito = {}; $scope.aCargar = []; var cisternaMovimientos = []; focaLogisticaPedidoRutaService.obtenerVehiculoById(idVehiculo).then( function(res) { $scope.vehiculo = res.data; } ); focaLogisticaPedidoRutaService.obtenerRemitoById(idRemito).then( function(res) { $scope.remito = res.data; $scope.articulos = res.data.articulosRemito; } ); $scope.aceptar = function() { $scope.cargando = true; var cisternaCargas = []; for (var i = 0; i < $scope.vehiculo.cisternas.length; i++) { delete $scope.vehiculo.cisternas[i].cisternaCarga.articulo; cisternaCargas.push($scope.vehiculo.cisternas[i].cisternaCarga); } var cisterna = { cisternaMovimientos: cisternaMovimientos, cisternaCargas: cisternaCargas }; focaLogisticaPedidoRutaService.guardarCisternas(cisterna).then(function() { focaModalService.alert('Cisternas cargadas con éxito').then(function() { $scope.cargando = false; $uibModalInstance.close(idRemito); }); }); }; $scope.cancelar = function() { $uibModalInstance.close(); }; $scope.cargarACisternas = function(vehiculo) { for(var i = 0; i < vehiculo.cisternas.length; i++) { var cisterna = vehiculo.cisternas[i]; var aCargar = parseFloat($scope.aCargar[i]); //validaciones if(!aCargar) { continue; } if(aCargar > cisterna.disponible) { focaModalService.alert('La cantidad cargada supera la capacidad de la' + 'cisterna ' + cisterna.codigo); return; } //cargar if(cisterna.cisternaCarga.cantidad) { cisterna.cisternaCarga.cantidad += aCargar; }else { cisterna.cisternaCarga.cantidad = aCargar; cisterna.cisternaCarga.idProducto = $scope.articuloSeleccionado.idArticulo; } cisterna.disponible = cisterna.capacidad - cisterna.cisternaCarga.cantidad; cisterna.cisternaCarga.articulo = { DetArt: $scope.articuloSeleccionado.descripcion }; $filter('filter')($scope.articulos, {id: $scope.articuloSeleccionado.id})[0] .cargado = true; $scope.calcularPorcentaje(cisterna); //Guardar var now = new Date(); var cisternaMovimiento = { fecha: now.toISOString().slice(0, 19).replace('T', ' '), cantidad: aCargar, metodo: 'carga', idCisternaCarga: cisterna.cisternaCarga.id }; cisternaMovimientos.push(cisternaMovimiento); } var articuloSiguiente = $scope.articulos.filter( function(filter) { return filter.cargado !== true; } ); if(articuloSiguiente.length > 0) { $scope.cambioArticulo(articuloSiguiente[0]); } $scope.aCargar = []; }; $scope.calcularPorcentaje = function(cisterna) { if(!cisterna.cisternaCarga.cantidad) { cisterna.cisternaCarga.cantidad = 0; } var porcentaje = (cisterna.cisternaCarga.cantidad * 100 / cisterna.capacidad) + '%'; var elementHtml = document.getElementById(cisterna.id); if(elementHtml) { elementHtml.style.width = porcentaje; } }; $scope.cambioArticulo = function(articulo) { articulo.checked = true; $scope.articuloSeleccionado = articulo; }; $scope.actualizarArticulo = function () { $scope.articuloSeleccionado.cantidadCargada = 0; for (var i = 0; i < $scope.aCargar.length; i++) { $scope.articuloSeleccionado.cantidadCargada += parseFloat($scope.aCargar[i]) || 0; } }; $scope.tieneArticulosPendientes = function() { var articulosDescargados = $scope.articulos.filter(function(filter) { return filter.cargado === true; }); if(articulosDescargados.length === $scope.articulos.length) { return false; } return true; }; }]);