controller.js 10.4 KB
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() {
                    $scope.showLoading = true;
                    hojaRutaService.getHojaRuta(loginData.chofer)
                        .then(function (res) {
                            console.log(res.data);
                            abrilModalHojasDeRuta(res.data);
                        });
                }
                function abrilModalHojasDeRuta(hojasDeRuta) {
                    hojasDeRuta.forEach(function (hojaRuta) {
                        hojaRuta.comprobante = (hojaRuta.abierta ? 'RA ' : '') +
                            $filter('comprobante')
                                ([hojaRuta.sucursal, hojaRuta.numeroHojaRuta]);
                    });
                    $scope.showLoading = false;
                    focaModalService.modal(parametrosModalHojasDeRuta(hojasDeRuta))
                        .then(function (hojaRuta) {
                            console.log(hojaRuta);
                            if (hojaRuta) {
                                $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);
                                $localStorage.hojaRuta = JSON.stringify($scope.hojaRuta);
                            } else {
                                focaModalService.alert('Sin hoja de ruta asignada');
                                $location.path('/');
                            }
                            // if (!$scope.estadoRed) {
                            //     getLSHojaRuta();
                            // }
                        })
                        .catch(function (e) {
                            console.log(e);
                            $location.path('/');
                        });
                }
                $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) { console.log(data); })
                        .catch(function (e) { console.info(e); });
                };
                $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); })
                        .catch(function (e) { console.log('Modal ', e); });
                    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 () {
                    if ($scope.hojaRuta.abierta) {
                        $scope.terminarHojaRuta();
                        return;
                    }
                    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) {
                //         $scope.hojaRuta = hojaRuta;
                //         delete $localStorage.hojaRuta;
                //     }
                // }
                function parametrosModalHojasDeRuta(datos) {
                    var parametrosModal = {
                        data: datos,
                        columnas: [
                            {
                                propiedad: 'comprobante',
                                nombre: 'Número'
                            },
                            {
                                propiedad: 'fechaReparto',
                                nombre: 'Fecha',
                                filtro: {
                                    nombre: 'date',
                                    parametro: 'yyyy-MM-dd'
                                }
                            }
                        ],
                        titulo: 'Selecciona hoja de ruta',
                        size: 'md'
                    };
                    return parametrosModal;
                }
            }
        ]
    );