Commit aa492da5235b84d3d0a679289bdf651374b7b7f8
1 parent
09bbac881e
Exists in
master
and in
2 other branches
Agregados primeros servicios
Showing
8 changed files
with
356 additions
and
0 deletions
Show diff stats
.gitignore
src/app/interfaces/IArticulo.ts
... | ... | @@ -0,0 +1,35 @@ |
1 | +export interface IArticulo { | |
2 | + cantidad?: number; | |
3 | + cantidadAdicionada?: number; | |
4 | + cantidadVendida?: number; | |
5 | + categoria_selfservice?: number; | |
6 | + CodArt: number; | |
7 | + codigoBarra?: ICodigoBarra[]; | |
8 | + CodSec: number; | |
9 | + DetArt: string; | |
10 | + DET_LAR: string; | |
11 | + ELBPRO: string; | |
12 | + esAdicionable?: boolean; | |
13 | + esSustraible?: boolean; | |
14 | + FPP?: boolean; | |
15 | + id: number; | |
16 | + idSinonimo?: number; | |
17 | + imagenes?: any[]; | |
18 | + ImpInt: number; | |
19 | + ImpInt2: number; | |
20 | + ImpInt3: number; | |
21 | + importeValorExtra?: number; | |
22 | + PreVen: number; | |
23 | + PRO: boolean; | |
24 | + productos?: IArticulo[]; | |
25 | + seleccionado?: boolean; | |
26 | + tieneSinonimo?: boolean; | |
27 | + tipo_articulo?: number; | |
28 | + comentario?: string; | |
29 | +} | |
30 | + | |
31 | +export interface ICodigoBarra { | |
32 | + CodBar: string; | |
33 | + CodArt: number; | |
34 | + CodSec: string; | |
35 | +} |
src/app/interfaces/ICliente.ts
... | ... | @@ -0,0 +1,161 @@ |
1 | +export interface ICliente { | |
2 | + COD: number; | |
3 | + NOM: string; | |
4 | + DOM: string; | |
5 | + CPO: string; | |
6 | + LOC: string; | |
7 | + PCI: string; | |
8 | + CUIT: string; | |
9 | + TEL: string; | |
10 | + FPA: number; | |
11 | + TIP: string; | |
12 | + ZON: string; | |
13 | + ACT: string; | |
14 | + PDA: boolean; | |
15 | + MCC: number; | |
16 | + MCH: number; | |
17 | + CTA: number; | |
18 | + IDE: string; | |
19 | + TLI: string; | |
20 | + MOD: string; | |
21 | + SUR: boolean; | |
22 | + IVA: number; | |
23 | + SIT: string; | |
24 | + TCO: string; | |
25 | + LOX: number; | |
26 | + PCX: number; | |
27 | + OBS: string; | |
28 | + FUP: string; | |
29 | + DIC: number; | |
30 | + GRP: boolean; | |
31 | + BLO: boolean; | |
32 | + PLP: boolean; | |
33 | + FRE: boolean; | |
34 | + VEN: number; | |
35 | + FEA: string; | |
36 | + ICP: boolean; | |
37 | + PER: boolean; | |
38 | + RANT: boolean; | |
39 | + D_EN: string; | |
40 | + D_Y: string; | |
41 | + REC: number; | |
42 | + NHA: boolean; | |
43 | + EMG: number; | |
44 | + E_HD: string; | |
45 | + C_HD: string; | |
46 | + PDA_A: number; | |
47 | + CAN_KIL: number; | |
48 | + PER_MAY: boolean; | |
49 | + ES_MAY: boolean; | |
50 | + SEG_MAY: number; | |
51 | + INC_MAY: number; | |
52 | + ZON_MAY: number; | |
53 | + PER_IVA_MAY: number; | |
54 | + LPCC: boolean; | |
55 | + EREPL: boolean; | |
56 | + IMP_ABONO: number; | |
57 | + ID_LEY: number; | |
58 | + NRO_PER_MAY: string; | |
59 | + JUR_MAY_PER: string; | |
60 | + NARIB: string; | |
61 | + DIC_1: number; | |
62 | + REC_1: number; | |
63 | + TASA_DIC: number; | |
64 | + TASA_DIC_1: number; | |
65 | + IMP_CANJE: boolean; | |
66 | + USOINT: boolean; | |
67 | + PERC: number; | |
68 | + CTRL_LIT: boolean; | |
69 | + CTRL_SEC: boolean; | |
70 | + CLI_CON: number; | |
71 | + ITC_SUR: boolean; | |
72 | + PIDVEN: boolean; | |
73 | + MAIL: string; | |
74 | + HAB_NOTIF: boolean; | |
75 | + TIPO_NOTIFICACION: boolean; | |
76 | + VEH_CHF: boolean; | |
77 | + ICIVAL: boolean; | |
78 | + LEY_ABO1: string; | |
79 | + LEY_ABO2: string; | |
80 | + LEY_ABO3: string; | |
81 | + LEY_ABO4: string; | |
82 | + SALDO_ABONO: number; | |
83 | + FACT_ABONO: number; | |
84 | + FACT_AUTO: boolean; | |
85 | + MES_VDO: boolean; | |
86 | + FEC_CTRL: string; | |
87 | + SEG_FID: number; | |
88 | + MARCA_SALDO: boolean; | |
89 | + CTRL_SEC_FPA: boolean; | |
90 | + TIPO_RET: number; | |
91 | + COD_EXT: string; | |
92 | + RIESGO_FISCAL: boolean; | |
93 | + POR_RED: number; | |
94 | + DESTINO_VENTA: number; | |
95 | + FT_ANT: boolean; | |
96 | + FID_PART: boolean; | |
97 | + PER_SL: number; | |
98 | + EN_COBRO: number; | |
99 | + BLO_CTA_PROPIA: boolean; | |
100 | + TIENE_CERTIFICADO_IIBB: boolean; | |
101 | + NOTIF_FT_RE: boolean; | |
102 | + IMP_DET_VAL: boolean; | |
103 | + EX_PER_HASTA: string; | |
104 | + REVENDEDOR: boolean; | |
105 | + CONVMULTILATERAL: boolean; | |
106 | + PERCPORC?: any; | |
107 | + MAIL_COBRANZA: string; | |
108 | + MAIL_COMPRAS: string; | |
109 | + MAIL_OTROS: string; | |
110 | + IMP_OBS_CLI: boolean; | |
111 | + PASSWEB: string; | |
112 | + COD_REG_CANJ: number; | |
113 | + CERTIF_JURIS: boolean; | |
114 | + PER_IVARG17: number; | |
115 | + PER_ATER: number; | |
116 | + OpJurMis: boolean; | |
117 | + TIPO_RES_60: number; | |
118 | + FEB: string; | |
119 | + idPreciosConcidiones: number; | |
120 | + idprecioscondiciones: number; | |
121 | + ES_PROS?: any; | |
122 | + idCobrador: string; | |
123 | + ECI: boolean; | |
124 | + MUM: string; | |
125 | + TipoClienteAbonado: number; | |
126 | + EMAIL?: any; | |
127 | + FNAC?: any; | |
128 | + PAIS?: any; | |
129 | + control_saldos_vencidos: boolean; | |
130 | + Ignora_bloqueo_auto: boolean; | |
131 | + iva: IIva; | |
132 | + cuenta: ICuenta; | |
133 | + tipoComprobante: ITipoComprobante; | |
134 | + estadoCuenta: ICuenta; | |
135 | +} | |
136 | + | |
137 | +export interface ICuenta { | |
138 | + autorizado: number; | |
139 | + extracciones: number; | |
140 | + saldo: number; | |
141 | + facturasvencidas: number; | |
142 | +} | |
143 | + | |
144 | +export interface IIva { | |
145 | + ID: number; | |
146 | + NOMBRE: string; | |
147 | + ABR: string; | |
148 | + IFE: string; | |
149 | + IFH: string; | |
150 | + IFO: string; | |
151 | + TIP: string; | |
152 | + COI: number; | |
153 | +} | |
154 | + | |
155 | +export interface ITipoComprobante { | |
156 | + ID: string; | |
157 | + NOMBRE: string; | |
158 | + TIP: number; | |
159 | + CLA: number; | |
160 | + RES_SUM: number; | |
161 | +} |
src/app/services/articulo/articulo.service.spec.ts
... | ... | @@ -0,0 +1,12 @@ |
1 | +import { TestBed } from '@angular/core/testing'; | |
2 | + | |
3 | +import { ArticuloService } from './articulo.service'; | |
4 | + | |
5 | +describe('ArticuloService', () => { | |
6 | + beforeEach(() => TestBed.configureTestingModule({})); | |
7 | + | |
8 | + it('should be created', () => { | |
9 | + const service: ArticuloService = TestBed.get(ArticuloService); | |
10 | + expect(service).toBeTruthy(); | |
11 | + }); | |
12 | +}); |
src/app/services/articulo/articulo.service.ts
... | ... | @@ -0,0 +1,116 @@ |
1 | +import { Injectable } from '@angular/core'; | |
2 | +import { HttpClient } from '@angular/common/http'; | |
3 | +import { APP_SETTINGS } from '../../../etc/AppSettings'; | |
4 | +import { IArticulo } from '../../interfaces/IArticulo'; | |
5 | +import { ClienteService } from '../cliente/cliente.service'; | |
6 | +import { Observable } from 'rxjs'; | |
7 | + | |
8 | +@Injectable({ | |
9 | + providedIn: 'root' | |
10 | +}) | |
11 | +export class ArticuloService { | |
12 | + articulos: IArticulo[] = []; | |
13 | + articuloAcargar: IArticulo; | |
14 | + promoAcargar: IArticulo; | |
15 | + mostrar: string; | |
16 | + esPromoPersonalizada: boolean = false; | |
17 | + urlArticulos = `${APP_SETTINGS.apiDeboSuite}/articulos`; | |
18 | + urlPromociones = `${APP_SETTINGS.apiDeboSuite}/promociones`; | |
19 | + urlSinonimos = `${APP_SETTINGS.apiDeboSuite}/sinonimos`; | |
20 | + urlCategorias = `${APP_SETTINGS.apiDeboSuite}/categorias`; | |
21 | + urlComprobante = `${APP_SETTINGS.apiDeboSuite}/comprobante`; | |
22 | + | |
23 | + constructor(private http: HttpClient, private clienteService: ClienteService) { } | |
24 | + | |
25 | + getById(id) { | |
26 | + return this.http.get(`${this.urlArticulos}/${id}`); | |
27 | + } | |
28 | + | |
29 | + getAll() { | |
30 | + return this.http.get(`${this.urlArticulos}`); | |
31 | + } | |
32 | + | |
33 | + getAllWithPaginator(page: number = 1) { | |
34 | + return this.http.get(`${this.urlArticulos}/${page}`); | |
35 | + } | |
36 | + | |
37 | + setArticulos(articulo: IArticulo) { | |
38 | + for (let i = 0; i < this.articulos.length; i++) { | |
39 | + if (this.articulos[i].id === articulo.id) { | |
40 | + if (articulo.PRO) break; | |
41 | + this.articulos[i].cantidad++; | |
42 | + return; | |
43 | + } | |
44 | + } | |
45 | + this.articulos.unshift(articulo); | |
46 | + } | |
47 | + | |
48 | + getPromocionByCodigos(sector, codigo) { | |
49 | + return this.http.get(`${this.urlPromociones}/by-codigos/${sector}/${codigo}`); | |
50 | + } | |
51 | + | |
52 | + getPromociones(sector, codigo) { | |
53 | + return this.http.get(`${this.urlPromociones}/in-articulo/${sector}/${codigo}`); | |
54 | + } | |
55 | + | |
56 | + getPromocionSinonimos(sector, codigo) { | |
57 | + return this.http.get(`${this.urlSinonimos}/promo/${sector}/${codigo}`); | |
58 | + } | |
59 | + | |
60 | + getCategorias() { | |
61 | + return this.http.get(`${this.urlCategorias}`); | |
62 | + } | |
63 | + | |
64 | + getComponentes(sector, codigo) { | |
65 | + return this.http.get(`${this.urlPromociones}/articulos/${sector}/${codigo}`); | |
66 | + } | |
67 | + | |
68 | + pay(dataPago: any) { | |
69 | + return new Observable((observer) => { | |
70 | + this.clienteService.getById(-1) | |
71 | + .subscribe(cliente => { | |
72 | + let puntoVenta = parseInt(localStorage.getItem('impresoraPVE')); | |
73 | + this.markArticuloInPromoAsRemoved(); | |
74 | + this.http.post(`${this.urlComprobante}/guardar/${dataPago.medioPago}`, { | |
75 | + productos: this.articulos, | |
76 | + cliente: cliente, | |
77 | + origen: 'autoservicio', | |
78 | + codigoVendedor: 5, | |
79 | + puntoVenta: dataPago.medioPago === 9 ? -1 * puntoVenta : puntoVenta, | |
80 | + pedidoAnombreDe: dataPago.pedidoAnombreDe, | |
81 | + numeroPlanilla: '11111', | |
82 | + }) | |
83 | + .subscribe((data) => { | |
84 | + observer.next(data); | |
85 | + observer.complete(); | |
86 | + }); | |
87 | + }); | |
88 | + }); | |
89 | + } | |
90 | + | |
91 | + cleanShoppingCar() { | |
92 | + this.articuloAcargar = undefined; | |
93 | + this.promoAcargar = undefined; | |
94 | + this.articulos = []; | |
95 | + } | |
96 | + | |
97 | + setArticulosSinImagen(articulos: IArticulo[]) { | |
98 | + articulos.forEach((articulo: IArticulo) => { | |
99 | + articulo.imagenes = !articulo.imagenes ? [{ imagen: 'noImage.jpg' }] : | |
100 | + !articulo.imagenes.length ? [{ imagen: 'noImage.jpg' }] : articulo.imagenes; | |
101 | + }); | |
102 | + } | |
103 | + | |
104 | + markArticuloInPromoAsRemoved() { | |
105 | + this.articulos.forEach((articulo: IArticulo) => { | |
106 | + if (articulo.PRO) { | |
107 | + articulo.productos.forEach((articulo: IArticulo) => { | |
108 | + if (articulo.cantidadAdicionada === 0) { | |
109 | + articulo.cantidad = 0; | |
110 | + articulo.importeValorExtra = 0; | |
111 | + } | |
112 | + }); | |
113 | + } | |
114 | + }); | |
115 | + } | |
116 | +} |
src/app/services/cliente/cliente.service.spec.ts
... | ... | @@ -0,0 +1,12 @@ |
1 | +import { TestBed } from '@angular/core/testing'; | |
2 | + | |
3 | +import { ClienteService } from './cliente.service'; | |
4 | + | |
5 | +describe('ClienteService', () => { | |
6 | + beforeEach(() => TestBed.configureTestingModule({})); | |
7 | + | |
8 | + it('should be created', () => { | |
9 | + const service: ClienteService = TestBed.get(ClienteService); | |
10 | + expect(service).toBeTruthy(); | |
11 | + }); | |
12 | +}); |
src/app/services/cliente/cliente.service.ts
... | ... | @@ -0,0 +1,16 @@ |
1 | +import { Injectable } from '@angular/core'; | |
2 | +import { HttpClient } from '@angular/common/http'; | |
3 | +import { APP_SETTINGS } from "src/etc/AppSettings"; | |
4 | + | |
5 | +@Injectable({ | |
6 | + providedIn: 'root' | |
7 | +}) | |
8 | +export class ClienteService { | |
9 | + urlClientes = `${APP_SETTINGS.apiDeboSuite}/clientes`; | |
10 | + | |
11 | + constructor(private http: HttpClient) { } | |
12 | + | |
13 | + getById(id: number) { | |
14 | + return this.http.get(`${this.urlClientes}/get/${id}`); | |
15 | + } | |
16 | +} |
src/etc/AppSettings.ejemplo.ts