Commit a06557473a19947e6ae5c3995955075a4ab428d2

Authored by Marcelo Puebla
1 parent 08da9f7ace
Exists in master and in 1 other branch validar_pve

agregada y maquetada pantalla de pago con tarjeta.

src/app/app.module.ts
... ... @@ -8,6 +8,7 @@ import { TooltipModule } from 'ngx-bootstrap/tooltip';
8 8 import { PopoverModule } from 'ngx-bootstrap/popover';
9 9 import { CarouselModule } from 'ngx-bootstrap/carousel';
10 10 import { PaginationModule } from 'ngx-bootstrap/pagination';
  11 +import { ModalModule } from 'ngx-bootstrap/modal';
11 12 //#endregion
12 13  
13 14 //#region Keyboard
... ... @@ -31,6 +32,7 @@ import { CancelarCompraComponent } from './components/cancelar-compra/cancelar-c
31 32 import { MensajeFinalComponent } from './components/mensaje-final/mensaje-final.component';
32 33 import { ComandaComponent } from './components/comanda/comanda.component';
33 34 import { PedidosSalientesComponent } from './components/pedidos-salientes/pedidos-salientes.component';
  35 +import { PagoConTarjetaComponent } from './components/pago-con-tarjeta/pago-con-tarjeta.component';
34 36 //#endregion
35 37  
36 38 @NgModule({
... ... @@ -48,7 +50,8 @@ import { PedidosSalientesComponent } from './components/pedidos-salientes/pedido
48 50 CancelarCompraComponent,
49 51 MensajeFinalComponent,
50 52 ComandaComponent,
51   - PedidosSalientesComponent
  53 + PedidosSalientesComponent,
  54 + PagoConTarjetaComponent
52 55 ],
53 56 imports: [
54 57 BrowserModule,
... ... @@ -63,9 +66,11 @@ import { PedidosSalientesComponent } from './components/pedidos-salientes/pedido
63 66 MatKeyboardModule,
64 67 MatButtonModule,
65 68 CarouselModule.forRoot(),
66   - PaginationModule.forRoot()
  69 + PaginationModule.forRoot(),
  70 + ModalModule.forRoot(),
67 71 ],
68 72 providers: [],
69   - bootstrap: [AppComponent]
  73 + bootstrap: [AppComponent],
  74 + entryComponents: [PagoConTarjetaComponent]
70 75 })
71 76 export class AppModule { }
src/app/components/confirmacion-carrito/confirmacion-carrito.component.html
... ... @@ -168,7 +168,8 @@
168 168 </div>
169 169  
170 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 + (click)="abrirPagoConTarjeta()">
172 173 <div class="col-7 text-center my-auto px-2">
173 174 <span class="h5 font-weight-bold">Tarjeta</span>
174 175 </div>
src/app/components/confirmacion-carrito/confirmacion-carrito.component.ts
... ... @@ -5,6 +5,8 @@ import { ProductoService } from &#39;src/app/services/producto.service&#39;;
5 5 import { Producto } from 'src/app/wrappers/producto';
6 6 import { Router } from '@angular/router';
7 7 import { Subscription } from 'rxjs';
  8 +import { BsModalService } from 'ngx-bootstrap';
  9 +import { PagoConTarjetaComponent } from '../pago-con-tarjeta/pago-con-tarjeta.component';
