Commit 2de8f4b46551ce24b9833afbe7cfb27e9fd95b0a

Authored by Benjamin Rodriguez
1 parent 1ef79c192d
Exists in develop

agrego imagen nueva para articulos no disponibles

src/app/modules/carrito/carrito.component.html
1 <div class="h-92 bg-white fade-in-left"> 1 <div class="h-92 bg-white fade-in-left">
2 <!-- PUBLICIDADES --> 2 <!-- PUBLICIDADES -->
3 <app-header-publicidad></app-header-publicidad> 3 <app-header-publicidad></app-header-publicidad>
4 4
5 <div class="h-75 carrito-content"> 5 <div class="h-75 carrito-content">
6 <!-- CABECERA --> 6 <!-- CABECERA -->
7 <div class="row mx-3 h-auto border border-primary rounded-sm"> 7 <div class="row mx-3 h-auto border border-primary rounded-sm">
8 <div class="col-12 px-0 py-2 align-self-center"> 8 <div class="col-12 px-0 py-2 align-self-center">
9 <div class="px-3"> 9 <div class="px-3">
10 <p class="h6 text-truncate">ESTE ES TÚ CARRITO DE COMPRAS</p> 10 <p class="h6 text-truncate">ESTE ES TÚ CARRITO DE COMPRAS</p>
11 </div> 11 </div>
12 </div> 12 </div>
13 </div> 13 </div>
14 14
15 <!-- CARRITO --> 15 <!-- CARRITO -->
16 <div 16 <div
17 class="row mx-2 mt-4 h-80 h-lg-60 align-content-start scroll-y-visible" 17 class="row mx-2 mt-4 h-80 h-lg-60 align-content-start scroll-y-visible"
18 (scroll)="scrollEvent($event)"> 18 (scroll)="scrollEvent($event)">
19 <!-- MENSAJE DE ADVERTENCIA --> 19 <!-- MENSAJE DE ADVERTENCIA -->
20 <div class="col-10 align-self-center alert alert-primary" *ngIf="!articuloService.carrito.length"> 20 <div class="col-10 align-self-center alert alert-primary" *ngIf="!articuloService.carrito.length">
21 <p class="h5 text-center">No hay artículos en el carrito</p> 21 <p class="h5 text-center">No hay artículos en el carrito</p>
22 </div> 22 </div>
23 <!-- ARTICULOS --> 23 <!-- ARTICULOS -->
24 <div 24 <div
25 class="col-12 col-xl-6 p-2 h-50 h-md-25 h-xl-40 text-center text-truncate carrito-articulo" 25 class="col-12 col-xl-6 p-2 h-50 h-md-25 h-xl-40 text-center text-truncate carrito-articulo"
26 *ngFor="let articulo of articuloService.carrito; let i = index;" 26 *ngFor="let articulo of articuloService.carrito; let i = index;"
27 @EnterLeaveX> 27 @EnterLeaveX>
28 <!-- ARTICULO --> 28 <!-- ARTICULO -->
29 <div class="h-100 border border-primary rounded-sm"> 29 <div class="h-100 border border-primary rounded-sm">
30 <div class="row align-items-center mx-0 h-100"> 30 <div class="row align-items-center mx-0 h-100">
31 <!-- NOMBRE E IMAGEN --> 31 <!-- NOMBRE E IMAGEN -->
32 <div class="col-6 col-md-3 h-50 h-md-100 border-right border-primary"> 32 <div class="col-6 col-md-3 h-50 h-md-100 border-right border-primary">
33 <img 33 <img
34 draggable="false" 34 draggable="false"
35 ondragstart="return false;" 35 ondragstart="return false;"
36 (contextmenu)="false" 36 (contextmenu)="false"
37 class="d-none d-md-block mx-auto h-55 rounded-sm shadow-sm" 37 class="d-none d-md-block mx-auto h-55 rounded-sm shadow-sm"
38 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}" 38 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}"
39 onerror="this.src='assets/img/image-not-found.jpg'"> 39 onerror="this.src='assets/img/imagen-no-encontrada.jpg'">
40 <div class="row mx-0 h-100 h-md-45"> 40 <div class="row mx-0 h-100 h-md-45">
41 <p class="col text-primary text-truncate align-self-center"> 41 <p class="col text-primary text-truncate align-self-center">
42 <small>{{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}}</small> 42 <small>{{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}}</small>
43 </p> 43 </p>
44 </div> 44 </div>
45 </div> 45 </div>
46 <!-- CANTIDAD --> 46 <!-- CANTIDAD -->
47 <div class="col-6 col-md-3 h-50 h-md-100 border-right border-primary"> 47 <div class="col-6 col-md-3 h-50 h-md-100 border-right border-primary">
48 <p class="h-40"><small>CANT</small></p> 48 <p class="h-40"><small>CANT</small></p>
49 <app-articulo-cantidad [articulo]="articulo"></app-articulo-cantidad> 49 <app-articulo-cantidad [articulo]="articulo"></app-articulo-cantidad>
50 </div> 50 </div>
51 <!-- PRECIO --> 51 <!-- PRECIO -->
52 <div class="col-6 col-md-3 h-50 h-md-100 border-right border-primary"> 52 <div class="col-6 col-md-3 h-50 h-md-100 border-right border-primary">
53 <p class="h-40"><small>PRECIO</small></p> 53 <p class="h-40"><small>PRECIO</small></p>
54 <div class="py-1 badge-pill bg-dark text-white"> 54 <div class="py-1 badge-pill bg-dark text-white">
55 <p><small>{{articulo.PreVen | currency}}</small></p> 55 <p><small>{{articulo.PreVen | currency}}</small></p>
56 </div> 56 </div>
57 </div> 57 </div>
58 <!-- ELIMINAR --> 58 <!-- ELIMINAR -->
59 <div class="col-6 col-md-3 align-self-center"> 59 <div class="col-6 col-md-3 align-self-center">
60 <div class="row mx-0 justify-content-center"> 60 <div class="row mx-0 justify-content-center">
61 <div 61 <div
62 class="col-auto px-3 py-1 btn-effect bg-primary badge-pill text-white" 62 class="col-auto px-3 py-1 btn-effect bg-primary badge-pill text-white"
63 (click)="deleteArticulo(i)"> 63 (click)="deleteArticulo(i)">
64 <span> 64 <span>
65 <small class="pr-2">ELIMINAR</small> 65 <small class="pr-2">ELIMINAR</small>
66 <img 66 <img
67 draggable="false" 67 draggable="false"
68 ondragstart="return false;" 68 ondragstart="return false;"
69 (contextmenu)="false" 69 (contextmenu)="false"
70 class="icon-20 rotate-45" 70 class="icon-20 rotate-45"
71 src="assets/img/mas-blanco.svg"> 71 src="assets/img/mas-blanco.svg">
72 </span> 72 </span>
73 </div> 73 </div>
74 </div> 74 </div>
75 </div> 75 </div>
76 </div> 76 </div>
77 </div> 77 </div>
78 </div> 78 </div>
79 </div> 79 </div>
80 <!-- TOTAL --> 80 <!-- TOTAL -->
81 <div class="row mx-3 mt-2 h-auto justify-content-end"> 81 <div class="row mx-3 mt-2 h-auto justify-content-end">
82 <div class="col-auto align-self-center text-primary"><small>TOTAL</small></div> 82 <div class="col-auto align-self-center text-primary"><small>TOTAL</small></div>
83 <div class="col-auto px-3 bg-primary badge-pill"> 83 <div class="col-auto px-3 bg-primary badge-pill">
84 <p class="text-center text-white py-1">{{articuloService.subTotal | currency}}</p> 84 <p class="text-center text-white py-1">{{articuloService.subTotal | currency}}</p>
85 </div> 85 </div>
86 </div> 86 </div>
87 <!-- CONTINUAR --> 87 <!-- CONTINUAR -->
88 <div 88 <div
89 *ngIf="articuloService.carrito.length" 89 *ngIf="articuloService.carrito.length"
90 class="row mx-3 mt-4 h-auto justify-content-end"> 90 class="row mx-3 mt-4 h-auto justify-content-end">
91 <div 91 <div
92 class="col-auto py-2 px-3 align-self-center btn-effect bg-primary badge-pill text-white" 92 class="col-auto py-2 px-3 align-self-center btn-effect bg-primary badge-pill text-white"
93 [routerLink]="['/forma-pago']"> 93 [routerLink]="['/forma-pago']">
94 <span> 94 <span>
95 <small class="pr-2">CONTINUAR</small> 95 <small class="pr-2">CONTINUAR</small>
96 <img 96 <img
97 draggable="false" 97 draggable="false"
98 ondragstart="return false;" 98 ondragstart="return false;"
99 (contextmenu)="false" 99 (contextmenu)="false"
100 class="icon-20" 100 class="icon-20"
101 src="assets/img/ir.svg"> 101 src="assets/img/ir.svg">
102 </span> 102 </span>
103 </div> 103 </div>
104 </div> 104 </div>
105 </div> 105 </div>
106 106
107 </div> 107 </div>
108 108
src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.html
1 <!-- FILTRO CATEGORIAS --> 1 <!-- FILTRO CATEGORIAS -->
2 <p class="h6 h-6 m-0 text-center"><small>CATEGORÍAS</small></p> 2 <p class="h6 h-6 m-0 text-center"><small>CATEGORÍAS</small></p>
3 <div class="row mx-0 h-94 justify-content-center align-items-center"> 3 <div class="row mx-0 h-94 justify-content-center align-items-center">
4 <div class="col-auto btn-effect h-5 cat-btn"> 4 <div class="col-auto btn-effect h-5 cat-btn">
5 <img 5 <img
6 draggable="false" 6 draggable="false"
7 ondragstart="return false;" 7 ondragstart="return false;"
8 (contextmenu)="false" 8 (contextmenu)="false"
9 class="h-100 d-block mx-auto rotate-90-neg" 9 class="h-100 d-block mx-auto rotate-90-neg"
10 src="assets/img/ir-color.svg" 10 src="assets/img/ir-color.svg"
11 (mousedown)="scrollY(templateCategorias, -100)" 11 (mousedown)="scrollY(templateCategorias, -100)"
12 (mouseup)="mouseup()" 12 (mouseup)="mouseup()"
13 (mouseleave)="mouseup()"> 13 (mouseleave)="mouseup()">
14 </div> 14 </div>
15 <!-- CATEGORIAS --> 15 <!-- CATEGORIAS -->
16 <div 16 <div
17 #templateCategorias 17 #templateCategorias
18 class="col-12 px-0 mx-0 box-categorias border border-primary py-1 18 class="col-12 px-0 mx-0 box-categorias border border-primary py-1
19 border-left-0 rounded-right scroll-y cat-box" 19 border-left-0 rounded-right scroll-y cat-box"
20 (scroll)="scrollEvent($event)"> 20 (scroll)="scrollEvent($event)">
21 <div 21 <div
22 class="row mx-2 mb-2 h-25 h-md-32 h-lg-45 justify-content-center tab cat-content" 22 class="row mx-2 mb-2 h-25 h-md-32 h-lg-45 justify-content-center tab cat-content"
23 [ngClass]="{ 'active rounded shadow px-2': allActive, 'border-bottom-effect': !allActive }" 23 [ngClass]="{ 'active rounded shadow px-2': allActive, 'border-bottom-effect': !allActive }"
24 (click)="selectCategoria(-1, 0)"> 24 (click)="selectCategoria(-1, 0)">
25 <img 25 <img
26 draggable="false" 26 draggable="false"
27 ondragstart="return false;" 27 ondragstart="return false;"
28 (contextmenu)="false" 28 (contextmenu)="false"
29 class="col-12 img-fluid align-self-end d-none d-sm-block rounded-circle" 29 class="col-12 img-fluid align-self-end d-none d-sm-block rounded-circle"
30 src="assets/img/logo-spot.svg"> 30 src="assets/img/logo-spot.svg">
31 <small class="col-12 px-0 my-1 h-100 h-md-25 align-self-end text-center text-truncate">Todos</small> 31 <small class="col-12 px-0 my-1 h-100 h-md-25 align-self-end text-center text-truncate">Todos</small>
32 </div> 32 </div>
33 <div 33 <div
34 class="row mx-2 mb-2 h-25 h-md-32 h-lg-45 justify-content-center tab cat-content" 34 class="row mx-2 mb-2 h-25 h-md-32 h-lg-45 justify-content-center tab cat-content"
35 [ngClass]="{ 'active rounded shadow px-2': categoria.selected, 'border-bottom-effect': !categoria.selected }" 35 [ngClass]="{ 'active rounded shadow px-2': categoria.selected, 'border-bottom-effect': !categoria.selected }"
36 (click)="selectCategoria(i, categoria.id)" 36 (click)="selectCategoria(i, categoria.id)"
37 *ngFor="let categoria of categorias; let i = index;"> 37 *ngFor="let categoria of categorias; let i = index;">
38 <img 38 <img
39 draggable="false" 39 draggable="false"
40 ondragstart="return false;" 40 ondragstart="return false;"
41 (contextmenu)="false" 41 (contextmenu)="false"
42 class="col-12 img-fluid align-self-end d-none d-sm-block rounded-circle" 42 class="col-12 img-fluid align-self-end d-none d-sm-block rounded-circle"
43 src="{{urlImagenes}}{{categoria.path_imagen}}" 43 src="{{urlImagenes}}{{categoria.path_imagen}}"
44 onerror="this.src='assets/img/image-not-found.jpg'"> 44 onerror="this.src='assets/img/imagen-no-encontrada.jpg'">
45 <small class="col-12 px-1 my-1 h-100 h-md-25 align-self-end text-center text-truncate">{{categoria.detalle}}</small> 45 <small class="col-12 px-1 my-1 h-100 h-md-25 align-self-end text-center text-truncate">{{categoria.detalle}}</small>
46 </div> 46 </div>
47 </div> 47 </div>
48 <div class="col-auto btn-effect h-5 cat-btn"> 48 <div class="col-auto btn-effect h-5 cat-btn">
49 <img 49 <img
50 draggable="false" 50 draggable="false"
51 ondragstart="return false;" 51 ondragstart="return false;"
52 (contextmenu)="false" 52 (contextmenu)="false"
53 class="h-100 d-block mx-auto rotate-90" 53 class="h-100 d-block mx-auto rotate-90"
54 src="assets/img/ir-color.svg" 54 src="assets/img/ir-color.svg"
55 (mousedown)="scrollY(templateCategorias, 100)" 55 (mousedown)="scrollY(templateCategorias, 100)"
56 (mouseup)="mouseup()" 56 (mouseup)="mouseup()"
57 (mouseleave)="mouseup()"> 57 (mouseleave)="mouseup()">
58 </div> 58 </div>
59 </div> 59 </div>
60 60
src/app/modules/seleccion-articulos/seleccion-articulos.component.html
1 <div class="h-92 bg-white fade-in-left"> 1 <div class="h-92 bg-white fade-in-left">
2 <!-- PUBLICIDADES --> 2 <!-- PUBLICIDADES -->
3 <app-header-publicidad></app-header-publicidad> 3 <app-header-publicidad></app-header-publicidad>
4 4
5 <div class="row mx-0 h-80 align-items-end"> 5 <div class="row mx-0 h-80 align-items-end">
6 <!-- CABECERA --> 6 <!-- CABECERA -->
7 <div class="row w-100 mx-3 h-auto border border-primary rounded-sm"> 7 <div class="row w-100 mx-3 h-auto border border-primary rounded-sm">
8 <div class="col-12 p-2 align-self-center"> 8 <div class="col-12 p-2 align-self-center">
9 <div class="px-3"> 9 <div class="px-3">
10 <p class="h6 text-truncate">SELECCIONÁ TÚ COMIDA Y/O BEBIDA</p> 10 <p class="h6 text-truncate">SELECCIONÁ TÚ COMIDA Y/O BEBIDA</p>
11 </div> 11 </div>
12 </div> 12 </div>
13 </div> 13 </div>
14 <!-- CUERPO --> 14 <!-- CUERPO -->
15 <div class="row w-100 mr-4 h-50 h-md-70" id="content"> 15 <div class="row w-100 mr-4 h-50 h-md-70" id="content">
16 <div class="col-12 h-100 px-0 py-3"> 16 <div class="col-12 h-100 px-0 py-3">
17 <div class="row mx-0 h-100"> 17 <div class="row mx-0 h-100">
18 <app-filtro-categorias 18 <app-filtro-categorias
19 class="col-5 col-sm-3 col-xl-2 h-100" 19 class="col-5 col-sm-3 col-xl-2 h-100"
20 #filtroCategorias 20 #filtroCategorias
21 (getProductos)="getProductos()" 21 (getProductos)="getProductos()"
22 (setProductos)="setProductos()" 22 (setProductos)="setProductos()"
23 (filterItems)="filterItems()"> 23 (filterItems)="filterItems()">
24 </app-filtro-categorias> 24 </app-filtro-categorias>
25 <!-- LISTA DE ARTICULOS --> 25 <!-- LISTA DE ARTICULOS -->
26 <div 26 <div
27 class="col-7 col-sm-9 col-xl-10 pb-3 h-100 align-self-center scroll-y-visible" 27 class="col-7 col-sm-9 col-xl-10 pb-3 h-100 align-self-center scroll-y-visible"
28 (scroll)="scrollEvent($event)"> 28 (scroll)="scrollEvent($event)">
29 <div class="row row-cols-1 row-cols-sm-3 row-cols-xl-6"> 29 <div class="row row-cols-1 row-cols-sm-3 row-cols-xl-6">
30 <!-- ARTICULO --> 30 <!-- ARTICULO -->
31 <div 31 <div
32 class="col px-2 my-1 my-md-3 h-auto" 32 class="col px-2 my-1 my-md-3 h-auto"
33 *ngFor="let articulo of auxArticulos | slice:0:showQuantity;"> 33 *ngFor="let articulo of auxArticulos | slice:0:showQuantity;">
34 <div 34 <div
35 class="swing-in-top-fwd btn-effect card h-auto" 35 class="swing-in-top-fwd btn-effect card h-auto"
36 (click)="selectArticulo(articulo)"> 36 (click)="selectArticulo(articulo)">
37 <img 37 <img
38 draggable="false" 38 draggable="false"
39 ondragstart="return false;" 39 ondragstart="return false;"
40 (contextmenu)="false" 40 (contextmenu)="false"
41 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}" 41 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}"
42 onerror="this.src='assets/img/image-not-found.jpg'" 42 onerror="this.src='assets/img/imagen-no-encontrada.jpg'"
43 class="card-img-top h-30 h-md-55 rounded-sm"> 43 class="card-img-top h-30 h-md-55 rounded-sm">
44 <div class="row mx-0 py-1 h-auto justify-content-center"> 44 <div class="row mx-0 py-1 h-auto justify-content-center">
45 <p class="col-12 px-1 h6 h-auto text-primary text-center min-h-60"> 45 <p class="col-12 px-1 h6 h-auto text-primary text-center min-h-60">
46 {{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}} 46 {{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}}
47 </p> 47 </p>
48 <div class="col-12 px-1 align-self-end h-auto"> 48 <div class="col-12 px-1 align-self-end h-auto">
49 <div class="row mx-0 justify-content-between bg-primary badge-pill"> 49 <div class="row mx-0 justify-content-between bg-primary badge-pill">
50 <div class="col px-0 align-self-center text-white text-right"> 50 <div class="col px-0 align-self-center text-white text-right">
51 {{articulo.PreVen | currency}} 51 {{articulo.PreVen | currency}}
52 </div> 52 </div>
53 <div class="col-5 px-0"> 53 <div class="col-5 px-0">
54 <img 54 <img
55 draggable="false" 55 draggable="false"
56 ondragstart="return false;" 56 ondragstart="return false;"
57 (contextmenu)="false" 57 (contextmenu)="false"
58 class="d-block ml-auto py-1 icon-30" 58 class="d-block ml-auto py-1 icon-30"
59 src="assets/img/ir.svg"> 59 src="assets/img/ir.svg">
60 </div> 60 </div>
61 </div> 61 </div>
62 </div> 62 </div>
63 </div> 63 </div>
64 </div> 64 </div>
65 </div> 65 </div>
66 </div> 66 </div>
67 <!-- BOTON VER MAS --> 67 <!-- BOTON VER MAS -->
68 <div class="row mx-0"> 68 <div class="row mx-0">
69 <div 69 <div
70 *ngIf="showQuantity <= auxArticulos.slice(0, showQuantity).length" 70 *ngIf="showQuantity <= auxArticulos.slice(0, showQuantity).length"
71 class="col-12 px-0 mb-2"> 71 class="col-12 px-0 mb-2">
72 <button 72 <button
73 (click)="increaseShow()" 73 (click)="increaseShow()"
74 class="btn btn-block btn-outline-primary"> 74 class="btn btn-block btn-outline-primary">
75 Ver Más 75 Ver Más
76 </button> 76 </button>
77 </div> 77 </div>
78 </div> 78 </div>
79 </div> 79 </div>
80 </div> 80 </div>
81 </div> 81 </div>
82 </div> 82 </div>
83 <!-- FOOTER CARRITO DE COMPRAS --> 83 <!-- FOOTER CARRITO DE COMPRAS -->
84 <div class="row w-90 mx-auto h-auto justify-content-center"> 84 <div class="row w-90 mx-auto h-auto justify-content-center">
85 <div class="h-75 px-0 border border-primary rounded" #boxCarrito 85 <div class="h-75 px-0 border border-primary rounded" #boxCarrito
86 [ngClass]="boxCarrito.classList.contains('media-pantalla') 86 [ngClass]="boxCarrito.classList.contains('media-pantalla')
87 ? 'col-8' : 'col-12'" id="boxCarrito"> 87 ? 'col-8' : 'col-12'" id="boxCarrito">
88 <!-- CABECERA --> 88 <!-- CABECERA -->
89 <div class="row mx-0 h-15 border-bottom border-primary"> 89 <div class="row mx-0 h-15 border-bottom border-primary">
90 <p class="col align-self-center text-truncate"><small>ARTÍCULOS EN TÚ CARRITO DE COMPRAS</small></p> 90 <p class="col align-self-center text-truncate"><small>ARTÍCULOS EN TÚ CARRITO DE COMPRAS</small></p>
91 </div> 91 </div>
92 <!-- CUERPO --> 92 <!-- CUERPO -->
93 <div class="row h-85 mx-0 justify-content-around"> 93 <div class="row h-85 mx-0 justify-content-around">
94 <!-- BOTON SCROLL IZQUIERDA --> 94 <!-- BOTON SCROLL IZQUIERDA -->
95 <div *ngIf="articuloService.carrito.length" class="col-auto btn-effect h-20 align-self-center"> 95 <div *ngIf="articuloService.carrito.length" class="col-auto btn-effect h-20 align-self-center">
96 <img 96 <img
97 draggable="false" 97 draggable="false"
98 ondragstart="return false;" 98 ondragstart="return false;"
99 (contextmenu)="false" 99 (contextmenu)="false"
100 class="icon-30 rotate-180-neg" 100 class="icon-30 rotate-180-neg"
101 src="assets/img/ir-fondo-color.svg" 101 src="assets/img/ir-fondo-color.svg"
102 (mousedown)="scrollX(templateCarrito, -100)" 102 (mousedown)="scrollX(templateCarrito, -100)"
103 (mouseup)="mouseup()" 103 (mouseup)="mouseup()"
104 (mouseleave)="mouseup()"> 104 (mouseleave)="mouseup()">
105 </div> 105 </div>
106 <!-- CARRITO --> 106 <!-- CARRITO -->
107 <div class="col-6 col-sm-8 col-lg-10 h-100"> 107 <div class="col-6 col-sm-8 col-lg-10 h-100">
108 <div 108 <div
109 #templateCarrito 109 #templateCarrito
110 class="row flex-row flex-nowrap h-100 mx-0 my-2 scroll-x" 110 class="row flex-row flex-nowrap h-100 mx-0 my-2 scroll-x"
111 (scroll)="scrollEvent($event)"> 111 (scroll)="scrollEvent($event)">
112 <!-- ARTICULOS --> 112 <!-- ARTICULOS -->
113 <div 113 <div
114 class="col-10 col-sm-4 col-lg-2 px-2 px-xl-4 align-self-center border-right border-primary" 114 class="col-10 col-sm-4 col-lg-2 px-2 px-xl-4 align-self-center border-right border-primary"
115 *ngFor="let articulo of articuloService.carrito; let i = index;" 115 *ngFor="let articulo of articuloService.carrito; let i = index;"
116 @EnterLeaveY> 116 @EnterLeaveY>
117 <img 117 <img
118 class="btn-effect icon-20 mr-2 position-absolute right-0" 118 class="btn-effect icon-20 mr-2 position-absolute right-0"
119 src="assets/img/icono-cancelar-color.svg" 119 src="assets/img/icono-cancelar-color.svg"
120 (click)="deleteArticulo(i)"> 120 (click)="deleteArticulo(i)">
121 <img 121 <img
122 draggable="false" 122 draggable="false"
123 ondragstart="return false;" 123 ondragstart="return false;"
124 (contextmenu)="false" 124 (contextmenu)="false"
125 class="d-block img-fluid p-2 mx-auto rounded" 125 class="d-block img-fluid p-2 mx-auto rounded"
126 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}" 126 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}"
127 onerror="this.src='assets/img/image-not-found.jpg'"> 127 onerror="this.src='assets/img/imagen-no-encontrada.jpg'">
128 <p class="d-block mt-auto text-center text-primary text-truncate"> 128 <p class="d-block mt-auto text-center text-primary text-truncate">
129 <small>{{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}}</small> 129 <small>{{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}}</small>
130 </p> 130 </p>
131 <app-articulo-cantidad [articulo]="articulo"></app-articulo-cantidad> 131 <app-articulo-cantidad [articulo]="articulo"></app-articulo-cantidad>
132 </div> 132 </div>
133 <!-- MENSAJE DE ADVERTENCIA --> 133 <!-- MENSAJE DE ADVERTENCIA -->
134 <div *ngIf="!articuloService.carrito.length" class="col h-100"> 134 <div *ngIf="!articuloService.carrito.length" class="col h-100">
135 <p class="text-center py-5">No hay articulos en el carrito</p> 135 <p class="text-center py-5">No hay articulos en el carrito</p>
136 </div> 136 </div>
137 </div> 137 </div>
138 </div> 138 </div>
139 <!-- BOTON SCROLL DERECHA --> 139 <!-- BOTON SCROLL DERECHA -->
140 <div *ngIf="articuloService.carrito.length" class="col-auto btn-effect h-20 align-self-center"> 140 <div *ngIf="articuloService.carrito.length" class="col-auto btn-effect h-20 align-self-center">
141 <img 141 <img
142 draggable="false" 142 draggable="false"
143 ondragstart="return false;" 143 ondragstart="return false;"
144 (contextmenu)="false" 144 (contextmenu)="false"
145 class="icon-30" 145 class="icon-30"
146 src="assets/img/ir-fondo-color.svg" 146 src="assets/img/ir-fondo-color.svg"
147 (mousedown)="scrollX(templateCarrito, 100)" 147 (mousedown)="scrollX(templateCarrito, 100)"
148 (mouseup)="mouseup()" 148 (mouseup)="mouseup()"
149 (mouseleave)="mouseup()"> 149 (mouseleave)="mouseup()">
150 </div> 150 </div>
151 </div> 151 </div>
152 </div> 152 </div>
153 <!-- TOTAL--> 153 <!-- TOTAL-->
154 <div 154 <div
155 class="col-auto mt-2 ml-auto h-20"> 155 class="col-auto mt-2 ml-auto h-20">
156 <div class="row mx-0"> 156 <div class="row mx-0">
157 <div class="col-auto align-self-center text-primary">TOTAL</div> 157 <div class="col-auto align-self-center text-primary">TOTAL</div>
158 <div class="col-auto bg-primary badge-pill"> 158 <div class="col-auto bg-primary badge-pill">
159 <p class="text-center text-white mt-1 py-1">{{articuloService.subTotal | currency}}</p> 159 <p class="text-center text-white mt-1 py-1">{{articuloService.subTotal | currency}}</p>
160 </div> 160 </div>
161 </div> 161 </div>
162 </div> 162 </div>
163 163
164 <!-- VER CARRITO --> 164 <!-- VER CARRITO -->
165 <div 165 <div
166 class="col-auto px-0 mt-2 h-20" 166 class="col-auto px-0 mt-2 h-20"
167 *ngIf="articuloService.carrito.length" 167 *ngIf="articuloService.carrito.length"
168 [ngClass]="{'ml-auto pb-3' : boxCarrito.classList.contains('media-pantalla')}"> 168 [ngClass]="{'ml-auto pb-3' : boxCarrito.classList.contains('media-pantalla')}">
169 <div 169 <div
170 class="btn-effect col-auto px-0 align-self-center bg-white" 170 class="btn-effect col-auto px-0 align-self-center bg-white"
171 [routerLink]="['/carrito']"> 171 [routerLink]="['/carrito']">
172 <div class="row mx-0 bg-light"> 172 <div class="row mx-0 bg-light">
173 <div class="col-auto p-0 bg-primary"> 173 <div class="col-auto p-0 bg-primary">
174 <img 174 <img
175 draggable="false" 175 draggable="false"
176 ondragstart="return false;" 176 ondragstart="return false;"
177 (contextmenu)="false" 177 (contextmenu)="false"
178 class="p-2 icon-40" 178 class="p-2 icon-40"
179 src="assets/img/carrito.svg"> 179 src="assets/img/carrito.svg">
180 </div> 180 </div>
181 <div class="col-auto align-self-center text-primary d-none d-sm-block">IR AL CARRITO</div> 181 <div class="col-auto align-self-center text-primary d-none d-sm-block">IR AL CARRITO</div>
182 </div> 182 </div>
183 </div> 183 </div>
184 </div> 184 </div>
185 185
186 </div> 186 </div>
187 </div> 187 </div>
188 188
189 </div> 189 </div>
190 190
src/app/shared/confirmacion/confirmacion.component.html
1 <div class="modal-header bg-primary rounded-top pt-4 px-2"> 1 <div class="modal-header bg-primary rounded-top pt-4 px-2">
2 <div class="row mx-0 w-100 justify-content-between"> 2 <div class="row mx-0 w-100 justify-content-between">
3 <div class="col-8"> 3 <div class="col-8">
4 <p *ngIf="titleMessage" class="h3 text-white">{{titleMessage}}</p> 4 <p *ngIf="titleMessage" class="h3 text-white">{{titleMessage}}</p>
5 </div> 5 </div>
6 </div> 6 </div>
7 <div *ngIf="imagenPath" class="col-4 align-self-center"> 7 <div *ngIf="imagenPath" class="col-4 align-self-center">
8 <img 8 <img
9 draggable="false" 9 draggable="false"
10 ondragstart="return false;" 10 ondragstart="return false;"
11 (contextmenu)="false" 11 (contextmenu)="false"
12 src="{{urlImagenes}}{{imagenPath}}" 12 src="{{urlImagenes}}{{imagenPath}}"
13 onerror="this.src='assets/img/image-not-found.jpg'" 13 onerror="this.src='assets/img/imagen-no-encontrada.jpg'"
14 class="card-img-top img-fluid rounded-circle"> 14 class="card-img-top img-fluid rounded-circle">
15 </div> 15 </div>
16 </div> 16 </div>
17 <div class=" col-12 modal-body bg-primary rounded-bottom pb-3 px-2"> 17 <div class=" col-12 modal-body bg-primary rounded-bottom pb-3 px-2">
18 <div class="row justify-content-between mx-0 w-100"> 18 <div class="row justify-content-between mx-0 w-100">
19 <div class="col-8"> 19 <div class="col-8">
20 <p *ngIf="footerMessageFirst" class="text-white"><small>{{footerMessageFirst}}</small></p > 20 <p *ngIf="footerMessageFirst" class="text-white"><small>{{footerMessageFirst}}</small></p >
21 <h1 *ngIf="footerMessageSecond" class="text-white mb-4">{{footerMessageSecond}}</h1> 21 <h1 *ngIf="footerMessageSecond" class="text-white mb-4">{{footerMessageSecond}}</h1>
22 </div> 22 </div>
23 <div class="col-4"> 23 <div class="col-4">
24 <div 24 <div
25 class="mx-0" 25 class="mx-0"
26 (click)="confirmarArticulo()"> 26 (click)="confirmarArticulo()">
27 <div class="col-auto bg-white badge-pill"> 27 <div class="col-auto bg-white badge-pill">
28 <div class="row justify-content-between"> 28 <div class="row justify-content-between">
29 <div *ngIf="footerConfirmation" class="col-auto px-0 align-self-center text-primary pl-3"> 29 <div *ngIf="footerConfirmation" class="col-auto px-0 align-self-center text-primary pl-3">
30 <p class="font-weight-bold">{{footerConfirmation | currency}}</p> 30 <p class="font-weight-bold">{{footerConfirmation | currency}}</p>
31 </div> 31 </div>
32 <div class="col-auto px-0"> 32 <div class="col-auto px-0">
33 <img 33 <img
34 draggable="false" 34 draggable="false"
35 ondragstart="return false;" 35 ondragstart="return false;"
36 (contextmenu)="false" 36 (contextmenu)="false"
37 class="d-block ml-auto my-1 icon-30 pr-2" 37 class="d-block ml-auto my-1 icon-30 pr-2"
38 src="assets/img/ir-color.svg"> 38 src="assets/img/ir-color.svg">
39 </div> 39 </div>
40 </div> 40 </div>
41 </div> 41 </div>
42 </div> 42 </div>
43 <div *ngIf="footerClose" class="bg-white badge-pill mt-2"> 43 <div *ngIf="footerClose" class="bg-white badge-pill mt-2">
44 <div class="row justify-content-between"> 44 <div class="row justify-content-between">
45 <div 45 <div
46 class="col-auto mx-0 " 46 class="col-auto mx-0 "
47 (click)="close()"> 47 (click)="close()">
48 <p class="font-weight-bold text-center text-primary">{{footerClose}}</p> 48 <p class="font-weight-bold text-center text-primary">{{footerClose}}</p>
49 </div> 49 </div>
50 <i class="fas fa-undo-alt text-info mr-3 my-auto"></i> 50 <i class="fas fa-undo-alt text-info mr-3 my-auto"></i>
51 </div> 51 </div>
52 </div> 52 </div>
53 </div> 53 </div>
54 </div> 54 </div>
55 </div> 55 </div>
56 56
src/app/shared/header-publicidad/header-publicidad.component.ts
1 import { Component, OnInit, TemplateRef } from '@angular/core'; 1 import { Component, OnInit, TemplateRef } from '@angular/core';
2 import { APP_SETTINGS } from 'src/etc/AppSettings'; 2 import { APP_SETTINGS } from 'src/etc/AppSettings';
3 import { IPublicidad } from 'src/app/interfaces/IPublicidad'; 3 import { IPublicidad } from 'src/app/interfaces/IPublicidad';
4 import { PublicidadService } from 'src/app/services/publicidad/publicidad.service'; 4 import { PublicidadService } from 'src/app/services/publicidad/publicidad.service';
5 import { IArticulo } from 'src/app/interfaces/IArticulo'; 5 import { IArticulo } from 'src/app/interfaces/IArticulo';
6 import { PromocionComponent } from '../promocion/promocion.component'; 6 import { PromocionComponent } from '../promocion/promocion.component';
7 import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal'; 7 import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';
8 import { ArticuloService } from 'src/app/services/articulo/articulo.service'; 8 import { ArticuloService } from 'src/app/services/articulo/articulo.service';
9 import { ConfirmacionComponent } from '../confirmacion/confirmacion.component'; 9 import { ConfirmacionComponent } from '../confirmacion/confirmacion.component';
10 import { SinonimoService } from 'src/app/services/sinonimo/sinonimo.service'; 10 import { SinonimoService } from 'src/app/services/sinonimo/sinonimo.service';
11 import { ISinonimo } from 'src/app/interfaces/ISinonimo'; 11 import { ISinonimo } from 'src/app/interfaces/ISinonimo';
12 import { SinonimoComponent } from '../sinonimo/sinonimo.component'; 12 import { SinonimoComponent } from '../sinonimo/sinonimo.component';
13 13
14 @Component({ 14 @Component({
15 selector: 'app-header-publicidad', 15 selector: 'app-header-publicidad',
16 templateUrl: './header-publicidad.component.html', 16 templateUrl: './header-publicidad.component.html',
17 styleUrls: ['./header-publicidad.component.scss'] 17 styleUrls: ['./header-publicidad.component.scss']
18 }) 18 })
19 export class HeaderPublicidadComponent implements OnInit { 19 export class HeaderPublicidadComponent implements OnInit {
20 urlImagenes = `${APP_SETTINGS.apiDeboSuite}/imagenes/`; 20 urlImagenes = `${APP_SETTINGS.apiDeboSuite}/imagenes/`;
21 publicidades: IPublicidad[] = []; 21 publicidades: IPublicidad[] = [];
22 modalRef: BsModalRef; 22 modalRef: BsModalRef;
23 23
24 constructor( 24 constructor(
25 private publicidadService: PublicidadService, 25 private publicidadService: PublicidadService,
26 private articuloService: ArticuloService, 26 private articuloService: ArticuloService,
27 private modalService: BsModalService, 27 private modalService: BsModalService,
28 private sinonimoService: SinonimoService 28 private sinonimoService: SinonimoService
29 ) { } 29 ) { }
30 30
31 ngOnInit() { 31 ngOnInit() {
32 this.getPublicidades(); 32 this.getPublicidades();
33 this.mediaPantalla(); 33 this.mediaPantalla();
34 } 34 }
35 35
36 getPublicidades() { 36 getPublicidades() {
37 this.publicidadService.getAll() 37 this.publicidadService.getAll()
38 .subscribe((res: IPublicidad[]) => { 38 .subscribe((res: IPublicidad[]) => {
39 this.publicidades = res; 39 this.publicidades = res;
40 }, err => console.error(err)); 40 }, err => console.error(err));
41 } 41 }
42 42
43 elegirArticulo(publicidad: IPublicidad) { 43 elegirArticulo(publicidad: IPublicidad) {
44 if (publicidad.id_articulo) this.getByID(publicidad.id_articulo); 44 if (publicidad.id_articulo) this.getByID(publicidad.id_articulo);
45 } 45 }
46 46
47 getByID(id: number) { 47 getByID(id: number) {
48 this.articuloService.getById(id) 48 this.articuloService.getById(id)
49 .subscribe((res: IArticulo) => { 49 .subscribe((res: IArticulo) => {
50 if (res.FPP) { 50 if (res.FPP) {
51 this.openModalPromos(res); 51 this.openModalPromos(res);
52 return; 52 return;
53 } else { 53 } else {
54 this.openModalConfirmacion(res); 54 this.openModalConfirmacion(res);
55 return; 55 return;
56 } 56 }
57 }, err => console.error(err)); 57 }, err => console.error(err));
58 } 58 }
59 59
60 openModalPromos(articulo: IArticulo) { 60 openModalPromos(articulo: IArticulo) {
61 this.modalRef = this.modalService.show(PromocionComponent, 61 this.modalRef = this.modalService.show(PromocionComponent,
62 { 62 {
63 initialState: { 63 initialState: {
64 idArticulo: articulo.id 64 idArticulo: articulo.id
65 }, 65 },
66 class: 'modal-promo modal-dialog-centered' 66 class: 'modal-promo modal-dialog-centered'
67 }); 67 });
68 } 68 }
69 69
70 openModalConfirmacion(articulo: IArticulo) { 70 openModalConfirmacion(articulo: IArticulo) {
71 this.modalRef = this.modalService.show(ConfirmacionComponent, 71 this.modalRef = this.modalService.show(ConfirmacionComponent,
72 { 72 {
73 initialState: { 73 initialState: {
74 titleMessage: articulo.DET_LAR, 74 titleMessage: articulo.DET_LAR,
75 imagenPath: articulo.imagenes.length ? articulo.imagenes[0].imagen : 'assets/img/image-not-found.jpg', 75 imagenPath: articulo.imagenes.length ? articulo.imagenes[0].imagen : 'assets/img/imagen-no-encontrada.jpg',
76 footerMessageFirst: `¿DESEA AGREGAR ESTE ARTÍCULO`, 76 footerMessageFirst: `¿DESEA AGREGAR ESTE ARTÍCULO`,
77 footerMessageSecond: `a su carrito?`, 77 footerMessageSecond: `a su carrito?`,
78 footerConfirmation: articulo.PreVen, 78 footerConfirmation: articulo.PreVen,
79 footerClose: `volver` 79 footerClose: `volver`
80 }, 80 },
81 class: 'modal-promo modal-dialog-centered' 81 class: 'modal-promo modal-dialog-centered'
82 }); 82 });
83 this.modalRef.content.onClose.subscribe(() => { 83 this.modalRef.content.onClose.subscribe(() => {
84 this.sinonimoService.getSinonimos(articulo.CodSec, articulo.CodArt) 84 this.sinonimoService.getSinonimos(articulo.CodSec, articulo.CodArt)
85 .subscribe((res: ISinonimo[]) => { 85 .subscribe((res: ISinonimo[]) => {
86 if (res.length) { 86 if (res.length) {
87 this.openModalSinonimos(res, articulo); 87 this.openModalSinonimos(res, articulo);
88 } else { 88 } else {
89 articulo.cantidad = 1; 89 articulo.cantidad = 1;
90 this.articuloService.setArticulo(articulo); 90 this.articuloService.setArticulo(articulo);
91 } 91 }
92 }, err => console.error(err)); 92 }, err => console.error(err));
93 }); 93 });
94 this.mediaPantalla(); 94 this.mediaPantalla();
95 } 95 }
96 96
97 openModalSinonimos(sinonimosData: ISinonimo[], articulo: IArticulo) { 97 openModalSinonimos(sinonimosData: ISinonimo[], articulo: IArticulo) {
98 const modalSinonimo = this.modalService.show(SinonimoComponent, { 98 const modalSinonimo = this.modalService.show(SinonimoComponent, {
99 initialState: { sinonimos: sinonimosData }, 99 initialState: { sinonimos: sinonimosData },
100 class: 'modal-promo modal-dialog-centered' 100 class: 'modal-promo modal-dialog-centered'
101 }); 101 });
102 modalSinonimo.content.onClose 102 modalSinonimo.content.onClose
103 .subscribe((res: any) => { 103 .subscribe((res: any) => {
104 for (const a of articulo.productos) { 104 for (const a of articulo.productos) {
105 if (a.idSinonimo === res.ID_SIN) { 105 if (a.idSinonimo === res.ID_SIN) {
106 a.CODA = res.articulo.CodArt; 106 a.CODA = res.articulo.CodArt;
107 a.CodArt = res.articulo.CodArt; 107 a.CodArt = res.articulo.CodArt;
108 a.SECA = res.articulo.CodSec; 108 a.SECA = res.articulo.CodSec;
109 a.CodSec = res.articulo.CodSec; 109 a.CodSec = res.articulo.CodSec;
110 a.PreVen = res.articulo.PreVen; 110 a.PreVen = res.articulo.PreVen;
111 a.id = res.articulo.id; 111 a.id = res.articulo.id;
112 a.DET_LAR = res.articulo.DET_LAR; 112 a.DET_LAR = res.articulo.DET_LAR;
113 a.DetArt = res.articulo.DetArt; 113 a.DetArt = res.articulo.DetArt;
114 } 114 }
115 } 115 }
116 this.articuloService.setArticulo(articulo); 116 this.articuloService.setArticulo(articulo);
117 }); 117 });
118 } 118 }
119 119
120 mediaPantalla() { 120 mediaPantalla() {
121 if ($('body').hasClass('media-pantalla')) { 121 if ($('body').hasClass('media-pantalla')) {
122 $('#headerPublicidad,#headerPad').addClass('media-pantalla'); 122 $('#headerPublicidad,#headerPad').addClass('media-pantalla');
123 } 123 }
124 } 124 }
125 } 125 }
126 126
src/app/shared/promocion/promocion.component.html
1 <div class="modal-header bg-primary rounded-top pt-4 px-2"> 1 <div class="modal-header bg-primary rounded-top pt-4 px-2">
2 <div class="row mx-0 w-100 justify-content-between" *ngIf="articulosPromo.length"> 2 <div class="row mx-0 w-100 justify-content-between" *ngIf="articulosPromo.length">
3 <div class="col-8"> 3 <div class="col-8">
4 <p class="h3 text-white">{{articulosPromo[0].DetArt}}</p> 4 <p class="h3 text-white">{{articulosPromo[0].DetArt}}</p>
5 </div> 5 </div>
6 <div class="col-4 align-self-center"> 6 <div class="col-4 align-self-center">
7 <div 7 <div
8 class="row mx-0 justify-content-between bg-white badge-pill" 8 class="row mx-0 justify-content-between bg-white badge-pill"
9 (click)="selectPromo(articulosPromo[0])"> 9 (click)="selectPromo(articulosPromo[0])">
10 <div class="col px-0 align-self-center text-primary"> 10 <div class="col px-0 align-self-center text-primary">
11 <p class="font-weight-bold">{{articulosPromo[0].PreVen | currency}}</p> 11 <p class="font-weight-bold">{{articulosPromo[0].PreVen | currency}}</p>
12 </div> 12 </div>
13 <div class="col-3 px-0"> 13 <div class="col-3 px-0">
14 <img 14 <img
15 draggable="false" 15 draggable="false"
16 ondragstart="return false;" 16 ondragstart="return false;"
17 (contextmenu)="false" 17 (contextmenu)="false"
18 class="d-block ml-auto py-1 icon-30 mr-2 pt-2" 18 class="d-block ml-auto py-1 icon-30 mr-2 pt-2"
19 src="assets/img/ir-color.svg"> 19 src="assets/img/ir-color.svg">
20 </div> 20 </div>
21 </div> 21 </div>
22 </div> 22 </div>
23 </div> 23 </div>
24 </div> 24 </div>
25 <div class="modal-body bg-primary rounded-bottom pb-3 px-2" *ngIf="articulosPromo.length"> 25 <div class="modal-body bg-primary rounded-bottom pb-3 px-2" *ngIf="articulosPromo.length">
26 <div class="row mx-0 w-100"> 26 <div class="row mx-0 w-100">
27 <div class="col-9"> 27 <div class="col-9">
28 <p class="text-white"><small>¿TE GUSTARÍA LLEVAR ESTE ARTÍCULO</small></p> 28 <p class="text-white"><small>¿TE GUSTARÍA LLEVAR ESTE ARTÍCULO</small></p>
29 <h1 class="text-white mb-4">en un combo?</h1> 29 <h1 class="text-white mb-4">en un combo?</h1>
30 </div> 30 </div>
31 <div class="col-3"> 31 <div class="col-3">
32 <img 32 <img
33 draggable="false" 33 draggable="false"
34 ondragstart="return false;" 34 ondragstart="return false;"
35 (contextmenu)="false" 35 (contextmenu)="false"
36 src="{{urlImagenes}}{{articulosPromo[0].imagenes[0].imagen}}" 36 src="{{urlImagenes}}{{articulosPromo[0].imagenes[0].imagen}}"
37 onerror="this.src='assets/img/image-not-found.jpg'" 37 onerror="this.src='assets/img/imagen-no-encontrada.jpg'"
38 class="card-img-top img-fluid rounded-circle"> 38 class="card-img-top img-fluid rounded-circle">
39 </div> 39 </div>
40 </div> 40 </div>
41 <div 41 <div
42 class="row mx-0 lista-promociones scroll-y-visible" 42 class="row mx-0 lista-promociones scroll-y-visible"
43 (scroll)="scrollEvent($event)"> 43 (scroll)="scrollEvent($event)">
44 <div class="col-12"> 44 <div class="col-12">
45 <div *ngFor="let promo of promociones"> 45 <div *ngFor="let promo of promociones">
46 <div 46 <div
47 class="mx-0 mb-2 btn-effect bg-white badge-pill text-primary" 47 class="mx-0 mb-2 btn-effect bg-white badge-pill text-primary"
48 (click)="selectPromo(promo)"> 48 (click)="selectPromo(promo)">
49 <div class="d-flex"> 49 <div class="d-flex">
50 <p class="text-truncate mr-auto my-auto"><small>{{promo.DetArt}}</small></p> 50 <p class="text-truncate mr-auto my-auto"><small>{{promo.DetArt}}</small></p>
51 <p class="font-weight-bold my-auto pr-2"> 51 <p class="font-weight-bold my-auto pr-2">
52 <span>{{promo.PreVen | currency}}</span> 52 <span>{{promo.PreVen | currency}}</span>
53 </p> 53 </p>
54 <img 54 <img
55 draggable="false" 55 draggable="false"
56 ondragstart="return false;" 56 ondragstart="return false;"
57 (contextmenu)="false" 57 (contextmenu)="false"
58 class="d-block icon-30 py-1" 58 class="d-block icon-30 py-1"
59 src="assets/img/ir-color.svg"> 59 src="assets/img/ir-color.svg">
60 </div> 60 </div>
61 </div> 61 </div>
62 </div> 62 </div>
63 </div> 63 </div>
64 </div> 64 </div>
65 </div> 65 </div>
66 66
src/assets/img/image-not-found.jpg

41.5 KB

src/assets/img/imagen-no-encontrada.jpg

30.5 KB