Commit aa492da5235b84d3d0a679289bdf651374b7b7f8

Authored by Marcelo Puebla
1 parent 09bbac881e

Agregados primeros servicios

... ... @@ -10,6 +10,7 @@
10 10 # dependencies
11 11 /node_modules
12 12 /dist
  13 +/src/etc/appSettings.ts
13 14  
14 15 # profiling files
15 16 chrome-profiler-events*.json
src/app/interfaces/IArticulo.ts
... ... @@ -0,0 +1,35 @@
  1 +export interface IArticulo {
  2 + cantidad?: number;
  3 + cantidadAdicionada?: number;
  4 + cantidadVendida?: number;
  5 + categoria_selfservice?: number;
  6 + CodArt: number;
  7 + codigoBarra?: ICodigoBarra[];
  8 + CodSec: number;
  9 + DetArt: string;
  10 + DET_LAR: string;
  11 + ELBPRO: string;
  12 + esAdicionable?: boolean;
  13 + esSustraible?: boolean;
  14 + FPP?: boolean;
  15 + id: number;
  16 + idSinonimo?: number;
  17 + imagenes?: any[];
  18 + ImpInt: number;
  19 + ImpInt2: number;
  20 + ImpInt3: number;
  21 + importeValorExtra?: number;
  22 + PreVen: number;
  23 + PRO: boolean;
  24 + productos?: IArticulo[];
  25 + seleccionado?: boolean;
  26 + tieneSinonimo?: boolean;
  27 + tipo_articulo?: number;
  28 + comentario?: string;
  29 +}
  30 +
  31 +export interface ICodigoBarra {
  32 + CodBar: string;
  33 + CodArt: number;
  34 + CodSec: string;
  35 +}
src/app/interfaces/ICliente.ts
... ... @@ -0,0 +1,161 @@
  1 +export interface ICliente {
  2 + COD: number;
  3 + NOM: string;
  4 + DOM: string;
  5 + CPO: string;
  6 + LOC: string;
  7 + PCI: string;
  8 + CUIT: string;
  9 + TEL: string;
  10 + FPA: number;
  11 + TIP: string;
  12 + ZON: string;
  13 + ACT: string;
  14 + PDA: boolean;
  15 + MCC: number;
  16 + MCH: number;
  17 + CTA: number;
  18 + IDE: string;
  19 + TLI: string;
  20 + MOD: string;
  21 + SUR: boolean;
  22 + IVA: number;
  23 + SIT: string;
  24 + TCO: string;
  25 + LOX: number;
  26 + PCX: number;
  27 + OBS: string;
  28 + FUP: string;
  29 + DIC: number;
  30 + GRP: boolean;
  31 + BLO: boolean;
  32 + PLP: boolean;
  33 + FRE: boolean;
  34 + VEN: number;
  35 + FEA: string;
  36 + ICP: boolean;
  37 + PER: boolean;
  38 + RANT: boolean;
  39 + D_EN: string;
  40 + D_Y: string;
  41 + REC: number;
  42 + NHA: boolean;
  43 + EMG: number;
  44 + E_HD: string;
  45 + C_HD: string;
  46 + PDA_A: number;
  47 + CAN_KIL: number;
  48 + PER_MAY: boolean;
  49 + ES_MAY: boolean;
  50 + SEG_MAY: number;
  51 + INC_MAY: number;
  52 + ZON_MAY: number;
  53 + PER_IVA_MAY: number;
  54 + LPCC: boolean;
  55 + EREPL: boolean;
  56 + IMP_ABONO: number;
  57 + ID_LEY: number;
  58 + NRO_PER_MAY: string;
  59 + JUR_MAY_PER: string;
  60 + NARIB: string;
  61 + DIC_1: number;
  62 + REC_1: number;
  63 + TASA_DIC: number;
  64 + TASA_DIC_1: number;
  65 + IMP_CANJE: boolean;
  66 + USOINT: boolean;
  67 + PERC: number;
  68 + CTRL_LIT: boolean;
  69 + CTRL_SEC: boolean;
  70 + CLI_CON: number;
  71 + ITC_SUR: boolean;
  72 + PIDVEN: boolean;
  73 + MAIL: string;
  74 + HAB_NOTIF: boolean;
  75 + TIPO_NOTIFICACION: boolean;
  76 + VEH_CHF: boolean;
  77 + ICIVAL: boolean;
  78 + LEY_ABO1: string;
  79 + LEY_ABO2: string;
  80 + LEY_ABO3: string;
  81 + LEY_ABO4: string;
  82 + SALDO_ABONO: number;
  83 + FACT_ABONO: number;
  84 + FACT_AUTO: boolean;
  85 + MES_VDO: boolean;
  86 + FEC_CTRL: string;
  87 + SEG_FID: number;
  88 + MARCA_SALDO: boolean;
  89 + CTRL_SEC_FPA: boolean;
  90 + TIPO_RET: number;
  91 + COD_EXT: string;
  92 + RIESGO_FISCAL: boolean;
  93 + POR_RED: number;
  94 + DESTINO_VENTA: number;
  95 + FT_ANT: boolean;
  96 + FID_PART: boolean;
  97 + PER_SL: number;
  98 + EN_COBRO: number;
  99 + BLO_CTA_PROPIA: boolean;
  100 + TIENE_CERTIFICADO_IIBB: boolean;
  101 + NOTIF_FT_RE: boolean;
  102 + IMP_DET_VAL: boolean;
  103 + EX_PER_HASTA: string;
  104 + REVENDEDOR: boolean;
  105 + CONVMULTILATERAL: boolean;
  106 + PERCPORC?: any;
  107 + MAIL_COBRANZA: string;
  108 + MAIL_COMPRAS: string;
  109 + MAIL_OTROS: string;
  110 + IMP_OBS_CLI: boolean;
  111 + PASSWEB: string;
  112 + COD_REG_CANJ: number;
  113 + CERTIF_JURIS: boolean;
  114 + PER_IVARG17: number;
  115 + PER_ATER: number;
  116 + OpJurMis: boolean;
  117 + TIPO_RES_60: number;
  118 + FEB: string;
  119 + idPreciosConcidiones: number;
  120 + idprecioscondiciones: number;
  121 + ES_PROS?: any;
  122 + idCobrador: string;
  123 + ECI: boolean;
  124 + MUM: string;
  125 + TipoClienteAbonado: number;
  126 + EMAIL?: any;
  127 + FNAC?: any;
  128 + PAIS?: any;
  129 + control_saldos_vencidos: boolean;
  130 + Ignora_bloqueo_auto: boolean;
  131 + iva: IIva;
  132 + cuenta: ICuenta;
  133 + tipoComprobante: ITipoComprobante;
  134 + estadoCuenta: ICuenta;
  135 +}
  136 +
  137 +export interface ICuenta {
  138 + autorizado: number;
  139 + extracciones: number;
  140 + saldo: number;
  141 + facturasvencidas: number;
  142 +}
  143 +
  144 +export interface IIva {
  145 + ID: number;
  146 + NOMBRE: string;
  147 + ABR: string;
  148 + IFE: string;
  149 + IFH: string;
  150 + IFO: string;
  151 + TIP: string;
  152 + COI: number;
  153 +}
  154 +
  155 +export interface ITipoComprobante {
  156 + ID: string;
  157 + NOMBRE: string;
  158 + TIP: number;
  159 + CLA: number;
  160 + RES_SUM: number;
  161 +}
