Commit d012bdbe99b90bb4f4e7b6647e7c15ff28096946
Exists in
master
Merge branch 'master' into 'develop'
Master(mpuebla) See merge request !8
Showing
2 changed files
Show diff stats
src/js/controller.js
... | ... | @@ -12,6 +12,7 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
12 | 12 | $scope.tmpCantidad = Number; |
13 | 13 | $scope.tmpPrecio = Number; |
14 | 14 | $scope.botonera = crearFacturaService.getBotonera(); |
15 | + $scope.botoneraProductos = []; | |
15 | 16 | $scope.isNumber = angular.isNumber; |
16 | 17 | $scope.datepickerAbierto = false; |
17 | 18 | $scope.show = false; |
... | ... | @@ -190,7 +191,7 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
190 | 191 | |
191 | 192 | }).catch(function (err) { |
192 | 193 | focaModalService.alert('Hubo un error al guardar la factura'); |
193 | - console.log(err); | |
194 | + console.error(err); | |
194 | 195 | }); |
195 | 196 | |
196 | 197 | }; |
... | ... | @@ -297,7 +298,7 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
297 | 298 | .catch($scope.seleccionarVendedor); |
298 | 299 | }) |
299 | 300 | .catch(function (err) { |
300 | - console.log(err) | |
301 | + console.error(err); | |
301 | 302 | }); |
302 | 303 | |
303 | 304 | }, function () { } |
... | ... | @@ -332,7 +333,7 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
332 | 333 | crearRemitoService.getCotizacionByIdMoneda(1) |
333 | 334 | .then(function (res) { |
334 | 335 | |
335 | - cotizacionPArgentino = res.data[0].cotizaciones[0]; | |
336 | + var cotizacionPArgentino = res.data[0].cotizaciones[0]; | |
336 | 337 | cotizacionPArgentino.moneda = moneda; |
337 | 338 | |
338 | 339 | actualizarCabeceraMoneda(cotizacionPArgentino); |
... | ... | @@ -421,21 +422,99 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
421 | 422 | function getProductosByPlanilla(numeroPlanilla) { |
422 | 423 | |
423 | 424 | crearFacturaService.getProductosByPlanilla(numeroPlanilla).then(function (res) { |
424 | - | |
425 | + $scope.botoneraProductos.length = 0; | |
425 | 426 | res.data.forEach(function (producto) { |
426 | 427 | |
427 | - $scope.botonera.push({ | |
428 | + $scope.botoneraProductos.push({ | |
428 | 429 | label: producto.DetArt, |
429 | - image: 'productos.png' | |
430 | + image: 'buscarProductos.png' | |
430 | 431 | }); |
431 | 432 | |
432 | 433 | |
433 | 434 | crearFuncionesProductos(producto); |
434 | 435 | |
435 | 436 | }); |
437 | + $scope.botoneraProductos.push({ | |
438 | + label: 'Busqueda Productos', | |
439 | + image: 'buscarProductos.png' | |
440 | + }); | |
436 | 441 | }); |
437 | 442 | } |
438 | 443 | |
444 | + $scope.seleccionarBusquedaProductos = function () { | |
445 | + | |
446 | + var modalInstance = $uibModal.open( | |
447 | + { | |
448 | + ariaLabelledBy: 'Busqueda de Productos', | |
449 | + templateUrl: 'modal-busqueda-productos.html', | |
450 | + controller: 'modalBusquedaProductosCtrl', | |
451 | + resolve: { | |
452 | + parametroProducto: { | |
453 | + idLista: null, | |
454 | + cotizacion: $scope.factura.cotizacion.VENDEDOR, | |
455 | + simbolo: $scope.factura.cotizacion.moneda.SIMBOLO, | |
456 | + buscarTodos: true | |
457 | + } | |
458 | + }, | |
459 | + size: 'lg' | |
460 | + } | |
461 | + ); | |
462 | + | |
463 | + modalInstance.result | |
464 | + .then(function (producto) { | |
465 | + | |
466 | + var articulo = { | |
467 | + TIP: $scope.factura.cliente.tipoFactura, | |
468 | + TCO: 'FT', | |
469 | + SUC: parseInt($scope.puntoVenta), | |
470 | + ORD: $scope.articulosFiltro().length + 1, | |
471 | + SEC: producto.sector, | |
472 | + ART: producto.codigo, | |
473 | + RUB: producto.CodRub, | |
474 | + DES: producto.descripcionLarga, | |
475 | + PUN: producto.precio, // TODO | |
476 | + IVA: producto.IMPIVA, // TODO | |
477 | + NET: 0, // TODO | |
478 | + NEX: 0, // TODO | |
479 | + IMI: producto.ImpInt, // TODO | |
480 | + IMI2: producto.ImpInt2, // TODO | |
481 | + IMI3: producto.ImpInt3, // TODO | |
482 | + PUT: producto.PreNet, // TODO | |
483 | + SUR: 0, | |
484 | + PLA: $scope.factura.vendedor.NplVen, | |
485 | + LUG: $scope.factura.vendedor.LugVen, | |
486 | + LEG: $scope.factura.vendedor.CodVen, | |
487 | + TUR: $scope.factura.vendedor.TurVen, | |
488 | + ORDEN_PRECOMPRA: '', | |
489 | + ESC: producto.tipoFactura === 'L' ? 1 : 0, | |
490 | + CMF: 0, | |
491 | + PTA: 0, | |
492 | + IVS: 0, | |
493 | + TIVA: 0, | |
494 | + CON: 0, | |
495 | + SINO: '', | |
496 | + ORD_TRA: 0, | |
497 | + IMP_DESP: 0, | |
498 | + PCD: 0, | |
499 | + RTO: '' | |
500 | + }; | |
501 | + // crearFacturaService.setearDespachoOcupado({ | |
502 | + // surtidor: articulo.SUR, | |
503 | + // producto: articulo.PRO, | |
504 | + // carga: articulo.CAR | |
505 | + // }) | |
506 | + // .then(function () { | |
507 | + $scope.factura.articulosFactura.push(articulo); | |
508 | + $scope.cambioEdit(articulo, 'cantidad'); | |
509 | + // }) | |
510 | + // .catch(function (err) { | |
511 | + | |
512 | + // focaModalService.alert('El despacho esta en uso'); | |
513 | + // }); | |
514 | + }) | |
515 | + .catch(function (e) { console.error(e); }); | |
516 | + }; | |
517 | + | |
439 | 518 | function crearFuncionesProductos(producto) { |
440 | 519 | |
441 | 520 | $scope[nombreFuncion(producto.DetArt)] = function () { |
... | ... | @@ -454,7 +533,7 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
454 | 533 | return { |
455 | 534 | despachos: producto.despachos, |
456 | 535 | nombreProducto: producto.DetArt |
457 | - } | |
536 | + }; | |
458 | 537 | } |
459 | 538 | }, |
460 | 539 | size: 'md' |
... | ... | @@ -487,7 +566,7 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
487 | 566 | LEG: $scope.factura.vendedor.CodVen, |
488 | 567 | TUR: $scope.factura.vendedor.TurVen, |
489 | 568 | ORDEN_PRECOMPRA: '', |
490 | - ESC: producto.tipoFactura == 'L' ? 1 : 0, | |
569 | + ESC: producto.tipoFactura === 'L' ? 1 : 0, | |
491 | 570 | CMF: 0, |
492 | 571 | PTA: 0, |
493 | 572 | IVS: 0, |
... | ... | @@ -511,12 +590,13 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
511 | 590 | }) |
512 | 591 | .catch(function (err) { |
513 | 592 | |
593 | + console.error(err); | |
514 | 594 | focaModalService.alert('El despacho esta en uso'); |
515 | 595 | }); |
516 | 596 | |
517 | 597 | }) |
518 | 598 | .catch(function (err) { |
519 | - console.log(err); | |
599 | + console.error(err); | |
520 | 600 | }); |
521 | 601 | |
522 | 602 | }; |
... | ... | @@ -543,7 +623,7 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
543 | 623 | }) |
544 | 624 | .then(function (contraseรฑa) { |
545 | 625 | |
546 | - if (contraseรฑa != vendedor.ClaVen.trim()) { | |
626 | + if (contraseรฑa !== vendedor.ClaVen.trim()) { | |
547 | 627 | |
548 | 628 | focaModalService.alert('Clave incorrecta').then(function () { |
549 | 629 | indicarPassword(vendedor); |
... | ... | @@ -668,6 +748,34 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
668 | 748 | } |
669 | 749 | } |
670 | 750 | |
751 | + $scope.cambioEdit = function (articulo, propiedad) { | |
752 | + if (propiedad === 'cantidad') { | |
753 | + articulo.editCantidad = true; | |
754 | + } | |
755 | + }; | |
756 | + | |
757 | + $scope.editarArticulo = function (key, articulo, tmpCantidad) { | |
758 | + if (key === 13) { | |
759 | + if (!articulo.cantidad && !tmpCantidad) { | |
760 | + focaModalService.alert('Los valores deben ser al menos 1'); | |
761 | + return; | |
762 | + } else if (tmpCantidad === '0') { | |
763 | + focaModalService.alert('Esta ingresando un producto con valor 0'); | |
764 | + } else if (articulo.cantidad < 0) { | |
765 | + focaModalService.alert('Los valores no pueden ser negativos'); | |
766 | + return; | |
767 | + } | |
768 | + articulo.CAN = parseInt(tmpCantidad); | |
769 | + $scope.getTotal(); | |
770 | + articulo.editCantidad = false; | |
771 | + } | |
772 | + }; | |
773 | + | |
774 | + $scope.cancelarEditar = function (articulo) { | |
775 | + $scope.tmpCantidad = articulo.CAN; | |
776 | + articulo.editCantidad = false; | |
777 | + }; | |
778 | + | |
671 | 779 | function actualizarCabeceraMoneda(cotizacion) { |
672 | 780 | |
673 | 781 | $scope.factura.articulosFactura.forEach(function (art) { |
... | ... | @@ -703,7 +811,7 @@ angular.module('focaCrearFactura').controller('facturaController', [ |
703 | 811 | return false; |
704 | 812 | } else if (angular.equals({}, $scope.factura.cliente)) { |
705 | 813 | |
706 | - focaModalService.alert('Seleccione Cliente') | |
814 | + focaModalService.alert('Seleccione Cliente'); | |
707 | 815 | return false; |
708 | 816 | } else if (!$scope.articulosFiltro().length) { |
709 | 817 |
src/views/factura.html
1 | 1 | <div class="crear-nota-remito foca-crear row"> |
2 | - <foca-cabecera-facturador | |
2 | + <foca-cabecera-facturador | |
3 | 3 | titulo="'Factura'" |
4 | 4 | numero="puntoVenta + '-' + comprobante" |
5 | 5 | fecha="now" |
6 | 6 | class="mb-0 col-lg-12" |
7 | 7 | busqueda="seleccionarRemito" |
8 | - ></foca-cabecera-facturador> | |
9 | - <marquee | |
10 | - bgcolor="#FF9900" | |
11 | - behavior="scroll" | |
12 | - direction="left" | |
13 | - ng-bind="factura.observaciones" | |
14 | - ></marquee> | |
15 | - <div class="col-lg-12"> | |
16 | - <div class="row mt-4"> | |
17 | - <div class="col-12 col-md-10 col-lg-10 border border-light rounded"> | |
18 | - <div class="row p-1 botonera-secundaria px-5 py-2"> | |
8 | + ></foca-cabecera-facturador> | |
9 | + <marquee | |
10 | + bgcolor="#FF9900" | |
11 | + behavior="scroll" | |
12 | + direction="left" | |
13 | + ng-bind="factura.observaciones" | |
14 | + ></marquee> | |
15 | + <div class="col-lg-12 p-2"> | |
16 | + <div class="row border border-light rounded m-0"> | |
17 | + <div class="col-12 col-md-10 col-lg-10"> | |
18 | + <div class="row p-1 botonera-secundaria px-3 py-2"> | |
19 | 19 | <div class="col-12"> |
20 | - <foca-botonera-facturador botones="botonera" extra="4" class="row"></foca-botonera-facturador> | |
20 | + <foca-botonera-facturador | |
21 | + botones="botonera" | |
22 | + max="botonera.length" | |
23 | + class="row"> | |
24 | + </foca-botonera-facturador> | |
25 | + </div> | |
26 | + </div> | |
27 | + <div ng-show="botoneraProductos.length > 0" class="row botonera-secundaria pb-3 px-3"> | |
28 | + <div class="col-12"> | |
29 | + <foca-botonera-productos | |
30 | + botones="botoneraProductos" | |
31 | + max="1" | |
32 | + class="row" | |
33 | + > | |
34 | + </foca-botonera-productos> | |
21 | 35 | </div> |
22 | 36 | </div> |
23 | 37 | <!-- PC --> |
... | ... | @@ -74,9 +88,9 @@ |
74 | 88 | foca-tipo-input |
75 | 89 | min="1" |
76 | 90 | foca-focus="articulo.editCantidad" |
77 | - ng-keypress="editarArticulo($event.keyCode, articulo, tmpCantidad, tmpPrecio);" | |
91 | + ng-keypress="editarArticulo($event.keyCode, articulo, tmpCantidad);" | |
78 | 92 | esc-key="cancelarEditar(articulo)" |
79 | - ng-focus="selectFocus($event); tmpCantidad = articulo.CAN; tmpPrecio = articulo.PUN" | |
93 | + ng-focus="selectFocus($event); tmpCantidad = articulo.CAN;" | |
80 | 94 | teclado-virtual |
81 | 95 | > |
82 | 96 | <i |
... | ... | @@ -87,25 +101,8 @@ |
87 | 101 | </i> |
88 | 102 | </td> |
89 | 103 | <td class="col text-right"> |
90 | - <input | |
91 | - ng-show="articulo.editPrecio" | |
92 | - ng-model="tmpPrecio" | |
93 | - class="form-control" | |
94 | - foca-tipo-input | |
95 | - min="1" | |
96 | - step="0.0001" | |
97 | - foca-focus="articulo.editPrecio" | |
98 | - ng-keypress="editarArticulo($event.keyCode, articulo, tmpCantidad, tmpPrecio);" | |
99 | - esc-key="cancelarEditar(articulo)" | |
100 | - ng-focus="selectFocus($event); | |
101 | - tmpCantidad = articulo.CAN; | |
102 | - tmpPrecio = articulo.PUN" | |
103 | - teclado-virtual | |
104 | - > | |
105 | 104 | <i |
106 | 105 | class="selectable" |
107 | - ng-click="cambioEdit(articulo, 'precio')" | |
108 | - ng-hide="articulo.editPrecio" | |
109 | 106 | ng-bind="articulo.PUN | number: 4"> |
110 | 107 | </i> |
111 | 108 | </td> |
... | ... | @@ -156,133 +153,135 @@ |
156 | 153 | </div> |
157 | 154 | <!-- MOBILE --> |
158 | 155 | <div class="row d-sm-none"> |
159 | - <table class="table table-sm table-striped tabla-articulo margin-bottom-mobile"> | |
160 | - <thead> | |
161 | - <tr class="d-flex"> | |
162 | - <th class="">#</th> | |
163 | - <th class="col px-0"> | |
164 | - <div class="d-flex"> | |
165 | - <div class="col-4 px-1">Cรณdigo</div> | |
166 | - <div class="col-8 px-1">Descripciรณn</div> | |
167 | - </div> | |
168 | - <div class="d-flex"> | |
169 | - <div class="col-3 px-1">Cantidad</div> | |
170 | - <div class="col px-1 text-right">P. Uni.</div> | |
171 | - <div class="col px-1 text-right">Subtotal</div> | |
172 | - </div> | |
173 | - </th> | |
174 | - <th class="text-center tamaรฑo-boton"> | |
175 | - | |
176 | - </th> | |
177 | - </tr> | |
178 | - </thead> | |
179 | - <tbody> | |
180 | - <tr | |
181 | - ng-repeat="(key, articulo) in articulosFiltro()" | |
182 | - ng-show="show || key == articulosFiltro().length - 1" | |
183 | - > | |
184 | - <td class="w-100 d-flex p-0"> | |
185 | - <div class="p-1 m-auto"> | |
186 | - <span ng-bind="key + 1"></span> | |
187 | - </div> | |
188 | - <div class="col px-0"> | |
156 | + <div class="col p-0 m-2 mb-5"> | |
157 | + <table class="table table-sm table-striped tabla-articulo"> | |
158 | + <thead> | |
159 | + <tr class="d-flex"> | |
160 | + <th class="">#</th> | |
161 | + <th class="col px-0"> | |
189 | 162 | <div class="d-flex"> |
190 | - <div class="col-4 px-1"> | |
191 | - <span | |
192 | - ng-bind="articulo.SEC + '-' + articulo.ART" | |
193 | - ></span> | |
194 | - </div> | |
195 | - <div class="col-8 px-1"> | |
196 | - <span ng-bind="articulo.DES"></span> | |
197 | - </div> | |
163 | + <div class="col-4 px-1">Cรณdigo</div> | |
164 | + <div class="col-8 px-1">Descripciรณn</div> | |
198 | 165 | </div> |
199 | 166 | <div class="d-flex"> |
200 | - <div class="col-4 px-1"> | |
201 | - <span | |
202 | - ng-bind="'x' + articulo.CAN" | |
203 | - ng-hide="articulo.editCantidad" | |
204 | - ></span> | |
205 | - <i | |
206 | - class="fa fa-pencil text-white-50" | |
207 | - aria-hidden="true" | |
208 | - ng-hide="articulo.editCantidad" | |
209 | - ng-click="articulo.editCantidad = true" | |
210 | - ></i> | |
211 | - <input | |
212 | - ng-show="articulo.editCantidad" | |
213 | - ng-model="articulo.CAN" | |
214 | - class="form-control" | |
215 | - foca-tipo-input | |
216 | - min="1" | |
217 | - step="0.001" | |
218 | - foca-focus="articulo.editCantidad" | |
219 | - ng-keypress="editarArticulo($event.keyCode, articulo, tmpCantidad, tmpPrecio)" | |
220 | - ng-focus="selectFocus($event)" | |
221 | - > | |
222 | - </div> | |
223 | - <div class="col px-1 text-right"> | |
224 | - <span ng-bind="articulo.PUN | | |
225 | - currency: factura.cotizacion.moneda.SIMBOLO : 4"></span> | |
226 | - ></span> | |
167 | + <div class="col-3 px-1">Cantidad</div> | |
168 | + <div class="col px-1 text-right">P. Uni.</div> | |
169 | + <div class="col px-1 text-right">Subtotal</div> | |
170 | + </div> | |
171 | + </th> | |
172 | + <th class="text-center tamaรฑo-boton"> | |
173 | + | |
174 | + </th> | |
175 | + </tr> | |
176 | + </thead> | |
177 | + <tbody> | |
178 | + <tr | |
179 | + ng-repeat="(key, articulo) in articulosFiltro()" | |
180 | + ng-show="show || key == articulosFiltro().length - 1" | |
181 | + > | |
182 | + <td class="w-100 d-flex p-0"> | |
183 | + <div class="p-1 m-auto"> | |
184 | + <span ng-bind="key + 1"></span> | |
185 | + </div> | |
186 | + <div class="col px-0"> | |
187 | + <div class="d-flex"> | |
188 | + <div class="col-4 px-1"> | |
189 | + <span | |
190 | + ng-bind="articulo.SEC + '-' + articulo.ART" | |
191 | + ></span> | |
192 | + </div> | |
193 | + <div class="col-8 px-1"> | |
194 | + <span ng-bind="articulo.DES"></span> | |
195 | + </div> | |
227 | 196 | </div> |
228 | - <div class="col px-1 text-right"> | |
229 | - <span | |
230 | - ng-bind="(articulo.PUN * articulo.CAN) | | |
231 | - currency: factura.cotizacion.moneda.SIMBOLO" | |
232 | - > | |
233 | - </span> | |
197 | + <div class="d-flex"> | |
198 | + <div class="col-4 px-1"> | |
199 | + <span | |
200 | + ng-bind="'x' + articulo.CAN" | |
201 | + ng-hide="articulo.editCantidad" | |
202 | + ></span> | |
203 | + <i | |
204 | + class="fa fa-pencil text-white-50" | |
205 | + aria-hidden="true" | |
206 | + ng-hide="articulo.editCantidad" | |
207 | + ng-click="articulo.editCantidad = true" | |
208 | + ></i> | |
209 | + <input | |
210 | + ng-show="articulo.editCantidad" | |
211 | + ng-model="articulo.CAN" | |
212 | + class="form-control" | |
213 | + foca-tipo-input | |
214 | + min="1" | |
215 | + step="0.001" | |
216 | + foca-focus="articulo.editCantidad" | |
217 | + ng-keypress="editarArticulo($event.keyCode, articulo, tmpCantidad, tmpPrecio)" | |
218 | + ng-focus="selectFocus($event)" | |
219 | + > | |
220 | + </div> | |
221 | + <div class="col px-1 text-right"> | |
222 | + <span ng-bind="articulo.PUN | | |
223 | + currency: factura.cotizacion.moneda.SIMBOLO : 4"></span> | |
224 | + ></span> | |
225 | + </div> | |
226 | + <div class="col px-1 text-right"> | |
227 | + <span | |
228 | + ng-bind="(articulo.PUN * articulo.CAN) | | |
229 | + currency: factura.cotizacion.moneda.SIMBOLO" | |
230 | + > | |
231 | + </span> | |
232 | + </div> | |
234 | 233 | </div> |
235 | 234 | </div> |
236 | - </div> | |
237 | - <div class="m-auto p-1"> | |
235 | + <div class="m-auto p-1"> | |
236 | + <button | |
237 | + class="btn btn-outline-light" | |
238 | + ng-click="quitarDespacho(key)" | |
239 | + > | |
240 | + <i class="fa fa-trash"></i> | |
241 | + </button> | |
242 | + </div> | |
243 | + </td> | |
244 | + </tr> | |
245 | + </tbody> | |
246 | + <tfoot> | |
247 | + <!-- TOOGLE EXPANDIR --> | |
248 | + <tr> | |
249 | + <td class="col"> | |
238 | 250 | <button |
239 | - class="btn btn-outline-light" | |
240 | - ng-click="quitarDespacho(key)" | |
251 | + class="btn btn-outline-light selectable w-100" | |
252 | + ng-click="show = !show; masMenos()" | |
253 | + ng-show="articulosFiltro().length > 0" | |
241 | 254 | > |
242 | - <i class="fa fa-trash"></i> | |
255 | + <i | |
256 | + class="fa fa-chevron-down" | |
257 | + ng-hide="show" | |
258 | + aria-hidden="true" | |
259 | + > | |
260 | + </i> | |
261 | + <i | |
262 | + class="fa fa-chevron-up" | |
263 | + ng-show="show" | |
264 | + aria-hidden="true"> | |
265 | + </i> | |
243 | 266 | </button> |
244 | - </div> | |
245 | - </td> | |
246 | - </tr> | |
247 | - </tbody> | |
248 | - <tfoot> | |
249 | - <!-- TOOGLE EXPANDIR --> | |
250 | - <tr> | |
251 | - <td class="col"> | |
252 | - <button | |
253 | - class="btn btn-outline-light selectable w-100" | |
254 | - ng-click="show = !show; masMenos()" | |
255 | - ng-show="articulosFiltro().length > 0" | |
256 | - > | |
257 | - <i | |
258 | - class="fa fa-chevron-down" | |
259 | - ng-hide="show" | |
260 | - aria-hidden="true" | |
261 | - > | |
262 | - </i> | |
263 | - <i | |
264 | - class="fa fa-chevron-up" | |
265 | - ng-show="show" | |
266 | - aria-hidden="true"> | |
267 | - </i> | |
268 | - </button> | |
269 | - </td> | |
270 | - </tr> | |
271 | - <!-- FOOTER --> | |
272 | - <tr class="d-flex"> | |
273 | - <td class="m-auto no-border-top" colspan="2"> | |
274 | - <strong>Cantidad Items:</strong> | |
275 | - <a ng-bind="articulosFiltro().length"></a> | |
276 | - </td> | |
277 | - <td class="text-right ml-auto table-celda-total no-border-top"> | |
278 | - <h3>Total:</h3> | |
279 | - </td> | |
280 | - <td class="table-celda-total text-right no-border-top"> | |
281 | - <h3>{{getTotal() | currency: factura.cotizacion.moneda.SIMBOLO}}</h3> | |
282 | - </td> | |
283 | - </tr> | |
284 | - </tfoot> | |
285 | - </table> | |
267 | + </td> | |
268 | + </tr> | |
269 | + <!-- FOOTER --> | |
270 | + <tr class="d-flex"> | |
271 | + <td class="m-auto no-border-top" colspan="2"> | |
272 | + <strong>Cantidad Items:</strong> | |
273 | + <a ng-bind="articulosFiltro().length"></a> | |
274 | + </td> | |
275 | + <td class="text-right ml-auto table-celda-total no-border-top"> | |
276 | + <h3>Total:</h3> | |
277 | + </td> | |
278 | + <td class="table-celda-total text-right no-border-top"> | |
279 | + <h3>{{getTotal() | currency: factura.cotizacion.moneda.SIMBOLO}}</h3> | |
280 | + </td> | |
281 | + </tr> | |
282 | + </tfoot> | |
283 | + </table> | |
284 | + </div> | |
286 | 285 | </div> |
287 | 286 | </div> |
288 | 287 | </div> |