Public Class frmColaTitulos
    Dim Cola As New ColaDAO
    Dim Operaciones As New Operaciones
    Public CodigoAsociado As String = String.Empty
    Private Sub frmColaTitulos_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Inicializacion()
    End Sub

    Sub Inicializacion()
        OcultarColumnas()
        CargarTablas()
        OcultarColumnasCargadas()
    End Sub

    Sub OcultarColumnas()
        If Not dgvDetalles Is Nothing Then
            If Not dgvDetalles.Columns Is Nothing Then



                If Not dgvDetalles.Columns("CodigoEmpresa") Is Nothing Then
                    dgvDetalles.Columns("CodigoEmpresa").Visible = False
                End If

                If Not dgvDetalles.Columns("CodigoInstrumento") Is Nothing Then
                    dgvDetalles.Columns("CodigoInstrumento").Visible = False
                End If



                If Not dgvDetalles.Columns("CodigoAsociacion") Is Nothing Then
                    dgvDetalles.Columns("CodigoAsociacion").Visible = False
                End If
                If Not dgvDetalles.Columns("IdFlujo") Is Nothing Then
                    dgvDetalles.Columns("IdFlujo").Visible = False
                End If

                If Not dgvDetalles.Columns("IdLisRep") Is Nothing Then
                    dgvDetalles.Columns("IdLisRep").Visible = False
                End If
            End If
            End If
    End Sub


    Sub OcultarColumnasCargadas()
        If Not dgvDetalles Is Nothing Then
            If Not dgvDetalles.Columns Is Nothing Then


                If Not dgvColaReportos.Columns("IdSeleccionTitulo") Is Nothing Then
                    dgvColaReportos.Columns("IdSeleccionTitulo").Visible = False
                End If





                If Not dgvColaReportos.Columns("Nombre Empresa") Is Nothing Then
                    dgvColaReportos.Columns("Nombre Empresa").Visible = False
                End If

                If Not dgvColaReportos.Columns("Nombre Instrumento") Is Nothing Then
                    dgvColaReportos.Columns("Nombre Instrumento").Visible = False
                End If





                If Not dgvColaReportos.Columns("IdFlujo") Is Nothing Then
                    dgvColaReportos.Columns("IdFlujo").Visible = False
                End If

                If Not dgvColaReportos.Columns("IdECT") Is Nothing Then
                    dgvColaReportos.Columns("IdECT").Visible = False
                End If
                If Not dgvColaReportos.Columns("EstadoProceso") Is Nothing Then
                    dgvColaReportos.Columns("EstadoProceso").Visible = False
                End If
                If Not dgvColaReportos.Columns("CodigoEmpresa") Is Nothing Then
                    dgvColaReportos.Columns("CodigoEmpresa").Visible = False
                End If

                If Not dgvColaReportos.Columns("CodigoInstrumento") Is Nothing Then
                    dgvColaReportos.Columns("CodigoInstrumento").Visible = False
                End If



            End If
        End If




    End Sub








    Sub CargarTablaGenerarReporto()
        Dim dt As New DataTable
        Dim Tipo As String = "GenerarReporto"
        Dim CodigoAsociado As String = ""
        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvColaTitulos.DataSource = dt
    End Sub

    Sub CargarTablaTituloEspAprobacionPropuesta()
        Dim dt As New DataTable
        Dim Tipo As String = "TituloEspAprobacionPropuesta"
        Dim CodigoAsociado As String = ""
        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvEspApro.DataSource = dt
    End Sub



    Sub CargarTablaTitulosParaReportear()
        Dim dt As New DataTable
        Dim Tipo As String = "TitulosParaReportear"
        Dim CodigoAsociado As String = ""
        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvGeneradosReportos.DataSource = dt
    End Sub

    Sub CargarTablaCancelado()
        Dim dt As New DataTable
        Dim Tipo As String = "TituloCancelado"
        Dim CodigoAsociado As String = ""
        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvCancelados.DataSource = dt
    End Sub

    Sub CargarTablaTitulosReporteados()
        Dim dt As New DataTable
        Dim Tipo As String = "TitulosReporteados"
        Dim CodigoAsociado As String = ""
        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvReporteados.DataSource = dt
    End Sub


    Sub CargarTablaTitulosRaiz()
        Dim dt As New DataTable
        Dim Tipo As String = "TitulosRaiz"
        Dim CodigoAsociado As String = ""
        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvTitulosRaiz.DataSource = dt
    End Sub


    Sub CargarTablaGenerarMasTitulos()
        Dim dt As New DataTable
        Dim Tipo As String = "GenerarMasTitulos"
        Dim CodigoAsociado As String = ""
        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvGenerarTitulos.DataSource = dt
    End Sub



    Sub CargarTablaDetallesGenerarReporto()
        Dim dt As New DataTable
        Dim Tipo As String = "DetallesGenerarReporto"
        Dim CodigoAsociado As String = dgvColaTitulos.CurrentRow.Cells("CodigoAsociado").Value.ToString

        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvDetalles.DataSource = dt
    End Sub


    Sub CargarTablaDetallesGenerarMasTitulos()
        Dim dt As New DataTable
        Dim Tipo As String = "DetallesGenerarMasTitulos"
        Dim CodigoAsociado As String = dgvGenerarTitulos.CurrentRow.Cells("CodigoAsociado").Value.ToString

        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvDetalles.DataSource = dt
    End Sub




    Sub CargarTablas()
        CargarTablaGenerarReporto()
        CargarTablaGenerarMasTitulos()
        CargarTablaDetallesSinAsignar()
        CargarTablaTituloEspAprobacionPropuesta()
        CargarTablaCancelado()
        CargarTablaTitulosParaReportear()
        CargarTablaTitulosReporteados()
        CargarTablaTitulosRaiz()

    End Sub


    Sub CargarTablaDetallesSinAsignar()
        Dim dt As New DataTable
        Dim Tipo As String = "DetallesTitulosSinAsignar"
        Dim CodigoAsociado As String = String.Empty

        dt = Cola.TablasArbitraje(Tipo, CodigoAsociado)
        dgvColaReportos.DataSource = dt
    End Sub















    Private Sub dgvCola_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvColaReportos.CellClick

        GenerarPropuesta()
    End Sub



    Sub GenerarPropuesta()


        If MsgBox("¿Esta Seguro de Crear Este Titulo?", MsgBoxStyle.OkCancel) = DialogResult.OK Then


            Dim DicDatosInversion As New Dictionary(Of String, String)
            Dim IdSeleccionTitulo As Integer = 0
            Dim CodigoAsociado As String = String.Empty
            Dim CodigoReporto As String = String.Empty
            Dim NombreInstrumento As String = String.Empty
            Dim NombreEmpresa As String = String.Empty
            Dim SaldoAplicadoTitulo As Double = 0
            Dim IdFlujo As Integer = 0
            Dim IdECT As Integer = 0



            CodigoReporto = dgvColaReportos.CurrentRow.Cells("CodigoReporto").Value.ToString
            IdFlujo = Operaciones.ConvertirEntero(dgvColaReportos.CurrentRow.Cells("IdFlujo").Value.ToString)
            IdECT = Operaciones.ConvertirEntero(dgvColaReportos.CurrentRow.Cells("IdECT").Value.ToString)
            CodigoAsociado = dgvColaReportos.CurrentRow.Cells("CodigoAsociado").Value.ToString
            NombreInstrumento = dgvColaReportos.CurrentRow.Cells("CodigoInstrumento").Value.ToString
            NombreEmpresa = dgvColaReportos.CurrentRow.Cells("CodigoEmpresa").Value.ToString
            SaldoAplicadoTitulo = Operaciones.ConvertirDecimal(dgvColaReportos.CurrentRow.Cells("MontoTitulo").Value.ToString)



            DicDatosInversion.Add("CodigoAsociado", CodigoAsociado)
            DicDatosInversion.Add("CodigoReporto", CodigoReporto)
            DicDatosInversion.Add("NombreInstrumento", NombreInstrumento)
            DicDatosInversion.Add("NombreEmpresa", NombreEmpresa)
            DicDatosInversion.Add("SaldoAplicadoTitulo", SaldoAplicadoTitulo)
            DicDatosInversion.Add("IdFlujo", IdFlujo)
            DicDatosInversion.Add("IdECT", IdECT)




            Dim frmGenerarPropuesta As New frmPIN(DicDatosInversion)
            frmGenerarPropuesta.Show()
        End If
    End Sub

    Private Sub dgvColaTitulos_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvColaTitulos.CellClick
        CargarTablaDetallesGenerarReporto()
        OcultarColumnas()
    End Sub

    Private Sub btnGenerarReporto_Click(sender As Object, e As EventArgs) Handles btnGenerarReporto.Click
        CrearReportoVenta()

    End Sub

    Sub CrearReportoVenta()

        If dgvColaTitulos.Rows.Count = 0 Or dgvDetalles.Rows.Count = 0 Then

            MsgBox("No se ha seleccionado una Asociación")
        Else
            Dim CodigoAsociacion As String = String.Empty
            Dim Empresa As String = String.Empty
            Dim MontoGenerado As Double = 0
            Dim Index As Integer = 0
            Dim Cantidad As Integer = dgvDetalles.Rows.Count - 1
            Dim DicDatos As New Dictionary(Of String, Object)
            Dim Coleccion As New Collection
            Dim Monto As Double = 0
            While (Index <= Cantidad)
                Dim DicUnionTablas As New Dictionary(Of String, Object)
                Empresa = dgvDetalles.Rows(Index).Cells("CodigoEmpresa").Value.ToString
                CodigoAsociacion = dgvDetalles.Rows(Index).Cells("CodigoAsociado").Value.ToString
                Monto += Operaciones.ConvertirDecimal(dgvDetalles.Rows(Index).Cells("MontoUsado").Value.ToString)
                DicUnionTablas.Add("CodigoTitulos", dgvDetalles.Rows(Index).Cells("CodigoTitulo").Value.ToString)
                DicUnionTablas.Add("IdFlujo", Operaciones.ConvertirEntero(dgvDetalles.Rows(Index).Cells("IdFlujo").Value.ToString))
                DicUnionTablas.Add("IdLisRep", Operaciones.ConvertirEntero(dgvDetalles.Rows(Index).Cells("IdLisRep").Value.ToString))
                Coleccion.Add(DicUnionTablas)
                Index += 1
            End While
            DicDatos.Add("Empresa", Empresa)
            DicDatos.Add("CodigoAsociacion", CodigoAsociacion)
            DicDatos.Add("MontoUsado", Monto)
            DicDatos.Add("ColUnionTablas", Coleccion)

            Dim frmInv As New frmINV(DicDatos)
            frmInv.Show()
        End If
    End Sub

    Private Sub dgvGenerarTitulos_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvGenerarTitulos.CellClick
        CargarTablaDetallesGenerarMasTitulos()
        OcultarColumnas()
    End Sub

    Private Sub btnGenerarTitulo_Click(sender As Object, e As EventArgs) Handles btnGenerarTitulo.Click

        GenerarTitulo()

    End Sub

    Sub GenerarTitulo()
        If dgvDetalles.Rows.Count <= 0 Then
            MsgBox("No se ha seleccionado una Asociacion")
        Else
            Dim DicDatos As New Dictionary(Of String, Object)
            DicDatos = ObtenerDatosGenerarTitulos()

            Dim GenerarTitulo As New frmSeleccionTitulosReportos(DicDatos)
            GenerarTitulo.Show()
        End If
    End Sub

    Function ObtenerDatosGenerarTitulos() As Dictionary(Of String, Object)

        Dim DicDatos As New Dictionary(Of String, Object)


        Dim CodigoAsociacion As String = String.Empty
        Dim CodigoReporto As String = String.Empty
        Dim Id As Integer = 0
        Dim Empresa As String = String.Empty
        Dim Monto As Double = 0
        Dim Index As Integer = 0
        Dim NombreEmpresa As String = String.Empty
        Dim Cantidad As Integer = dgvDetalles.Rows.Count - 1
        Dim IdFlujo As Integer = 0
        While (Index <= Cantidad)
            Monto += Operaciones.ConvertirDecimal(dgvDetalles.Rows(Index).Cells("MontoUsado").Value.ToString)
            Empresa = dgvDetalles.Rows(Index).Cells("CodigoEmpresa").Value.ToString
            NombreEmpresa = dgvDetalles.Rows(Index).Cells("Empresa").Value.ToString
            If IdFlujo = 0 Then
                IdFlujo = Operaciones.ConvertirEntero(dgvDetalles.Rows(Index).Cells("IdFlujo").Value.ToString)
            End If
                    CodigoReporto = dgvDetalles.Rows(Index).Cells("CodigoReporto").Value
                    Index += 1
        End While





        CodigoAsociacion = dgvGenerarTitulos.CurrentRow.Cells("CodigoAsociado").Value.ToString
        DicDatos.Add("CodigoAsociado", CodigoAsociacion)
        DicDatos.Add("MontoUsado", Monto)
        DicDatos.Add("Empresa", Empresa)
        DicDatos.Add("NombreEmpresa", NombreEmpresa)
        DicDatos.Add("CodigoReporto", CodigoReporto)
        DicDatos.Add("IdFlujo", IdFlujo)
        Return DicDatos


    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        frmSeleccionPoolTitulos.Show()
    End Sub

    Private Sub dgvGeneradosReportos_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvGeneradosReportos.CellContentClick

    End Sub

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

    End Sub

    Private Sub dgvColaReportos_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvColaReportos.CellContentClick

    End Sub

    Private Sub dgvEspApro_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvEspApro.CellContentClick

    End Sub

    Private Sub dgvGeneradosReportos_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvGeneradosReportos.CellClick

    End Sub


    Sub VisualizarFlujo()

        CodigoAsociado = dgvTitulosRaiz.CurrentRow.Cells("CodigoAsociado").Value
        If CodigoAsociado = "Sin Asignar" Then
            MsgBox("Sin Pasado")

        Else
            Dim frmFluArbitraje As New frmFlujoArbitraje(CodigoAsociado)
            frmFluArbitraje.Show()
        End If


    End Sub




    Private Sub dgvTitulosRaiz_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvTitulosRaiz.CellClick
        VisualizarFlujo()
    End Sub

    Private Sub dgvTitulosRaiz_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvTitulosRaiz.CellContentClick

    End Sub

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

    End Sub

    Private Sub dgvDetalles_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvDetalles.CellContentClick

    End Sub
End Class