controllerHojasRuta.js 3.95 KB
angular.module('focaOrdenCarga')
    .controller('focaModalHojasRutaController', [
        '$scope', '$uibModalInstance', 'focaModalService',
        'focaCrearHojaRutaService', 'parametrosModal',
        function ($scope, $uibModalInstance, focaModalService,
            focaCrearHojaRutaService, parametrosModal) {

            init();

            function init() {
                $scope.mostrar = false;
                $scope.orden = parametrosModal.orden;
                $scope.articulos = [];
                $scope.cisternaMovimientos = [];
                $scope.hojasRutas = parametrosModal.hojasRutas;
                $scope.hojasRutas.vehiculo.cisternas = $scope.hojasRutas.vehiculo.cisternas.filter(
                    function (cisterna) {
                        return !cisterna.desactivado;
                    }
                );
                focaCrearHojaRutaService.getArticulos()
                    .then(function (articulos) {
                        $scope.articulos = articulos.data;
                    });
            };

            $scope.guardar = function () {

                var cisternasFilter = validarArticulos();

                var articulos = [];
                if (cisternasFilter === undefined) {
                    return;
                }
                cisternasFilter.forEach(function (cisterna) {

                    var fechaReparto = $scope.hojasRutas.fechaReparto;
                    cisterna.cisternaCarga = {
                        confirmado: null,
                        fechaReparto: fechaReparto,
                        idCisterna: cisterna.id,
                        orden: $scope.orden
                    };

                    //cargar
                    if (cisterna.cisternaCarga.cantidad) {
                        cisterna.cisternaCarga.cantidad += cisterna.disponible;
                    } else {
                        cisterna.cisternaCarga.cantidad = cisterna.disponible;
                        cisterna.cisternaCarga.idProducto =
                            cisterna.articuloSeleccionado.idArticulo;
                    }

                    //Guardar
                    var now = new Date();
                    var cisternaMovimiento = {
                        fecha: now.toISOString().slice(0, 19).replace('T', ' '),
                        cantidad: cisterna.disponible,
                        metodo: 'carga',
                        idCisternaCarga: cisterna.cisternaCarga.id,
                    };

                    cisterna.cisternaCarga.fechaReparto = fechaReparto;
                    cisterna.articuloSeleccionado.cantidad = cisterna.disponible;
                    articulos.push(cisterna.articuloSeleccionado);
                    $scope.cisternaMovimientos.push(cisternaMovimiento);
                });

                $uibModalInstance.close({
                    cisternas: cisternasFilter,
                    movimientos: $scope.cisternaMovimientos,
                    articulos: articulos
                });
            };

            $scope.cancel = function () {
                $uibModalInstance.dismiss(null);
            };

            function validarArticulos() {
                var cisternasFilter = $scope.hojasRutas.vehiculo.cisternas
                    .filter(function (cisterna) {
                        return parseInt(cisterna.disponible) > 0 || cisterna.articuloSeleccionado;
                    });

                var cisternasIncompletas = cisternasFilter.filter(function (cisterna) {
                    return (cisterna.articuloSeleccionado && !cisterna.disponible) ||
                        (!cisterna.articuloSeleccionado && cisterna.disponible);
                });

                if (cisternasIncompletas.length > 0 && cisternasFilter.length > 0) {
                    focaModalService.alert('Ingrese todos los campos para completar el remito');
                    cisternasFilter = undefined;
                }
                return cisternasFilter;
            }
        }
    ]);