| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477 |
- 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 "../instrument/instrument.directive";
- import { InstrumentComponent } from "../instrument/instrument.component";
- import { InstrumentsService } from "@app/services/instruments.service";
- import { CatalogsService } from "@app/services/catalogs.service";
- import { InvestmentsService } from "@app/services/investments.service";
- import { AuthService } from "@app/services/auth2.service";
- import { JwtHelperService } from "@auth0/angular-jwt";
- import Swal from "sweetalert2";
- @Component({
- selector: "mt-wizard-result",
- templateUrl: "./result.component.html",
- styleUrls: ["./result.component.scss"]
- })
- export class ResultComponent implements OnInit {
- helper = new JwtHelperService();
- title = "Resumen de la propuesta";
- @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;
- countries: any;
- companies: any;
- rates: any;
- revenues: any;
- funds: any;
- instrumentTypes: any;
- markets: any;
- emitters: any;
- periodicities: any;
- operations: any;
- format_incomes: any;
- base_types: any;
- payment_terms: any;
- financials: any;
- inversion: {};
- investmentProposalID: string;
- investmentExists: boolean = false;
- reviewProposal: {};
- userRole: any;
- state: string = "";
- submitted: boolean = false;
- constructor(
- private router: Router,
- private formDataService: FormInvestmentProposalService,
- private componentFactoryResolver: ComponentFactoryResolver,
- private instrumentService: InvestmentProposalWorkflowService,
- private loadInstrumentsService: InstrumentsService,
- private catalogService: CatalogsService,
- private investmentService: InvestmentsService,
- private route: ActivatedRoute,
- private authService: AuthService
- ) {
- this.formData = this.formDataService.getFormData();
- this.isFormValid = this.formDataService.isFormValid();
- this.ads = this.loadInstrumentsService.getInstruments();
- const decodedToken = this.helper.decodeToken(
- this.authService.getJwtToken()
- );
- this.userRole = decodedToken.groups;
- }
- ngOnInit() {
- 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"];
- });
- } else {
- this.investmentExists = false;
- }
- this.formData.instrumentos;
- this.indexDynamicComponent = this.ads.findIndex(
- x => x.data.key == this.formData.instrumentos
- );
- if (this.indexDynamicComponent >= 0) {
- this.loadComponent();
- } else {
- console.log("No existe el componente");
- }
- this.general = this.formDataService.getGeneralInfo();
- this.instrument = this.formDataService.getWork();
- this.complement = this.formDataService.getComplementInfo();
- console.log(this.instrument);
- 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.id_plazo == this.complement.plazo);
- this.payment_terms =
- this.payment_terms != undefined ? this.payment_terms.nombre : "-";
- });
- this.catalogService.getOperationTypes().subscribe(res => {
- this.operations = res.find(
- e => e.id_tipo_operacion == 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 : "-";
- });
- this.final = {};
- Object.assign(this.final, this.general, this.instrument, this.complement);
- this.inversion = {
- codigo_instrumento: this.general.instrumentos,
- info_inversion: {
- id_empresa: +this.complement.empresa,
- id_pais: +this.complement.pais,
- id_entidad: +this.general.casa,
- id_origen_fondo: +this.general.origenes_fondo,
- id_periodicidad: +this.general.periodicidad,
- id_plazo: +this.complement.plazo,
- id_tipo_base: +this.general.base_anual,
- id_tipo_emisor: +this.complement.emisores,
- id_tipo_mercado: this.complement.tipo_mercado,
- id_tipo_operacion: +this.complement.operaciones,
- //id_tipo_pago: 1,
- id_formato_ingreso: +this.general.formato_ingreso,
- id_tipo_renta: +this.general.tipo_renta,
- id_tipo_tasa: +this.general.tipo_tasa,
- nombre_inversion: this.general.name,
- asunto: this.general.asunto,
- comentario: this.complement.comentarios,
- justificacion: this.complement.justificacion
- },
- info_instrumento: this.instrument
- };
- if (
- (this.inversion["codigo_instrumento"] == "CETE" ||
- this.inversion["codigo_instrumento"] == "DAP" ||
- this.inversion["codigo_instrumento"] == "VCN" ||
- this.inversion["codigo_instrumento"] == "PBUR") &&
- (this.instrument["proyecciones"] != undefined ||
- this.instrument["proyecciones"] != "")
- ) {
- this.inversion["proyecciones"] = this.instrument["proyecciones"];
- }
- }
- loadComponent() {
- const adItem = this.ads[this.indexDynamicComponent];
- 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;
- }
- // Guardar propuesta de inversion (Crear)
- submit() {
- Swal.fire({
- allowOutsideClick: false,
- icon: "info",
- text: "Espere por favor..."
- });
- Swal.showLoading();
- if (this.investmentProposalID != undefined) {
- } else {
- this.investmentService.createProposalInvestment(this.inversion).subscribe(
- success => {
- if (success) {
- Swal.fire({
- allowOutsideClick: false,
- icon: "success",
- showCancelButton: false,
- title: "Exito",
- confirmButtonText: "El registro ha sido guardado"
- }).then(result => {
- if (result.value) {
- window.location.href = "#/investment-proposals";
- }
- });
- }
- },
- err => {
- Swal.fire({
- icon: "error",
- title: "Error al guardar",
- text: err.message
- });
- }
- );
- }
- }
- //Enviar a revision la propuesta de inversion
- sendToReview() {
- (async () => {
- const { value: comentario } = await Swal.fire({
- title: "<h3>Enviar a revisión propuesta de inversión</h3>",
- icon: "info",
- html: `<p style="text-align:left;">Comentario:</p>`,
- input: "textarea",
- showCancelButton: true,
- confirmButtonText: "Enviar propuesta",
- cancelButtonText: "Cancelar",
- // inputValidator: value => {
- // if (!value) {
- // return "Debe ingresar un comentario";
- // }
- // }
- preConfirm: comentario => {
- this.reviewProposal = {
- id_inversion: this.investmentProposalID,
- step: "next",
- comentario: comentario
- };
- this.investmentService
- .sendReviewProposalInvestment(this.reviewProposal)
- .subscribe(
- success => {
- if (success) {
- Swal.fire({
- allowOutsideClick: false,
- icon: "success",
- showCancelButton: false,
- title: "Exito",
- confirmButtonText: "La propuesta ha sido enviada a revisión"
- }).then(result => {
- Swal.close();
- window.location.href = "#/investment-proposals";
- });
- }
- },
- err => {
- Swal.fire({
- icon: "error",
- title: "Error al guardar",
- text: err.message
- });
- }
- );
- }
- });
- })();
- }
- // Actualizar la propuesta de inversion si se han realizado cambios
- update_proposal() {
- Swal.fire({
- allowOutsideClick: false,
- icon: "info",
- text: "Espere por favor..."
- });
- Swal.showLoading();
- this.investmentService
- .updateProposalInvestment(this.investmentProposalID, this.inversion)
- .subscribe(
- success => {
- if (success) {
- Swal.fire({
- allowOutsideClick: false,
- icon: "success",
- showCancelButton: false,
- title: "Exito",
- confirmButtonText: "El registro ha sido actualizado"
- }).then(result => {
- Swal.close();
- });
- }
- },
- err => {
- Swal.fire({
- icon: "error",
- title: "Error al guardar",
- text: err.message
- });
- }
- );
- }
- goToPrevious() {
- this.submitted = true;
- if (this.investmentProposalID != undefined) {
- this.router.navigate(["/investment-proposal/complement-info"], {
- queryParams: { id: this.investmentProposalID }
- });
- } else {
- this.router.navigate(["/investment-proposal/complement-info"]);
- }
- }
- //Enviar a revision la propuesta de inversion
- finishProposal() {
- (async () => {
- const { value: comentario } = await Swal.fire({
- title: "<h3>Finalizar propuesta de inversión</h3>",
- icon: "info",
- html: `<p style="text-align:left;">Comentario:</p>`,
- input: "textarea",
- showCancelButton: true,
- confirmButtonText: "Finalizar",
- cancelButtonText: "Cancelar",
- // inputValidator: value => {
- // if (!value) {
- // return "Debe ingresar un comentario";
- // }
- // }
- preConfirm: comentario => {
- this.reviewProposal = {
- id_inversion: this.investmentProposalID,
- step: "next",
- comentario: comentario
- };
- this.investmentService
- .sendReviewProposalInvestment(this.reviewProposal)
- .subscribe(
- success => {
- if (success) {
- Swal.fire({
- allowOutsideClick: false,
- icon: "success",
- showCancelButton: false,
- title: "Exito",
- confirmButtonText: "La propuesta ha sido finalizada"
- }).then(result => {
- Swal.close();
- window.location.href = "#/investment-proposals";
- });
- }
- },
- err => {
- Swal.fire({
- icon: "error",
- title: "Error al guardar",
- text: err.message
- });
- }
- );
- }
- });
- })();
- }
- // Verifica permisos para mostrar boton de edicion y/o envio a revision,
- // segun los permisos del usuario y el estado de la propuesta
- can_send_to_review(status: string) {
- if (status == "NUEVA" || status == "RECHA") {
- // TO DO ver que el codigo de los tipos de usuario
- return true;
- } else {
- return false;
- }
- }
- can_finish_proposal(status: string) {
- if (status == "LIQUI") {
- // TO DO ver que el codigo de los tipos de usuario
- return true;
- } else {
- return false;
- }
- }
- }
|