Imports System.Globalization Public Class frmLetes Dim oCELetes As LETESCE Dim oDAOLetes As New LETESDAO Dim oDAOGeneral As New DAOGeneral Dim IndexBase As Integer = 0 Dim TipoTransaccion = "OK" Dim Operaciones As New Operaciones Dim CalculosTablaDiasFecha As New CalculosTablaDiasFecha Dim CargaCompletaInstrumento As Boolean = False Dim V_txtPrecio = 0.0, V_txtValorTransado = 0.0, V_txtComisionCasa = 0.0, V_txtComisionBolsa = 0.0, V_txtIngresoBruto = 0.0, V_txtTotalAPagar = 0.0, V_txtIngresoNeto = 0.0, V_txtRendimientoNeto = 0.0, V_txtDiasAcumulados = 0.0 Dim DecimalesRedondeo As Integer = 4 Private CodigoInversion As String Dim Instrumento As String Private _Modo As String Private _IdDocumento As Integer Private _TipoDocumento As String Private _ValorNominal As Double Private _ValorTransado As Double Private _Precio As Double Private _PorcentajeCasa As Double Private _ComisionCasa As Double Private _PorcentajeBolsa As Double Private _ComisionBolsa As Double Private _TotalAPagar As Double Private _FechaOperacion As Date Private _FechaLiquidacion As Date Private _FechaVencimiento As Date Private _RendimientoBruto As Double Private _RendimientoNeto As Double Private _Periodicidad As String Private _Plazo As Integer Private _IngresoBruto As Double Private _IngresoNeto As Double Private PBUR As Double = False Private VCN As Double = False Private CET As Double = False Public Property Modo As String Get Return _Modo End Get Set(value As String) _Modo = value End Set End Property Private Property IdDocumento As Integer Get Return _IdDocumento End Get Set(value As Integer) _IdDocumento = value End Set End Property Private Property TipoDocumento As String Get Return _TipoDocumento End Get Set(value As String) _TipoDocumento = value End Set End Property 'GETS Function GetFechaOperacion() As Date Dim valor As Date valor = dtpFechaOperacion.Value Return valor End Function Function GetFechaLiquidacion() As Date Dim valor As Date valor = dtpFechaLiquidacion.Value Return valor End Function Function GetValorNominal() As Double Dim valor As Double If Me.txtValorNominal.Text.Length = 0 Then valor = 0 Else valor = Me.txtValorNominal.Text End If Return valor End Function Function GetPrecio() As Double Dim valor As Double If Me.txtPrecio.Text.Length = 0 Then valor = 0 Else Try valor = Me.txtPrecio.Text valor = valor / 100 Catch ex As Exception valor = 0 End Try End If Return valor End Function Function GetValorTransado() As Double Dim valor As Double If Me.txtValorTransado.Text.Length = 0 Then valor = 0 Else valor = Me.txtValorTransado.Text End If Return valor End Function Function GetComisionBolsa() As Double Dim valor As Double If Me.txtComisionBolsa.Text.Length = 0 Then valor = 0 Else valor = Me.txtComisionBolsa.Text End If Return valor End Function Function GetComisionCasa() As Double Dim valor As Double If Me.txtComisionCasa.Text.Length = 0 Then valor = 0 Else valor = Me.txtComisionCasa.Text End If Return valor End Function Function GetTotalAPagar() As Double Dim valor As Double If Me.txtTotalAPagar.Text.Length = 0 Then valor = 0 Else valor = Me.txtTotalAPagar.Text End If Return valor End Function 'CALCULOS Function CalcularValorApagar() As Double Dim valor As Double valor = GetValorTransado() + GetComisionBolsa() + GetComisionCasa() valor = Math.Round(valor, DecimalesRedondeo) Return valor End Function 'AUTO Sub RefrescarPlazoInversion() Me.txtPlazoInversion.Text = 0 End Sub Sub RefrescarPrecio() Me.txtPrecio.Text = 0 End Sub Sub RefrescarTotalAPagar() Me.txtTotalAPagar.Text = CalcularValorApagar() End Sub Sub CrearColumnasIngresosVCN() Dim Correlativo, Plazo, Fecha, Monto, CostoCedeval, PorcentajeRenta, Renta, CostoTransferencia, CostoBanco, TotalRecibir As New DataGridViewTextBoxColumn Correlativo.Name = "Correlativo" Plazo.Name = "Plazo" Fecha.Name = "Fecha" Monto.Name = "Monto" CostoCedeval.Name = "CostoCedeval" PorcentajeRenta.Name = "PorcentajeRenta" Renta.Name = "Renta" CostoTransferencia.Name = "CostoTransferencia" CostoBanco.Name = "CostoBanco" TotalRecibir.Name = "TotalRecibir" Correlativo.HeaderText = "Correlativo" Plazo.HeaderText = "Plazo" Fecha.HeaderText = "Fecha" Monto.HeaderText = "Monto" CostoCedeval.HeaderText = "Costo de Cedeval" PorcentajeRenta.HeaderText = "Porcentaje de la Renta" Renta.HeaderText = "Renta" CostoTransferencia.HeaderText = "Costo de Transferencia" CostoBanco.HeaderText = "Costo de Banco" TotalRecibir.HeaderText = "Total a Recibir" dgvIngresosVCN.Columns.Add(Correlativo) dgvIngresosVCN.Columns.Add(Plazo) dgvIngresosVCN.Columns.Add(Fecha) dgvIngresosVCN.Columns.Add(Monto) dgvIngresosVCN.Columns.Add(CostoCedeval) dgvIngresosVCN.Columns.Add(PorcentajeRenta) dgvIngresosVCN.Columns.Add(Renta) dgvIngresosVCN.Columns.Add(CostoTransferencia) dgvIngresosVCN.Columns.Add(CostoBanco) dgvIngresosVCN.Columns.Add(TotalRecibir) End Sub Sub CalculosIngresosVCN(ByRef TipoCalculo As String) If TipoCalculo = "Global" Then Dim AgregarFechasIndex As Integer = 0 Dim AgregarMasCamposIndex As Integer = 0 Dim IndexFilas As Integer = 0 dgvIngresosVCN.Rows.Clear() While (True) Dim FechaIngresos As Date = Date.Now.Date ''"Fecha" Dim AgregarFechasInteriorIndex As Integer = 0 Dim Salir As Boolean = False While AgregarFechasIndex >= AgregarFechasInteriorIndex If AgregarFechasIndex = 0 Then dgvIngresosVCN.Rows.Add() End If FechaIngresos = CalculosTablaDiasFecha.AgregarFechaIngresos(dgvIngresosVCN, dtpUltimaFecha, "Fecha", DefinirBaseDias(), DefinirPeriodicidad(), "Mensual", AgregarFechasInteriorIndex) If FechaIngresos > dtpFechaVencimiento.Value Then Salir = True Exit While End If dgvIngresosVCN.Rows(AgregarFechasInteriorIndex).Cells("Fecha").Value = Format(FechaIngresos, "dd/MM/yyyy").ToString AgregarFechasInteriorIndex += 1 End While AgregarFechasIndex += 1 If Salir Then Exit While Else If FechaIngresos < dtpFechaVencimiento.Value Then dgvIngresosVCN.Rows.Add() End If End If End While IndexFilas = dgvIngresosVCN.Rows.Count - 1 While IndexFilas >= AgregarMasCamposIndex Dim Correlativo As Integer = 0 ''"Correlativo" Dim Dias As Integer = 0 '' "Plazo" Dim Monto As Double = 0 Dim PorcentajeRenta As String = "10 %" Dim cero As Integer = "0" Correlativo = CalculosTablaDiasFecha.AgregarCorrelativo(dgvIngresosVCN, AgregarMasCamposIndex) dgvIngresosVCN.Rows(AgregarMasCamposIndex).Cells("Correlativo").Value = Correlativo Dias = CalculosTablaDiasFecha.AgregarDias(dgvIngresosVCN, dtpUltimaFecha, DefinirBaseDias(), DefinirPeriodicidad(), "Mensual", "Fecha", "Plazo", AgregarMasCamposIndex) dgvIngresosVCN.Rows(AgregarMasCamposIndex).Cells("Plazo").Value = Dias Monto = CalculoMontoVCN(AgregarMasCamposIndex) dgvIngresosVCN.Rows(AgregarMasCamposIndex).Cells("Monto").Value = Monto CalculosTablaDiasFecha.AgregarValoresCamposdgvVacios(dgvIngresosVCN, AgregarMasCamposIndex, "PorcentajeRenta", PorcentajeRenta) CalculosTablaDiasFecha.AgregarValoresCamposdgvVacios(dgvIngresosVCN, AgregarMasCamposIndex, "CostoTransferencia", cero) CalculosTablaDiasFecha.AgregarValoresCamposdgvVacios(dgvIngresosVCN, AgregarMasCamposIndex, "CostoBanco", cero) CalculosTablaDiasFecha.AgregarValoresCamposdgvVacios(dgvIngresosVCN, AgregarMasCamposIndex, "CostoCedeval", cero) CalcularRenta(AgregarMasCamposIndex) CalcularTotalRecibir(AgregarMasCamposIndex) AgregarMasCamposIndex += 1 End While Else Dim index As Integer = dgvIngresosVCN.CurrentRow.Index Dim Monto As Double = 0 Dim PorcentajeRenta As String = "10 %" Dim cero As Integer = "0" Monto = CalculoMontoVCN(index) dgvIngresosVCN.Rows(index).Cells("Monto").Value = Monto CalculosTablaDiasFecha.AgregarValoresCamposdgvVacios(dgvIngresosVCN, index, "PorcentajeRenta", PorcentajeRenta) CalculosTablaDiasFecha.AgregarValoresCamposdgvVacios(dgvIngresosVCN, index, "CostoTransferencia", cero) CalculosTablaDiasFecha.AgregarValoresCamposdgvVacios(dgvIngresosVCN, index, "CostoBanco", cero) CalculosTablaDiasFecha.AgregarValoresCamposdgvVacios(dgvIngresosVCN, index, "CostoCedeval", cero) CalcularRenta(index) CalcularTotalRecibir(index) End If End Sub Sub CalcularRenta(ByVal index As Integer) Dim Monto As Double = Operaciones.ConvertirDecimal(dgvIngresosVCN.Rows(index).Cells("Monto").Value) Dim PorcentajeRenta As Double = Operaciones.ConvertirDecimal(dgvIngresosVCN.Rows(index).Cells("PorcentajeRenta").Value) / 100 dgvIngresosVCN.Rows(index).Cells("Renta").Value = Monto * PorcentajeRenta End Sub Sub CalcularTotalRecibir(ByVal index As Integer) Dim Monto As Double = Operaciones.ConvertirDecimal(dgvIngresosVCN.Rows(index).Cells("Monto").Value) Dim InteresAcumulado As Double = Operaciones.ConvertirDecimal(txtInteresAcumulado.Text) Dim Cedeval As Double = Operaciones.ConvertirDecimal(dgvIngresosVCN.Rows(index).Cells("CostoCedeval").Value) Dim Renta As Double = Operaciones.ConvertirDecimal(dgvIngresosVCN.Rows(index).Cells("Renta").Value) Dim CostoTransferencia As Double = Operaciones.ConvertirDecimal(dgvIngresosVCN.Rows(index).Cells("CostoTransferencia").Value) Dim CostoBanco As Double = Operaciones.ConvertirDecimal(dgvIngresosVCN.Rows(index).Cells("CostoBanco").Value) Dim Total As Double = 0 If index = 0 Then Total = Monto - InteresAcumulado - Cedeval - Renta - CostoTransferencia - CostoBanco Else Total = Monto - Cedeval - Renta - CostoTransferencia - CostoBanco End If dgvIngresosVCN.Rows(index).Cells("TotalRecibir").Value = Total End Sub Function CalculoMontoVCN(ByRef index As Integer) Dim ListaDiasBase As New Dictionary(Of String, String) Dim Fecha1 As Date = Date.Now.Date Dim Fecha2 As Date = Date.Now.Date Dim indexAnterior As Integer = index - 1 Dim TipoBase As String = String.Empty Dim DiasNormales As Integer = 0 Dim DiasEspeciales As Integer = 0 Dim MontoInversion As Double = Operaciones.ConvertirDecimal(txtValorNominal.Text.ToString) Dim PorcentajeCupon As Double = Operaciones.ConvertirDecimal(txtRendimientoBruto.Text.ToString) / 100 Dim Total As Double = 0 If index = 0 Then Fecha1 = dtpUltimaFecha.Value Fecha2 = Operaciones.ConvertirFecha(dgvIngresosVCN.Rows(index).Cells("Fecha").Value) ListaDiasBase = CalculosTablaDiasFecha.CalcularFormulasDiasBase(Fecha1, Fecha2, DefinirBaseDias()) Else Fecha1 = Operaciones.ConvertirFecha(dgvIngresosVCN.Rows(indexAnterior).Cells("Fecha").Value) Fecha2 = Operaciones.ConvertirFecha(dgvIngresosVCN.Rows(index).Cells("Fecha").Value.ToString) ListaDiasBase = CalculosTablaDiasFecha.CalcularFormulasDiasBase(Fecha1, Fecha2, DefinirBaseDias()) End If TipoBase = ListaDiasBase.Item("TipoBase").ToString DiasNormales = Operaciones.ConvertirEntero(ListaDiasBase.Item("DiasNormales").ToString) DiasEspeciales = Operaciones.ConvertirEntero(ListaDiasBase.Item("DiasEspeciales").ToString) If TipoBase = "360" Then Total = MontoInversion * DiasNormales * PorcentajeCupon / 360 ElseIf TipoBase = "365" Then Total = (MontoInversion * DiasNormales * PorcentajeCupon / 365) + (MontoInversion * DiasEspeciales * PorcentajeCupon / 366) ElseIf TipoBase = "360/365" Then Total = (MontoInversion * DiasNormales * PorcentajeCupon / 365) + (MontoInversion * DiasEspeciales * PorcentajeCupon / 366) ElseIf TipoBase = "365/360" Then Total = (MontoInversion * DiasNormales * PorcentajeCupon / 360) + (MontoInversion * DiasEspeciales * PorcentajeCupon / 360) End If Return Total End Function Function DefinirBaseDias() Dim TipoBase As Integer = Operaciones.ConvertirEntero(cboBase.SelectedIndex) Return TipoBase End Function Function DefinirPeriodicidad() Dim Periodicidad As String = cboPeriodicidad.SelectedValue Return Periodicidad End Function 'EVENTOS Private Sub Button1_Click(sender As Object, e As EventArgs) RefrescarPlazoInversion() End Sub Private Sub txtRendimientoBruto_TextChanged(sender As Object, e As EventArgs) If Modo = "N" Then RefrescarPrecio() End If End Sub Private Sub txtPlazoInversion_TextChanged(sender As Object, e As EventArgs) Handles txtRendimientoBruto.TextChanged, txtPlazoInversion.TextChanged RellenarDatos() End Sub Private Sub dtpFechaVencimiento_ValueChanged(sender As Object, e As EventArgs) Handles dtpFechaVencimiento.ValueChanged RellenarDatos() End Sub Private Sub dtpFechaLiquidacion_ValueChanged(sender As Object, e As EventArgs) Handles dtpFechaLiquidacion.ValueChanged RellenarDatos() End Sub Private Sub dtpFechaOperacion_ValueChanged(sender As Object, e As EventArgs) Handles dtpFechaOperacion.ValueChanged RellenarDatos() AgregarDiasExtra() End Sub Private Sub txtValorNominal_TextChanged(sender As Object, e As EventArgs) Handles txtValorNominal.TextChanged RellenarDatos() End Sub Private Sub txtPrecio_TextChanged(sender As Object, e As EventArgs) Handles txtPrecio.TextChanged End Sub Private Sub txtPorcentajeComisionCasa_TextChanged(sender As Object, e As EventArgs) Handles txtPorcentajeComisionCasa.TextChanged RellenarDatos() End Sub Private Sub txtPorcentajeComisionBolsa_TextChanged(sender As Object, e As EventArgs) Handles txtPorcentajeComisionBolsa.TextChanged RellenarDatos() End Sub Private Sub txtValorTransado_TextChanged(sender As Object, e As EventArgs) Handles txtValorTransado.TextChanged End Sub Private Sub txtComisionCasa_TextChanged(sender As Object, e As EventArgs) Handles txtComisionCasa.TextChanged If Modo = "N" Then RefrescarTotalAPagar() End If End Sub Private Sub txtComisionBolsa_TextChanged(sender As Object, e As EventArgs) Handles txtComisionBolsa.TextChanged If Modo = "N" Then RefrescarTotalAPagar() End If End Sub Private Sub txtTotalAPagar_TextChanged(sender As Object, e As EventArgs) Handles txtTotalAPagar.TextChanged End Sub Sub ValidarExistencia() Dim General As New DAOGeneral Dim Codigo As String = Variables.Codigo Dim Tabla As String = String.Empty If PBUR Then Tabla = "PBUR" ElseIf VCN Then Tabla = "VCN" ElseIf CET Then Tabla = "CET0" Else Tabla = "LET0" End If Dim Existe As Boolean = General.ExisteTitulo(Codigo, Tabla) If (Existe) Then navNuevo.Enabled = False navModificar.Enabled = True navEliminar.Enabled = True Else navNuevo.Enabled = True navModificar.Enabled = False navEliminar.Enabled = False End If TipoTransaccion = String.Empty btnAceptar.Text = "Aceptar" End Sub Function ExisteValidacion() Dim General As New DAOGeneral Dim Codigo As String = Variables.Codigo Dim Tabla As String = String.Empty If PBUR Then Tabla = "PBUR" ElseIf VCN Then Tabla = "VCN" ElseIf CET Then Tabla = "CET0" Else Tabla = "LET0" End If Dim Existe As Boolean = General.ExisteTitulo(Codigo, Tabla) Return Existe End Function Private Sub frmLetes_Load(sender As Object, e As EventArgs) Handles MyBase.Load TipInstrumento() Me.ActiveControl = Me.txtValorNominal Call CargarCasasCorredoras() Call CargarBase() Call CargarPeriodicidad() If Variables.Codigo.IndexOf("LETE") > -1 Then Instrumento = "LETE" ElseIf Variables.Codigo.IndexOf("PBUR") > -1 Then Instrumento = "PBUR" lblBono.Text = "PAPEL BURSATIL" Me.Text = "PAPEL BURSATIL" lblInteresAcumulado.Visible = True lblDiasAcumulados.Visible = True dtpUltimaFecha.Visible = True txtInteresAcumulado.Visible = True chbValorPar.Visible = True ElseIf Variables.Codigo.IndexOf("CETE") > -1 Then Instrumento = "CETE" lblBono.Text = "CETES" Me.Text = "CETE" lblInteresAcumulado.Visible = True lblDiasAcumulados.Visible = True dtpUltimaFecha.Visible = True txtInteresAcumulado.Visible = True ConfiguracionCETE() ElseIf Variables.Codigo.IndexOf("VCN") > -1 Then grpIngresosVCN.Visible = True Instrumento = "VCN" lblBono.Text = "VALORES COMERCIALES" Me.Text = "VALORES COMERCIALES" lblInteresAcumulado.Visible = True lblDiasAcumulados.Visible = True lblOtrosCostos.Visible = True dtpUltimaFecha.Visible = True txtInteresAcumulado.Visible = True txtOtrosCostos.Visible = True chbValorPar.Visible = True dtpFechaVencimiento.Enabled = True txtPlazoInversion.ReadOnly = True dgvIngresosVCN.Columns.Clear() CrearColumnasIngresosVCN() CargarFilas() Else Instrumento = "NADA" End If CargarReg(Instrumento) Call CargarRegistroBD() SetPeriodicidad() AgregarPorcentaje() Rellenar() ExisteInversion() ValidarExistencia() CargaCompletaInstrumento = True End Sub Sub TipInstrumento() If Variables.Codigo.IndexOf("PBUR") > -1 Then PBUR = True End If If Variables.Codigo.IndexOf("VCN") > -1 Then VCN = True End If If Variables.Codigo.IndexOf("CETE") > -1 Then CET = True End If End Sub Sub SetPeriodicidad() If String.IsNullOrEmpty(Variables.Periodicidad) Then cboPeriodicidad.SelectedValue = "M" Else cboPeriodicidad.SelectedValue = Variables.Periodicidad End If End Sub Function ExisteInversion() Dim Codigo As String = Variables.Codigo Dim TablaINV As String = "INV0" Dim TablaPINV As String = "PIN0" Dim General As New DAOGeneral Dim InvPro = Variables.InvPro If InvPro = "I" Then Dim INV0 As Boolean = General.ExisteTitulo(Codigo, TablaINV) If INV0 Then navNuevo.Visible = True Return True Else navNuevo.Visible = False Return False End If End If If InvPro = "P" Then Dim PINV0 As Boolean = General.ExisteTitulo(Codigo, TablaPINV) If PINV0 Then navNuevo.Visible = True Return True Else navNuevo.Visible = False Return False End If End If Return False End Function Sub ConfiguracionCETE() txtPrecio.Text = "100%" End Sub Private Sub CargarReg(Instrumento) Dim Letes As New LETESDAO Dim Base As Integer = 0 Dim dat = Letes.Cargar(Variables.Codigo, Instrumento) If (Not dat(1).ToString = "False") Then txtValorNominal.Text = Operaciones.ConvertirDecimal(dat(1).ToString) dtpFechaOperacion.Value = Operaciones.ConvertirFecha(dat(2).ToString) dtpFechaLiquidacion.Value = Operaciones.ConvertirFecha(dat(3).ToString) txtPlazoInversion.Text = Operaciones.ConvertirEntero(dat(4).ToString) If (String.IsNullOrEmpty(txtRendimientoBruto.Text)) Then txtRendimientoBruto.Text = CStr(Format((txtRendimientoBruto.Text), "0.00")) + "%" Else txtRendimientoBruto.Text = CStr(Operaciones.ConvertirDecimal(dat(5).ToString) * 100) + "%" End If cboCasasCorredoras.SelectedValue = dat(6).ToString cboPeriodicidad.SelectedValue = dat(7).ToString Base = Operaciones.ConvertirEntero(dat(8).ToString) cboBase.SelectedIndex = Base If (String.IsNullOrEmpty(dat(9).ToString)) Then txtPorcentajeComisionCasa.Text = Format(((txtPorcentajeComisionCasa.Text.Trim("%")) * 100), "0.00").ToString + "%" Else txtPorcentajeComisionCasa.Text = CStr(Operaciones.ConvertirDecimal(dat(9).ToString) * 100) + "%" End If If (String.IsNullOrEmpty(dat(10).ToString)) Then txtPorcentajeComisionBolsa.Text = Format((txtPorcentajeComisionBolsa.Text.Trim("%")) * 100, "0.00").ToString + "%" Else txtPorcentajeComisionBolsa.Text = CStr(Operaciones.ConvertirDecimal(dat(10).ToString) * 100) + "%" End If cboCasasCorredoras.SelectedValue = dat(12).ToString If (PBUR Or VCN) Then If (Not String.IsNullOrEmpty(dat(13).ToString)) Then chbValorPar.Checked = CBool(dat(13)) End If If (Not String.IsNullOrEmpty(dat(14).ToString)) Then dtpUltimaFecha.Value = Operaciones.ConvertirFecha(dat(14).ToString) End If ElseIf CET Then If (Not String.IsNullOrEmpty(dat(13).ToString)) Then dtpUltimaFecha.Value = Operaciones.ConvertirFecha(dat(13).ToString) End If End If If VCN Then txtOtrosCostos.Text = Operaciones.ConvertirDecimal(dat(15).ToString) End If End If End Sub Private Sub Modificar(ByVal Instrumento As String) Dim ValNom As Double = Operaciones.ConvertirDecimal(txtValorNominal.Text.ToString) Dim FOpe As Date = Operaciones.ConvertirFecha(dtpFechaOperacion.Value.ToString) Dim FLiq As Date = Operaciones.ConvertirFecha(dtpFechaLiquidacion.Value.ToString) Dim RendBruto As Double = Operaciones.ConvertirDecimal(txtRendimientoBruto.Text.ToString) / 100 Dim Plazo As Integer = Operaciones.ConvertirEntero(txtPlazoInversion.Text.ToString) Dim PorcentajeComisionCasa As Double = Operaciones.ConvertirDecimal(txtPorcentajeComisionCasa.Text.ToString) / 100 Dim PorcentajeComisionBolsa As Double = Operaciones.ConvertirDecimal(txtPorcentajeComisionBolsa.Text.ToString) / 100 Dim ValTrans As Double = Operaciones.ConvertirDecimal(txtValorTransado.Text.ToString) Dim Precio As Double = Operaciones.ConvertirDecimal(txtPrecio.Text.ToString.ToString) / 100 Dim TotPagar As Double = Operaciones.ConvertirDecimal(txtTotalAPagar.Text.ToString) Dim RendNeto As Double = Operaciones.ConvertirDecimal(txtRendimientoNeto.Text.ToString) / 100 Dim IngrBruto As Double = Operaciones.ConvertirDecimal(txtIngresoBruto.Text.ToString) Dim IngrNeto As Double = Operaciones.ConvertirDecimal(txtIngresoNeto.Text.ToString) Dim ComisionCasaValor As Double = Operaciones.ConvertirDecimal(txtComisionCasa.Text.ToString) Dim ComisionBolsaValor As Double = Operaciones.ConvertirDecimal(txtComisionBolsa.Text.ToString) Dim FUlt As Date = Operaciones.ConvertirFecha(dtpUltimaFecha.Value.ToString) Dim FRed As Date = Operaciones.ConvertirFecha(dtpRedencion.Value.ToString) Dim FVenc As Date = Operaciones.ConvertirFecha(dtpFechaVencimiento.Value.ToString) Dim IntAcumulado As Double = Operaciones.ConvertirDecimal(txtInteresAcumulado.Text.ToString.ToString) / 100 Dim OtrosCostos As Double = Operaciones.ConvertirDecimal(txtOtrosCostos.Text.ToString) Dim periodo As String = String.Empty If Not cboPeriodicidad.SelectedIndex = -1 Then periodo = cboPeriodicidad.SelectedValue End If Dim Casas As String = String.Empty If Not cboCasasCorredoras.SelectedIndex = -1 Then Casas = cboCasasCorredoras.SelectedValue End If Dim ValorPar As Boolean = chbValorPar.Checked Dim Base As Integer Dim FechaUltima As Date = dtpUltimaFecha.Value If (cboBase.SelectedIndex = 0) Then Base = 0 ElseIf (cboBase.SelectedIndex = 1) Then Base = 1 ElseIf (cboBase.SelectedIndex = 2) Then Base = 2 Else Base = 3 End If Dim coleccion As New Collection coleccion.Add(ValNom) coleccion.Add(FOpe) coleccion.Add(FLiq) coleccion.Add(RendBruto) coleccion.Add(Plazo) coleccion.Add(Variables.Codigo) coleccion.Add(PorcentajeComisionCasa) coleccion.Add(PorcentajeComisionBolsa) coleccion.Add(periodo) coleccion.Add(Base) coleccion.Add(Casas) If (PBUR Or VCN) Then coleccion.Add(ValorPar) coleccion.Add(FechaUltima) ElseIf CET Then coleccion.Add(FechaUltima) End If If VCN Then coleccion.Add(OtrosCostos) End If coleccion.Add(ValTrans) coleccion.Add(Precio) coleccion.Add(TotPagar) coleccion.Add(RendNeto) coleccion.Add(IngrBruto) coleccion.Add(IngrNeto) coleccion.Add(ComisionCasaValor) coleccion.Add(ComisionBolsaValor) coleccion.Add(FUlt) coleccion.Add(FRed) coleccion.Add(FVenc) If CET Or PBUR Or VCN Then coleccion.Add(IntAcumulado) End If Dim EmpaquetarTablaBaseDatos As New Dictionary(Of Integer, Collection) EmpaquetarTablaBaseDatos = CalculosTablaDiasFecha.EmpaquetarTablaBaseDatos(dgvIngresosVCN) oDAOLetes.ActualizarLETE(coleccion, Instrumento, EmpaquetarTablaBaseDatos) End Sub Public Function Nuevo(ByVal Instrumento As String) Dim ValNom As Double = Operaciones.ConvertirDecimal(txtValorNominal.Text.ToString) Dim FOpe As Date = Operaciones.ConvertirFecha(dtpFechaOperacion.Value.ToString) Dim FLiq As Date = Operaciones.ConvertirFecha(dtpFechaLiquidacion.Value.ToString) Dim RendBruto As Double = Operaciones.ConvertirDecimal(txtRendimientoBruto.Text.ToString) / 100 Dim Plazo As Integer = Operaciones.ConvertirEntero(txtPlazoInversion.Text.ToString) Dim PorcentajeComisionCasa As Double = Operaciones.ConvertirDecimal(txtPorcentajeComisionCasa.Text.ToString) / 100 Dim PorcentajeComisionBolsa As Double = Operaciones.ConvertirDecimal(txtPorcentajeComisionBolsa.Text.ToString) / 100 Dim ValTrans As Double = Operaciones.ConvertirDecimal(txtValorTransado.Text.ToString) Dim Precio As Double = Operaciones.ConvertirDecimal(txtPrecio.Text.ToString.ToString) / 100 Dim TotPagar As Double = Operaciones.ConvertirDecimal(txtTotalAPagar.Text.ToString) Dim RendNeto As Double = Operaciones.ConvertirDecimal(txtRendimientoNeto.Text.ToString) / 100 Dim IngrBruto As Double = Operaciones.ConvertirDecimal(txtIngresoBruto.Text.ToString) Dim IngrNeto As Double = Operaciones.ConvertirDecimal(txtIngresoNeto.Text.ToString) Dim ComisionCasaValor As Double = Operaciones.ConvertirDecimal(txtComisionCasa.Text.ToString) Dim ComisionBolsaValor As Double = Operaciones.ConvertirDecimal(txtComisionBolsa.Text.ToString) Dim FUlt As Date = Operaciones.ConvertirFecha(dtpUltimaFecha.Value.ToString) Dim FRed As Date = Operaciones.ConvertirFecha(dtpRedencion.Value.ToString) Dim FVenc As Date = Operaciones.ConvertirFecha(dtpFechaVencimiento.Value.ToString) Dim IntAcumulado As Double = Operaciones.ConvertirDecimal(txtInteresAcumulado.Text.ToString.ToString) / 100 Dim periodo As String = String.Empty If Not cboPeriodicidad.SelectedIndex = -1 Then periodo = cboPeriodicidad.SelectedValue End If Dim Casas As String = String.Empty If Not cboCasasCorredoras.SelectedIndex = -1 Then Casas = cboCasasCorredoras.SelectedValue End If Dim ValorPar As Boolean = chbValorPar.Checked Dim Base As Integer Dim FechaUltima As Date = dtpUltimaFecha.Value Dim OtrosCostos = txtOtrosCostos.Text If (cboBase.SelectedIndex = 0) Then Base = 0 ElseIf (cboBase.SelectedIndex = 1) Then Base = 1 ElseIf (cboBase.SelectedIndex = 2) Then Base = 2 Else Base = 3 End If Dim coleccion As New Collection coleccion.Add(ValNom) coleccion.Add(FOpe) coleccion.Add(FLiq) coleccion.Add(RendBruto) coleccion.Add(Plazo) coleccion.Add(Variables.Codigo) coleccion.Add(PorcentajeComisionCasa) coleccion.Add(PorcentajeComisionBolsa) coleccion.Add(periodo) coleccion.Add(Base) coleccion.Add(Casas) If (PBUR Or VCN) Then coleccion.Add(ValorPar) coleccion.Add(FechaUltima) ElseIf CET Then coleccion.Add(FechaUltima) End If If VCN Then coleccion.Add(OtrosCostos) End If coleccion.Add(ValTrans) coleccion.Add(Precio) coleccion.Add(TotPagar) coleccion.Add(RendNeto) coleccion.Add(IngrBruto) coleccion.Add(IngrNeto) coleccion.Add(ComisionCasaValor) coleccion.Add(ComisionBolsaValor) coleccion.Add(FUlt) coleccion.Add(FRed) coleccion.Add(FVenc) If CET Or PBUR Or VCN Then coleccion.Add(IntAcumulado) End If Return coleccion End Function Sub NuevoRegistro(ByVal Instrumento As String) Dim Coleccion As New Collection Coleccion = Nuevo(Instrumento) Dim EmpaquetarTablaBaseDatos As New Dictionary(Of Integer, Collection) EmpaquetarTablaBaseDatos = CalculosTablaDiasFecha.EmpaquetarTablaBaseDatos(dgvIngresosVCN) Dim Proceder As Boolean = True If VCN Then If EmpaquetarTablaBaseDatos.Count = 0 Then Proceder = False End If End If If Coleccion.Count > 0 And Proceder Then oDAOLetes.NuevoIngreso(Coleccion, Instrumento, EmpaquetarTablaBaseDatos) Coleccion.Clear() End If End Sub Private Sub Eliminar(ByVal Instrumento As String) oDAOLetes.Eliminar(Variables.Codigo, Instrumento) End Sub Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click If (TipoTransaccion = "M") Then Modificar(Instrumento) ValidarExistencia() ElseIf (TipoTransaccion = "N") Then NuevoRegistro(Instrumento) ValidarExistencia() ElseIf (TipoTransaccion = "B") Then Eliminar(Instrumento) ValidarExistencia() ElseIf Not ExisteValidacion() Then Variables.ColeccionLETE = Nuevo(Instrumento) If VCN Then Variables.EmpaquetarTablaBaseDatos = CalculosTablaDiasFecha.EmpaquetarTablaBaseDatos(dgvIngresosVCN) End If Close() End If End Sub Function RetornarObjeto() Return oCELetes End Function Sub CargarCasasCorredoras() If Me.cboCasasCorredoras.Items.Count = 0 Or Me.cboCasasCorredoras.Items.Count = 1 Then Me.cboCasasCorredoras.DataSource = oDAOGeneral.ListaCasasCorredoras.Tables("CasasCorredoras") Me.cboCasasCorredoras.DisplayMember = "Descripcion" Me.cboCasasCorredoras.ValueMember = "Codigo" Me.cboCasasCorredoras.SelectedIndex = 0 End If End Sub Sub CargarPeriodicidad() If cboPeriodicidad.Items.Count = 0 Or cboPeriodicidad.Items.Count = 1 Then Me.cboPeriodicidad.DataSource = oDAOGeneral.ListaPeriodicidad Me.cboPeriodicidad.DisplayMember = "Descripcion" Me.cboPeriodicidad.ValueMember = "Codigo" Me.cboPeriodicidad.SelectedIndex = 0 End If End Sub Sub CargarBase() If Me.cboBase.Items.Count = 0 Or Me.cboBase.Items.Count = 1 Then Me.cboBase.DataSource = oDAOGeneral.ListaBase Me.cboBase.DisplayMember = "Descripcion" Me.cboBase.ValueMember = "Codigo" Me.cboBase.SelectedIndex = 0 End If End Sub Private Sub CargarRegistroBD() Dim oCELetes As LETESCE CodigoInversion = Variables.Codigo If Not oCELetes Is Nothing Then Dim vValorNominal As Double = oCELetes.ValorNominal Dim vFechaOperacion As Date = oCELetes.FechaOperacion Dim vFechaLiquidacion As Date = oCELetes.FechaLiquidacion Dim vFechaVencimiento As Date = oCELetes.FechaVencimiento Dim vPlazoInversion As Integer = oCELetes.Plazo Dim vCodigoCasa As String = oCELetes.CodigoCasa Dim vPeriodicidad As String = oCELetes.Periodicidad Dim vRendimientoBruto As Double = oCELetes.RendimientoBruto Dim vRendimientoNeto As Double = oCELetes.RendimientoNeto Dim vIngresoBruto As Double = oCELetes.IngresoBruto Dim vIngresoNeto As Double = oCELetes.IngresoNeto Dim vValorTransado As Double = oCELetes.ValorNominal Dim vPrecio As Double = oCELetes.Precio Dim vTotalAPagar As Double = oCELetes.TotalaPagar vRendimientoBruto = vRendimientoBruto * 100 vRendimientoNeto = vRendimientoNeto * 100 vPrecio = vPrecio * 100 End If End Sub Public Sub CargarRegistro(vId As Integer, vTipo As String) Modo = "C" IdDocumento = vId TipoDocumento = vTipo End Sub Private Sub txtRendimientoBruto_MouseCaptureChanged(sender As Object, e As EventArgs) Handles txtRendimientoBruto.MouseCaptureChanged End Sub Function ValorTrasado() Return Operaciones.ConvertirDecimal(txtValorNominal.Text.ToString) * (Operaciones.ConvertirDecimal(V_txtPrecio.ToString) / 100) End Function Function Precio() Dim Rendimiento As Double = Operaciones.ConvertirDecimal(txtRendimientoBruto.Text.ToString) Dim Plazo As Integer = Operaciones.ConvertirDecimal(txtPlazoInversion.Text.ToString) Dim Pr = 0.0 If (IndexBase = 0) Then Pr = ((1 - ((Rendimiento / 100) / (1 + (Rendimiento / 100) * Plazo / 360)) * Plazo / 360)) * 100 Return Pr ElseIf (IndexBase = 1) Then Dim FechaInicial = dtpFechaLiquidacion.Value Dim FechaFinal = dtpFechaVencimiento.Value Dim PrOpc1 = 0.0, PrOpc2 = 0.0 Dim CambioDeFecha As Integer = Operaciones.CambioBase(FechaInicial, FechaFinal) Dim PrimeraFechaUltima = Operaciones.PrimeraFechaCambioBase(FechaInicial) Dim UltimaFechaPrimero = Operaciones.FinalFechaCambioBase(FechaFinal) Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 If (Not CambioDeFecha = 0) Then If CambioDeFecha = 1 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(UltimaFechaPrimero, FechaFinal, CambioDeFecha) PrOpc1 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasPrimeraFecha / 366)) * DiasPrimeraFecha / 366)) PrOpc2 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasSegundaFecha / 365)) * DiasSegundaFecha / 365)) ElseIf CambioDeFecha = 2 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(UltimaFechaPrimero, FechaFinal, CambioDeFecha) PrOpc1 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasPrimeraFecha / 365)) * DiasPrimeraFecha / 365)) PrOpc2 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasSegundaFecha / 366)) * DiasSegundaFecha / 366)) End If Pr = (1 - (PrOpc1 + PrOpc2)) * 100 Else If (Operaciones.AñoBisiesto(FechaInicial) = 364) Then Pr = ((1 - ((Rendimiento / 100) / (1 + (Rendimiento / 100) * Plazo / 365)) * Plazo / 365)) * 100 End If If (Operaciones.AñoBisiesto(FechaInicial) = 365) Then Pr = ((1 - ((Rendimiento / 100) / (1 + (Rendimiento / 100) * Plazo / 366)) * Plazo / 366)) * 100 End If End If Return Pr ElseIf (IndexBase = 2) Then '''''''''''''''''' Dim FechaInicial = dtpFechaLiquidacion.Value Dim FechaFinal = dtpFechaVencimiento.Value Dim PrOpc1 = 0.0, PrOpc2 = 0.0 Dim CambioDeFecha As Integer = Operaciones.CambioBase(FechaInicial, FechaFinal) Dim PrimeraFechaUltima = Operaciones.PrimeraFechaCambioBase360(FechaInicial) Dim UltimaFechaPrimero = Operaciones.FinalFechaCambioBase360(FechaFinal) Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 If (Not CambioDeFecha = 0) Then If CambioDeFecha = 1 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(UltimaFechaPrimero, FechaFinal, CambioDeFecha) PrOpc1 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasPrimeraFecha / 366)) * DiasPrimeraFecha / 366)) PrOpc2 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasSegundaFecha / 365)) * DiasSegundaFecha / 365)) ElseIf CambioDeFecha = 2 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(UltimaFechaPrimero, FechaFinal, CambioDeFecha) PrOpc1 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasPrimeraFecha / 365)) * DiasPrimeraFecha / 365)) PrOpc2 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasSegundaFecha / 366)) * DiasSegundaFecha / 366)) End If Pr = (1 - (PrOpc1 + PrOpc2)) * 100 Else If (Operaciones.AñoBisiesto(FechaInicial) = 364) Then Pr = ((1 - ((Rendimiento / 100) / (1 + (Rendimiento / 100) * Plazo / 365)) * Plazo / 365)) * 100 End If If (Operaciones.AñoBisiesto(FechaInicial) = 365) Then Pr = ((1 - ((Rendimiento / 100) / (1 + (Rendimiento / 100) * Plazo / 366)) * Plazo / 366)) * 100 End If End If Return Pr Else Dim FechaInicial = dtpFechaLiquidacion.Value Dim FechaFinal = dtpFechaVencimiento.Value Dim PrOpc1 = 0.0, PrOpc2 = 0.0 Dim CambioDeFecha As Integer = Operaciones.CambioBase(FechaInicial, FechaFinal) Dim PrimeraFechaUltima = Operaciones.PrimeraFechaCambioBase(FechaInicial) Dim UltimaFechaPrimero = Operaciones.FinalFechaCambioBase(FechaFinal) Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 If (Not CambioDeFecha = 0) Then If CambioDeFecha = 1 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(UltimaFechaPrimero, FechaFinal, CambioDeFecha) PrOpc1 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasPrimeraFecha / 360)) * DiasPrimeraFecha / 360)) PrOpc2 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasSegundaFecha / 360)) * DiasSegundaFecha / 360)) ElseIf CambioDeFecha = 2 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(UltimaFechaPrimero, FechaFinal, CambioDeFecha) PrOpc1 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasPrimeraFecha / 360)) * DiasPrimeraFecha / 360)) PrOpc2 = ((((Rendimiento / 100) / (1 + (Rendimiento / 100) * DiasSegundaFecha / 360)) * DiasSegundaFecha / 360)) End If Pr = (1 - (PrOpc1 + PrOpc2)) * 100 Else Pr = ((1 - ((Rendimiento / 100) / (1 + (Rendimiento / 100) * Plazo / 360)) * Plazo / 360)) * 100 End If Return Pr End If Return 0 End Function Function ComisionCasa() Dim ValorTras As Double = ValorTrasado() Dim ComisionDeCasa As Double = Operaciones.ConvertirDecimal(txtPorcentajeComisionCasa.Text.ToString) Dim PlazoInversion As Integer = Operaciones.ConvertirEntero(txtPlazoInversion.Text.ToString) Dim Comision = 0.0 If (IndexBase = 0) Then Comision = (ValorTras * ComisionDeCasa / 100) * (PlazoInversion / 360) Return Comision ElseIf IndexBase = 1 Then Dim FechaInicial = dtpFechaLiquidacion.Value Dim FechaFinal = dtpFechaVencimiento.Value Dim ComisionOpc1 = 0.0, ComisionOpc2 = 0.0 Dim CambioDeFecha As Integer = Operaciones.CambioBase(FechaInicial, FechaFinal) Dim PrimeraFechaUltima = Operaciones.PrimeraFechaCambioBase(FechaInicial) Dim UltimaFechaPrimero = Operaciones.FinalFechaCambioBase(FechaFinal) Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 If (Not CambioDeFecha = 0) Then If CambioDeFecha = 1 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(UltimaFechaPrimero, FechaFinal, CambioDeFecha) ComisionOpc1 = (ValorTras * ComisionDeCasa / 100) * (DiasPrimeraFecha / 366) ComisionOpc2 = (ValorTras * ComisionDeCasa / 100) * (DiasSegundaFecha / 365) ElseIf CambioDeFecha = 2 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(UltimaFechaPrimero, FechaFinal, CambioDeFecha) ComisionOpc1 = (ValorTras * ComisionDeCasa / 100) * (DiasPrimeraFecha / 365) ComisionOpc2 = (ValorTras * ComisionDeCasa / 100) * (DiasSegundaFecha / 366) End If Comision = ComisionOpc1 + ComisionOpc2 Else If (Operaciones.AñoBisiesto(FechaInicial) = 364) Then Comision = (ValorTras * ComisionDeCasa / 100) * (PlazoInversion / 365) End If If (Operaciones.AñoBisiesto(FechaInicial) = 365) Then Comision = (ValorTras * ComisionDeCasa / 100) * (PlazoInversion / 366) End If End If Return Comision ElseIf IndexBase = 2 Then Dim FechaInicial = dtpFechaLiquidacion.Value Dim FechaFinal = dtpFechaVencimiento.Value Dim ComisionOpc1 = 0.0, ComisionOpc2 = 0.0 Dim CambioDeFecha As Integer = Operaciones.CambioBase(FechaInicial, FechaFinal) Dim PrimeraFechaUltima = Operaciones.PrimeraFechaCambioBase360(FechaInicial) Dim UltimaFechaPrimero = Operaciones.FinalFechaCambioBase360(FechaFinal) Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 If (Not CambioDeFecha = 0) Then If CambioDeFecha = 1 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(UltimaFechaPrimero, FechaFinal, CambioDeFecha) ComisionOpc1 = (ValorTras * ComisionDeCasa / 100) * (DiasPrimeraFecha / 366) ComisionOpc2 = (ValorTras * ComisionDeCasa / 100) * (DiasSegundaFecha / 365) ElseIf CambioDeFecha = 2 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(UltimaFechaPrimero, FechaFinal, CambioDeFecha) ComisionOpc1 = (ValorTras * ComisionDeCasa / 100) * (DiasPrimeraFecha / 365) ComisionOpc2 = (ValorTras * ComisionDeCasa / 100) * (DiasSegundaFecha / 366) End If Comision = ComisionOpc1 + ComisionOpc2 Else If (Operaciones.AñoBisiesto(FechaInicial) = 364) Then Comision = (ValorTras * ComisionDeCasa / 100) * (PlazoInversion / 365) End If If (Operaciones.AñoBisiesto(FechaInicial) = 365) Then Comision = (ValorTras * ComisionDeCasa / 100) * (PlazoInversion / 366) End If End If Return Comision Else Comision = (ValorTras * ComisionDeCasa / 100) * (PlazoInversion / 360) Return Comision End If Return 0 End Function Function ComisionBolsa() Dim ValorTras As Double = ValorTrasado() Dim ComisionDeBolsa As Double = Operaciones.ConvertirDecimal(txtPorcentajeComisionBolsa.Text.ToString) Dim PlazoInversion As Integer = Operaciones.ConvertirEntero(txtPlazoInversion.Text.ToString) Dim Comision As Double = 0.0 If (IndexBase = 0) Then Comision = (ValorTras * ComisionDeBolsa / 100) * (PlazoInversion / 360) Return Comision ElseIf IndexBase = 1 Then Dim FechaInicial = dtpFechaLiquidacion.Value Dim FechaFinal = dtpFechaVencimiento.Value Dim ComisionOpc1 = 0.0, ComisionOpc2 = 0.0 Dim CambioDeFecha As Integer = Operaciones.CambioBase(FechaInicial, FechaFinal) Dim PrimeraFechaUltima = Operaciones.PrimeraFechaCambioBase(FechaInicial) Dim UltimaFechaPrimero = Operaciones.FinalFechaCambioBase(FechaFinal) Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 If (Not CambioDeFecha = 0) Then If CambioDeFecha = 1 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(UltimaFechaPrimero, FechaFinal, CambioDeFecha) ComisionOpc1 = (ValorTras * ComisionDeBolsa / 100) * (DiasPrimeraFecha / 366) ComisionOpc2 = (ValorTras * ComisionDeBolsa / 100) * (DiasSegundaFecha / 365) ElseIf CambioDeFecha = 2 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(UltimaFechaPrimero, FechaFinal, CambioDeFecha) ComisionOpc1 = (ValorTras * ComisionDeBolsa / 100) * (DiasPrimeraFecha / 365) ComisionOpc2 = (ValorTras * ComisionDeBolsa / 100) * (DiasSegundaFecha / 366) End If Comision = ComisionOpc1 + ComisionOpc2 Else If (Operaciones.AñoBisiesto(FechaInicial) = 364) Then Comision = (ValorTras * ComisionDeBolsa / 100) * (PlazoInversion / 365) End If If (Operaciones.AñoBisiesto(FechaInicial) = 365) Then Comision = (ValorTras * ComisionDeBolsa / 100) * (PlazoInversion / 366) End If End If Return Comision ElseIf IndexBase = 2 Then Dim FechaInicial = dtpFechaLiquidacion.Value Dim FechaFinal = dtpFechaVencimiento.Value Dim ComisionOpc1 = 0.0, ComisionOpc2 = 0.0 Dim CambioDeFecha As Integer = Operaciones.CambioBase(FechaInicial, FechaFinal) Dim PrimeraFechaUltima = Operaciones.PrimeraFechaCambioBase360(FechaInicial) Dim UltimaFechaPrimero = Operaciones.FinalFechaCambioBase360(FechaFinal) Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 If (Not CambioDeFecha = 0) Then If CambioDeFecha = 1 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(UltimaFechaPrimero, FechaFinal, CambioDeFecha) ComisionOpc1 = (ValorTras * ComisionDeBolsa / 100) * (DiasPrimeraFecha / 366) ComisionOpc2 = (ValorTras * ComisionDeBolsa / 100) * (DiasSegundaFecha / 365) ElseIf CambioDeFecha = 2 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(UltimaFechaPrimero, FechaFinal, CambioDeFecha) ComisionOpc1 = (ValorTras * ComisionDeBolsa / 100) * (DiasPrimeraFecha / 365) ComisionOpc2 = (ValorTras * ComisionDeBolsa / 100) * (DiasSegundaFecha / 366) End If Comision = ComisionOpc1 + ComisionOpc2 Else If (Operaciones.AñoBisiesto(FechaInicial) = 364) Then Comision = (ValorTras * ComisionDeBolsa / 100) * (PlazoInversion / 365) End If If (Operaciones.AñoBisiesto(FechaInicial) = 365) Then Comision = (ValorTras * ComisionDeBolsa / 100) * (PlazoInversion / 366) End If End If Return Comision Else Comision = (ValorTras * ComisionDeBolsa / 100) * (PlazoInversion / 360) Return Comision End If Return 0 End Function Function RendimientoNeto() Dim ValorNominal As Double = Operaciones.ConvertirDecimal(txtValorNominal.Text.ToString) Dim TotalPagar As Double = Operaciones.ConvertirDecimal(V_txtTotalAPagar.ToString) Dim PlazoInversion As Integer = Operaciones.ConvertirEntero(txtPlazoInversion.Text.ToString) Dim RendBruto As Double = 0 Dim ComisionCasa As Double = 0 Dim ComisionBolsa As Double = 0 If Not String.IsNullOrEmpty(txtRendimientoBruto.Text.ToString.Trim("%")) Then RendBruto = txtRendimientoBruto.Text.ToString.Trim("%") End If If Not String.IsNullOrEmpty(txtPorcentajeComisionCasa.Text.ToString.Trim("%")) Then ComisionCasa = txtPorcentajeComisionCasa.Text.ToString.Trim("%") End If If Not String.IsNullOrEmpty(txtPorcentajeComisionBolsa.Text.ToString.Trim("%")) Then ComisionBolsa = txtPorcentajeComisionBolsa.Text.ToString.Trim("%") End If If (CDec(TotalPagar) = 0 Or CDec(PlazoInversion) = 0) Then Return 0 End If If (Double.TryParse(RendBruto, Nothing) And Double.TryParse(RendBruto, Nothing) And Double.TryParse(CDec(ValorNominal), Nothing) And Double.TryParse(CDec(TotalPagar), Nothing) And Double.TryParse(CDec(PlazoInversion), Nothing)) Then Dim RendimientoNet As Double = 0 If ((chbValorPar.Checked And (VCN Or PBUR))) Then RendimientoNet = (RendBruto - ComisionCasa - ComisionBolsa) * 0.9 Return RendimientoNet ElseIf CET Then RendimientoNet = (RendBruto - ComisionCasa - ComisionBolsa) Return RendimientoNet Else If (IndexBase = 0) Then RendimientoNet = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (360 / CDec(PlazoInversion))) * 100) Return RendimientoNet ElseIf IndexBase = 1 Then Dim FechaInicial = dtpFechaLiquidacion.Value Dim FechaFinal = dtpFechaVencimiento.Value Dim RendimientoNetOpc1 = 0.0, RendimientoNetOpc2 = 0.0 Dim CambioDeFecha As Integer = Operaciones.CambioBase(FechaInicial, FechaFinal) Dim PrimeraFechaUltima = Operaciones.PrimeraFechaCambioBase(FechaInicial) Dim UltimaFechaPrimero = Operaciones.FinalFechaCambioBase(FechaFinal) Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 If (Not CambioDeFecha = 0) Then If CambioDeFecha = 1 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(UltimaFechaPrimero, FechaFinal, CambioDeFecha) RendimientoNetOpc1 = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (366 / CDec(DiasPrimeraFecha))) * 100) RendimientoNetOpc2 = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (365 / CDec(DiasSegundaFecha))) * 100) ElseIf CambioDeFecha = 2 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha365(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha366(UltimaFechaPrimero, FechaFinal, CambioDeFecha) RendimientoNetOpc1 = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (365 / CDec(DiasPrimeraFecha))) * 100) RendimientoNetOpc2 = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (366 / CDec(DiasSegundaFecha))) * 100) End If RendimientoNet = RendimientoNetOpc1 + RendimientoNetOpc2 Else If (Operaciones.AñoBisiesto(FechaInicial) = 364) Then RendimientoNet = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (365 / CDec(PlazoInversion))) * 100) End If If (Operaciones.AñoBisiesto(FechaInicial) = 365) Then RendimientoNet = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (366 / CDec(PlazoInversion))) * 100) End If End If Return RendimientoNet ElseIf IndexBase = 2 Then Dim FechaInicial = dtpFechaLiquidacion.Value Dim FechaFinal = dtpFechaVencimiento.Value Dim RendimientoNetOpc1 = 0.0, RendimientoNetOpc2 = 0.0 Dim CambioDeFecha As Integer = Operaciones.CambioBase(FechaInicial, FechaFinal) Dim PrimeraFechaUltima = Operaciones.PrimeraFechaCambioBase360(FechaInicial) Dim UltimaFechaPrimero = Operaciones.FinalFechaCambioBase360(FechaFinal) Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 If (Not CambioDeFecha = 0) Then If CambioDeFecha = 1 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(UltimaFechaPrimero, FechaFinal, CambioDeFecha) RendimientoNetOpc1 = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (366 / CDec(DiasPrimeraFecha))) * 100) RendimientoNetOpc2 = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (365 / CDec(DiasSegundaFecha))) * 100) ElseIf CambioDeFecha = 2 Then DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(FechaInicial, PrimeraFechaUltima, CambioDeFecha) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(UltimaFechaPrimero, FechaFinal, CambioDeFecha) RendimientoNetOpc1 = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (365 / CDec(DiasPrimeraFecha))) * 100) RendimientoNetOpc2 = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (366 / CDec(DiasSegundaFecha))) * 100) End If RendimientoNet = RendimientoNetOpc1 + RendimientoNetOpc2 Else If (Operaciones.AñoBisiesto(FechaInicial) = 364) Then RendimientoNet = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (365 / CDec(PlazoInversion))) * 100) End If If (Operaciones.AñoBisiesto(FechaInicial) = 365) Then RendimientoNet = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (366 / CDec(PlazoInversion))) * 100) End If End If Return RendimientoNet Else RendimientoNet = ((((CDec(ValorNominal) - CDec(TotalPagar)) / CDec(TotalPagar)) * (360 / CDec(PlazoInversion))) * 100) Return RendimientoNet End If End If End If Return 0 End Function Function IngresoBruto() Dim ValorNominal As Double = 0 Dim ValorTrasado As Double = 0 ValorNominal = Operaciones.ConvertirDecimal(txtValorNominal.Text.ToString) ValorTrasado = Operaciones.ConvertirDecimal(V_txtValorTransado.ToString) Dim TasaPeriodo = Operaciones.ConvertirDecimal(txtRendimientoBruto.Text.ToString) TasaPeriodo = Operaciones.ConvertirDecimal(txtRendimientoBruto.Text.ToString) / 100 Dim Base As Integer = 365 Dim Bruto As Double = 0 Dim Plazo As Integer = 0 Plazo = Operaciones.ConvertirEntero(txtPlazoInversion.Text.ToString) If (chbValorPar.Checked Or CET) Then Dim PlazoDias As Integer = 0 Dim Fecha1 = dtpFechaLiquidacion.Value Dim Fecha2 = dtpFechaVencimiento.Value IndexBase = cboBase.SelectedIndex Dim Valor As Double = 0 If (IndexBase = 0) Then Valor = CDec(ValorNominal * TasaPeriodo * Plazo) / 360 Return Valor ElseIf (IndexBase = 1) Then Dim PrOpc1 = 0.0, PrOpc2 = 0.0 Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2) If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then PrOpc1 = CDec(ValorNominal * TasaPeriodo * DiasPrimeraFecha) / 366 PrOpc2 = CDec(ValorNominal * TasaPeriodo * DiasSegundaFecha) / 365 Valor = PrOpc1 + PrOpc2 ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then Valor = CDec(ValorNominal * TasaPeriodo * DiasSegundaFecha) / 365 ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then Valor = CDec(ValorNominal * TasaPeriodo * DiasPrimeraFecha) / 366 Else Valor = 0 End If Return Valor ElseIf (IndexBase = 2) Then Dim PrOpc1 = 0.0, PrOpc2 = 0.0 Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360Bi(Fecha1, Fecha2) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(Fecha1, Fecha2) If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then PrOpc1 = CDec(ValorNominal * TasaPeriodo * DiasPrimeraFecha) / 366 PrOpc2 = CDec(ValorNominal * TasaPeriodo * DiasSegundaFecha) / 365 Valor = PrOpc1 + PrOpc2 ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then Valor = CDec(ValorNominal * TasaPeriodo * DiasSegundaFecha) / 365 ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then Valor = CDec(ValorNominal * TasaPeriodo * DiasPrimeraFecha) / 366 Else Valor = 0 End If Return Valor Else Dim PrOpc1 = 0.0, PrOpc2 = 0.0 Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0 DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2) DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2) If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then PrOpc1 = CDec(ValorNominal * TasaPeriodo * DiasPrimeraFecha) / 360 PrOpc2 = CDec(ValorNominal * TasaPeriodo * DiasSegundaFecha) / 360 Valor = PrOpc1 + PrOpc2 ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then Valor = CDec(ValorNominal * TasaPeriodo * DiasSegundaFecha) / 360 ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then Valor = CDec(ValorNominal * TasaPeriodo * DiasPrimeraFecha) / 360 Else Valor = 0 End If Return Valor End If Else If (Double.TryParse(ValorNominal, Nothing) And Double.TryParse(ValorTrasado, Nothing)) Then Bruto = CDec(ValorNominal) - CDec(ValorTrasado) Return Bruto End If End If Return 0 End Function Function IngresoNeto() Dim ValorNominal As Double = Operaciones.ConvertirDecimal(txtValorNominal.Text.ToString) Dim TotalPagar As Double = Operaciones.ConvertirDecimal(V_txtTotalAPagar.ToString) Dim Neto As Double = 0 If chbValorPar.Checked Or CET Then Dim IngBruto = Operaciones.ConvertirDecimal(txtIngresoBruto.Text.ToString) Dim Descuentos = (Operaciones.ConvertirDecimal(txtComisionBolsa.Text.ToString) + Operaciones.ConvertirDecimal(txtComisionCasa.Text.ToString)) Neto = (IngBruto * 0.9) - Descuentos Return Neto End If If (Double.TryParse(ValorNominal, Nothing) And Double.TryParse(TotalPagar, Nothing)) Then Neto = CDec(ValorNominal) - CDec(TotalPagar) Return Neto End If Return 0 End Function Function TotalPagar() Dim ValorTrasado As Double = Operaciones.ConvertirDecimal(V_txtValorTransado.ToString) Dim ComisionCasa As Double = Operaciones.ConvertirDecimal(V_txtComisionCasa.ToString) Dim ComisionBolsa As Double = Operaciones.ConvertirDecimal(V_txtComisionBolsa.ToString) Dim OtrCost As Double = Operaciones.ConvertirDecimal(txtOtrosCostos.Text.ToString) txtInteresAcumulado.Text = Operaciones.ConvertirDecimal(txtInteresAcumulado.Text.ToString) Dim InteresAcumulado = Operaciones.ConvertirDecimal(txtInteresAcumulado.Text.ToString) If (PBUR Or CET) Then If (Double.TryParse(ValorTrasado, Nothing) And Double.TryParse(ComisionCasa, Nothing) And Double.TryParse(ComisionBolsa, Nothing)) Then Dim Total = CDec(ValorTrasado) + CDec(ComisionCasa) + CDec(ComisionBolsa) + InteresAcumulado Return Total End If ElseIf VCN Then If (Double.TryParse(ValorTrasado, Nothing) And Double.TryParse(ComisionCasa, Nothing) And Double.TryParse(ComisionBolsa, Nothing)) Then Dim Total = CDec(ValorTrasado) + CDec(ComisionCasa) + CDec(ComisionBolsa) + InteresAcumulado + OtrCost Return Total End If Else If (Double.TryParse(ValorTrasado, Nothing) And Double.TryParse(ComisionCasa, Nothing) And Double.TryParse(ComisionBolsa, Nothing)) Then Dim Total = CDec(ValorTrasado) + CDec(ComisionCasa) + CDec(ComisionBolsa) Return Total End If End If Return 0 End Function Sub Rellenar() If (String.IsNullOrEmpty(txtOtrosCostos.Text.ToString)) Then txtOtrosCostos.Text = "0.0" End If If (String.IsNullOrEmpty(txtPlazoInversion.Text.ToString)) Then txtPlazoInversion.Text = "0.0" End If If (String.IsNullOrEmpty(txtValorNominal.Text.ToString.Trim("%"))) Then txtValorNominal.Text = 0 txtValorNominal.Text = Format(txtValorNominal.Text, "0.0") End If If (String.IsNullOrEmpty(txtPorcentajeComisionCasa.Text.ToString.Trim("%"))) Then txtPorcentajeComisionCasa.Text = 0 txtPorcentajeComisionCasa.Text = Format(txtPorcentajeComisionCasa.Text, "0.0") End If If (String.IsNullOrEmpty(txtPorcentajeComisionBolsa.Text.ToString.Trim("%"))) Then txtPorcentajeComisionBolsa.Text = 0 txtPorcentajeComisionBolsa.Text = Format(txtPorcentajeComisionBolsa.Text, "0.0") End If If (String.IsNullOrEmpty(txtRendimientoBruto.Text.ToString.Trim("%"))) Then txtRendimientoBruto.Text = 0 txtRendimientoBruto.Text = Format(txtRendimientoBruto.Text, "0.0") End If If (String.IsNullOrEmpty(txtInteresAcumulado.Text.ToString.Trim("%"))) Then txtInteresAcumulado.Text = "0.0%" End If If (txtPorcentajeComisionCasa.Text.ToString.IndexOf("%") = -1) Then txtPorcentajeComisionCasa.Text += "%" End If If (txtPorcentajeComisionBolsa.ToString.IndexOf("%") = -1) Then txtPorcentajeComisionBolsa.Text += "%" End If If (txtRendimientoBruto.ToString.IndexOf("%") = -1) Then txtRendimientoBruto.Text += "%" End If End Sub Sub RellenarDatos() If (cboBase.SelectedIndex = 0) Then IndexBase = 0 ElseIf (cboBase.SelectedIndex = 1) Then IndexBase = 1 ElseIf (cboBase.SelectedIndex = 2) Then IndexBase = 2 ElseIf (cboBase.SelectedIndex = 3) Then IndexBase = 3 End If Dim FechaOperacion = Date.Now.Date, FechaLiquidacion = Date.Now.Date AgregarDias() If (CET) Then V_txtPrecio = "100" Else If (chbValorPar.Checked) Then V_txtPrecio = "100" txtPrecio.Text = "100%" Else txtPrecio.Text = Format(Precio(), "0.0000") V_txtPrecio = Format(Precio(), "0.000000000") End If End If txtValorTransado.Text = Format(ValorTrasado(), "0.0000") V_txtValorTransado = Format(ValorTrasado(), "0.000000000") txtComisionCasa.Text = Format(ComisionCasa(), "0.0000") V_txtComisionCasa = Format(ComisionCasa(), "0.000000000") txtComisionBolsa.Text = Format(ComisionBolsa(), "0.0000") V_txtComisionBolsa = Format(ComisionBolsa(), "0.000000000") txtIngresoBruto.Text = Format(IngresoBruto(), "0.0000") V_txtIngresoBruto = Format(IngresoBruto(), "0.000000000") FechaOperacion = dtpFechaOperacion.Value FechaLiquidacion = dtpFechaLiquidacion.Value 'txtDiasAcumulados.Text = Operaciones.DiasAcumulados(FechaOperacion, FechaLiquidacion, 1).ToString() Dim Dias = 0 Dim Fecha As String = Format(dtpUltimaFecha.Value, "yyyy/MM/dd") dtpUltimaFecha.Value = Fecha Dim FechaLiq As String = Format(dtpFechaLiquidacion.Value, "yyyy/MM/dd") dtpFechaLiquidacion.Value = FechaLiq If (IndexBase = 0 Or IndexBase = 2) Then Dias = Operaciones.Base360(dtpUltimaFecha.Value, dtpFechaLiquidacion.Value) ElseIf IndexBase = 1 Or IndexBase = 3 Then Dias = Operaciones.Base365(dtpUltimaFecha.Value, dtpFechaLiquidacion.Value) End If V_txtDiasAcumulados = Dias Dim ValorNominal, RendBruto ValorNominal = txtValorNominal.Text If String.IsNullOrEmpty(ValorNominal.ToString) Then ValorNominal = 0 End If RendBruto = txtRendimientoBruto.Text If String.IsNullOrEmpty(RendBruto.ToString.Trim("%")) Then RendBruto = 0 Else RendBruto = txtRendimientoBruto.Text.TrimEnd("%") / 100 End If txtInteresAcumulado.Text = Format(CDec(Operaciones.InteresAcumuladoPBUR(ValorNominal, RendBruto, V_txtDiasAcumulados, IndexBase, dtpUltimaFecha.Value, dtpFechaLiquidacion.Value)), "0.0000").ToString + "%" txtTotalAPagar.Text = Format(TotalPagar(), "0.0000") V_txtTotalAPagar = Format(TotalPagar(), "0.000000000") txtIngresoNeto.Text = Format(IngresoNeto(), "0.0000") V_txtIngresoNeto = Format(IngresoNeto(), "0.000000000") txtRendimientoNeto.Text = Format(RendimientoNeto(), "0.0000") V_txtRendimientoNeto = Format(RendimientoNeto(), "0.000000000") AgregarPorcentaje() If VCN And CargaCompletaInstrumento Then CalculosIngresosVCN("Global") End If End Sub Private Sub Button1_Click_1(sender As Object, e As EventArgs) End Sub Sub AgregarDias() Dim Dias As Integer = 0 If Not String.IsNullOrEmpty(txtPlazoInversion.Text) Then Dias = txtPlazoInversion.Text End If Dim Fechaliquidacion = Operaciones.ConvertirFecha(dtpFechaLiquidacion.Value.ToString) Dim FechaVencimiento = Operaciones.ConvertirFecha(dtpFechaVencimiento.Value.ToString) If (IndexBase = 0 Or IndexBase = 2) Then If VCN And CargaCompletaInstrumento Then txtPlazoInversion.Text = Operaciones.Base360(Fechaliquidacion, FechaVencimiento) Else dtpFechaVencimiento.Value = Operaciones.FechaDias360(Fechaliquidacion, Dias) End If ElseIf IndexBase = 1 Or IndexBase = 3 Then If VCN And CargaCompletaInstrumento Then txtPlazoInversion.Text = Operaciones.Base365(Fechaliquidacion, FechaVencimiento) Else dtpFechaVencimiento.Value = dtpFechaLiquidacion.Value.AddDays(Dias) End If End If End Sub Sub AgregarPorcentaje() If (txtRendimientoBruto.ToString.IndexOf("%") = -1) Then txtRendimientoBruto.Text += "%" End If If (txtPorcentajeComisionCasa.Text.ToString.IndexOf("%") = -1) Then txtPorcentajeComisionCasa.Text += "%" End If If (txtPorcentajeComisionBolsa.ToString.IndexOf("%") = -1) Then txtPorcentajeComisionBolsa.Text += "%" End If If (txtRendimientoNeto.ToString.IndexOf("%") = -1) Then txtRendimientoNeto.Text += "%" End If If (txtPrecio.ToString.IndexOf("%") = -1) Then txtPrecio.Text += "%" End If End Sub Private Sub txtRendimientoBruto_Leave(sender As Object, e As EventArgs) Handles txtRendimientoBruto.Leave Rellenar() End Sub Private Sub navModificar_Click(sender As Object, e As EventArgs) Handles navModificar.Click TipoTransaccion = "M" btnAceptar.Text = "Modificar" End Sub Private Sub txtValorNominal_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtValorNominal.KeyPress If String.IsNullOrEmpty(txtValorNominal.Text) Then If e.KeyChar = "." Then txtValorNominal.Text = "0" Exit Sub End If End If If (Not txtValorNominal.Text.ToString.IndexOf(".") = -1 And e.KeyChar = ".") Then Operaciones.ValidarEntrada(sender, e, True) Else Operaciones.ValidarEntrada(sender, e, False) End If End Sub Private Sub txtPlazoInversion_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtPlazoInversion.KeyPress If String.IsNullOrEmpty(txtPlazoInversion.Text) Then If e.KeyChar = "." Then txtPlazoInversion.Text = "0" Exit Sub End If End If If (Not txtPlazoInversion.Text.ToString.IndexOf(".") = -1 And e.KeyChar = ".") Then Operaciones.ValidarEntrada(sender, e, True) Else Operaciones.ValidarEntrada(sender, e, False) End If End Sub Private Sub txtPorcentajeComisionCasa_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtPorcentajeComisionCasa.KeyPress If String.IsNullOrEmpty(txtPorcentajeComisionCasa.Text) Then If e.KeyChar = "." Then txtPorcentajeComisionCasa.Text = "0" Exit Sub End If End If If (Not txtPorcentajeComisionCasa.Text.ToString.IndexOf(".") = -1 And e.KeyChar = ".") Then Operaciones.ValidarEntrada(sender, e, True) Else Operaciones.ValidarEntrada(sender, e, False) End If End Sub Private Sub txtPorcentajeComisionBolsa_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtPorcentajeComisionBolsa.KeyPress If String.IsNullOrEmpty(txtPorcentajeComisionBolsa.Text) Then If e.KeyChar = "." Then txtPorcentajeComisionBolsa.Text = "0" Exit Sub End If End If If (Not txtPorcentajeComisionBolsa.Text.ToString.IndexOf(".") = -1 And e.KeyChar = ".") Then Operaciones.ValidarEntrada(sender, e, True) Else Operaciones.ValidarEntrada(sender, e, False) End If End Sub Private Sub txtRendimientoBruto_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtRendimientoBruto.KeyPress If String.IsNullOrEmpty(txtRendimientoBruto.Text) Then If e.KeyChar = "." Then txtRendimientoBruto.Text = "0" Exit Sub End If End If If (Not txtRendimientoBruto.Text.ToString.IndexOf(".") = -1 And e.KeyChar = ".") Then Operaciones.ValidarEntrada(sender, e, True) Else Operaciones.ValidarEntrada(sender, e, False) End If End Sub Private Sub navNuevo_Click(sender As Object, e As EventArgs) Handles navNuevo.Click TipoTransaccion = "N" btnAceptar.Text = "Agregar" End Sub Private Sub chbValorPar_CheckedChanged(sender As Object, e As EventArgs) Handles chbValorPar.CheckedChanged RellenarDatos() End Sub Private Sub txtRendimientoNeto_TextChanged(sender As Object, e As EventArgs) Handles txtRendimientoNeto.TextChanged End Sub Private Sub txtInteresAcumulado_TextChanged(sender As Object, e As EventArgs) Handles txtInteresAcumulado.TextChanged End Sub Private Sub txtIngresoBruto_TextChanged(sender As Object, e As EventArgs) Handles txtIngresoBruto.TextChanged End Sub Private Sub dtpUltimaFecha_ValueChanged(sender As Object, e As EventArgs) RellenarDatos() End Sub Private Sub Label14_Click(sender As Object, e As EventArgs) Handles Label14.Click End Sub Private Sub cboPeriodicidad_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboPeriodicidad.SelectedIndexChanged RellenarDatos() End Sub Private Sub cboCasasCorredoras_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboCasasCorredoras.SelectedIndexChanged RellenarDatos() End Sub Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click End Sub Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click End Sub Private Sub Label4_Click(sender As Object, e As EventArgs) Handles Label4.Click End Sub Private Sub Label3_Click(sender As Object, e As EventArgs) Handles Label3.Click End Sub Private Sub Label10_Click(sender As Object, e As EventArgs) Handles Label10.Click End Sub Private Sub Label5_Click(sender As Object, e As EventArgs) Handles Label5.Click End Sub Private Sub Label11_Click(sender As Object, e As EventArgs) Handles Label11.Click End Sub Private Sub txtIngresoNeto_TextChanged(sender As Object, e As EventArgs) Handles txtIngresoNeto.TextChanged End Sub Private Sub Label12_Click(sender As Object, e As EventArgs) Handles Label12.Click End Sub Private Sub Label13_Click(sender As Object, e As EventArgs) Handles Label13.Click End Sub Private Sub Label15_Click(sender As Object, e As EventArgs) Handles Label15.Click End Sub Private Sub Label16_Click(sender As Object, e As EventArgs) Handles Label16.Click End Sub Private Sub Label17_Click(sender As Object, e As EventArgs) Handles Label17.Click End Sub Private Sub Label6_Click(sender As Object, e As EventArgs) Handles Label6.Click End Sub Private Sub lblInteresAcumulado_Click(sender As Object, e As EventArgs) Handles lblInteresAcumulado.Click End Sub Private Sub dtpUltimaFecha_ValueChanged_1(sender As Object, e As EventArgs) Handles dtpUltimaFecha.ValueChanged RellenarDatos() End Sub Private Sub txtOtrosCostos_TextChanged(sender As Object, e As EventArgs) Handles txtOtrosCostos.TextChanged RellenarDatos() End Sub Private Sub txtOtrosCostos_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtOtrosCostos.KeyPress If String.IsNullOrEmpty(txtOtrosCostos.Text) Then If e.KeyChar = "." Then txtOtrosCostos.Text = "0" Exit Sub End If End If If (Not txtOtrosCostos.Text.ToString.IndexOf(".") = -1 And e.KeyChar = ".") Then Operaciones.ValidarEntrada(sender, e, True) Else Operaciones.ValidarEntrada(sender, e, False) End If End Sub Private Sub btnRedencion_Click(sender As Object, e As EventArgs) Handles btnRedencion.Click If (btnRedencion.Text = "Redención") Then lblRedencion.Visible = True dtpRedencion.Visible = True btnRedencion.Text = "Cancelar" Else lblRedencion.Visible = False dtpRedencion.Visible = False btnRedencion.Text = "Redención" End If End Sub Private Sub txtDiasAcumulados_TextChanged(sender As Object, e As EventArgs) RellenarDatos() End Sub Private Sub txtValorNominal_Leave(sender As Object, e As EventArgs) Handles txtValorNominal.Leave Rellenar() End Sub Private Sub txtPlazoInversion_Leave(sender As Object, e As EventArgs) Handles txtPlazoInversion.Leave Rellenar() End Sub Private Sub txtOtrosCostos_Leave(sender As Object, e As EventArgs) Handles txtOtrosCostos.Leave Rellenar() End Sub Private Sub txtValorNominal_ModifiedChanged(sender As Object, e As EventArgs) Handles txtValorNominal.ModifiedChanged End Sub Private Sub txtValorNominal_KeyUp(sender As Object, e As KeyEventArgs) Handles txtValorNominal.KeyUp If txtValorNominal.Text = "." Then txtValorNominal.Text = ".0" End If End Sub Private Sub txtPlazoInversion_KeyUp(sender As Object, e As KeyEventArgs) Handles txtPlazoInversion.KeyUp If txtPlazoInversion.Text = "." Then txtPlazoInversion.Text = ".0" End If End Sub Private Sub txtPorcentajeComisionCasa_KeyUp(sender As Object, e As KeyEventArgs) Handles txtPorcentajeComisionCasa.KeyUp If txtPorcentajeComisionCasa.Text = "." Then txtPorcentajeComisionCasa.Text = ".0" End If End Sub Private Sub txtPorcentajeComisionBolsa_KeyUp(sender As Object, e As KeyEventArgs) Handles txtPorcentajeComisionBolsa.KeyUp If txtPorcentajeComisionBolsa.Text = "." Then txtPorcentajeComisionBolsa.Text = ".0" End If End Sub Private Sub txtRendimientoBruto_KeyUp(sender As Object, e As KeyEventArgs) Handles txtRendimientoBruto.KeyUp If txtRendimientoBruto.Text = "." Then txtRendimientoBruto.Text = ".0" End If End Sub Private Sub txtOtrosCostos_KeyUp(sender As Object, e As KeyEventArgs) Handles txtOtrosCostos.KeyUp If txtOtrosCostos.Text = "." Then txtOtrosCostos.Text = ".0" End If End Sub Private Sub dtpRedencion_ValueChanged(sender As Object, e As EventArgs) Handles dtpRedencion.ValueChanged End Sub Private Sub dgvIngresosVCN_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvIngresosVCN.CellClick End Sub Private Sub dgvIngresosVCN_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles dgvIngresosVCN.CellEndEdit CalculosIngresosVCN("UnRegistro") End Sub Private Sub btnReporto_Click(sender As Object, e As EventArgs) End Sub Private Sub navEliminar_Click(sender As Object, e As EventArgs) Handles navEliminar.Click TipoTransaccion = "B" btnAceptar.Text = "Eliminar" End Sub Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click Me.Close() End Sub Private Sub cboBase_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboBase.SelectedIndexChanged RellenarDatos() End Sub Private Sub BindingNavigator1_RefreshItems(sender As Object, e As EventArgs) Handles BindingNavigator1.RefreshItems End Sub Private Sub txtPorcentajeComisionCasa_Leave(sender As Object, e As EventArgs) Handles txtPorcentajeComisionCasa.Leave Rellenar() End Sub Private Sub txtPorcentajeComisionBolsa_Leave(sender As Object, e As EventArgs) Handles txtPorcentajeComisionBolsa.Leave Rellenar() End Sub Sub AgregarDiasExtra() dtpFechaLiquidacion.Value = dtpFechaOperacion.Value.AddDays(2) End Sub Sub CargarFilas() Dim Codigo As String = Variables.Codigo Dim Tabla As DataTable = oDAOLetes.CargarFilas(Codigo) Dim Correlativo As Integer = 0 Dim CantidadFilas As Integer = 0 Dim IndexFilas As Integer = 0 For Each rows As DataRow In Tabla.Rows Dim Plazo As Integer = 0 Dim Fecha As String = Format(Date.Today.Date, "dd/MM/yyyy").ToString Dim Monto As Double = 0 Dim Cedeval As Double = 0 Dim PorcentajeRenta As String = "10%" Dim Renta As Double = 0 Dim CostoTransferencia As Double = 0 Dim CostoBanco As Double = 0 Dim TotalRecibir As Double = 0 Plazo = Operaciones.ConvertirEntero(rows("Plazo").ToString) Fecha = Format(Operaciones.ConvertirFecha(rows("Fecha").ToString), "dd/MM/yyyy").ToString Monto = Operaciones.ConvertirDecimal(rows("Monto").ToString) Cedeval = Operaciones.ConvertirDecimal(rows("Cedeval").ToString) PorcentajeRenta = (Operaciones.ConvertirDecimal(rows("PorcentajeRenta").ToString) * 100).ToString + "%" Renta = Operaciones.ConvertirDecimal(rows("Renta").ToString) CostoTransferencia = Operaciones.ConvertirDecimal(rows("CostoTransferencia").ToString) CostoBanco = Operaciones.ConvertirDecimal(rows("CostoBanco").ToString) TotalRecibir = Operaciones.ConvertirDecimal(rows("TotalRecibir").ToString) dgvIngresosVCN.Rows.Add("", Plazo, Fecha, Monto, Cedeval, PorcentajeRenta, Renta, CostoTransferencia, CostoBanco, TotalRecibir) Next CantidadFilas = dgvIngresosVCN.Rows.Count - 1 While CantidadFilas >= IndexFilas Correlativo = CalculosTablaDiasFecha.AgregarCorrelativo(dgvIngresosVCN, IndexFilas) dgvIngresosVCN.Rows(IndexFilas).Cells("Correlativo").Value = Correlativo IndexFilas += 1 End While End Sub End Class