Commit 46a76ee1c0ec2d1bae558a286c378216a6843760

Authored by Eric Fernandez
Exists in master

Merge branch 'master' into 'master'

Master(mpuebla)

See merge request !118
1 # See http://help.github.com/ignore-files/ for more about ignoring files. 1 # See http://help.github.com/ignore-files/ for more about ignoring files.
2 2
3 # compiled output 3 # compiled output
4 /dist 4 /dist
5 /tmp 5 /tmp
6 /out-tsc 6 /out-tsc
7 # Only exists if Bazel was run 7 # Only exists if Bazel was run
8 /bazel-out 8 /bazel-out
9 9
10 # dependencies 10 # dependencies
11 /node_modules 11 /node_modules
12 12
13 # profiling files 13 # profiling files
14 chrome-profiler-events.json 14 chrome-profiler-events.json
15 speed-measure-plugin.json 15 speed-measure-plugin.json
16 16
17 # IDEs and editors 17 # IDEs and editors
18 /.idea 18 /.idea
19 .project 19 .project
20 .classpath 20 .classpath
21 .c9/ 21 .c9/
22 *.launch 22 *.launch
23 .settings/ 23 .settings/
24 *.sublime-workspace 24 *.sublime-workspace
25 25
26 # IDE - VSCode 26 # IDE - VSCode
27 .vscode/* 27 .vscode/*
28 !.vscode/settings.json 28 !.vscode/settings.json
29 !.vscode/tasks.json 29 !.vscode/tasks.json
30 !.vscode/launch.json 30 !.vscode/launch.json
31 !.vscode/extensions.json 31 !.vscode/extensions.json
32 .history/* 32 .history/*
33 33
34 # misc 34 # misc
35 /.sass-cache 35 /.sass-cache
36 /connect.lock 36 /connect.lock
37 /coverage 37 /coverage
38 /libpeerconnection.log 38 /libpeerconnection.log
39 npm-debug.log 39 npm-debug.log
40 yarn-error.log 40 yarn-error.log
41 testem.log 41 testem.log
42 /typings 42 /typings
43 43
44 # System Files 44 # System Files
45 .DS_Store 45 .DS_Store
46 Thumbs.db 46 Thumbs.db
47 47
48 # Project Settings 48 # Project Settings
49 src/etc/AppSettings.ts 49 src/etc/AppSettings.ts
50 package-lock.json 50 package-lock.json
51 .vscode/settings.json
51 52
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.subscribePago = this.productoService.pagar(medioPago)
86 .subscribe(() => { 86 .subscribe(() => {
87 87
88 clearTimeout(this.timerReposo); 88 clearTimeout(this.timerReposo);
89 89
90 if (medioPago == 'efectivo') { 90 if (medioPago === 1) {
91 91
92 this.compraConEfectivofinalizada = true; 92 this.compraConEfectivofinalizada = true;
93 } else if (medioPago == 'electronico') { 93 } else if (medioPago === 9) {
94 94
95 this.compraConQRfinalizada = true; 95 this.compraConQRfinalizada = true;
96 } 96 }
97 97
98 setTimeout(() => { 98 setTimeout(() => {
99 99
100 this.router.navigate(['mensaje-final']); 100 this.router.navigate(['mensaje-final']);
101 }, 10000); 101 }, 10000);
102 }, err => { 102 }, err => {
103 console.log(err); 103 console.log(err);
104 alert('algo salió mal'); 104 alert('algo salió mal');
105 }) 105 })
106 } 106 }
107 //#endregion 107 //#endregion
108 108
109 } 109 }
110 110
src/app/services/cliente.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 { appSettings } from "src/etc/AppSettings"; 3 import { appSettings } from "src/etc/AppSettings";
4 4
5 @Injectable({ 5 @Injectable({
6 providedIn: 'root' 6 providedIn: 'root'
7 }) 7 })
8 export class ClienteService { 8 export class ClienteService {
9 9
10 private url = appSettings.apiClientes 10 private url = appSettings.apiClientes;
11 11
12 constructor(private http: HttpClient) { } 12 constructor(private http: HttpClient) { }
13 13
14 getClienteById(id: number) { 14 getClienteById(id: number) {
15 return this.http.get(`${this.url}/get/${id}`); 15 return this.http.get(`${this.url}/get/${id}`);
16 } 16 }
17 } 17 }
18 18
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 import { ClienteService } from './cliente.service'; 6 import { ClienteService } from './cliente.service';
7 7
8 @Injectable({ 8 @Injectable({
9 providedIn: 'root' 9 providedIn: 'root'
10 }) 10 })
11 export class ProductoService { 11 export class ProductoService {
12 12
13 productos: Producto[] = []; 13 productos: Producto[] = [];
14 productoAcargar: Producto; 14 productoAcargar: Producto;
15 promoAcargar: Producto; 15 promoAcargar: Producto;
16 mostrar: string; 16 mostrar: string;
17 esPromoPersonalizada: boolean = false; 17 esPromoPersonalizada: boolean = false;
18 18
19 constructor(private http: HttpClient, private clienteService: ClienteService) { } 19 constructor(private http: HttpClient, private clienteService: ClienteService) { }
20 20
21 getProductoById(id): Observable<any> { 21 getProductoById(id): Observable<any> {
22 22
23 return this.http.get(`${appSettings.apiUrl}/articulos/${id}`); 23 return this.http.get(`${appSettings.apiUrl}/articulos/${id}`);
24 } 24 }
25 25
26 getAll(): Observable<any> { 26 getAll(): Observable<any> {
27 27
28 return this.http.get(`${appSettings.apiUrl}/articulos/`); 28 return this.http.get(`${appSettings.apiUrl}/articulos/`);
29 } 29 }
30 30
31 getAllWithPaginator(page: number = 1): Observable<any> { 31 getAllWithPaginator(page: number = 1): Observable<any> {
32 32
33 return this.http.get(`${appSettings.apiUrl}/articulos/${page}`); 33 return this.http.get(`${appSettings.apiUrl}/articulos/${page}`);
34 } 34 }
35 35
36 setProductos(producto: Producto) { 36 setProductos(producto: Producto) {
37 37
38 for (let i = 0; i < this.productos.length; i++) { 38 for (let i = 0; i < this.productos.length; i++) {
39 39
40 if (this.productos[i].id === producto.id) { 40 if (this.productos[i].id === producto.id) {
41 41
42 if (producto.PRO) { 42 if (producto.PRO) {
43 if (this.promosIdenticas(this.productos[i], producto)) { 43 if (this.promosIdenticas(this.productos[i], producto)) {
44 this.productos[i].cantidad++; 44 this.productos[i].cantidad++;
45 return; 45 return;
46 } else { 46 } else {
47 break; 47 break;
48 } 48 }
49 } 49 }
50 this.productos[i].cantidad++; 50 this.productos[i].cantidad++;
51 return; 51 return;
52 } 52 }
53 } 53 }
54 54
55 this.productos.unshift(producto); 55 this.productos.unshift(producto);
56 } 56 }
57 57
58 getPromocionByCodigos(sector, codigo): Observable<any> { 58 getPromocionByCodigos(sector, codigo): Observable<any> {
59 59
60 var url = `${appSettings.apiUrl}/promociones/by-codigos/${sector}/${codigo}`; 60 var url = `${appSettings.apiUrl}/promociones/by-codigos/${sector}/${codigo}`;
61 // var url = `${appSettings.apiUrl}/promociones/by-codigos/${2}/${7}`; 61 // var url = `${appSettings.apiUrl}/promociones/by-codigos/${2}/${7}`;
62 return this.http.get(url); 62 return this.http.get(url);
63 } 63 }
64 64
65 getPromociones(sector, codigo): Observable<any> { 65 getPromociones(sector, codigo): Observable<any> {
66 66
67 var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${sector}/${codigo}`; 67 var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${sector}/${codigo}`;
68 // var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${2}/${1306}`; 68 // var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${2}/${1306}`;
69 return this.http.get(url); 69 return this.http.get(url);
70 } 70 }
71 71
72 getPromocionSinonimos(sector, codigo): Observable<any> { 72 getPromocionSinonimos(sector, codigo): Observable<any> {
73 73
74 var url = `${appSettings.apiUrl}/sinonimos/promo/${sector}/${codigo}`; 74 var url = `${appSettings.apiUrl}/sinonimos/promo/${sector}/${codigo}`;
75 // var url = `${appSettings.apiUrl}/sinonimos/promo/${2}/${7}`; 75 // var url = `${appSettings.apiUrl}/sinonimos/promo/${2}/${7}`;
76 return this.http.get(url); 76 return this.http.get(url);
77 } 77 }
78 78
79 getCategorias() { 79 getCategorias() {
80 return this.http.get(`${appSettings.apiUrl}/categorias`); 80 return this.http.get(`${appSettings.apiUrl}/categorias`);
81 } 81 }
82 82
83 pagar(medioPago: string) { 83 pagar(medioPago: number) {
84 84
85 return new Observable((observer) => { 85 return new Observable((observer) => {
86 86
87 this.clienteService.getClienteById(-1).subscribe(cliente => { 87 this.clienteService.getClienteById(-1).subscribe(cliente => {
88 88
89 this.http.post(`${appSettings.apiUrl}/comprobante/guardar/${medioPago}`, { 89 this.http.post(`${appSettings.apiUrl}/comprobante/guardar/${medioPago}`, {
90 productos: this.productos, 90 productos: this.productos,
91 cliente: cliente 91 cliente: cliente,
92 origen: 'autoservicio'
92 }).subscribe((data) => { 93 }).subscribe((data) => {
93 94
94 observer.next(data); 95 observer.next(data);
95 observer.complete(); 96 observer.complete();
96 }); 97 });
97 }); 98 });
98 }); 99 });
99 } 100 }
100 101
101 private promosIdenticas(promoEnCarrito: Producto, promo: Producto) { 102 private promosIdenticas(promoEnCarrito: Producto, promo: Producto) {
102 103
103 var sonIdenticas = true; 104 var sonIdenticas = true;
104 var productosPromoCarrito = promoEnCarrito.productos; 105 var productosPromoCarrito = promoEnCarrito.productos;
105 var productosPromoAcargar = promo.productos; 106 var productosPromoAcargar = promo.productos;
106 107
107 if (productosPromoCarrito.length !== productosPromoAcargar.length) { 108 if (productosPromoCarrito.length !== productosPromoAcargar.length) {
108 return false; 109 return false;
109 } 110 }
110 111
111 for (let i = 0; i < productosPromoCarrito.length; i++) { 112 for (let i = 0; i < productosPromoCarrito.length; i++) {
112 113
113 if (productosPromoCarrito[i].id !== productosPromoAcargar[i].id) { 114 if (productosPromoCarrito[i].id !== productosPromoAcargar[i].id) {
114 return false; 115 return false;
115 } 116 }
116 } 117 }
117 118
118 return sonIdenticas; 119 return sonIdenticas;
119 } 120 }
120 121
121 } 122 }
122 123