angular.module('focaCrearHojaRuta') .controller('focaModalDetalleController', [ '$scope', '$timeout', '$uibModalInstance', 'focaModalService', 'focaCrearHojaRutaService', 'hojasRutas', '$uibModal', '$filter', function ($scope, $timeout, $uibModalInstance, focaModalService, focaCrearHojaRutaService, hojasRutas, $uibModal, $filter) { $scope.mostrar = false; $scope.articulos = []; $scope.cisternaMovimientos = []; init(); function init() { $scope.hojasRutas = 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.validarCisternaDisponible = function (cisterna) { if (parseInt(cisterna.disponible) > cisterna.capacidad) { focaModalService.alert('No se puede ingresar una capacidad disponible ' + 'superior a la ' + 'capacidad del vehiculo '); cisterna.disponible = cisterna.capacidad; return; } }; $scope.seleccionarProductos = function (cisterna) { focaModalService.modal({ titulo: 'Productos', data: $scope.articulos, size: 'md', columnas: [ { propiedad: 'CodRub', nombre: 'Codigo' }, { propiedad: 'descripcion', nombre: 'Nombre' }, ], }).then(function (res) { cisterna.disponible = cisterna.capacidad; var newArt = { id: 0, idRemito: 0, codigo: res.codigo, sector: res.sector, sectorCodigo: res.sector + '-' + res.codigo, descripcion: res.descripcion, item: 1, nombre: res.descripcion, precio: parseFloat(res.precio).toFixed(4), costoUnitario: res.costo, editCantidad: false, editPrecio: false, rubro: res.CodRub, ivaUnitario: res.IMPIVA, impuestoInternoUnitario: res.ImpInt, impuestoInterno1Unitario: res.ImpInt2, impuestoInterno2Unitario: res.ImpInt3, precioLista: res.precio, combustible: 1, facturado: 0, idArticulo: res.id, tasaIva: res.tasaIVA }; newArt.exentoUnitario = newArt.ivaUnitario ? 0 : res.neto; newArt.netoUnitario = newArt.ivaUnitario ? res.neto : 0; cisterna.articuloSeleccionado = newArt; cisterna.nombreArticulo = res.descripcion; }).catch(function (e) { console.log(e); }); }; $scope.guardar = function () { 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 || !cisternasFilter.length) { return focaModalService.alert('Ingrese todos los campos para completar el remito'); } var articulos = []; cisternasFilter.forEach(function (cisterna) { var fechaReparto = $scope.hojasRutas.fechaReparto; var filtroCisternaCarga = cisterna.cisternasCarga.filter(function(carga) { return carga.fechaReparto === fechaReparto; }); if (filtroCisternaCarga.length) { cisterna.cisternaCarga = filtroCisternaCarga[0]; } else { cisterna.cisternaCarga = { confirmado: null, fechaReparto: fechaReparto, idCisterna: cisterna.id, }; } //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); }; } ]);