src/app/services/articulo/articulo.service.spec.ts
... ... @@ -0,0 +1,12 @@
  1 +import { TestBed } from '@angular/core/testing';
  2 +
  3 +import { ArticuloService } from './articulo.service';
  4 +
  5 +describe('ArticuloService', () => {
  6 + beforeEach(() => TestBed.configureTestingModule({}));
  7 +
  8 + it('should be created', () => {
  9 + const service: ArticuloService = TestBed.get(ArticuloService);
  10 + expect(service).toBeTruthy();
  11 + });
  12 +});
src/app/services/articulo/articulo.service.ts
... ... @@ -0,0 +1,116 @@
  1 +import { Injectable } from '@angular/core';
  2 +import { HttpClient } from '@angular/common/http';
  3 +import { APP_SETTINGS } from '../../../etc/AppSettings';
  4 +import { IArticulo } from '../../interfaces/IArticulo';
  5 +import { ClienteService } from '../cliente/cliente.service';
  6 +import { Observable } from 'rxjs';
  7 +
  8 +@Injectable({
  9 + providedIn: 'root'
  10 +})
  11 +export class ArticuloService {
  12 + articulos: IArticulo[] = [];
  13 + articuloAcargar: IArticulo;
  14 + promoAcargar: IArticulo;
  15 + mostrar: string;
  16 + esPromoPersonalizada: boolean = false;
  17 + urlArticulos = `${APP_SETTINGS.apiDeboSuite}/articulos`;
  18 + urlPromociones = `${APP_SETTINGS.apiDeboSuite}/promociones`;
  19 + urlSinonimos = `${APP_SETTINGS.apiDeboSuite}/sinonimos`;
  20 + urlCategorias = `${APP_SETTINGS.apiDeboSuite}/categorias`;
  21 + urlComprobante = `${APP_SETTINGS.apiDeboSuite}/comprobante`;
  22 +
  23 + constructor(private http: HttpClient, private clienteService: ClienteService) { }
  24 +
  25 + getById(id) {
  26 + return this.http.get(`${this.urlArticulos}/${id}`);
  27 + }
  28 +
  29 + getAll() {
  30 + return this.http.get(`${this.urlArticulos}`);
  31 + }
  32 +
  33 + getAllWithPaginator(page: number = 1) {
  34 + return this.http.get(`${this.urlArticulos}/${page}`);
  35 + }
  36 +
  37 + setArticulos(articulo: IArticulo) {
  38 + for (let i = 0; i < this.articulos.length; i++) {
  39 + if (this.articulos[i].id === articulo.id) {
  40 + if (articulo.PRO) break;
  41 + this.articulos[i].cantidad++;
  42 + return;
  43 + }
  44 + }
  45 + this.articulos.unshift(articulo);
  46 + }
  47 +
  48 + getPromocionByCodigos(sector, codigo) {
  49 + return this.http.get(`${this.urlPromociones}/by-codigos/${sector}/${codigo}`);
  50 + }
  51 +
  52 + getPromociones(sector, codigo) {
  53 + return this.http.get(`${this.urlPromociones}/in-articulo/${sector}/${codigo}`);
  54 + }
  55 +
  56 + getPromocionSinonimos(sector, codigo) {
  57 + return this.http.get(`${this.urlSinonimos}/promo/${sector}/${codigo}`);
  58 + }
  59 +
  60 + getCategorias() {
  61 + return this.http.get(`${this.urlCategorias}`);
  62 + }
  63 +
  64 + getComponentes(sector, codigo) {
  65 + return this.http.get(`${this.urlPromociones}/articulos/${sector}/${codigo}`);
  66 + }
  67 +
  68 + pay(dataPago: any) {
  69 + return new Observable((observer) => {
  70 + this.clienteService.getById(-1)
  71 + .subscribe(cliente => {
  72 + let puntoVenta = parseInt(localStorage.getItem('impresoraPVE'));
  73 + this.markArticuloInPromoAsRemoved();
  74 + this.http.post(`${this.urlComprobante}/guardar/${dataPago.medioPago}`, {
  75 + productos: this.articulos,
  76 + cliente: cliente,
  77 + origen: 'autoservicio',
  78 + codigoVendedor: 5,
  79 + puntoVenta: dataPago.medioPago === 9 ? -1 * puntoVenta : puntoVenta,
  80 + pedidoAnombreDe: dataPago.pedidoAnombreDe,
  81 + numeroPlanilla: '11111',
  82 + })
  83 + .subscribe((data) => {
  84 + observer.next(data);
  85 + observer.complete();
  86 + });
  87 + });
  88 + });
  89 + }
  90 +
  91 + cleanShoppingCar() {
  92 + this.articuloAcargar = undefined;
  93 + this.promoAcargar = undefined;
  94 + this.articulos = [];
  95 + }
  96 +
  97 + setArticulosSinImagen(articulos: IArticulo[]) {
  98 + articulos.forEach((articulo: IArticulo) => {
  99 + articulo.imagenes = !articulo.imagenes ? [{ imagen: 'noImage.jpg' }] :
  100 + !articulo.imagenes.length ? [{ imagen: 'noImage.jpg' }] : articulo.imagenes;
  101 + });
  102 + }
  103 +
  104 + markArticuloInPromoAsRemoved() {
  105 + this.articulos.forEach((articulo: IArticulo) => {
  106 + if (articulo.PRO) {
  107 + articulo.productos.forEach((articulo: IArticulo) => {
  108 + if (articulo.cantidadAdicionada === 0) {
  109 + articulo.cantidad = 0;
  110 + articulo.importeValorExtra = 0;
  111 + }
  112 + });
  113 + }
  114 + });
  115 + }
  116 +}
