angular.module('focaHojaRuta') .controller('listaHojaRutaCtrl', [ '$scope', '$location', '$filter', '$uibModal', 'hojaRutaService', 'focaLoginService', 'focaModalService', '$rootScope', '$localStorage', function ($scope, $location, $filter, $uibModal, hojaRutaService, focaLoginService, focaModalService, $rootScope, $localStorage) { var loginData = focaLoginService.getLoginData(); config(); init(); function config() { $scope.cabecera = []; $scope.showCabecera = true; $scope.now = new Date(); $scope.puntoVenta = '0000'; $scope.comprobante = '00000000'; } function init() { hojaRutaService.getHojaRuta(loginData.chofer) .then(function (res) { if (res.data) { var hojaRuta = res.data; $scope.hojaRuta = hojaRuta; $scope.puntoVenta = hojaRuta.sucursal; $scope.comprobante = hojaRuta.numeroHojaRuta; addCabecera('Transportista:', hojaRuta.transportista.NOM); addCabecera('Chofer:', hojaRuta.chofer.nombre); addCabecera('Vehículo:', hojaRuta.vehiculo.tractor); } else { focaModalService.alert('Sin hoja de ruta asignada'); $location.path('/'); } watch(); if (!$scope.estadoRed) { getLSHojaRuta(); } }); } function watch() { $scope.$watch('hojaRuta', function (nuevoValor) { $localStorage.hojaRuta = JSON.stringify(nuevoValor); }, true); } $scope.verDetalle = function (remito) { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Detalle hoja ruta', templateUrl: 'modal-detalle-hoja-ruta.html', controller: 'focaModalDetalleHojaRutaController', resolve: { parametros: { remito: remito, } }, size: 'lg' } ); modalInstance.result .then(function (data) { //funcion se ejecuta cuando se carga pantalla console.log(data); }) .catch(function (e) { console.info(e); }); }; $scope.rellenar = function (relleno, longitud) { relleno = '' + relleno; while (relleno.length < longitud) { relleno = '0' + relleno; } return relleno; }; $scope.salir = function () { $location.path('/'); }; $scope.terminarHojaRuta = function () { focaModalService .confirm('¿Desea terminar la hoja de ruta? No podra realizar ninguna ' + 'otra descarga ni modificación') .then(function () { $scope.datosExtraCierre(terminar); }); function terminar(datosExtraCierre) { $scope.hojaRuta = angular.extend({}, $scope.hojaRuta, datosExtraCierre); //limpio objeto para guardar delete $scope.hojaRuta.chofer; delete $scope.hojaRuta.remitos; delete $scope.hojaRuta.transportista; delete $scope.hojaRuta.vehiculo; $scope.hojaRuta.fechaCreacion = $scope.hojaRuta.fechaCreacion.slice(0, 19).replace('T', ' '); $scope.hojaRuta.fechaReparto = $scope.hojaRuta.fechaReparto.slice(0, 19).replace('T', ' '); $scope.hojaRuta.estado = 2; hojaRutaService.terminarHojaRuta($scope.hojaRuta).then( function () { focaModalService.alert( 'Hoja de ruta ' + $filter('comprobante')([$scope.puntoVenta, $scope.comprobante]) + ' cerrada con éxito'); $location.path('/'); } ); } }; $scope.datosExtraCierre = function (terminar) { var modalInstance = $uibModal.open( { templateUrl: 'focaDatosExtra.html', controller: 'focaModalDatosExtraCierre', } ); modalInstance.result.then(terminar); }; $scope.modalDescargas = function () { delete $scope.hojaRuta.remitos[0].cliente; var remito = $scope.hojaRuta.remitos[0]; var msg = ''; var mostrarMensaje = true; for (var i = 0; i < remito.cisternas.length; i++) { if (remito.cisternas[i].cisternaCarga.cantidad <= 0) msg += 'Cisterna ' + remito.cisternas[i].cisternaCarga.articulo.DetArt + ' esta vacía.\n'; else mostrarMensaje = false; } if (mostrarMensaje === true) { focaModalService.alert(msg); return; } var modalInstance = $uibModal.open( { templateUrl: 'foca-modal-descarga.html', controller: 'focaModalDescargaCtrl', resolve: { remito: function () { return remito; } }, } ); modalInstance.result.then(function (data) { console.log(data); }); }; $scope.articulosDescargados = function (articulosRemito) { for (var i = 0; i < articulosRemito.length; i++) { if (articulosRemito[i].cantidadDescargada > 0) continue; else return false; } return true; }; $scope.estaPendiente = function () { var pendiente = false; $scope.hojaRuta.remitos.forEach(function (remito) { if (pendiente === false) { var aDescargado = false; for (var i = 0; i < remito.articulosRemito.length; i++) { if (remito.articulosRemito[i].cantidadDescargada > 0) aDescargado = true; } pendiente = (!aDescargado && remito.rechazado == null) ? true : false; } }); if (pendiente) { focaModalService.alert('Todavia hay remitos pendientes'); return; } $scope.terminarHojaRuta(); }; $rootScope.$on('estadoRed', function (event, value) { $scope.estadoRed = value; }); function addCabecera(label, valor) { var propiedad = $filter('filter')($scope.cabecera, { label: label }, true); if (propiedad.length === 1) { propiedad[0].valor = valor; } else { $scope.cabecera.push({ label: label, valor: valor }); } } function getLSHojaRuta() { var hojaRuta = JSON.parse($localStorage.hojaRuta || null); if (hojaRuta) { console.log('getLSHojaRuta() => ', hojaRuta); $scope.hojaRuta = hojaRuta; delete $localStorage.hojaRuta; } } } ] );