Commit 64e9b0c33f50837858a473f6d8e7ae37cb9dbe6d

Authored by Eric Fernandez
Exists in master

Merge branch 'master' into 'master'

siguiente input con enter, cols mobile

See merge request !8
src/js/controller.js
1 angular.module('focaBusquedaCliente') 1 angular.module('focaBusquedaCliente')
2 .controller('focaBusquedaClienteModalController', [ 2 .controller('focaBusquedaClienteModalController', [
3 '$uibModalInstance', 'focaBusquedaClienteService', '$scope', '$filter', 3 '$uibModalInstance', 'focaBusquedaClienteService', '$scope', '$filter',
4 '$uibModal', 'focaModalService', '$timeout', 4 '$uibModal', 'focaModalService', '$timeout',
5 function($uibModalInstance, focaBusquedaClienteService, $scope, $filter, 5 function($uibModalInstance, focaBusquedaClienteService, $scope, $filter,
6 $uibModal, focaModalService, $timeout) { 6 $uibModal, focaModalService, $timeout) {
7 7
8 $scope.filters = ''; 8 $scope.filters = '';
9 $scope.primerBusqueda = false; 9 $scope.primerBusqueda = false;
10 // pagination 10 // pagination
11 $scope.numPerPage = 10; 11 $scope.numPerPage = 10;
12 $scope.currentPage = 1; 12 $scope.currentPage = 1;
13 $scope.filteredClientes = []; 13 $scope.filteredClientes = [];
14 $scope.currentPageClientes = []; 14 $scope.currentPageClientes = [];
15 $scope.selectedClientes = -1; 15 $scope.selectedClientes = -1;
16 $scope.ingreso = false; 16 $scope.ingreso = false;
17 $scope.regexCuit = new RegExp(/\b(20|23|24|27|30|33|34)(\D)?[0-9]{8}(\D)?[0-9]/g); 17 $scope.regexCuit = new RegExp(/\b(20|23|24|27|30|33|34)(\D)?[0-9]{8}(\D)?[0-9]/g);
18 18 $scope.focused = 1;
19 19
20 $scope.cliente = { 20 $scope.cliente = {
21 COD: 0, 21 COD: 0,
22 ES_MAY: true, 22 ES_MAY: true,
23 provincia: { 23 provincia: {
24 NOMBRE: '' 24 NOMBRE: ''
25 }, 25 },
26 localidad: { 26 localidad: {
27 NOMBRE: '' 27 NOMBRE: ''
28 }, 28 },
29 iva: { 29 iva: {
30 NOMBRE: '' 30 NOMBRE: ''
31 }, 31 },
32 actividad: { 32 actividad: {
33 NOM: '' 33 NOM: ''
34 }, 34 },
35 zona: { 35 zona: {
36 NOM: '' 36 NOM: ''
37 }, 37 },
38 tipoFactura: { 38 tipoFactura: {
39 NOMBRE: '' 39 NOMBRE: ''
40 }, 40 },
41 tipoComprobante: { 41 tipoComprobante: {
42 NOMBRE: '' 42 NOMBRE: ''
43 }, 43 },
44 formaPago: { 44 formaPago: {
45 NOMBRE: '' 45 NOMBRE: ''
46 } 46 }
47 }; 47 };
48 48
49 $scope.busquedaPress = function(key) { 49 $scope.busquedaPress = function(key) {
50 if (key === 13) { 50 if (key === 13) {
51 $scope.searchLoading = true; 51 $scope.searchLoading = true;
52 focaBusquedaClienteService.obtenerClientesPorNombreOCuit($scope.filters).then( 52 focaBusquedaClienteService.obtenerClientesPorNombreOCuit($scope.filters).then(
53 function(res) { 53 function(res) {
54 $scope.primerBusqueda = true; 54 $scope.primerBusqueda = true;
55 $scope.clientes = res.data; 55 $scope.clientes = res.data;
56 $scope.search(true); 56 $scope.search(true);
57 primera(); 57 primera();
58 $scope.searchLoading = false; 58 $scope.searchLoading = false;
59 }); 59 });
60 } 60 }
61 }; 61 };
62 62
63 $scope.search = function (pressed) { 63 $scope.search = function (pressed) {
64 if($scope.primerBusqueda) { 64 if($scope.primerBusqueda) {
65 $scope.filteredClientes = $filter('filter')( 65 $scope.filteredClientes = $filter('filter')(
66 $scope.clientes, {$: $scope.filters} 66 $scope.clientes, {$: $scope.filters}
67 ); 67 );
68 68
69 if(pressed && $scope.filteredClientes.length === 0){ 69 if(pressed && $scope.filteredClientes.length === 0){
70 $timeout(function() { 70 $timeout(function() {
71 angular.element('#search')[0].focus(); 71 angular.element('#search')[0].focus();
72 $scope.filters = ''; 72 $scope.filters = '';
73 }); 73 });
74 } 74 }
75 75
76 $scope.lastPage = Math.ceil( 76 $scope.lastPage = Math.ceil(
77 $scope.filteredClientes.length / $scope.numPerPage 77 $scope.filteredClientes.length / $scope.numPerPage
78 ); 78 );
79 79
80 $scope.resetPage(); 80 $scope.resetPage();
81 } 81 }
82 }; 82 };
83 83
84 $scope.resetPage = function () { 84 $scope.resetPage = function () {
85 $scope.currentPage = 1; 85 $scope.currentPage = 1;
86 $scope.selectPage(1); 86 $scope.selectPage(1);
87 }; 87 };
88 88
89 $scope.selectPage = function (page) { 89 $scope.selectPage = function (page) {
90 var start = (page - 1) * $scope.numPerPage; 90 var start = (page - 1) * $scope.numPerPage;
91 var end = start + $scope.numPerPage; 91 var end = start + $scope.numPerPage;
92 $scope.paginas = []; 92 $scope.paginas = [];
93 $scope.paginas = calcularPages(page); 93 $scope.paginas = calcularPages(page);
94 $scope.currentPageClientes = $scope.filteredClientes.slice(start, end); 94 $scope.currentPageClientes = $scope.filteredClientes.slice(start, end);
95 $scope.currentPage = page; 95 $scope.currentPage = page;
96 }; 96 };
97 97
98 $scope.select = function(cliente, esNuevo = false) { 98 $scope.select = function(cliente, esNuevo = false) {
99 cliente.esNuevo = esNuevo; 99 cliente.esNuevo = esNuevo;
100 $uibModalInstance.close(cliente); 100 $uibModalInstance.close(cliente);
101 }; 101 };
102 102
103 $scope.cancel = function() { 103 $scope.cancel = function() {
104 if($scope.ingreso) { 104 if($scope.ingreso) {
105 $scope.ingreso = false; 105 $scope.ingreso = false;
106 }else { 106 }else {
107 $uibModalInstance.dismiss('cancel'); 107 $uibModalInstance.dismiss('cancel');
108 } 108 }
109 }; 109 };
110 110
111 $scope.busquedaDown = function(key) { 111 $scope.busquedaDown = function(key) {
112 if (key === 40) { 112 if (key === 40) {
113 primera(key); 113 primera(key);
114 } 114 }
115 }; 115 };
116 116
117 $scope.itemCliente = function(key) { 117 $scope.itemCliente = function(key) {
118 if (key === 38) { 118 if (key === 38) {
119 anterior(key); 119 anterior(key);
120 } 120 }
121 121
122 if (key === 40) { 122 if (key === 40) {
123 siguiente(key); 123 siguiente(key);
124 } 124 }
125 125
126 if (key === 37) { 126 if (key === 37) {
127 retrocederPagina(); 127 retrocederPagina();
128 } 128 }
129 129
130 if (key === 39) { 130 if (key === 39) {
131 avanzarPagina(); 131 avanzarPagina();
132 } 132 }
133 }; 133 };
134 134
135 $scope.focus = function(val) {
136 $scope.focused = val;
137 };
138
139 $scope.next = function(key) {
140 if (key === 13) $scope.focused++;
141 };
142
135 $scope.seleccionarProvincia = function(key) { 143 $scope.seleccionarProvincia = function(key) {
136 if(key === 13) { 144 if(key === 13) {
137 var modalInstance = $uibModal.open( 145 var modalInstance = $uibModal.open(
138 { 146 {
139 ariaLabelledBy: 'Búsqueda de provincias', 147 ariaLabelledBy: 'Búsqueda de provincias',
140 templateUrl: 'modal-provincias.html', 148 templateUrl: 'modal-provincias.html',
141 controller: 'focaModalProvinciaController', 149 controller: 'focaModalProvinciaController',
142 size: 'md', 150 size: 'md',
143 resolve: { 151 resolve: {
144 filters: function() { 152 filters: function() {
145 return $scope.cliente.provincia.NOMBRE; 153 return $scope.cliente.provincia.NOMBRE;
146 } 154 }
147 } 155 }
148 } 156 }
149 ); 157 );
150 modalInstance.result.then(function(provincia) { 158 modalInstance.result.then(function(provincia) {
151 $scope.cliente.provincia = provincia; 159 $scope.cliente.provincia = provincia;
152 $scope.focused = 3; 160 $timeout(function() {
161 $scope.focused = 5;
162 });
153 }, function() { 163 }, function() {
154 //TODO: función llamada cuando cancela el modal 164 //TODO: función llamada cuando cancela el modal
155 }); 165 });
156 } 166 }
157 }; 167 };
158 $scope.seleccionarLocalidad = function(key) { 168 $scope.seleccionarLocalidad = function(key) {
159 if($scope.cliente.provincia.ID === undefined) { 169 if($scope.cliente.provincia.ID === undefined) {
160 //TODO: Poner modal alert de foca 170 //TODO: Poner modal alert de foca
161 alert('Seleccione una provincia'); 171 alert('Seleccione una provincia');
162 return; 172 return;
163 } 173 }
164 if(key === 13) { 174 if(key === 13) {
165 var modalInstance = $uibModal.open( 175 var modalInstance = $uibModal.open(
166 { 176 {
167 ariaLabelledBy: 'Búsqueda de localidades', 177 ariaLabelledBy: 'Búsqueda de localidades',
168 templateUrl: 'modal-localidades.html', 178 templateUrl: 'modal-localidades.html',
169 controller: 'focaModalLocalidadController', 179 controller: 'focaModalLocalidadController',
170 size: 'md', 180 size: 'md',
171 resolve: { 181 resolve: {
172 filters: { 182 filters: {
173 idProvincia: $scope.cliente.provincia.ID, 183 idProvincia: $scope.cliente.provincia.ID,
174 busqueda: $scope.cliente.localidad.nombre 184 busqueda: $scope.cliente.localidad.nombre
175 } 185 }
176 } 186 }
177 } 187 }
178 ); 188 );
179 modalInstance.result.then(function(localidad) { 189 modalInstance.result.then(function(localidad) {
180 $scope.cliente.localidad = localidad; 190 $scope.cliente.localidad = localidad;
181 $scope.focused = 4; 191 $timeout(function() {
192 $scope.focused = 6;
193 });
182 }, function() { 194 }, function() {
183 //TODO: función llamada cuando cancela el modal 195 //TODO: función llamada cuando cancela el modal
184 }); 196 });
185 } 197 }
186 }; 198 };
187 $scope.seleccionarIva = function(key) { 199 $scope.seleccionarIva = function(key) {
188 if(key === 13) { 200 if(key === 13) {
189 var modalInstance = $uibModal.open( 201 var modalInstance = $uibModal.open(
190 { 202 {
191 ariaLabelledBy: 'Búsqueda de responsabilidad ante el IVA', 203 ariaLabelledBy: 'Búsqueda de responsabilidad ante el IVA',
192 templateUrl: 'modal-iva.html', 204 templateUrl: 'modal-iva.html',
193 controller: 'focaModalIvaController', 205 controller: 'focaModalIvaController',
194 size: 'md', 206 size: 'md',
195 resolve: {filters: function() { 207 resolve: {filters: function() {
196 return $scope.cliente.iva.NOMBRE; 208 return $scope.cliente.iva.NOMBRE;
197 }} 209 }}
198 } 210 }
199 ); 211 );
200 modalInstance.result.then(function(iva) { 212 modalInstance.result.then(function(iva) {
201 $scope.cliente.iva = iva; 213 $scope.cliente.iva = iva;
214 $timeout(function() {
215 $scope.focused = 9;
216 });
202 }, function() { 217 }, function() {
203 //TODO: función llamada cuando cancela el modal 218 //TODO: función llamada cuando cancela el modal
204 }); 219 });
205 } 220 }
206 }; 221 };
207 $scope.seleccionarActividad = function(key) { 222 $scope.seleccionarActividad = function(key) {
208 if(key === 13) { 223 if(key === 13) {
209 var modalInstance = $uibModal.open( 224 var modalInstance = $uibModal.open(
210 { 225 {
211 ariaLabelledBy: 'Búsqueda de actividades', 226 ariaLabelledBy: 'Búsqueda de actividades',
212 templateUrl: 'modal-actividad.html', 227 templateUrl: 'modal-actividad.html',
213 controller: 'focaModalActividadController', 228 controller: 'focaModalActividadController',
214 size: 'md', 229 size: 'md',
215 resolve: {filters: function() { 230 resolve: {filters: function() {
216 return $scope.cliente.actividad.NOM; 231 return $scope.cliente.actividad.NOM;
217 }} 232 }}
218 } 233 }
219 ); 234 );
220 modalInstance.result.then(function(actividad) { 235 modalInstance.result.then(function(actividad) {
221 $scope.cliente.actividad = actividad; 236 $scope.cliente.actividad = actividad;
222 }, function() { 237 }, function() {
223 //TODO: función llamada cuando cancela el modal 238 //TODO: función llamada cuando cancela el modal
224 }); 239 });
225 } 240 }
226 }; 241 };
227 $scope.seleccionarZona = function(key) { 242 $scope.seleccionarZona = function(key) {
228 if(key === 13) { 243 if(key === 13) {
229 var modalInstance = $uibModal.open( 244 var modalInstance = $uibModal.open(
230 { 245 {
231 ariaLabelledBy: 'Búsqueda de zonas', 246 ariaLabelledBy: 'Búsqueda de zonas',
232 templateUrl: 'modal-zona.html', 247 templateUrl: 'modal-zona.html',
233 controller: 'focaModalZonaController', 248 controller: 'focaModalZonaController',
234 size: 'md', 249 size: 'md',
235 resolve: {filters: function() { 250 resolve: {filters: function() {
236 return $scope.cliente.zona.NOM; 251 return $scope.cliente.zona.NOM;
237 }} 252 }}
238 } 253 }
239 ); 254 );
240 modalInstance.result.then(function(zona) { 255 modalInstance.result.then(function(zona) {
241 $scope.cliente.zona = zona; 256 $scope.cliente.zona = zona;
257 $timeout(function() {
258 $scope.focused = 7;
259 });
242 }, function() { 260 }, function() {
243 //TODO: función llamada cuando cancela el modal 261 //TODO: función llamada cuando cancela el modal
244 }); 262 });
245 } 263 }
246 }; 264 };
247 $scope.seleccionarTipoFactura = function(key) { 265 $scope.seleccionarTipoFactura = function(key) {
248 if(key === 13) { 266 if(key === 13) {
249 var modalInstance = $uibModal.open( 267 var modalInstance = $uibModal.open(
250 { 268 {
251 ariaLabelledBy: 'Búsqueda de tipos de factura', 269 ariaLabelledBy: 'Búsqueda de tipos de factura',
252 templateUrl: 'modal-tipo-factura.html', 270 templateUrl: 'modal-tipo-factura.html',
253 controller: 'focaModalTipoFacturaController', 271 controller: 'focaModalTipoFacturaController',
254 size: 'md', 272 size: 'md',
255 resolve: {filters: function() { 273 resolve: {filters: function() {
256 return $scope.cliente.tipoFactura.NOMBRE; 274 return $scope.cliente.tipoFactura.NOMBRE;
257 }} 275 }}
258 } 276 }
259 ); 277 );
260 modalInstance.result.then(function(tipoFactura) { 278 modalInstance.result.then(function(tipoFactura) {
261 $scope.cliente.tipoFactura = tipoFactura; 279 $scope.cliente.tipoFactura = tipoFactura;
280 $timeout(function() {
281 $scope.focused = 10;
282 });
262 }, function() { 283 }, function() {
263 //TODO: función llamada cuando cancela el modal 284 //TODO: función llamada cuando cancela el modal
264 }); 285 });
265 } 286 }
266 }; 287 };
267 $scope.seleccionarTipoComprobante = function(key) { 288 $scope.seleccionarTipoComprobante = function(key) {
268 if(key === 13) { 289 if(key === 13) {
269 var modalInstance = $uibModal.open( 290 var modalInstance = $uibModal.open(
270 { 291 {
271 ariaLabelledBy: 'Búsqueda de tipos de comprobante', 292 ariaLabelledBy: 'Búsqueda de tipos de comprobante',
272 templateUrl: 'modal-tipo-comprobante.html', 293 templateUrl: 'modal-tipo-comprobante.html',
273 controller: 'focaModalTipoComprobanteController', 294 controller: 'focaModalTipoComprobanteController',
274 size: 'md', 295 size: 'md',
275 resolve: {filters: function() { 296 resolve: {filters: function() {
276 return $scope.cliente.tipoComprobante.NOMBRE; 297 return $scope.cliente.tipoComprobante.NOMBRE;
277 }} 298 }}
278 } 299 }
279 ); 300 );
280 modalInstance.result.then(function(tipoComprobante) { 301 modalInstance.result.then(function(tipoComprobante) {
281 $scope.cliente.tipoComprobante = tipoComprobante; 302 $scope.cliente.tipoComprobante = tipoComprobante;
303 $timeout(function() {
304 $scope.focused = 12;
305 });
282 }, function() { 306 }, function() {
283 //TODO: función llamada cuando cancela el modal 307 //TODO: función llamada cuando cancela el modal
284 }); 308 });
285 } 309 }
286 }; 310 };
287 $scope.seleccionarFormaPago = function(key) { 311 $scope.seleccionarFormaPago = function(key) {
288 if(key === 13) { 312 if(key === 13) {
289 var modalInstance = $uibModal.open( 313 var modalInstance = $uibModal.open(
290 { 314 {
291 ariaLabelledBy: 'Búsqueda de formas de pago', 315 ariaLabelledBy: 'Búsqueda de formas de pago',
292 templateUrl: 'modal-forma-pago.html', 316 templateUrl: 'modal-forma-pago.html',
293 controller: 'focaModalFormaPagoController', 317 controller: 'focaModalFormaPagoController',
294 size: 'md', 318 size: 'md',
295 resolve: {filters: function() { 319 resolve: {filters: function() {
296 return $scope.cliente.formaPago.NOMBRE; 320 return $scope.cliente.formaPago.NOMBRE;
297 }} 321 }}
298 } 322 }
299 ); 323 );
300 modalInstance.result.then(function(formaPago) { 324 modalInstance.result.then(function(formaPago) {
301 $scope.cliente.formaPago = formaPago; 325 $scope.cliente.formaPago = formaPago;
302 }, function() { 326 }, function() {
303 //TODO: función llamada cuando cancela el modal 327 //TODO: función llamada cuando cancela el modal
304 }); 328 });
305 } 329 }
306 }; 330 };
307 331
308 $scope.guardar = function() { 332 $scope.guardar = function() {
309 333
310 $scope.cliente.PCX = $scope.cliente.provincia.ID; 334 $scope.cliente.PCX = $scope.cliente.provincia.ID;
311 $scope.cliente.LOX = $scope.cliente.localidad.ID; 335 $scope.cliente.LOX = $scope.cliente.localidad.ID;
312 $scope.cliente.IVA = $scope.cliente.iva.ID; 336 $scope.cliente.IVA = $scope.cliente.iva.ID;
313 $scope.cliente.ACT = $scope.cliente.actividad.ID; 337 $scope.cliente.ACT = $scope.cliente.actividad.ID;
314 $scope.cliente.ZON = $scope.cliente.zona.ID; 338 $scope.cliente.ZON = $scope.cliente.zona.ID;
315 $scope.cliente.TIP = $scope.cliente.tipoFactura.ID; 339 $scope.cliente.TIP = $scope.cliente.tipoFactura.ID;
316 $scope.cliente.TCO = $scope.cliente.tipoComprobante.ID; 340 $scope.cliente.TCO = $scope.cliente.tipoComprobante.ID;
317 $scope.cliente.FPA = $scope.cliente.formaPago.ID; 341 $scope.cliente.FPA = $scope.cliente.formaPago.ID;
318 342
319 delete $scope.cliente.provincia; 343 delete $scope.cliente.provincia;
320 delete $scope.cliente.localidad; 344 delete $scope.cliente.localidad;
321 delete $scope.cliente.iva; 345 delete $scope.cliente.iva;
322 delete $scope.cliente.actividad; 346 delete $scope.cliente.actividad;
323 delete $scope.cliente.zona; 347 delete $scope.cliente.zona;
324 delete $scope.cliente.tipoFactura; 348 delete $scope.cliente.tipoFactura;
325 delete $scope.cliente.tipoComprobante; 349 delete $scope.cliente.tipoComprobante;
326 delete $scope.cliente.formaPago; 350 delete $scope.cliente.formaPago;
327 351
328 focaBusquedaClienteService.guardarCliente($scope.cliente).then(function(res) { 352 focaBusquedaClienteService.guardarCliente($scope.cliente).then(function(res) {
329 $scope.select(res.data, true); 353 $scope.select(res.data, true);
330 }); 354 });
331 }; 355 };
332 356
333 function calcularPages(paginaActual) { 357 function calcularPages(paginaActual) {
334 var paginas = []; 358 var paginas = [];
335 paginas.push(paginaActual); 359 paginas.push(paginaActual);
336 360
337 if (paginaActual - 1 > 1) { 361 if (paginaActual - 1 > 1) {
338 362
339 paginas.unshift(paginaActual - 1); 363 paginas.unshift(paginaActual - 1);
340 if (paginaActual - 2 > 1) { 364 if (paginaActual - 2 > 1) {
341 paginas.unshift(paginaActual - 2); 365 paginas.unshift(paginaActual - 2);
342 } 366 }
343 } 367 }
344 368
345 if (paginaActual + 1 < $scope.lastPage) { 369 if (paginaActual + 1 < $scope.lastPage) {
346 paginas.push(paginaActual + 1); 370 paginas.push(paginaActual + 1);
347 if (paginaActual + 2 < $scope.lastPage) { 371 if (paginaActual + 2 < $scope.lastPage) {
348 paginas.push(paginaActual + 2); 372 paginas.push(paginaActual + 2);
349 } 373 }
350 } 374 }
351 375
352 if (paginaActual !== 1) { 376 if (paginaActual !== 1) {
353 paginas.unshift(1); 377 paginas.unshift(1);
354 } 378 }
355 379
356 if (paginaActual !== $scope.lastPage) { 380 if (paginaActual !== $scope.lastPage) {
357 paginas.push($scope.lastPage); 381 paginas.push($scope.lastPage);
358 } 382 }
359 383
360 return paginas; 384 return paginas;
361 } 385 }
362 386
363 function primera() { 387 function primera() {
364 $scope.selectedClientes = 0; 388 $scope.selectedClientes = 0;
365 } 389 }
366 390
367 function anterior() { 391 function anterior() {
368 if ($scope.selectedClientes === 0 && $scope.currentPage > 1) { 392 if ($scope.selectedClientes === 0 && $scope.currentPage > 1) {
369 retrocederPagina(); 393 retrocederPagina();
370 } else { 394 } else {
371 $scope.selectedClientes--; 395 $scope.selectedClientes--;
372 } 396 }
373 } 397 }
374 398
375 function siguiente() { 399 function siguiente() {
376 if ($scope.selectedClientes < $scope.currentPageClientes.length - 1 ) { 400 if ($scope.selectedClientes < $scope.currentPageClientes.length - 1 ) {
377 $scope.selectedClientes++; 401 $scope.selectedClientes++;
378 } else { 402 } else {
379 avanzarPagina(); 403 avanzarPagina();
380 } 404 }
381 } 405 }
382 406
383 function retrocederPagina() { 407 function retrocederPagina() {
384 if ($scope.currentPage > 1) { 408 if ($scope.currentPage > 1) {
385 $scope.selectPage($scope.currentPage - 1); 409 $scope.selectPage($scope.currentPage - 1);
386 $scope.selectedClientes = $scope.numPerPage - 1; 410 $scope.selectedClientes = $scope.numPerPage - 1;
387 } 411 }
388 } 412 }
389 413
390 function avanzarPagina() { 414 function avanzarPagina() {
391 if ($scope.currentPage < $scope.lastPage) { 415 if ($scope.currentPage < $scope.lastPage) {
392 $scope.selectPage($scope.currentPage + 1); 416 $scope.selectPage($scope.currentPage + 1);
393 $scope.selectedClientes = 0; 417 $scope.selectedClientes = 0;
394 } 418 }
395 } 419 }
396 } 420 }
397 ]); 421 ]);
398 422
src/views/foca-busqueda-cliente-modal.html
1 <div class="modal-header py-1"> 1 <div class="modal-header py-1">
2 <div class="row w-100"> 2 <div class="row w-100">
3 <div class="col-lg-4"> 3 <div class="col-lg-4 col-7">
4 <h5 class="modal-title my-1" ng-hide="ingreso">Búsqueda de Cliente</h5> 4 <h5 class="modal-title my-1" ng-hide="ingreso">Búsqueda de Cliente</h5>
5 <h5 class="modal-title my-1" ng-show="ingreso">Crear Cliente</h5> 5 <h5 class="modal-title my-1" ng-show="ingreso">Crear Cliente</h5>
6 </div> 6 </div>
7 <div ng-show="ingreso" class="col-lg-6"> 7 <div ng-show="ingreso" class="col-lg-6 col-5 front-index">
8 <div class="custom-control custom-checkbox mt-2"> 8 <div class="custom-control custom-checkbox mt-2">
9 <input 9 <input
10 type="checkbox" 10 type="checkbox"
11 class="custom-control-input" 11 class="custom-control-input"
12 id="checkProspecto" 12 id="checkProspecto"
13 ng-model="cliente.ES_PROS"> 13 ng-model="cliente.ES_PROS">
14 <label class="custom-control-label" for="checkProspecto">¿Es prospecto?</label> 14 <label class="custom-control-label" for="checkProspecto">¿Es prospecto?</label>
15 </div> 15 </div>
16 </div> 16 </div>
17 <div class="input-group col-lg-6 offset-lg-2 pr-0 my-2"> 17 <div class="input-group col-lg-6 offset-lg-2 pr-0 my-2">
18 <button 18 <button
19 class="btn btn-outline-primary mr-2" 19 class="btn btn-outline-primary mr-2"
20 ng-click="ingreso = true" 20 ng-click="ingreso = true"
21 ng-show="!ingreso" 21 ng-show="!ingreso"
22 title="Nuevo"> 22 title="Nuevo">
23 <i class="fa fa-plus" aria-hidden="true"></i> 23 <i class="fa fa-plus" aria-hidden="true"></i>
24 </button> 24 </button>
25 <input 25 <input
26 ladda="searchLoading" 26 ladda="searchLoading"
27 type="text" 27 type="text"
28 class="form-control form-control-sm" 28 class="form-control form-control-sm"
29 id="search" 29 id="search"
30 placeholder="Busqueda" 30 placeholder="Busqueda"
31 ng-model="filters" 31 ng-model="filters"
32 ng-change="search()" 32 ng-change="search()"
33 ng-keydown="busquedaDown($event.keyCode)" 33 ng-keydown="busquedaDown($event.keyCode)"
34 ng-keypress="busquedaPress($event.keyCode)" 34 ng-keypress="busquedaPress($event.keyCode)"
35 foca-focus="selectedClientes == -1" 35 foca-focus="selectedClientes == -1"
36 ng-focus="selectedClientes = -1" 36 ng-focus="selectedClientes = -1"
37 teclado-virtual 37 teclado-virtual
38 ng-hide="ingreso" 38 ng-hide="ingreso"
39 > 39 >
40 <div class="input-group-append" ng-hide="ingreso"> 40 <div class="input-group-append" ng-hide="ingreso">
41 <button 41 <button
42 ladda="searchLoading" 42 ladda="searchLoading"
43 data-spinner-color="#FF0000" 43 data-spinner-color="#FF0000"
44 class="btn btn-outline-secondary" 44 class="btn btn-outline-secondary"
45 type="button" 45 type="button"
46 ng-click="busquedaPress(13)"> 46 ng-click="busquedaPress(13)">
47 <i class="fa fa-search" aria-hidden="true"></i> 47 <i class="fa fa-search" aria-hidden="true"></i>
48 </button> 48 </button>
49 </div> 49 </div>
50 </div> 50 </div>
51 </div> 51 </div>
52 </div> 52 </div>
53 <div class="modal-body" id="modal-body"> 53 <div class="modal-body" id="modal-body">
54 54
55 <div ng-show="!primerBusqueda && !ingreso"> 55 <div ng-show="!primerBusqueda && !ingreso">
56 Debe realizar una primer búsqueda. 56 Debe realizar una primer búsqueda.
57 </div> 57 </div>
58 58
59 <table ng-show="primerBusqueda && !ingreso" class="table table-striped table-sm"> 59 <table ng-show="primerBusqueda && !ingreso" class="table table-striped table-sm">
60 <thead> 60 <thead>
61 <tr> 61 <tr>
62 <th>Código</th> 62 <th>Código</th>
63 <th>Nombre</th> 63 <th>Nombre</th>
64 <th>CUIT</th> 64 <th>CUIT</th>
65 <th></th> 65 <th></th>
66 </tr> 66 </tr>
67 </thead> 67 </thead>
68 <tbody> 68 <tbody>
69 <tr ng-show="currentPageClientes.length == 0 && primerBusqueda"> 69 <tr ng-show="currentPageClientes.length == 0 && primerBusqueda">
70 <td colspan="4"> 70 <td colspan="4">
71 No se encontraron resultados. 71 No se encontraron resultados.
72 </td> 72 </td>
73 </tr> 73 </tr>
74 <tr 74 <tr
75 class="selectable" 75 class="selectable"
76 ng-repeat="(key, cliente) in currentPageClientes" 76 ng-repeat="(key, cliente) in currentPageClientes"
77 ng-click="select(cliente)"> 77 ng-click="select(cliente)">
78 <td ng-bind="('00000'+cliente.cod).slice(-5)"></td> 78 <td ng-bind="('00000'+cliente.cod).slice(-5)"></td>
79 <td ng-bind="cliente.nom"></td> 79 <td ng-bind="cliente.nom"></td>
80 <td ng-bind="cliente.cuit"></td> 80 <td ng-bind="cliente.cuit"></td>
81 <td> 81 <td>
82 <button 82 <button
83 type="button" 83 type="button"
84 class="btn btn-xs p-1 float-right" 84 class="btn btn-xs p-1 float-right"
85 ng-class="{ 85 ng-class="{
86 'btn-secondary': selectedClientes != key, 86 'btn-secondary': selectedClientes != key,
87 'btn-primary': selectedClientes == key 87 'btn-primary': selectedClientes == key
88 }" 88 }"
89 ng-click="select(cliente)" 89 ng-click="select(cliente)"
90 foca-focus="selectedClientes == {{key}}" 90 foca-focus="selectedClientes == {{key}}"
91 ng-keydown="itemCliente($event.keyCode)" 91 ng-keydown="itemCliente($event.keyCode)"
92 > 92 >
93 <i class="fa fa-circle-thin" aria-hidden="true"></i> 93 <i class="fa fa-circle-thin" aria-hidden="true"></i>
94 </button> 94 </button>
95 </td> 95 </td>
96 </tr> 96 </tr>
97 </tbody> 97 </tbody>
98 </table> 98 </table>
99 99
100 <form name="formCliente"> 100 <form name="formCliente">
101 <uib-tabset class="tabs-right" ng-show="ingreso"> 101 <uib-tabset class="tabs-right" ng-show="ingreso">
102 <uib-tab heading="Datos clientes"> 102 <uib-tab heading="Datos clientes">
103 <div class="row"> 103 <div class="row">
104 <div class="col-3"> 104 <div class="col-3">
105 <label>Código</label> 105 <label>Código</label>
106 <input 106 <input
107 type="text" 107 type="text"
108 class="form-control form-control-sm" 108 class="form-control form-control-sm"
109 ng-model="cliente.codigo" 109 ng-model="cliente.codigo"
110 readonly 110 readonly
111 /> 111 />
112 </div> 112 </div>
113 <div class="col-9"> 113 <div class="col-9">
114 <label>Nombre</label> 114 <label>Nombre</label>
115 <input 115 <input
116 type="text" 116 type="text"
117 foca-focus="ingreso"
118 class="form-control form-control-sm" 117 class="form-control form-control-sm"
119 ng-model="cliente.NOM" 118 ng-model="cliente.NOM"
119 teclado-virtual
120 placeholder="Ingrese nombre" 120 placeholder="Ingrese nombre"
121 ng-required="true" 121 ng-required="true"
122 teclado-virtual 122 foca-focus="focused == 1 || ingreso"
123 ng-focus="focus(1)"
124 ng-keypress="next($event.keyCode)"
123 /> 125 />
124 </div> 126 </div>
125 </div> 127 </div>
126 <div class="row"> 128 <div class="row">
127 <div class="col-9"> 129 <div class="col-md-9 col-12">
128 <label>Domicilio</label> 130 <label>Domicilio</label>
129 <input 131 <input
130 type="text" 132 type="text"
131 class="form-control form-control-sm" 133 class="form-control form-control-sm"
132 ng-model="cliente.DOM" 134 ng-model="cliente.DOM"
135 teclado-virtual
133 placeholder="Ingrese domicilio" 136 placeholder="Ingrese domicilio"
134 ng-required="true" 137 ng-required="true"
135 teclado-virtual 138 ng-focus="focus(2)"
139 foca-focus="focused == 2"
140 ng-keypress="next($event.keyCode)"
136 /> 141 />
137 </div> 142 </div>
138 <div class="col-3"> 143 <div class="col-md-3 col-12">
139 <label>Código postal</label> 144 <label>Código postal</label>
140 <input 145 <input
141 type="text" 146 type="text"
142 class="form-control form-control-sm" 147 class="form-control form-control-sm"
143 ng-model="cliente.CPO" 148 ng-model="cliente.CPO"
144 placeholder="Ingrese CP" 149 placeholder="Ingrese CP"
145 ng-required="true" 150 ng-required="true"
151 ng-focus="focus(3)"
152 foca-focus="focused == 3"
153 ng-keypress="next($event.keyCode)"
146 teclado-virtual 154 teclado-virtual
147 /> 155 />
148 </div> 156 </div>
149 </div> 157 </div>
150 <div class="row"> 158 <div class="row">
151 <div class="col-6"> 159 <div class="col-md-6 col-12">
152 <label>Provincia</label> 160 <label>Provincia</label>
153 <div class="input-group"> 161 <div class="input-group">
154 <input 162 <input
155 type="text" 163 type="text"
156 class="form-control form-control-sm" 164 class="form-control form-control-sm"
157 ng-model="cliente.provincia.NOMBRE" 165 ng-model="cliente.provincia.NOMBRE"
158 ng-keypress="seleccionarProvincia($event.keyCode)" 166 ng-keypress="seleccionarProvincia($event.keyCode)"
159 placeholder="Ingrese provincia" 167 placeholder="Ingrese provincia"
160 ng-required="true" 168 ng-required="true"
169 ng-focus="focus(4)"
170 foca-focus="focused == 4"
161 teclado-virtual 171 teclado-virtual
162 /> 172 />
163 <div class="input-group-append"> 173 <div class="input-group-append">
164 <button 174 <button
165 ladda="searchLoading" 175 ladda="searchLoading"
166 class="btn btn-outline-secondary form-control-sm" 176 class="btn btn-outline-secondary form-control-sm"
167 type="button" 177 type="button"
168 ng-click="seleccionarProvincia(13)" 178 ng-click="seleccionarProvincia(13)"
169 > 179 >
170 <i class="fa fa-search" aria-hidden="true"></i> 180 <i class="fa fa-search" aria-hidden="true"></i>
171 </button> 181 </button>
172 </div> 182 </div>
173 </div> 183 </div>
174 </div> 184 </div>
175 <div class="col-6"> 185 <div class="col-md-6 col-12">
176 <label>Localidad</label> 186 <label>Localidad</label>
177 <div class="input-group"> 187 <div class="input-group">
178 <input 188 <input
179 type="text" 189 type="text"
180 class="form-control form-control-sm" 190 class="form-control form-control-sm"
181 ng-model="cliente.localidad.NOMBRE" 191 ng-model="cliente.localidad.NOMBRE"
182 ng-keypress="seleccionarLocalidad($event.keyCode)" 192 ng-keypress="seleccionarLocalidad($event.keyCode)"
183 placeholder="Ingrese localidad" 193 placeholder="Ingrese localidad"
184 ng-required="true" 194 ng-required="true"
195 foca-focus="focused == 5"
196 ng-focus="focus(5)"
185 teclado-virtual 197 teclado-virtual
186 /> 198 />
187 <div class="input-group-append"> 199 <div class="input-group-append">
188 <button 200 <button
189 ladda="searchLoading" 201 ladda="searchLoading"
190 class="btn btn-outline-secondary form-control-sm" 202 class="btn btn-outline-secondary form-control-sm"
191 type="button" 203 type="button"
192 ng-click="seleccionarLocalidad(13)" 204 ng-click="seleccionarLocalidad(13)"
193 > 205 >
194 <i class="fa fa-search" aria-hidden="true"></i> 206 <i class="fa fa-search" aria-hidden="true"></i>
195 </button> 207 </button>
196 </div> 208 </div>
197 </div> 209 </div>
198 </div> 210 </div>
199 </div> 211 </div>
200 <div class="row"> 212 <div class="row">
201 <div class="col-6"> 213 <div class="col-md-6 col-12">
202 <label>Zona</label> 214 <label>Zona</label>
203 <div class="input-group"> 215 <div class="input-group">
204 <input 216 <input
205 type="text" 217 type="text"
206 class="form-control form-control-sm" 218 class="form-control form-control-sm"
207 ng-model="cliente.zona.NOM" 219 ng-model="cliente.zona.NOM"
208 ng-keypress="seleccionarZona($event.keyCode)" 220 ng-keypress="seleccionarZona($event.keyCode)"
209 placeholder="Ingrese zona" 221 placeholder="Ingrese zona"
210 ng-required="true" 222 ng-required="true"
223 ng-focus="focus(6)"
224 foca-focus="focused == 6"
211 teclado-virtual 225 teclado-virtual
212 /> 226 />
213 <div class="input-group-append"> 227 <div class="input-group-append">
214 <button 228 <button
215 ladda="searchLoading" 229 ladda="searchLoading"
216 class="btn btn-outline-secondary form-control-sm" 230 class="btn btn-outline-secondary form-control-sm"
217 type="button" 231 type="button"
218 ng-click="seleccionarZona(13)" 232 ng-click="seleccionarZona(13)"
219 > 233 >
220 <i class="fa fa-search" aria-hidden="true"></i> 234 <i class="fa fa-search" aria-hidden="true"></i>
221 </button> 235 </button>
222 </div> 236 </div>
223 </div> 237 </div>
224 </div> 238 </div>
225 <div class="col-6"> 239 <div class="col-md-6 col-12">
226 <label>Actividad</label> 240 <label>Actividad</label>
227 <div class="input-group"> 241 <div class="input-group">
228 <input 242 <input
229 type="text" 243 type="text"
230 class="form-control form-control-sm" 244 class="form-control form-control-sm"
231 ng-model="cliente.actividad.NOM" 245 ng-model="cliente.actividad.NOM"
232 ng-keypress="seleccionarActividad($event.keyCode)" 246 ng-keypress="seleccionarActividad($event.keyCode)"
233 placeholder="Ingrese actividad" 247 placeholder="Ingrese actividad"
234 ng-required="true" 248 ng-required="true"
249 ng-focus="focus(7)"
250 foca-focus="focused == 7"
235 teclado-virtual 251 teclado-virtual
236 /> 252 />
237 <div class="input-group-append"> 253 <div class="input-group-append">
238 <button 254 <button
239 ladda="searchLoading" 255 ladda="searchLoading"
240 class="btn btn-outline-secondary form-control-sm" 256 class="btn btn-outline-secondary form-control-sm"
241 type="button" 257 type="button"
242 ng-click="seleccionarActividad(13)" 258 ng-click="seleccionarActividad(13)"
243 > 259 >
244 <i class="fa fa-search" aria-hidden="true"></i> 260 <i class="fa fa-search" aria-hidden="true"></i>
245 </button> 261 </button>
246 </div> 262 </div>
247 </div> 263 </div>
248 </div> 264 </div>
249 </div> 265 </div>
250 <div class="row"> 266 <div class="row">
251 <div class="col-6"> 267 <div class="col-6">
252 <div class="custom-control custom-checkbox"> 268 <div class="custom-control custom-checkbox">
253 <input 269 <input
254 type="checkbox" 270 type="checkbox"
255 class="custom-control-input" 271 class="custom-control-input"
256 id="checkDistribuidor" 272 id="checkDistribuidor"
257 ng-model="cliente.ES_MAY" 273 ng-model="cliente.ES_MAY"
258 checked 274 checked
259 disabled="disabled"> 275 disabled="disabled">
260 <label class="custom-control-label" for="checkDistribuidor">¿Este cliente es distribuidor?</label> 276 <label class="custom-control-label" for="checkDistribuidor">¿Este cliente es distribuidor?</label>
261 </div> 277 </div>
262 </div> 278 </div>
263 </div> 279 </div>
264 </uib-tab> 280 </uib-tab>
265 <uib-tab heading="Datos impositivos"> 281 <uib-tab heading="Datos impositivos">
266 <div class="row"> 282 <div class="row">
267 <div class="col-7"> 283 <div class="col-md-7 col-12">
268 <label>Responsabilidad ante el IVA</label> 284 <label>Responsabilidad ante el IVA</label>
269 <div class="input-group"> 285 <div class="input-group">
270 <input 286 <input
271 type="text" 287 type="text"
272 class="form-control form-control-sm" 288 class="form-control form-control-sm"
273 ng-model="cliente.iva.NOMBRE" 289 ng-model="cliente.iva.NOMBRE"
274 ng-keypress="seleccionarIva($event.keyCode)" 290 ng-keypress="seleccionarIva($event.keyCode)"
275 ng-required="true" 291 ng-required="true"
292 ng-focus="focus(8)"
293 foca-focus="focused == 8"
276 teclado-virtual 294 teclado-virtual
277 /> 295 />
278 <div class="input-group-append"> 296 <div class="input-group-append">
279 <button 297 <button
280 ladda="searchLoading" 298 ladda="searchLoading"
281 class="btn btn-outline-secondary form-control-sm" 299 class="btn btn-outline-secondary form-control-sm"
282 type="button" 300 type="button"
283 ng-click="seleccionarIva(13)" 301 ng-click="seleccionarIva(13)"
284 > 302 >
285 <i class="fa fa-search" aria-hidden="true"></i> 303 <i class="fa fa-search" aria-hidden="true"></i>
286 </button> 304 </button>
287 </div> 305 </div>
288 </div> 306 </div>
289 </div> 307 </div>
290 <div class="col-5"> 308 <div class="col-md-5 col-12">
291 <label>Factura que emite</label> 309 <label>Factura que emite</label>
292 <div class="input-group"> 310 <div class="input-group">
293 <input 311 <input
294 type="text" 312 type="text"
295 class="form-control form-control-sm" 313 class="form-control form-control-sm"
296 placeholder="Ingrese factura que emite" 314 placeholder="Ingrese factura que emite"
297 ng-model="cliente.tipoFactura.NOMBRE" 315 ng-model="cliente.tipoFactura.NOMBRE"
298 ng-required="true" 316 ng-required="true"
299 ng-keypress="seleccionarTipoFactura(13)" 317 ng-keypress="seleccionarTipoFactura(13)"
318 ng-focus="focus(9)"
319 foca-focus="focused == 9"
300 teclado-virtual> 320 teclado-virtual>
301 <div class="input-group-append"> 321 <div class="input-group-append">
302 <button 322 <button
303 ladda="searchLoading" 323 ladda="searchLoading"
304 class="btn btn-outline-secondary form-control-sm" 324 class="btn btn-outline-secondary form-control-sm"
305 type="button" 325 type="button"
306 ng-click="seleccionarTipoFactura(13)" 326 ng-click="seleccionarTipoFactura(13)"
307 > 327 >
308 <i class="fa fa-search" aria-hidden="true"></i> 328 <i class="fa fa-search" aria-hidden="true"></i>
309 </button> 329 </button>
310 </div> 330 </div>
311 </div> 331 </div>
312 </div> 332 </div>
313 </div> 333 </div>
314 <div class="row"> 334 <div class="row">
315 <div class="col-4"> 335 <div class="col-md-4 col-12">
316 <label>CUIT</label> 336 <label>CUIT</label>
317 <div class="input-group"> 337 <div class="input-group">
318 <input 338 <input
319 type="text" 339 type="text"
320 class="form-control form-control-sm" 340 class="form-control form-control-sm"
321 placeholder="Ingrese CUIT" 341 placeholder="Ingrese CUIT"
322 ng-model="cliente.CUIT" 342 ng-model="cliente.CUIT"
323 ng-required="true" 343 ng-required="true"
324 ng-pattern="regexCuit" 344 ng-pattern="regexCuit"
325 ng-maxlength="13" 345 ng-maxlength="13"
346 ng-keypress="next($event.keyCode)"
347 ng-focus="focus(10)"
348 foca-focus="focused == 10"
326 teclado-virtual> 349 teclado-virtual>
327 </div> 350 </div>
328 </div> 351 </div>
329 <div class="col-4"> 352 <div class="col-md-4 col-12">
330 <label>Clase de comprobante</label> 353 <label>Clase de comprobante</label>
331 <div class="input-group"> 354 <div class="input-group">
332 <input 355 <input
333 type="text" 356 type="text"
334 class="form-control form-control-sm" 357 class="form-control form-control-sm"
335 placeholder="Ingrese clase de comprobante" 358 placeholder="Ingrese clase de comprobante"
336 ng-keypress="seleccionarTipoComprobante($event.keyCode)" 359 ng-keypress="seleccionarTipoComprobante($event.keyCode)"
337 ng-model="cliente.tipoComprobante.NOMBRE" 360 ng-model="cliente.tipoComprobante.NOMBRE"
338 ng-required="true" 361 ng-required="true"
362 ng-focus="focus(11)"
363 foca-focus="focused == 11"
339 teclado-virtual> 364 teclado-virtual>
340 <div class="input-group-append"> 365 <div class="input-group-append">
341 <button 366 <button
342 ladda="searchLoading" 367 ladda="searchLoading"
343 class="btn btn-outline-secondary form-control-sm" 368 class="btn btn-outline-secondary form-control-sm"
344 type="button" 369 type="button"
345 ng-click="seleccionarTipoComprobante(13)" 370 ng-click="seleccionarTipoComprobante(13)"
346 > 371 >
347 <i class="fa fa-search" aria-hidden="true"></i> 372 <i class="fa fa-search" aria-hidden="true"></i>
348 </button> 373 </button>
349 </div> 374 </div>
350 </div> 375 </div>
351 </div> 376 </div>
352 <div class="col-4"> 377 <div class="col-md-4 col-12">
353 <label>Forma de pago</label> 378 <label>Forma de pago</label>
354 <div class="input-group"> 379 <div class="input-group">
355 <input 380 <input
356 type="text" 381 type="text"
357 class="form-control form-control-sm" 382 class="form-control form-control-sm"
358 placeholder="Ingrese forma de pago" 383 placeholder="Ingrese forma de pago"
359 ng-model="cliente.formaPago.NOMBRE" 384 ng-model="cliente.formaPago.NOMBRE"
360 ng-required="true" 385 ng-required="true"
361 ng-keypress="seleccionarFormaPago($event.keyCode)" 386 ng-keypress="seleccionarFormaPago($event.keyCode)"
387 ng-focus="focus(12)"
388 foca-focus="focused == 12"
362 teclado-virtual> 389 teclado-virtual>
363 <div class="input-group-append"> 390 <div class="input-group-append">
364 <button 391 <button
365 ladda="searchLoading" 392 ladda="searchLoading"
366 class="btn btn-outline-secondary form-control-sm" 393 class="btn btn-outline-secondary form-control-sm"
367 type="button" 394 type="button"
368 ng-click="seleccionarFormaPago(13)" 395 ng-click="seleccionarFormaPago(13)"
369 > 396 >
370 <i class="fa fa-search" aria-hidden="true"></i> 397 <i class="fa fa-search" aria-hidden="true"></i>
371 </button> 398 </button>
372 </div> 399 </div>
373 </div> 400 </div>
374 </div> 401 </div>
375 </div> 402 </div>
376 </uib-tab> 403 </uib-tab>
377 </uib-tabset> 404 </uib-tabset>
378 </form> 405 </form>
379 </div> 406 </div>
380 <div class="modal-footer py-1"> 407 <div class="modal-footer py-1">
381 <nav ng-show="currentPageClientes.length > 0 && primerBusqueda && !ingreso" class="mr-auto"> 408 <nav ng-show="currentPageClientes.length > 0 && primerBusqueda && !ingreso" class="mr-auto">
382 <ul class="pagination pagination-sm mb-0"> 409 <ul class="pagination pagination-sm mb-0">
383 <li class="page-item" ng-class="{'disabled': currentPage == 1}"> 410 <li class="page-item" ng-class="{'disabled': currentPage == 1}">
384 <a class="page-link" href="javascript:void()" ng-click="selectPage(currentPage - 1)"> 411 <a class="page-link" href="javascript:void()" ng-click="selectPage(currentPage - 1)">
385 <span aria-hidden="true">&laquo;</span> 412 <span aria-hidden="true">&laquo;</span>
386 <span class="sr-only">Anterior</span> 413 <span class="sr-only">Anterior</span>
387 </a> 414 </a>
388 </li> 415 </li>
389 <li 416 <li
390 class="page-item" 417 class="page-item"
391 ng-repeat="pagina in paginas" 418 ng-repeat="pagina in paginas"
392 ng-class="{'active': pagina == currentPage}" 419 ng-class="{'active': pagina == currentPage}"
393 > 420 >
394 <a 421 <a
395 class="page-link" 422 class="page-link"
396 href="javascript:void()" 423 href="javascript:void()"
397 ng-click="selectPage(pagina)" 424 ng-click="selectPage(pagina)"
398 ng-bind="pagina" 425 ng-bind="pagina"
399 ></a> 426 ></a>
400 </li> 427 </li>
401 <li class="page-item" ng-class="{'disabled': currentPage == lastPage}"> 428 <li class="page-item" ng-class="{'disabled': currentPage == lastPage}">
402 <a class="page-link" href="javascript:void()" ng-click="selectPage(currentPage + 1)"> 429 <a class="page-link" href="javascript:void()" ng-click="selectPage(currentPage + 1)">
403 <span aria-hidden="true">&raquo;</span> 430 <span aria-hidden="true">&raquo;</span>
404 <span class="sr-only">Siguiente</span> 431 <span class="sr-only">Siguiente</span>
405 </a> 432 </a>
406 </li> 433 </li>
407 </ul> 434 </ul>
408 </nav> 435 </nav>
409 <button class="btn btn-sm btn-secondary" type="button" ng-click="cancel()">Cancelar</button> 436 <button class="btn btn-sm btn-secondary" type="button" ng-click="cancel()">Cancelar</button>
410 <button 437 <button
411 class="btn btn-sm btn-primary" 438 class="btn btn-sm btn-primary"
412 type="button" 439 type="button"
413 ng-show="ingreso" 440 ng-show="ingreso"
414 ng-click="guardar()" 441 ng-click="guardar()"
415 ng-disabled="!formCliente.$valid">Guardar</button> 442 ng-disabled="!formCliente.$valid">Guardar</button>
416 </div> 443 </div>