controller.js 5.88 KB
angular.module('focaModalResumenCuenta')
    .controller('focaModalResumenCuentaController', [
        '$timeout',
        '$filter',
        '$scope',
        '$uibModalInstance',
        'focaModalResumenCuentaService',
        'cliente',
        '$uibModal',
        'focaModalService',
        function($timeout, $filter, $scope, $uibModalInstance,
            focaModalResumenCuentaService, cliente, $uibModal, focaModalService) {
            var fecha = new Date();
            $scope.generado = false;
            $scope.fechaDesde = new Date(fecha.setMonth(fecha.getMonth() - 1));
            $scope.currentPageFacturas = [];
            $scope.currentPage = 1;
            $scope.numPerPage = 10;
            $scope.selectedFactura = -1;

            $scope.generar = function() {
                focaModalResumenCuentaService
                    .getResumenCuenta(cliente.COD, $scope.fechaDesde)
                    .then(function(res) {
                        res.data.facturas = calcularSaldos(res.data.facturas);
                        $scope.generado = true;
                        $scope.results = res.data;
                        $scope.results.fechaDesde = $scope.fechaDesde;
                        $scope.search();
                    });
            };

            $scope.cancel = function() {
                if ($scope.generado) {
                    $scope.generado = false;
                } else {
                    $uibModalInstance.dismiss('cancel');
                }
            };

            $scope.enviarMail = function(factura) {
                focaModalService.mail(
                    {
                        titulo: 'Enviar comprobante',
                        descarga: {
                            nombre: factura.numeroFactura + '.pdf',
                            url: '/mail/comprobante/descargar',
                        },
                        envio: {
                            mailCliente: cliente.MAIL,
                            url: '/mail/comprobante'
                        },
                        options: {
                            factura: factura
                        }
                    }
                );
            };

            $scope.enviarResumen = function() {
                focaModalService.mail(
                    {
                        titulo: 'Enviar resumen de cuenta',
                        descarga: {
                            nombre: 'resumen-de-cuenta.pdf',
                            url: '/mail/resumen-cuenta/descargar',
                        },
                        envio: {
                            mailCliente: cliente.MAIL,
                            url: '/mail/resumen-cuenta',
                        },
                        options: {
                            resumen: $scope.results
                        }
                    }
                );
            };

            $scope.verFactura = function(factura) {
                    var modalInstance = $uibModal.open(
                    {
                        ariaLabelledBy: 'Detalle de factura',
                        templateUrl: 'foca-modal-factura-detalle.html',
                        controller: 'focaModalFacturaDetalleController',
                        size: 'md',
                        resolve: {
                            factura: factura
                        }
                    }
                );
                modalInstance.result.then();
            };


            $scope.search = function() {
                if ($scope.results.facturas.length) {
                    $scope.lastPage = Math.ceil(
                        $scope.results.facturas.length / $scope.numPerPage
                    );
                    $scope.resetPage();
                }
            };

            $scope.resetPage = function() {
                $scope.currentPage = 1;
                $scope.selectPage(1);
            };

            $scope.selectPage = function(page) {
                var start = (page - 1) * $scope.numPerPage;
                var end = start + $scope.numPerPage;
                $scope.paginas = [];
                $scope.paginas = calcularPages(page);
                $scope.currentPageFacturas = $scope.results.facturas.slice(start, end);
                $scope.currentPage = page;
            };

            function calcularPages(paginaActual) {
                var paginas = [];
                paginas.push(paginaActual);

                if (paginaActual - 1 > 1) {
                    
                    paginas.unshift(paginaActual - 1);
                    if (paginaActual - 2 > 1) {
                        paginas.unshift(paginaActual - 2);
                    }
                }

                if (paginaActual + 1 < $scope.lastPage) {
                    paginas.push(paginaActual + 1);
                    if (paginaActual + 2 < $scope.lastPage) {
                        paginas.push(paginaActual + 2);
                    }
                }

                if (paginaActual !== 1) {
                    paginas.unshift(1);
                }

                if (paginaActual !== $scope.lastPage) {
                    paginas.push($scope.lastPage);
                }

                return paginas;
            }

            function calcularSaldos(facturas) {
                var saldo = 0;

                facturas.forEach(function(factura) {
                    if (factura.TCO === 'CI' ||
                        factura.TCO === 'FT' ||
                        factura.TCO === 'ND'){
                        factura.IPA = factura.IPA * -1;
                    } else {
                        factura.IPA = factura.IPA;
                    }
                    saldo += factura.IPA;
                    factura.saldo = saldo;
                    factura.saldo_show = Math.abs(saldo);
                    factura.IPA_SHOW = Math.abs(factura.IPA);
                });

                return facturas;
            }
        }]
    );