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; } } ]);