import { Component, Input, OnInit } from "@angular/core";
import { PdfmakeScriptService } from "@app/services/pdfmake-script.service";
import { from } from "rxjs";
import { InvestmentsService } from "@app/services/investments.service";
import { CatalogsService } from "@app/services/catalogs.service";
declare let pdfMake: any;

@Component({
  selector: "app-investment-print",
  templateUrl: "./investment-print.html"
})
export class InvestmentPrint implements OnInit {
  @Input() investmentID: string;
  investmentResult: any;
  investmentInstrument: string[];
  columnKey = [];
  columnValue = [];
  rates: any;
  instrumentName: any;

  allowedStateForPayment = ["PGAPR", "LIQUI", "FINAL"];
  monto: any;
  codigo_inversion: any;
  codigo: any;
  tipo_pago: any;
  cuenta_bancaria: any;
  cuenta_bancaria_destino: any;
  emitir_nombre: any;
  fecha_vencimiento: any;

  constructor(
    private scriptService: PdfmakeScriptService,
    private investmentService: InvestmentsService,
    private catalogService: CatalogsService
  ) {
    this.scriptService.load("pdfMake", "vfsFonts");
  }

  ngOnInit() {
    if (this.investmentID != undefined) {
      this.investmentService
        .getProposalInvestment(this.investmentID)
        .subscribe(res => {
          this.investmentResult = res["result"];
          this.instrumentName = this.investmentResult.id_inversion_instrumento.id_tipo_instrumento.codigo;
          this.investmentInstrument = this.investmentResult.id_inversion_instrumento.instrumento;

          this.getInstrumentColumns(
            this.instrumentName,
            this.investmentInstrument
          );

          if (
            this.allowedStateForPayment.includes(
              this.investmentResult["id_estado_inversion"]["codigo"]
            )
          ) {
            this.investmentService
              .getPaymentInfoProposalInvestment(this.investmentID)
              .subscribe(resp => {
                this.monto = resp["result"]["monto"];
                this.codigo_inversion =
                  resp["result"]["id_inversion"]["codigo_inversion"];
                this.codigo = resp["result"]["codigo"];
                this.tipo_pago = resp["result"]["id_tipo_pago"]["nombre"];
                this.cuenta_bancaria =
                  resp["result"]["id_cuenta_bancaria"]["nombre"];

                if (resp["result"]["id_cuenta_bancaria_destino"] != undefined) {
                  this.cuenta_bancaria_destino =
                    resp["result"]["id_cuenta_bancaria_destino"]["nombre"];
                }
                if (resp["result"]["emitir_nombre"] != undefined) {
                  this.emitir_nombre = resp["result"]["emitir_nombre"];
                }

                this.fecha_vencimiento = resp["result"]["fecha_vencimiento"];
              });
          }
        });
    }
  }

