import { Component, OnInit, Input } from "@angular/core"; import { InstrumentComponent } from "@app/components/investment-proposals/instrument/instrument.component"; import { FormBuilder, FormGroup, Validators } from "@angular/forms"; import { IAngularMyDpOptions, IMyDateModel } from "angular-mydatepicker"; import { formatDate, DatePipe } from "@angular/common"; import { Router } from "@angular/router"; import { FormInvestmentProposalService } from "@app/services/form-investment-proposal.service"; import { CatalogsService } from "@app/services/catalogs.service"; import { InstrumentCalculations } from "@app/services/instrument-calculations.service"; import Swal from "sweetalert2"; import { GeneralInfo } from "@app/models/investment-proposal-form"; import { parse } from "date-fns"; @Component({ selector: "app-lete", templateUrl: "./lete.component.html" }) export class LETE implements InstrumentComponent { title: string = "Letes"; @Input() data: any; @Input() summary: boolean; @Input() investmentID: string; form: any; general: GeneralInfo; // For daterange daysLabels: any = { su: "Dom", mo: "Lun", tu: "Mar", we: "Mie", th: "Jue", fr: "Vie", sa: "Sab" }; monthsLabels: any = { 1: "Ene", 2: "Feb", 3: "Mar", 4: "Abr", 5: "May", 6: "Jun", 7: "Jul", 8: "Ago", 9: "Sep", 10: "Oct", 11: "Nov", 12: "Dic" }; investmentProposalForm: FormGroup; myDpOptions: IAngularMyDpOptions = { dateRange: false, dateFormat: "dd/mm/yyyy", dayLabels: this.daysLabels, monthLabels: this.monthsLabels }; myDateInit: boolean = true; m_fecha_operacion: IMyDateModel; m_fecha_liquidacion: IMyDateModel; m_fecha_rendencion: IMyDateModel; submitted: boolean = false; instrument_exists: boolean; instrument_work: any = []; financials: any; base_types: any; ingreso_bruto: number = 0.0; ingreso_neto: number = 0.0; valor_transado: number = 0.0; precio_porcentaje: number = 0.0; rendimiento_neto: number = 0.0; total_pagar: number = 0.0; comision_bolsa: number = 0.0; comision_casa: number = 0.0; leteObject: {}; fecha_vencimiento: string = "-"; constructor( private formBuilder: FormBuilder, private router: Router, private formDataService: FormInvestmentProposalService, private catalogService: CatalogsService, private instrumentCalcService: InstrumentCalculations, public datepipe: DatePipe ) { this.instrument_work = this.formDataService.getWork(); this.instrument_exists = this.instrument_work == undefined; this.general = this.formDataService.getGeneralInfo(); this.investmentProposalForm = this.formBuilder.group({ valor_nominal: [ this.instrument_exists ? "" : this.instrument_work.valor_nominal, [ Validators.required, Validators.pattern(/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/) ] ], plazo: [ this.instrument_exists ? "" : this.instrument_work.plazo, [Validators.required, Validators.pattern(/^[+]?([0-9]+)$/)] ], comision_casa_porcentaje: [ this.instrument_exists ? "" : this.instrument_work.comision_casa_porcentaje, [ Validators.required, Validators.pattern(/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/) ] ], comision_bolsa_porcentaje: [ this.instrument_exists ? "" : this.instrument_work.comision_bolsa_porcentaje, [ Validators.required, Validators.pattern(/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/) ] ], rendimiento_bruto: [ this.instrument_exists ? "" : this.instrument_work.rendimiento_bruto, [ Validators.required, Validators.pattern(/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/) ] ], fecha_liquidacion: [ this.instrument_exists ? "" : { isRange: false, singleDate: { jsDate: parse( this.instrument_work.fecha_liquidacion, "dd/MM/yyyy", new Date() ), formatted: this.instrument_work.fecha_liquidacion } }, Validators.required ], fecha_operacion: [ this.instrument_exists ? "" : { isRange: false, singleDate: { jsDate: parse( this.instrument_work.fecha_operacion, "dd/MM/yyyy", new Date() ), formatted: this.instrument_work.fecha_operacion } }, Validators.required ], fecha_redencion: [ this.instrument_exists ? "" : { isRange: false, singleDate: { jsDate: parse( this.instrument_work.fecha_redencion, "dd/MM/yyyy", new Date() ), formatted: this.instrument_work.fecha_redencion } } ] }); } get f() { return this.investmentProposalForm.controls; } save(form: any): boolean { if (!form.valid) { return false; } this.formDataService.setWork(this.leteObject); return true; } getCalculations(form: any, saveForm: boolean) { this.submitted = true; if (!form.valid) { return false; } Swal.fire({ allowOutsideClick: false, icon: "info", text: "Espere por favor..." }); Swal.showLoading(); this.instrumentCalcService .leteCalc( "LETE", // Codigo del instrumento { id_tipo_base: this.general.base_anual }, { valor_nominal: +this.f.valor_nominal.value, plazo: +this.f.plazo.value, comision_casa_porcentaje: this.f.comision_casa_porcentaje.value, comision_bolsa_porcentaje: this.f.comision_bolsa_porcentaje.value, rendimiento_bruto: this.f.rendimiento_bruto.value, fecha_operacion: this.f.fecha_operacion.value.singleDate.formatted, fecha_liquidacion: this.f.fecha_liquidacion.value.singleDate.formatted } ) .subscribe( ans => { this.ingreso_bruto = ans["result"]["ingreso_bruto"]; this.ingreso_neto = ans["result"]["ingreso_neto"]; this.valor_transado = ans["result"]["valor_transado"]; this.precio_porcentaje = ans["result"]["precio_porcentaje"]; this.rendimiento_neto = ans["result"]["rendimiento_neto"]; this.total_pagar = ans["result"]["total_pagar"]; this.comision_bolsa = ans["result"]["comision_bolsa"]; this.comision_casa = ans["result"]["comision_casa"]; this.fecha_vencimiento = ans["result"]["fecha_vencimiento"]; Swal.close(); this.leteObject = { valor_nominal: this.investmentProposalForm.value.valor_nominal, plazo: this.investmentProposalForm.value.plazo, comision_casa_porcentaje: this.investmentProposalForm.value .comision_casa_porcentaje, comision_bolsa_porcentaje: this.investmentProposalForm.value .comision_bolsa_porcentaje, rendimiento_bruto: this.investmentProposalForm.value .rendimiento_bruto, ingreso_bruto: this.ingreso_bruto, ingreso_neto: this.ingreso_neto, valor_transado: this.valor_transado, precio_porcentaje: this.precio_porcentaje, rendimiento_neto: this.rendimiento_neto, total_pagar: this.total_pagar, comision_bolsa: this.comision_bolsa, comision_casa: this.comision_casa, fecha_vencimiento: this.fecha_vencimiento, fecha_operacion: this.investmentProposalForm.value.fecha_operacion .singleDate.formatted, fecha_liquidacion: this.investmentProposalForm.value.fecha_liquidacion.singleDate .formatted || "", fecha_redencion: this.investmentProposalForm.value.fecha_redencion == undefined ? this.investmentProposalForm.value.fecha_redencion.singleDate .formatted : "" /*id_inversion_instrumento: this.instrument_work.id_inversion_instrumento == undefined ? "" : this.instrument_work.id_inversion_instrumento*/ }; this.formDataService.setWork(this.leteObject); Swal.close(); if (saveForm == true) { if (this.investmentID != undefined) { this.router.navigate(["/investment-proposal/complement-info"], { queryParams: { id: this.investmentID } }); } else { this.router.navigate(["/investment-proposal/complement-info"]); } } }, err => { Swal.fire({ icon: "error", title: "Error en el servidor", text: "No su pudo obtener la informacion" }); return false; } ); } goToPrevious() { this.submitted = true; if (this.investmentID != undefined) { this.router.navigate(["/investment-proposal/general-info"], { queryParams: { id: this.investmentID } }); } else { this.router.navigate(["/investment-proposal/general-info"]); } } goToNext(form: any) { this.getCalculations(form, true); } }