Commit 9abe1a439031090db9bd089a4bde63095e25d9de

Authored by Marcelo Puebla
1 parent c8b1956700
Exists in develop

Fix

Logica para detectar si la personalozacion de sinonimos son identicas para sumar cantidad
Showing 1 changed file with 12 additions and 5 deletions   Show diff stats
src/app/services/articulo/articulo.service.ts
1 import { Injectable } from '@angular/core'; 1 import { Injectable } from '@angular/core';
2 import { HttpClient } from '@angular/common/http'; 2 import { HttpClient } from '@angular/common/http';
3 import { APP_SETTINGS } from '../../../etc/AppSettings'; 3 import { APP_SETTINGS } from '../../../etc/AppSettings';
4 import { IArticulo } from '../../interfaces/IArticulo'; 4 import { IArticulo } from '../../interfaces/IArticulo';
5 import { ClienteService } from '../cliente/cliente.service'; 5 import { ClienteService } from '../cliente/cliente.service';
6 import { Observable } from 'rxjs'; 6 import { Observable } from 'rxjs';
7 7
8 @Injectable() 8 @Injectable()
9 export class ArticuloService { 9 export class ArticuloService {
10 carrito: IArticulo[] = []; 10 carrito: IArticulo[] = [];
11 articuloAcargar: IArticulo; 11 articuloAcargar: IArticulo;
12 promoAcargar: IArticulo; 12 promoAcargar: IArticulo;
13 mostrar: string; 13 mostrar: string;
14 esPromoPersonalizada = false; 14 esPromoPersonalizada = false;
15 urlDeboSuite = APP_SETTINGS.apiDeboSuite; 15 urlDeboSuite = APP_SETTINGS.apiDeboSuite;
16 medioPago: number; 16 medioPago: number;
17 idComanda: number; 17 idComanda: number;
18 total = 0; 18 total = 0;
19 19
20 constructor( 20 constructor(
21 private http: HttpClient, 21 private http: HttpClient,
22 private clienteService: ClienteService, 22 private clienteService: ClienteService,
23 ) { } 23 ) { }
24 24
25 getById(id) { 25 getById(id) {
26 return this.http.get(`${this.urlDeboSuite}/articulos/${id}`); 26 return this.http.get(`${this.urlDeboSuite}/articulos/${id}`);
27 } 27 }
28 28
29 getAll() { 29 getAll() {
30 return this.http.get(`${this.urlDeboSuite}/articulos/`); 30 return this.http.get(`${this.urlDeboSuite}/articulos/`);
31 } 31 }
32 32
33 getAllWithPaginator(page: number = 1) { 33 getAllWithPaginator(page: number = 1) {
34 return this.http.get(`${this.urlDeboSuite}/articulos/${page}`); 34 return this.http.get(`${this.urlDeboSuite}/articulos/${page}`);
35 } 35 }
36 36
37 substractCant(articulo: IArticulo) { 37 substractCant(articulo: IArticulo) {
38 if (articulo.cantidad === 1) return; 38 if (articulo.cantidad === 1) return;
39 articulo.cantidad--; 39 articulo.cantidad--;
40 this.calcularTotal(); 40 this.calcularTotal();
41 } 41 }
42 42
43 addCant(articulo: IArticulo) { 43 addCant(articulo: IArticulo) {
44 if (articulo.cantidad >= articulo.ExiVta) return;
45 articulo.cantidad++; 44 articulo.cantidad++;
46 this.calcularTotal(); 45 this.calcularTotal();
47 } 46 }
48 47
49 calcularTotal() { 48 calcularTotal() {
50 this.total = 0; 49 this.total = 0;
51 this.carrito.forEach(articulo => { 50 this.carrito.forEach(articulo => {
52 this.total += (articulo.PreVen * articulo.cantidad); 51 this.total += (articulo.PreVen * articulo.cantidad);
53 }); 52 });
54 } 53 }
55 54
56 setArticulo(articulo: IArticulo) { 55 setArticulo(articulo: IArticulo) {
57 articulo.cantidad = 1; 56 articulo.cantidad = 1;
58 for (const articuloCarrito of this.carrito) { 57 for (const articuloCarrito of this.carrito) {
59 if (articuloCarrito.id === articulo.id && !articulo.productos) { 58 if (articuloCarrito.id === articulo.id) {
60 articuloCarrito.cantidad++; 59 if (!articuloCarrito.productos) break;
61 this.calcularTotal(); 60 let samePromo = false
62 return; 61 articuloCarrito.productos.forEach((a, i) => {
62 samePromo = (a.id === articulo.productos[i].id);
63 });
64 if (samePromo) {
65 this.addCant(articuloCarrito);
66 return;
67 } else {
68 break;
69 }
63 } 70 }
64 } 71 }
65 this.setArticulosSinImagen([articulo]); 72 this.setArticulosSinImagen([articulo]);
66 this.carrito.unshift(articulo); 73 this.carrito.unshift(articulo);
67 this.calcularTotal(); 74 this.calcularTotal();
68 } 75 }
69 76
70 deleteArticulo(index: number) { 77 deleteArticulo(index: number) {
71 this.carrito.splice(index, 1); 78 this.carrito.splice(index, 1);
72 this.calcularTotal(); 79 this.calcularTotal();
73 } 80 }
74 81
75 pay(dataPago: any) { 82 pay(dataPago: any) {
76 return new Observable((observer) => { 83 return new Observable((observer) => {
77 this.clienteService.getById(-1) 84 this.clienteService.getById(-1)
78 .subscribe(cliente => { 85 .subscribe(cliente => {
79 this.markArticuloInPromoAsRemoved(); 86 this.markArticuloInPromoAsRemoved();
80 this.http.post(`${this.urlDeboSuite}/comprobante/guardar/${this.medioPago}`, { 87 this.http.post(`${this.urlDeboSuite}/comprobante/guardar/${this.medioPago}`, {
81 productos: this.carrito, 88 productos: this.carrito,
82 cliente, 89 cliente,
83 origen: 'autoservicio', 90 origen: 'autoservicio',
84 codigoVendedor: 5, 91 codigoVendedor: 5,
85 puntoVenta: APP_SETTINGS.puntoVenta, 92 puntoVenta: APP_SETTINGS.puntoVenta,
86 pedidoAnombreDe: dataPago.pedidoAnombreDe, 93 pedidoAnombreDe: dataPago.pedidoAnombreDe,
87 numeroPlanilla: APP_SETTINGS.numeroPlanilla, 94 numeroPlanilla: APP_SETTINGS.numeroPlanilla,
88 pedidoParaLlevar: localStorage.getItem('pedidoParaLlevar'), 95 pedidoParaLlevar: localStorage.getItem('pedidoParaLlevar'),
89 terminal: APP_SETTINGS.terminal, 96 terminal: APP_SETTINGS.terminal,
90 contactLess: dataPago.contactLess === 'true' ? true : false, 97 contactLess: dataPago.contactLess === 'true' ? true : false,
91 }) 98 })
92 .subscribe((data) => { 99 .subscribe((data) => {
93 observer.next(data); 100 observer.next(data);
94 observer.complete(); 101 observer.complete();
95 }, err => { 102 }, err => {
96 observer.error(err); 103 observer.error(err);
97 observer.complete(); 104 observer.complete();
98 }); 105 });
99 }); 106 });
100 }); 107 });
101 } 108 }
102 109
103 cleanShoppingCar() { 110 cleanShoppingCar() {
104 this.articuloAcargar = undefined; 111 this.articuloAcargar = undefined;
105 this.promoAcargar = undefined; 112 this.promoAcargar = undefined;
106 this.carrito = []; 113 this.carrito = [];
107 this.calcularTotal(); 114 this.calcularTotal();
108 } 115 }
109 116
110 setArticulosSinImagen(articulos: IArticulo[]) { 117 setArticulosSinImagen(articulos: IArticulo[]) {
111 articulos.forEach((articulo: IArticulo) => { 118 articulos.forEach((articulo: IArticulo) => {
112 articulo.imagenes = !articulo.imagenes ? [{ imagen: 'noImage.jpg' }] : 119 articulo.imagenes = !articulo.imagenes ? [{ imagen: 'noImage.jpg' }] :
113 !articulo.imagenes.length ? [{ imagen: 'noImage.jpg' }] : articulo.imagenes; 120 !articulo.imagenes.length ? [{ imagen: 'noImage.jpg' }] : articulo.imagenes;
114 }); 121 });
115 } 122 }
116 123
117 markArticuloInPromoAsRemoved() { 124 markArticuloInPromoAsRemoved() {
118 this.carrito.forEach((articuloCarrito: IArticulo) => { 125 this.carrito.forEach((articuloCarrito: IArticulo) => {
119 if (articuloCarrito.PRO) { 126 if (articuloCarrito.PRO) {
120 articuloCarrito.productos.forEach((articulo: IArticulo) => { 127 articuloCarrito.productos.forEach((articulo: IArticulo) => {
121 if (articulo.cantidadAdicionada === 0) { 128 if (articulo.cantidadAdicionada === 0) {
122 articulo.cantidad = 0; 129 articulo.cantidad = 0;
123 articulo.importeValorExtra = 0; 130 articulo.importeValorExtra = 0;
124 } 131 }
125 }); 132 });
126 } 133 }
127 }); 134 });
128 } 135 }
129 136
130 changeArticulo(articuloToChange: IArticulo, articuloData: any) { 137 changeArticulo(articuloToChange: IArticulo, articuloData: any) {
131 articuloToChange.CODA = articuloData.CodArt; 138 articuloToChange.CODA = articuloData.CodArt;
132 articuloToChange.CodArt = articuloData.CodArt; 139 articuloToChange.CodArt = articuloData.CodArt;
133 articuloToChange.SECA = articuloData.CodSec; 140 articuloToChange.SECA = articuloData.CodSec;
134 articuloToChange.CodSec = articuloData.CodSec; 141 articuloToChange.CodSec = articuloData.CodSec;
135 articuloToChange.PreVen = articuloData.PreVen; 142 articuloToChange.PreVen = articuloData.PreVen;
136 articuloToChange.id = articuloData.id; 143 articuloToChange.id = articuloData.id;
137 articuloToChange.DET_LAR = articuloData.DET_LAR; 144 articuloToChange.DET_LAR = articuloData.DET_LAR;
138 articuloToChange.DetArt = articuloData.DetArt; 145 articuloToChange.DetArt = articuloData.DetArt;
139 articuloToChange.MKT_DESC = articuloData.MKT_DESC; 146 articuloToChange.MKT_DESC = articuloData.MKT_DESC;
140 } 147 }
141 } 148 }