Commit 7c48dfd19c84f7587db35c7efeb03231c4da08cb
1 parent
c8733ea3c8
Exists in
master
Editar datos de Cliente
Showing
5 changed files
with
1234 additions
and
14 deletions
Show diff stats
src/js/controller.js
1 | angular.module('focaAbmCliente') | 1 | angular.module('focaAbmCliente') |
2 | .controller('focaAbmClienteController', [ | 2 | .controller('focaAbmClienteController', [ |
3 | '$scope', 'focaAbmClienteService', '$location', '$uibModal', | 3 | '$scope', 'focaBotoneraLateralService', '$timeout', '$uibModal','focaModalService', |
4 | 'focaModalService', 'focaBotoneraLateralService', '$timeout', '$localStorage', | 4 | 'focaAbmClienteService','$filter', |
5 | '$routeParams', '$filter', | 5 | function($scope, focaBotoneraLateralService, $timeout, $uibModal,focaModalService, |
6 | function($scope, focaAbmClienteService, $location, $uibModal, focaModalService, | 6 | focaAbmClienteService, $filter) { |
7 | focaBotoneraLateralService, $timeout, $localStorage, $routeParams, $filter) { | 7 | $scope.cliente= { |
8 | NOM: undefined, | ||
9 | COD: undefined | ||
10 | }; | ||
11 | $scope.vendedor = {}; | ||
12 | |||
13 | $scope.botonCliente = [{ | ||
14 | label: 'Cliente', | ||
15 | image: 'cliente.png' | ||
16 | }]; | ||
17 | |||
18 | $scope.botonera = [ | ||
19 | { | ||
20 | label: 'Datos Cliente', | ||
21 | image: 'datoscliente.png', | ||
22 | }, | ||
23 | { | ||
24 | label: 'Domicilios de entrega', | ||
25 | image: 'dimiciliodeentrega.png' | ||
26 | }, | ||
27 | { | ||
28 | label: 'Precio y Condiciones', | ||
29 | image: 'precios-condiciones.png' | ||
30 | } | ||
31 | ]; | ||
8 | 32 | ||
9 | //SETEO BOTONERA LATERAL | 33 | //SETEO BOTONERA LATERAL |
10 | $timeout(function() { | 34 | $timeout(function() { |
11 | focaBotoneraLateralService.showSalir(false); | 35 | focaBotoneraLateralService.showSalir(true); |
12 | focaBotoneraLateralService.showPausar(false); | 36 | focaBotoneraLateralService.showPausar(false); |
13 | focaBotoneraLateralService.showCancelar(false); | 37 | focaBotoneraLateralService.showCancelar(false); |
14 | focaBotoneraLateralService.showGuardar(true); | 38 | focaBotoneraLateralService.showGuardar(false); |
15 | }); | 39 | }); |
16 | 40 | ||
17 | } | 41 | $scope.seleccionarCliente = function() { |
18 | ]); | 42 | var datos = null; |
43 | focaAbmClienteService.getAllClientes() | ||
44 | .then(function (res) { | ||
45 | datos = res.data; | ||
46 | focaModalService.modal({ | ||
47 | titulo: 'Clientes', | ||
48 | data: datos, | ||
49 | size: 'md', | ||
50 | columnas: [ | ||
51 | { | ||
52 | propiedad: 'COD', | ||
53 | nombre: 'Codigo' | ||
54 | }, | ||
55 | { | ||
56 | propiedad: 'NOM', | ||
57 | nombre: 'Nombre' | ||
58 | }, | ||
59 | { | ||
60 | propiedad: 'CUIT', | ||
61 | nombre: 'CUIT' | ||
62 | } | ||
63 | ], | ||
64 | }).then(function (res) { | ||
65 | $scope.cliente.NOM = res.NOM; | ||
66 | $scope.cliente.COD = res.COD; | ||
67 | $scope.$broadcast('addCabecera', { | ||
68 | label: 'Cliente:', | ||
69 | valor: $filter('rellenarDigitos') | ||
70 | ($scope.cliente.COD, 5) + ' - ' + $scope.cliente.NOM | ||
71 | }); | ||
72 | }).catch(function (e) { | ||
73 | console.log(e); | ||
74 | }); | ||
75 | }); | ||
76 | }; | ||
77 | |||
78 | $scope.seleccionarDatosCliente = function () { | ||
79 | if ($scope.cliente.NOM === undefined || $scope.cliente.COD === undefined) { | ||
80 | focaModalService.alert('Seleccione cliente'); | ||
81 | return; | ||
82 | } else { | ||
83 | var modalInstanceCliente = $uibModal.open( | ||
84 | { | ||
85 | ariaLabelledBy: '', | ||
86 | templateUrl: 'foca-modal-cliente.html', | ||
87 | controller: 'focaModalClienteController', | ||
88 | resolve: { | ||
89 | idCliente: function () { return $scope.cliente.COD; }, | ||
90 | }, | ||
91 | size: 'lg', | ||
92 | } | ||
93 | ); | ||
94 | modalInstanceCliente.result | ||
95 | .then( function(data) { | ||
96 | if (data) { | ||
97 | console.log('Data 2: ', data); | ||
98 | $scope.cliente.NOM = data.NOM; | ||
99 | $scope.$broadcast('cleanCabecera'); | ||
100 | $scope.$broadcast('addCabecera', { | ||
101 | label: 'Cliente:', | ||
102 | valor: $filter('rellenarDigitos')($scope.cliente.NOM) | ||
103 | }); | ||
104 | console.log('Data', data); | ||
105 | } | ||
106 | }); | ||
107 | } | ||
108 | }; | ||
109 | |||
110 | $scope.seleccionarDomiciliosDeEntrega = function () { | ||
111 | if ($scope.cliente.NOM === undefined || $scope.cliente.COD === undefined) { | ||
112 | focaModalService.alert('Seleccione un cliente'); | ||
113 | return; | ||
114 | } | ||
115 | var modalInstanceDomicilio = $uibModal.open( | ||
116 | { | ||
117 | ariaLabelledBy: 'Busqueda de Domicilios', | ||
118 | templateUrl: 'modal-domicilio.html', | ||
119 | controller: 'focaModalDomicilioController', | ||
120 | resolve: { | ||
121 | idCliente: function () { return $scope.cliente.COD; }, | ||
122 | esNuevo: function () { return $scope.cliente.esNuevo; } | ||
123 | }, | ||
124 | size: 'lg', | ||
125 | } | ||
126 | ); | ||
127 | modalInstanceDomicilio.result.then( function(data) { | ||
128 | if (data) { | ||
129 | $scope.$broadcast('addCabecera', { | ||
130 | label: 'Domicilio:', | ||
131 | valor: data.Calle + ' ' + data.Numero + ' - ' + data.Localidad + | ||
132 | ' - ' + data.Provincia | ||
133 | }); | ||
134 | } | ||
135 | }); | ||
136 | }; | ||
137 | |||
138 | $scope.seleccionarPrecioYCondiciones = function () { | ||
139 | |||
140 | if ($scope.cliente.NOM === undefined || $scope.cliente.COD === undefined) { | ||
141 | focaModalService.alert('Seleccione cliente'); | ||
142 | return; | ||
143 | } | ||
144 | var modalInstance = $uibModal.open( | ||
145 | { | ||
146 | ariaLabelledBy: 'Busqueda de Precio Condición', | ||
147 | templateUrl: 'modal-precio-condicion.html', | ||
148 | controller: 'focaModalPrecioCondicionController', | ||
149 | size: 'lg', | ||
150 | resolve: { | ||
151 | idListaPrecio: function () { | ||
152 | return $scope.cliente.MOD || null; | ||
153 | } | ||
154 | } | ||
155 | } | ||
156 | ); | ||
157 | |||
158 | modalInstance.result.then( function (data) { | ||
159 | if (data) { | ||
160 | console.log('Data: ', data); | ||
161 | } | ||
162 | |||
163 | }, function () { | ||
164 | |||
165 | } | ||
166 | ); | ||
167 | }; | ||
168 | |||
169 | |||
170 | } | ||
171 | ]); | ||
19 | 172 |
src/js/controllerCliente.js
File was created | 1 | angular.module('focaAbmCliente') | |
2 | .controller('focaModalClienteController', [ | ||
3 | '$scope', '$timeout', '$uibModalInstance', 'focaModalService', | ||
4 | 'focaAbmClienteService', 'idCliente', | ||
5 | |||
6 | function ($scope, $timeout, $uibModalInstance, focaModalService, | ||
7 | focaAbmClienteService, idCliente) { | ||
8 | |||
9 | $scope.cliente = { | ||
10 | provincia: {}, | ||
11 | localidad: {}, | ||
12 | zona: {}, | ||
13 | actividad: {}, | ||
14 | cobrador: {}, | ||
15 | vendedor: {}, | ||
16 | iva: {}, | ||
17 | tipoFactura: {}, | ||
18 | tipoComprobante: {}, | ||
19 | formaPago: {} | ||
20 | }; | ||
21 | $scope.regexCuit = new RegExp(/\b(20|23|24|27|30|33|34)(\D)?[0-9]{8}(\D)?[0-9]/); | ||
22 | |||
23 | $scope.vendedor = {}; | ||
24 | |||
25 | focaAbmClienteService.obtenerClientePorCodigo(idCliente) | ||
26 | .then(function (res) { | ||
27 | var data = res.data[0]; | ||
28 | $scope.cliente.codigo = data.COD; | ||
29 | $scope.cliente.DOM = data.DOM; | ||
30 | $scope.cliente.NOM = data.NOM; | ||
31 | $scope.cliente.CPO = data.CPO; | ||
32 | $scope.cliente.provincia.ID = data.PCX; | ||
33 | $scope.cliente.provincia.NOMBRE = data.PCI; | ||
34 | $scope.cliente.localidad.ID = data.LOX; | ||
35 | $scope.cliente.localidad.NOMBRE = data.LOC; | ||
36 | $scope.cliente.zona.ID = data.zona.ID; | ||
37 | $scope.cliente.zona.NOM = data.zona.NOM; | ||
38 | $scope.cliente.actividad.NOM = data.actividad.NOM; | ||
39 | $scope.cliente.actividad.ID = data.actividad.ID; | ||
40 | $scope.cliente.cobrador.NOM = data.cobrador ? data.cobrador.NOM : ''; | ||
41 | $scope.cliente.cobrador.NUM = data.cobrador ? data.cobrador.NUM : undefined; | ||
42 | $scope.cliente.cobrador.ID = data.cobrador ? data.cobrador.id : undefined; | ||
43 | $scope.vendedor.NOM = data.vendedor.NOM; | ||
44 | $scope.vendedor.id = data.vendedor.id; | ||
45 | $scope.cliente.MAIL = data.MAIL; | ||
46 | $scope.cliente.TEL = data.TEL; | ||
47 | $scope.cliente.iva.NOMBRE = data.iva.NOMBRE; | ||
48 | $scope.cliente.tipoFactura.NOMBRE = data.tipoFactura.NOMBRE; | ||
49 | $scope.cliente.tipoFactura.ID = data.tipoFactura.ID; | ||
50 | var cuit = data.CUIT.split('-'); | ||
51 | $scope.cliente.cuit1 = cuit[0]; | ||
52 | $scope.cliente.cuit2 = cuit[1]; | ||
53 | $scope.cliente.cuit3 = cuit[2]; | ||
54 | $scope.cliente.tipoComprobante.NOMBRE = data.tipoComprobante.NOMBRE; | ||
55 | $scope.cliente.tipoComprobante.ID = data.tipoComprobante.ID; | ||
56 | $scope.cliente.formaPago.NOMBRE = data.formaPago.NOMBRE; | ||
57 | $scope.cliente.formaPago.ID = data.formaPago.ID; | ||
58 | $scope.cliente.ES_PROS = data.ES_PROS; | ||
59 | $scope.cliente.ES_MAY = data.ES_MAY; | ||
60 | |||
61 | |||
62 | $scope.editando = true; | ||
63 | |||
64 | }) | ||
65 | .catch(function (e) { console.log(e); }); | ||
66 | |||
67 | |||
68 | |||
69 | |||
70 | $scope.cancel = function () { | ||
71 | $uibModalInstance.dismiss('cancel'); | ||
72 | }; | ||
73 | |||
74 | $scope.guardar = function () { | ||
75 | if (!$scope.cliente.NOM) { | ||
76 | focaModalService.alert('Ingrese Nombre'); | ||
77 | return; | ||
78 | } else if (!$scope.cliente.CPO) { | ||
79 | focaModalService.alert('Ingrese Codigo Postal'); | ||
80 | return; | ||
81 | } else if (!$scope.cliente.provincia.NOMBRE) { | ||
82 | focaModalService.alert('Seleccione una provincia'); | ||
83 | return; | ||
84 | } else if (!$scope.cliente.DOM) { | ||
85 | focaModalService.alert('Ingrese Domicilio'); | ||
86 | return; | ||
87 | } else if (!$scope.cliente.localidad.NOMBRE) { | ||
88 | focaModalService.alert('Seleccione una localidad'); | ||
89 | return; | ||
90 | } else if (!$scope.cliente.zona.NOM) { | ||
91 | focaModalService.alert('Seleccione una zona'); | ||
92 | return; | ||
93 | } else if (!$scope.cliente.actividad.NOM) { | ||
94 | focaModalService.alert('Seleccione actividad'); | ||
95 | return; | ||
96 | } else if (!$scope.cliente.cobrador.NUM) { | ||
97 | focaModalService.alert('Seleccione un cobrador'); | ||
98 | return; | ||
99 | } else if (!$scope.vendedor.NOM) { | ||
100 | focaModalService.alert('Seleccione un vendedor'); | ||
101 | return; | ||
102 | } else if ($scope.cliente.MAIL && !validateEmails($scope.cliente.MAIL)) { | ||
103 | focaModalService.alert('Ingrese un formato de email válido'); | ||
104 | return; | ||
105 | } else if (!$scope.cliente.TEL) { | ||
106 | focaModalService.alert('Ingrese un numero de telefono'); | ||
107 | return; | ||
108 | } else if (!$scope.cliente.iva.NOMBRE) { | ||
109 | focaModalService.alert('Seleccione responsabilidad ante el IVA'); | ||
110 | return; | ||
111 | } else if (!$scope.cliente.tipoFactura.NOMBRE) { | ||
112 | focaModalService.alert('Seleccione tipo de Factura'); | ||
113 | return; | ||
114 | } else if (!$scope.cliente.cuit1 && !$scope.cliente.cuit2 && !$scope.cliente.cuit3) { | ||
115 | focaModalService.alert('Ingrese CUIT'); | ||
116 | return; | ||
117 | } else if (!$scope.cliente.cuit1 || !$scope.cliente.cuit2 || !$scope.cliente.cuit3) { | ||
118 | focaModalService.alert('Ingrese CUIT válido'); | ||
119 | return; | ||
120 | } else if (!$scope.regexCuit.test($scope.cliente.cuit1 + $scope.cliente.cuit2 + $scope.cliente.cuit3)) { | ||
121 | focaModalService.alert('Ingrese CUIT con formato: XX-XXXXXXXX-X'); | ||
122 | return; | ||
123 | } else if (!$scope.cliente.tipoComprobante.NOMBRE) { | ||
124 | focaModalService.alert('Seleccione un Comprobante'); | ||
125 | return; | ||
126 | } else if (!$scope.cliente.formaPago.NOMBRE) { | ||
127 | focaModalService.alert('Seleccione una forma de pago'); | ||
128 | return; | ||
129 | } | ||
130 | |||
131 | $scope.cliente.actividad.ID = parseInt($scope.cliente.actividad.ID); | ||
132 | |||
133 | var cliente = crearCopia(); | ||
134 | |||
135 | focaAbmClienteService | ||
136 | .guardarCliente(cliente) | ||
137 | .then(function () { | ||
138 | $uibModalInstance.close(cliente); | ||
139 | }) | ||
140 | .catch(function (e) { | ||
141 | console.log(e); | ||
142 | }); | ||
143 | }; | ||
144 | $scope.seleccionarProvincia = function (key) { | ||
145 | if (key === 13) { | ||
146 | var parametrosModal = { | ||
147 | searchText: $scope.cliente.provincia.NOMBRE, | ||
148 | query: '/provincia', | ||
149 | columnas: [ | ||
150 | { | ||
151 | propiedad: 'ID', | ||
152 | nombre: 'Codigo', | ||
153 | filtro: { | ||
154 | nombre: 'rellenarDigitos', | ||
155 | parametro: 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | propiedad: 'NOMBRE', | ||
160 | nombre: 'Nombre' | ||
161 | } | ||
162 | ], | ||
163 | titulo: 'Búsqueda de provincias', | ||
164 | size: 'md' | ||
165 | }; | ||
166 | focaModalService.modal(parametrosModal).then(function (provincia) { | ||
167 | $scope.cliente.provincia = provincia; | ||
168 | $timeout(function () { | ||
169 | $scope.focused = 4; | ||
170 | }); | ||
171 | }, function () { | ||
172 | //TODO: función llamada cuando cancela el modal | ||
173 | }); | ||
174 | } | ||
175 | }; | ||
176 | $scope.seleccionarLocalidad = function (key) { | ||
177 | if ($scope.cliente.provincia.ID === undefined) { | ||
178 | focaModalService.alert('Seleccione una provincia'); | ||
179 | return; | ||
180 | } | ||
181 | if (key === 13) { | ||
182 | var parametrosModal = { | ||
183 | searchText: $scope.cliente.localidad.NOMBRE, | ||
184 | query: '/localidad/' + parseInt($scope.cliente.provincia.ID), | ||
185 | columnas: [ | ||
186 | { | ||
187 | propiedad: 'ID', | ||
188 | nombre: 'Código', | ||
189 | }, | ||
190 | { | ||
191 | propiedad: 'NOMBRE', | ||
192 | nombre: 'Nombre' | ||
193 | } | ||
194 | ], | ||
195 | titulo: 'Búsqueda de localidades', | ||
196 | size: 'md' | ||
197 | }; | ||
198 | focaModalService.modal(parametrosModal).then(function (localidad) { | ||
199 | $scope.cliente.localidad = localidad; | ||
200 | $timeout(function () { | ||
201 | $scope.focused = 5; | ||
202 | }); | ||
203 | }, function () { | ||
204 | //TODO: función llamada cuando cancela el modal | ||
205 | }); | ||
206 | } | ||
207 | }; | ||
208 | $scope.seleccionarZona = function (key) { | ||
209 | if (key === 13) { | ||
210 | var parametrosModal = { | ||
211 | searchText: $scope.cliente.zona.NOM, | ||
212 | query: '/zona', | ||
213 | columnas: [ | ||
214 | { | ||
215 | propiedad: 'ID', | ||
216 | nombre: 'Código', | ||
217 | filtro: { | ||
218 | nombre: 'rellenarDigitos', | ||
219 | parametro: 3 | ||
220 | } | ||
221 | }, | ||
222 | { | ||
223 | propiedad: 'NOM', | ||
224 | nombre: 'Nombre' | ||
225 | } | ||
226 | ], | ||
227 | titulo: 'Búsqueda de zonas', | ||
228 | size: 'md' | ||
229 | }; | ||
230 | focaModalService.modal(parametrosModal).then( | ||
231 | function (zona) { | ||
232 | $scope.cliente.zona = zona; | ||
233 | $timeout(function () { | ||
234 | $scope.focused = 6; | ||
235 | }); | ||
236 | }, function () { | ||
237 | // funcion ejecutada cuando se cancela el modal | ||
238 | }); | ||
239 | } | ||
240 | }; | ||
241 | $scope.seleccionarActividad = function (key) { | ||
242 | if (key === 13) { | ||
243 | var parametrosModal = { | ||
244 | searchText: $scope.cliente.actividad.NOM, | ||
245 | query: '/actividad', | ||
246 | columnas: [ | ||
247 | { | ||
248 | propiedad: 'ID', | ||
249 | nombre: 'Código', | ||
250 | filtro: { | ||
251 | nombre: 'rellenarDigitos', | ||
252 | parametro: 3 | ||
253 | } | ||
254 | }, | ||
255 | { | ||
256 | propiedad: 'NOM', | ||
257 | nombre: 'Nombre' | ||
258 | } | ||
259 | ], | ||
260 | titulo: 'Búsqueda de actividades', | ||
261 | size: 'md' | ||
262 | }; | ||
263 | focaModalService.modal(parametrosModal).then( | ||
264 | function (actividad) { | ||
265 | $scope.cliente.actividad = actividad; | ||
266 | $timeout(function () { | ||
267 | $scope.focused = 7; | ||
268 | }); | ||
269 | }, function () { | ||
270 | // funcion ejecutada cuando se cancela el modal | ||
271 | }); | ||
272 | } | ||
273 | }; | ||
274 | $scope.seleccionarCobrador = function (key) { | ||
275 | if (key === 13) { | ||
276 | var parametrosModal = { | ||
277 | searchText: $scope.cliente.cobrador.NOM, | ||
278 | query: '/cobrador', | ||
279 | columnas: [ | ||
280 | { | ||
281 | propiedad: 'NUM', | ||
282 | nombre: 'Código' | ||
283 | }, | ||
284 | { | ||
285 | propiedad: 'NOM', | ||
286 | nombre: 'Nombre' | ||
287 | } | ||
288 | ], | ||
289 | titulo: 'Búsqueda de cobradores', | ||
290 | size: 'md' | ||
291 | }; | ||
292 | focaModalService.modal(parametrosModal).then( | ||
293 | function (cobrador) { | ||
294 | $scope.cliente.cobrador = cobrador; | ||
295 | }, function () { | ||
296 | // funcion ejecutada cuando se cancela el modal | ||
297 | }); | ||
298 | } | ||
299 | }; | ||
300 | $scope.seleccionarVendedor = function (key) { | ||
301 | if (key === 13) { | ||
302 | var parametrosModal = { | ||
303 | titulo: 'Búsqueda vendedores', | ||
304 | query: '/vendedor', | ||
305 | columnas: [ | ||
306 | { | ||
307 | propiedad: 'NUM', | ||
308 | nombre: 'Código', | ||
309 | filtro: { | ||
310 | nombre: 'rellenarDigitos', | ||
311 | parametro: 3 | ||
312 | } | ||
313 | }, | ||
314 | { | ||
315 | propiedad: 'NOM', | ||
316 | nombre: 'Nombre' | ||
317 | } | ||
318 | ], | ||
319 | size: 'md' | ||
320 | }; | ||
321 | focaModalService.modal(parametrosModal).then( | ||
322 | function (vendedor) { | ||
323 | console.log("vendedor seleccionado => ", vendedor); | ||
324 | $scope.vendedor = vendedor; | ||
325 | }, function () { | ||
326 | // funcion ejecutada cuando se cancela el modal | ||
327 | }); | ||
328 | } | ||
329 | }; | ||
330 | $scope.seleccionarIva = function (key) { | ||
331 | if (key === 13) { | ||
332 | var parametrosModal = { | ||
333 | query: '/iva', | ||
334 | searchText: $scope.cliente.iva.NOMBRE, | ||
335 | columnas: [ | ||
336 | { | ||
337 | propiedad: 'ID', | ||
338 | nombre: 'Código', | ||
339 | filtro: { | ||
340 | nombre: 'rellenarDigitos', | ||
341 | parametro: 3 | ||
342 | } | ||
343 | }, | ||
344 | { | ||
345 | propiedad: 'NOMBRE', | ||
346 | nombre: 'Nombre' | ||
347 | } | ||
348 | ], | ||
349 | titulo: 'Búsqueda de responsabilidad ante el IVA', | ||
350 | size: 'md' | ||
351 | }; | ||
352 | focaModalService.modal(parametrosModal).then( | ||
353 | function (iva) { | ||
354 | if (iva) { | ||
355 | delete $scope.cliente.tipoFactura.NOMBRE; | ||
356 | } | ||
357 | $scope.cliente.iva = iva; | ||
358 | $timeout(function () { | ||
359 | $scope.focused = 12; | ||
360 | }); | ||
361 | }, function () { | ||
362 | // funcion ejecutada cuando se cancela el modal | ||
363 | }); | ||
364 | } | ||
365 | }; | ||
366 | $scope.seleccionarTipoFactura = function (key) { | ||
367 | |||
368 | if ($scope.cliente.iva.NOMBRE == '') { | ||
369 | focaModalService.alert('Seleccione una responsabilidad ante el IVA'); | ||
370 | return; | ||
371 | } | ||
372 | |||
373 | if (key === 13) { | ||
374 | var datos; | ||
375 | if ($scope.cliente.iva.ID == 1) { | ||
376 | datos = [ | ||
377 | { | ||
378 | ID: 'A', | ||
379 | NOMBRE: 'Factura A' | ||
380 | }, | ||
381 | { | ||
382 | ID: 'M', | ||
383 | NOMBRE: 'Factura M' | ||
384 | }, | ||
385 | { | ||
386 | ID: 'R', | ||
387 | NOMBRE: 'Remito' | ||
388 | } | ||
389 | ]; | ||
390 | } else { | ||
391 | datos = [ | ||
392 | { | ||
393 | ID: 'B', | ||
394 | NOMBRE: 'Factura B' | ||
395 | }, | ||
396 | { | ||
397 | ID: 'R', | ||
398 | NOMBRE: 'Remito' | ||
399 | } | ||
400 | ]; | ||
401 | } | ||
402 | focaModalService.modal({ | ||
403 | titulo: 'Seleccionar Factura', | ||
404 | data: datos, | ||
405 | size: 'md', | ||
406 | columnas: [ | ||
407 | { | ||
408 | propiedad: 'ID', | ||
409 | NOMBRE: 'Codigo' | ||
410 | }, | ||
411 | { | ||
412 | propiedad: 'NOMBRE', | ||
413 | NOMBRE: 'Factura' | ||
414 | } | ||
415 | ], | ||
416 | }).then(function (res) { | ||
417 | $scope.cliente.tipoFactura = res; | ||
418 | }); | ||
419 | } | ||
420 | }; | ||
421 | $scope.pasarCampoCuit = function (numeroCuit) { | ||
422 | if (numeroCuit === 1 && $scope.cliente.cuit1.length === 2) { | ||
423 | $scope.cuitActivo = 2; | ||
424 | } else if (numeroCuit === 2 && $scope.cliente.cuit2.length === 8) { | ||
425 | $scope.cuitActivo = 3; | ||
426 | } | ||
427 | }; | ||
428 | $scope.seleccionarTipoComprobante = function (key) { | ||
429 | if (key === 13) { | ||
430 | var parametrosModal = { | ||
431 | searchText: $scope.cliente.tipoComprobante.NOMBRE, | ||
432 | query: '/tipo-comprobante', | ||
433 | columnas: [ | ||
434 | { | ||
435 | propiedad: 'ID', | ||
436 | nombre: 'Código' | ||
437 | }, | ||
438 | { | ||
439 | propiedad: 'NOMBRE', | ||
440 | nombre: 'Nombre' | ||
441 | } | ||
442 | ], | ||
443 | titulo: 'Búsqueda de tipos de comprobante', | ||
444 | size: 'md' | ||
445 | }; | ||
446 | focaModalService.modal(parametrosModal).then( | ||
447 | function (tipoComprobante) { | ||
448 | $scope.cliente.tipoComprobante = tipoComprobante; | ||
449 | $timeout(function () { | ||
450 | $scope.focused = 17; | ||
451 | }); | ||
452 | }, function () { | ||
453 | // funcion ejecutada cuando se cancela el modal | ||
454 | }); | ||
455 | } | ||
456 | }; | ||
457 | $scope.seleccionarFormaPago = function (key) { | ||
458 | if (key === 13) { | ||
459 | var parametrosModal = { | ||
460 | searchText: $scope.cliente.formaPago.NOMBRE, | ||
461 | query: '/forma-pago', | ||
462 | columnas: [ | ||
463 | { | ||
464 | propiedad: 'ID', | ||
465 | nombre: 'Código', | ||
466 | filtro: { | ||
467 | nombre: 'rellenarDigitos', | ||
468 | parametro: 3 | ||
469 | } | ||
470 | }, | ||
471 | { | ||
472 | propiedad: 'NOMBRE', | ||
473 | nombre: 'Nombre' | ||
474 | } | ||
475 | ], | ||
476 | titulo: 'Búsqueda de formas de pago', | ||
477 | size: 'md' | ||
478 | }; | ||
479 | focaModalService.modal(parametrosModal).then( | ||
480 | function (formaPago) { | ||
481 | $scope.cliente.formaPago = formaPago; | ||
482 | }, function () { | ||
483 | // funcion ejecutada cuando se cancela el modal | ||
484 | }); | ||
485 | } | ||
486 | }; | ||
487 | |||
488 | function crearCopia() { | ||
489 | var cliente = angular.copy($scope.cliente); | ||
490 | cliente.COD = cliente.codigo; | ||
491 | cliente.CPO = cliente.CPO; | ||
492 | cliente.PCX = parseInt(cliente.provincia.ID); | ||
493 | cliente.LOX = parseInt(cliente.localidad.ID); | ||
494 | cliente.LOC = cliente.localidad.NOMBRE; | ||
495 | cliente.PCI = cliente.provincia.NOMBRE; | ||
496 | cliente.IVA = cliente.iva.ID; | ||
497 | cliente.ACT = cliente.actividad.ID; | ||
498 | cliente.ZON = (parseInt(cliente.zona.ID)).toString(); | ||
499 | cliente.TIP = cliente.tipoFactura.ID; | ||
500 | cliente.TCO = cliente.tipoComprobante.ID; | ||
501 | cliente.FPA = cliente.formaPago.ID; | ||
502 | cliente.VEN = $scope.vendedor.id; | ||
503 | cliente.CUIT = `${cliente.cuit1}-${cliente.cuit2}-${cliente.cuit3}`; | ||
504 | cliente.idCobrador = cliente.cobrador.ID; | ||
505 | |||
506 | delete cliente.codigo; | ||
507 | delete cliente.provincia; | ||
508 | delete cliente.localidad; | ||
509 | delete cliente.iva; | ||
510 | delete cliente.actividad; | ||
511 | delete cliente.zona; | ||
512 | delete cliente.tipoFactura; | ||
513 | delete cliente.tipoComprobante; | ||
514 | delete cliente.formaPago; | ||
515 | delete cliente.cobrador; | ||
516 | delete cliente.cuit1; | ||
517 | delete cliente.cuit2; | ||
518 | delete cliente.cuit3; | ||
519 | delete cliente.vendedor; | ||
520 | |||
521 | return cliente; | ||
522 | } | ||
523 | function validateEmails(emails) { | ||
524 | var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; | ||
525 | var arr = emails.split(','); | ||
526 | var result = true; | ||
527 | arr.forEach(function (email) { | ||
528 | var val = String(email).trim().toLowerCase(); | ||
529 | if (!re.test(val)) result = false; | ||
530 | }); | ||
531 | return result; | ||
532 | } | ||
533 | |||
534 | }]); |
src/js/service.js
1 | angular.module('focaAbmCliente') | 1 | angular.module('focaAbmCliente') |
2 | .factory('focaAbmCliente', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) { | 2 | .factory('focaAbmClienteService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) { |
3 | return { | 3 | return { |
4 | 4 | getAllClientes: function () { | |
5 | return $http.get(API_ENDPOINT.URL + '/cliente'); | ||
6 | }, | ||
7 | obtenerClientePorCodigo: function (cod) { | ||
8 | return $http.get(API_ENDPOINT.URL + '/cliente-codigo/' + cod ); | ||
9 | }, | ||
10 | guardarCliente: function (cliente) { | ||
11 | return $http.post(API_ENDPOINT.URL + '/cliente', { cliente: cliente }); | ||
12 | } | ||
5 | }; | 13 | }; |
6 | }]); | 14 | }]); |
7 | 15 |
src/views/foca-abm-cliente.html
1 | <div class="row"> | 1 | <div class="row"> |
2 | <foca-cabecera-facturador | 2 | <foca-cabecera-facturador |
3 | titulo="'Cliente'" | 3 | titulo="'Cliente'" |
4 | fecha="now" | 4 | fecha="now" |
5 | class="mb-0 col-lg-12" | 5 | class="mb-0 col-lg-12" |
6 | ></foca-cabecera-facturador> | 6 | ></foca-cabecera-facturador> |
7 | </div> | 7 | </div> |
8 | <div class="row"> | 8 | <div class="row"> |
9 | <div class="col-12 col-md-10 p-0 mt-4 border border-white rounded"> | 9 | <div class="col-12 col-md-10 p-0 mt-4 border border-white rounded"> |
10 | <div class="row px-5 py-2 botonera-secundaria"> | 10 | <div class="row px-5 py-2 botonera-secundaria"> |
11 | <div class="col-12"> | 11 | <div class="col-12"> |
12 | <foca-botonera-facturador | ||
13 | botones="botonCliente" | ||
14 | max="1" | ||
15 | class="row" | ||
16 | > | ||
17 | </foca-botonera-facturador> | ||
18 | </div> | ||
19 | </div> | ||
20 | <div class="col-12 col-md-12 p-0 border border-white rounded"> | ||
21 | <div class="row px-5 py-2 botonera-secundaria"> | ||
22 | <div class="col-12"> | ||
12 | <foca-botonera-facturador botones="botonera" max="6" class="row"></foca-botonera-facturador> | 23 | <foca-botonera-facturador botones="botonera" max="6" class="row"></foca-botonera-facturador> |
13 | </div> | 24 | </div> |
14 | </div> | 25 | </div> |
15 | </div> | 26 | </div> |
16 | </div> | 27 | </div> |
17 |
src/views/foca-modal-cliente.html
File was created | 1 | <div class="modal-header py-1"> | |
2 | <div class="row w-100"> | ||
3 | <div class="col-lg-4 col-7"> | ||
4 | <h5 class="modal-title my-1">Editar Cliente</h5> | ||
5 | </div> | ||
6 | <div class="col-lg-6 col-5 front-index"> | ||
7 | <div class="custom-control custom-checkbox mt-2"> | ||
8 | <input | ||
9 | type="checkbox" | ||
10 | class="custom-control-input" | ||
11 | id="checkProspecto" | ||
12 | ng-model="cliente.ES_PROS"> | ||
13 | <label class="custom-control-label" for="checkProspecto">¿Es prospecto?</label> | ||
14 | </div> | ||
15 | </div> | ||
16 | </div> | ||
17 | </div> | ||
18 | <div class="modal-body" id="modal-body"> | ||
19 | <form name="formCliente"> | ||
20 | <fieldset> | ||
21 | <uib-tabset class="tabs-right"> | ||
22 | <uib-tab heading="Datos cliente"> | ||
23 | <div class="row"> | ||
24 | <div class="col-3 mt-2"> | ||
25 | <label>Código</label> | ||
26 | <input | ||
27 | type="text" | ||
28 | class="form-control form-control-sm" | ||
29 | ng-model="cliente.codigo" | ||
30 | readonly | ||
31 | /> | ||
32 | </div> | ||
33 | <div class="col-9 mt-2"> | ||
34 | <label>Nombre</label> | ||
35 | <input | ||
36 | type="text" | ||
37 | class="form-control form-control-sm" | ||
38 | ng-model="cliente.NOM" | ||
39 | teclado-virtual | ||
40 | placeholder="Ingrese nombre" | ||
41 | ng-required="true" | ||
42 | foca-focus="focused == 1" | ||
43 | ng-focus="focus(1)" | ||
44 | ng-keypress="next($event.keyCode)" | ||
45 | /> | ||
46 | </div> | ||
47 | </div> | ||
48 | <div class="row"> | ||
49 | <div class="col-md-9 col-12 mt-2"> | ||
50 | <label>Domicilio</label> | ||
51 | <input | ||
52 | type="text" | ||
53 | class="form-control form-control-sm" | ||
54 | ng-model="cliente.DOM" | ||
55 | teclado-virtual | ||
56 | placeholder="Ingrese domicilio" | ||
57 | ng-required="true" | ||
58 | ng-focus="focus(2)" | ||
59 | foca-focus="focused == 2" | ||
60 | ng-keypress="next($event.keyCode)" | ||
61 | /> | ||
62 | </div> | ||
63 | <div class="col-md-3 col-12 mt-2"> | ||
64 | <label>Código postal</label> | ||
65 | <input | ||
66 | type="text" | ||
67 | class="form-control form-control-sm" | ||
68 | ng-model="cliente.CPO" | ||
69 | placeholder="Ingrese CP" | ||
70 | ng-required="true" | ||
71 | ng-focus="focus(3)" | ||
72 | foca-focus="focused == 3" | ||
73 | ng-keypress="next($event.keyCode)" | ||
74 | teclado-virtual | ||
75 | /> | ||
76 | </div> | ||
77 | </div> | ||
78 | <div class="row"> | ||
79 | <div class="col-md-6 col-12 mt-2"> | ||
80 | <label>Provincia</label> | ||
81 | <div class="input-group"> | ||
82 | <input | ||
83 | type="text" | ||
84 | class="form-control form-control-sm" | ||
85 | ng-model="cliente.provincia.NOMBRE" | ||
86 | ng-keypress="seleccionarProvincia($event.keyCode)" | ||
87 | placeholder="Seleccione provincia" | ||
88 | ng-required="true" | ||
89 | ng-focus="focus(4)" | ||
90 | foca-focus="focused == 4" | ||
91 | teclado-virtual | ||
92 | /> | ||
93 | <button | ||
94 | ng-show="cliente.provincia.NOMBRE !== ''" | ||
95 | type="button" | ||
96 | class="clear-input" | ||
97 | ng-click= | ||
98 | "cliente.provincia.NOMBRE = ''; | ||
99 | cliente.provincia.ID = undefined" | ||
100 | ><i class="fa fa-times"></i> | ||
101 | </button> | ||
102 | <div class="input-group-append"> | ||
103 | <button | ||
104 | ladda="searchLoading" | ||
105 | class="btn btn-outline-secondary" | ||
106 | type="button" | ||
107 | ng-click="seleccionarProvincia(13)" | ||
108 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
109 | </button> | ||
110 | </div> | ||
111 | </div> | ||
112 | </div> | ||
113 | <div class="col-md-6 col-12 mt-2"> | ||
114 | <label>Localidad</label> | ||
115 | <div class="input-group"> | ||
116 | <input | ||
117 | type="text" | ||
118 | class="form-control form-control-sm" | ||
119 | ng-model="cliente.localidad.NOMBRE" | ||
120 | ng-keypress="seleccionarLocalidad($event.keyCode)" | ||
121 | placeholder="Seleccione localidad" | ||
122 | ng-required="true" | ||
123 | foca-focus="focused == 5" | ||
124 | ng-focus="focus(5)" | ||
125 | teclado-virtual | ||
126 | /> | ||
127 | <button | ||
128 | ng-show="cliente.localidad.NOMBRE !== ''" | ||
129 | type="button" | ||
130 | class="clear-input" | ||
131 | ng-click="cliente.localidad.NOMBRE = ''" | ||
132 | ><i class="fa fa-times"></i> | ||
133 | </button> | ||
134 | <div class="input-group-append"> | ||
135 | <button | ||
136 | ladda="searchLoading" | ||
137 | class="btn btn-outline-secondary" | ||
138 | type="button" | ||
139 | ng-click="seleccionarLocalidad(13)" | ||
140 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
141 | </button> | ||
142 | </div> | ||
143 | </div> | ||
144 | </div> | ||
145 | </div> | ||
146 | <div class="row"> | ||
147 | <div class="col-md-6 col-12 mt-2"> | ||
148 | <label>Zona</label> | ||
149 | <div class="input-group"> | ||
150 | <input | ||
151 | type="text" | ||
152 | class="form-control form-control-sm" | ||
153 | ng-model="cliente.zona.NOM" | ||
154 | ng-keypress="seleccionarZona($event.keyCode)" | ||
155 | placeholder="Seleccione zona" | ||
156 | ng-required="true" | ||
157 | ng-focus="focus(6)" | ||
158 | foca-focus="focused == 6" | ||
159 | teclado-virtual | ||
160 | /> | ||
161 | <button | ||
162 | ng-show="cliente.zona.NOM !== ''" | ||
163 | type="button" | ||
164 | class="clear-input" | ||
165 | ng-click="cliente.zona.NOM = ''" | ||
166 | ><i class="fa fa-times"></i> | ||
167 | </button> | ||
168 | <div class="input-group-append"> | ||
169 | <button | ||
170 | ladda="searchLoading" | ||
171 | class="btn btn-outline-secondary" | ||
172 | type="button" | ||
173 | ng-click="seleccionarZona(13)" | ||
174 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
175 | </button> | ||
176 | </div> | ||
177 | </div> | ||
178 | </div> | ||
179 | <div class="col-md-6 col-12 mt-2"> | ||
180 | <label> Actividad </label> | ||
181 | <div class="input-group"> | ||
182 | <input | ||
183 | type="text" | ||
184 | class="form-control form-control-sm" | ||
185 | ng-model="cliente.actividad.NOM" | ||
186 | ng-keypress="seleccionarActividad($event.keyCode)" | ||
187 | placeholder="Seleccione actividad" | ||
188 | ng-required="true" | ||
189 | ng-focus="focus(7)" | ||
190 | foca-focus="focused == 7" | ||
191 | teclado-virtual | ||
192 | /> | ||
193 | <button | ||
194 | ng-show="cliente.actividad.NOM !== ''" | ||
195 | type="button" | ||
196 | class="clear-input" | ||
197 | ng-click="cliente.actividad.NOM = ''" | ||
198 | ><i class="fa fa-times"></i> | ||
199 | </button> | ||
200 | <div class="input-group-append"> | ||
201 | <button | ||
202 | ladda="searchLoading" | ||
203 | class="btn btn-outline-secondary" | ||
204 | type="button" | ||
205 | ng-click="seleccionarActividad(13)" | ||
206 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
207 | </button> | ||
208 | </div> | ||
209 | </div> | ||
210 | </div> | ||
211 | </div> | ||
212 | <div class="row"> | ||
213 | <div class="col-md-6 col-12 mt-2"> | ||
214 | <label>Cobrador</label> | ||
215 | <div class="input-group"> | ||
216 | <input | ||
217 | type="text" | ||
218 | class="form-control form-control-sm" | ||
219 | ng-model="cliente.cobrador.NOM" | ||
220 | ng-keypress="seleccionarCobrador($event.keyCode)" | ||
221 | placeholder="Seleccione cobrador" | ||
222 | ng-focus="focus(8)" | ||
223 | foca-focus="focused == 8" | ||
224 | teclado-virtual | ||
225 | /> | ||
226 | <button | ||
227 | ng-show="cliente.cobrador.NOM !== ''" | ||
228 | type="button" | ||
229 | class="clear-input" | ||
230 | ng-click="cliente.cobrador.NOM = ''" | ||
231 | ><i class="fa fa-times"></i> | ||
232 | </button> | ||
233 | <div class="input-group-append"> | ||
234 | <button | ||
235 | ladda="searchLoading" | ||
236 | class="btn btn-outline-secondary" | ||
237 | type="button" | ||
238 | ng-click="seleccionarCobrador(13)" | ||
239 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
240 | </button> | ||
241 | </div> | ||
242 | </div> | ||
243 | </div> | ||
244 | <div class="col-md-6 col-12 mt-2"> | ||
245 | <label>Vendedor</label> | ||
246 | <div class="input-group"> | ||
247 | <input | ||
248 | type="text" | ||
249 | class="form-control form-control-sm" | ||
250 | ng-model="vendedor.NOM" | ||
251 | ng-keypress="seleccionarVendedor($event.keyCode)" | ||
252 | placeholder="Seleccione vendedor" | ||
253 | ng-focus="focus(9)" | ||
254 | foca-focus="focused == 9" | ||
255 | teclado-virtual | ||
256 | /> | ||
257 | <button | ||
258 | ng-show="vendedor.NOM !== ''" | ||
259 | type="button" | ||
260 | class="clear-input" | ||
261 | ng-click="vendedor.NOM = ''" | ||
262 | ><i class="fa fa-times"></i> | ||
263 | </button> | ||
264 | <div class="input-group-append"> | ||
265 | <button | ||
266 | ladda="searchLoading" | ||
267 | class="btn btn-outline-secondary" | ||
268 | type="button" | ||
269 | ng-click="seleccionarVendedor(13)" | ||
270 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
271 | </button> | ||
272 | </div> | ||
273 | </div> | ||
274 | </div> | ||
275 | <div class="col-md-6 col-12 mt-2"> | ||
276 | <label>Email</label> | ||
277 | <div class="input-group"> | ||
278 | <input | ||
279 | type="text" | ||
280 | class="form-control form-control-sm" | ||
281 | placeholder="Ingrese Email" | ||
282 | ng-model="cliente.MAIL" | ||
283 | ng-required="true" | ||
284 | ng-keypress="next($event.keyCode)" | ||
285 | ng-focus="focus(10)" | ||
286 | foca-focus="focused == 10" | ||
287 | teclado-virtual> | ||
288 | </div> | ||
289 | </div> | ||
290 | <div class="col-md-6 col-12 mt-2"> | ||
291 | <label>Telefono</label> | ||
292 | <div class="input-group"> | ||
293 | <input | ||
294 | foca-tipo-input | ||
295 | limite-numeros-max="20" | ||
296 | class="form-control form-control-sm" | ||
297 | placeholder="Ingrese Telefono" | ||
298 | ng-model="cliente.TEL" | ||
299 | ng-required="true" | ||
300 | ng-keypress="next($event.keyCode)" | ||
301 | ng-focus="focus(11)" | ||
302 | foca-focus="focused == 11" | ||
303 | teclado-virtual> | ||
304 | </div> | ||
305 | </div> | ||
306 | </div> | ||
307 | <div class="row"> | ||
308 | <div class="col-6 d-flex mt-3"> | ||
309 | <div class="custom-control custom-checkbox mt-auto"> | ||
310 | <input | ||
311 | type="checkbox" | ||
312 | class="custom-control-input" | ||
313 | id="checkDistribuidor" | ||
314 | ng-model="cliente.ES_MAY" | ||
315 | checked | ||
316 | disabled="disabled"> | ||
317 | <label class="custom-control-label" for="checkDistribuidor">¿Este cliente es distribuidor?</label> | ||
318 | </div> | ||
319 | </div> | ||
320 | </div> | ||
321 | </uib-tab> | ||
322 | <uib-tab heading="Datos impositivos"> | ||
323 | <div class="row"> | ||
324 | <div class="col-md-7 col-12 mt-2"> | ||
325 | <label>Responsabilidad ante el IVA</label> | ||
326 | <div class="input-group"> | ||
327 | <input | ||
328 | type="text" | ||
329 | class="form-control form-control-sm" | ||
330 | placeholder="Seleccione responsabilidad ante el IVA" | ||
331 | ng-model="cliente.iva.NOMBRE" | ||
332 | ng-keypress="seleccionarIva($event.keyCode)" | ||
333 | ng-required="true" | ||
334 | ng-focus="focus(12)" | ||
335 | foca-focus="focused == 12" | ||
336 | teclado-virtual | ||
337 | /> | ||
338 | <button | ||
339 | ng-show="cliente.iva.NOMBRE !== ''" | ||
340 | type="button" | ||
341 | class="clear-input" | ||
342 | ng-click="cliente.iva.NOMBRE = ''" | ||
343 | ><i class="fa fa-times"></i> | ||
344 | </button> | ||
345 | <div class="input-group-append"> | ||
346 | <button | ||
347 | ladda="searchLoading" | ||
348 | class="btn btn-outline-secondary" | ||
349 | type="button" | ||
350 | ng-click="seleccionarIva(13)" | ||
351 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
352 | </button> | ||
353 | </div> | ||
354 | </div> | ||
355 | </div> | ||
356 | <div class="col-md-5 col-12 mt-2"> | ||
357 | <label>Factura que emite</label> | ||
358 | <div class="input-group"> | ||
359 | <input | ||
360 | type="text" | ||
361 | class="form-control form-control-sm" | ||
362 | placeholder="Seleccione factura que emite" | ||
363 | ng-model="cliente.tipoFactura.NOMBRE" | ||
364 | ng-required="true" | ||
365 | ng-keypress="seleccionarTipoFactura(13)" | ||
366 | ng-focus="focus(13)" | ||
367 | foca-focus="focused == 13" | ||
368 | teclado-virtual> | ||
369 | <button | ||
370 | ng-show="cliente.tipoFactura.NOMBRE !== ''" | ||
371 | type="button" | ||
372 | class="clear-input" | ||
373 | ng-click="cliente.tipoFactura.NOMBRE = ''" | ||
374 | ><i class="fa fa-times"></i> | ||
375 | </button> | ||
376 | <div class="input-group-append"> | ||
377 | <button | ||
378 | ladda="searchLoading" | ||
379 | class="btn btn-outline-secondary" | ||
380 | type="button" | ||
381 | ng-click="seleccionarTipoFactura(13)" | ||
382 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
383 | </button> | ||
384 | </div> | ||
385 | </div> | ||
386 | </div> | ||
387 | </div> | ||
388 | <div class="row"> | ||
389 | <div class= "col-md-4 col-12 mt-2"> | ||
390 | <label>CUIT</label> | ||
391 | <div class="d-flex"> | ||
392 | <input | ||
393 | type="text" | ||
394 | class="text-center form-control form-control-sm col-2" | ||
395 | limite-numeros-max="2" | ||
396 | ng-model="cliente.cuit1" | ||
397 | ng-required="true" | ||
398 | ng-keypress="pasarCampoCuit(1)" | ||
399 | ng-focus="focus(14)" | ||
400 | foca-focus="focused == 14" | ||
401 | teclado-virtual | ||
402 | foca-tipo-input | ||
403 | > | ||
404 | <span class="m-1"> - </span> | ||
405 | <input | ||
406 | type="text" | ||
407 | class="text-center form-control form-control-sm col-5" | ||
408 | maxlength="8" | ||
409 | limite-numeros-max="8" | ||
410 | ng-keypress="pasarCampoCuit(2)" | ||
411 | ng-model="cliente.cuit2" | ||
412 | ng-required="true" | ||
413 | ng-focus="focus(15)" | ||
414 | foca-focus="cuitActivo == 2 || focused == 15" | ||
415 | teclado-virtual | ||
416 | foca-tipo-input | ||
417 | > | ||
418 | <span class="m-1"> - </span> | ||
419 | <input | ||
420 | type="text" | ||
421 | class="text-center form-control form-control-sm col-2" | ||
422 | maxlength="1" | ||
423 | limite-numeros-max="1" | ||
424 | ng-keypress="pasarCampoCuit(3)" | ||
425 | ng-model="cliente.cuit3" | ||
426 | ng-required="true" | ||
427 | ng-focus="focus(16)" | ||
428 | foca-focus="cuitActivo == 3 || focused == 16" | ||
429 | teclado-virtual | ||
430 | foca-tipo-input | ||
431 | > | ||
432 | </div> | ||
433 | </div> | ||
434 | <div class="col-md-4 col-12 mt-2"> | ||
435 | <label>Clase de comprobante</label> | ||
436 | <div class="input-group"> | ||
437 | <input | ||
438 | type="text" | ||
439 | class="form-control form-control-sm" | ||
440 | placeholder="Seleccione clase de comprobante" | ||
441 | ng-keypress="seleccionarTipoComprobante($event.keyCode)" | ||
442 | ng-model="cliente.tipoComprobante.NOMBRE" | ||
443 | ng-required="true" | ||
444 | ng-focus="focus(17)" | ||
445 | foca-focus="focused == 17" | ||
446 | teclado-virtual> | ||
447 | <button | ||
448 | ng-show="cliente.tipoComprobante.NOMBRE !== ''" | ||
449 | type="button" | ||
450 | class="clear-input" | ||
451 | ng-click="cliente.tipoComprobante.NOMBRE = ''" | ||
452 | ><i class="fa fa-times"></i> | ||
453 | </button> | ||
454 | <div class="input-group-append"> | ||
455 | <button | ||
456 | ladda="searchLoading" | ||
457 | class="btn btn-outline-secondary" | ||
458 | type="button" | ||
459 | ng-click="seleccionarTipoComprobante(13)" | ||
460 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
461 | </button> | ||
462 | </div> | ||
463 | </div> | ||
464 | </div> | ||
465 | <div class="col-md-4 col-12 mt-2"> | ||
466 | <label>Forma de pago</label> | ||
467 | <div class="input-group"> | ||
468 | <input | ||
469 | type="text" | ||
470 | class="form-control form-control-sm" | ||
471 | placeholder="Seleccione forma de pago" | ||
472 | ng-model="cliente.formaPago.NOMBRE" | ||
473 | ng-required="true" | ||
474 | ng-keypress="seleccionarFormaPago($event.keyCode)" | ||
475 | ng-focus="focus(18)" | ||
476 | foca-focus="focused == 18" | ||
477 | teclado-virtual> | ||
478 | <button | ||
479 | ng-show="cliente.formaPago.NOMBRE !== ''" | ||
480 | type="button" | ||
481 | class="clear-input" | ||
482 | ng-click="cliente.formaPago.NOMBRE = ''" | ||
483 | ><i class="fa fa-times"></i> | ||
484 | </button> | ||
485 | <div class="input-group-append"> | ||
486 | <button | ||
487 | ladda="searchLoading" | ||
488 | class="btn btn-outline-secondary" | ||
489 | type="button" | ||
490 | ng-click="seleccionarFormaPago(13)" | ||
491 | ><i class="fa fa-search" aria-hidden="true"></i> | ||
492 | </button> | ||
493 | </div> | ||
494 | </div> | ||
495 | </div> | ||
496 | </div> | ||
497 | </uib-tab> | ||
498 | </uib-tabset> | ||
499 | </fieldset> | ||
500 | </form> | ||
501 | </div> | ||
502 | <div class="modal-footer py-1"> | ||
503 | <button | ||
504 | class="btn btn-sm btn-secondary" | ||
505 | type="button" | ||
506 | data-dismiss="modal" | ||
507 | ng-click="cancel()">Cancelar | ||
508 | </button> | ||
509 | <button | ||
510 | class="btn btn-sm btn-primary" | ||
511 | type="button" | ||
512 | ng-click="guardar()" | ||
513 | >Guardar | ||
514 | </button> | ||
515 | </div> | ||
516 |