Commit 1cbb6ed28588197f0365c043a7b970be62f13b4b

Authored by Marcelo Puebla
1 parent 07193a22b4
Exists in master and in 1 other branch validar_pve

Cambio en servicio pagar, agregado get cliente por ID.

src/app/components/confirmacion-carrito/confirmacion-carrito.component.html
1 <div 1 <div
2 *ngIf="!compraConEfectivofinalizada && !compraConQRfinalizada" 2 *ngIf="!compraConEfectivofinalizada && !compraConQRfinalizada"
3 class="row m-0 fade-in bg-primary-gradient disable-user-select" 3 class="row m-0 fade-in bg-primary-gradient disable-user-select"
4 (click)="reiniciarTimer()"> 4 (click)="reiniciarTimer()">
5 <div class="col-12 p-0 vh-100"> 5 <div class="col-12 p-0 vh-100">
6 <!-- TOP HEADER --> 6 <!-- TOP HEADER -->
7 <app-header></app-header> 7 <app-header></app-header>
8 8
9 <!-- NOMBRE DE SECCION --> 9 <!-- NOMBRE DE SECCION -->
10 <div class="row m-0"> 10 <div class="row m-0">
11 <div class="col-12 p-0"> 11 <div class="col-12 p-0">
12 <p class="h5 py-1 bg-gray text-muted text-center m-0"> 12 <p class="h5 py-1 bg-gray text-muted text-center m-0">
13 &nbsp; 13 &nbsp;
14 </p> 14 </p>
15 </div> 15 </div>
16 </div> 16 </div>
17 17
18 <div class="row m-0"> 18 <div class="row m-0">
19 <div class="col-10 px-1"> 19 <div class="col-10 px-1">
20 <!-- TEXTO DE IZQUIERDA --> 20 <!-- TEXTO DE IZQUIERDA -->
21 <div *ngIf="!verQR" class="row mx-2 mt-4 text-white"> 21 <div *ngIf="!verQR" class="row mx-2 mt-4 text-white">
22 <div class="col-sm-auto my-auto"> 22 <div class="col-sm-auto my-auto">
23 <p class="h2">Mi Compra 23 <p class="h2">Mi Compra
24 <i class="fa fa-shopping-cart "></i> 24 <i class="fa fa-shopping-cart "></i>
25 </p> 25 </p>
26 </div> 26 </div>
27 <div class="col-sm-9 my-auto"> 27 <div class="col-sm-9 my-auto">
28 <p class="h4">Por favor, controle y confirme su compra.</p> 28 <p class="h4">Por favor, controle y confirme su compra.</p>
29 </div> 29 </div>
30 </div> 30 </div>
31 31
32 <div [ngClass]="{'mt-5': verQR}" class="row m-0"> 32 <div [ngClass]="{'mt-5': verQR}" class="row m-0">
33 <!-- GRILLA DE PRODUCTOS DE MI COMPRA --> 33 <!-- GRILLA DE PRODUCTOS DE MI COMPRA -->
34 <div *ngIf="!verQR" class="col-sm-9 pr-1"> 34 <div *ngIf="!verQR" class="col-sm-9 pr-1">
35 <div class="row mx-1 pr-1 vh-70 overflow-scroll text-dark"> 35 <div class="row mx-1 pr-1 vh-70 overflow-scroll text-dark">
36 <div class="mh-100 col-4 p-2" *ngFor="let producto of productos"> 36 <div class="mh-100 col-4 p-2" *ngFor="let producto of productos">
37 <div class="row m-0 h-100 bg-white rounded-sm shadow border-0"> 37 <div class="row m-0 h-100 bg-white rounded-sm shadow border-0">
38 <div class="d-flex align-items-end flex-column"> 38 <div class="d-flex align-items-end flex-column">
39 <div class="w-100"> 39 <div class="w-100">
40 <img 40 <img
41 src="{{apiImagenes}}/imagenes/{{producto.imagenes[0].imagen}}" 41 src="{{apiImagenes}}/imagenes/{{producto.imagenes[0].imagen}}"
42 class="shadow rounded-sm w-100 m-auto"> 42 class="shadow rounded-sm w-100 m-auto">
43 </div> 43 </div>
44 <div class="w-100 pt-2 px-2"> 44 <div class="w-100 pt-2 px-2">
45 <p class="h6 text-left"> 45 <p class="h6 text-left">
46 <small class="font-weight-bold"> 46 <small class="font-weight-bold">
47 {{producto.DET_LAR}} 47 {{producto.DET_LAR}}
48 </small> 48 </small>
49 </p> 49 </p>
50 <div *ngIf="producto.tieneSinonimos"> 50 <div *ngIf="producto.tieneSinonimos">
51 <p *ngFor="let p of producto.productos" class="h6 text-left m-0"> 51 <p *ngFor="let p of producto.productos" class="h6 text-left m-0">
52 <small> 52 <small>
53 - {{p.cantidad * producto.cantidad}} {{p.DET_LAR}} 53 - {{p.cantidad * producto.cantidad}} {{p.DET_LAR}}
54 </small> 54 </small>
55 </p> 55 </p>
56 </div> 56 </div>
57 </div> 57 </div>
58 <div class="w-100 d-flex justify-content-between mt-auto mb-1 px-2"> 58 <div class="w-100 d-flex justify-content-between mt-auto mb-1 px-2">
59 <span class="text-left m-0 px-1 h6"> 59 <span class="text-left m-0 px-1 h6">
60 {{producto.cantidad}} x {{producto.PreVen | currency}} 60 {{producto.cantidad}} x {{producto.PreVen | currency}}
61 </span> 61 </span>
62 <span class="text-right m-0 px-1 h6"> 62 <span class="text-right m-0 px-1 h6">
63 {{producto.cantidad * producto.PreVen | currency}} 63 {{producto.cantidad * producto.PreVen | currency}}
64 </span> 64 </span>
65 </div> 65 </div>
66 </div> 66 </div>
67 </div> 67 </div>
68 </div> 68 </div>
69 </div> 69 </div>
70 </div> 70 </div>
71 71
72 <!-- CODIGO QR --> 72 <!-- CODIGO QR -->
73 <div *ngIf="verQR" class="col-sm-9"> 73 <div *ngIf="verQR" class="col-sm-9">
74 <div class="col-6 offset-3 border-0 mb-auto"> 74 <div class="col-6 offset-3 border-0 mb-auto">
75 <img 75 <img
76 src="{{apiImagenes}}/imagenes/qrmp.jpg" 76 src="{{apiImagenes}}/imagenes/qrmp.jpg"
77 class="w-100 mx-auto d-block shadow rounded-sm"> 77 class="w-100 mx-auto d-block shadow rounded-sm">
78 </div> 78 </div>
79 </div> 79 </div>
80 80
81 <!-- TICKET --> 81 <!-- TICKET -->
82 <div class="col-sm-3 px-1"> 82 <div class="col-sm-3 px-1">
83 <div class="card shadow"> 83 <div class="card shadow">
84 <div class="card-body"> 84 <div class="card-body">
85 <p class="h5 card-title">Su Ticket</p> 85 <p class="h5 card-title">Su Ticket</p>
86 <div class="row mt-4 m-0"> 86 <div class="row mt-4 m-0">
87 <div class="col-12 p-0 mb-2"> 87 <div class="col-12 p-0 mb-2">
88 <p class="h6 m-0 card-text text-left"> 88 <p class="h6 m-0 card-text text-left">
89 <small class="font-weight-bold">DESCRIPCIÓN</small> 89 <small class="font-weight-bold">DESCRIPCIÓN</small>
90 </p> 90 </p>
91 <p class="h6 m-0 card-text text-left"> 91 <p class="h6 m-0 card-text text-left">
92 <small class="font-weight-bold">CANTIDAD X PRECIO UNITARIO</small> 92 <small class="font-weight-bold">CANTIDAD X PRECIO UNITARIO</small>
93 </p> 93 </p>
94 </div> 94 </div>
95 </div> 95 </div>
96 <div class="row vh-50 px-2 overflow-scroll m-0"> 96 <div class="row vh-50 px-2 overflow-scroll m-0">
97 <div class="col-12 p-0 mb-2" *ngFor="let producto of productos"> 97 <div class="col-12 p-0 mb-2" *ngFor="let producto of productos">
98 <p class="h6 m-0 card-text text-left"> 98 <p class="h6 m-0 card-text text-left">
99 <small>{{producto.DET_LAR}}</small> 99 <small>{{producto.DET_LAR}}</small>
100 </p> 100 </p>
101 <div class="row d-flex justify-content-between m-0"> 101 <div class="row d-flex justify-content-between m-0">
102 <div class="col p-0"> 102 <div class="col p-0">
103 <p class="h6 m-0 card-text text-left"> 103 <p class="h6 m-0 card-text text-left">
104 <small>{{producto.cantidad}} x {{producto.PreVen | currency}}</small> 104 <small>{{producto.cantidad}} x {{producto.PreVen | currency}}</small>
105 </p> 105 </p>
106 </div> 106 </div>
107 <div class="col p-0"> 107 <div class="col p-0">
108 <p class="h6 m-0 card-text text-right"> 108 <p class="h6 m-0 card-text text-right">
109 <small>{{(producto.PreVen) * (producto.cantidad) | currency}}</small> 109 <small>{{(producto.PreVen) * (producto.cantidad) | currency}}</small>
110 </p> 110 </p>
111 </div> 111 </div>
112 </div> 112 </div>
113 </div> 113 </div>
114 </div> 114 </div>
115 <p class="h4 font-weight-bold card-text text-right mt-3 mb-0"> 115 <p class="h4 font-weight-bold card-text text-right mt-3 mb-0">
116 Total {{getTotal() | currency}} 116 Total {{getTotal() | currency}}
117 </p> 117 </p>
118 </div> 118 </div>
119 </div> 119 </div>
120 </div> 120 </div>
121 </div> 121 </div>
122 122
123 <!-- OPCIONES ABAJO DERECHA --> 123 <!-- OPCIONES ABAJO DERECHA -->
124 <div class="row m-0 fixed-bottom"> 124 <div class="row m-0 fixed-bottom">
125 <div class="col-sm-2 offset-sm-10 p-0 mt-auto"> 125 <div class="col-sm-2 offset-sm-10 p-0 mt-auto">
126 <div class="card m-2 rounded-top-sm mt-auto blue-gradient border-0"> 126 <div class="card m-2 rounded-top-sm mt-auto blue-gradient border-0">
127 <div class="card-body row m-0 p-1"> 127 <div class="card-body row m-0 p-1">
128 <div class="col-12 p-3"> 128 <div class="col-12 p-3">
129 <button 129 <button
130 type="button" 130 type="button"
131 class="btn btn-block btn-light shadow btn-sm shadow" 131 class="btn btn-block btn-light shadow btn-sm shadow"
132 (click)="volverPreviousPage()"> 132 (click)="volverPreviousPage()">
133 <span class="pr-2">Volver</span> 133 <span class="pr-2">Volver</span>
134 <i class="fa fa-undo text-warning"></i> 134 <i class="fa fa-undo text-warning"></i>
135 </button> 135 </button>
136 <button 136 <button
137 type="button" 137 type="button"
138 class="btn btn-block btn-light shadow btn-sm shadow" 138 class="btn btn-block btn-light shadow btn-sm shadow"
139 [routerLink]="['/cancelar-compra']"> 139 [routerLink]="['/cancelar-compra']">
140 <span class="pr-2">Cancelar</span> 140 <span class="pr-2">Cancelar</span>
141 <i class="fa fa-times text-danger"></i> 141 <i class="fa fa-times text-danger"></i>
142 </button> 142 </button>
143 </div> 143 </div>
144 </div> 144 </div>
145 </div> 145 </div>
146 </div> 146 </div>
147 </div> 147 </div>
148 </div> 148 </div>
149 149
150 <!-- FORMAS DE PAGO --> 150 <!-- FORMAS DE PAGO -->
151 <div *ngIf="!verQR" class="col-2 px-1"> 151 <div *ngIf="!verQR" class="col-2 px-1">
152 <p class="h4 text-white text-center mt-4 mx-2 pb-2 border-bottom border-white"> 152 <p class="h4 text-white text-center mt-4 mx-2 pb-2 border-bottom border-white">
153 Forma de pago 153 Forma de pago
154 </p> 154 </p>
155 155
156 <!-- EFECTIVO --> 156 <!-- EFECTIVO -->
157 <div 157 <div
158 class="row card-effect card-forma-pago mx-1 my-3 rounded-sm shadow-sm bg-white" 158 class="row card-effect card-forma-pago mx-1 my-3 rounded-sm shadow-sm bg-white"
159 (click)="pagar('efectivo')"> 159 (click)="pagar(1)">
160 <div class="col-7 text-center my-auto px-2"> 160 <div class="col-7 text-center my-auto px-2">
161 <span class="h5 font-weight-bold">Efectivo</span> 161 <span class="h5 font-weight-bold">Efectivo</span>
162 </div> 162 </div>
163 <div class="col-5 my-auto p-0"> 163 <div class="col-5 my-auto p-0">
164 <img 164 <img
165 src="{{apiImagenes}}/imagenes/efectivo.png" 165 src="{{apiImagenes}}/imagenes/efectivo.png"
166 class="w-100 float-right"> 166 class="w-100 float-right">
167 </div> 167 </div>
168 </div> 168 </div>
169 169
170 <!-- TARJETA --> 170 <!-- TARJETA -->
171 <div class="row card-effect card-forma-pago mx-1 my-3 rounded-sm shadow-sm bg-white"> 171 <div class="row card-effect card-forma-pago mx-1 my-3 rounded-sm shadow-sm bg-white">
172 <div class="col-7 text-center my-auto px-2"> 172 <div class="col-7 text-center my-auto px-2">
173 <span class="h5 font-weight-bold">Tarjeta</span> 173 <span class="h5 font-weight-bold">Tarjeta</span>
174 </div> 174 </div>
175 <div class="col-5 my-auto p-0"> 175 <div class="col-5 my-auto p-0">
176 <img 176 <img
177 src="{{apiImagenes}}/imagenes/tarjeta.png" 177 src="{{apiImagenes}}/imagenes/tarjeta.png"
178 class="w-100 float-right"> 178 class="w-100 float-right">
179 </div> 179 </div>
180 </div> 180 </div>
181 181
182 <!-- QR --> 182 <!-- QR -->
183 <div 183 <div
184 class="row card-effect card-forma-pago mx-1 my-3 rounded-sm shadow-sm bg-white" 184 class="row card-effect card-forma-pago mx-1 my-3 rounded-sm shadow-sm bg-white"
185 (click)="pagar('electronico')"> 185 (click)="pagar(9)">
186 <div class="col-7 text-center my-auto px-2"> 186 <div class="col-7 text-center my-auto px-2">
187 <span class="h5 font-weight-bold">Pago Electrónico</span> 187 <span class="h5 font-weight-bold">Pago Electrónico</span>
188 </div> 188 </div>
189 <div class="col-5 my-auto p-0"> 189 <div class="col-5 my-auto p-0">
190 <img 190 <img
191 src="{{apiImagenes}}/imagenes/qr.png" 191 src="{{apiImagenes}}/imagenes/qr.png"
192 class="w-100 float-right"> 192 class="w-100 float-right">
193 </div> 193 </div>
194 </div> 194 </div>
195 </div> 195 </div>
196 </div> 196 </div>
197 197
198 </div> 198 </div>
199 </div> 199 </div>
200 200
201 <div 201 <div
202 *ngIf="compraConQRfinalizada" 202 *ngIf="compraConQRfinalizada"
203 [routerLink]="['/mensaje-final']" 203 [routerLink]="['/mensaje-final']"
204 class="row m-0 fade-in bg-primary-gradient disable-user-select vh-100"> 204 class="row m-0 fade-in bg-primary-gradient disable-user-select vh-100">
205 <div class="col-12 text-center text-white my-auto"> 205 <div class="col-12 text-center text-white my-auto">
206 <p class="font-weight-bold display-4"> 206 <p class="font-weight-bold display-4">
207 Su pago fue<br> 207 Su pago fue<br>
208 acreditado 208 acreditado
209 exitosamente 209 exitosamente
210 </p> 210 </p>
211 <p class="font-weight-bold display-4">Recuerde retirar su ticket</p> 211 <p class="font-weight-bold display-4">Recuerde retirar su ticket</p>
212 </div> 212 </div>
213 <div class="row z-index-0 fixed-top m-0 w-100"> 213 <div class="row z-index-0 fixed-top m-0 w-100">
214 <div class="col-12 p-3"> 214 <div class="col-12 p-3">
215 <img class="w-15 float-right" src="../../../assets/img/debo-gray.png"> 215 <img class="w-15 float-right" src="../../../assets/img/debo-gray.png">
216 </div> 216 </div>
217 </div> 217 </div>
218 </div> 218 </div>
219 219
220 <div 220 <div
221 *ngIf="compraConEfectivofinalizada" 221 *ngIf="compraConEfectivofinalizada"
222 [routerLink]="['/mensaje-final']" 222 [routerLink]="['/mensaje-final']"
223 class="row m-0 fade-in bg-primary-gradient disable-user-select vh-100"> 223 class="row m-0 fade-in bg-primary-gradient disable-user-select vh-100">
224 <div class="col-12 text-center text-white my-auto"> 224 <div class="col-12 text-center text-white my-auto">
225 <p class="font-weight-bold display-4"> 225 <p class="font-weight-bold display-4">
226 Retire su ticket<br> 226 Retire su ticket<br>
227 y diríjase a caja para<br> 227 y diríjase a caja para<br>
228 efectuar el pago. 228 efectuar el pago.
229 </p> 229 </p>
230 </div> 230 </div>
231 <div class="row z-index-0 fixed-top m-0 w-100"> 231 <div class="row z-index-0 fixed-top m-0 w-100">
232 <div class="col-12 p-3"> 232 <div class="col-12 p-3">
233 <img class="w-15 float-right" src="../../../assets/img/debo-gray.png"> 233 <img class="w-15 float-right" src="../../../assets/img/debo-gray.png">
234 </div> 234 </div>
235 </div> 235 </div>
236 </div> 236 </div>
237 237
src/app/components/confirmacion-carrito/confirmacion-carrito.component.ts
1 import { Component, OnInit, OnDestroy } from '@angular/core'; 1 import { Component, OnInit, OnDestroy } from '@angular/core';
2 import { appSettings } from 'src/etc/AppSettings'; 2 import { appSettings } from 'src/etc/AppSettings';
3 import { Location } from '@angular/common'; 3 import { Location } from '@angular/common';
4 import { ProductoService } from 'src/app/services/producto.service'; 4 import { ProductoService } from 'src/app/services/producto.service';
5 import { Producto } from 'src/app/wrappers/producto'; 5 import { Producto } from 'src/app/wrappers/producto';
6 import { Router } from '@angular/router'; 6 import { Router } from '@angular/router';
7 import { Subscription } from 'rxjs'; 7 import { Subscription } from 'rxjs';
8 8
9 @Component({ 9 @Component({
10 selector: 'app-confirmacion-carrito', 10 selector: 'app-confirmacion-carrito',
11 templateUrl: './confirmacion-carrito.component.html', 11 templateUrl: './confirmacion-carrito.component.html',
12 styleUrls: ['./confirmacion-carrito.component.scss'] 12 styleUrls: ['./confirmacion-carrito.component.scss']
13 }) 13 })
14 export class ConfirmacionCarritoComponent implements OnInit, OnDestroy { 14 export class ConfirmacionCarritoComponent implements OnInit, OnDestroy {
15 15
16 private productos: Producto[] = []; 16 private productos: Producto[] = [];
17 private total: number = 0; 17 private total: number = 0;
18 private apiImagenes: string = appSettings.apiImagenes; 18 private apiImagenes: string = appSettings.apiImagenes;
19 private timerReposo: any; 19 private timerReposo: any;
20 private compraConEfectivofinalizada: boolean = false; 20 private compraConEfectivofinalizada: boolean = false;
21 private compraConQRfinalizada: boolean = false; 21 private compraConQRfinalizada: boolean = false;
22 private verQR: boolean = false; 22 private verQR: boolean = false;
23 private subscribePago: Subscription; 23 private subscribePago: Subscription;
24 24
25 constructor( 25 constructor(
26 private location: Location, 26 private location: Location,
27 private productoService: ProductoService, 27 private productoService: ProductoService,
28 private router: Router 28 private router: Router
29 ) { } 29 ) { }
30 30
31 ngOnInit() { 31 ngOnInit() {
32 32
33 this.timerReposo = setTimeout(() => { 33 this.timerReposo = setTimeout(() => {
34 34
35 this.router.navigate(['cancelar-compra']); 35 this.router.navigate(['cancelar-compra']);
36 }, 90000) 36 }, 90000)
37 this.productos = this.productoService.productos; 37 this.productos = this.productoService.productos;
38 } 38 }
39 39
40 ngOnDestroy() { 40 ngOnDestroy() {
41 41
42 this.subscribePago.unsubscribe(); 42 this.subscribePago.unsubscribe();
43 clearTimeout(this.timerReposo); 43 clearTimeout(this.timerReposo);
44 } 44 }
45 45
46 volverPreviousPage() { 46 volverPreviousPage() {
47 47
48 this.subscribePago.unsubscribe(); 48 this.subscribePago.unsubscribe();
49 49
50 if (this.verQR) { 50 if (this.verQR) {
51 this.verQR = !this.verQR; 51 this.verQR = !this.verQR;
52 return; 52 return;
53 } 53 }
54 54
55 this.location.back(); 55 this.location.back();
56 } 56 }
57 57
58 getTotal() { 58 getTotal() {
59 59
60 var subTotal = 0; 60 var subTotal = 0;
61 this.productos.forEach(producto => { 61 this.productos.forEach(producto => {
62 62
63 subTotal = subTotal + (producto.PreVen * producto.cantidad); 63 subTotal = subTotal + (producto.PreVen * producto.cantidad);
64 }); 64 });
65 return this.total = subTotal; 65 return this.total = subTotal;
66 } 66 }
67 67
68 reiniciarTimer() { 68 reiniciarTimer() {
69 69
70 clearTimeout(this.timerReposo); 70 clearTimeout(this.timerReposo);
71 this.timerReposo = setTimeout(() => { 71 this.timerReposo = setTimeout(() => {
72 72
73 this.router.navigate(['cancelar-compra']); 73 this.router.navigate(['cancelar-compra']);
74 }, 90000) 74 }, 90000)
75 } 75 }
76 76
77 //#region METODOS PARA LA FORMA DE PAGO 77 //#region METODOS PARA LA FORMA DE PAGO
78 pagar(medioPago: string) { 78 pagar(medioPago: number) {
79 79
80 if (medioPago == 'electronico') { 80 if (medioPago === 9) {
81 81
82 this.verQR = true; 82 this.verQR = true;
83 } 83 }
84 84
85 this.subscribePago = this.productoService.pagar(medioPago) 85 this.productoService.getClienteById(-1)
86 .subscribe(() => { 86 .subscribe(cliente => {
87 this.subscribePago = this.productoService.pagar(medioPago, cliente)
88 .subscribe(() => {
87 89
88 clearTimeout(this.timerReposo); 90 clearTimeout(this.timerReposo);
89 91
90 if (medioPago == 'efectivo') { 92 if (medioPago === 1) {
91 93
92 this.compraConEfectivofinalizada = true; 94 this.compraConEfectivofinalizada = true;
93 } else if (medioPago == 'electronico') { 95 } else if (medioPago === 9) {
94 96
95 this.compraConQRfinalizada = true; 97 this.compraConQRfinalizada = true;
96 } 98 }
97 99
98 setTimeout(() => { 100 setTimeout(() => {
99 101
100 this.router.navigate(['mensaje-final']); 102 this.router.navigate(['mensaje-final']);
101 }, 10000); 103 }, 10000);
102 }, err => { 104 }, err => {
103 console.log(err); 105 console.log(err);
104 alert('algo salió mal'); 106 alert('algo salió mal');
105 }) 107 })
108 }, console.error)
106 } 109 }
107 //#endregion 110 //#endregion
108 111
109 } 112 }
110 113
src/app/services/producto.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 { Observable } from 'rxjs'; 3 import { Observable } from 'rxjs';
4 import { appSettings } from 'src/etc/AppSettings'; 4 import { appSettings } from 'src/etc/AppSettings';
5 import { Producto } from '../wrappers/producto'; 5 import { Producto } from '../wrappers/producto';
6 6
7 @Injectable({ 7 @Injectable({
8 providedIn: 'root' 8 providedIn: 'root'
9 }) 9 })
10 export class ProductoService { 10 export class ProductoService {
11 11
12 productos: Producto[] = []; 12 productos: Producto[] = [];
13 productoAcargar: Producto; 13 productoAcargar: Producto;
14 promoAcargar: Producto; 14 promoAcargar: Producto;
15 mostrar: string; 15 mostrar: string;
16 esPromoPersonalizada: boolean = false; 16 esPromoPersonalizada: boolean = false;
17 17
18 constructor(private http: HttpClient) { } 18 constructor(private http: HttpClient) { }
19 19
20 getProductoById(id): Observable<any> { 20 getProductoById(id): Observable<any> {
21 21
22 return this.http.get(`${appSettings.apiUrl}/articulos/${id}`); 22 return this.http.get(`${appSettings.apiUrl}/articulos/${id}`);
23 } 23 }
24 24
25 getAll(): Observable<any> { 25 getAll(): Observable<any> {
26 26
27 return this.http.get(`${appSettings.apiUrl}/articulos/`); 27 return this.http.get(`${appSettings.apiUrl}/articulos/`);
28 } 28 }
29 29
30 getAllWithPaginator(page: number = 1): Observable<any> { 30 getAllWithPaginator(page: number = 1): Observable<any> {
31 31
32 return this.http.get(`${appSettings.apiUrl}/articulos/${page}`); 32 return this.http.get(`${appSettings.apiUrl}/articulos/${page}`);
33 } 33 }
34 34
35 setProductos(producto: Producto) { 35 setProductos(producto: Producto) {
36 36
37 for (let i = 0; i < this.productos.length; i++) { 37 for (let i = 0; i < this.productos.length; i++) {
38 38
39 if (this.productos[i].id === producto.id) { 39 if (this.productos[i].id === producto.id) {
40 40
41 if (producto.PRO) { 41 if (producto.PRO) {
42 if (this.promosIdenticas(this.productos[i], producto)) { 42 if (this.promosIdenticas(this.productos[i], producto)) {
43 this.productos[i].cantidad++; 43 this.productos[i].cantidad++;
44 return; 44 return;
45 } else { 45 } else {
46 break; 46 break;
47 } 47 }
48 } 48 }
49 this.productos[i].cantidad++; 49 this.productos[i].cantidad++;
50 return; 50 return;
51 } 51 }
52 } 52 }
53 53
54 this.productos.unshift(producto); 54 this.productos.unshift(producto);
55 } 55 }
56 56
57 getPromocionByCodigos(sector, codigo): Observable<any> { 57 getPromocionByCodigos(sector, codigo): Observable<any> {
58 58
59 var url = `${appSettings.apiUrl}/promociones/by-codigos/${sector}/${codigo}`; 59 var url = `${appSettings.apiUrl}/promociones/by-codigos/${sector}/${codigo}`;
60 // var url = `${appSettings.apiUrl}/promociones/by-codigos/${2}/${7}`; 60 // var url = `${appSettings.apiUrl}/promociones/by-codigos/${2}/${7}`;
61 return this.http.get(url); 61 return this.http.get(url);
62 } 62 }
63 63
64 getPromociones(sector, codigo): Observable<any> { 64 getPromociones(sector, codigo): Observable<any> {
65 65
66 var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${sector}/${codigo}`; 66 var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${sector}/${codigo}`;
67 // var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${2}/${1306}`; 67 // var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${2}/${1306}`;
68 return this.http.get(url); 68 return this.http.get(url);
69 } 69 }
70 70
71 getPromocionSinonimos(sector, codigo): Observable<any> { 71 getPromocionSinonimos(sector, codigo): Observable<any> {
72 72
73 var url = `${appSettings.apiUrl}/sinonimos/promo/${sector}/${codigo}`; 73 var url = `${appSettings.apiUrl}/sinonimos/promo/${sector}/${codigo}`;
74 // var url = `${appSettings.apiUrl}/sinonimos/promo/${2}/${7}`; 74 // var url = `${appSettings.apiUrl}/sinonimos/promo/${2}/${7}`;
75 return this.http.get(url); 75 return this.http.get(url);
76 } 76 }
77 77
78 getCategorias() { 78 getCategorias() {
79 return this.http.get(`${appSettings.apiUrl}/categorias`); 79 return this.http.get(`${appSettings.apiUrl}/categorias`);
80 } 80 }
81 81
82 pagar(medioPago: string) { 82 getClienteById(id: number = -1): Observable<any> {
83
84 let apiClientes = 'http://10.231.45.220:1515/clientes';
85 return this.http.get(`${apiClientes}/get/${id}`);
86 }
87
88 pagar(medioPago: number, cliente: any) {
89
83 return this.http.post(`${appSettings.apiUrl}/comprobante/guardar/${medioPago}`, { 90 return this.http.post(`${appSettings.apiUrl}/comprobante/guardar/${medioPago}`, {
84 productos: this.productos 91 productos: this.productos,
92 cliente: cliente,
93 origen: 'autoservicio',
85 }); 94 });
86 } 95 }
87 96
88 private promosIdenticas(promoEnCarrito: Producto, promo: Producto) { 97 private promosIdenticas(promoEnCarrito: Producto, promo: Producto) {
89 98
90 var sonIdenticas = true; 99 var sonIdenticas = true;
91 var productosPromoCarrito = promoEnCarrito.productos; 100 var productosPromoCarrito = promoEnCarrito.productos;
92 var productosPromoAcargar = promo.productos; 101 var productosPromoAcargar = promo.productos;
93 102
94 if (productosPromoCarrito.length !== productosPromoAcargar.length) { 103 if (productosPromoCarrito.length !== productosPromoAcargar.length) {
95 return false; 104 return false;
96 } 105 }
97 106
98 for (let i = 0; i < productosPromoCarrito.length; i++) { 107 for (let i = 0; i < productosPromoCarrito.length; i++) {
99 108
100 if (productosPromoCarrito[i].id !== productosPromoAcargar[i].id) { 109 if (productosPromoCarrito[i].id !== productosPromoAcargar[i].id) {
101 return false; 110 return false;
102 } 111 }
103 } 112 }
104 113
105 return sonIdenticas; 114 return sonIdenticas;
106 } 115 }
107 116
108 } 117 }
109 118