  getInstrumentColumns(instrumentName: string, investmentInstrument: any) {
    switch (instrumentName) {
      case "LETE":
        Object.entries(investmentInstrument).forEach(([key, value]) => {
          if (value == null) {
            value = "-";
          }
          if (key == "valor_nominal") {
            this.columnKey.push("Valor nominal");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "plazo") {
            this.columnKey.push("Plazo");
            this.columnValue.push(value.toString());
          }
          if (key == "comision_casa_porcentaje") {
            this.columnKey.push("Comisión casa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_bolsa_porcentaje") {
            this.columnKey.push("Comisión bolsa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "rendimiento_bruto") {
            this.columnKey.push("Rendimiento bruto (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "ingreso_bruto") {
            this.columnKey.push("Ingreso bruto");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "ingreso_neto") {
            this.columnKey.push("Ingreso neto");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "valor_transado") {
            this.columnKey.push("Valor transado");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "precio_porcentaje") {
            this.columnKey.push("Precio (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "rendimiento_neto") {
            this.columnKey.push("Rendimiento neto (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "total_pagar") {
            this.columnKey.push("Total a pagar");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_bolsa") {
            this.columnKey.push("Comisión bolsa ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_casa") {
            this.columnKey.push("Comisión casa ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "fecha_vencimiento") {
            this.columnKey.push("Fecha vencimiento");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_operacion") {
            this.columnKey.push("Fecha operación");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_liquidacion") {
            this.columnKey.push("Fecha liquidación");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_redencion") {
            this.columnKey.push("Fecha redención");
            this.columnValue.push(value.toString());
          }
        });

        break;
      case "CETE":
        Object.entries(investmentInstrument).forEach(([key, value]) => {
          if (value == null) {
            value = "-";
          }
          if (key == "valor_nominal") {
            this.columnKey.push("Valor nominal");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "plazo") {
            this.columnKey.push("Plazo");
            this.columnValue.push(value.toString());
          }
          if (key == "comision_casa_porcentaje") {
            this.columnKey.push("Comisión casa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_bolsa_porcentaje") {
            this.columnKey.push("Comisión bolsa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "rendimiento_bruto") {
            this.columnKey.push("RendRendimiento bruto (%)imiento bruto");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "otros_costos") {
            this.columnKey.push("Otros costos");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "fecha_operacion") {
            this.columnKey.push("Fecha de operación");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_liquidacion") {
            this.columnKey.push("Fecha de liquidación");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_ultima_cupon") {
            this.columnKey.push("Fecha última cupón");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_vencimiento") {
            this.columnKey.push("Fecha de vencimiento");
            this.columnValue.push(value.toString());
          }
          if (key == "ingreso_bruto") {
            this.columnKey.push("Ingreso bruto");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "ingreso_neto") {
            this.columnKey.push("Ingreso neto");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "valor_transado") {
            this.columnKey.push("Valor transado");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "precio_porcentaje") {
            this.columnKey.push("Precio (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "rendimiento_neto") {
            this.columnKey.push("Rendimiento neto (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "total_pagar") {
            this.columnKey.push("Total a pagar");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_bolsa") {
            this.columnKey.push("Comisión bolsa ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_casa") {
            this.columnKey.push("Comisión casa ($)");
            this.columnValue.push("$" + value.toString());
          }
        });
        break;
      case "VCN":
      case "PBUR":
        Object.entries(investmentInstrument).forEach(([key, value]) => {
          if (value == null) {
            value = "-";
          }
          if (key == "valor_par") {
            this.columnKey.push("Valor par");
            this.columnValue.push(value.toString() == "true" ? "Si" : "No");
          }
          if (key == "valor_nominal") {
            this.columnKey.push("Valor nominal");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "renta_porcentaje") {
            this.columnKey.push("Renta (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_casa_porcentaje") {
            this.columnKey.push("Comisión casa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_bolsa_porcentaje") {
            this.columnKey.push("Comisión bolsa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_casa") {
            this.columnKey.push("Comisión casa ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_bolsa") {
            this.columnKey.push("Comisión bolsa ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "rendimiento_bruto") {
            this.columnKey.push("Rendimiento bruto (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "otros_costos") {
            this.columnKey.push("Otros costos");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "ingreso_bruto") {
            this.columnKey.push("Ingreso bruto");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "ingreso_neto") {
            this.columnKey.push("Ingreso neto");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "valor_transado") {
            this.columnKey.push("Valor transado");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "precio_porcentaje") {
            this.columnKey.push("Precio (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "rendimiento_neto") {
            this.columnKey.push("Rendimiento neto (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "total_pagar") {
            this.columnKey.push("Total a pagar");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "interes_acumulado") {
            this.columnKey.push("Interés acumulado");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "fecha_inicio_vigencia") {
            this.columnKey.push("Fecha inicio de vigencia");
            this.columnValue.push(value.toString());
          }
          if (key == "plazo") {
            this.columnKey.push("Plazo");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_operacion") {
            this.columnKey.push("Fecha de operación");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_liquidacion") {
            this.columnKey.push("Fecha de liquidación");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_ultima_cupon") {
            this.columnKey.push("Fecha última cupón");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_vencimiento") {
            this.columnKey.push("Fecha de vencimiento");
            this.columnValue.push(value.toString());
          }
        });
        break;
      case "DAP":
        Object.entries(investmentInstrument).forEach(([key, value]) => {
          if (value == null) {
            value = "-";
          }
          if (key == "monto_inversion") {
            this.columnKey.push("Monto inversión");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "renta_porcentaje") {
            this.columnKey.push("Renta (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "tasa_porcentaje") {
            this.columnKey.push("Tasa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "ingreso_bruto") {
            this.columnKey.push("Ingreso bruto");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "ingreso_neto") {
            this.columnKey.push("Ingreso neto");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "rendimiento_bruto") {
            this.columnKey.push("Rendimiento bruto (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "rendimiento_neto") {
            this.columnKey.push("Rendimiento neto (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "fecha_inicio_vigencia") {
            this.columnKey.push("Fecha inicio de vigencia");
            this.columnValue.push(value.toString());
          }
          if (key == "renta") {
            this.columnKey.push("Renta");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "numero_certificado") {
            this.columnKey.push("Número de certificado");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_operacion") {
            this.columnKey.push("Fecha de operación");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_vencimiento") {
            this.columnKey.push("Fecha de vencimiento");
            this.columnValue.push(value.toString());
          }
        });
        break;
      case "BONO":
      case "EURB":
      case "CINV":
        Object.entries(investmentInstrument).forEach(([key, value]) => {
          if (value == null) {
            value = "-";
          }
          if (key == "renta_porcentaje") {
            this.columnKey.push("Renta (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "costo_cedeval") {
            this.columnKey.push("Costo cedeval");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "costo_transferencia") {
            this.columnKey.push("Costo transferencia");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "valor_nominal_compra") {
            this.columnKey.push("Valor nominal compra");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "precio_compra") {
            this.columnKey.push("Precio compra");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "precio_vencimiento_compra") {
            this.columnKey.push("Precio vencimiento compra");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "cupon_porcentaje_compra") {
            this.columnKey.push("Cupón compra");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_casa_porcentaje_compra") {
            this.columnKey.push("Comisión casa compra");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_bolsa_porcentaje_compra") {
            this.columnKey.push("Comisión bolsa compra");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "valor_nominal_venta") {
            this.columnKey.push("Valor nominal venta");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "precio_venta") {
            this.columnKey.push("Precio venta");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "precio_vencimiento_venta") {
            this.columnKey.push("Precio vencimiento venta");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "cupon_porcentaje_venta") {
            this.columnKey.push("Cupón venta");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_casa_porcentaje_venta") {
            this.columnKey.push("Comisión casa venta (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_bolsa_porcentaje_venta") {
            this.columnKey.push("Comisión bolsa venta (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "fecha_vencimiento_compra") {
            this.columnKey.push("Fecha vencimiento compra");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_ultima_cupon_compra") {
            this.columnKey.push("Fecha última cupón");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_liquidacion_compra") {
            this.columnKey.push("Fecha liquidación compra");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_vencimiento_venta") {
            this.columnKey.push("Fecha vencimiento venta");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_ultima_cupon_venta") {
            this.columnKey.push("Fecha última cupón venta");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_liquidacion_venta") {
            this.columnKey.push("Fecha liquidación venta");
            this.columnValue.push(value.toString());
          }
          if (key == "comision_casa_compra") {
            this.columnKey.push("Comisión casa compra ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_bolsa_compra") {
            this.columnKey.push("Comisión bolsa compra ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "fecha_siguiente_cupon_compra") {
            this.columnKey.push("Fecha siguiente cupón compra");
            this.columnValue.push(value.toString());
          }
          if (key == "dias_vencimiento_compra") {
            this.columnKey.push("Días vencimiento compra");
            this.columnValue.push(value.toString());
          }
          if (key == "dias_acumulados_compra") {
            this.columnKey.push("Días acumulados");
            this.columnValue.push(value.toString());
          }
          if (key == "ytm_vencimiento_porcentaje_compra") {
            this.columnKey.push("YTM vencimiento compra");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "ytm_vencimiento_comision_porcentaje_compra") {
            this.columnKey.push("YTM vencimiento comisión compra");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "interes_acumulado_compra") {
            this.columnKey.push("Interés acumulado compra ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "interes_acumulado_porcentaje_compra") {
            this.columnKey.push(" Interés acumulado compra (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "precio_sucio_porcentaje_compra") {
            this.columnKey.push("Precio sucio compra");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "valor_transado_compra") {
            this.columnKey.push("Valor transado compra");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "monto_pagar") {
            this.columnKey.push("Monto a pagar");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "fecha_inicio_vigencia") {
            this.columnKey.push("Fecha inicio vigencia");
            this.columnValue.push(value.toString());
          }
          if (key == "comision_casa_venta") {
            this.columnKey.push("Comisión venta");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_bolsa_venta") {
            this.columnKey.push("Comisión venta");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "fecha_siguiente_cupon_venta") {
            this.columnKey.push("Fecha siguiente cupón venta");
            this.columnValue.push(value.toString());
          }
          if (key == "dias_vencimiento_venta") {
            this.columnKey.push("Días vencimiento venta");
            this.columnValue.push(value.toString());
          }
          if (key == "dias_acumulados_venta") {
            this.columnKey.push("Días acumulados venta");
            this.columnValue.push(value.toString());
          }
          if (key == "ytm_vencimiento_porcentaje_venta") {
            this.columnKey.push("YTM vencimiento venta");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "ytm_vencimiento_comision_porcentaje_venta") {
            this.columnKey.push("YTM vencimiento comisión venta");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "interes_acumulado_venta") {
            this.columnKey.push("Interés acumulado venta");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "interes_acumulado_porcentaje_venta") {
            this.columnKey.push("Interés acumulado venta");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "precio_sucio_porcentaje_venta") {
            this.columnKey.push("Precio sucio venta");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "valor_transado_venta") {
            this.columnKey.push("Valor transado venta");
            this.columnValue.push("$" + value.toString());
          }
        });

        break;

      case "TIT":
        break;
      case "FINV":
        Object.entries(investmentInstrument).forEach(([key, value]) => {
          if (value == null) {
            value = "-";
          }
          if (key == "renta_porcentaje") {
            this.columnKey.push("Renta (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "cuota_participacion") {
            this.columnKey.push("Cuota participación");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "valor_participacion") {
            this.columnKey.push("Valor participación");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_bolsa_porcentaje") {
            this.columnKey.push("Comisión bolsa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_casa_porcentaje") {
            this.columnKey.push("Comisión casa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "dividendo_porcentaje") {
            this.columnKey.push("Dividendo (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "rendimiento_porcentaje") {
            this.columnKey.push("Rendimiento (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "dias_liquidacion") {
            this.columnKey.push("Días liquidación");
            this.columnValue.push(value.toString());
          }
          if (key == "dias_vencimiento") {
            this.columnKey.push("Días vencimiento");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_operacion") {
            this.columnKey.push("Fecha de operación");
            this.columnValue.push(value.toString());
          }
          if (key == "valor_nominal") {
            this.columnKey.push("Valor nominal");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "valor_transado") {
            this.columnKey.push("Valor transado");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "monto_pagar") {
            this.columnKey.push("Monto a pagar");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_casa") {
            this.columnKey.push("Comisión casa ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_bolsa") {
            this.columnKey.push("Comisión bolsa ($)");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "fecha_liquidacion") {
            this.columnKey.push("Fecha de liquidación");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_vencimiento") {
            this.columnKey.push("Fecha de vencimiento");
            this.columnValue.push(value.toString());
          }
        });

        break;
      case "OPC":
      case "FUTU":
        Object.entries(investmentInstrument).forEach(([key, value]) => {
          if (value == null) {
            value = "-";
          }
          if (key == "ticker") {
            this.columnKey.push("Ticker");
            this.columnValue.push(value.toString());
          }
          if (key == "corto") {
            this.columnKey.push("Tipo de operación");
            this.columnValue.push(value.toString());
          }
          if (key == "precio_unitario_compra") {
            this.columnKey.push("Precio unitario compra");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_broker_compra") {
            this.columnKey.push("Comisión broker compra");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "cantidad_contratos_compra") {
            this.columnKey.push("Cantidad contratos compra");
            this.columnValue.push(value.toString());
          }
          if (key == "unidades_contratos_compra") {
            this.columnKey.push("Unidades contratos compra");
            this.columnValue.push(value.toString());
          }
          if (key == "valor_transado_compra") {
            this.columnKey.push("Valor transado compra");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "valor_pagado") {
            this.columnKey.push("Valor pagado");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "ganancia_perdida") {
            this.columnKey.push("Ganancia/Pérdida");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "rendimiento") {
            this.columnKey.push("Rendimiento");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "precio_unitario_venta") {
            this.columnKey.push("Precio unitario venta");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "comision_broker_venta") {
            this.columnKey.push("Comisión broker venta");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "cantidad_contratos_venta") {
            this.columnKey.push("Cantidad contratos venta");
            this.columnValue.push(value.toString());
          }
          if (key == "unidades_contratos_venta") {
            this.columnKey.push("Unidades contratos venta");
            this.columnValue.push(value.toString());
          }
          if (key == "valor_transado_venta") {
            this.columnKey.push("Valor transado venta");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "valor_recibido") {
            this.columnKey.push("Valor recibido");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "fecha_cancelado") {
            this.columnKey.push("Fecha cancelado");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_liquidacion_compra") {
            this.columnKey.push("Fecha liquidación compra");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_vencimiento_compra") {
            this.columnKey.push("Fecha vencimiento compra");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_operacion_compra") {
            this.columnKey.push("Fecha de operación compra");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_liquidacion_venta") {
            this.columnKey.push("Fecha liquidación venta");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_vencimiento_venta") {
            this.columnKey.push("Fecha vencimientoz venta");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_operacion_venta") {
            this.columnKey.push("Fecha de operación venta");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_inicio_vigencia") {
            this.columnKey.push("Fecha inicio de vigencia");
            this.columnValue.push(value.toString());
          }
        });

        break;

        break;
      case "PPER":
        Object.entries(investmentInstrument).forEach(([key, value]) => {
          if (value == null) {
            value = "-";
          }
          if (key == "renta_porcentaje") {
            this.columnKey.push("Renta (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "monto_prestamo") {
            this.columnKey.push("Monto préstamo");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "plazo_gracia") {
            this.columnKey.push("Plazo gracia");
            this.columnValue.push(value.toString());
          }
          if (key == "tasa_porcentaje") {
            this.columnKey.push("Tasa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "iva_porcentaje") {
            this.columnKey.push("IVA (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "pago_seguro_dano") {
            this.columnKey.push("Pago seguro por daño");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "pago_seguro_vivienda") {
            this.columnKey.push("Pago seguro vivienda");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "total_cuotas_mensuales") {
            this.columnKey.push("Total cuotas mensuales");
            this.columnValue.push(value.toString());
          }
          if (key == "numero_deudor") {
            this.columnKey.push("Número deudor");
            this.columnValue.push(value.toString());
          }
          if (key == "nombre_deudor") {
            this.columnKey.push("Nombre deudor");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_otorgamiento") {
            this.columnKey.push("Fecha de otorgamiento");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_fin_otorgamiento") {
            this.columnKey.push("Fecha fin de otorgamiento");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_gracia") {
            this.columnKey.push("Fecha gracia");
            this.columnValue.push(value.toString());
          }
          if (key == "cuota_sin_seguros") {
            this.columnKey.push("Cuota sin seguros");
            this.columnValue.push("$" + value.toString());
          }
        });

        break;
      case "PEMP":
        Object.entries(investmentInstrument).forEach(([key, value]) => {
          if (value == null) {
            value = "-";
          }
          if (key == "renta_porcentaje") {
            this.columnKey.push("Renta (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "monto_prestamo") {
            this.columnKey.push("Monto préstamo");
            this.columnValue.push("$" + value.toString());
          }
          if (key == "tasa_porcentaje") {
            this.columnKey.push("Tasa (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "iva_porcentaje") {
            this.columnKey.push("IVA (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_desembolso_porcentaje") {
            this.columnKey.push("Comisión desembolso (%)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "comision_desembolso") {
            this.columnKey.push("Comisión desembolso ($)");
            this.columnValue.push(value.toString() + "%");
          }
          if (key == "fecha_operacion") {
            this.columnKey.push("Fecha de operación");
            this.columnValue.push(value.toString());
          }
          if (key == "fecha_vencimiento") {
            this.columnKey.push("Fecha de vencimiento");
            this.columnValue.push(value.toString());
          }
          if (key == "plazo") {
            this.columnKey.push("Plazo");
            this.columnValue.push(value.toString());
          }
          if (key == "iva") {
            this.columnKey.push("IVA");
            this.columnValue.push("$" + value.toString());
          }
        });

        break;
    }
  }

  generatePdf(action = "open") {
    var documentDefinition;

    switch (action) {
      case "open":
        documentDefinition = this.getDocumentDefinition();
        pdfMake.createPdf(documentDefinition).open();
        break;

      case "download":
        documentDefinition = this.getDocumentDefinition();
        pdfMake.createPdf(documentDefinition).download();
        break;

      default:
        pdfMake.createPdf(documentDefinition).open();
        break;
    }
  }

  getDocumentDefinition() {
    return {
      pageSize: "LETTER",
      pageMargins: [30, 40, 30, 40],
      header: {
        margin: [20, 10, 0, 20],
        columns: [
          {
            // usually you would use a dataUri instead of the name for client-side printing
            // sampleImage.jpg however works inside playground so you can play with it
            image:
              "data:image/png;base64,[encoded data, 12560 characters]",
            width: 150
          }
        ]
      },
      content: [
        {
          text: "Propuesta de inversión",
          bold: true,
          fontSize: 20,
          alignment: "center",
          margin: [0, 35, 0, 20]
        },
        {
          columns: [
            [
              {
                text: "Asunto: " + this.investmentResult.asunto,
                style: "name",
                margin: [0, 10]
              },
              {
                text: "Empresa: " + this.investmentResult.id_empresa.nombre,
                color: "blue",
                margin: [0, 10]
              },
              {
                text:
                  "Código inversión: " + this.investmentResult.codigo_inversion,
                margin: [0, 2]
              },
              {
                text:
                  "Instrumento: " +
                  this.investmentResult.id_inversion_instrumento
                    .id_tipo_instrumento.nombre,
                margin: [0, 10]
              },
              {
                text: "Nombre: " + this.investmentResult.nombre_inversion
              }
            ]
          ]
        },

        { text: "Información general", style: "subheader", margin: [0, 10] },
        {
          style: "tableExample",
          table: {
            widths: [100, 200],
            body: [
              /*[
                "Estado de inversión: ",
                {
                  text: this.investmentResult.,
                  italics: true,
                  color: "gray"
                }
              ],*/
              [
                "Casa: ",
                {
                  text: this.investmentResult.id_entidad.nombre,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Tipo tasa: ",
                {
                  text: this.rates,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Tipo renta: ",
                {
                  text: this.investmentResult.id_tipo_renta.nombre,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Periodicidad: ",
                {
                  text: this.investmentResult.id_periodicidad.nombre,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Base: ",
                {
                  text:
                    this.investmentResult.id_tipo_base.tipo_base_dias +
                    "/" +
                    this.investmentResult.id_tipo_base.tipo_base,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Plazo: ",
                {
                  text: this.investmentResult.id_plazo.nombre,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Emisores: ",
                {
                  text: this.investmentResult.id_tipo_emisor.nombre,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "País: ",
                {
                  text: this.investmentResult.id_pais.nombre,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Orígenes de fondo: ",
                {
                  text: this.investmentResult.id_origen_fondo.nombre,
                  italics: true,
                  color: "gray"
                }
              ],

              [
                "Tipo mercado: ",
                {
                  text: this.investmentResult.id_tipo_mercado.nombre,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Tipo operación: ",
                {
                  text: this.investmentResult.id_tipo_operacion.nombre,
                  italics: true,
                  color: "gray"
                }
              ]
            ]
          }
        },

        {
          text: "Instrumento",
          style: "header"
        },
        {
          table: {
            widths: [150, 200],
            body: [[this.columnKey, this.columnValue]]
          }
        },

        { text: "Información de pago", style: "subheader", margin: [0, 10] },
        {
          style: "tableExample",
          table: {
            widths: [100, 200],
            body: [
              /*[
                "Estado de inversión: ",
                {
                  text: this.investmentResult.,
                  italics: true,
                  color: "gray"
                }
              ],*/

              [
                "Monto: ",
                {
                  text: "$" + this.monto.toString(),
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Tipo pagp: ",
                {
                  text: this.tipo_pago,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Cuenta bancaria: ",
                {
                  text: this.cuenta_bancaria,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Cuenta bancaria destino: ",
                {
                  text: this.cuenta_bancaria_destino,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Emisión a nombre de: ",
                {
                  text: this.emitir_nombre,
                  italics: true,
                  color: "gray"
                }
              ],
              [
                "Fecha vencimiento: ",
                {
                  text: this.fecha_vencimiento,
                  italics: true,
                  color: "gray"
                }
              ]
            ]
          }
        }
      ],
      info: {
        title: "ResumenPropuestaInversion",
        author: "GRUPO MERELEC",
        subject: "Resumen propuesta de inversión",
        keywords: "Resumen, Propuesta, Inversion"
      },
      styles: {
        header: {
          fontSize: 18,
          bold: true,
          margin: [0, 20, 0, 10]
        },
        name: {
          fontSize: 16,
          bold: true
        },
        jobTitle: {
          fontSize: 14,
          bold: true,
          italics: true
        },
        sign: {
          margin: [0, 50, 0, 10],
          alignment: "right",
          italics: true
        },
        tableHeader: {
          bold: true
        }
      }
    };
  }
}
