Imports System.Data.SqlClient
Public Class DAOPropuestaInversion

    Dim CambiarEstArbCE As New CambiarEstArbCE
    Dim da As SqlDataAdapter
    Dim Operaciones As New Operaciones



    Function ExisteInstrumento(ByVal CodigoInversion As String)
        Dim objCon As New Conexion
        Dim valor As Double = 0
        Dim cn As SqlClient.SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        Dim sql = "[dbo].[SP_ExisteTitulo]"
        Dim cmd As New SqlClient.SqlCommand(sql, cn)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add("@CodigoInversion", SqlDbType.VarChar).Value = CodigoInversion
        valor = Operaciones.ConvertirDecimal(cmd.ExecuteScalar)
        cmd.Dispose()
        cn.Dispose()
        If valor = 0 Then
            Return False
        Else
            Return True
        End If
    End Function









    Public Function ListaPropuestasInversion() As DataSet
        Dim objCon As New Conexion
        Dim ds As New DataSet
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        da = New SqlDataAdapter("SP_PROPIN_SELECT", cn)
        da.Fill(ds, "PropuestasDeInversion")
        Return ds

        ds.Dispose()
        da.Dispose()
        cn.Dispose()

    End Function

    Public Function BuscarPropuestasInversion(ByVal ObjPropuesta As CEPropuestaInversion) As DataSet
        Dim objCon As New Conexion
        Dim ds As New DataSet
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        da = New SqlDataAdapter("SP_PROPIN_BUSQUEDA", cn)
        da.SelectCommand.CommandType = CommandType.StoredProcedure

        With da.SelectCommand.Parameters

            .Add("@CodigoPropuesta", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInversion
            .Add("@Asunto", SqlDbType.VarChar).Value = ObjPropuesta.Asunto
            .Add("@Empresa", SqlDbType.VarChar).Value = ObjPropuesta.CodigoEmpresa
            .Add("@InstrumentoFinanciero", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInstrumentoFinanciero
            .Add("@Emisor", SqlDbType.Int).Value = CInt(ObjPropuesta.CodigoEmisor)
            .Add("@CalificacionDeRiesgo", SqlDbType.VarChar).Value = ObjPropuesta.CodigoCalificacionDeRiesgo
            .Add("@CalificadoraDeRiesgo", SqlDbType.VarChar).Value = ObjPropuesta.CodigoEmpresaCalificadora
            .Add("@EstadoDocumento", SqlDbType.VarChar).Value = ObjPropuesta.EstadoDocumento

            .Add("@CodPais", SqlDbType.VarChar).Value = ObjPropuesta.Pais
            .Add("@TipoMerc", SqlDbType.VarChar).Value = ObjPropuesta.TipoMercado
            .Add("@Plazo", SqlDbType.Int).Value = ObjPropuesta.PlazoNumero
            .Add("@PlazoFact", SqlDbType.VarChar).Value = ObjPropuesta.PlazoFactor
            .Add("@MontoInv", SqlDbType.Float).Value = ObjPropuesta.MontoInversion
            .Add("@Precio", SqlDbType.Float).Value = ObjPropuesta.Precio
            .Add("@Rendimiento", SqlDbType.Float).Value = ObjPropuesta.Rendimiento
            .Add("@Ingresos", SqlDbType.Float).Value = ObjPropuesta.Ingresos
            .Add("@OFon", SqlDbType.VarChar).Value = ObjPropuesta.OrigenDeFondos
            .Add("@TipoOper", SqlDbType.VarChar).Value = ObjPropuesta.TipoOperacion
            .Add("@AutEstado", SqlDbType.VarChar).Value = ObjPropuesta.EstadoAutorizacion




        End With

        da.Fill(ds, "Resultado")
        Return ds



    End Function


    Public Function BuscarPropuestasCodigo(ByVal DiccionarioColecciones As Dictionary(Of String, Collection)) As DataSet
        Dim objCon As New Conexion
        Dim ds As New DataSet
        Dim cn = objCon.Conectar
        Dim Col_Empresas As New Collection
        Dim Col_Emisor As New Collection
        Dim Col_EstDocumento As New Collection
        Dim Col_Instrumento As New Collection
        Dim Col_CalRiesgo As New Collection
        Dim Col_TipOperacion As New Collection
        Dim Col_OriFond As New Collection
        Dim Col_CalERiesgo As New Collection
        Dim Col_Aut As New Collection
        Dim Col_Plazo As New Collection
        Dim Col_Pais As New Collection
        Dim Col_TipMercado As New Collection



        For Each Item In DiccionarioColecciones
            If Item.Key = "Empresa" Then
                Col_Empresas = Item.Value
            ElseIf Item.Key = "Emisor" Then

                Col_Emisor = Item.Value

            ElseIf Item.Key = "EstDocumento" Then
                Col_EstDocumento = Item.Value



            ElseIf Item.Key = "Instrumento" Then

                Col_Instrumento = Item.Value


            ElseIf Item.Key = "CalRiesgo" Then

                Col_CalRiesgo = Item.Value


            ElseIf Item.Key = "TipOperacion" Then
                Col_TipOperacion = Item.Value


            ElseIf Item.Key = "OriFond" Then
                Col_OriFond = Item.Value


            ElseIf Item.Key = "CalERiesgo" Then

                Col_CalERiesgo = Item.Value


            ElseIf Item.Key = "Aut" Then

                Col_Aut = Item.Value


            ElseIf Item.Key = "Plazo" Then

                Col_Plazo = Item.Value

            ElseIf Item.Key = "Pais" Then

                Col_Pais = Item.Value

            ElseIf Item.Key = "TipMercado" Then
                Col_TipMercado = Item.Value
            End If
        Next



















        Dim sql As String = "select 
        CAST(DocId as varchar) as 'Id'
        ,CAST(CodInv as varchar) as 'Código de Propuesta'
        ,CAST(DocEst as varchar) as 'Estado'
        ,CAST(Asunto as varchar) as 'Asunto'
        ,CAST(CodEmpr as varchar) as 'Empresa'
        ,CAST(CodIF as varchar) as 'Instrumento Financiero'
        ,CAST(CodEmis as varchar) as 'Emisor'
        ,CAST(CodCalRi as varchar) as 'Calificación de Riesgo'
        ,CAST(CodECalRi as varchar) as 'Empresa Calificadora'
        ,CAST(OFon as varchar) as 'Origen de Fondos'
        ,CAST(Coment as varchar) as 'Comentarios'
        ,CAST(Just as varchar) as 'Justificaciones'
        ,CAST(TipoOper as varchar)  as 'Tipo de Operacion'
        ,CAST(DocBase as varchar) as 'Base de Calculo'
        ,CAST(MontoInv as varchar) as 'Monto de Inversion'
        ,CAST(Precio as varchar) as 'Precio'
        ,CAST(Rendimiento as varchar) as 'Rendimiento'
        ,CAST(Plazo as varchar)   as 'Cantidad en Plazo'
        ,CAST(PlazoFact as varchar) as 'Tipo de Plazo'
        ,CAST(Ingresos as varchar) as 'Ingresos'
        ,CAST(FechaDoc as varchar) as 'Fecha de Creación'
        ,CAST(AutEstado as varchar) as 'Estado de Autorización'
        ,CAST(TipoMerc as varchar) as 'Tipo de Mercado'
        ,CAST(CodPais as varchar) as 'Pais'
        from PIN0 where 1=1 
 "




        Dim TodosEmpresas As Boolean = False
        Dim TodosEmisor As Boolean = False
        Dim TodosEstDocumento As Boolean = False
        Dim TodosInstrumento As Boolean = False
        Dim TodosCalRiesgo As Boolean = False
        Dim TodosTipOperacion As Boolean = False
        Dim TodosOriFond As Boolean = False
        Dim TodosCalERiesgo As Boolean = False
        Dim TodosAut As Boolean = False
        Dim TodosPlazo As Boolean = False
        Dim TodosPais As Boolean = False
        Dim TodosTipMercado As Boolean = False


        For Each Item In Col_Empresas
            If Not Item.IndexOf("Todos") = -1 Then
                TodosEmpresas = True
            End If
        Next
        For Each Item In Col_Emisor
            If Not Item.IndexOf("Todos") = -1 Then
                TodosEmisor = True
            End If
        Next
        For Each Item In Col_EstDocumento
            If Not Item.IndexOf("Todos") = -1 Then
                TodosEstDocumento = True
            End If
        Next
        For Each Item In Col_Instrumento
            If Not Item.IndexOf("Todos") = -1 Then
                TodosInstrumento = True
            End If
        Next
        For Each Item In Col_CalRiesgo
            If Not Item.IndexOf("Todos") = -1 Then
                TodosCalRiesgo = True
            End If
        Next
        For Each Item In Col_TipOperacion
            If Not Item.IndexOf("Todos") = -1 Then
                TodosTipOperacion = True
            End If
        Next
        For Each Item In Col_OriFond
            If Not Item.IndexOf("Todos") = -1 Then
                TodosOriFond = True
            End If
        Next
        For Each Item In Col_CalERiesgo
            If Not Item.IndexOf("Todos") = -1 Then
                TodosCalERiesgo = True
            End If
        Next
        For Each Item In Col_Aut
            TodosAut = True
        Next
        For Each Item In Col_Plazo
            If Not Item.IndexOf("Todos") = -1 Then
                TodosPlazo = True
            End If
        Next
        For Each Item In Col_Pais
            If Not Item.IndexOf("Todos") = -1 Then
                TodosPais = True
            End If
        Next
        For Each Item In Col_TipMercado

            If Not Item.IndexOf("Todos") = -1 Then
                TodosTipMercado = True
            End If
        Next



        Dim OperadorLogico As String = String.Empty
        OperadorLogico = " And ("
        Dim Fin As String = String.Empty



        If Not TodosEmpresas Then


            For Each Item In Col_Empresas
                Dim Cadena As String = Col_Empresas.ToString


                Dim NombreItem As String = Item.ToString.Trim
                Dim ConsultaExtra As String = "" + OperadorLogico + " CodEmpr like '%" + NombreItem + "%'"
                sql += ConsultaExtra
                OperadorLogico = " Or"
                Fin = ")"
            Next

            If Not String.IsNullOrEmpty(Fin) Then
                sql += Fin
            End If
            Fin = String.Empty
            OperadorLogico = " And ("
        End If


        If Not TodosEmisor Then


            For Each Item In Col_Emisor
                Dim NombreItem As String = Item.ToString.Trim
                Dim ConsultaExtra As String = " " + OperadorLogico + " CodEmis like '%" + NombreItem + "%'"
                sql += ConsultaExtra
                OperadorLogico = " Or"
                Fin = ")"
            Next







            If Not String.IsNullOrEmpty(Fin) Then
                sql += Fin
            End If
            Fin = String.Empty
            OperadorLogico = " And ("
        End If

        If Not TodosEstDocumento Then



            For Each Item In Col_EstDocumento
                Dim NombreItem As String = Item.ToString.Trim
                Dim ConsultaExtra As String = " " + OperadorLogico + " DocEst like '%" + NombreItem + "%'"
                sql += ConsultaExtra
                OperadorLogico = " Or"
                Fin = ")"
            Next
            If Not String.IsNullOrEmpty(Fin) Then
                sql += Fin
            End If
            Fin = String.Empty
            OperadorLogico = " And ("

        End If




        If Not TodosInstrumento Then


            For Each Item In Col_Instrumento
                Dim NombreItem As String = Item.ToString.Trim
                Dim ConsultaExtra As String = " " + OperadorLogico + " CodIF  like '%" + NombreItem + "%'"
                sql += ConsultaExtra
                OperadorLogico = " Or"
                Fin = ")"
            Next
            If Not String.IsNullOrEmpty(Fin) Then
                sql += Fin
            End If
            Fin = String.Empty
            OperadorLogico = " And ("

        End If
        If Not TodosCalRiesgo Then


            For Each Item In Col_CalRiesgo
            Dim NombreItem As String = Item.ToString.Trim
            Dim ConsultaExtra As String = " " + OperadorLogico + " CodCalRi   like '%" + NombreItem + "%'"
            sql += ConsultaExtra
            OperadorLogico = " Or"
            Fin = ")"
        Next
        If Not String.IsNullOrEmpty(Fin) Then
            sql += Fin
        End If
        Fin = String.Empty
            OperadorLogico = " And ("
        End If

        If Not TodosTipOperacion Then


            For Each Item In Col_TipOperacion
            Dim NombreItem As String = Item.ToString.Trim
            Dim ConsultaExtra As String = "" + OperadorLogico + " TipoOper   like '%" + NombreItem + "%'"
            sql += ConsultaExtra
            OperadorLogico = " Or"
            Fin = ")"
        Next
        If Not String.IsNullOrEmpty(Fin) Then
            sql += Fin
        End If
        Fin = String.Empty
            OperadorLogico = " And ("
        End If


        If Not TodosOriFond Then


            For Each Item In Col_OriFond
            Dim NombreItem As String = Item.ToString.Trim
            Dim ConsultaExtra As String = " " + OperadorLogico + " OFon  like '%" + NombreItem + "%'"
            sql += ConsultaExtra
            OperadorLogico = " Or"
            Fin = ")"
        Next
        If Not String.IsNullOrEmpty(Fin) Then
            sql += Fin
        End If
        Fin = String.Empty
            OperadorLogico = " And ("
        End If

        If Not TodosCalERiesgo Then


            For Each Item In Col_CalERiesgo
            Dim NombreItem As String = Item.ToString.Trim
            Dim ConsultaExtra As String = " " + OperadorLogico + " CodECalRi  like '%" + NombreItem + "%'"
            sql += ConsultaExtra
            OperadorLogico = " Or"
            Fin = ")"
        Next
        If Not String.IsNullOrEmpty(Fin) Then
            sql += Fin
        End If
        Fin = String.Empty
            OperadorLogico = " And ("
        End If

        If Not TodosAut Then



            For Each Item In Col_Aut
            Dim NombreItem As String = Item.ToString.Trim
            Dim ConsultaExtra As String = " " + OperadorLogico + " AutEstado  like '%" + NombreItem + "%'"
            sql += ConsultaExtra
            OperadorLogico = " Or"
            Fin = ")"
        Next
        If Not String.IsNullOrEmpty(Fin) Then
            sql += Fin
        End If
        Fin = String.Empty
            OperadorLogico = " And ("
        End If


        If Not TodosPlazo Then


            For Each Item In Col_Plazo
            Dim NombreItem As String = Item.ToString.Trim
            Dim ConsultaExtra As String = " " + OperadorLogico + " PlazoFact   like '%" + NombreItem + "%'"
            sql += ConsultaExtra
            OperadorLogico = " Or"
            Fin = ")"
        Next
        If Not String.IsNullOrEmpty(Fin) Then
            sql += Fin
        End If
        Fin = String.Empty
            OperadorLogico = " And ("
        End If
        If Not TodosPais Then



            For Each Item In Col_Pais
            Dim NombreItem As String = Item.ToString.Trim
            Dim ConsultaExtra As String = " " + OperadorLogico + " CodPais   like '%" + NombreItem + "%'"
            sql += ConsultaExtra
            OperadorLogico = " Or"
            Fin = ")"
        Next
        If Not String.IsNullOrEmpty(Fin) Then
            sql += Fin
        End If
        Fin = String.Empty
            OperadorLogico = " And ("
        End If
        If Not TodosTipMercado Then



            For Each Item In Col_TipMercado
                Dim NombreItem As String = Item.ToString.Trim
                Dim ConsultaExtra As String = " " + OperadorLogico + " TipoMerc   like '%" + NombreItem + "%'"
                sql += ConsultaExtra
                OperadorLogico = " Or"
                Fin = ")"
            Next

            If Not String.IsNullOrEmpty(Fin) Then
                sql += Fin
            End If
            Fin = String.Empty
        End If
        If cn Is Nothing Then
            cn = objCon.Conectar
        End If
        If cn.State = ConnectionState.Open Then
            cn.Close()
            cn.Dispose()
            cn = objCon.Conectar
            cn.Open()
        Else
            cn = objCon.Conectar
            cn.Open()
        End If
        da = New SqlDataAdapter(sql, cn)
        da.SelectCommand.CommandType = CommandType.Text

        da.Fill(ds, "Resultado")

        Return ds



    End Function


    Public Function ListaEstadoDocumento() As DataSet
        Dim objCon As New Conexion
        Dim ds As New DataSet
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        da = New SqlDataAdapter("SP_ListaEstadoDocumento", cn)
        da.Fill(ds, "EstadosDocumento")

        da.Dispose()
        cn.Dispose()
        Return ds


    End Function

    Public Function NuevaPropuesta(ByVal ObjPropuesta As CEPropuestaInversion, ByVal CodigoAsociado As String, ByVal EstadoReporto As String, ByVal CodigoReporto As String, ByVal IdFlujo As Integer, ByVal IdECT As Integer)
        Dim objCon As New Conexion
        Dim Transaccion As SqlTransaction
        Dim query As String
        Dim Retornar As Boolean
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        If String.IsNullOrEmpty(CodigoAsociado) Then
            CodigoAsociado = String.Empty
        End If


        Dim Retorno As Integer
        Dim NuevoDocId As Integer




        Dim cmd As SqlCommand = cn.CreateCommand

        Transaccion = cn.BeginTransaction("NuevaPropuesta")

        cmd.Connection = cn
        cmd.Transaction = Transaccion

        'TRAE ULTIMO DOCID
        cmd.CommandText = "SELECT ISNULL(MAX(DocId),0) FROM [dbo].[PIN0]"
        NuevoDocId = cmd.ExecuteScalar()
        NuevoDocId = NuevoDocId + 1


        query = "INSERT INTO [dbo].[PIN0]
           ([CodInv]
           ,[DocEst]
           ,[Asunto]
           ,[CodEmpr]
           ,[CodIF]
           ,[CodEmis]
           ,[CodCalRi]
           ,[CodECalRi]
           ,[OFon]
           ,[Coment]
           ,[Just]
           ,[TipoOper]
           ,[MontoInv]
           ,[Precio]
           ,[Rendimiento]
           ,[Plazo]
           ,[PlazoFact]
           ,[Ingresos]
           ,[FechaDoc]
           ,[AutEstado]
           ,[TipoMerc]
           ,[CodPais]
           ,[TipoRenta]
           ,[TipoTasa]
           ,[Periodicidad]
           ,[NombreManual]
           ,[CodigoAsociado]
           ,[EstadoReporto]   

)
     VALUES
           (@CodInv
           ,@DocEst
           ,@Asunto
           ,@CodEmpr
           ,@CodIF
           ,@CodEmis
           ,@CodCalRi
           ,@CodECalRi
           ,@OFon
           ,@Coment
           ,@Just
           ,@TipoOper
           ,@MontoInv
           ,@Precio
           ,@Rendimiento
           ,@Plazo
           ,@PlazoFact
           ,@Ingresos
           ,@FechaDoc
           ,@AutEstado
           ,@TipoMerc
           ,@CodPais
           ,@TipoRenta
           ,@TipoTasa
           ,@Periodicidad
           ,@NombreManual
           ,@CodigoAsociado
           ,@EstadoReporto 
		   )"

        cmd.CommandText = query

        With cmd.Parameters

            .Add("@CodInv", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInversion.ToString
            .Add("@DocEst", SqlDbType.VarChar).Value = ObjPropuesta.EstadoDocumento.ToString
            .Add("@Asunto", SqlDbType.VarChar).Value = ObjPropuesta.Asunto.ToString
            .Add("@CodEmpr", SqlDbType.VarChar).Value = ObjPropuesta.CodigoEmpresa.ToString
            .Add("@CodIF", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInstrumentoFinanciero.ToString
            .Add("@CodEmis", SqlDbType.Int).Value = ObjPropuesta.CodigoEmisor.ToString
            .Add("@CodCalRi", SqlDbType.VarChar).Value = ObjPropuesta.CodigoCalificacionDeRiesgo.ToString
            .Add("@CodECalRi", SqlDbType.VarChar).Value = ObjPropuesta.CodigoEmpresaCalificadora.ToString
            .Add("@OFon", SqlDbType.VarChar).Value = ObjPropuesta.OrigenDeFondos.ToString
            .Add("@Coment", SqlDbType.VarChar).Value = ObjPropuesta.Comentarios.ToString
            .Add("@Just", SqlDbType.VarChar).Value = ObjPropuesta.Justificacion.ToString
            .Add("@TipoOper", SqlDbType.VarChar).Value = ObjPropuesta.TipoOperacion.ToString
            .Add("@MontoInv", SqlDbType.Float).Value = ObjPropuesta.MontoInversion.ToString
            .Add("@Precio", SqlDbType.Float).Value = ObjPropuesta.Precio.ToString
            .Add("@Rendimiento", SqlDbType.Float).Value = ObjPropuesta.Rendimiento.ToString
            .Add("@Plazo", SqlDbType.Int).Value = ObjPropuesta.PlazoNumero.ToString
            .Add("@PlazoFact", SqlDbType.VarChar).Value = ObjPropuesta.PlazoFactor.ToString
            .Add("@Ingresos", SqlDbType.Float).Value = ObjPropuesta.Ingresos.ToString
            .Add("@FechaDoc", SqlDbType.Date).Value = ObjPropuesta.FechaDocumento.ToString
            .Add("@AutEstado", SqlDbType.VarChar).Value = ObjPropuesta.EstadoAutorizacion.ToString
            .Add("@TipoMerc", SqlDbType.VarChar).Value = ObjPropuesta.TipoMercado.ToString
            .Add("@CodPais", SqlDbType.VarChar).Value = ObjPropuesta.Pais.ToString

            .Add("@TipoRenta", SqlDbType.VarChar).Value = ObjPropuesta.TipoRenta.ToString
            .Add("@TipoTasa", SqlDbType.VarChar).Value = ObjPropuesta.TipoTasa.ToString
            .Add("@Periodicidad", SqlDbType.VarChar).Value = ObjPropuesta.Periodicidad.ToString
            .Add("@NombreManual", SqlDbType.VarChar).Value = ObjPropuesta.NombreManual.ToString
            .Add("@CodigoAsociado", SqlDbType.VarChar).Value = CodigoAsociado.ToString
            .Add("@EstadoReporto", SqlDbType.VarChar).Value = EstadoReporto.ToString
        End With
        cmd.CommandText = query
        cmd.Transaction = Transaccion
        Retorno = cmd.ExecuteNonQuery

        ''Ingresar codigo


        '#####################################################################'






        cmd = New SqlCommand
        query = " INSERT INTO TitEspApro(
                         [CodigoAsociado]
                        ,[CodigoReporto]
                        ,[CodigoNuevoTitulo]
                        ,[CodigoEstado]
                        ,[Nombre]
                        ,[Descrip]
                        ,[IdFlujo]
                        ,[IdECT]


) VALUES(

                         @CodigoAsociado
                        ,@CodigoReporto
                        ,@CodigoNuevoTitulo
                        ,@CodigoEstado
                        ,@Nombre
                        ,@Descrip
                        ,@IdFlujo
                        ,@IdECT

)"
        cmd.CommandText = query

        With cmd.Parameters
            .Add("@CodigoAsociado", SqlDbType.VarChar).Value = CodigoAsociado.ToString
            .Add("@CodigoReporto", SqlDbType.VarChar).Value = CodigoReporto
            .Add("@CodigoNuevoTitulo", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInversion.ToString
            .Add("@CodigoEstado", SqlDbType.VarChar).Value = "TG"
            .Add("@Nombre", SqlDbType.VarChar).Value = "Titulo Generado"
            .Add("@Descrip", SqlDbType.VarChar).Value = "Titulo Generado Esperando Aprobación"
            .Add("@IdFlujo", SqlDbType.Int).Value = IdFlujo
            .Add("@IdECT", SqlDbType.Int).Value = IdECT

        End With
        cmd.Connection = cn
        cmd.Transaction = Transaccion
        Retorno = cmd.ExecuteNonQuery



        query = "INSERT INTO [dbo].[Propuesta]
                   ([CodigoPropuesta]
                    ,[Nombre]
                    ,[Descrip]
                    ,[Estado]
        )
             VALUES
                   (@CodigoPropuesta
                    ,@Nombre
                    ,@Descrip
                    ,@Estado
        		   )"




        cmd = New SqlCommand
        cmd.CommandText = query
        cmd.Connection = cn


        With cmd.Parameters
            .Add("@CodigoPropuesta", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInversion.ToString
            .Add("@Nombre", SqlDbType.VarChar).Value = "ProCre"
            .Add("@Descrip", SqlDbType.VarChar).Value = "Propuesta de Inversion Inicial Creada"
            .Add("@Estado", SqlDbType.VarChar).Value = "En Propuesta"
        End With
        cmd.Transaction = Transaccion
        Retorno = cmd.ExecuteNonQuery
        Try




            Transaccion.Commit()
            MsgBox("Registro Guardado")
            Retornar = True

            frmColaTitulos.Inicializacion()

        Catch ex As Exception
            MsgBox("Error en Transaccion: " & ex.GetType.ToString)
            MsgBox("Mensaje: " & ex.Message)

            Try
                Transaccion.Rollback()
            Catch ex2 As Exception
                MsgBox("Error en Rollback: " & ex.GetType.ToString)
                MsgBox("Mensaje Rollbak: " & ex.Message)
            End Try
            Retornar = False
        End Try

        cmd.Dispose()
        da.Dispose()
        cn.Dispose()

        Return Retornar
    End Function




    Public Function NuevaPropuesta(ByVal ObjPropuesta As CEPropuestaInversion, ByVal TipoProcesoCMVTA As String, ByVal CodigoInversionCMVTA As String)
        Dim objCon As New Conexion
        Dim query As String
        Dim Retornar As Boolean
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If



        Dim myTrans As SqlTransaction
        myTrans = cn.BeginTransaction()
        Dim Retorno As Integer
        Dim cmd As SqlCommand = cn.CreateCommand
        'TRAE ULTIMO DOCID
        'cmd.CommandText = "SELECT ISNULL(MAX(DocId),0) FROM [dbo].[PIN0]"

        query = "INSERT INTO [dbo].[PIN0]
           ([CodInv]
           ,[DocEst]
           ,[Asunto]
           ,[CodEmpr]
           ,[CodIF]
           ,[CodEmis]
           ,[CodCalRi]
           ,[CodECalRi]
           ,[OFon]
           ,[Coment]
           ,[Just]
           ,[TipoOper]
           ,[MontoInv]
           ,[Precio]
           ,[Rendimiento]
           ,[Plazo]
           ,[PlazoFact]
           ,[Ingresos]
           ,[FechaDoc]
           ,[AutEstado]
           ,[TipoMerc]
           ,[CodPais]
           ,[TipoRenta]
           ,[TipoTasa]
           ,[Periodicidad]
           ,[NombreManual]
           ,[EstadoReporto]

)
     VALUES
           (@CodInv
           ,@DocEst
           ,@Asunto
           ,@CodEmpr
           ,@CodIF
           ,@CodEmis
           ,@CodCalRi
           ,@CodECalRi
           ,@OFon
           ,@Coment
           ,@Just
           ,@TipoOper
           ,@MontoInv
           ,@Precio
           ,@Rendimiento
           ,@Plazo
           ,@PlazoFact
           ,@Ingresos
           ,@FechaDoc
           ,@AutEstado
           ,@TipoMerc
           ,@CodPais
           ,@TipoRenta
           ,@TipoTasa
           ,@Periodicidad
           ,@NombreManual
           ,@EstadoReporto
		   )"

        cmd = New SqlCommand
        cmd.CommandText = query
        cmd.Connection = cn






        cmd.Transaction = myTrans

        With cmd.Parameters

            .Add("@CodInv", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInversion.ToString
            .Add("@DocEst", SqlDbType.VarChar).Value = ObjPropuesta.EstadoDocumento.ToString
            .Add("@Asunto", SqlDbType.VarChar).Value = ObjPropuesta.Asunto.ToString
            .Add("@CodEmpr", SqlDbType.VarChar).Value = ObjPropuesta.CodigoEmpresa.ToString
            .Add("@CodIF", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInstrumentoFinanciero.ToString
            .Add("@CodEmis", SqlDbType.Int).Value = ObjPropuesta.CodigoEmisor.ToString
            .Add("@CodCalRi", SqlDbType.VarChar).Value = ObjPropuesta.CodigoCalificacionDeRiesgo.ToString
            .Add("@CodECalRi", SqlDbType.VarChar).Value = ObjPropuesta.CodigoEmpresaCalificadora.ToString
            .Add("@OFon", SqlDbType.VarChar).Value = ObjPropuesta.OrigenDeFondos.ToString
            .Add("@Coment", SqlDbType.VarChar).Value = ObjPropuesta.Comentarios.ToString
            .Add("@Just", SqlDbType.VarChar).Value = ObjPropuesta.Justificacion.ToString
            .Add("@TipoOper", SqlDbType.VarChar).Value = ObjPropuesta.TipoOperacion.ToString
            .Add("@MontoInv", SqlDbType.Float).Value = ObjPropuesta.MontoInversion.ToString
            .Add("@Precio", SqlDbType.Float).Value = ObjPropuesta.Precio.ToString
            .Add("@Rendimiento", SqlDbType.Float).Value = ObjPropuesta.Rendimiento.ToString
            .Add("@Plazo", SqlDbType.Int).Value = ObjPropuesta.PlazoNumero.ToString
            .Add("@PlazoFact", SqlDbType.VarChar).Value = ObjPropuesta.PlazoFactor.ToString
            .Add("@Ingresos", SqlDbType.Float).Value = ObjPropuesta.Ingresos.ToString
            .Add("@FechaDoc", SqlDbType.Date).Value = ObjPropuesta.FechaDocumento.ToString
            .Add("@AutEstado", SqlDbType.VarChar).Value = ObjPropuesta.EstadoAutorizacion.ToString
            .Add("@TipoMerc", SqlDbType.VarChar).Value = ObjPropuesta.TipoMercado.ToString
            .Add("@CodPais", SqlDbType.VarChar).Value = ObjPropuesta.Pais.ToString

            .Add("@TipoRenta", SqlDbType.VarChar).Value = ObjPropuesta.TipoRenta.ToString
            .Add("@TipoTasa", SqlDbType.VarChar).Value = ObjPropuesta.TipoTasa.ToString
            .Add("@Periodicidad", SqlDbType.VarChar).Value = ObjPropuesta.Periodicidad.ToString
            .Add("@NombreManual", SqlDbType.VarChar).Value = ObjPropuesta.NombreManual.ToString
            .Add("@EstadoReporto", SqlDbType.VarChar).Value = "PRIMARIO"
        End With
        cmd.CommandText = query

        Retorno = cmd.ExecuteNonQuery

        ''Ingresar codigo


        '#####################################################################'


        cmd = New SqlCommand





        query = "INSERT INTO [dbo].[Propuesta]
                   ([CodigoPropuesta]
                    ,[Nombre]
                    ,[Descrip]
                    ,[Estado]
        )
             VALUES
                   (@CodigoPropuesta
                    ,@Nombre
                    ,@Descrip
                    ,@Estado
        		   )"





        cmd.CommandText = query
        cmd.Connection = cn
        cmd.Transaction = myTrans

        With cmd.Parameters
            .Add("@CodigoPropuesta", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInversion.ToString
            .Add("@Nombre", SqlDbType.VarChar).Value = "ProCre"
            .Add("@Descrip", SqlDbType.VarChar).Value = "Propuesta de Inversion Inicial Creada"
            .Add("@Estado", SqlDbType.VarChar).Value = "En Propuesta"
        End With


        Retornar = cmd.ExecuteNonQuery

        ''###############################################################
        ''###############################################################
        If TipoProcesoCMVTA = "V" Then


            cmd = New SqlCommand
            query = "INSERT INTO [dbo].[OPERCMVTA]
                   ([FechaOperacion]
                    ,[CodigoInversionCompra]
                    ,[CodigoInversionVenta]
                    ,[TipoFlujo]
        )
             VALUES
                   (@FechaOperacion
                    ,@CodigoInversionCompra
                    ,@CodigoInversionVenta
                    ,@TipoFlujo
        		   )"





            cmd.CommandText = query
            cmd.Connection = cn
            cmd.Transaction = myTrans

            With cmd.Parameters
                .Add("@FechaOperacion", SqlDbType.Date).Value = Date.Now.Date
                .Add("@CodigoInversionCompra", SqlDbType.VarChar).Value = CodigoInversionCMVTA
                .Add("@CodigoInversionVenta", SqlDbType.VarChar).Value = ObjPropuesta.CodigoInversion.ToString
                .Add("@TipoFlujo", SqlDbType.VarChar).Value = "C-V"
            End With


            Retornar = cmd.ExecuteNonQuery

        End If
        Try

            myTrans.Commit()
            MsgBox("Propuesta Guardada")
        Catch ex As Exception
            MsgBox("Error en Transaccion: " & ex.GetType.ToString)
            MsgBox("Mensaje: " & ex.Message)

            Try
                myTrans.Rollback()
            Catch ex2 As Exception
                MsgBox("Error en Rollback: " & ex.GetType.ToString)
                MsgBox("Mensaje Rollbak: " & ex.Message)
            End Try
        End Try




        cmd.Dispose()
        da.Dispose()
        cn.Dispose()

        Return Retornar
    End Function













    Public Function IdRegistro(CodigoInversion As String) As Integer
        Dim objCon As New Conexion
        Dim vRetorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand = New SqlCommand
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        sql = "SELECT DocId from [dbo].[PIN0] WHERE CodInv=@CodInv "

        cmd.CommandText = sql

        cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = CodigoInversion

        cmd.Connection = cn

        vRetorno = cmd.ExecuteScalar

        cn.Close()
        Return vRetorno
    End Function

    Public Function IdRegistroInversion(CodigoInversion As String) As Integer
        Dim objCon As New Conexion
        Dim vRetorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand = New SqlCommand
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        sql = "SELECT DocId from [dbo].[INV0] WHERE CodInv=@CodInv "

        cmd.CommandText = sql

        cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = CodigoInversion

        cmd.Connection = cn

        vRetorno = cmd.ExecuteScalar

        cn.Close()
        Return vRetorno
    End Function



    Public Function IdPropuesta(CodigoInversion As String) As Integer
        Dim objCon As New Conexion
        Dim vRetorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand = New SqlCommand
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        sql = "SELECT IdProInv from [dbo].[Propuesta] WHERE CodigoPropuesta=@CodigoPropuesta"

        cmd.CommandText = sql

        cmd.Parameters.Add("@CodigoPropuesta", SqlDbType.VarChar).Value = CodigoInversion

        cmd.Connection = cn

        vRetorno = cmd.ExecuteScalar

        cn.Close()
        Return vRetorno
    End Function












    Public Function CargarPropuesta(Id As Integer) As CEPropuestaInversion
        Dim objCon As New Conexion
        Dim oPropuesta As CEPropuestaInversion = New CEPropuestaInversion
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        Dim drd As SqlDataReader
        Try

            da = New SqlDataAdapter("SP_PROPIN_CARGAR", cn)
            da.SelectCommand.CommandType = CommandType.StoredProcedure

            With da.SelectCommand.Parameters
                .Add("@IdPropuesta", SqlDbType.Int).Value = Id
            End With


            drd = da.SelectCommand.ExecuteReader()
            If drd.HasRows Then
                oPropuesta.IdDeDocumento = Id

            End If

            If drd.Read Then
                oPropuesta.CodigoInversion = drd.Item("CodInv").ToString
                oPropuesta.EstadoDocumento = drd.Item("DocEst").ToString
                oPropuesta.TipoOperacion = drd.Item("TipoOper").ToString
                oPropuesta.Asunto = drd.Item("Asunto").ToString
                oPropuesta.CodigoEmpresa = drd.Item("CodEmpr").ToString
                oPropuesta.CodigoInstrumentoFinanciero = drd.Item("CodIF").ToString
                oPropuesta.CodigoEmisor = Operaciones.ConvertirEntero(drd.Item("CodEmis").ToString)
                oPropuesta.CodigoCalificacionDeRiesgo = drd.Item("CodCalRi").ToString
                oPropuesta.CodigoEmpresaCalificadora = drd.Item("CodECalRi").ToString
                oPropuesta.OrigenDeFondos = drd.Item("OFon").ToString
                oPropuesta.Justificacion = drd.Item("Just").ToString
                oPropuesta.Comentarios = drd.Item("Coment").ToString
                oPropuesta.MontoInversion = Operaciones.ConvertirDecimal(drd.Item("MontoInv").ToString)
                oPropuesta.Precio = Operaciones.ConvertirDecimal(drd.Item("Precio").ToString)
                oPropuesta.Rendimiento = Operaciones.ConvertirDecimal(drd.Item("Rendimiento").ToString)
                oPropuesta.PlazoNumero = Operaciones.ConvertirEntero(drd.Item("Plazo").ToString)
                oPropuesta.PlazoFactor = drd.Item("PlazoFact").ToString
                oPropuesta.Ingresos = Operaciones.ConvertirDecimal(drd.Item("Ingresos").ToString)
                oPropuesta.FechaDocumento = Operaciones.ConvertirFecha(drd.Item("FechaDoc").ToString)
                oPropuesta.EstadoAutorizacion = drd.Item("AutEstado").ToString
                oPropuesta.TipoMercado = drd.Item("TipoMerc").ToString
                oPropuesta.Pais = drd.Item("CodPais").ToString
                oPropuesta.TipoRenta = drd.Item("TipoRenta").ToString
                oPropuesta.TipoTasa = drd.Item("TipoTasa").ToString
                oPropuesta.Periodicidad = drd.Item("Periodicidad").ToString
                oPropuesta.NombreManual = drd.Item("NombreManual").ToString
                oPropuesta.IdFlujo = Operaciones.ConvertirEntero(Operaciones.ConvertirDecimal(drd.Item("IdFlujo").ToString))
                oPropuesta.IdEA = Operaciones.ConvertirEntero(Operaciones.ConvertirDecimal(drd.Item("IdEA").ToString))
                oPropuesta.EstadoReporto = drd.Item("EstadoReporto").ToString
                oPropuesta.CodigoAsociado = drd.Item("CodigoAsociado").ToString
            End If
            drd.Close()
        Catch ex As Exception
            MsgBox("Error", MsgBoxStyle.Critical)
            MsgBox(ex.Message)
        Finally

            da.Dispose()
            cn.Dispose()
        End Try

        Return oPropuesta
    End Function
    Public Function Actualizar(ByVal oPropuestaCE As CEPropuestaInversion, ByVal parametro As String, ByVal EstadoReporto As String) As Integer
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim Transaccion As SqlTransaction
        Dim query As String
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        Dim cmd As SqlCommand = cn.CreateCommand

        Transaccion = cn.BeginTransaction("ActualizarPropuesta")
        Try
            cmd.Connection = cn
            cmd.Transaction = Transaccion

            query = "UPDATE [dbo].[PIN0]
   SET 
      [CodInv] = @CodInv
      ,[DocEst] = @DocEst
      ,[Asunto] = @Asunto
      ,[CodEmpr] = @CodEmpr
      ,[CodIF] = @CodIF
      ,[CodEmis] = @CodEmis
      ,[CodCalRi] = @CodCalRi
      ,[CodECalRi] = @CodECalRi
      ,[OFon] = @OFon
      ,[Coment] = @Coment
      ,[Just] = @Just
      ,[TipoOper] = @TipoOper
      ,[MontoInv] = @MontoInv
      ,[Precio] = @Precio
      ,[Rendimiento] = @Rendimiento
      ,[Plazo] = @Plazo
      ,[PlazoFact] = @PlazoFact
      ,[Ingresos] = @Ingresos
      ,[FechaDoc] = @FechaDoc
      ,[AutEstado] = @AutEstado
	  ,[TipoMerc] = @TipoMerc
      ,[CodPais] = @CodPais

           ,[TipoRenta]=@TipoRenta
           ,[TipoTasa]=@TipoTasa
           ,[Periodicidad]=@Periodicidad
           ,[NombreManual]=@NombreManual


 WHERE [CodInv] = @CodInv"

            cmd.CommandText = query

            With cmd.Parameters
                .Add("@DocId", SqlDbType.VarChar).Value = oPropuestaCE.IdDeDocumento
                .Add("@CodInv", SqlDbType.VarChar).Value = parametro
                .Add("@DocEst", SqlDbType.VarChar).Value = oPropuestaCE.EstadoDocumento
                .Add("@Asunto", SqlDbType.VarChar).Value = oPropuestaCE.Asunto
                .Add("@CodEmpr", SqlDbType.VarChar).Value = oPropuestaCE.CodigoEmpresa
                .Add("@CodIF", SqlDbType.VarChar).Value = oPropuestaCE.CodigoInstrumentoFinanciero
                .Add("@CodEmis", SqlDbType.Int).Value = oPropuestaCE.CodigoEmisor
                .Add("@CodCalRi", SqlDbType.VarChar).Value = oPropuestaCE.CodigoCalificacionDeRiesgo
                .Add("@CodECalRi", SqlDbType.VarChar).Value = oPropuestaCE.CodigoEmpresaCalificadora
                .Add("@OFon", SqlDbType.VarChar).Value = oPropuestaCE.OrigenDeFondos
                .Add("@Coment", SqlDbType.VarChar).Value = oPropuestaCE.Comentarios
                .Add("@Just", SqlDbType.VarChar).Value = oPropuestaCE.Justificacion
                .Add("@TipoOper", SqlDbType.VarChar).Value = oPropuestaCE.TipoOperacion
                .Add("@MontoInv", SqlDbType.Float).Value = oPropuestaCE.MontoInversion
                .Add("@Precio", SqlDbType.Float).Value = oPropuestaCE.Precio
                .Add("@Rendimiento", SqlDbType.Float).Value = oPropuestaCE.Rendimiento
                .Add("@Plazo", SqlDbType.Int).Value = oPropuestaCE.PlazoNumero
                .Add("@PlazoFact", SqlDbType.VarChar).Value = oPropuestaCE.PlazoFactor
                .Add("@Ingresos", SqlDbType.Float).Value = oPropuestaCE.Ingresos
                .Add("@FechaDoc", SqlDbType.Date).Value = oPropuestaCE.FechaDocumento
                .Add("@AutEstado", SqlDbType.VarChar).Value = oPropuestaCE.EstadoAutorizacion
                .Add("@TipoMerc", SqlDbType.VarChar).Value = oPropuestaCE.TipoMercado
                .Add("@CodPais", SqlDbType.VarChar).Value = oPropuestaCE.Pais
                .Add("@TipoRenta", SqlDbType.VarChar).Value = oPropuestaCE.TipoRenta.ToString
                .Add("@TipoTasa", SqlDbType.VarChar).Value = oPropuestaCE.TipoTasa.ToString
                .Add("@Periodicidad", SqlDbType.VarChar).Value = oPropuestaCE.Periodicidad.ToString
                .Add("@NombreManual", SqlDbType.VarChar).Value = oPropuestaCE.NombreManual.ToString
            End With


            retorno = cmd.ExecuteNonQuery()

            If oPropuestaCE.OrigenDeFondos = "REPOVENTA" Then
                EstadoReporto = "SECUNDARIO"
            End If


            If oPropuestaCE.EstadoAutorizacion = "C" Or oPropuestaCE.EstadoAutorizacion = "R" And EstadoReporto = "SECUNDARIO" Then

                Dim IniciarError As String = CambiarEstArbCE.ProcesarCambio(parametro, "CambiarRechazado", cn, Transaccion)
                If IniciarError = "NO" Or IniciarError = "Error" Then
                    Throw New Exception
                End If
                Dim CodigoReporto As String = String.Empty
                cmd = New SqlCommand
                cmd.Connection = cn
                cmd.Transaction = Transaccion

                query = "select CodigoReporto from TitEspApro where CodigoNuevoTitulo=@CodigoNuevoTitulo"

                cmd.CommandText = query

                With cmd.Parameters
                    .Add("@CodigoNuevoTitulo", SqlDbType.VarChar).Value = parametro
                End With
                CodigoReporto = cmd.ExecuteScalar



                ''#########################################################
                ''#########################################################
                If String.IsNullOrEmpty(CodigoReporto) Then
                    CodigoReporto = Nothing
                End If





                cmd = New SqlCommand
                cmd.Connection = cn
                cmd.Transaction = Transaccion
                query = "UPDATE [dbo].[INV0]
                SET EstadoProceso=@EstadoProceso
                WHERE [CodInv] = @CodInv"

                cmd.CommandText = query

                With cmd.Parameters
                    .Add("@CodInv", SqlDbType.VarChar).Value = CodigoReporto
                    .Add("@EstadoProceso", SqlDbType.VarChar).Value = "E"
                End With


                retorno = cmd.ExecuteNonQuery()


            End If
            Transaccion.Commit()
            retorno = 0

        Catch ex As Exception
            retorno = 1



            Try
                Transaccion.Rollback()
            Catch ex2 As Exception
                MsgBox("Error en Rollback: " & ex.GetType.ToString)
                MsgBox("Mensaje Rollbak: " & ex.Message)
            End Try
        End Try

        If retorno = 0 Then
            'Transaccion.Commit()
        Else
            'Transaccion.Rollback()
            MsgBox("Falla al Guardar Propuesta")
        End If

        cmd.Dispose()
        da.Dispose()
        cn.Dispose()

        Return retorno
    End Function
    Public Function ConvertirEnInversion(ByVal IdPropuesta As Integer, ByVal EstadoReporto As String) As Integer
        Dim vRetorno As Integer = 1
        Dim oCEPropuesta As CEPropuestaInversion = CargarPropuesta(IdPropuesta)
        Dim oCEInversion As InversionesCE
        Dim oDAOInversion As InversionDAO

        If Not oCEPropuesta Is Nothing Then
            'ES OBJETO
            oCEInversion = New InversionesCE
            oDAOInversion = New InversionDAO

            oCEInversion.CodigoIversion = oCEPropuesta.CodigoInversion
            oCEInversion.CodigoEmpresa = oCEPropuesta.CodigoEmpresa
            oCEInversion.CodigoInstrumentoFinanciero = oCEPropuesta.CodigoInstrumentoFinanciero
            oCEInversion.CodigoEmisor = oCEPropuesta.CodigoEmisor
            oCEInversion.CodigoCalificacionDeRiesgo = oCEPropuesta.CodigoCalificacionDeRiesgo
            oCEInversion.CodigoEmpresaCalificadora = oCEPropuesta.CodigoEmpresaCalificadora
            oCEInversion.Comentarios = oCEPropuesta.Comentarios
            oCEInversion.TipoOperacion = oCEPropuesta.TipoOperacion
            oCEInversion.DocumentoBase = oCEPropuesta.IdDeDocumento
            oCEInversion.Pais = oCEPropuesta.Pais
            oCEInversion.TipoMercado = oCEPropuesta.TipoMercado
            oCEInversion.DocumentoBase = oCEPropuesta.IdDeDocumento
            oCEInversion.EstadoDocumento = oCEPropuesta.EstadoDocumento
            oCEInversion.NombreManual = oCEPropuesta.NombreManual
            oCEInversion.TipoRenta = oCEPropuesta.TipoRenta
            oCEInversion.TipoTasa = oCEPropuesta.TipoTasa
            oCEInversion.Periodicidad = oCEPropuesta.Periodicidad
            oCEInversion.PlazoFactor = oCEPropuesta.PlazoFactor
            oCEInversion.PlazoNumero = oCEPropuesta.PlazoNumero
            oCEInversion.OFondo = oCEPropuesta.OrigenDeFondos
            oCEInversion.CodigoCompra = oCEPropuesta.CodigoCompra
            oCEInversion.EstadoProceso = "R"
            oCEInversion.FechaDocumento = oCEPropuesta.FechaDocumento
            oCEInversion.EstadoReporto = oCEPropuesta.EstadoReporto

            If oCEPropuesta.EstadoReporto = "SECUNDARIO" Then
                oCEInversion.CodigoAsociado = oCEPropuesta.CodigoAsociado
                oCEInversion.IdFlujo = oCEPropuesta.IdFlujo
                oCEInversion.IdEA = oCEPropuesta.IdEA
            End If
            oCEInversion.IdProInv = Me.IdPropuesta(oCEPropuesta.CodigoInversion)
            Dim vResNuevo As Integer
            vResNuevo = oDAOInversion.Nuevo(oCEInversion)

            If vResNuevo > 0 Then

                Cerrar(IdPropuesta)
                vRetorno = 1
            Else

                vRetorno = -2
                MsgBox("Falla al convertir en Inversion")
            End If


        Else

            vRetorno = -1
        End If


        Return vRetorno
    End Function
    Public Sub Cerrar(ByVal IidPropuesta As Integer)
        Dim objCon As New Conexion
        Dim vTransaccion As SqlTransaction
        Dim query As String
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        Dim cmd As SqlCommand = cn.CreateCommand

        vTransaccion = cn.BeginTransaction

        cmd.Connection = cn
        cmd.Transaction = vTransaccion

        query = "UPDATE [dbo].[PIN0]
SET [DocEst] = 'C'
WHERE [DocId] = @DocId"

        cmd.CommandText = query
        With cmd.Parameters
            .Add("@DocId", SqlDbType.VarChar).Value = IidPropuesta
        End With
        Try
            cmd.ExecuteNonQuery()
            vTransaccion.Commit()

        Catch ex As Exception
            MsgBox("Error en Transaccion: " & ex.GetType.ToString)
            MsgBox("Mensaje: " & ex.Message)

            Try
                vTransaccion.Rollback()
            Catch ex2 As Exception
                MsgBox("Error en Rollback: " & ex.GetType.ToString)
                MsgBox("Mensaje Rollbak: " & ex.Message)
            End Try
        End Try



        cmd.Dispose()
        cn.Dispose()
    End Sub

End Class
