controllerDetalleVehiculo.js 4.33 KB
angular.module('focaLogisticaPedidoRuta')
    .controller('focaDetalleVehiculo',
        ['$scope',
        '$uibModalInstance',
        'idVehiculo',
        'idRemito',
        'focaModalService',
        '$filter',
        'focaLogisticaPedidoRutaService',
        function($scope, $uibModalInstance, idVehiculo, idRemito, focaModalService, $filter,
            focaLogisticaPedidoRutaService
        ) {
            $scope.articulos = [];
            $scope.vehiculo = {};
            $scope.remito = {};
            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.aCargar = [];
            $scope.aceptar = function() {
                $uibModalInstance.close();
            };

            $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]);
                    if(!aCargar) {
                        continue;
                    }
                    if(aCargar > cisterna.disponible) {
                        focaModalService.alert('La cantidad cargada supera la capacidad de la' +
                            'cisterna ' + cisterna.codigo);
                        return;
                    }
                    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);
                }
                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;
            };
    }]);