angular.module('focaModalResumenCuenta') .controller('focaModalResumenCuentaController', [ '$timeout', '$filter', '$scope', '$uibModalInstance', 'focaModalResumenCuentaService', 'idCliente', '$uibModal', 'focaModalService', function($timeout, $filter, $scope, $uibModalInstance, focaModalResumenCuentaService, idCliente, $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(idCliente, $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', //TODO: CONFIGURAR DESCARGA descarga: { nombre: factura.numeroFactura + '.pdf', url: '/mail/comprobante/descargar', }, envio: { //TODO: TOMAR EMAIL DEL CLIENTE mailCliente: 'jpinto@focasoftware.com', 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: { //TODO: TOMAR EMAIL DEL CLIENTE mailCliente: 'jpinto@focasoftware.com', 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; } }] );