Commit 2c319982ac8b9a21870618e24355c196f293bf0a

Authored by Eric Fernandez
1 parent 103858e63e
Exists in master

busqueda by codigo de barras

src/app/components/inicio/inicio.component.ts
1 import { Component, OnInit, ViewChild } from '@angular/core'; 1 import { Component, OnInit, ViewChild } from '@angular/core';
2 import { PopoverDirective } from 'ngx-bootstrap'; 2 import { PopoverDirective } from 'ngx-bootstrap';
3 import { appSettings } from 'src/etc/AppSettings'; 3 import { appSettings } from 'src/etc/AppSettings';
4 import { Producto } from 'src/app/wrappers/producto'; 4 import { Producto } from 'src/app/wrappers/producto';
5 import { ProductoService } from 'src/app/services/producto.service'; 5 import { ProductoService } from 'src/app/services/producto.service';
6 import { Router } from '@angular/router'; 6 import { Router } from '@angular/router';
7 import { Promocion } from 'src/app/wrappers/promocion'; 7 import { Promocion } from 'src/app/wrappers/promocion';
8 import { Sinonimo } from 'src/app/wrappers/sinonimo'; 8 import { Sinonimo } from 'src/app/wrappers/sinonimo';
9 import { HostListener } from '@angular/core'; 9 import { HostListener } from '@angular/core';
10 10
11 @Component({ 11 @Component({
12 selector: 'app-inicio', 12 selector: 'app-inicio',
13 templateUrl: './inicio.component.html', 13 templateUrl: './inicio.component.html',
14 styleUrls: ['./inicio.component.scss'] 14 styleUrls: ['./inicio.component.scss']
15 }) 15 })
16 export class InicioComponent implements OnInit { 16 export class InicioComponent implements OnInit {
17 17
18 @HostListener('document:keypress', ["$event"]) catchInput(e: KeyboardEvent) { 18 @HostListener('document:keypress', ["$event"]) catchInput(e: KeyboardEvent) {
19 this.busqueda += e.key; 19
20 if (e.keyCode == 13) {
21 this.buscarByCodigoBarras(this.busqueda);
22 this.busqueda = '';
23 } else {
24 this.busqueda += e.key;
25 }
26
20 }; 27 };
21 28
22 @ViewChild('pop', { static: false }) popoverDirective: PopoverDirective; 29 @ViewChild('pop', { static: false }) popoverDirective: PopoverDirective;
23 private productoAcargar: Producto; 30 private productoAcargar: Producto;
31 private productos: Producto[];
24 private promoAcargar: Promocion; 32 private promoAcargar: Promocion;
25 private tienePromo = false; 33 private tienePromo = false;
26 private productoEsPromo = false; 34 private productoEsPromo = false;
27 private busqueda: string = ''; 35 private busqueda: string = '';
28 private sinonimoAcargar: Sinonimo; 36 private sinonimoAcargar: Sinonimo;
29 37
30 promociones: Promocion[] = []; 38 promociones: Promocion[] = [];
31 sinonimos: Sinonimo[] = []; 39 sinonimos: Sinonimo[] = [];
32 apiUrl: string = appSettings.apiUrl 40 apiUrl: string = appSettings.apiUrl
33 41
34 constructor( 42 constructor(
35 private router: Router, 43 private router: Router,
36 private productoService: ProductoService) { } 44 private productoService: ProductoService) { }
37 45
38 ngOnInit() { 46 ngOnInit() {
39 47
40 this.vaciarBusqueda();
41
42 this.productoAcargar = this.productoService.productoAcargar; 48 this.productoAcargar = this.productoService.productoAcargar;
43 this.getPromociones(); 49 this.getPromociones();
50 this.getProductos();
44 } 51 }
45 52
46 getPromociones() { 53 getPromociones() {
47 if (this.productoAcargar) { 54 if (this.productoAcargar) {
48 var sector = this.productoAcargar.CodSec; 55 var sector = this.productoAcargar.CodSec;
49 var codigo = this.productoAcargar.CodArt; 56 var codigo = this.productoAcargar.CodArt;
50 this.productoService.getPromocion(sector, codigo) 57 this.productoService.getPromocion(sector, codigo)
51 .subscribe((res: Promocion[]) => { 58 .subscribe((res: Promocion[]) => {
52 59
53 if (res.length === 0) { 60 if (res.length === 0) {
54 //Si no tiene promociones la cargará al carrito despues de un tiempo 61 //Si no tiene promociones la cargará al carrito despues de un tiempo
55 setTimeout(() => { 62 setTimeout(() => {
56 this.productoService.productos.push(this.productoAcargar); 63 this.productoService.productos.push(this.productoAcargar);
57 this.productoAcargar = undefined; 64 this.productoAcargar = undefined;
58 }, 2000) 65 }, 2000)
59 } else { 66 } else {
60 67
61 this.promociones = res; 68 this.promociones = res;
62 this.popoverDirective.show(); 69 this.popoverDirective.show();
63 } 70 }
64 }, error => { console.error(error); }) 71 }, error => { console.error(error); })
65 } 72 }
66 } 73 }
67 74
68 showPopover() { 75 showPopover() {
69 76
70 this.popoverDirective.show(); 77 this.popoverDirective.show();
71 } 78 }
72 79
80 getProductos() {
81 this.productoService.getAll()
82 .subscribe((productos: Producto[]) => {
83 this.productos = productos;
84 });
85 }
86
73 private goPage(pageUrl) { 87 private goPage(pageUrl) {
74 88
75 this.router.navigate([pageUrl]); 89 this.router.navigate([pageUrl]);
76 } 90 }
77 91
78 deshacerCarga() { 92 deshacerCarga() {
79 93
80 if (this.sinonimoAcargar || this.sinonimos.length > 0) { 94 if (this.sinonimoAcargar || this.sinonimos.length > 0) {
81 this.sinonimos = []; 95 this.sinonimos = [];
82 this.sinonimoAcargar = undefined; 96 this.sinonimoAcargar = undefined;
83 this.popoverDirective.hide(); 97 this.popoverDirective.hide();
84 } 98 }
85 99
86 if (this.promoAcargar) { 100 if (this.promoAcargar) {
87 this.promoAcargar = undefined; 101 this.promoAcargar = undefined;
88 this.popoverDirective.show(); 102 this.popoverDirective.show();
89 } else { 103 } else {
90 this.productoAcargar = undefined; 104 this.productoAcargar = undefined;
91 this.promociones = []; 105 this.promociones = [];
92 this.popoverDirective.hide(); 106 this.popoverDirective.hide();
93 } 107 }
94 } 108 }
95 109
96 promoSeleccionada($event: Promocion) { 110 promoSeleccionada($event: Promocion) {
97 111
98 this.promoAcargar = $event; 112 this.promoAcargar = $event;
99 this.popoverDirective.hide(); 113 this.popoverDirective.hide();
100 if (this.promoAcargar.sinonimos) { 114 if (this.promoAcargar.sinonimos) {
101 var sector = this.promoAcargar.sector; 115 var sector = this.promoAcargar.sector;
102 var codigo = this.promoAcargar.codigo; 116 var codigo = this.promoAcargar.codigo;
103 this.productoService.getPromocionSinonimos(sector, codigo) 117 this.productoService.getPromocionSinonimos(sector, codigo)
104 .subscribe((res: Sinonimo[]) => { 118 .subscribe((res: Sinonimo[]) => {
105 res.forEach(resSinonimo => { 119 res.forEach(resSinonimo => {
106 resSinonimo.productos.forEach(productoSinonimo => { 120 resSinonimo.productos.forEach(productoSinonimo => {
107 this.promoAcargar.productos.forEach(productoPromo => { 121 this.promoAcargar.productos.forEach(productoPromo => {
108 if (productoPromo.id === productoSinonimo.id) { 122 if (productoPromo.id === productoSinonimo.id) {
109 productoSinonimo.esPadre = true; 123 productoSinonimo.esPadre = true;
110 } 124 }
111 }); 125 });
112 126
113 }) 127 })
114 }) 128 })
115 this.sinonimos = res; 129 this.sinonimos = res;
116 this.showPopover(); 130 this.showPopover();
117 }) 131 })
118 } 132 }
119 } 133 }
120 134
121 vaciarBusqueda() {
122
123 setTimeout(() => {
124 this.busqueda = '';
125 }, 2000);
126 }
127
128 sinonimoSeleccionado($event: Sinonimo) { 135 sinonimoSeleccionado($event: Sinonimo) {
129 136
130 console.log($event); 137 console.log($event);
131 this.sinonimoAcargar = $event; 138 this.sinonimoAcargar = $event;
132 } 139 }
133 140
141 buscarByCodigoBarras(busqueda) {
142
143 let producto = this.productos.filter(producto => {
144 return producto.codigoBarra == busqueda;
145 });
146
147 if (producto.length) {
148
149 this.productoAcargar = producto[0];
150 this.getPromociones();
src/app/wrappers/producto.ts
1 export interface Producto { 1 export interface Producto {
2 CodSec: number; 2 CodSec: number;
3 CodArt: number; 3 CodArt: number;
4 DetArt: string; 4 DetArt: string;
5 CodRub: number; 5 CodRub: number;
6 Costo: number; 6 Costo: number;
7 PreNet: number; 7 PreNet: number;
8 ImpInt: number; 8 ImpInt: number;
9 UniVen: number; 9 UniVen: number;
10 FecCos: Date; 10 FecCos: Date;
11 UltAct: Date; 11 UltAct: Date;
12 CodPro: number; 12 CodPro: number;
13 ExiDep: number; 13 ExiDep: number;
14 ExiVta: number; 14 ExiVta: number;
15 MinDep: number; 15 MinDep: number;
16 MaxDep: number; 16 MaxDep: number;
17 MinPVE: number; 17 MinPVE: number;
18 MaxPVE: number; 18 MaxPVE: number;
19 ENTTur: number; 19 ENTTur: number;
20 SINTur: number; 20 SINTur: number;
21 SALTur: number; 21 SALTur: number;
22 IvaSN: boolean; 22 IvaSN: boolean;
23 DepSN: boolean; 23 DepSN: boolean;
24 RubMay: number; 24 RubMay: number;
25 PreVen: number; 25 PreVen: number;
26 IvaCO: number; 26 IvaCO: number;
27 TIP: string; 27 TIP: string;
28 IMPIVA: number; 28 IMPIVA: number;
29 ENTADM: number; 29 ENTADM: number;
30 SALADM: number; 30 SALADM: number;
31 CODIIN: number; 31 CODIIN: number;
32 PRO: boolean; 32 PRO: boolean;
33 FPP: boolean; 33 FPP: boolean;
34 ESS: boolean; 34 ESS: boolean;
35 FID: Date; 35 FID: Date;
36 NID: number; 36 NID: number;
37 FIV: Date; 37 FIV: Date;
38 NIV: number; 38 NIV: number;
39 COO: string; 39 COO: string;
40 CAG: string; 40 CAG: string;
41 CAP: number; 41 CAP: number;
42 UTL: number; 42 UTL: number;
43 NHA: boolean; 43 NHA: boolean;
44 PID: boolean; 44 PID: boolean;
45 PRV: number; 45 PRV: number;
46 PRD: number; 46 PRD: number;
47 ImpInt2: number; 47 ImpInt2: number;
48 E_HD: string; 48 E_HD: string;
49 C_HD: string; 49 C_HD: string;
50 CLA: number; 50 CLA: number;
51 UNICAP: number; 51 UNICAP: number;
52 ELBPRO: string; 52 ELBPRO: string;
53 PPP: number; 53 PPP: number;
54 ALI: number; 54 ALI: number;
55 BAL_TIPO: string; 55 BAL_TIPO: string;
56 PER_MAY: boolean; 56 PER_MAY: boolean;
57 ES_MAY: boolean; 57 ES_MAY: boolean;
58 CLA_MAY: number; 58 CLA_MAY: number;
59 PME_CMP: string; 59 PME_CMP: string;
60 USA_BAL: boolean; 60 USA_BAL: boolean;
61 DET_LAR: string; 61 DET_LAR: string;
62 ROTULO: string; 62 ROTULO: string;
63 REC_MANUAL: boolean; 63 REC_MANUAL: boolean;
64 E_HD1: string; 64 E_HD1: string;
65 C_HD1: string; 65 C_HD1: string;
66 ImpInt3: number; 66 ImpInt3: number;
67 FUA_MAE_YPF: Date; 67 FUA_MAE_YPF: Date;
68 CPQ: number; 68 CPQ: number;
69 EPQ: string; 69 EPQ: string;
70 BPQ: number; 70 BPQ: number;
71 PUPQ: number; 71 PUPQ: number;
72 CORVTO: boolean; 72 CORVTO: boolean;
73 CORVTO_COSTO: number; 73 CORVTO_COSTO: number;
74 UTLFR: number; 74 UTLFR: number;
75 FAMILIA: number; 75 FAMILIA: number;
76 ES_LUB: boolean; 76 ES_LUB: boolean;
77 ES_FERT: boolean; 77 ES_FERT: boolean;
78 AutoFac: boolean; 78 AutoFac: boolean;
79 LitrosPCD: number; 79 LitrosPCD: number;
80 LisPCD: number; 80 LisPCD: number;
81 ImpLey23966: boolean; 81 ImpLey23966: boolean;
82 es_bio: boolean; 82 es_bio: boolean;
83 ExpArbaRev: boolean; 83 ExpArbaRev: boolean;
84 ES_AGROQ: boolean; 84 ES_AGROQ: boolean;
85 ES_PLAST: boolean; 85 ES_PLAST: boolean;
86 es_bio_por: string; 86 es_bio_por: string;
87 IMP_IMP_INT: boolean; 87 IMP_IMP_INT: boolean;
88 id: number; 88 id: number;
89 nombreImagen?: any; 89 nombreImagen?: any;
90 categoria_selfservice: number; 90 categoria_selfservice: number;
91 cantidad?: number; 91 cantidad?: number;
92 showCargarProducto?: boolean; 92 showCargarProducto?: boolean;
93 esPadre?: boolean; 93 esPadre?: boolean;
94 codigoBarra: string;
94 } 95 }
95 96