Commit 64c4843a81d4592a8aa1828b3541a692e4849ef4

Authored by Marcelo Puebla
1 parent cec29272c2
Exists in master

Agregada logica de pantalla inactiva en pago.

src/app/components/pago/pago.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 5
5 <div class="col-12 p-0 vh-100"> 6 <div class="col-12 p-0 vh-100">
6 7
7 <app-header></app-header> 8 <app-header></app-header>
8 9
9 <!-- NOMBRE DE SECCION --> 10 <!-- NOMBRE DE SECCION -->
10 <div class="row m-0"> 11 <div class="row m-0">
11 <div class="col-12 p-0"> 12 <div class="col-12 p-0">
12 <p class="h5 py-1 bg-gray text-muted text-center m-0"> 13 <p class="h5 py-1 bg-gray text-muted text-center m-0">
13 Pagar 14 Pagar
14 <i class="fa fa-usd"></i> 15 <i class="fa fa-usd"></i>
15 </p> 16 </p>
16 </div> 17 </div>
17 </div> 18 </div>
18 19
19 <div *ngIf="!verQR" class="row mt-4 m-3 d-flex align-items-center"> 20 <div *ngIf="!verQR" class="row mt-4 m-3 d-flex align-items-center">
20 <div class="col-7 text-center"> 21 <div class="col-7 text-center">
21 <p class="text-white h2" *ngIf="!verQR">Elija forma de pago</p> 22 <p class="text-white h2" *ngIf="!verQR">Elija forma de pago</p>
22 </div> 23 </div>
23 </div> 24 </div>
24 25
25 <div *ngIf="!verQR" class="row fade-in mt-3"> 26 <div *ngIf="!verQR" class="row fade-in mt-3">
26 <!-- GRILLA DE PRODUCTOS DE MI COMPRA --> 27 <!-- GRILLA DE PRODUCTOS DE MI COMPRA -->
27 <div class="col-sm-7"> 28 <div class="col-sm-7">
28 <div class="row ml-4 pr-3 vh-70 overflow-scroll text-dark"> 29 <div class="row ml-4 pr-3 vh-70 overflow-scroll text-dark">
29 <div class="col-4 p-2"> 30 <div class="col-4 p-2">
30 <div 31 <div
31 class="bg-white rounded-sm shadow border-0" 32 class="bg-white rounded-sm shadow border-0"
32 (click)="pagoEfectivo()"> 33 (click)="pagoEfectivo()">
33 <img src="{{apiUrl}}/imagenes/efectivo.png" class="rounded-sm w-75 py-2 mx-auto d-block"> 34 <img src="{{apiUrl}}/imagenes/efectivo.png" class="rounded-sm w-75 py-2 mx-auto d-block">
34 <div class="p-2 card-text text-center"> 35 <div class="p-2 card-text text-center">
35 <p class="h6 text-center m-0">Efectivo</p> 36 <p class="h6 text-center m-0">Efectivo</p>
36 </div> 37 </div>
37 </div> 38 </div>
38 </div> 39 </div>
39 <div class="col-4 p-2"> 40 <div class="col-4 p-2">
40 <div class="bg-white rounded-sm shadow border-0"> 41 <div class="bg-white rounded-sm shadow border-0">
41 <img src="{{apiUrl}}/imagenes/tarjeta.png" class="rounded-sm w-75 py-2 mx-auto d-block"> 42 <img src="{{apiUrl}}/imagenes/tarjeta.png" class="rounded-sm w-75 py-2 mx-auto d-block">
42 <div class="p-2 card-text text-center"> 43 <div class="p-2 card-text text-center">
43 <p class="h6 text-center m-0">Tarjeta</p> 44 <p class="h6 text-center m-0">Tarjeta</p>
44 </div> 45 </div>
45 </div> 46 </div>
46 </div> 47 </div>
47 <div class="col-4 p-2"> 48 <div class="col-4 p-2">
48 <div 49 <div
49 class="bg-white rounded-sm shadow border-0" 50 class="bg-white rounded-sm shadow border-0"
50 (click)="pagar()"> 51 (click)="pagar()">
51 <img src="{{apiUrl}}/imagenes/qr.png" class="rounded-sm w-75 py-2 mx-auto d-block"> 52 <img src="{{apiUrl}}/imagenes/qr.png" class="rounded-sm w-75 py-2 mx-auto d-block">
52 <div class="p-2 card-text text-center"> 53 <div class="p-2 card-text text-center">
53 <p class="h6 text-center m-0">Pago Electrónico</p> 54 <p class="h6 text-center m-0">Pago Electrónico</p>
54 </div> 55 </div>
55 </div> 56 </div>
56 </div> 57 </div>
57 </div> 58 </div>
58 </div> 59 </div>
59 60
60 <div class="col-sm-5 pl-0"> 61 <div class="col-sm-5 pl-0">
61 <div class="row ml-3"> 62 <div class="row ml-3">
62 <!-- TICKET --> 63 <!-- TICKET -->
63 <div class="col-sm-7 p-0"> 64 <div class="col-sm-7 p-0">
64 <div class="card rounded-sm shadow"> 65 <div class="card rounded-sm shadow">
65 <div class="card-body"> 66 <div class="card-body">
66 <p class="h5 card-title">Su Ticket</p> 67 <p class="h5 card-title">Su Ticket</p>
67 <div class="row mt-4 m-0"> 68 <div class="row mt-4 m-0">
68 <div class="col-12 p-0 mb-2"> 69 <div class="col-12 p-0 mb-2">
69 <p class="h6 m-0 card-text text-left"> 70 <p class="h6 m-0 card-text text-left">
70 <small class="font-weight-bold">DESCRIPCIÓN</small> 71 <small class="font-weight-bold">DESCRIPCIÓN</small>
71 </p> 72 </p>
72 <p class="h6 m-0 card-text text-left"> 73 <p class="h6 m-0 card-text text-left">
73 <small class="font-weight-bold">CANTIDAD X PRECIO UNITARIO</small> 74 <small class="font-weight-bold">CANTIDAD X PRECIO UNITARIO</small>
74 </p> 75 </p>
75 </div> 76 </div>
76 </div> 77 </div>
77 <div class="row px-2 vh-50 overflow-scroll m-0"> 78 <div class="row px-2 vh-50 overflow-scroll m-0">
78 <div class="col-12 p-0 mb-2" *ngFor="let producto of productos"> 79 <div class="col-12 p-0 mb-2" *ngFor="let producto of productos">
79 <p class="h6 m-0 card-text text-left"> 80 <p class="h6 m-0 card-text text-left">
80 <small>{{producto.DetArt}}</small> 81 <small>{{producto.DetArt}}</small>
81 </p> 82 </p>
82 <div class="row d-flex justify-content-between m-0"> 83 <div class="row d-flex justify-content-between m-0">
83 <div class="col p-0"> 84 <div class="col p-0">
84 <p class="h6 m-0 card-text text-left"> 85 <p class="h6 m-0 card-text text-left">
85 <small>{{producto.cantidad}} x {{producto.PreVen | currency}}</small> 86 <small>{{producto.cantidad}} x {{producto.PreVen | currency}}</small>
86 </p> 87 </p>
87 </div> 88 </div>
88 <div class="col p-0"> 89 <div class="col p-0">
89 <p class="h6 m-0 card-text text-right"> 90 <p class="h6 m-0 card-text text-right">
90 <small>{{(producto.PreVen) * (producto.cantidad) | currency}}</small> 91 <small>{{(producto.PreVen) * (producto.cantidad) | currency}}</small>
91 </p> 92 </p>
92 </div> 93 </div>
93 </div> 94 </div>
94 </div> 95 </div>
95 </div> 96 </div>
96 <p class="h4 font-weight-bold card-text text-right mt-3 mb-0"> 97 <p class="h4 font-weight-bold card-text text-right mt-3 mb-0">
97 Total {{getTotal() | currency}} 98 Total {{getTotal() | currency}}
98 </p> 99 </p>
99 </div> 100 </div>
100 </div> 101 </div>
101 </div> 102 </div>
102 </div> 103 </div>
103 </div> 104 </div>
104 </div> 105 </div>
105 106
106 <div *ngIf="verQR" class="row fade-in mt-5"> 107 <div *ngIf="verQR" class="row fade-in mt-5">
107 <div class="col-6 offset-3 border-0 mb-auto"> 108 <div class="col-6 offset-3 border-0 mb-auto">
108 <img src="{{apiUrl}}/imagenes/qrmp.jpg" class="w-50 mx-auto d-block shadow rounded-sm"> 109 <img src="{{apiUrl}}/imagenes/qrmp.jpg" class="w-50 mx-auto d-block shadow rounded-sm">
109 </div> 110 </div>
110 </div> 111 </div>
111 112
112 <!-- OPCIONES ABAJO DERECHA --> 113 <!-- OPCIONES ABAJO DERECHA -->
113 <div class="row m-0 fixed-bottom" > 114 <div class="row m-0 fixed-bottom" >
114 <div class="col-sm-2 offset-sm-10 p-0 mt-auto"> 115 <div class="col-sm-2 offset-sm-10 p-0 mt-auto">
115 <div class="card m-2 rounded-top-sm mt-auto blue-gradient border-0"> 116 <div class="card m-2 rounded-top-sm mt-auto blue-gradient border-0">
116 <div class="card-body row m-0"> 117 <div class="card-body row m-0">
117 <div class="col-12 p-3"> 118 <div class="col-12 p-3">
118 <button 119 <button
119 type="button" 120 type="button"
120 class="btn btn-block btn-light shadow btn-sm shadow" 121 class="btn btn-block btn-light shadow btn-sm shadow"
121 (click)="volverPreviousPage()"> 122 (click)="volverPreviousPage()">
122 <span class="pr-2">Volver</span> 123 <span class="pr-2">Volver</span>
123 <i class="fa fa-undo text-warning"></i> 124 <i class="fa fa-undo text-warning"></i>
124 </button> 125 </button>
125 <button 126 <button
126 type="button" 127 type="button"
127 class="btn btn-block btn-light shadow btn-sm shadow" 128 class="btn btn-block btn-light shadow btn-sm shadow"
128 [routerLink]="['/cancelar-compra']"> 129 [routerLink]="['/cancelar-compra']">
129 <span class="pr-2">Cancelar</span> 130 <span class="pr-2">Cancelar</span>
130 <i class="fa fa-times text-danger"></i> 131 <i class="fa fa-times text-danger"></i>
131 </button> 132 </button>
132 </div> 133 </div>
133 </div> 134 </div>
134 </div> 135 </div>
135 </div> 136 </div>
136 </div> 137 </div>
137 138
138 </div> 139 </div>
139 140
140 </div> 141 </div>
141 142
142 <div 143 <div
143 *ngIf="compraConQRfinalizada" 144 *ngIf="compraConQRfinalizada"
144 class="row m-0 fade-in bg-primary-gradient disable-user-select vh-100"> 145 class="row m-0 fade-in bg-primary-gradient disable-user-select vh-100">
145 <div class="col-12 text-center text-white my-auto"> 146 <div class="col-12 text-center text-white my-auto">
146 <p class="font-weight-bold display-4"> 147 <p class="font-weight-bold display-4">
147 Su pago fue<br> 148 Su pago fue<br>
148 acreditado 149 acreditado
149 exitosamente 150 exitosamente
150 </p> 151 </p>
151 <p class="font-weight-bold display-4">Recuerde retirar su ticket</p> 152 <p class="font-weight-bold display-4">Recuerde retirar su ticket</p>
152 </div> 153 </div>
153 </div> 154 </div>
154 155
155 <div 156 <div
156 *ngIf="compraConEfectivofinalizada" 157 *ngIf="compraConEfectivofinalizada"
157 class="row m-0 fade-in bg-primary-gradient disable-user-select vh-100"> 158 class="row m-0 fade-in bg-primary-gradient disable-user-select vh-100">
158 <div class="col-12 text-center text-white my-auto"> 159 <div class="col-12 text-center text-white my-auto">
159 <p class="font-weight-bold display-4"> 160 <p class="font-weight-bold display-4">
160 Retire su ticket<br> 161 Retire su ticket<br>
161 y diríjase a caja para<br> 162 y diríjase a caja para<br>
162 efectuar el pago. 163 efectuar el pago.
163 </p> 164 </p>
164 </div> 165 </div>
165 </div> 166 </div>
166 167
src/app/components/pago/pago.component.ts
1 import { Component, OnInit } 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 { RouterLink, Router } from '@angular/router'; 5 import { Router } from '@angular/router';
6 import { Producto } from 'src/app/wrappers/producto'; 6 import { Producto } from 'src/app/wrappers/producto';
7 7
8 @Component({ 8 @Component({
9 selector: 'app-pago', 9 selector: 'app-pago',
10 templateUrl: './pago.component.html', 10 templateUrl: './pago.component.html',
11 styleUrls: ['./pago.component.scss'] 11 styleUrls: ['./pago.component.scss']
12 }) 12 })
13 export class PagoComponent implements OnInit { 13 export class PagoComponent implements OnInit, OnDestroy {
14 14
15 private apiUrl: string = appSettings.apiUrl; 15 private apiUrl: string = appSettings.apiUrl;
16 private verQR: boolean = false; 16 private verQR: boolean = false;
17 private productos: Producto[] = []; 17 private productos: Producto[] = [];
18 private total: number = 0; 18 private total: number = 0;
19 19
20 private compraConQRfinalizada: boolean = false; 20 private compraConQRfinalizada: boolean = false;
21 private compraConEfectivofinalizada: boolean = false; 21 private compraConEfectivofinalizada: boolean = false;
22 private timerReposo: any;
22 23
23 constructor( 24 constructor(
24 private productoService: ProductoService, 25 private productoService: ProductoService,
25 private location: Location, 26 private location: Location,
26 private router: Router, 27 private router: Router,
27 ) { } 28 ) { }
28 29
29 ngOnInit() { 30 ngOnInit() {
30 31
32 this.timerReposo = setTimeout(() => {
33
34 this.router.navigate(['cancelar-compra']);
35 }, 90000)
31 this.productos = this.productoService.productos; 36 this.productos = this.productoService.productos;
32 } 37 }
33 38
39 ngOnDestroy() {
40
41 clearTimeout(this.timerReposo);
42 }
43
34 pagoEfectivo() { 44 pagoEfectivo() {
35 45
36 this.compraConEfectivofinalizada = true; 46 this.compraConEfectivofinalizada = true;
47 clearTimeout(this.timerReposo);
37 setTimeout(() => { 48 setTimeout(() => {
38 49
39 this.router.navigate(['mensaje-final']); 50 this.router.navigate(['mensaje-final']);
40 }, 3000); 51 }, 3000);
41 } 52 }
42 53
43 pagar() { 54 pagar() {
44 55
45 this.verQR = true; 56 this.verQR = true;
46 57
47 this.productoService.pagar() 58 this.productoService.pagar()
48 .subscribe(() => { 59 .subscribe(() => {
49 60
50 // alert('Compra finalizada'); 61 clearTimeout(this.timerReposo);
51 this.compraConQRfinalizada = true; 62 this.compraConQRfinalizada = true;
52 setTimeout(() => { 63 setTimeout(() => {
53 64
54 this.router.navigate(['mensaje-final']); 65 this.router.navigate(['mensaje-final']);
55 }, 3000); 66 }, 3000);
56 }, err => { 67 }, err => {
57 console.log(err); 68 console.log(err);
58 alert('algo salió mal'); 69 alert('algo salió mal');
59 }) 70 })
60 } 71 }
61 72
62 volverPreviousPage() { 73 volverPreviousPage() {
63 74
64 if (this.verQR) { 75 if (this.verQR) {
65 this.verQR = false; 76 this.verQR = false;
66 return; 77 return;
67 } 78 }
68 this.location.back(); 79 this.location.back();
69 } 80 }
70 81
71 getTotal() { 82 getTotal() {
72 83
73 var subTotal = 0; 84 var subTotal = 0;
74 this.productos.forEach(producto => { 85 this.productos.forEach(producto => {
75 86
76 subTotal = subTotal + (producto.PreVen * producto.cantidad); 87 subTotal = subTotal + (producto.PreVen * producto.cantidad);
77 }); 88 });
78 return this.total = subTotal; 89 return this.total = subTotal;
79 } 90 }
80 91
92 reiniciarTimer() {
93
94 clearTimeout(this.timerReposo);
95 this.timerReposo = setTimeout(() => {
96
97 this.router.navigate(['cancelar-compra']);
98 }, 90000)
99 }
100
81 } 101 }
82 102