angular.module('focaModalFactura') .controller('focaModalFacturaController', [ '$filter', '$scope', '$uibModalInstance', 'focaModalFacturaService', 'parametrosFactura', '$uibModal', 'focaModalService', function($filter, $scope, $uibModalInstance, focaModalFacturaService, parametrosFactura, $uibModal, focaModalService ) { var fecha = new Date(); $scope.fechaHasta = new Date(); $scope.fechaDesde = new Date(fecha.setMonth(fecha.getMonth() - 1)); $scope.filters = ''; $scope.facturas = []; $scope.primerBusqueda = false; $scope.searchLoading = false; $scope.parametrosFactura = parametrosFactura; // pagination $scope.numPerPage = 10; $scope.currentPage = 1; $scope.filteredFacturas = []; $scope.currentPageFacturas = []; $scope.selectedFactura = -1; //METODOS $scope.busquedaPress = function(key) { if (key === 13) { if(!$scope.fechaDesde) { focaModalService.alert('INGRESE FECHA DESDE'); return; } if(!$scope.fechaHasta) { focaModalService.alert('INGRESE FECHA HASTA'); return; } if($scope.fechaDesde > $scope.fechaHasta) { focaModalService .alert('La fecha desde no puede ser mayor a la fecha hasta'); return; } $scope.searchLoading = true; //TODO hacer filtro de fecha focaModalFacturaService .getFacturasByIdCliente( parametrosFactura.cliente.COD, parametrosFactura.moneda, '2001-01-01', '2100-12-31' ) .then(llenarDatos); } }; $scope.aceptar = function() { var result = $scope.facturas.filter(function(a) {return a.checked === true;}); $uibModalInstance.close(result); }; $scope.tieneAlMenosUno = function() { var result = $scope.facturas.filter(function(a) {return a.checked === true;}); return !result.length; }; function llenarDatos(res) { $scope.facturas = []; $scope.filteredFacturas = []; $scope.currentPageFacturas = []; $scope.selectedFactura = -1; $scope.searchLoading = false; $scope.primerBusqueda = true; $scope.facturas = calcularSaldos(res.data); $scope.search(); primera(); } $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.facturas.length > 0) { $scope.filteredFacturas = $filter('filter')( $scope.facturas, {$: $scope.filters} ); $scope.lastPage = Math.ceil( $scope.filteredFacturas.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.filteredFacturas.slice(start, end); $scope.currentPage = page; }; $scope.cancel = function() { $uibModalInstance.dismiss('cancel'); }; $scope.busquedaDown = function(key) { if (key === 40) { primera(key); } }; $scope.itemFactura = function(key) { if (key === 38) { anterior(key); } if (key === 40) { siguiente(key); } if (key === 37) { retrocederPagina(); } if (key === 39) { avanzarPagina(); } }; $scope.enviarMail = function(factura) { focaModalService .prompt('Ingrese los emails separados por coma para enviar comprobante', factura.cliente.MAIL) .then(function(res) { return focaModalFacturaService.enviarFacturaPorMail(res, factura); }) .then(function() { focaModalService.alert('Mensaje enviado correctamente'); }); }; 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 primera() { $scope.selectedFactura = 0; } function anterior() { if ($scope.selectedFactura === 0 && $scope.currentPage > 1) { retrocederPagina(); } else { $scope.selectedFactura--; } } function siguiente() { if ($scope.selectedFactura < $scope.currentPageFacturas.length - 1 ) { $scope.selectedFactura++; } else { avanzarPagina(); } } function retrocederPagina() { if ($scope.currentPage > 1) { $scope.selectPage($scope.currentPage - 1); $scope.selectedFactura = $scope.numPerPage - 1; } } function avanzarPagina() { if ($scope.currentPage < $scope.lastPage) { $scope.selectPage($scope.currentPage + 1); $scope.selectedFactura = 0; } } 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; } $scope.busquedaPress(13); } ] );