diff --git a/src/js/app.js b/src/js/app.js index d5f0c97..b534bdc 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -1 +1,6 @@ -angular.module('focaBusquedaCliente', ['ui.bootstrap', 'focaDirectivas', 'angular-ladda']); +angular.module('focaBusquedaCliente', [ + 'ui.bootstrap', + 'focaDirectivas', + 'angular-ladda', + 'focaModal' +]); diff --git a/src/js/controller.js b/src/js/controller.js index 683042a..52d8557 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -1,7 +1,9 @@ angular.module('focaBusquedaCliente') .controller('focaBusquedaClienteModalController', [ '$uibModalInstance', 'focaBusquedaClienteService', '$scope', '$filter', - function($uibModalInstance, focaBusquedaClienteService, $scope, $filter) { + '$uibModal', 'focaModalService', + function($uibModalInstance, focaBusquedaClienteService, $scope, $filter, + $uibModal, focaModalService) { $scope.filters = ''; $scope.primerBusqueda = false; @@ -11,6 +13,36 @@ angular.module('focaBusquedaCliente') $scope.filteredClientes = []; $scope.currentPageClientes = []; $scope.selectedClientes = -1; + $scope.ingreso = false; + + $scope.cliente = { + COD: 0, + ES_MAY: true, + provincia: { + NOMBRE: '' + }, + localidad: { + NOMBRE: '' + }, + iva: { + NOMBRE: '' + }, + actividad: { + NOM: '' + }, + zona: { + NOM: '' + }, + tipoFactura: { + NOMBRE: '' + }, + tipoComprobante: { + NOMBRE: '' + }, + formaPago: { + NOMBRE: '' + } + }; $scope.busquedaPress = function(key) { if (key === 13) { @@ -54,12 +86,17 @@ angular.module('focaBusquedaCliente') $scope.currentPage = page; }; - $scope.select = function(cliente) { + $scope.select = function(cliente, esNuevo = false) { + cliente.esNuevo = esNuevo; $uibModalInstance.close(cliente); }; $scope.cancel = function() { - $uibModalInstance.dismiss('cancel'); + if($scope.ingreso) { + $scope.ingreso = false; + } else { + $uibModalInstance.dismiss('cancel'); + } }; $scope.busquedaDown = function(key) { @@ -86,6 +123,209 @@ angular.module('focaBusquedaCliente') } }; + $scope.seleccionarProvincia = function(key) { + if(key === 13) { + var modalInstance = $uibModal.open( + { + ariaLabelledBy: 'Búsqueda de provincias', + templateUrl: 'modal-provincias.html', + controller: 'focaModalProvinciaController', + size: 'md', + resolve: {filters: function() { + return $scope.cliente.provincia; + }} + } + ); + modalInstance.result.then(function(provincia) { + $scope.cliente.provincia = provincia; + $scope.focused = 3; + }, function() { + //TODO: función llamada cuando cancela el modal + }); + } + }; + + $scope.seleccionarLocalidad = function(key) { + if($scope.cliente.provincia.ID === undefined) { + //TODO: Poner modal alert de foca + alert('Seleccione una provincia'); + return; + } + if(key === 13) { + var modalInstance = $uibModal.open( + { + ariaLabelledBy: 'Búsqueda de localidades', + templateUrl: 'modal-localidades.html', + controller: 'focaModalLocalidadController', + size: 'md', + resolve: { + filters: { + idProvincia: $scope.cliente.provincia.ID, + busqueda: $scope.cliente.localidad.nombre + } + } + } + ); + modalInstance.result.then(function(localidad) { + $scope.cliente.localidad = localidad; + $scope.focused = 4; + }, function() { + //TODO: función llamada cuando cancela el modal + }); + } + }; + $scope.seleccionarIva = function(key) { + if(key === 13) { + var modalInstance = $uibModal.open( + { + ariaLabelledBy: 'Búsqueda de responsabilidad ante el IVA', + templateUrl: 'modal-iva.html', + controller: 'focaModalIvaController', + size: 'md', + resolve: {filters: function() { + return $scope.cliente.iva.NOMBRE; + }} + } + ); + modalInstance.result.then(function(iva) { + $scope.cliente.iva = iva; + }, function() { + //TODO: función llamada cuando cancela el modal + }); + } + }; + $scope.seleccionarActividad = function(key) { + if(key === 13) { + var modalInstance = $uibModal.open( + { + ariaLabelledBy: 'Búsqueda de actividades', + templateUrl: 'modal-actividad.html', + controller: 'focaModalActividadController', + size: 'md', + resolve: {filters: function() { + return $scope.cliente.actividad.NOM; + }} + } + ); + modalInstance.result.then(function(actividad) { + $scope.cliente.actividad = actividad; + }, function() { + //TODO: función llamada cuando cancela el modal + }); + } + }; + + $scope.seleccionarZona = function(key) { + if(key === 13) { + var modalInstance = $uibModal.open( + { + ariaLabelledBy: 'Búsqueda de zonas', + templateUrl: 'modal-zona.html', + controller: 'focaModalZonaController', + size: 'md', + resolve: {filters: function() { + return $scope.cliente.zona.NOM; + }} + } + ); + modalInstance.result.then(function(zona) { + $scope.cliente.zona = zona; + }, function() { + //TODO: función llamada cuando cancela el modal + }); + } + }; + + $scope.seleccionarTipoFactura = function(key) { + if(key === 13) { + var modalInstance = $uibModal.open( + { + ariaLabelledBy: 'Búsqueda de tipos de factura', + templateUrl: 'modal-tipo-factura.html', + controller: 'focaModalTipoFacturaController', + size: 'md', + resolve: {filters: function() { + return $scope.cliente.tipoFactura.NOMBRE; + }} + } + ); + modalInstance.result.then(function(tipoFactura) { + $scope.cliente.tipoFactura = tipoFactura; + }, function() { + //TODO: función llamada cuando cancela el modal + }); + } + }; + + $scope.seleccionarTipoComprobante = function(key) { + if(key === 13) { + var modalInstance = $uibModal.open( + { + ariaLabelledBy: 'Búsqueda de tipos de comprobante', + templateUrl: 'modal-tipo-comprobante.html', + controller: 'focaModalTipoComprobanteController', + size: 'md', + resolve: {filters: function() { + return $scope.cliente.tipoComprobante.NOMBRE; + }} + } + ); + modalInstance.result.then(function(tipoComprobante) { + $scope.cliente.tipoComprobante = tipoComprobante; + }, function() { + //TODO: función llamada cuando cancela el modal + }); + } + }; + + $scope.seleccionarFormaPago = function(key) { + if(key === 13) { + var modalInstance = $uibModal.open( + { + ariaLabelledBy: 'Búsqueda de formas de pago', + templateUrl: 'modal-forma-pago.html', + controller: 'focaModalFormaPagoController', + size: 'md', + resolve: {filters: function() { + return $scope.cliente.formaPago.NOMBRE; + }} + } + ); + modalInstance.result.then(function(formaPago) { + $scope.cliente.formaPago = formaPago; + }, function() { + //TODO: función llamada cuando cancela el modal + }); + } + }; + + $scope.guardar = function() { + + if(!validarForm()) return; + + $scope.cliente.PCX = $scope.cliente.provincia.ID; + $scope.cliente.LOX = $scope.cliente.localidad.ID; + $scope.cliente.IVA = $scope.cliente.iva.ID; + $scope.cliente.ACT = $scope.cliente.actividad.ID; + $scope.cliente.ZON = $scope.cliente.zona.ID; + $scope.cliente.TIP = $scope.cliente.tipoFactura.ID; + $scope.cliente.TCO = $scope.cliente.tipoComprobante.ID; + $scope.cliente.FPA = $scope.cliente.formaPago.ID; + + delete $scope.cliente.provincia; + delete $scope.cliente.localidad; + delete $scope.cliente.iva; + delete $scope.cliente.actividad; + delete $scope.cliente.zona; + delete $scope.cliente.tipoFactura; + delete $scope.cliente.tipoComprobante; + delete $scope.cliente.formaPago; + + focaBusquedaClienteService.guardarCliente($scope.cliente).then(function(res) { + $scope.select(res.data, true); + }); + }; + function calcularPages(paginaActual) { var paginas = []; paginas.push(paginaActual); @@ -149,5 +389,14 @@ angular.module('focaBusquedaCliente') $scope.selectedClientes = 0; } } + + function validarForm() { + var regexCuit = new RegExp(/\b(20|23|24|27|30|33|34)(\D)?[0-9]{8}(\D)?[0-9]/g); + if(!regexCuit.test($scope.cliente.CUIT)) { + focaModalService.alert('Número de CUIT inválido') + return false; + } + return true; + } } ]); diff --git a/src/js/service.js b/src/js/service.js index dd2ad2a..b9a565a 100644 --- a/src/js/service.js +++ b/src/js/service.js @@ -9,6 +9,9 @@ angular.module('focaBusquedaCliente') }, obtenerClientesPorNombreOCuit: function(nombreOCuit) { return $http.post(API_ENDPOINT.URL + '/cliente', {nombreOCuit: nombreOCuit}); + }, + guardarCliente: function(cliente) { + return $http.post(API_ENDPOINT.URL + '/cliente', {cliente: cliente}); } }; }]); diff --git a/src/views/foca-busqueda-cliente-modal.html b/src/views/foca-busqueda-cliente-modal.html index 6ba99e4..0b95ea9 100644 --- a/src/views/foca-busqueda-cliente-modal.html +++ b/src/views/foca-busqueda-cliente-modal.html @@ -1,14 +1,27 @@