comprobantes.component.ts 2.18 KB
import { Component, OnInit} from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { BusquedaComprobanteComponent } from '../busqueda-comprobante/busqueda-comprobante.component';
import { ComprobanteService } from './comprobantes.service';

@Component({
  templateUrl: './comprobantes.component.html',
  styleUrls: ['./comprobantes.component.scss'],
  providers:[ ComprobanteService ]
})
export class ComprobantesComponent implements OnInit {

  constructor(private modalService: NgbModal, public comprobanteService: ComprobanteService) { }

  ngOnInit() { }

  filter = '';
  estadoArticulos = 'pendiente';
  comprobantes = [1, 2, 3];
  cabecera = {};
  cuerpo = [];
  articulosFiltro = [];
  paginaActiva = 1;
  paginas = [];
  saveLoading = false;

  fecha = new Date();

  paginar() {

    var cantPaginas = Math.ceil(this.articulosFiltro.length / 5);
    this.paginas = [];
    for (let i = 0; i < cantPaginas; i++) {
      this.paginas.push(i + 1);
    }
  }

  getPaginaFiltro() {

    this.articulosFiltro = this.cuerpo.filter((articulo) => {
      return articulo.estado == this.estadoArticulos &&
        (articulo.TIO.toLocaleUpperCase().includes(this.filter.toLocaleUpperCase()) ||
        articulo.codigoBarras == this.filter);
    });

    this.paginar();

    return this.articulosFiltro.slice((this.paginaActiva - 1) * 5 , this.paginaActiva * 5);
  }

  getCantidadArticulosByEstado(estado: String) {
    return this.cuerpo.filter((articulo) => {
      return articulo.estado == estado;
    }).length;
  }

  guardarComprobante(event: any) {

    if (this.getCantidadArticulosByEstado('pendiente')) {
      alert('No deben quedar articulos pendientes');
    }

    this.comprobanteService
      .saveComprobantes({cabecera: this.cabecera, cuerpo: this.cuerpo})
      .subscribe(data => {
        console.log(data);
      });
  }

  busquedaComprobantes() {
    this.modalService.open(BusquedaComprobanteComponent).result.then(comprobante => {

      this.cabecera = comprobante.cabecera;
      this.cuerpo = comprobante.cuerpo;

      this.cuerpo.forEach(articulo => {
        articulo['estado'] = 'pendiente';
      });

      this.getPaginaFiltro();
    }, (reason) => { });
  }

}