Commit 599e4038e526cbde8c3c3788dc63abf05be72545

Authored by Jose Pinto
1 parent 68b5a970da
Exists in master and in 1 other branch develop

formulario crear cliente

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