src/app/services/cliente/cliente.service.spec.ts
... ... @@ -0,0 +1,12 @@
  1 +import { TestBed } from '@angular/core/testing';
  2 +
  3 +import { ClienteService } from './cliente.service';
  4 +
  5 +describe('ClienteService', () => {
  6 + beforeEach(() => TestBed.configureTestingModule({}));
  7 +
  8 + it('should be created', () => {
  9 + const service: ClienteService = TestBed.get(ClienteService);
  10 + expect(service).toBeTruthy();
  11 + });
  12 +});
src/app/services/cliente/cliente.service.ts
... ... @@ -0,0 +1,16 @@
  1 +import { Injectable } from '@angular/core';
  2 +import { HttpClient } from '@angular/common/http';
  3 +import { APP_SETTINGS } from "src/etc/AppSettings";
  4 +
  5 +@Injectable({
  6 + providedIn: 'root'
  7 +})
  8 +export class ClienteService {
  9 + urlClientes = `${APP_SETTINGS.apiDeboSuite}/clientes`;
  10 +
  11 + constructor(private http: HttpClient) { }
  12 +
  13 + getById(id: number) {
  14 + return this.http.get(`${this.urlClientes}/get/${id}`);
  15 + }
  16 +}
src/etc/AppSettings.ejemplo.ts
... ... @@ -0,0 +1,3 @@
  1 +// export const APP_SETTINGS = {
  2 +// apiDeboSuite: 'http://localhost:9900'
  3 +// }