angular.module('focaModalResumenCuenta') .controller('focaModalResumenCuentaController', [ '$timeout', '$filter', '$scope', '$uibModalInstance', 'focaModalResumenCuentaService', 'cliente', 'idMoneda', '$uibModal', 'focaModalService', function ($timeout, $filter, $scope, $uibModalInstance, focaModalResumenCuentaService, cliente, idMoneda, $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, idMoneda, $scope.fechaDesde) .then(function (res) { res.data = res.data.filter(function(factura){ return factura.TCO !== "RC" && factura.TCO !== "RE" }) res.data = calcularSaldos(res.data); $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.length) { $scope.lastPage = Math.ceil( $scope.results.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.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); }); facturas.saldo = saldo; return facturas; } }] );