angular.module('focaModalDetalleHojaRuta') .controller('focaModalDetalleHojaRutaController', [ '$filter', '$scope', '$uibModalInstance', 'idRemito', 'focaModalDetalleHojaRutaService', 'focaModalService', 'focaSeguimientoService', function($filter, $scope, $uibModalInstance, idRemito, focaModalDetalleHojaRutaService, focaModalService, focaSeguimientoService) { //Seteo variables $scope.remito = {}; $scope.cisternas = []; $scope.articuloSeleccionado = {}; $scope.aDescargar = []; $scope.cargando = true; //Datos var promesaRemito = focaModalDetalleHojaRutaService .getRemitoById(idRemito); var promesaCisternas = focaModalDetalleHojaRutaService .getCisternasByIdRemito(idRemito); Promise.all([promesaRemito, promesaCisternas]).then(function(res) { $scope.cargando = false; $scope.remito = res[0].data; $scope.cisternas = res[1].data; $scope.cambio($scope.remito.articulosRemito[0]); $scope.$digest(); }, function() { focaModalService.alert('El servicio no responde intente más tarde'); $uibModalInstance.dismiss(); }); $scope.cambio = function(articulo) { $scope.aDescargar = []; $scope.articuloSeleccionado = articulo; }; $scope.descargar = function(key) { var hojaRutaMovimientos = []; var cisternaMovimientos = []; var cisternaCargas = []; var totalADescargar = 0; for (var i = 0; i < $scope.aDescargar.length; i++) { totalADescargar += $scope.aDescargar[i] || 0; } if(key === 13) { focaModalService .confirm('¿Desea descargar ' + totalADescargar + ' litros de ' + $scope.articuloSeleccionado.descripcion + '?') .then(descargar); } function descargar() { for (var i = 0; i < $scope.cisternas.length; i++) { var descarga = $scope.aDescargar[i]; if(!descarga) continue; var cisternaCarga = $scope.cisternas[i].cisternaCarga; cisternaCarga.cantidad -= descarga; //Guardar var now = new Date(); var cisternaMovimiento = { fecha: now.toISOString().slice(0, 19).replace('T', ' '), cantidad: descarga, metodo: 'descarga', idCisternaCarga: cisternaCarga.id, idRemito: $scope.remito.id }; var hojaRutaMovimiento = { reciboDescarga: $scope.numeroRecibo, idRemito: $scope.remito.id }; delete cisternaCarga.articulo; cisternaCargas.push(cisternaCarga); cisternaMovimientos.push(cisternaMovimiento); hojaRutaMovimientos.push(hojaRutaMovimiento); } var save = { cisternaCargas: cisternaCargas, cisternaMovimientos: cisternaMovimientos, hojaRutaMovimientos: hojaRutaMovimientos }; focaModalDetalleHojaRutaService .postMovimientoHojaRuta(save) .then(guardarSeguimiento) .catch(error); function guardarSeguimiento(res) { focaSeguimientoService .guardarPosicion( 'Entrega de producto', res.data[0].id, $scope.remito.observaciones); $scope.aDescargar = []; $scope.remito.observaciones = ''; success(); } } }; $scope.cancel = function() { $uibModalInstance.dismiss('cancel'); }; $scope.distribucionDisponible = function() { return $scope.articuloSeleccionado.cantidadDescargada === $scope.articuloSeleccionado.cantidad; }; $scope.actualizarArticulo = function() { $scope.articuloSeleccionado.cantidadDescargada = 0; for(var i = 0; i < $scope.aDescargar.length; i++) { $scope.articuloSeleccionado.cantidadDescargada += parseFloat($scope.aDescargar[i]) || 0; } }; $scope.rechazar = function() { focaModalService .prompt('Aclare el motivo de rechazo') .then(function() { focaModalService.alert('desarrollo'); $uibModalInstance.dismiss(); }); }; //funciones function error(error) { focaModalService.alert('Hubo un error ' + error); } function success() { focaModalService.alert('Operación realizada con éxito'); } } ] );