|
@@ -0,0 +1,324 @@
|
|
|
|
|
+import {
|
|
|
|
|
+ Component,
|
|
|
|
|
+ OnInit,
|
|
|
|
|
+ Input,
|
|
|
|
|
+ ViewChild,
|
|
|
|
|
+ ComponentFactoryResolver
|
|
|
|
|
+} from "@angular/core";
|
|
|
|
|
+import { Router, ActivatedRoute } from "@angular/router";
|
|
|
|
|
+import { InvestmentProposalForm } from "@app/models/investment-proposal-form";
|
|
|
|
|
+import { FormInvestmentProposalService } from "@app/services/form-investment-proposal.service";
|
|
|
|
|
+import { Instrument } from "@app/models/instrument";
|
|
|
|
|
+import { InvestmentProposalWorkflowService } from "@app/services/investment-proposal-workflow.service";
|
|
|
|
|
+import { InstrumentDirective } from "@app/components/investment-proposals/instrument/instrument.directive";
|
|
|
|
|
+import { InstrumentComponent } from "@app/components/investment-proposals/instrument/instrument.component";
|
|
|
|
|
+import { InstrumentsService } from "@app/services/instruments.service";
|
|
|
|
|
+import Swal from "sweetalert2";
|
|
|
|
|
+import { CatalogsService } from "@app/services/catalogs.service";
|
|
|
|
|
+import { InvestmentsService } from "@app/services/investments.service";
|
|
|
|
|
+
|
|
|
|
|
+@Component({
|
|
|
|
|
+ selector: "app-investment-proposal-detail",
|
|
|
|
|
+ templateUrl: "./proposal-detail.component.html",
|
|
|
|
|
+ styleUrls: ["./proposal-detail.component.scss"]
|
|
|
|
|
+})
|
|
|
|
|
+export class InvestmentProposalDetailComponent implements OnInit {
|
|
|
|
|
+ title = "Detalle de la propuesta de inversión";
|
|
|
|
|
+ @Input() ads: Instrument[];
|
|
|
|
|
+ @Input() formData: InvestmentProposalForm;
|
|
|
|
|
+ @ViewChild(InstrumentDirective, { static: true })
|
|
|
|
|
+ adHost: InstrumentDirective;
|
|
|
|
|
+ isFormValid: boolean = false;
|
|
|
|
|
+ general: any;
|
|
|
|
|
+ instrument: any;
|
|
|
|
|
+ complement: any;
|
|
|
|
|
+ final: any;
|
|
|
|
|
+ workType: string;
|
|
|
|
|
+ form: any;
|
|
|
|
|
+ currentAdIndex = -1;
|
|
|
|
|
+ interval: any;
|
|
|
|
|
+ indexDynamicComponent: number;
|
|
|
|
|
+ investmentProposalID: string;
|
|
|
|
|
+ investmentExists;
|
|
|
|
|
+ state;
|
|
|
|
|
+ financials;
|
|
|
|
|
+ base_types;
|
|
|
|
|
+ countries;
|
|
|
|
|
+ companies;
|
|
|
|
|
+ rates;
|
|
|
|
|
+ revenues;
|
|
|
|
|
+ funds;
|
|
|
|
|
+ instrumentTypes;
|
|
|
|
|
+ markets;
|
|
|
|
|
+ emitters;
|
|
|
|
|
+ periodicities;
|
|
|
|
|
+ format_incomes;
|
|
|
|
|
+ payment_terms;
|
|
|
|
|
+ operations;
|
|
|
|
|
+ gInfo: any;
|
|
|
|
|
+ gInstrument: any;
|
|
|
|
|
+ gComplement: any;
|
|
|
|
|
+ subject: any;
|
|
|
|
|
+ investmentName: any;
|
|
|
|
|
+ comment: any;
|
|
|
|
|
+ justification: any;
|
|
|
|
|
+
|
|
|
|
|
+ constructor(
|
|
|
|
|
+ private router: Router,
|
|
|
|
|
+
|
|
|
|
|
+ private formDataService: FormInvestmentProposalService,
|
|
|
|
|
+ private componentFactoryResolver: ComponentFactoryResolver,
|
|
|
|
|
+ private instrumentService: InvestmentProposalWorkflowService,
|
|
|
|
|
+ private loadInstrumentsService: InstrumentsService,
|
|
|
|
|
+ private catalogService: CatalogsService,
|
|
|
|
|
+ private route: ActivatedRoute,
|
|
|
|
|
+ private investmentService: InvestmentsService
|
|
|
|
|
+ ) {}
|
|
|
|
|
+
|
|
|
|
|
+ ngOnInit() {
|
|
|
|
|
+ //this.formDataService
|
|
|
|
|
+ this.ads = this.loadInstrumentsService.getInstruments();
|
|
|
|
|
+ this.route.params.subscribe(params => {
|
|
|
|
|
+ this.investmentProposalID = params["id"];
|
|
|
|
|
+ });
|
|
|
|
|
+ if (this.investmentProposalID == undefined)
|
|
|
|
|
+ this.investmentProposalID = this.route.snapshot.queryParamMap.get("id");
|
|
|
|
|
+
|
|
|
|
|
+ if (this.investmentProposalID != undefined) {
|
|
|
|
|
+ this.investmentExists = true;
|
|
|
|
|
+ this.investmentService
|
|
|
|
|
+ .getProposalInvestment(this.investmentProposalID)
|
|
|
|
|
+ .subscribe(res => {
|
|
|
|
|
+ this.state = res["result"]["id_estado_inversion"]["codigo"];
|
|
|
|
|
+
|
|
|
|
|
+ this.gInfo = {
|
|
|
|
|
+ asunto: res["result"]["asunto"],
|
|
|
|
|
+ origenes_fondo:
|
|
|
|
|
+ res["result"]["id_origen_fondo"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_origen_fondo"]["id_origen_fondo"],
|
|
|
|
|
+ name: res["result"]["nombre_inversion"],
|
|
|
|
|
+ //date: "",
|
|
|
|
|
+ tipo_tasa: res["result"]["id_tipo_tasa"] || "",
|
|
|
|
|
+ tipo_renta:
|
|
|
|
|
+ res["result"]["id_tipo_renta"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_tipo_renta"]["id_tipo_renta"],
|
|
|
|
|
+ periodicidad:
|
|
|
|
|
+ res["result"]["id_periodicidad"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_periodicidad"]["id_periodicidad"],
|
|
|
|
|
+
|
|
|
|
|
+ instrumentos:
|
|
|
|
|
+ res["result"]["id_inversion_instrumento"]["id_tipo_instrumento"][
|
|
|
|
|
+ "codigo"
|
|
|
|
|
+ ],
|
|
|
|
|
+ base_anual:
|
|
|
|
|
+ res["result"]["id_tipo_base"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_tipo_base"]["id_tipo_base"],
|
|
|
|
|
+ casa:
|
|
|
|
|
+ res["result"]["id_entidad"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_entidad"]["id_entidad_financiera"],
|
|
|
|
|
+ formato_ingreso:
|
|
|
|
|
+ res["result"]["id_formato_ingreso"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_formato_ingreso"]["id_formato_ingreso"]
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ this.gInstrument =
|
|
|
|
|
+ res["result"]["id_inversion_instrumento"]["instrumento"];
|
|
|
|
|
+
|
|
|
|
|
+ this.gInstrument["id_inversion_instrumento"] =
|
|
|
|
|
+ res["result"]["id_inversion_instrumento"][
|
|
|
|
|
+ "id_inversion_instrumento"
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ this.gComplement = {
|
|
|
|
|
+ tipo_mercado:
|
|
|
|
|
+ res["result"]["id_tipo_mercado"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_tipo_mercado"]["id_tipo_mercado"],
|
|
|
|
|
+ emisores:
|
|
|
|
|
+ res["result"]["id_tipo_emisor"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_tipo_emisor"]["id_tipo_emisor"],
|
|
|
|
|
+ empresa:
|
|
|
|
|
+ res["result"]["id_empresa"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_empresa"]["id_empresa"],
|
|
|
|
|
+ pais:
|
|
|
|
|
+ res["result"]["id_pais"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_pais"]["id_pais"],
|
|
|
|
|
+ plazo:
|
|
|
|
|
+ res["result"]["id_plazo"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_plazo"]["id_plazo"],
|
|
|
|
|
+ operaciones:
|
|
|
|
|
+ res["result"]["id_tipo_operacion"] == null
|
|
|
|
|
+ ? ""
|
|
|
|
|
+ : res["result"]["id_tipo_operacion"]["id_tipo_operacion"],
|
|
|
|
|
+ comentarios: res["result"]["comentario"],
|
|
|
|
|
+ justificacion: res["result"]["justificacion"]
|
|
|
|
|
+ };
|
|
|
|
|
+ this.formDataService.setGeneralInfo(this.gInfo);
|
|
|
|
|
+
|
|
|
|
|
+ this.formDataService.setWork(this.gInstrument);
|
|
|
|
|
+
|
|
|
|
|
+ this.formDataService.setComplementInfo(this.gComplement);
|
|
|
|
|
+
|
|
|
|
|
+ this.general = this.formDataService.getGeneralInfo();
|
|
|
|
|
+ this.instrument = this.formDataService.getWork();
|
|
|
|
|
+ this.complement = this.formDataService.getComplementInfo();
|
|
|
|
|
+ this.formData = this.formDataService.getFormData();
|
|
|
|
|
+
|
|
|
|
|
+ this.formData.instrumentos;
|
|
|
|
|
+
|
|
|
|
|
+ this.indexDynamicComponent = this.ads.findIndex(
|
|
|
|
|
+ x => x.component.name == this.formData.instrumentos
|
|
|
|
|
+ );
|
|
|
|
|
+ if (this.indexDynamicComponent >= 0) {
|
|
|
|
|
+ this.loadComponent();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.log("No existe el componente");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (this.general != undefined) {
|
|
|
|
|
+ this.subject = this.general.asunto;
|
|
|
|
|
+ this.investmentName = this.general.name;
|
|
|
|
|
+ this.comment = this.complement.comment;
|
|
|
|
|
+ this.justification = this.complement.comment;
|
|
|
|
|
+
|
|
|
|
|
+ this.catalogService.getFinancialEntities().subscribe(res => {
|
|
|
|
|
+ this.financials = res.find(
|
|
|
|
|
+ e => e.id_entidad_financiera == this.general.casa
|
|
|
|
|
+ );
|
|
|
|
|
+ this.financials =
|
|
|
|
|
+ this.financials != undefined ? this.financials.nombre : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ this.catalogService.getBaseTypes().subscribe(res => {
|
|
|
|
|
+ this.base_types = res.find(
|
|
|
|
|
+ e => e.id_tipo_base == this.general.base_anual
|
|
|
|
|
+ );
|
|
|
|
|
+ this.base_types =
|
|
|
|
|
+ this.base_types != undefined
|
|
|
|
|
+ ? ` ${this.base_types.tipo_base} / ${this.base_types.tipo_base_dias}`
|
|
|
|
|
+ : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ this.catalogService.getCountries().subscribe(res => {
|
|
|
|
|
+ this.countries = res.find(e => e.id_pais == this.complement.pais);
|
|
|
|
|
+ this.countries =
|
|
|
|
|
+ this.countries != undefined ? this.countries.nombre : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+ this.catalogService.getCompanies().subscribe(res => {
|
|
|
|
|
+ this.companies = res.find(
|
|
|
|
|
+ e => e.id_empresa == this.complement.empresa
|
|
|
|
|
+ );
|
|
|
|
|
+ this.companies =
|
|
|
|
|
+ this.companies != undefined ? this.companies.nombre : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+ this.catalogService.getRateTypes().subscribe(res => {
|
|
|
|
|
+ this.rates = res.find(
|
|
|
|
|
+ e => e.id_tipo_tasa == this.general.tipo_tasa
|
|
|
|
|
+ );
|
|
|
|
|
+ this.rates = this.rates != undefined ? this.rates.nombre : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+ this.catalogService.getRevenueTypes().subscribe(res => {
|
|
|
|
|
+ this.revenues = res.find(
|
|
|
|
|
+ e => e.id_tipo_renta == this.general.tipo_renta
|
|
|
|
|
+ );
|
|
|
|
|
+ this.revenues =
|
|
|
|
|
+ this.revenues != undefined ? this.revenues.nombre : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ this.catalogService.getFundsOrigins().subscribe(res => {
|
|
|
|
|
+ this.funds = res.find(
|
|
|
|
|
+ e => e.id_origen_fondo == this.general.origenes_fondo
|
|
|
|
|
+ );
|
|
|
|
|
+ this.funds = this.funds != undefined ? this.funds.nombre : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+ this.catalogService.getInstrumentTypes().subscribe(res => {
|
|
|
|
|
+ this.instrumentTypes = res.find(
|
|
|
|
|
+ e => e.codigo == this.general.instrumentos
|
|
|
|
|
+ );
|
|
|
|
|
+ this.instrumentTypes =
|
|
|
|
|
+ this.instrumentTypes != undefined
|
|
|
|
|
+ ? this.instrumentTypes.nombre
|
|
|
|
|
+ : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ this.catalogService.getMarketTypes().subscribe(res => {
|
|
|
|
|
+ this.markets = res.find(
|
|
|
|
|
+ e => e.id_tipo_mercado == this.complement.tipo_mercado
|
|
|
|
|
+ );
|
|
|
|
|
+ this.markets =
|
|
|
|
|
+ this.markets != undefined ? this.markets.nombre : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+ this.catalogService.getEmitterTypes().subscribe(res => {
|
|
|
|
|
+ this.emitters = res.find(
|
|
|
|
|
+ e => e.id_tipo_emisor == this.complement.emisores
|
|
|
|
|
+ );
|
|
|
|
|
+ this.emitters =
|
|
|
|
|
+ this.emitters != undefined ? this.emitters.nombre : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+ this.catalogService.getPeriodicities().subscribe(res => {
|
|
|
|
|
+ this.periodicities = res.find(
|
|
|
|
|
+ e => e.id_periodicidad == this.general.periodicidad
|
|
|
|
|
+ );
|
|
|
|
|
+ this.periodicities =
|
|
|
|
|
+ this.periodicities != undefined
|
|
|
|
|
+ ? this.periodicities.nombre
|
|
|
|
|
+ : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ this.catalogService.getPaymentTerms().subscribe(res => {
|
|
|
|
|
+ this.payment_terms = res.find(
|
|
|
|
|
+ e => e.codigo == this.complement.calificadora_riesgo
|
|
|
|
|
+ );
|
|
|
|
|
+ this.payment_terms =
|
|
|
|
|
+ this.payment_terms != undefined
|
|
|
|
|
+ ? this.payment_terms.nombre
|
|
|
|
|
+ : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+ this.catalogService.getOperationTypes().subscribe(res => {
|
|
|
|
|
+ this.operations = res.find(
|
|
|
|
|
+ e => e.codigo == this.complement.operaciones
|
|
|
|
|
+ );
|
|
|
|
|
+ this.operations =
|
|
|
|
|
+ this.operations != undefined ? this.operations.nombre : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+ //getIncomeFormat
|
|
|
|
|
+ this.catalogService.getIncomeFormat().subscribe(res => {
|
|
|
|
|
+ this.format_incomes = res.find(
|
|
|
|
|
+ e => e.id_formato_ingreso == this.general.formato_ingreso
|
|
|
|
|
+ );
|
|
|
|
|
+ this.format_incomes =
|
|
|
|
|
+ this.format_incomes != undefined
|
|
|
|
|
+ ? this.format_incomes.nombre
|
|
|
|
|
+ : "-";
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.investmentExists = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ loadComponent() {
|
|
|
|
|
+ this.currentAdIndex = this.indexDynamicComponent % this.ads.length;
|
|
|
|
|
+ const adItem = this.ads[this.currentAdIndex];
|
|
|
|
|
+ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(
|
|
|
|
|
+ adItem.component
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ const viewContainerRef = this.adHost.viewContainerRef;
|
|
|
|
|
+ viewContainerRef.clear();
|
|
|
|
|
+
|
|
|
|
|
+ const componentRef = viewContainerRef.createComponent(componentFactory);
|
|
|
|
|
+ (<InstrumentComponent>componentRef.instance).data = adItem.data;
|
|
|
|
|
+ (<InstrumentComponent>componentRef.instance).summary = true;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|