Public Class frmRegistroReportos
    Dim RegistroConsulta As New RegistrosDAO
    Dim Operaciones As New Operaciones
    Dim ReportosCalculos As New ReportosCE
    Const PorcentajeComisionCasa As Double = 0.2825
    Const PorcentajeComisionBolsa As Double = 0.2825
    Const PorcentajeComisionIOF As Double = 0.25
    Dim CodEmpr = Operaciones.CodEmpr
    Dim CodEmis = Operaciones.CodEmis
    Dim CodECalRi = Operaciones.CodECalRi
    Dim ListaPlazo = Operaciones.ListaPlazo
    Dim ListaTiposMercado = Operaciones.ListaTiposMercados
    Dim ListaPeriodos = Operaciones.ListaPeriodos
    Dim ListaTipoTasa = Operaciones.ListaTipoTasa
    Dim ListaTipoRenta = Operaciones.ListaTipoRenta
    Dim ListaEstado = Operaciones.ListaEstado
    Dim CodPais = Operaciones.CodPais
    Dim ValorCambiado As Boolean = False
    Dim Direccion As String = String.Empty
    Private Sub frmRegistroReportos_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        AgregarColumnasInv()
        AgregarColumnasIns()
        txtPosicion.Text = "1"
        txtConta.Text = RegistroConsulta.Contador("REPO")
        ValorCambiado = False
        CargarReporto("REPO", 1, 100)

    End Sub

    Sub AgregarColumnasInv()
        Dim Empresa, Instrumento, Emisor, CalRiesgo, Calif, Pais, TipoMercado, Nombre, Periodicidad, Plazo As New DataGridViewTextBoxColumn
        Dim CantidadPlazo, TipoRenta, TipoTasa, Numero, Fecha, Codigo, Estado As New DataGridViewTextBoxColumn
        Codigo.Name = "Codigo de Inversion"
        Empresa.Name = "Empresa"
        Instrumento.Name = "Instrumento"
        Emisor.Name = "Emisor"
        CalRiesgo.Name = "Calificadora Riesgo"
        Calif.Name = "Calificadora"
        Pais.Name = "Pais"
        TipoMercado.Name = "Tipo Mercado"
        Nombre.Name = "Nombre"
        Periodicidad.Name = "Periodicidad"
        CantidadPlazo.Name = "Cantidad Plazo"
        Plazo.Name = "Plazo"
        TipoRenta.Name = "Tipo de Renta"
        TipoTasa.Name = "Tipo de Tasa"
        Numero.Name = "Numero"
        Fecha.Name = "Fecha"
        Estado.Name = "Estado"



        dgvReportes.Columns.Add(Codigo)
        dgvReportes.Columns.Add(Estado)
        dgvReportes.Columns.Add(Empresa)
        dgvReportes.Columns.Add(Instrumento)
        dgvReportes.Columns.Add(Emisor)
        dgvReportes.Columns.Add(CalRiesgo)
        dgvReportes.Columns.Add(Calif)
        dgvReportes.Columns.Add(CantidadPlazo)
        dgvReportes.Columns.Add(Plazo)
        dgvReportes.Columns.Add(Fecha)
        dgvReportes.Columns.Add(TipoMercado)
        dgvReportes.Columns.Add(Pais)
        dgvReportes.Columns.Add(Nombre)
        dgvReportes.Columns.Add(Periodicidad)
        dgvReportes.Columns.Add(TipoTasa)
        dgvReportes.Columns.Add(TipoRenta)
        dgvReportes.Columns.Add(Numero)



    End Sub

    Sub AgregarColumnasIns()
        Dim ValTrans, Dias, FVen, Rend, IOF, ComisionCB, CB, OtrosCostos, TotCostos, MontoLiq, InterGen, codigo As New DataGridViewTextBoxColumn
        Dim CostoTransfv, RendNetoAntImp, ValReCompra, ImpLiquidacion, IngrNeto, ValNeto, RendNetoDespImp As New DataGridViewTextBoxColumn
        Dim PComisionC, PComisionB, PIOF, Titulo, FechaC, Casa As New DataGridViewTextBoxColumn
        codigo.Name = "Codigo"
        ValTrans.Name = "Valor Trasado"
        Dias.Name = "Dias"
        FVen.Name = "Fecha de Vencimiento"
        Rend.Name = "Rendimiento"
        IOF.Name = "IOF"
        ComisionCB.Name = "Comision CB"
        CB.Name = "Comision Bolsa"
        OtrosCostos.Name = "Otros Costos"
        TotCostos.Name = "Total Costos"
        MontoLiq.Name = "Monto a Liquidar"
        InterGen.Name = "Interes a Genrerar"
        CostoTransfv.Name = "Costo de Transferencia"
        RendNetoAntImp.Name = "R% Neto (Antes de Impuesto)"
        ValReCompra.Name = "Valor de ReCompra"
        ImpLiquidacion.Name = "Impuesto de Liquidacion"
        IngrNeto.Name = "Ingreso Neto"
        ValNeto.Name = "Valor Neto"
        RendNetoDespImp.Name = "R% Neto (Despues de Impuesto)"
        PComisionC.Name = "% Comision Casa"
        PComisionB.Name = "% Comision Bolsa"
        PIOF.Name = "% IOF"
        Titulo.Name = "Titulo"
        FechaC.Name = "Fecha de Compra"
        Casa.Name = "Casa"

        dgvReportes.Columns.Add(Casa)
        dgvReportes.Columns.Add(Titulo)
        dgvReportes.Columns.Add(FechaC)
        dgvReportes.Columns.Add(ValTrans)
        dgvReportes.Columns.Add(Dias)
        dgvReportes.Columns.Add(FVen)
        dgvReportes.Columns.Add(Rend)
        dgvReportes.Columns.Add(ComisionCB)
        dgvReportes.Columns.Add(CB)
        dgvReportes.Columns.Add(IOF)
        dgvReportes.Columns.Add(OtrosCostos)
        dgvReportes.Columns.Add(TotCostos)
        dgvReportes.Columns.Add(MontoLiq)
        dgvReportes.Columns.Add(InterGen)
        dgvReportes.Columns.Add(CostoTransfv)
        dgvReportes.Columns.Add(RendNetoAntImp)
        dgvReportes.Columns.Add(ValReCompra)
        dgvReportes.Columns.Add(ImpLiquidacion)
        dgvReportes.Columns.Add(IngrNeto)
        dgvReportes.Columns.Add(ValNeto)
        dgvReportes.Columns.Add(RendNetoDespImp)
        dgvReportes.Columns.Add(codigo)
        dgvReportes.Columns.Add(PComisionC)
        dgvReportes.Columns.Add(PComisionB)
        dgvReportes.Columns.Add(PIOF)


    End Sub




    Sub CargarReporto(ByVal Cod As String, ByVal Inicio As Integer, ByVal Final As Integer)


        Dim CodigoEmpresa As String = " "
        Dim CodigoEmisor As String = " "
        Dim CodigoECal As String = " "
        Dim PlazoF As String = " "
        Dim TiposMercado As String = " "
        Dim Pais As String = " "
        Dim Periodos As String = " "
        Dim TipoTasa As String = " "
        Dim TipoRenta As String = " "
        Dim Estado As String = " "
        Dim codigo As String = Variables.Codigo
        Dim dr = RegistroConsulta.CargarInv(Cod, Inicio, Final)





        While dr.Read
            For Each pair In CodEmpr
                If (pair.Key.ToString = dr("CodEmpr").ToString) Then
                    CodigoEmpresa = pair.Value
                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("CodEmpr").ToString)) Then
                    CodigoEmpresa = "    ----  ----  ----  ---- "
                    Exit For
                End If
            Next

            For Each pair In CodEmis
                If (pair.Key.ToString = dr("CodEmis").ToString) Then
                    CodigoEmisor = pair.Value
                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("CodEmis").ToString)) Then
                    CodigoEmisor = "    ----  ----  ----  ---- "
                    Exit For
                End If
            Next

            For Each pair In CodECalRi


                If (pair.Key.ToString = dr("CodECalRi").ToString) Then
                    CodigoECal = pair.Value

                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("CodECalRi").ToString)) Then
                    CodigoECal = "    ----  ----  ----  ---- "

                    Exit For
                End If
            Next

            For Each pair In ListaPlazo
                If (pair.Key.ToString = dr("PlazoFact").ToString) Then
                    PlazoF = pair.Value
                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("PlazoFact").ToString)) Then
                    PlazoF = "    ----  ----  ----  ---- "
                    Exit For
                End If
            Next

            For Each pair In ListaTiposMercado
                If (pair.Key.ToString = dr("TipoMerc").ToString) Then
                    TiposMercado = pair.Value
                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("TipoMerc").ToString)) Then
                    TiposMercado = "    ----  ----  ----  ---- "
                    Exit For
                End If
            Next

            For Each pair In CodPais
                If (pair.Key.ToString = dr("CodPais").ToString) Then
                    Pais = pair.Value
                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("CodPais").ToString)) Then
                    Pais = "    ----  ----  ----  ---- "
                    Exit For
                End If
            Next

            For Each pair In ListaPeriodos
                If (pair.Key.ToString = dr("Periodicidad").ToString) Then
                    Periodos = pair.Value
                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("Periodicidad").ToString)) Then
                    Periodos = "    ----  ----  ----  ---- "
                    Exit For
                End If
            Next

            For Each pair In ListaTipoTasa
                If (pair.Key.ToString = dr("TipTasa").ToString) Then
                    TipoTasa = pair.Value
                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("TipTasa").ToString)) Then
                    TipoTasa = "    ----  ----  ----  ---- "
                    Exit For
                End If
            Next


            For Each pair In ListaTipoRenta
                If (pair.Key.ToString = dr("TipRenta").ToString) Then
                    TipoRenta = pair.Value
                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("TipRenta").ToString)) Then
                    TipoRenta = "    ----  ----  ----  ---- "
                    Exit For
                End If
            Next



            For Each pair In ListaEstado
                If (pair.Key.ToString = dr("DocEst").ToString) Then
                    Estado = pair.Value
                    Exit For
                ElseIf (String.IsNullOrEmpty(dr("DocEst").ToString)) Then
                    Estado = "    ----  ----  ----  ---- "
                    Exit For
                End If
            Next



            'Dim ComisionCasa = ReportosCalculos.Comision(dr("ValTrans"), dr("Dias"), PorcentajeComisionCasa)
            'Dim ComisionBolsa = ReportosCalculos.Comision(dr("ValTrans"), dr("Dias"), PorcentajeComisionBolsa)
            'Dim IOF = ReportosCalculos.IOF(dr("ValTrans"), ComisionCasa, ComisionBolsa, dr("Dias"), PorcentajeComisionIOF)
            'Dim TotalCostos = ReportosCalculos.TotCostos(ComisionCasa, ComisionBolsa, IOF, 0)
            ''Dim MontoLiq = ReportosCalculos.MontoLiquidacion(dr("ValTrans"), TotalCostos)
            'Dim InteresGenerar = ReportosCalculos.InteresGenerar(dr("ValTrans"), dr("Rend"), dr("Dias"))
            'Dim RendimientoAntes = ReportosCalculos.RendimientoAntes(InteresGenerar, TotalCostos, dr("ValTrans"), dr("Dias"))
            'Dim ValorRecompra = ReportosCalculos.ValorRecompras(dr("ValTrans"), InteresGenerar)
            'Dim Renta = ReportosCalculos.Renta(InteresGenerar, 0.1)
            'Dim IngresoNeto = ReportosCalculos.IngresoNet(InteresGenerar, Renta)
            'Dim ValorNeto = ReportosCalculos.ValorNet(dr("ValTrans"), IngresoNeto, dr("CostoTransfr"))
            'Dim RendimientoDespues = ReportosCalculos.RendimientoDespues(IngresoNeto, TotalCostos, dr("ValTrans"), dr("Dias"))
            'dgvReportes.Rows.Add(dr("CodInv"), Estado, CodigoEmpresa, "Reportos", CodigoEmisor, dr("CodCalRi"), CodigoECal, dr("Plazo"), PlazoF, dr("FechaDoc"), TiposMercado, Pais, dr("NombreManIF"), Periodos, TipoTasa, TipoRenta, dr("NumManInv"), "", dr("Nombre"), dr("FCompra"), dr("ValTrans"), dr("Dias"), dr("FVenc"), dr("Rend"), ComisionCasa, ComisionBolsa, IOF, 0, TotalCostos, MontoLiq, InteresGenerar, dr("CostoTransfr"), RendimientoAntes, ValorRecompra, Renta, IngresoNeto, ValorNeto, RendimientoDespues, "", PorcentajeComisionCasa, PorcentajeComisionBolsa, PorcentajeComisionIOF)
        End While
    End Sub







    Private Sub navSiguienteRegistro_Click(sender As Object, e As EventArgs)
        Direccion = "D"
        Mover(Direccion)
        ValorCambiado = False
    End Sub










    Sub Mover(ByVal Direccion As String)
        Dim ReferenciaD = txtPosicion.Text + 1
        Dim ReferenciaI = txtPosicion.Text - 1
        Dim Cantidad = txtConta.Text
        Dim ValorExacto = txtPosicion.Text
        Dim Inicio, Final As Integer
        If (Direccion = "D") Then
            If (Cantidad >= ValorExacto) Then
                dgvReportes.Rows.Clear()
                If (Not ValorCambiado) Then
                    txtPosicion.Text = ReferenciaD
                    ValorCambiado = False
                End If

                Inicio = txtPosicion.Text - 1
                Inicio = Inicio * 100
                Final = Inicio + 100
                CargarReporto("REPO", Inicio, Final)

            Else
                MsgBox("Rango Fuera de Valor")
            End If
        ElseIf (Direccion = "I") Then
            If (ReferenciaI >= 1) Then
                dgvReportes.Rows.Clear()
                If (Not ValorCambiado) Then
                    If (Not ValorExacto = 1) Then
                        txtPosicion.Text = ReferenciaI

                    End If
                Else
                    ValorCambiado = False
                End If


                Inicio = txtPosicion.Text - 1
                Inicio = Inicio * 100
                Final = Inicio + 100
                CargarReporto("REPO", Inicio, Final)
            Else
                MsgBox("Rango Fuera de Valor")
            End If


        ElseIf (Direccion = "SD") Then
            Final = txtConta.Text * 100
            Inicio = Final - 100

            dgvReportes.Rows.Clear()
            CargarReporto("REPO", Inicio, Final)
            txtPosicion.Text = Cantidad
        ElseIf (Direccion = "SI") Then
            Final = 100
            Inicio = Final - 100

            dgvReportes.Rows.Clear()
            CargarReporto("REPO", Inicio, Final)
            txtPosicion.Text = 1
        End If




    End Sub

    Private Sub navRegistroAnterior_Click(sender As Object, e As EventArgs) Handles navRegistroAnterior.Click
        Direccion = "I"
        Mover(Direccion)
        ValorCambiado = False
    End Sub

    Private Sub txtPosicion_TextChanged(sender As Object, e As EventArgs) Handles txtPosicion.TextChanged
        ValorCambiado = True
    End Sub

    Private Sub navUltimoRegistro_Click(sender As Object, e As EventArgs) Handles navUltimoRegistro.Click
        Direccion = "SD"
        Mover(Direccion)
        ValorCambiado = False
    End Sub

    Private Sub navPrimerRegistro_Click(sender As Object, e As EventArgs) Handles navPrimerRegistro.Click
        Direccion = "SI"
        Mover(Direccion)
        ValorCambiado = False
    End Sub
End Class