comprobantes.component.ts 3.24 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';
import { Router } from '@angular/router';
import { ModalService } from '../modal/modal.service';

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

  constructor(
      private modalService: NgbModal,
      public comprobanteService: ComprobanteService,
      public router: Router,
      private modal: ModalService) { }

  ngOnInit() { }

  filter = '';
  estadoArticulos : string;
  tempRecibido = [];
  cabecera = {};
  cuerpo = [];
  articulosFiltro = [];
  saveLoading = false;
  showCabecera = true;

  fecha = new Date();

  getPaginaFiltro() {

    this.articulosFiltro = this.cuerpo.filter((articulo) => {

      var tio = articulo.TIO.trim().toLocaleUpperCase().includes(this.filter.toLocaleUpperCase());
      var lio = articulo.LI0.trim().toLocaleUpperCase().includes(this.filter.toLocaleUpperCase());
      var codigoBarras = articulo.codigoBarras == this.filter;

      articulo.cantidadRecibida != articulo.CAN && !articulo.estado ? articulo.estado = 'modificado' :
        false;

      var estado = articulo.estado == this.estadoArticulos;

      return (tio || lio || codigoBarras) && estado;
    });

    return this.articulosFiltro;
  }

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

  guardarComprobante() {

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

    if (!this.cuerpo.length) {
      this.modal.alert('Debe seleccionar un comprobante');
      return;
    }

    this.saveLoading = true;

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

        this.modal.alert('Comprobante guardado con éxito').result.then( () => {

          this.saveLoading = false;
          this.router.navigateByUrl('/home');
        });

      }, err => {

        if (err.status == 510) {

          this.modal.alert('Ya existe el comprobante').result.then(() => {

            this.router.navigateByUrl('/home');
          });
        } else {

          this.modal.alert('Algo salió mal...');
        }

        this.saveLoading = false;
        console.log(err);
      });
  }

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

      this.cabecera = comprobante.cabecera;

      comprobante.cuerpo.forEach(articulo => {
        articulo.cantidadRecibida = articulo.CAN;
      });

      this.cuerpo = comprobante.cuerpo;

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

  inputArticulo(articulo) {
    if (articulo.tempRecibido > 999999) {
      this.modal.alert('Cantidad máxima superada');
      return;
    }
    articulo.input = false;
    articulo.cantidadRecibida = articulo.tempRecibido || articulo.CAN;
  }

}