8 10  
9 11 @Component({
10 12 selector: 'app-confirmacion-carrito',
... ... @@ -25,7 +27,8 @@ export class ConfirmacionCarritoComponent implements OnInit, OnDestroy {
25 27 constructor(
26 28 private location: Location,
27 29 private productoService: ProductoService,
28   - private router: Router
  30 + private router: Router,
  31 + private modalService: BsModalService,
29 32 ) { }
30 33  
31 34 ngOnInit() {
... ... @@ -106,4 +109,12 @@ export class ConfirmacionCarritoComponent implements OnInit, OnDestroy {
106 109 }
107 110 //#endregion
108 111  
  112 + abrirPagoConTarjeta() {
  113 +
  114 + this.modalService.show(PagoConTarjetaComponent, {
  115 + class: 'modal-lg',
  116 + ignoreBackdropClick: true,
  117 + initialState: { importeTotal: this.total },
  118 + });
  119 + }
109 120 }
src/app/components/pago-con-tarjeta/pago-con-tarjeta.component.html
... ... @@ -0,0 +1,87 @@
  1 +<div class="modal-header p-2">
  2 + <div class="row m-0 w-100">
  3 + <div class="col">
  4 + <span class="h4 m-0">Pago con tarjeta</span>
  5 + </div>
  6 + </div>
  7 +</div>
  8 +
  9 +<div class="modal-body" id="modal-body">
  10 + <div class="w-75 mx-auto card-columns">
  11 + <div
  12 + class="card card-effect shadow-sm rounded-sm"
  13 + *ngFor="let tarjeta of tarjetas"
  14 + [ngClass]="{'active': tarjetaSeleccionada && tarjetaSeleccionada.ID === tarjeta.ID}"
  15 + (click)="seleccionarTarjeta(tarjeta)">
  16 + <img
  17 + class="w-100 p-1"
  18 + src="../../../assets/img/{{tarjeta.nombreImagen ? tarjeta.nombreImagen : 'generica.png'}}">
  19 + </div>
  20 + </div>
  21 + <div class="border-top w-75 mx-auto" *ngIf="showForm">
  22 + <div class="row mt-2 fade-in">
  23 + <form class="col">
  24 + <div class="row py-3">
  25 + <div class="col-auto pr-1">
  26 + <span class="font-weight-bold">{{tarjetaSeleccionada.ID}}</span>
  27 + </div>
  28 + <div class="col-auto pl-2">
  29 + <span class="font-weight-bold">{{tarjetaSeleccionada.NOM}}</span>
  30 + </div>
  31 + </div>
  32 + <div class="row pb-3">
  33 + <div class="col-auto pr-1">
  34 + <span>Importe</span>
  35 + </div>
  36 + <div class="col-auto pl-2">
  37 + <span class="font-weight-bold">{{ importeTotal | currency}}</span>
  38 + </div>
  39 + </div>
  40 + <div class="row pb-3">
  41 + <div class="col-auto pr-1 my-auto">
  42 + <span>Terminal Nยบ</span>
  43 + </div>
  44 + <div class="col-12 col-md-auto pl-md-1">
  45 + <input
  46 + class="form-control form-control-sm"
  47 + type="number">
  48 + </div>
  49 + </div>
  50 + <div class="row pb-3">
  51 + <div class="col-auto pr-1 my-auto">
  52 + <span>Nรบmero de Cupรณn</span>
  53 + </div>
  54 + <div class="col-12 col-md-auto pl-md-1">
  55 + <input
  56 + class="form-control form-control-sm"
  57 + type="number">
  58 + </div>
  59 + </div>
  60 + <div class="row pb-3">
  61 + <div class="col-auto pr-1 my-auto">
  62 + <span>Cuotas</span>
  63 + </div>
  64 + <div class="col-12 col-md-auto pl-md-1">
  65 + <input
  66 + class="form-control form-control-sm"
  67 + type="number">
  68 + </div>
  69 + </div>
  70 + </form>
  71 + </div>
  72 + </div>
  73 +</div>
  74 +
  75 +<div class="modal-footer py-1">
  76 + <button
  77 + class="btn btn-sm btn-secondary"
  78 + type="button"
  79 + (click)="close()">
  80 + Cancelar
  81 + </button>
  82 + <button
  83 + class="btn btn-sm btn-primary"
  84 + type="button">
  85 + Guardar
  86 + </button>
  87 +</div>
src/app/components/pago-con-tarjeta/pago-con-tarjeta.component.scss
... ... @@ -0,0 +1,28 @@
  1 +app-pago-con-tarjeta {
  2 + user-select: none !important;
  3 +}
  4 +
  5 +.card-columns {
  6 + column-count: 6 !important;
  7 + column-gap: 0.5rem !important;
  8 + @media (max-width: 576px) {
  9 + column-count: 3 !important;
  10 + }
  11 +}
  12 +
  13 +.card-effect {
  14 + border-width: 2px !important;
  15 + &:hover {
  16 + background-color: #c9c9c9b3 !important;
  17 + transition: background-color 0.3s;
  18 + }
  19 + &:active {
  20 + border-color: #2872ae !important;
  21 + transition: background-color 0.3s;
  22 + }
  23 +}
  24 +
  25 +.active {
  26 + border-color: #2872ae !important;
  27 + transition: background-color 0.3s;
  28 +}
src/app/components/pago-con-tarjeta/pago-con-tarjeta.component.spec.ts
... ... @@ -0,0 +1,25 @@
  1 +import { async, ComponentFixture, TestBed } from '@angular/core/testing';
  2 +
  3 +import { PagoConTarjetaComponent } from './pago-con-tarjeta.component';
  4 +
  5 +describe('PagoConTarjetaComponent', () => {
  6 + let component: PagoConTarjetaComponent;
  7 + let fixture: ComponentFixture<PagoConTarjetaComponent>;
  8 +
  9 + beforeEach(async(() => {
  10 + TestBed.configureTestingModule({
  11 + declarations: [ PagoConTarjetaComponent ]
  12 + })
  13 + .compileComponents();
  14 + }));
  15 +
  16 + beforeEach(() => {
  17 + fixture = TestBed.createComponent(PagoConTarjetaComponent);
  18 + component = fixture.componentInstance;
  19 + fixture.detectChanges();
  20 + });
  21 +
  22 + it('should create', () => {
  23 + expect(component).toBeTruthy();
  24 + });
  25 +});
src/app/components/pago-con-tarjeta/pago-con-tarjeta.component.ts
... ... @@ -0,0 +1,42 @@
  1 +import { Component, OnInit } from '@angular/core';
  2 +import { BsModalRef } from 'ngx-bootstrap';
  3 +import { TarjetasService } from 'src/app/services/tarjetas.service';
  4 +import { Tarjeta } from 'src/app/wrappers/tarjeta';
  5 +
  6 +@Component({
  7 + selector: 'app-pago-con-tarjeta',
  8 + templateUrl: './pago-con-tarjeta.component.html',
  9 + styleUrls: ['./pago-con-tarjeta.component.scss'],
  10 +})
  11 +export class PagoConTarjetaComponent implements OnInit {
  12 +
  13 + private tarjetas: Tarjeta[] = [];
  14 + private tarjetaSeleccionada: Tarjeta;
  15 + private showForm = false;
  16 + private importeTotal: number;
  17 +
  18 + constructor(
  19 + private modalRef: BsModalRef,
  20 + private tarjetasService: TarjetasService,
  21 + ) { }
  22 +
  23 + ngOnInit() {
  24 +
  25 + this.tarjetasService.getTarjetas()
  26 + .subscribe((res: Tarjeta[]) => {
  27 +
  28 + this.tarjetas = res;
  29 + }, err => console.error(err));
  30 + }
  31 +
  32 + seleccionarTarjeta(tarjeta: Tarjeta) {
  33 +
  34 + this.tarjetaSeleccionada = tarjeta;
  35 + this.showForm = true;
  36 + }
  37 +
  38 + close() {
  39 +
  40 + this.modalRef.hide()
  41 + }
  42 +}
src/assets/img/americanExpress.png

10.4 KB

src/assets/img/argencard.png

7.48 KB

src/assets/img/cabal.png

7.38 KB

src/assets/img/cencosud.png

10.6 KB

src/assets/img/galiciaRural.png

10.1 KB

src/assets/img/generica.png

6.44 KB

src/assets/img/macro.png

9.1 KB

src/assets/img/macroAgro.png

11.8 KB

src/assets/img/maestro.png

9 KB

src/assets/img/mastercard.png

9.46 KB

src/assets/img/mercadoPago.png

13.9 KB

src/assets/img/naranja.png

10.4 KB

src/assets/img/nativa.png

12.1 KB

src/assets/img/tarjetaShopping.png

15.2 KB

src/assets/img/visa.png

7.03 KB

src/assets/img/visaCredito.png

10.3 KB

src/assets/img/visaDebito.png

10.1 KB

src/assets/img/visaElectron.png

9.8 KB