Public Class frmNotaEstructurada


    Dim AnioBase As Integer = 365
    Dim oNETSCE As New NotaEstructuradaCE
    Dim oDAONEST As New DAONotaEstructurada
    Dim oDAOGeneral As New DAOGeneral
    Private vCargado As Boolean = False
    Dim Estado As String = " "
    Dim codigo As String = Variables.Codigo
    Dim Operaciones As New Operaciones
    Dim NotaCalcular As New NotaEstructuradaCE


    Private _TipoTransaccion As String
    Private _IdDocumento As Integer
    Private _TipoDocumento As String
    Private _CodigoInversion As String

    Private Property CodigoInversion As String
        Get
            Return _CodigoInversion
        End Get
        Set(value As String)
            _CodigoInversion = value
        End Set
    End Property




    Public Property TipoTransaccion As String
        Get
            Return _TipoTransaccion
        End Get
        Set(value As String)
            _TipoTransaccion = value
        End Set
    End Property

    Private Sub frmNotaEstructurada_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        dgvIntereses.Columns.Clear()
        AgregarCampos()


        Call CargarPeriodos()



        If TipoTransaccion Is Nothing Then
            TipoTransaccion = "N"

            PrepararNuevo()

        End If


        If TipoTransaccion = "C" Then
            Call CargarRegistroBD()
        End If





        CalcularPlazo()
        Calculo()
        vCargado = True
        ExisteInversion()
        ValidarExistencia()
        CargarTransladoNuevo()
    End Sub

    Sub RellenarDatos()

        If (String.IsNullOrEmpty(txtMontoInversion.Text.ToString)) Then
            txtMontoInversion.Text = "0.0"
        End If
        If (String.IsNullOrEmpty(txtPlazo.Text.ToString)) Then
            txtPlazo.Text = "0.0"
        End If
        If (String.IsNullOrEmpty(txtTasa.Text.ToString.Trim("%"))) Then
            txtTasa.Text = "0.0%"
        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 ValidarExistencia()
        Dim General As New DAOGeneral
        Dim Codigo As String = Variables.Codigo
        Dim Tabla As String = String.Empty
        Tabla = "NEST0"
        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
        Estado = String.Empty
        btnGME.Text = "Aceptar"

    End Sub


    Function ExisteValidacion()
        Dim General As New DAOGeneral
        Dim Codigo As String = Variables.Codigo
        Dim Tabla As String = String.Empty
        Tabla = "NEST0"
        Dim Existe As Boolean = General.ExisteTitulo(Codigo, Tabla)

        Return Existe
    End Function



    Private Sub txtPlazo_TextChanged(sender As Object, e As EventArgs)
        Calculo()
    End Sub
    Private Sub txtPlazo_LostFocus(sender As Object, e As EventArgs)

    End Sub
    Private Sub ControlPlazo()
        Dim valor As Integer
        If Not Integer.TryParse(txtPlazo.Text.ToString, valor) Then
            txtPlazo.Focus()
            txtPlazo.BackColor = Configuraciones.ColorFondoError
        Else
            txtPlazo.BackColor = Color.White
            If TipoTransaccion = "N" Or TipoTransaccion = "M" Then
                oNETSCE.Plazo = valor
            End If
            RefrescarValorControles()

        End If

    End Sub
    Private Sub dtpFechaOperacion_ValueChanged(sender As Object, e As EventArgs) Handles dtpFechaOperacion.ValueChanged
        CalcularPlazo()
        Calculo()
    End Sub
    Private Sub ControlFechaOperacion()
        Dim valor As Date
        valor = dtpFechaOperacion.Value.Date
        If TipoTransaccion = "N" Then
            oNETSCE.FechaOperacion = valor
        End If
        RefrescarValorControles()

    End Sub

    Private Sub txtIngresoBruto_TextChanged(sender As Object, e As EventArgs)

    End Sub



    Private Sub txtTasa_TextChanged(sender As Object, e As EventArgs) Handles txtTasa.TextChanged

        Calculo()
        If (txtTasa.ToString.IndexOf("%") = -1) Then
            txtTasa.Text += "%"
        End If
        CalcularPlazo()
        Calculo()
    End Sub
    Private Sub txtTasa_LostFocus(sender As Object, e As EventArgs) Handles txtTasa.LostFocus

    End Sub
    Private Sub ControlTasa()
        Dim valor As Double
        If Not Double.TryParse(txtTasa.Text, valor) Then
            txtTasa.Focus()
            txtTasa.BackColor = Configuraciones.ColorFondoError

        Else
            txtTasa.BackColor = Color.White
            If TipoTransaccion = "N" Or TipoTransaccion = "M" Then
                oNETSCE.Tasa = valor
            End If
            RefrescarValorControles()

        End If
    End Sub

    Private Sub txtMontoInversion_TextChanged(sender As Object, e As EventArgs) Handles txtMontoInversion.TextChanged

        CalcularPlazo()
        Calculo()
    End Sub
    Private Sub txtMontoInversion_LostFocus(sender As Object, e As EventArgs) Handles txtMontoInversion.LostFocus

    End Sub
    Private Sub ControlMontoInversion()
        Dim valor As Double
        If Not Double.TryParse(txtMontoInversion.Text, valor) Then
            txtMontoInversion.Focus()
            txtMontoInversion.BackColor = Configuraciones.ColorFondoError
        Else
            txtMontoInversion.BackColor = Color.White
            If TipoTransaccion = "N" Or TipoTransaccion = "M" Then
                oNETSCE.MontoDeInversion = valor
            End If
            RefrescarValorControles()
        End If

    End Sub



    Private Sub txtIngresoNeto_TextChanged(sender As Object, e As EventArgs)

    End Sub
    Sub CargarPeriodos()
        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
    Private Sub btnAceptar_Click(sender As Object, e As EventArgs)

        If (Estado = "N") Then
            NuevoElemento()
        ElseIf (Estado = "M") Then
            ModificarElemento()
        ElseIf (Estado = "B") Then
            EliminarElemento()

        End If

    End Sub



    Private Sub CargarRegistroBD()
        oNETSCE = Nothing
        oDAONEST = New DAONotaEstructurada
        CodigoInversion = Variables.Codigo
        oNETSCE = oDAONEST.CargarRegistro(Me.CodigoInversion)

        TipoTransaccion = "C"

        RefrescarValorControles()

    End Sub



    Private Sub dtpFechaVencimiento_ValueChanged(sender As Object, e As EventArgs) Handles dtpFechaVencimiento.ValueChanged
        CalcularPlazo()
        Calculo()
    End Sub
    Private Sub ControlFechaVencimiento()
        Dim valor As Date
        valor = dtpFechaVencimiento.Value.Date.ToString
        If TipoTransaccion = "N" Or TipoTransaccion = "M" Then
            oNETSCE.FechaVencimiento = valor
        End If
        RefrescarValorControles()

    End Sub

    Private Sub cboPeriodicidad_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboPeriodicidad.SelectedIndexChanged

        CalcularPlazo()
        Calculo()
    End Sub
    Private Sub ControlPreriodicidad()
        Dim valor As String
        If vCargado Then
            If TipoTransaccion = "N" Or TipoTransaccion = "M" Then
                valor = cboPeriodicidad.SelectedValue
                oNETSCE.Periodicidad = valor
            End If
            If TipoTransaccion IsNot Nothing Then
                RefrescarValorControles()
            End If
        End If



    End Sub
    Public Sub CargarRegistro(ByRef vCodigoInversion As String)
        TipoTransaccion = "C"
        Me.CodigoInversion = vCodigoInversion
    End Sub
    Private Sub RefrescarValorControles()

        If Not oNETSCE Is Nothing Then
            Me.txtMontoInversion.Text = oNETSCE.MontoDeInversion.ToString(Configuraciones.CodigoTXTMontos)
            Me.dtpFechaOperacion.Value = oNETSCE.FechaOperacion
            Me.dtpFechaVencimiento.Value = oNETSCE.FechaVencimiento
            Me.txtTasa.Text = oNETSCE.Tasa.ToString(Configuraciones.CodigoTXTMontos)

            txtPlazo.Text = oNETSCE.Plazo.ToString





            'anio base
            Me.cboPeriodicidad.SelectedValue = oNETSCE.Periodicidad
            Me.txtRendimientoBruto.Text = oNETSCE.RendimientoBruto.ToString(Configuraciones.CodigoTXTMontos)
            Me.txtRendimientoNeto.Text = oNETSCE.RendimientoNeto.ToString(Configuraciones.CodigoTXTMontos)

            For Each item As DataRow In oNETSCE.dtIntereses.Rows
                Me.txtImpuesto.Text = item("PorcImp") * 100
            Next



        End If


    End Sub


    Private Sub dgvIntereses_CellBeginEdit(sender As Object, e As DataGridViewCellCancelEventArgs) Handles dgvIntereses.CellBeginEdit

    End Sub


    Private Sub RefrescarClaseEntidad()
        ControlMontoInversion()
        ControlFechaOperacion()
        ControlFechaVencimiento()
        ControlTasa()
        ControlPlazo()
        ControlPreriodicidad()

    End Sub

    Private Sub dgvIntereses_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles dgvIntereses.CellEndEdit

    End Sub

    Private Sub dgvIntereses_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvIntereses.CellContentClick

    End Sub
    Private Sub PrepararNuevo()
        oNETSCE = New NotaEstructuradaCE
        RefrescarValorControles()


    End Sub

    Private Sub dgvIntereses_CellLeave(sender As Object, e As DataGridViewCellEventArgs) Handles dgvIntereses.CellLeave

    End Sub

    Private Sub dgvIntereses_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgvIntereses.CellEnter

    End Sub

    Private Sub dgvIntereses_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs) Handles dgvIntereses.RowPostPaint

    End Sub

    Private Sub dgvIntereses_RowPrePaint(sender As Object, e As DataGridViewRowPrePaintEventArgs) Handles dgvIntereses.RowPrePaint

    End Sub

    Private Sub dgvIntereses_RowsAdded(sender As Object, e As DataGridViewRowsAddedEventArgs) Handles dgvIntereses.RowsAdded

    End Sub

    Private Sub dgvIntereses_RowValidated(sender As Object, e As DataGridViewCellEventArgs) Handles dgvIntereses.RowValidated

    End Sub


    Private Sub navModificar_Click(sender As Object, e As EventArgs) Handles navModificar.Click

        btnGME.Text = "Modificar"
        Estado = "M"

    End Sub

    Private Sub navNuevo_Click(sender As Object, e As EventArgs) Handles navNuevo.Click

        btnGME.Text = "Nuevo"
        Estado = "N"
    End Sub

    Private Sub navEliminar_Click(sender As Object, e As EventArgs) Handles navEliminar.Click

        btnGME.Text = "Eliminar"
        Estado = "B"
    End Sub

    Function ColeccionDatos()
        Dim Coleccion As New Collection
        Dim MontoInv, FOper, FVenc, Tasa, Plazo, Periodic, RendBr, RendNet, IngrBrutoTot, IngrNetoTot, Renta As String


        MontoInv = Operaciones.ConvertirDecimal(txtMontoInversion.Text.ToString)
        FOper = Operaciones.ConvertirFecha(dtpFechaOperacion.Value.ToString)
        FVenc = Operaciones.ConvertirFecha(dtpFechaVencimiento.Value.ToString)
        Tasa = Operaciones.ConvertirDecimal(txtTasa.Text.ToString)
        Plazo = Operaciones.ConvertirEntero(txtPlazo.Text.ToString)
        Periodic = cboPeriodicidad.SelectedValue
        RendBr = Operaciones.ConvertirDecimal(txtRendimientoBruto.Text.ToString) / 100
        RendNet = Operaciones.ConvertirDecimal(txtRendimientoNeto.Text.ToString) / 100
        IngrBrutoTot = Operaciones.ConvertirDecimal(txtIngresoBruto.Text.ToString)
        IngrNetoTot = Operaciones.ConvertirDecimal(txtIngresoNeto.Text.ToString)
        Renta = Operaciones.ConvertirDecimal(txtRenta.Text.ToString)



        Coleccion.Add(MontoInv)
        Coleccion.Add(FOper)
        Coleccion.Add(FVenc)
        Coleccion.Add(Tasa)
        Coleccion.Add(Plazo)
        Coleccion.Add(Periodic)
        Coleccion.Add(RendBr)
        Coleccion.Add(RendNet)
        Coleccion.Add(IngrBrutoTot)
        Coleccion.Add(IngrNetoTot)
        Coleccion.Add(Renta)
        Return Coleccion
    End Function


    Function ColeccionElementos(ByVal Index As Integer)
        Dim Coleccion As New Collection
        Dim Correlativo, plazo, Fecha, IngBruto, PorcImp, MontoImp, IngrNeto As String

        Correlativo = Operaciones.ConvertirEntero(dgvIntereses.Rows(Index).Cells("Correlativo").Value.ToString)
        plazo = Operaciones.ConvertirEntero(dgvIntereses.Rows(Index).Cells("Plazo").Value.ToString)
        Fecha = Operaciones.ConvertirFecha(dgvIntereses.Rows(Index).Cells("Fecha").Value.ToString)
        IngBruto = Operaciones.ConvertirDecimal(dgvIntereses.Rows(Index).Cells("Ingreso Bruto").Value.ToString)
        PorcImp = Operaciones.ConvertirDecimal(dgvIntereses.Rows(Index).Cells("% Impuesto").Value.ToString)
        MontoImp = Operaciones.ConvertirDecimal(dgvIntereses.Rows(Index).Cells("Monto del Impuesto").Value.ToString)
        IngrNeto = Operaciones.ConvertirDecimal(dgvIntereses.Rows(Index).Cells("Ingreso Neto").Value.ToString)


        Coleccion.Add(Correlativo)
        Coleccion.Add(plazo)
        Coleccion.Add(Fecha)
        Coleccion.Add(IngBruto)
        Coleccion.Add(PorcImp)
        Coleccion.Add(MontoImp)
        Coleccion.Add(IngrNeto)




        Return Coleccion
    End Function


    Sub Calculo()
        Dim Plazo As Integer = 0

        Plazo = Operaciones.ConvertirEntero(txtPlazo.Text.ToString)
        dtpFechaVencimiento.Value = dtpFechaOperacion.Value.AddDays(Plazo)


        CalcularRendBruto()
        CalcularRendNeto()

    End Sub

    Sub CalcularRendBruto()

        Dim Total As Double = TotalIngreso()
        Dim MontoInv As Double = Operaciones.ConvertirDecimal(txtMontoInversion.Text.ToString)
            Dim Base = 365
            Dim pla As Double = Operaciones.ConvertirEntero(txtPlazo.Text.ToString)
            Dim tot As Double = 0
            If (Not MontoInv = 0 And Not pla = 0) Then


                tot = (Total / MontoInv) * (Base / pla)
            End If
            txtRendimientoBruto.Text = CStr((tot * 100)) + "%"


    End Sub


    Sub CalcularRendNeto()
        Dim Total As Double = TotalIngresoNeto()
        Dim MontoInv As Double = Operaciones.ConvertirDecimal(txtMontoInversion.Text.ToString)
        Dim Base = 365
        Dim pla As Double = Operaciones.ConvertirDecimal(txtPlazo.Text.ToString)
        Dim tot As Double = 0



        If (Not MontoInv = 0 And Not pla = 0) Then


                tot = (Total / MontoInv) * (Base / pla)
            End If
            txtRendimientoNeto.Text = CStr((tot * 100)) + "%"

    End Sub


    Function TotalIngreso()
        Dim Cantidad As Integer = CDec(dgvIntereses.Rows.Count - 1)
        Dim TotalIngr As Double = 0

        For i As Integer = 0 To Cantidad

            TotalIngr = TotalIngr + Operaciones.ConvertirDecimal(dgvIntereses.Rows(i).Cells("Ingreso Bruto").Value)
        Next
        Return TotalIngr
    End Function


    Function TotalIngresoNeto()
        Dim Cantidad = dgvIntereses.Rows.Count - 1
        Dim TotalIngr As Double = 0
        For i As Integer = 0 To Cantidad

            TotalIngr = TotalIngr + Operaciones.ConvertirDecimal(dgvIntereses.Rows(i).Cells("Ingreso Neto").Value)

        Next

        Return TotalIngr
    End Function


    Private Sub Button1_Click(sender As Object, e As EventArgs)

    End Sub



    Function NuevoElemento()
        Dim Index As Integer = dgvIntereses.Rows.Count - 2
        Dim diccionario As New Dictionary(Of String, Collection)
        For i As Integer = 0 To Index

            Dim colec As Collection = ColeccionElementos(i)
            diccionario.Add(i, colec)
        Next

        Return diccionario
    End Function

    Sub NuevoElementoGuardar()

        Dim Index As Integer = dgvIntereses.Rows.Count - 2
        For i As Integer = 0 To Index

            Dim colec As Collection = ColeccionElementos(i)
            oDAONEST.NuevoElemento(colec, codigo)
        Next


    End Sub


    Sub ModificarElemento()
        oDAONEST.EliminarElemento(codigo)
        NuevoElementoGuardar()
    End Sub

    Sub EliminarElemento()

        oDAONEST.EliminarElemento(codigo)
    End Sub

    Sub Nuevo()
        Dim colec As Collection = ColeccionDatos()
        Dim Diccionario As Dictionary(Of String, Collection) = NuevoElemento()
        oDAONEST.NuevoDato(colec, Diccionario, codigo)
    End Sub


    Sub Modificar()
        Dim colec As Collection = ColeccionDatos()
        Dim Diccionario As Dictionary(Of String, Collection) = NuevoElemento()

        oDAONEST.ModificarDato(colec, codigo, NuevoElemento())
    End Sub


    Sub Eliminar()
        Dim codigo As String = Variables.Codigo
        oDAONEST.Eliminar(codigo)
    End Sub

    Private Sub btnGME_Click(sender As Object, e As EventArgs) Handles btnGME.Click
        If (Estado = "N") Then
            Nuevo()


        ElseIf (Estado = "M") Then
            Modificar()

        ElseIf (Estado = "B") Then
            Eliminar()

        ElseIf Not ExisteValidacion() Then
            Variables.ColeccionNEST = ColeccionDatos()

            Variables.ColeccionNESTDi = NuevoElemento()


            Me.Close()


        End If


    End Sub

    Private Sub txtRendimientoBruto_TextChanged(sender As Object, e As EventArgs) Handles txtRendimientoBruto.TextChanged

    End Sub

    Private Sub Button1_Click_1(sender As Object, e As EventArgs)
        Me.Operaciones.CambioBase(dtpFechaOperacion.Value, dtpFechaVencimiento.Value)
    End Sub

    Private Sub txtPlazo_TextChanged_1(sender As Object, e As EventArgs) Handles txtPlazo.TextChanged

        CalcularPlazo()
        Calculo()
    End Sub
    Sub AgregarCampos()
        Dim Correlativo, Plazo, Fecha, IngrBruto, PorcImp, MontoImp, IngrNeto As New DataGridViewTextBoxColumn
        Correlativo.Name = "Correlativo"
        Plazo.Name = "Plazo"
        Fecha.Name = "Fecha"
        IngrBruto.Name = "Ingreso Bruto"
        PorcImp.Name = "% Impuesto"
        PorcImp.DefaultCellStyle.Format = Configuraciones.CodigoTXTPorcentaje
        MontoImp.Name = "Monto del Impuesto"
        IngrNeto.Name = "Ingreso Neto"


        dgvIntereses.Columns.Add(Correlativo)
        dgvIntereses.Columns.Add(Plazo)
        dgvIntereses.Columns.Add(Fecha)
        dgvIntereses.Columns.Add(IngrBruto)
        dgvIntereses.Columns.Add(PorcImp)
        dgvIntereses.Columns.Add(MontoImp)
        dgvIntereses.Columns.Add(IngrNeto)
    End Sub



    Sub CalcularPlazo()
        dgvIntereses.Rows.Clear()
        Dim PlazoGlobal As Integer = Operaciones.ConvertirEntero(txtPlazo.Text.ToString)
        Dim Periodicidad As String = String.Empty

        If Not cboPeriodicidad.SelectedValue Is Nothing Then
            Try
                Periodicidad = cboPeriodicidad.SelectedValue
            Catch ex As Exception

            End Try
        End If


        Dim FechaInicial As Date = dtpFechaOperacion.Value
        Dim IngrBruto As Double = 0.0
        Dim Monto As Double = Operaciones.ConvertirDecimal(txtMontoInversion.Text.ToString)
        Dim Tasa As Double = Operaciones.ConvertirDecimal(txtTasa.Text.ToString) / 100
        Dim Impuesto As Double = Operaciones.ConvertirDecimal(txtImpuesto.Text.ToString) / 100
        Dim Renta As Double = 0.0
        Dim FechaAnterior As Date
        Dim IngresoNeto As Double = 0.0
        Dim SumaIngresoBruto, SumaRenta, SumaIngresoNeto As Double
        Dim Plazo = NotaCalcular.CalcularPlazo(Periodicidad)
        Dim Cantidad = NotaCalcular.CalcularIteraciones(PlazoGlobal, Plazo)
        Dim Fecha As String = String.Empty

        For i As Integer = 1 To Cantidad

            If (i = 1) Then

                Fecha = Format(NotaCalcular.CalcularFecha(Plazo, FechaInicial), "dd/MM/yyyy")

                IngrBruto = NotaCalcular.CalculosIngrBruto(FechaInicial, Fecha, Monto, Tasa, Plazo)

            Else
                If (String.IsNullOrEmpty(Fecha.ToString)) Then
                    Exit Sub
                End If
                FechaAnterior = Fecha
                Fecha = Format(NotaCalcular.CalcularFecha(Plazo, Fecha), "dd/MM/yyyy")
                IngrBruto = NotaCalcular.CalculosIngrBruto(FechaAnterior, Fecha, Monto, Tasa, Plazo)
            End If

            Renta = NotaCalcular.Renta(Impuesto, IngrBruto)
            IngresoNeto = NotaCalcular.CalculosIngNeto(IngrBruto, Renta)

            SumaIngresoBruto = SumaIngresoBruto + IngrBruto
            SumaRenta = SumaRenta + Renta
            SumaIngresoNeto = SumaIngresoNeto + IngresoNeto
            dgvIntereses.Rows.Add(i, Plazo, Fecha, IngrBruto, Impuesto, Renta, IngresoNeto)
        Next

        txtIngresoBruto.Text = SumaIngresoBruto
        txtRenta.Text = SumaRenta
        txtIngresoNeto.Text = SumaIngresoNeto








    End Sub

    Private Sub txtMontoInversion_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtMontoInversion.KeyPress
        If String.IsNullOrEmpty(txtMontoInversion.Text) Then
            If e.KeyChar = "." Then
                txtMontoInversion.Text = "0"
                Exit Sub
            End If
        End If

        If (Not txtMontoInversion.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 txtPlazo_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtPlazo.KeyPress
        If String.IsNullOrEmpty(txtPlazo.Text) Then
            If e.KeyChar = "." Then
                txtPlazo.Text = "0"
                Exit Sub
            End If
        End If

        If (Not txtPlazo.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 txtTasa_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtTasa.KeyPress
        If String.IsNullOrEmpty(txtTasa.Text) Then
            If e.KeyChar = "." Then
                txtTasa.Text = "0"
                Exit Sub
            End If
        End If

        If (Not txtTasa.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 txtMontoInversion_Leave(sender As Object, e As EventArgs) Handles txtMontoInversion.Leave
        RellenarDatos()
    End Sub

    Private Sub txtPlazo_Leave(sender As Object, e As EventArgs) Handles txtPlazo.Leave
        RellenarDatos()
    End Sub

    Private Sub txtTasa_Leave(sender As Object, e As EventArgs) Handles txtTasa.Leave
        RellenarDatos()
    End Sub

    Private Sub txtMontoInversion_KeyUp(sender As Object, e As KeyEventArgs) Handles txtMontoInversion.KeyUp
        If txtMontoInversion.Text = "." Then
            txtMontoInversion.Text = ".0"
        End If
    End Sub

    Private Sub txtPlazo_KeyUp(sender As Object, e As KeyEventArgs) Handles txtPlazo.KeyUp
        If txtPlazo.Text = "." Then
            txtPlazo.Text = ".0"
        End If
    End Sub

    Private Sub txtTasa_KeyUp(sender As Object, e As KeyEventArgs) Handles txtTasa.KeyUp
        If txtTasa.Text = "." Then
            txtTasa.Text = ".0"
        End If
    End Sub

    Private Sub txtImpuesto_TextChanged(sender As Object, e As EventArgs) Handles txtImpuesto.TextChanged

        CalcularPlazo()
        Calculo()
    End Sub
    Sub CargarTransladoNuevo()
        Dim Existe As Boolean = ExisteInversion()
        If Not RetCodigoInversionExiste And Not Existe Then

            txtMontoInversion.Text = Variables.RetMonto
            txtTasa.Text = Variables.RetRendimiento
        End If
    End Sub
End Class