Commit 8fffe59b967e887fc9a64443e60942a78f2296e1

Authored by Marcelo Puebla
Exists in develop

Merge branch 'develop' into 'develop'

Develop

See merge request !139
src/app/interfaces/IArticulo.ts
1 export interface IArticulo { 1 export interface IArticulo {
2 cantidad?: number; 2 cantidad?: number;
3 cantidadAdicionada?: number; 3 cantidadAdicionada?: number;
4 cantidadVendida?: number; 4 cantidadVendida?: number;
5 categoria_selfservice?: number; 5 categoria_selfservice?: number;
6 CodArt: number; 6 CodArt: number;
7 codigoBarra?: ICodigoBarra[]; 7 codigoBarra?: ICodigoBarra[];
8 CodSec: number; 8 CodSec: number;
9 DetArt: string; 9 DetArt: string;
10 DET_LAR: string; 10 DET_LAR: string;
11 ELBPRO: string; 11 ELBPRO: string;
12 esAdicionable?: boolean; 12 esAdicionable?: boolean;
13 esSustraible?: boolean; 13 esSustraible?: boolean;
14 FPP?: boolean; 14 FPP?: boolean;
15 id: number; 15 id: number;
16 idSinonimo?: number; 16 idSinonimo?: number;
17 ID_SIN?: number; 17 ID_SIN?: number;
18 imagenes?: any[]; 18 imagenes?: any[];
19 ImpInt: number; 19 ImpInt: number;
20 ImpInt2: number; 20 ImpInt2: number;
21 ImpInt3: number; 21 ImpInt3: number;
22 importeValorExtra?: number; 22 importeValorExtra?: number;
23 PreVen: number; 23 PreVen: number;
24 PRO: boolean; 24 PRO: boolean;
25 productos?: IArticulo[]; 25 productos?: IArticulo[];
26 seleccionado?: boolean; 26 seleccionado?: boolean;
27 tieneSinonimo?: boolean; 27 tieneSinonimo?: boolean;
28 tipo_articulo?: number; 28 tipo_articulo?: number;
29 CODA?: number; 29 CODA?: number;
30 CODP?: number; 30 CODP?: number;
31 SECA?: number; 31 SECA?: number;
32 SECP?: number; 32 SECP?: number;
33 MKT_DESC?: string; 33 MKT_DESC?: string;
34 NHA?: boolean;
35 FECHA_VIGENCIA_HASTA?: Date;
36 FECHA_VIGENCIA_DESDE?: Date;
37 ExiVta?: number;
34 } 38 }
35 39
36 export interface ICodigoBarra { 40 export interface ICodigoBarra {
37 CodBar: string; 41 CodBar: string;
38 CodArt: number; 42 CodArt: number;
39 CodSec: string; 43 CodSec: string;
40 } 44 }
41 45
src/app/modules/seleccion-articulos/no-stock/no-stock.component.html
File was created 1 <div class="bg-primary rounded">
2 <div class="modal-body">
3 <img
4 draggable="false"
5 ondragstart="return false;"
6 (contextmenu)="false"
7 (click)="close()"
8 class="btn-effect icon-30 mt-2 mr-2 position-absolute top-0 right-0 z-index"
9 src="assets/img/icono-cancelar-blanco.svg">
10 <div class="row mx-0 my-2">
11 <img
12 draggable="false"
13 ondragstart="return false;"
14 (contextmenu)="false"
15 class="d-block mx-auto icon-60"
16 src="assets/img/sin-stock-2.svg">
17 <div class="col-12 py-3">
18 <p class="text-white text-center h4">
19 Disculpá, este articulo no está disponible por el momento
20 </p>
21 </div>
22 </div>
23 </div>
24 </div>
25
src/app/modules/seleccion-articulos/no-stock/no-stock.component.scss
src/app/modules/seleccion-articulos/no-stock/no-stock.component.spec.ts
File was created 1 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
3 import { NoStockComponent } from './no-stock.component';
4
5 describe('NoStockComponent', () => {
6 let component: NoStockComponent;
7 let fixture: ComponentFixture<NoStockComponent>;
8
9 beforeEach(async(() => {
10 TestBed.configureTestingModule({
11 declarations: [ NoStockComponent ]
12 })
13 .compileComponents();
14 }));
15
16 beforeEach(() => {
17 fixture = TestBed.createComponent(NoStockComponent);
18 component = fixture.componentInstance;
19 fixture.detectChanges();
20 });
21
22 it('should create', () => {
23 expect(component).toBeTruthy();
24 });
25 });
26
src/app/modules/seleccion-articulos/no-stock/no-stock.component.ts
File was created 1 import { Component, OnInit } from '@angular/core';
2 import { BsModalRef } from 'ngx-bootstrap/modal';
3 import { Subject } from 'rxjs';
4
5 @Component({
6 selector: 'app-no-stock',
7 templateUrl: './no-stock.component.html',
8 styleUrls: ['./no-stock.component.scss']
9 })
10 export class NoStockComponent implements OnInit {
11 onClose: Subject<any>;
12
13 constructor(
14 private modalRef: BsModalRef,
15 ) {
16 this.onClose = new Subject();
17 }
18
19 ngOnInit() {
20 }
21
22 close() {
23 this.onClose.next();
24 this.modalRef.hide();
25 }
26
27 }
28
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 align-items-end" 5 <div class="row mx-0 align-items-end"
6 [ngClass]="boxCarrito.classList.contains('media-pantalla') 6 [ngClass]="boxCarrito.classList.contains('media-pantalla')
7 ? 'h-68' : 'h-80'"> 7 ? 'h-68' : 'h-80'">
8 <!-- CABECERA --> 8 <!-- CABECERA -->
9 <div class="row w-100 mx-3 h-auto border border-primary rounded-sm"> 9 <div class="row w-100 mx-3 h-auto border border-primary rounded-sm">
10 <div class="col-12 p-2 align-self-center"> 10 <div class="col-12 p-2 align-self-center">
11 <div class="px-3"> 11 <div class="px-3">
12 <p class="h6 text-truncate">SELECCIONÁ TÚ COMIDA Y/O BEBIDA</p> 12 <p class="h6 text-truncate">SELECCIONÁ TÚ COMIDA Y/O BEBIDA</p>
13 </div> 13 </div>
14 </div> 14 </div>
15 </div> 15 </div>
16 <!-- CUERPO --> 16 <!-- CUERPO -->
17 <div class="row w-100 mr-4 h-50 h-md-70" id="content"> 17 <div class="row w-100 mr-4 h-50 h-md-70" id="content">
18 <div class="col-12 h-100 px-0 py-3"> 18 <div class="col-12 h-100 px-0 py-3">
19 <div class="row mx-0 h-100"> 19 <div class="row mx-0 h-100">
20 <app-filtro-categorias 20 <app-filtro-categorias
21 class="col-5 col-sm-3 col-xl-2 h-100" 21 class="col-5 col-sm-3 col-xl-2 h-100"
22 #filtroCategorias 22 #filtroCategorias
23 (getProductos)="getProductos()" 23 (getProductos)="getProductos()"
24 (setProductos)="setProductos()" 24 (setProductos)="setProductos()"
25 (filterItems)="filterItems()"> 25 (filterItems)="filterItems()">
26 </app-filtro-categorias> 26 </app-filtro-categorias>
27 <!-- LISTA DE ARTICULOS --> 27 <!-- LISTA DE ARTICULOS -->
28 <div 28 <div
29 class="col-7 col-sm-9 col-xl-10 pb-3 h-100 align-self-center scroll-y-visible" 29 class="col-7 col-sm-9 col-xl-10 pb-3 h-100 align-self-center scroll-y-visible"
30 (scroll)="scrollEvent($event)"> 30 (scroll)="scrollEvent($event)">
31 <!-- SPINNER --> 31 <!-- SPINNER -->
32 <div 32 <div
33 class="d-flex justify-content-center" 33 class="d-flex justify-content-center"
34 *ngIf="loading"> 34 *ngIf="loading">
35 <div class="spinner-border text-primary mt-5" role="status"> 35 <div class="spinner-border text-primary mt-5" role="status">
36 <span class="sr-only">Loading...</span> 36 <span class="sr-only">Loading...</span>
37 </div> 37 </div>
38 </div> 38 </div>
39 <div class="row row-cols-1 row-cols-sm-3 row-cols-xl-6"> 39 <div class="row row-cols-1 row-cols-sm-3 row-cols-xl-6">
40 <!-- ARTICULO --> 40 <!-- ARTICULO -->
41 <div 41 <div
42 *ngFor="let articulo of auxArticulos | slice:0:showQuantity;" 42 *ngFor="let articulo of auxArticulos | slice:0:showQuantity;"
43 class="col px-2 my-1 my-md-3 h-auto"> 43 class="col px-2 my-1 my-md-3 h-auto">
44 <div 44 <div
45 class="swing-in-top-fwd btn-effect card h-auto" 45 class="swing-in-top-fwd btn-effect card h-auto"
46 (click)="selectArticulo(articulo)"> 46 (click)="selectArticulo(articulo)">
47 <img 47 <img
48 draggable="false" 48 draggable="false"
49 ondragstart="return false;" 49 ondragstart="return false;"
50 (contextmenu)="false" 50 (contextmenu)="false"
51 *ngIf="articulo.ExiVta < 1"
52 class="position-fixed right-0"
53 src="assets/img/sin-stock.svg">
54 <img
55 draggable="false"
56 ondragstart="return false;"
57 (contextmenu)="false"
51 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}" 58 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}"
52 onerror="this.src='assets/img/imagen-no-encontrada.jpg'" 59 onerror="this.src='assets/img/imagen-no-encontrada.jpg'"
53 class="card-img-top w-100 h-auto h-md-55 rounded-sm"> 60 class="card-img-top w-100 h-auto h-md-55 rounded-sm">
54 <div class="row mx-0 py-1 h-auto justify-content-center"> 61 <div class="row mx-0 py-1 h-auto justify-content-center">
55 <p class="col-12 px-1 h6 h-auto text-primary text-center min-h-60"> 62 <p class="col-12 px-1 h6 h-auto text-primary text-center min-h-60">
56 {{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}} 63 {{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}}
57 </p> 64 </p>
58 <div class="col-12 px-1 align-self-end h-auto"> 65 <div class="col-12 px-1 align-self-end h-auto">
59 <div class="row mx-0 justify-content-between bg-primary badge-pill"> 66 <div class="row mx-0 justify-content-between bg-primary badge-pill">
60 <div class="col px-0 align-self-center text-white text-right"> 67 <div class="col px-0 align-self-center text-white text-right">
61 {{articulo.PreVen | currency}} 68 {{articulo.PreVen | currency}}
62 </div> 69 </div>
63 <div class="col-5 px-0"> 70 <div class="col-5 px-0">
64 <img 71 <img
65 draggable="false" 72 draggable="false"
66 ondragstart="return false;" 73 ondragstart="return false;"
67 (contextmenu)="false" 74 (contextmenu)="false"
68 class="d-block ml-auto py-1 icon-30" 75 class="d-block ml-auto py-1 icon-30"
69 src="assets/img/ir.svg"> 76 src="assets/img/ir.svg">
70 </div> 77 </div>
71 </div> 78 </div>
72 </div> 79 </div>
73 </div> 80 </div>
74 </div> 81 </div>
75 </div> 82 </div>
76 </div> 83 </div>
77 <!-- BOTON VER MAS --> 84 <!-- BOTON VER MAS -->
78 <div class="row mx-0"> 85 <div class="row mx-0">
79 <div 86 <div
80 *ngIf="showQuantity <= auxArticulos.slice(0, showQuantity).length" 87 *ngIf="showQuantity <= auxArticulos.slice(0, showQuantity).length"
81 class="col-12 px-0 mb-2"> 88 class="col-12 px-0 mb-2">
82 <button 89 <button
83 (click)="increaseShow()" 90 (click)="increaseShow()"
84 class="btn btn-block btn-outline-primary"> 91 class="btn btn-block btn-outline-primary">
85 Ver Más 92 Ver Más
86 </button> 93 </button>
87 </div> 94 </div>
88 </div> 95 </div>
89 </div> 96 </div>
90 </div> 97 </div>
91 </div> 98 </div>
92 </div> 99 </div>
93 <!-- FOOTER CARRITO DE COMPRAS --> 100 <!-- FOOTER CARRITO DE COMPRAS -->
94 <div class="row w-90 mx-auto h-auto justify-content-center"> 101 <div class="row w-90 mx-auto h-auto justify-content-center">
95 <div class="h-75 px-0 border border-primary rounded" #boxCarrito 102 <div class="h-75 px-0 border border-primary rounded" #boxCarrito
96 [ngClass]="boxCarrito.classList.contains('media-pantalla') 103 [ngClass]="boxCarrito.classList.contains('media-pantalla')
97 ? 'col-8' : 'col-12'" id="boxCarrito"> 104 ? 'col-8' : 'col-12'" id="boxCarrito">
98 <!-- CABECERA --> 105 <!-- CABECERA -->
99 <div class="row mx-0 h-15 border-bottom border-primary"> 106 <div class="row mx-0 h-15 border-bottom border-primary">
100 <p class="col align-self-center text-truncate"><small>ARTÍCULOS EN TÚ CARRITO DE COMPRAS</small></p> 107 <p class="col align-self-center text-truncate"><small>ARTÍCULOS EN TÚ CARRITO DE COMPRAS</small></p>
101 </div> 108 </div>
102 <!-- CUERPO --> 109 <!-- CUERPO -->
103 <div class="row h-85 mx-0 justify-content-around"> 110 <div class="row h-85 mx-0 justify-content-around">
104 <!-- BOTON SCROLL IZQUIERDA --> 111 <!-- BOTON SCROLL IZQUIERDA -->
105 <div *ngIf="articuloService.carrito.length" class="col-auto btn-effect h-20 align-self-center"> 112 <div *ngIf="articuloService.carrito.length" class="col-auto btn-effect h-20 align-self-center">
106 <img 113 <img
107 draggable="false" 114 draggable="false"
108 ondragstart="return false;" 115 ondragstart="return false;"
109 (contextmenu)="false" 116 (contextmenu)="false"
110 class="icon-30 rotate-180-neg" 117 class="icon-30 rotate-180-neg"
111 src="assets/img/ir-fondo-color.svg" 118 src="assets/img/ir-fondo-color.svg"
112 (mousedown)="scrollX(templateCarrito, -100)" 119 (mousedown)="scrollX(templateCarrito, -100)"
113 (mouseup)="mouseup()" 120 (mouseup)="mouseup()"
114 (mouseleave)="mouseup()"> 121 (mouseleave)="mouseup()">
115 </div> 122 </div>
116 <!-- CARRITO --> 123 <!-- CARRITO -->
117 <div class="col-6 col-sm-8 col-lg-10 h-100"> 124 <div class="col-6 col-sm-8 col-lg-10 h-100">
118 <div 125 <div
119 #templateCarrito 126 #templateCarrito
120 class="row flex-row flex-nowrap h-100 mx-0 my-2 scroll-x" 127 class="row flex-row flex-nowrap h-100 mx-0 my-2 scroll-x"
121 (scroll)="scrollEvent($event)"> 128 (scroll)="scrollEvent($event)">
122 <!-- ARTICULOS --> 129 <!-- ARTICULOS -->
123 <div 130 <div
124 class="col-10 col-sm-4 col-lg-2 px-2 px-xl-4 align-self-center border-right border-primary" 131 class="col-10 col-sm-4 col-lg-2 px-2 px-xl-4 align-self-center border-right border-primary"
125 *ngFor="let articulo of articuloService.carrito; let i = index;" 132 *ngFor="let articulo of articuloService.carrito; let i = index;"
126 @EnterLeaveY> 133 @EnterLeaveY>
127 <img 134 <img
128 class="btn-effect icon-20 mr-2 position-absolute right-0" 135 class="btn-effect icon-20 mr-2 position-absolute right-0"
129 src="assets/img/icono-cancelar-color.svg" 136 src="assets/img/icono-cancelar-color.svg"
130 (click)="deleteArticulo(i)"> 137 (click)="deleteArticulo(i)">
131 <img 138 <img
132 draggable="false" 139 draggable="false"
133 ondragstart="return false;" 140 ondragstart="return false;"
134 (contextmenu)="false" 141 (contextmenu)="false"
135 class="d-block img-fluid p-2 mx-auto rounded w-100 h-auto" 142 class="d-block img-fluid p-2 mx-auto rounded w-100 h-auto"
136 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}" 143 src="{{urlImagenes}}{{articulo.imagenes[0].imagen}}"
137 onerror="this.src='assets/img/imagen-no-encontrada.jpg'"> 144 onerror="this.src='assets/img/imagen-no-encontrada.jpg'">
138 <p class="d-block mt-auto text-center text-primary text-truncate"> 145 <p class="d-block mt-auto text-center text-primary text-truncate">
139 <small>{{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}}</small> 146 <small>{{articulo.MKT_DESC ? articulo.MKT_DESC.toUpperCase() : articulo.DetArt.toUpperCase()}}</small>
140 </p> 147 </p>
141 <app-articulo-cantidad [articulo]="articulo"></app-articulo-cantidad> 148 <app-articulo-cantidad [articulo]="articulo"></app-articulo-cantidad>
142 </div> 149 </div>
143 <!-- MENSAJE DE ADVERTENCIA --> 150 <!-- MENSAJE DE ADVERTENCIA -->
144 <div *ngIf="!articuloService.carrito.length" class="col h-100"> 151 <div *ngIf="!articuloService.carrito.length" class="col h-100">
145 <p class="text-center py-5">No hay artículos en el carrito</p> 152 <p class="text-center py-5">No hay artículos en el carrito</p>
146 </div> 153 </div>
147 </div> 154 </div>
148 </div> 155 </div>
149 <!-- BOTON SCROLL DERECHA --> 156 <!-- BOTON SCROLL DERECHA -->
150 <div *ngIf="articuloService.carrito.length" 157 <div *ngIf="articuloService.carrito.length"
151 class="col-auto btn-effect h-20 align-self-center d-contents"> 158 class="col-auto btn-effect h-20 align-self-center d-contents">
152 <img 159 <img
153 draggable="false" 160 draggable="false"
154 ondragstart="return false;" 161 ondragstart="return false;"
155 (contextmenu)="false" 162 (contextmenu)="false"
156 class="icon-30" 163 class="icon-30"
157 src="assets/img/ir-fondo-color.svg" 164 src="assets/img/ir-fondo-color.svg"
158 (mousedown)="scrollX(templateCarrito, 100)" 165 (mousedown)="scrollX(templateCarrito, 100)"
159 (mouseup)="mouseup()" 166 (mouseup)="mouseup()"
160 (mouseleave)="mouseup()"> 167 (mouseleave)="mouseup()">
161 </div> 168 </div>
162 </div> 169 </div>
163 </div> 170 </div>
164 <!-- TOTAL--> 171 <!-- TOTAL-->
165 <div 172 <div
166 class="col-auto mt-2 ml-auto h-20"> 173 class="col-auto mt-2 ml-auto h-20">
167 <div class="row mx-0"> 174 <div class="row mx-0">
168 <div class="col-auto font-weight-bold align-self-center text-primary py-2 h3">TOTAL</div> 175 <div class="col-auto font-weight-bold align-self-center text-primary py-2 h3">TOTAL</div>
169 <div class="col-auto align-self-center bg-primary badge-pill"> 176 <div class="col-auto align-self-center bg-primary badge-pill">
170 <p class="text-center font-weight-bold text-white py-2 h3 px-2">{{articuloService.total | currency}}</p> 177 <p class="text-center font-weight-bold text-white py-2 h3 px-2">{{articuloService.total | currency}}</p>
171 </div> 178 </div>
172 </div> 179 </div>
173 </div> 180 </div>
174 181
175 <!-- VER CARRITO --> 182 <!-- VER CARRITO -->
176 <div 183 <div
177 class="col-auto px-0 h-20" 184 class="col-auto px-0 h-20"
178 *ngIf="articuloService.carrito.length" 185 *ngIf="articuloService.carrito.length"
179 [ngClass]="boxCarrito.classList.contains('media-pantalla') ? 'ml-auto' : 'mt-3'"> 186 [ngClass]="boxCarrito.classList.contains('media-pantalla') ? 'ml-auto' : 'mt-3'">
180 <div 187 <div
181 class="btn-effect col-auto px-0 align-self-center bg-white" 188 class="btn-effect col-auto px-0 align-self-center bg-white"
182 [routerLink]="['/carrito']"> 189 [routerLink]="['/carrito']">
183 <div class="row mx-0 bg-light"> 190 <div class="row mx-0 bg-light">
184 <div class="col-auto p-0 bg-primary"> 191 <div class="col-auto p-0 bg-primary">
185 <img 192 <img
186 draggable="false" 193 draggable="false"
187 ondragstart="return false;" 194 ondragstart="return false;"
188 (contextmenu)="false" 195 (contextmenu)="false"
189 class="p-2 icon-40" 196 class="p-2 icon-40"
190 src="assets/img/carrito.svg"> 197 src="assets/img/carrito.svg">
191 </div> 198 </div>
192 <div class="col-auto align-self-center text-primary d-none d-sm-block">IR AL CARRITO</div> 199 <div class="col-auto align-self-center text-primary d-none d-sm-block">IR AL CARRITO</div>
193 </div> 200 </div>
194 </div> 201 </div>
195 </div> 202 </div>
196 203
197 </div> 204 </div>
198 </div> 205 </div>
199 206
200 </div> 207 </div>
201 208
src/app/modules/seleccion-articulos/seleccion-articulos.component.ts
1 import { Component, OnInit, OnDestroy, HostListener, ViewChild, AfterViewInit } from '@angular/core'; 1 import { Component, OnInit, OnDestroy, HostListener, ViewChild, AfterViewInit } from '@angular/core';
2 import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal'; 2 import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
3 import { ArticuloService } from 'src/app/services/articulo/articulo.service'; 3 import { ArticuloService } from 'src/app/services/articulo/articulo.service';
4 import { IArticulo } from 'src/app/interfaces/IArticulo'; 4 import { IArticulo } from 'src/app/interfaces/IArticulo';
5 import { APP_SETTINGS } from 'src/etc/AppSettings'; 5 import { APP_SETTINGS } from 'src/etc/AppSettings';
6 import { ICategoria } from 'src/app/interfaces/ICategoria'; 6 import { ICategoria } from 'src/app/interfaces/ICategoria';
7 import { ISinonimo } from 'src/app/interfaces/ISinonimo'; 7 import { ISinonimo } from 'src/app/interfaces/ISinonimo';
8 import { PromocionComponent } from 'src/app/shared/promocion/promocion.component'; 8 import { PromocionComponent } from 'src/app/shared/promocion/promocion.component';
9 import { InactiveScreenService } from 'src/app/services/inactive-screen/inactive-screen.service'; 9 import { InactiveScreenService } from 'src/app/services/inactive-screen/inactive-screen.service';
10 import { SinonimoService } from 'src/app/services/sinonimo/sinonimo.service'; 10 import { SinonimoService } from 'src/app/services/sinonimo/sinonimo.service';
11 import { SinonimoComponent } from 'src/app/shared/sinonimo/sinonimo.component'; 11 import { SinonimoComponent } from 'src/app/shared/sinonimo/sinonimo.component';
12 import { FiltroCategoriasComponent } from './filtro-categorias/filtro-categorias.component'; 12 import { FiltroCategoriasComponent } from './filtro-categorias/filtro-categorias.component';
13 import * as _ from 'lodash'; 13 import * as _ from 'lodash';
14 import { ANIMATIONS } from 'src/app/utils/animations'; 14 import { ANIMATIONS } from 'src/app/utils/animations';
15 import { NoStockComponent } from './no-stock/no-stock.component';
15 16
16 @Component({ 17 @Component({
17 selector: 'app-seleccion-articulos', 18 selector: 'app-seleccion-articulos',
18 templateUrl: './seleccion-articulos.component.html', 19 templateUrl: './seleccion-articulos.component.html',
19 styleUrls: ['./seleccion-articulos.component.scss'], 20 styleUrls: ['./seleccion-articulos.component.scss'],
20 animations: [ANIMATIONS.EnterLeaveY] 21 animations: [ANIMATIONS.EnterLeaveY]
21 }) 22 })
22 export class SeleccionArticulosComponent implements OnInit, AfterViewInit, OnDestroy { 23 export class SeleccionArticulosComponent implements OnInit, AfterViewInit, OnDestroy {
23 loading = true; 24 loading = true;
24 timeoutHandler: any; 25 timeoutHandler: any;
25 urlImagenes = `${APP_SETTINGS.apiImagenes}/imagenes/`; 26 urlImagenes = `${APP_SETTINGS.apiImagenes}/imagenes/`;
26 articulos: IArticulo[] = []; 27 articulos: IArticulo[] = [];
27 auxArticulos: IArticulo[] = []; 28 auxArticulos: IArticulo[] = [];
28 showQuantity = 100; 29 showQuantity = 100;
29 searchTerm = ''; 30 searchTerm = '';
30 ordenandoByVendidos = true; 31 ordenandoByVendidos = true;
31 modalRef: BsModalRef; 32 modalRef: BsModalRef;
32 total = 0; 33 total = 0;
33 @ViewChild(FiltroCategoriasComponent, { static: false }) filtroCategorias: FiltroCategoriasComponent; 34 @ViewChild(FiltroCategoriasComponent, { static: false }) filtroCategorias: FiltroCategoriasComponent;
34 35
35 constructor( 36 constructor(
36 public articuloService: ArticuloService, 37 public articuloService: ArticuloService,
37 private sinonimoService: SinonimoService, 38 private sinonimoService: SinonimoService,
38 private modalService: BsModalService, 39 private modalService: BsModalService,
39 private inactiveScreen: InactiveScreenService, 40 private inactiveScreen: InactiveScreenService,
40 ) { } 41 ) { }
41 42
42 ngOnInit() { } 43 ngOnInit() { }
43 44
44 ngAfterViewInit(): void { 45 ngAfterViewInit(): void {
45 this.filtroCategorias.getCategorias(); 46 this.filtroCategorias.getCategorias();
46 this.mediaPantalla(); 47 this.mediaPantalla();
47 } 48 }
48 49
49 ngOnDestroy() { 50 ngOnDestroy() {
50 for (let i = 1; i <= this.modalService.getModalsCount(); i++) { 51 for (let i = 1; i <= this.modalService.getModalsCount(); i++) {
51 this.modalService.hide(i); 52 this.modalService.hide(i);
52 } 53 }
53 } 54 }
54 55
55 getProductos() { 56 getProductos() {
56 this.articuloService.getAll() 57 this.articuloService.getAll()
57 .subscribe((result: IArticulo[]) => { 58 .subscribe((result: IArticulo[]) => {
58 this.articuloService.setArticulosSinImagen(result); 59 this.articuloService.setArticulosSinImagen(result);
59 if (this.filtroCategorias.queMostrar === 'ordenar') { 60 if (this.filtroCategorias.queMostrar === 'ordenar') {
60 this.filtroCategorias.categorias.forEach((categoria: ICategoria) => { 61 this.filtroCategorias.categorias.forEach((categoria: ICategoria) => {
61 const tempArticulos = result.filter((articulo: IArticulo) => { 62 const tempArticulos = result.filter((articulo: IArticulo) => {
62 return articulo.categoria_selfservice === categoria.id; 63 return articulo.categoria_selfservice === categoria.id;
63 }); 64 });
64 result = tempArticulos; 65 result = tempArticulos;
65 }); 66 });
66 } 67 }
67 localStorage.setItem('articulos', JSON.stringify(result)); 68 localStorage.setItem('articulos', JSON.stringify(result));
68 this.setProductos(); 69 this.setProductos();
69 }, (error) => { 70 }, (error) => {
70 console.error(error); 71 console.error(error);
71 }); 72 });
72 } 73 }
73 74
74 setProductos() { 75 setProductos() {
75 this.articulos = JSON.parse(localStorage.getItem('articulos')); 76 this.articulos = JSON.parse(localStorage.getItem('articulos'));
76 this.filterItems(); 77 this.filterItems();
77 this.loading = false; 78 this.loading = false;
78 } 79 }
79 80
80 filterItems() { 81 filterItems() {
81 if (this.filtroCategorias.categoriaActive === 0) { 82 if (this.filtroCategorias.categoriaActive === 0) {
82 this.auxArticulos = this.articulos; 83 this.auxArticulos = this.articulos;
83 return; 84 return;
84 } 85 }
85 this.auxArticulos = this.articulos.filter(x => { 86 this.auxArticulos = this.articulos.filter(x => {
86 return x.categoria_selfservice === this.filtroCategorias.categoriaActive; 87 return x.categoria_selfservice === this.filtroCategorias.categoriaActive;
87 }); 88 });
88 this.ordenar(); 89 this.ordenar();
89 } 90 }
90 91
91 ordenar() { 92 ordenar() {
92 if (this.ordenandoByVendidos) { 93 if (this.ordenandoByVendidos) {
93 this.auxArticulos.sort((a, b) => { 94 this.auxArticulos.sort((a, b) => {
94 return b.cantidadVendida - a.cantidadVendida; 95 return b.cantidadVendida - a.cantidadVendida;
95 }); 96 });
96 } 97 }
97 } 98 }
98 99
99 selectArticulo(articulo: IArticulo) { 100 selectArticulo(articulo: IArticulo) {
101 if (articulo.ExiVta < 1) {
102 if (this.modalRef) return;
103 this.modalRef = this.modalService.show(NoStockComponent, {
104 class: 'modal-dialog-centered',
105 backdrop: false,
106 ignoreBackdropClick: true,
107 });
108 this.modalRef.content.onClose
109 .subscribe(() => this.modalRef = null);
110 }
100 this.getByID(articulo.id); 111 this.getByID(articulo.id);
101 } 112 }
102 113
103 getByID(id: number) { 114 getByID(id: number) {
104 this.articuloService.getById(id) 115 this.articuloService.getById(id)
105 .subscribe((res: IArticulo) => { 116 .subscribe((res: IArticulo) => {
106 if (res.FPP) { 117 if (res.FPP) {
107 this.openModalPromos(res); 118 this.openModalPromos(res);
108 } else { 119 } else {
109 this.getSinonimos(res); 120 this.getSinonimos(res);
110 } 121 }
111 }, err => console.error(err)); 122 }, err => console.error(err));
112 } 123 }
113 124
114 getSinonimos(articulo: IArticulo) { 125 getSinonimos(articulo: IArticulo) {
115 this.sinonimoService.getSinonimos(articulo.CodSec, articulo.CodArt) 126 this.sinonimoService.getSinonimos(articulo.CodSec, articulo.CodArt)
116 .subscribe((res: any[]) => { 127 .subscribe((res: any[]) => {
117 if (res.length) { 128 if (res.length) {
118 const sinonimos = []; 129 const sinonimos = [];
119 const gruposArticulos = _.groupBy(res[0].productos, 'ID_SIN'); 130 const gruposArticulos = _.groupBy(res[0].productos, 'ID_SIN');
120 Object.keys(gruposArticulos).forEach((key, i) => { 131 Object.keys(gruposArticulos).forEach((key, i) => {
121 sinonimos.push({ productos: gruposArticulos[key], }); 132 sinonimos.push({ productos: gruposArticulos[key], });
122 for (const a of articulo.productos) { 133 for (const a of articulo.productos) {
123 if (key === a.idSinonimo.toString()) { 134 if (key === a.idSinonimo.toString()) {
124 sinonimos[i].cantidad = sinonimos[i].cantidadRestante = a.cantidad; 135 sinonimos[i].cantidad = sinonimos[i].cantidadRestante = a.cantidad;
125 continue; 136 continue;
126 } 137 }
127 } 138 }
128 }); 139 });
129 res = sinonimos; 140 res = sinonimos;
130 this.openModalSinonimos(res, articulo); 141 this.openModalSinonimos(res, articulo);
131 } else { 142 } else {
132 this.articuloService.setArticulo(articulo); 143 this.articuloService.setArticulo(articulo);
133 } 144 }
134 }); 145 });
135 } 146 }
136 147
137 openModalPromos(articulo: IArticulo) { 148 openModalPromos(articulo: IArticulo) {
138 if (this.modalRef) return; 149 if (this.modalRef) return;
139 this.articuloService.setArticulosSinImagen([articulo]); 150 this.articuloService.setArticulosSinImagen([articulo]);
140 this.modalRef = this.modalService.show(PromocionComponent, { 151 this.modalRef = this.modalService.show(PromocionComponent, {
141 initialState: { articulosPromo: [articulo] }, 152 initialState: { articulosPromo: [articulo] },
142 class: 'modal-dialog-centered', 153 class: 'modal-dialog-centered',
143 ignoreBackdropClick: true, 154 ignoreBackdropClick: true,
144 }); 155 });
145 this.modalRef.content.onClose 156 this.modalRef.content.onClose
146 .subscribe(() => this.modalRef = null); 157 .subscribe(() => this.modalRef = null);
147 this.mediaPantalla(); 158 this.mediaPantalla();
148 } 159 }
149 160
150 openModalSinonimos(sinonimosData: ISinonimo[], articulo: IArticulo) { 161 openModalSinonimos(sinonimosData: ISinonimo[], articulo: IArticulo) {
151 if (this.modalRef) return; 162 if (this.modalRef) return;
152 this.modalRef = this.modalService.show(SinonimoComponent, { 163 this.modalRef = this.modalService.show(SinonimoComponent, {
153 initialState: { 164 initialState: {
154 sinonimos: sinonimosData, 165 sinonimos: sinonimosData,
155 articulo 166 articulo
156 }, 167 },
157 class: 'modal-dialog-centered', 168 class: 'modal-dialog-centered',
158 ignoreBackdropClick: true, 169 ignoreBackdropClick: true,
159 }); 170 });
160 171
161 this.modalRef.content.onClose 172 this.modalRef.content.onClose
162 .subscribe((res: any) => { 173 .subscribe((res: any) => {
163 this.modalRef = null; 174 this.modalRef = null;
164 if (!res) return; 175 if (!res) return;
165 articulo.productos = res.articulos; 176 articulo.productos = res.articulos;
166 this.articuloService.setArticulo(articulo); 177 this.articuloService.setArticulo(articulo);
167 }); 178 });
168 this.mediaPantalla(); 179 this.mediaPantalla();
169 } 180 }
170 181
171 deleteArticulo(index: number) { 182 deleteArticulo(index: number) {
172 this.articuloService.deleteArticulo(index); 183 this.articuloService.deleteArticulo(index);
173 } 184 }
174 185
175 increaseShow() { 186 increaseShow() {
176 this.showQuantity += 100; 187 this.showQuantity += 100;
177 } 188 }
178 189
179 @HostListener('scroll', ['$event']) 190 @HostListener('scroll', ['$event'])
180 scrollEvent(event: Event) { 191 scrollEvent(event: Event) {
181 clearTimeout(this.inactiveScreen.timerReposo); 192 clearTimeout(this.inactiveScreen.timerReposo);
182 this.inactiveScreen.startTimeOutInactividad(); 193 this.inactiveScreen.startTimeOutInactividad();
183 } 194 }
184 195
185 mouseup() { 196 mouseup() {
186 if (!this.timeoutHandler) return; 197 if (!this.timeoutHandler) return;
187 clearInterval(this.timeoutHandler); 198 clearInterval(this.timeoutHandler);
188 } 199 }
189 200
190 scrollY(el: HTMLElement, value) { 201 scrollY(el: HTMLElement, value) {
191 el.scroll({ behavior: 'smooth', top: value + el.scrollTop }); 202 el.scroll({ behavior: 'smooth', top: value + el.scrollTop });
192 this.timeoutHandler = setInterval(() => { 203 this.timeoutHandler = setInterval(() => {
193 el.scroll({ behavior: 'smooth', top: value + el.scrollTop }); 204 el.scroll({ behavior: 'smooth', top: value + el.scrollTop });
194 }, 500); 205 }, 500);
195 } 206 }
196 207
197 scrollX(el: HTMLElement, value) { 208 scrollX(el: HTMLElement, value) {
198 el.scroll({ behavior: 'smooth', left: value + el.scrollLeft }); 209 el.scroll({ behavior: 'smooth', left: value + el.scrollLeft });
199 this.timeoutHandler = setInterval(() => { 210 this.timeoutHandler = setInterval(() => {
200 el.scroll({ behavior: 'smooth', left: value + el.scrollLeft }); 211 el.scroll({ behavior: 'smooth', left: value + el.scrollLeft });
201 }, 500); 212 }, 500);
202 } 213 }
203 214
204 mediaPantalla() { 215 mediaPantalla() {
205 if ($('body').hasClass('media-pantalla')) { 216 if ($('body').hasClass('media-pantalla')) {
206 $(`.cat-content,#cat-content,#content,.cat-btn,#boxCarrito, 217 $(`.cat-content,#cat-content,#content,.cat-btn,#boxCarrito,
207 .cat-box,.img-categoria, .modal-content`) 218 .cat-box,.img-categoria, .modal-content`)
208 .addClass('media-pantalla') 219 .addClass('media-pantalla')
209 .addBack('media-pantalla'); 220 .addBack('media-pantalla');
210 } 221 }
211 } 222 }
212 } 223 }
213 224
src/app/modules/seleccion-articulos/seleccion-articulos.module.ts
1 import { NgModule } from '@angular/core'; 1 import { NgModule } from '@angular/core';
2 import { CommonModule } from '@angular/common'; 2 import { CommonModule } from '@angular/common';
3 import { SeleccionArticulosRoutingModule } from './seleccion-articulos-routing.module'; 3 import { SeleccionArticulosRoutingModule } from './seleccion-articulos-routing.module';
4 import { SeleccionArticulosComponent } from './seleccion-articulos.component'; 4 import { SeleccionArticulosComponent } from './seleccion-articulos.component';
5 import { HeaderPublicidadComponent } from 'src/app/shared/header-publicidad/header-publicidad.component'; 5 import { HeaderPublicidadComponent } from 'src/app/shared/header-publicidad/header-publicidad.component';
6 import { ModalModule } from 'ngx-bootstrap/modal'; 6 import { ModalModule } from 'ngx-bootstrap/modal';
7 import { CarouselModule } from 'ngx-bootstrap/carousel'; 7 import { CarouselModule } from 'ngx-bootstrap/carousel';
8 import { PromocionComponent } from 'src/app/shared/promocion/promocion.component'; 8 import { PromocionComponent } from 'src/app/shared/promocion/promocion.component';
9 import { SharedModule } from '../shared/shared.module'; 9 import { SharedModule } from '../shared/shared.module';
10 import { SinonimoComponent } from 'src/app/shared/sinonimo/sinonimo.component'; 10 import { SinonimoComponent } from 'src/app/shared/sinonimo/sinonimo.component';
11 import { FormsModule } from '@angular/forms'; 11 import { FormsModule } from '@angular/forms';
12 import { ConfirmacionComponent } from 'src/app/shared/confirmacion/confirmacion.component'; 12 import { ConfirmacionComponent } from 'src/app/shared/confirmacion/confirmacion.component';
13 import { ArticuloCantidadComponent } from 'src/app/shared/articulo-cantidad/articulo-cantidad.component'; 13 import { ArticuloCantidadComponent } from 'src/app/shared/articulo-cantidad/articulo-cantidad.component';
14 import { FiltroCategoriasComponent } from './filtro-categorias/filtro-categorias.component'; 14 import { FiltroCategoriasComponent } from './filtro-categorias/filtro-categorias.component';
15 import { NoStockComponent } from './no-stock/no-stock.component';
15 16
16 @NgModule({ 17 @NgModule({
17 declarations: [ 18 declarations: [
18 SeleccionArticulosComponent, 19 SeleccionArticulosComponent,
19 HeaderPublicidadComponent, 20 HeaderPublicidadComponent,
20 PromocionComponent, 21 PromocionComponent,
21 SinonimoComponent, 22 SinonimoComponent,
22 ConfirmacionComponent, 23 ConfirmacionComponent,
23 ArticuloCantidadComponent, 24 ArticuloCantidadComponent,
24 FiltroCategoriasComponent, 25 FiltroCategoriasComponent,
26 NoStockComponent,
25 ], 27 ],
26 imports: [ 28 imports: [
27 CommonModule, 29 CommonModule,
28 SeleccionArticulosRoutingModule, 30 SeleccionArticulosRoutingModule,
29 FormsModule, 31 FormsModule,
30 ModalModule.forRoot(), 32 ModalModule.forRoot(),
31 CarouselModule.forRoot(), 33 CarouselModule.forRoot(),
32 SharedModule 34 SharedModule
33 ], 35 ],
34 exports: [HeaderPublicidadComponent, ArticuloCantidadComponent], 36 exports: [HeaderPublicidadComponent, ArticuloCantidadComponent],
35 entryComponents: [PromocionComponent, ConfirmacionComponent, SinonimoComponent] 37 entryComponents: [PromocionComponent, ConfirmacionComponent, SinonimoComponent, NoStockComponent]
36 }) 38 })
37 export class SeleccionArticulosModule { } 39 export class SeleccionArticulosModule { }
38 40
src/assets/img/sin-stock-2.svg
File was created 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 <!-- Creator: CorelDRAW X7 -->
4 <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="10.5274mm" height="10.5274mm" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
5 viewBox="0 0 733 733"
6 xmlns:xlink="http://www.w3.org/1999/xlink">
7 <defs>
8 <style type="text/css">
9 <![CDATA[
10 .fil0 {fill:#F4B223}
11 ]]>
12 </style>
13 </defs>
14 <g id="Capa_x0020_1">
15 <metadata id="CorelCorpID_0Corel-Layer"/>
16 <path class="fil0" d="M360 592l7 0 191 -108 0 -237c-11,-6 -182,-99 -191,-107l-6 0 -191 107 -1 237c35,19 64,36 96,53l95 55zm179 -367l76 -76c50,58 81,134 81,217 0,183 -147,330 -330,330 -83,0 -159,-31 -217,-81l83 -83c-11,-6 -21,-12 -32,-18l-76 76c-54,-59 -87,-137 -87,-224 0,-182 147,-329 329,-329 87,0 165,33 224,87l-84 84c12,6 23,12 33,17zm-173 508c-202,0 -366,-164 -366,-367 0,-202 164,-366 366,-366 203,0 367,164 367,366 0,203 -164,367 -367,367zm8 -372l0 203c13,-5 29,-16 41,-22 20,-11 111,-64 123,-68l0 -203c-9,2 -31,17 -41,22 -19,10 -112,64 -123,68zm-184 113c12,4 28,15 40,22l124 68 0 -204c-14,-4 -102,-55 -122,-67 -12,-6 -30,-18 -43,-22l1 203zm11 -221c10,8 43,24 57,32 21,13 20,4 60,-17 16,-9 109,-60 116,-67 -19,-11 -37,-21 -57,-32 -19,-10 -18,-5 -59,19l-117 65zm93 52l58 33c17,9 12,7 29,-3l145 -82 -57 -32c-16,-10 -13,-8 -29,1l-87 49c-7,3 -53,28 -59,34zm159 42c-8,2 -54,30 -57,35 -3,8 -1,36 -1,45 0,14 -4,36 15,30 4,-2 23,-15 29,-18 7,-4 24,-12 26,-19 2,-5 1,-37 1,-45 0,-11 2,-33 -13,-28zm-38 45l0 37c38,-18 31,-16 31,-54 -11,4 -20,11 -31,17z"/>
17 </g>
18 </svg>
19
src/assets/img/sin-stock.svg
File was created 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 <!-- Creator: CorelDRAW X7 -->
4 <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="25.1549mm" height="25.1762mm" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
5 viewBox="0 0 238 238"
6 xmlns:xlink="http://www.w3.org/1999/xlink">
7 <defs>
8 <font id="FontID0" horiz-adv-x="790" font-variant="normal" style="fill-rule:nonzero" font-weight="400">
9 <font-face
10 font-family="Gotham Bold">
11 <font-face-src>
12 <font-face-name name="Gotham-Bold"/>
13 </font-face-src>
14 </font-face>
15 <missing-glyph><path d="M0 0z"/></missing-glyph>
16 <glyph unicode="c" horiz-adv-x="571" d="M321.002 -11.9972c106.993,0 167.001,40.9868 219.004,98.0063l-88.9975 90.0009c-37.0168,-35.01 -72.0051,-57.0195 -123.004,-57.0195 -82.9989,0 -136.005,66.0065 -136.005,148.002l0 2.00681c0,79.0071 54.0092,145.995 130.006,145.995 53.9874,0 87.9941,-22.991 122.001,-59.0044l92.9893 100.013c-49.9956,55.9942 -112.992,90.0009 -213.987,90.0009 -164.013,0 -281.018,-126.014 -281.018,-279.011l0 -1.98499c0,-152.997 118.009,-277.005 279.011,-277.005z"/>
17 <glyph unicode="t" horiz-adv-x="414" d="M248.997 -9.00881c50.999,0 87.9941,12.019 119.994,31.0182l0 122.001c-21.9876,-12.019 -46.9854,-18.9992 -74.9935,-18.9992 -34.0066,0 -48.9922,16.9924 -48.9922,51.9806l0 229.016 125.992 0 0 129.984 -125.992 0 0 137.008 -152.016 0 0 -137.008 -63.9997 0 0 -129.984 63.9997 0 0 -254.014c0,-123.986 63.0181,-161.003 156.007,-161.003z"/>
18 <glyph unicode="n" horiz-adv-x="623" d="M67.9914 0l152.016 0 0 298.992c0,72.0051 36.995,109 94.9961,109 58.001,0 92.0077,-36.995 92.0077,-109l0 -298.992 151.994 0 0 347.003c0,123.004 -67.0099,199.001 -182.009,199.001 -77.0003,0 -122.001,-41.0086 -156.989,-86.0091l0 75.9969 -152.016 0 0 -535.992z"/>
19 <glyph unicode="k" horiz-adv-x="592" d="M67.9914 0l152.016 0 0 163.009 52.984 55.9942 140.018 -219.004 173.981 0 -210.998 324.993 204.018 210.998 -182.009 0 -177.995 -194.987 0 388.993 -152.016 0 0 -729.997z"/>
20 <glyph unicode=" " horiz-adv-x="299" d=""/>
21 <glyph unicode="S" horiz-adv-x="639" d="M332.999 -9.9904c150.99,0 257.002,77.9819 257.002,216.997l0 1.98499c0,122.001 -80.0105,173 -221.992,210.017 -121.019,30.9964 -151.012,45.982 -151.012,91.9859l0 2.00681c0,34.0066 30.9964,60.9894 90.0009,60.9894 59.0044,0 119.994,-25.9794 182.009,-68.9949l79.9887 116.002c-71.0017,56.9976 -157.992,88.9975 -259.99,88.9975 -143.007,0 -245.005,-84.0023 -245.005,-210.998l0 -2.00681c0,-138.993 91.0043,-177.995 232.004,-213.987 117.005,-29.993 141,-49.9956 141,-88.9975l0 -2.00681c0,-41.0086 -37.9984,-66.0065 -100.995,-66.0065 -80.0105,0 -146.017,33.0032 -209.013,85.0057l-91.0043 -109c84.0023,-74.9935 191.017,-111.988 297.007,-111.988z"/>
22 <glyph unicode="o" horiz-adv-x="663" d="M330.992 -11.9972c167.001,0 291.009,124.989 291.009,278.99l0 2.00681c0,154.001 -123.004,277.005 -289.002,277.005 -167.001,0 -291.009,-125.011 -291.009,-279.011l0 -1.98499c0,-154.001 123.004,-277.005 289.002,-277.005zm2.00681 130.988c-84.0023,0 -141,69.0167 -141,148.002l0 2.00681c0,79.0071 52.0024,145.995 138.993,145.995 84.0023,0 141,-68.9949 141,-148.002l0 -1.98499c0,-79.0071 -52.0024,-146.017 -138.993,-146.017z"/>
23 <glyph unicode="i" horiz-adv-x="302" d="M71.0017 594.996l159.999 0 0 135.001 -159.999 0 0 -135.001zm3.9918 -594.996l152.016 0 0 535.992 -152.016 0 0 -535.992z"/>
24 </font>
25 <style type="text/css">
26 <![CDATA[
27 @font-face { font-family:"Gotham Bold";font-variant:normal;font-weight:normal;src:url("#FontID0") format(svg)}
28 .fil0 {fill:#AF006A}
29 .fil1 {fill:#F4B223}
30 .fil2 {fill:white}
31 .fnt0 {font-weight:normal;font-size:43.3536px;font-family:'Gotham Bold'}
32 ]]>
33 </style>
34 </defs>
35 <g id="Capa_x0020_1">
36 <metadata id="CorelCorpID_0Corel-Layer"/>
37 <path class="fil0" d="M20 0l190 0c15,0 28,13 28,28l0 190c0,16 -30,27 -41,16l-193 -193c-10,-11 0,-41 16,-41z"/>
38 <path class="fil1" d="M177 93l1 0 26 -14 0 -33c-2,0 -25,-13 -26,-14l-1 0 -26 14 0 33c5,2 9,5 13,7l13 7zm24 -49l11 -11c7,8 11,18 11,30 0,25 -20,45 -45,45 -11,0 -22,-5 -30,-11l12 -12c-2,-1 -3,-1 -5,-2l-10 10c-7,-8 -12,-19 -12,-30 0,-25 20,-45 45,-45 12,0 22,4 30,12l-11 11c1,1 3,2 4,3zm-23 69c-28,0 -50,-23 -50,-50 0,-28 22,-50 50,-50 27,0 50,22 50,50 0,27 -23,50 -50,50zm1 -51l0 28c2,-1 4,-2 6,-3 2,-2 15,-9 16,-10l0 -27c-1,0 -4,2 -5,3 -3,1 -16,9 -17,9zm-25 15c2,1 4,2 5,3l17 10 0 -28c-2,-1 -14,-8 -16,-9 -2,-1 -4,-3 -6,-3l0 27zm1 -30c2,1 6,4 8,5 3,1 3,0 8,-3 2,-1 15,-8 16,-9 -3,-1 -5,-3 -8,-4 -2,-1 -2,-1 -8,2l-16 9zm13 7l8 5c2,1 2,1 4,0l20 -12 -8 -4c-2,-1 -2,-1 -4,0l-12 7c-1,0 -7,4 -8,4zm22 6c-1,0 -8,4 -8,5 -1,1 0,5 0,6 0,2 -1,5 2,4 0,0 3,-2 4,-2 1,-1 3,-2 3,-3 1,-1 0,-5 0,-6 0,-2 1,-5 -1,-4zm-5 6l0 5c5,-2 4,-2 4,-7 -2,0 -3,1 -4,2z"/>
39 <g transform="matrix(0.707107 0.707107 -0.707107 0.707107 1190.88 669.458)">
40 <text x="-1258" y="386" class="fil2 fnt0">Sin Stock</text>
41 </g>
42 </g>
43 </svg>
44