producto.service.ts
3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { APP_SETTINGS } from 'src/etc/AppSettings';
import { Producto } from '../wrappers/producto';
import { ClienteService } from './cliente.service';
@Injectable({
providedIn: 'root'
})
export class ProductoService {
productos: Producto[] = [];
productoAcargar: Producto;
promoAcargar: Producto;
mostrar: string;
esPromoPersonalizada: boolean = false;
constructor(private http: HttpClient, private clienteService: ClienteService) { }
getProductoById(id): Observable<any> {
return this.http.get(`${APP_SETTINGS.apiDeboSuite}/articulos/${id}`);
}
getAll(): Observable<any> {
return this.http.get(`${APP_SETTINGS.apiDeboSuite}/articulos/`);
}
getAllWithPaginator(page: number = 1): Observable<any> {
return this.http.get(`${APP_SETTINGS.apiDeboSuite}/articulos/${page}`);
}
setProductos(producto: Producto) {
for (let i = 0; i < this.productos.length; i++) {
if (this.productos[i].id === producto.id) {
if (producto.PRO) {
if (this.promosIdenticas(this.productos[i], producto)) {
this.productos[i].cantidad++;
return;
} else {
break;
}
}
this.productos[i].cantidad++;
return;
}
}
this.productos.unshift(producto);
}
getPromocionByCodigos(sector, codigo): Observable<any> {
var url = `${APP_SETTINGS.apiDeboSuite}/promociones/by-codigos/${sector}/${codigo}`;
// var url = `${appSettings.apiUrl}/promociones/by-codigos/${2}/${7}`;
return this.http.get(url);
}
getPromociones(sector, codigo): Observable<any> {
var url = `${APP_SETTINGS.apiDeboSuite}/promociones/incluir-articulo/${sector}/${codigo}`;
// var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${2}/${1306}`;
return this.http.get(url);
}
getPromocionSinonimos(sector, codigo): Observable<any> {
var url = `${APP_SETTINGS.apiDeboSuite}/sinonimos/promo/${sector}/${codigo}`;
// var url = `${appSettings.apiUrl}/sinonimos/promo/${2}/${7}`;
return this.http.get(url);
}
getCategorias() {
return this.http.get(`${APP_SETTINGS.apiDeboSuite}/categorias`);
}
pagar(dataPago: any) {
return new Observable((observer) => {
this.clienteService.getClienteById(-1).subscribe(cliente => {
let puntoVenta = parseInt(localStorage.getItem('impresoraPVE'));
this.http.post(`${APP_SETTINGS.apiDeboSuite}/comprobante/guardar/${dataPago.medioPago}`, {
productos: this.productos,
cliente: cliente,
origen: 'autoservicio',
codigoVendedor: 5,
puntoVenta: dataPago.medioPago === 9 ? -1 * puntoVenta : puntoVenta,
pedidoAnombreDe: dataPago.pedidoAnombreDe,
}).subscribe((data) => {
observer.next(data);
observer.complete();
});
});
});
}
private promosIdenticas(promoEnCarrito: Producto, promo: Producto) {
var sonIdenticas = true;
var productosPromoCarrito = promoEnCarrito.productos;
var productosPromoAcargar = promo.productos;
if (productosPromoCarrito.length !== productosPromoAcargar.length) {
return false;
}
for (let i = 0; i < productosPromoCarrito.length; i++) {
if (productosPromoCarrito[i].id !== productosPromoAcargar[i].id) {
return false;
}
}
return sonIdenticas;
}
}