Imports System.Data.SqlClient

Public Class AccionesDAO
    Private Operaciones As New Operaciones
    Public Function ProcesoDatos(ByVal Coleccion As Collection, ByVal Codigo As String, ByVal Diccionario As Dictionary(Of String, Collection), ByVal Estado As String)
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim myTrans As SqlTransaction
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        myTrans = cn.BeginTransaction()
        Try
            If Estado = "Nuevo" Then
                sql = "INSERT INTO [dbo].[ACC0]
           ([CodInv]
           ,[PrecioLimpioC]
           ,[FOperC]
           ,[FVenC]
           ,[DiasTC]
           ,[GCapTotC]
           ,[GCapUnC]
           ,[RetAnBrC]
           ,[RetAnNetC]
           ,[UnC]
           ,[ValTransC]
           ,[MontoNetoC]
           ,[PrecSucioC]
           ,[PrecioLimpioV]
           ,[FOperV]
           ,[FVenV]
           ,[DiasTV]
           ,[GCapTotV]
           ,[GCapUnV]
           ,[RetAnBrV]
           ,[RetAnNetV]
           ,[UnV]
           ,[ValTransV]
           ,[MontoNetoV]
           ,[PrecSucioV]
           ,[ComisionCompraCasa]
           ,[ComisionCompraBolsa]
           ,[ComisionVentaCasa]
           ,[ComisionVentaBolsa]
           ,[IOF]
           ,[Renta]
           ,[Tipo]
           ,[ComisionCompraCasaValor]
           ,[ComisionCompraBolsaValor]
           ,[ComisionVentaCasaValor]
           ,[ComisionVentaBolsaValor]

)
     VALUES
           (@CodInv
           ,@PrecioLimpioC
           ,@FOperC
           ,@FVenC
           ,@DiasTC
           ,@GCapTotC
           ,@GCapUnC
           ,@RetAnBrC
           ,@RetAnNetC
           ,@UnC
           ,@ValTransC
           ,@MontoNetoC
           ,@PrecSucioC
           ,@PrecioLimpioV
           ,@FOperV
           ,@FVenV
           ,@DiasTV
           ,@GCapTotV
           ,@GCapUnV
           ,@RetAnBrV
           ,@RetAnNetV
           ,@UnV
           ,@ValTransV
           ,@MontoNetoV
           ,@PrecSucioV
           ,@ComisionCompraCasa
           ,@ComisionCompraBolsa
           ,@ComisionVentaCasa
           ,@ComisionVentaBolsa
           ,@IOF
           ,@Renta
           ,@Tipo
           ,@ComisionCompraCasaValor
           ,@ComisionCompraBolsaValor
           ,@ComisionVentaCasaValor
           ,@ComisionVentaBolsaValor
)"





            Else
                sql = "UPDATE [dbo].[ACC0] SET
           [PrecioLimpioC]=@PrecioLimpioC
           ,[FOperC]=@FOperC
           ,[FVenC]=@FVenC
           ,[DiasTC]=@DiasTC
           ,[GCapTotC]=@GCapTotC
           ,[GCapUnC]=@GCapUnC
           ,[RetAnBrC]=@RetAnBrC
           ,[RetAnNetC]=@RetAnNetC
           ,[UnC]=@UnC
           ,[ValTransC]=@ValTransC
           ,[MontoNetoC]=@MontoNetoC
           ,[PrecSucioC]=@PrecSucioC
           ,[PrecioLimpioV]=@PrecioLimpioV
           ,[FOperV]=@FOperV
           ,[FVenV]=@FVenV
           ,[DiasTV]=@DiasTV
           ,[GCapTotV]=@GCapTotV
           ,[GCapUnV]=@GCapUnV
           ,[RetAnBrV]=@RetAnBrV
           ,[RetAnNetV]=@RetAnNetV
           ,[UnV]=@UnV
           ,[ValTransV]=@ValTransV
           ,[MontoNetoV]=@MontoNetoV
           ,[PrecSucioV]=@PrecSucioV

           ,[ComisionCompraCasa]=@ComisionCompraCasa
           ,[ComisionCompraBolsa]=@ComisionCompraBolsa
           ,[ComisionVentaCasa]=@ComisionVentaCasa
           ,[ComisionVentaBolsa]=@ComisionVentaBolsa
           ,[IOF]=@IOF
           ,[Renta]=@Renta
           ,[Tipo]=@Tipo


           ,[ComisionCompraCasaValor]=@ComisionCompraCasaValor
           ,[ComisionCompraBolsaValor]=@ComisionCompraBolsaValor
           ,[ComisionVentaCasaValor]=@ComisionVentaCasaValor
           ,[ComisionVentaBolsaValor]=@ComisionVentaBolsaValor
            where [CodInv]=@CodInv
            
     "
            End If
            cmd = New SqlCommand
            cmd.CommandText = sql
            cmd.Connection = cn
            cmd.Transaction = myTrans
            With cmd.Parameters
                .Add("@CodInv", SqlDbType.VarChar).Value = Codigo.ToString
                .Add("@PrecioLimpioC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(1).ToString)
                .Add("@FOperC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(Coleccion(2).ToString)
                .Add("@FVenC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(Coleccion(3).ToString)
                .Add("@DiasTC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(4).ToString)
                .Add("@GCapTotC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(5).ToString)
                .Add("@GCapUnC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(6).ToString)
                .Add("@RetAnBrC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(7).ToString)
                .Add("@RetAnNetC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(8).ToString)
                .Add("@UnC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(9).ToString)
                .Add("@ValTransC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(10).ToString)
                .Add("@MontoNetoC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(11).ToString)
                .Add("@PrecSucioC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(12).ToString)
                .Add("@PrecioLimpioV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(13).ToString)
                .Add("@FOperV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(Coleccion(14).ToString)
                .Add("@FVenV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(Coleccion(15).ToString)
                .Add("@DiasTV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(16).ToString)
                .Add("@GCapTotV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(17).ToString)
                .Add("@GCapUnV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(18).ToString)
                .Add("@RetAnBrV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(19).ToString)
                .Add("@RetAnNetV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(20).ToString)
                .Add("@UnV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(21).ToString)
                .Add("@ValTransV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(22).ToString)
                .Add("@MontoNetoV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(23).ToString)
                .Add("@PrecSucioV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(24).ToString)
                .Add("@ComisionCompraCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(25).ToString)
                .Add("@ComisionCompraBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(26).ToString)
                .Add("@ComisionVentaCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(27).ToString)
                .Add("@ComisionVentaBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(28).ToString)
                .Add("@IOF", SqlDbType.Bit).Value = CByte(Coleccion(29))
                .Add("@Renta", SqlDbType.Bit).Value = CByte(Coleccion(30))
                .Add("@Tipo", SqlDbType.VarChar).Value = Coleccion(31).ToString
                .Add("@ComisionCompraCasaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(32).ToString)
                .Add("@ComisionCompraBolsaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(33).ToString)
                .Add("@ComisionVentaCasaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(34).ToString)
                .Add("@ComisionVentaBolsaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(35).ToString)
            End With
            retorno = cmd.ExecuteNonQuery
            sql = "DELETE FROM [dbo].[ACC1]
            WHERE [CodInv]=@CodInv "
            cmd = New SqlCommand
            cmd.CommandText = sql
            cmd.Connection = cn
            cmd.Transaction = myTrans
            cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = Codigo
            retorno = cmd.ExecuteNonQuery
            If Not Diccionario Is Nothing Then
                For Each DatosDiccionario In Diccionario
                    Dim Coleccion2 As Collection = DatosDiccionario.Value
                    sql = "INSERT INTO [dbo].[ACC1]
           ([CodInv]
             ,[Fecha]
             ,[Dividendo]
             ,[CantidadBase]
             ,[IngresoBruto]
             ,[PorcISR]
             ,[ISR]
             ,[IngresoNeto]
             ,[Estado]

             ,[FechaInicio]
             ,[FechaCorte]
             ,[NumDiv]

        
             
           )
     VALUES
           (@CodInv
             ,@Fecha
             ,@Dividendo
             ,@CantidadBase
             ,@IngresoBruto
             ,@PorcISR
             ,@ISR
             ,@IngresoNeto
             ,@Estado
             ,@FechaInicio
             ,@FechaCorte
             ,@NumDiv
             
          )"

                    cmd = New SqlCommand
                    cmd.CommandText = sql
                    cmd.Connection = cn
                    cmd.Transaction = myTrans
                    With cmd.Parameters
                        .Add("@CodInv", SqlDbType.VarChar).Value = Codigo.ToString
                        .Add("@Fecha", SqlDbType.Date).Value = Operaciones.ConvertirFecha(Coleccion2(1).ToString)
                        .Add("@Dividendo", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(Coleccion2(2).ToString)
                        .Add("@CantidadBase", SqlDbType.Int).Value = Operaciones.ConvertirEntero(Coleccion2(3).ToString)
                        .Add("@IngresoBruto", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(Coleccion2(4).ToString)
                        .Add("@PorcISR", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(Coleccion2(5).ToString)
                        .Add("@ISR", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(Coleccion2(6).ToString)
                        .Add("@IngresoNeto", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(Coleccion2(7).ToString)
                        .Add("@Estado", SqlDbType.VarChar).Value = Coleccion2(8).ToString
                        .Add("@NumDiv", SqlDbType.Int).Value = Operaciones.ConvertirEntero(Coleccion2(9).ToString)
                        .Add("@FechaInicio", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(Coleccion2(10).ToString)
                        .Add("@FechaCorte", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(Coleccion2(11).ToString)



                    End With

                    retorno = cmd.ExecuteNonQuery





                Next


            End If
            ''''''''''''''''

            myTrans.Commit()
            MsgBox("Datos Ingresados")
        Catch ex As Exception
            myTrans.Rollback()
            MsgBox(ex.Message)
        End Try
        cn.Close()

        Return retorno


    End Function






    Public Sub Eliminar(ByVal Codigo As String)
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim myTrans As SqlTransaction
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        myTrans = cn.BeginTransaction()
        Try

            sql = "DELETE FROM [dbo].[ACC1]
      WHERE [CodInv]=@CodInv"


            cmd = New SqlCommand
            cmd.CommandText = sql
            cmd.Connection = cn
            cmd.Transaction = myTrans
            cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = Codigo


            retorno = cmd.ExecuteNonQuery



            sql = "DELETE FROM [dbo].[ACC0]
      WHERE [CodInv]=@CodInv"


            cmd = New SqlCommand
            cmd.CommandText = sql
            cmd.Connection = cn
            cmd.Transaction = myTrans
            cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = Codigo


            retorno = cmd.ExecuteNonQuery

            myTrans.Commit()
            MsgBox("Datos Eliminados")
        Catch ex As Exception
            myTrans.Rollback()
            MsgBox(ex.Message)
        End Try
        cn.Close()

    End Sub


    Public Sub EliminarElemenoInd(ByVal Codigo As String, ByVal NumDiv As Integer)
        Dim objCon As New Conexion
        Dim sql As String
        Dim cmd As SqlCommand
        Dim res As Integer
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        sql = "DELETE FROM [dbo].[ACC1]
      WHERE [CodInv]=@CodInv and [NumDiv]=@NumDiv"


        cmd = New SqlCommand
        cmd.CommandText = sql
        cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = Codigo
        cmd.Parameters.Add("@NumDiv", SqlDbType.Int).Value = Operaciones.ConvertirEntero(NumDiv.ToString)

        cmd.Connection = cn

        res = cmd.ExecuteNonQuery
        cn.Close()
    End Sub







    Public Function NuevoElementoAccion(ByVal codigo As String, ByVal coleccion As Collection)
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (coleccion Is Nothing) Then
            Exit Function
        End If

        sql = "INSERT INTO [dbo].[ACC1]
           ([CodInv]
             ,[Fecha]
             ,[Dividendo]
             ,[CantidadBase]
             ,[IngresoBruto]
             ,[PorcISR]
             ,[ISR]
             ,[IngresoNeto]
             ,[Estado]

             ,[FechaInicio]
             ,[FechaCorte]
             ,[NumDiv]

        
             
           )
     VALUES
           (@CodInv
             ,@Fecha
             ,@Dividendo
             ,@CantidadBase
             ,@IngresoBruto
             ,@PorcISR
             ,@ISR
             ,@IngresoNeto
             ,@Estado
             ,@FechaInicio
             ,@FechaCorte
             ,@NumDiv
             
          )"


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


        Try


            With cmd.Parameters

                .Add("@CodInv", SqlDbType.VarChar).Value = codigo.ToString
                .Add("@Fecha", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(1).ToString)
                .Add("@Dividendo", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(2).ToString)
                .Add("@CantidadBase", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(3).ToString)
                .Add("@IngresoBruto", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(4).ToString)
                .Add("@PorcISR", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(5).ToString)
                .Add("@ISR", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(6).ToString)
                .Add("@IngresoNeto", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(7).ToString)
                .Add("@Estado", SqlDbType.VarChar).Value = coleccion(8).ToString
                .Add("@NumDiv", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(9).ToString)
                .Add("@FechaInicio", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(coleccion(10))
                .Add("@FechaCorte", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(coleccion(11))



            End With

            retorno = cmd.ExecuteNonQuery
        Catch ex As Exception
            Return Nothing
        End Try
        cn.Close()
        Return retorno
    End Function


    Public Function ModificarElementoAccion(ByVal codigo As String, ByVal coleccion As Collection)
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (coleccion Is Nothing) Then
            Exit Function
        End If

        sql = "UPDATE [dbo].[ACC1] SET
          
             [Fecha]=@Fecha
             ,[Dividendo]=@Dividendo
             ,[CantidadBase]=@CantidadBase
             ,[IngresoBruto]=@IngresoBruto
             ,[PorcISR]=@PorcISR
             ,[ISR]=@ISR
             ,[IngresoNeto]=@IngresoNeto
             ,[Estado]=@Estado

             ,[FechaInicio]=@FechaInicio
             ,[FechaCorte]=@FechaCorte
             

        where  [CodInv]=@CodInv and [NumDiv]=@NumDiv
             

"


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

        Try


            With cmd.Parameters

                .Add("@CodInv", SqlDbType.VarChar).Value = codigo.ToString
                .Add("@Fecha", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(1).ToString)
                .Add("@Dividendo", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(2).ToString)
                .Add("@CantidadBase", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(3).ToString)
                .Add("@IngresoBruto", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(4).ToString)
                .Add("@PorcISR", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(5).ToString)
                .Add("@ISR", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(6).ToString)
                .Add("@IngresoNeto", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(coleccion(7).ToString)
                .Add("@Estado", SqlDbType.VarChar).Value = coleccion(8).ToString
                .Add("@NumDiv", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(9).ToString)
                .Add("@FechaInicio", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(coleccion(10))
                .Add("@FechaCorte", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(coleccion(11))

            End With

            retorno = cmd.ExecuteNonQuery

        Catch ex As Exception
            Return Nothing
        End Try
        cn.Close()
        Return retorno
    End Function























    Public Function NuevaAccion(ByVal codigo As String, ByVal coleccion As Collection)
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        sql = "INSERT INTO [dbo].[ACC0]
           ([CodInv]
           ,[PrecioLimpioC]
           ,[FOperC]
           ,[FVenC]
           ,[DiasTC]
           ,[GCapTotC]
           ,[GCapUnC]
           ,[RetAnBrC]
           ,[RetAnNetC]
           ,[UnC]
           ,[ValTransC]
           ,[MontoNetoC]
           ,[PrecSucioC]
           ,[PrecioLimpioV]
           ,[FOperV]
           ,[FVenV]
           ,[DiasTV]
           ,[GCapTotV]
           ,[GCapUnV]
           ,[RetAnBrV]
           ,[RetAnNetV]
           ,[UnV]
           ,[ValTransV]
           ,[MontoNetoV]
           ,[PrecSucioV]
           ,[ComisionCompraCasa]
           ,[ComisionCompraBolsa]
           ,[ComisionVentaCasa]
           ,[ComisionVentaBolsa]
           ,[IOF]
           ,[Renta]
           ,[Tipo]
           ,[ComisionCompraCasaValor]
           ,[ComisionCompraBolsaValor]
           ,[ComisionVentaCasaValor]
           ,[ComisionVentaBolsaValor]

)
     VALUES
           (@CodInv
           ,@PrecioLimpioC
           ,@FOperC
           ,@FVenC
           ,@DiasTC
           ,@GCapTotC
           ,@GCapUnC
           ,@RetAnBrC
           ,@RetAnNetC
           ,@UnC
           ,@ValTransC
           ,@MontoNetoC
           ,@PrecSucioC
           ,@PrecioLimpioV
           ,@FOperV
           ,@FVenV
           ,@DiasTV
           ,@GCapTotV
           ,@GCapUnV
           ,@RetAnBrV
           ,@RetAnNetV
           ,@UnV
           ,@ValTransV
           ,@MontoNetoV
           ,@PrecSucioV
           ,@ComisionCompraCasa
           ,@ComisionCompraBolsa
           ,@ComisionVentaCasa
           ,@ComisionVentaBolsa
           ,@IOF
           ,@Renta
           ,@Tipo
           ,@ComisionCompraCasaValor
           ,@ComisionCompraBolsaValor
           ,@ComisionVentaCasaValor
           ,@ComisionVentaBolsaValor
)"


        cmd = New SqlCommand
        cmd.CommandText = sql
        cmd.Connection = cn
        Try
            With cmd.Parameters
                .Add("@CodInv", SqlDbType.VarChar).Value = codigo.ToString
                .Add("@PrecioLimpioC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(1).ToString)
                .Add("@FOperC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(2).ToString)
                .Add("@FVenC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(3).ToString)
                .Add("@DiasTC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(4).ToString)
                .Add("@GCapTotC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(5).ToString)
                .Add("@GCapUnC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(6).ToString)
                .Add("@RetAnBrC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(7).ToString)
                .Add("@RetAnNetC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(8).ToString)
                .Add("@UnC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(9).ToString)
                .Add("@ValTransC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(10).ToString)
                .Add("@MontoNetoC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(11).ToString)
                .Add("@PrecSucioC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(12).ToString)
                .Add("@PrecioLimpioV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(13).ToString)
                .Add("@FOperV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(14).ToString)
                .Add("@FVenV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(15).ToString)
                .Add("@DiasTV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(16).ToString)
                .Add("@GCapTotV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(17).ToString)
                .Add("@GCapUnV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(18).ToString)
                .Add("@RetAnBrV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(19).ToString)
                .Add("@RetAnNetV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(20).ToString)
                .Add("@UnV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(21).ToString)
                .Add("@ValTransV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(22).ToString)
                .Add("@MontoNetoV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(23).ToString)
                .Add("@PrecSucioV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(24).ToString)
                .Add("@ComisionCompraCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(25).ToString)
                .Add("@ComisionCompraBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(26).ToString)
                .Add("@ComisionVentaCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(27).ToString)
                .Add("@ComisionVentaBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(28).ToString)
                .Add("@IOF", SqlDbType.Bit).Value = CByte(coleccion(29))
                .Add("@Renta", SqlDbType.Bit).Value = CByte(coleccion(30))
                .Add("@Tipo", SqlDbType.VarChar).Value = coleccion(31).ToString
                .Add("@ComisionCompraCasaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(32).ToString)
                .Add("@ComisionCompraBolsaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(33).ToString)
                .Add("@ComisionVentaCasaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(34).ToString)
                .Add("@ComisionVentaBolsaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(35).ToString)
            End With







            retorno = cmd.ExecuteNonQuery
        Catch ex As Exception

            MsgBox("Error al ingresar datos")
        End Try
        cn.Close()
        Return retorno
    End Function


    Public Function ModificarAccion(ByVal codigo As String, ByVal coleccion As Collection)
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        sql = "UPDATE [dbo].[ACC0] SET
           [PrecioLimpioC]=@PrecioLimpioC
           ,[FOperC]=@FOperC
           ,[FVenC]=@FVenC
           ,[DiasTC]=@DiasTC
           ,[GCapTotC]=@GCapTotC
           ,[GCapUnC]=@GCapUnC
           ,[RetAnBrC]=@RetAnBrC
           ,[RetAnNetC]=@RetAnNetC
           ,[UnC]=@UnC
           ,[ValTransC]=@ValTransC
           ,[MontoNetoC]=@MontoNetoC
           ,[PrecSucioC]=@PrecSucioC
           ,[PrecioLimpioV]=@PrecioLimpioV
           ,[FOperV]=@FOperV
           ,[FVenV]=@FVenV
           ,[DiasTV]=@DiasTV
           ,[GCapTotV]=@GCapTotV
           ,[GCapUnV]=@GCapUnV
           ,[RetAnBrV]=@RetAnBrV
           ,[RetAnNetV]=@RetAnNetV
           ,[UnV]=@UnV
           ,[ValTransV]=@ValTransV
           ,[MontoNetoV]=@MontoNetoV
           ,[PrecSucioV]=@PrecSucioV

           ,[ComisionCompraCasa]=@ComisionCompraCasa
           ,[ComisionCompraBolsa]=@ComisionCompraBolsa
           ,[ComisionVentaCasa]=@ComisionVentaCasa
           ,[ComisionVentaBolsa]=@ComisionVentaBolsa
           ,[IOF]=@IOF
           ,[Renta]=@Renta
           ,[Tipo]=@Tipo


           ,[ComisionCompraCasaValor]=@ComisionCompraCasaValor
           ,[ComisionCompraBolsaValor]=@ComisionCompraBolsaValor
           ,[ComisionVentaCasaValor]=@ComisionVentaCasaValor
           ,[ComisionVentaBolsaValor]=@ComisionVentaBolsaValor
            where [CodInv]=@CodInv
            
     "


        cmd = New SqlCommand
        cmd.CommandText = sql
        cmd.Connection = cn
        Try
            With cmd.Parameters
                .Add("@CodInv", SqlDbType.VarChar).Value = codigo.ToString
                .Add("@PrecioLimpioC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(1).ToString)
                .Add("@FOperC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(2).ToString)
                .Add("@FVenC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(3).ToString)
                .Add("@DiasTC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(4).ToString)
                .Add("@GCapTotC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(5).ToString)
                .Add("@GCapUnC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(6).ToString)
                .Add("@RetAnBrC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(7).ToString)
                .Add("@RetAnNetC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(8).ToString)
                .Add("@UnC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(9).ToString)
                .Add("@ValTransC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(10).ToString)
                .Add("@MontoNetoC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(11).ToString)
                .Add("@PrecSucioC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(12).ToString)
                .Add("@PrecioLimpioV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(13).ToString)
                .Add("@FOperV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(14).ToString)
                .Add("@FVenV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(15).ToString)
                .Add("@DiasTV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(16).ToString)
                .Add("@GCapTotV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(17).ToString)
                .Add("@GCapUnV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(18).ToString)
                .Add("@RetAnBrV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(19).ToString)
                .Add("@RetAnNetV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(20).ToString)
                .Add("@UnV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(21).ToString)
                .Add("@ValTransV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(22).ToString)
                .Add("@MontoNetoV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(23).ToString)
                .Add("@PrecSucioV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(24).ToString)
                .Add("@ComisionCompraCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(25).ToString)
                .Add("@ComisionCompraBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(26).ToString)
                .Add("@ComisionVentaCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(27).ToString)
                .Add("@ComisionVentaBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(28).ToString)
                .Add("@IOF", SqlDbType.Bit).Value = CByte(coleccion(29))
                .Add("@Renta", SqlDbType.Bit).Value = CByte(coleccion(30))
                .Add("@Tipo", SqlDbType.VarChar).Value = coleccion(31).ToString
                .Add("@ComisionCompraCasaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(32).ToString)
                .Add("@ComisionCompraBolsaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(33).ToString)
                .Add("@ComisionVentaCasaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(34).ToString)
                .Add("@ComisionVentaBolsaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(35).ToString)

            End With

            retorno = cmd.ExecuteNonQuery
        Catch ex As Exception

            MsgBox("Error al modificar datos")
        End Try
        cn.Close()
        Return retorno
    End Function


    Public Sub EliminarAccion(ByVal Codigo As String)
        Dim objCon As New Conexion
        Dim sql As String
        Dim cmd As SqlCommand
        Dim res As Integer
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        sql = "DELETE FROM [dbo].[ACC0]
      WHERE [CodInv]=@CodInv;DELETE FROM [dbo].[ACC1]
      WHERE [CodInv]=@CodInv;DELETE FROM [dbo].[ACC2]
      WHERE [CodInv]=@CodInv;"



        Try
            cmd = New SqlCommand
            cmd.CommandText = sql
            cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = Codigo
            cmd.Connection = cn



            res = cmd.ExecuteNonQuery

        Catch ex As Exception
            MsgBox("Error al eliminar")
        End Try
        cn.Close()
    End Sub

    Public Function Nuevo(ByVal oAccion As Object) As Integer
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        sql = "INSERT INTO [dbo].[ACC0]
           ([CodInv]
           ,[OpPrefC]
           ,[OpBolsaC]
           ,[PrecioLimpioC]
           ,[FOperC]
           ,[FLiqC]
           ,[DiasTC]
           ,[GCapTotC]
           ,[GCapUnC]
           ,[RetAnBrC]
           ,[RetAnNetC]
           ,[UnC]
           ,[ValTransC]
           ,[MontoNetoC]
           ,[PrecSucioC]
           ,[FactDiv]
           ,[PrecioLimpioV]
           ,[FOperV]
           ,[FLiqV]
           ,[DiasTV]
           ,[GCapTotV]
           ,[GCapUnV]
           ,[RetAnBrV]
           ,[RetAnNetV]
           ,[UnV]
           ,[ValTransV]
           ,[MontoNetoV]
           ,[PrecSucioV]
           ,[IngresoBruto]
           ,[IngresoBrutoPend]
           ,[ImpSumC]
           ,[ComSumC]
           ,[ImpSumV]
           ,[ComSumV]
           ,[ISR]
           ,[ISRPend]
           ,[IngresoNeto]
           ,[IngresoNetoPend]
           ,[SumImpComCompra]
           ,[SumImpComVenta])
     VALUES
           (@CodInv
           ,@OpPrefC
           ,@OpBolsaC
           ,@PrecioLimpioC
           ,@FOperC
           ,@FLiqC
           ,@DiasTC
           ,@GCapTotC
           ,@GCapUnC
           ,@RetAnBrC
           ,@RetAnNetC
           ,@UnC
           ,@ValTransC
           ,@MontoNetoC
           ,@PrecSucioC
           ,@FactDiv
           ,@PrecioLimpioV
           ,@FOperV
           ,@FLiqV
           ,@DiasTV
           ,@GCapTotV
           ,@GCapUnV
           ,@RetAnBrV
           ,@RetAnNetV
           ,@UnV
           ,@ValTransV
           ,@MontoNetoV
           ,@PrecSucioV
           ,@IngresoBruto
           ,@IngresoBrutoPend
           ,@ImpSumC
           ,@ComSumC
           ,@ImpSumV
           ,@ComSumV
           ,@ISR
           ,@ISRPend
           ,@IngresoNeto
           ,@IngresoNetoPend
           ,@SumImpComCompra
           ,@SumImpComVenta"


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

        With cmd.Parameters
            .Add("@CodInv", SqlDbType.Float).Value = oAccion.CodigoInversion
            .Add("@OpPrefC", SqlDbType.Float).Value = oAccion.AccionPreferente
            .Add("@OpBolsaC", SqlDbType.Float).Value = oAccion.OperacionEnBolsa
            .Add("@PrecioLimpioC", SqlDbType.Float).Value = oAccion.PrecioLimpioCompra
            .Add("@FOperC", SqlDbType.Float).Value = oAccion.FechaOperacionCompra
            .Add("@FLiqC", SqlDbType.Float).Value = oAccion.FechaLiquidacionCompra
            .Add("@DiasTC", SqlDbType.Float).Value = oAccion.DiasDeTenenciaCompra
            .Add("@GCapTotC", SqlDbType.Float).Value = oAccion.GananciaDeCapitalTotalCompra
            .Add("@GCapUnC", SqlDbType.Float).Value = oAccion.GananciaDeCapitalUnitarioCompra
            .Add("@RetAnBrC", SqlDbType.Float).Value = oAccion.RetornoAnualizadoBrutoCompra
            .Add("@RetAnNetC", SqlDbType.Float).Value = oAccion.RetornoAnualizadoNetoCompra
            .Add("@UnC", SqlDbType.Float).Value = oAccion.CantidadCompra
            .Add("@ValTransC", SqlDbType.Float).Value = oAccion.ValorTransadoCompra
            .Add("@MontoNetoC", SqlDbType.Float).Value = oAccion.MontoNetoCompra
            .Add("@PrecSucioC", SqlDbType.Float).Value = oAccion.PrecioSucioCompra
            .Add("@FactDiv", SqlDbType.Float).Value = oAccion.FactorDeDividendo
            .Add("@PrecioLimpioV", SqlDbType.Float).Value = oAccion.PrecioLimpioVenta
            .Add("@FOperV", SqlDbType.Float).Value = oAccion.FechaOperacionVenta
            .Add("@FLiqV", SqlDbType.Float).Value = oAccion.FechaLiquidacionVenta
            .Add("@DiasTV", SqlDbType.Float).Value = oAccion.DiasDeTenenciaVenta
            .Add("@GCapTotV", SqlDbType.Float).Value = oAccion.GananciaDeCapitalTotalVenta
            .Add("@GCapUnV", SqlDbType.Float).Value = oAccion.GananciaDeCapitalUnitarioVenta
            .Add("@RetAnBrV", SqlDbType.Float).Value = oAccion.RetornoAnualizadoBrutoVenta
            .Add("@RetAnNetV", SqlDbType.Float).Value = oAccion.RetornoAnualizadoNetoVenta
            .Add("@UnV", SqlDbType.Float).Value = oAccion.CantidadVenta
            .Add("@ValTransV", SqlDbType.Float).Value = oAccion.ValorTransadoVenta
            .Add("@MontoNetoV", SqlDbType.Float).Value = oAccion.MontoNetoVenta
            .Add("@PrecSucioV", SqlDbType.Float).Value = oAccion.PrecioSucioVenta
            .Add("@IngresoBruto", SqlDbType.Float).Value = oAccion.IngresoBruto
            .Add("@IngresoBrutoPend", SqlDbType.Float).Value = oAccion.IngresoBrutoPendiente
            .Add("@ImpSumC", SqlDbType.Float).Value = 0
            .Add("@ComSumC", SqlDbType.Float).Value = 0
            .Add("@ImpSumV", SqlDbType.Float).Value = 0
            .Add("@ComSumV", SqlDbType.Float).Value = 0
            .Add("@ISR", SqlDbType.Float).Value = oAccion.ISR
            .Add("@ISRPend", SqlDbType.Float).Value = 0
            .Add("@IngresoNeto", SqlDbType.Float).Value = oAccion.IngresoNeto
            .Add("@IngresoNetoPend", SqlDbType.Float).Value = 0
            .Add("@SumImpComCompra", SqlDbType.Float).Value = oAccion.SumaImpuestosYComisionesCompra
            .Add("@SumImpComVenta", SqlDbType.Float).Value = oAccion.SumaImpuestosYComisionesVenta
        End With

        retorno = cmd.ExecuteNonQuery

        Me.GuardarDividendos(oAccion.CodigoInversion, oAccion.Dividendos)
        Me.GuardarImpuestosYComisiones(oAccion.CodigoInversion, oAccion.ImpuestosYComisiones)
        cn.Close()
        Return retorno
    End Function
    Function Nuevo(ByVal oAccion As AccionesCE, DocId As Integer, Tipo As String) As Integer
        Dim objCon As New Conexion
        Dim retorno As Integer = -1
        Dim Transaccion As SqlTransaction
        Dim query As String
        Dim Tabla As String = ""
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If Tipo = "P" Then
            Tabla = "PACC0"
        End If
        If Tipo = "I" Then
            Tabla = "IACC0"
        End If


        Dim cmd As SqlCommand = cn.CreateCommand

        Transaccion = cn.BeginTransaction("NuevaAccion")
        cmd.Connection = cn
        cmd.Transaction = Transaccion


        query = "INSERT INTO [dbo].[" & Tabla & "]
           ([DocId]
           ,[CodCasaC]
           ,[OpPrefC]
           ,[OpBolsaC]
           ,[PrecioLimpioC]
           ,[FOperC]
           ,[FLiqC]
           ,[DiasTC]
           ,[GCapTotC]
           ,[GCapUnC]
           ,[RetAnBrC]
           ,[RetAnNetC]
           ,[UnC]
           ,[ValTransC]
           ,[MontoNetoC]
           ,[PrecSucioC]
           ,[FactDiv]
           ,[PrecioLimpioV]
           ,[FOperV]
           ,[FLiqV]
           ,[DiasTV]
           ,[GCapTotV]
           ,[GCapUnV]
           ,[RetAnBrV]
           ,[RetAnNetV]
           ,[UnV]
           ,[ValTransV]
           ,[MontoNetoV]
           ,[PrecSucioV]
           ,[CodCasaV])
     VALUES
           (@DocId
           ,@CodCasaC
           ,@OpPrefC
           ,@OpBolsaC
           ,@PrecioLimpioC
           ,@FOperC
           ,@FLiqC
           ,@DiasTC
           ,@GCapTotC
           ,@GCapUnC
           ,@RetAnBrC
           ,@RetAnNetC
           ,@UnC
           ,@ValTransC
           ,@MontoNetoC
           ,@PrecSucioC
           ,@FactDiv
           ,@PrecioLimpioV
           ,@FOperV
           ,@FLiqV
           ,@DiasTV
           ,@GCapTotV
           ,@GCapUnV
           ,@RetAnBrV
           ,@RetAnNetV
           ,@UnV
           ,@ValTransV
           ,@MontoNetoV
           ,@PrecSucioV
           ,@CodCasaV
		   )"

        cmd.CommandText = query

        With cmd.Parameters
            .Add("@DocId", SqlDbType.Int).Value = DocId
            .Add("@CodCasaC", SqlDbType.VarChar).Value = oAccion.CodigoCasaCompra
            .Add("@OpPrefC", SqlDbType.VarChar).Value = oAccion.AccionPreferente
            .Add("@OpBolsaC", SqlDbType.VarChar).Value = oAccion.OperacionEnBolsa
            .Add("@PrecioLimpioC", SqlDbType.Decimal).Value = oAccion.PrecioLimpioCompra
            .Add("@FOperC", SqlDbType.DateTime).Value = oAccion.FechaOperacionCompra
            .Add("@FLiqC", SqlDbType.DateTime).Value = oAccion.FechaVencimientoCompra
            .Add("@DiasTC", SqlDbType.Int).Value = oAccion.DiasDeTenenciaCompra
            .Add("@GCapTotC", SqlDbType.Decimal).Value = oAccion.GananciaDeCapitalTotalCompra
            .Add("@GCapUnC", SqlDbType.Decimal).Value = oAccion.GananciaDeCapitalUnitarioCompra
            .Add("@RetAnBrC", SqlDbType.Decimal).Value = oAccion.RetornoAnualizadoBrutoCompra
            .Add("@RetAnNetC", SqlDbType.Decimal).Value = oAccion.RetornoAnualizadoNetoCompra
            .Add("@UnC", SqlDbType.Int).Value = oAccion.CantidadCompra
            .Add("@ValTransC", SqlDbType.Decimal).Value = oAccion.ValorTransadoCompra
            .Add("@MontoNetoC", SqlDbType.Decimal).Value = oAccion.MontoNetoCompra
            .Add("@PrecSucioC", SqlDbType.Decimal).Value = oAccion.PrecioSucioCompra

            .Add("@FactDiv", SqlDbType.Decimal).Value = oAccion.FactorDeDividendo
            .Add("@PrecioLimpioV", SqlDbType.Decimal).Value = oAccion.PrecioLimpioVenta
            .Add("@FOperV", SqlDbType.DateTime).Value = oAccion.FechaOperacionVenta
            .Add("@FLiqV", SqlDbType.DateTime).Value = oAccion.FechaVencimientoVenta
            .Add("@DiasTV", SqlDbType.Int).Value = oAccion.DiasDeTenenciaVenta
            .Add("@GCapTotV", SqlDbType.Decimal).Value = oAccion.GananciaDeCapitalTotalVenta
            .Add("@GCapUnV", SqlDbType.Decimal).Value = oAccion.GananciaDeCapitalUnitarioVenta
            .Add("@RetAnBrV", SqlDbType.Decimal).Value = oAccion.RetornoAnualizadoBrutoVenta
            .Add("@RetAnNetV", SqlDbType.Decimal).Value = oAccion.RetornoAnualizadoNetoVenta
            .Add("@UnV", SqlDbType.Int).Value = oAccion.CantidadVenta
            .Add("@ValTransV", SqlDbType.Decimal).Value = oAccion.ValorTransadoVenta
            .Add("@MontoNetoV", SqlDbType.Decimal).Value = oAccion.MontoNetoVenta
            .Add("@PrecSucioV", SqlDbType.Decimal).Value = oAccion.PrecioSucioVenta
            .Add("@CodCasaV", SqlDbType.VarChar).Value = oAccion.CodigoCasaVenta
        End With

        Try
            cmd.ExecuteNonQuery()
            Transaccion.Commit()
            retorno = 0
        Catch ex As Exception
            MsgBox("Error al Guardar Accion : " & ex.GetType.ToString)
            MsgBox("Mensaje: " & ex.Message)
            retorno = 1
            Try
                Transaccion.Rollback()
                retorno = 2
            Catch ex2 As Exception
                MsgBox("Error en Rollback: " & ex2.GetType.ToString)
                MsgBox("Mensaje Rollbak: " & ex2.Message)
                retorno = 3
            End Try
        End Try

        cmd.Dispose()
        cn.Dispose()



        Return retorno
    End Function


    Public Function CargarRegistro(ByVal vCodigoInversion As String) As AccionesCE
        Dim objCon As New Conexion
        Dim oAcciones As New AccionesCE
        Dim dtDividendos As New DataTable
        Dim dtImpuestosYComisiones As New DataTable
        Dim drd As SqlDataReader
        Dim cmd As SqlCommand
        Dim da As SqlDataAdapter
        Dim sql As String
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If



        sql = "SELECT * FROM [dbo].[ACC0] T0 WHERE T0.CodInv=@CodInv"
        cmd = New SqlCommand
        cmd.CommandText = sql
        cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = vCodigoInversion
        cmd.Connection = cn

        drd = cmd.ExecuteReader

        If drd.HasRows Then

            'SE ENCONTRO EL REGISTRO
            'oAcciones = New AccionesCE

            If drd.Read Then

                oAcciones.CodigoInversion = vCodigoInversion
                'COMPRA
                oAcciones.AccionPreferente = Operaciones.ConvertirDecimal(drd.Item("OpPrefC").ToString)
                oAcciones.OperacionEnBolsa = Operaciones.ConvertirDecimal(drd.Item("OpBolsaC").ToString)
                oAcciones.PrecioLimpioCompra = Operaciones.ConvertirDecimal(drd.Item("PrecioLimpioC").ToString)
                oAcciones.CantidadCompra = Operaciones.ConvertirEntero(drd.Item("UnC").ToString)
                oAcciones.FechaOperacionCompra = Operaciones.ConvertirFecha(drd.Item("FOperC").ToString)
                oAcciones.FechaVencimientoCompra = Operaciones.ConvertirFecha(drd.Item("FVenC").ToString)
                oAcciones.RetornoBruto = Operaciones.ConvertirDecimal(drd.Item("RetAnBrC").ToString)




                If drd.Item("IOF").ToString Then
                    oAcciones.IOF = True
                Else
                    oAcciones.IOF = False
                End If

                If drd.Item("Renta").ToString Then
                    oAcciones.Renta = True
                Else
                    oAcciones.Renta = False
                End If









                oAcciones.GananciaDeCapitalTotalCompra = Operaciones.ConvertirDecimal(drd.Item("GCapTotC").ToString)
                oAcciones.GananciaDeCapitalUnitarioCompra = Operaciones.ConvertirDecimal(drd.Item("GCapUnC").ToString)
                oAcciones.RetornoAnualizadoBrutoCompra = Operaciones.ConvertirDecimal(drd.Item("RetAnBrC").ToString)
                oAcciones.RetornoAnualizadoNetoCompra = Operaciones.ConvertirDecimal(drd.Item("RetAnNetC").ToString)
                oAcciones.FactorDeDividendo = Operaciones.ConvertirDecimal(drd.Item("FactDiv").ToString)
                oAcciones.GananciaDeCapitalTotalVentasus = Operaciones.ConvertirDecimal(drd.Item("GCapTotV").ToString)
                oAcciones.GananciaDeCapitalUnitarioVenta = Operaciones.ConvertirDecimal(drd.Item("GCapUnV").ToString)
                oAcciones.RetornoAnualizadoBrutoVentasus = Operaciones.ConvertirDecimal(drd.Item("RetAnBrV").ToString)
                oAcciones.RetornoAnualizadoNetoVenta = Operaciones.ConvertirDecimal(drd.Item("RetAnNetV").ToString)


                'VENTA

                oAcciones.PrecioLimpioVenta = Operaciones.ConvertirDecimal(drd.Item("PrecioLimpioV").ToString)
                oAcciones.PrecioSucioCompra = Operaciones.ConvertirDecimal(drd.Item("PrecSucioC").ToString)
                oAcciones.PrecioSucioVentasus = Operaciones.ConvertirDecimal(drd.Item("PrecSucioV").ToString)
                oAcciones.FechaOperacionVenta = Operaciones.ConvertirFecha(drd.Item("FOperV").ToString)
                oAcciones.FechaVencimientoVenta = Operaciones.ConvertirFecha(drd.Item("FVenV").ToString)
                oAcciones.CantidadVenta = Operaciones.ConvertirEntero(drd.Item("UnV").ToString)




            End If



            oAcciones.Tipo = Operaciones.ConvertirEntero(drd.Item("Tipo").ToString)
            oAcciones.DiasDeTenenciaCompra = Operaciones.ConvertirEntero(drd.Item("DiasTC").ToString)
            oAcciones.DiasDeTenenciaVenta = Operaciones.ConvertirEntero(drd.Item("DiasTV").ToString)
            oAcciones.ValorTransadoCompra = Operaciones.ConvertirDecimal(drd.Item("ValTransC").ToString)
            oAcciones.ValorTransadoVenta = Operaciones.ConvertirDecimal(drd.Item("ValTransV").ToString)
            oAcciones.MontoNetoComprasus = Operaciones.ConvertirDecimal(drd.Item("MontoNetoC").ToString)
            oAcciones.MontoNetoVentasus = Operaciones.ConvertirDecimal(drd.Item("MontoNetoV").ToString)
            oAcciones.ComisionCompraCasa = Operaciones.ConvertirDecimal(drd.Item("ComisionCompraCasaValor").ToString)
            oAcciones.ComisionCompraBolsa = Operaciones.ConvertirDecimal(drd.Item("ComisionCompraBolsaValor").ToString)
            oAcciones.ComisionVentaCasa = Operaciones.ConvertirDecimal(drd.Item("ComisionVentaCasaValor").ToString)
            oAcciones.ComisionVentaBolsa = Operaciones.ConvertirDecimal(drd.Item("ComisionVentaBolsaValor").ToString)
            oAcciones.ComisionPorcentajeCompraCasa = Operaciones.ConvertirDecimal(drd.Item("ComisionCompraCasa").ToString)
            oAcciones.ComisionPorcentajeCompraBolsa = Operaciones.ConvertirDecimal(drd.Item("ComisionCompraBolsa").ToString)
            oAcciones.ComisionPorcentajeVentaCasa = Operaciones.ConvertirDecimal(drd.Item("ComisionVentaCasa").ToString)
            oAcciones.ComisionPorcentajeVentaBolsa = Operaciones.ConvertirDecimal(drd.Item("ComisionVentaBolsa").ToString)

            drd.Close()


        Else
            oAcciones.CantidadCompra = 0
            'NO SE ENCONTRO EL REGISTRO
        End If

        cmd.Dispose()
        cn.Dispose()

        Return oAcciones
    End Function


    Public Function CargarRegistroActualizar() As DataTable
        Dim objCon As New Conexion
        Dim ds As New DataSet
        Dim dt As DataTable
        Dim da As SqlDataAdapter
        Dim sql As String = String.Empty
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If



        sql = "SELECT * FROM [dbo].[ACC0] "
        da = New SqlDataAdapter(sql, cn)
        da.Fill(ds)
        dt = ds.Tables(0)
        da.Dispose()
        cn.Dispose()
        Return dt

    End Function

    Public Function Actualizar(ByVal oAccionesCE As AccionesCE) As Integer
        Dim objCon As New Conexion
        Dim sql As String
        Dim cmd As SqlCommand
        Dim retorno As Integer
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        sql = "
"
        cmd = New SqlCommand
        cmd.CommandText = sql

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





        cmd.CommandType = CommandType.Text
        cmd.Connection = cn
        retorno = cmd.ExecuteNonQuery()

        cmd.Dispose()
        cn.Dispose()



        Return retorno
    End Function
    Private Sub GuardarDividendos(ByVal CodInversion As String, ByVal dt As DataTable)
        Dim objCon As New Conexion
        Dim sql As String
        Dim cmd As SqlCommand
        Dim res As Integer
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        sql = "DELETE FROM [dbo].[ACC1]
      WHERE [CodInv]=@CodInv"


        cmd = New SqlCommand
        cmd.CommandText = sql
        cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = CodInversion
        cmd.Connection = cn

        res = cmd.ExecuteNonQuery

        sql = String.Empty
        If dt.Rows.Count > 0 Then
            For Each dr In dt.Rows
                cmd = New SqlCommand
                sql = "INSERT INTO [dbo].[ACC1]
           ([CodInv]
           ,[Fecha]
           ,[Dividendo]
           ,[CantidadBase]
           ,[IngresoBruto]
           ,[PorcISR]
           ,[ISR]
           ,[IngresoNeto])
     VALUES
           (@CodInv
           ,@Fecha
           ,@Dividendo
           ,@CantidadBase
           ,@IngresoBruto
           ,@PorcISR
           ,@ISR
           ,@IngresoNeto)"
                cmd.CommandText = sql
                cmd.Parameters.AddWithValue("@CodInv", CodInversion)
                cmd.Parameters.AddWithValue("@Fecha", Operaciones.ConvertirFecha(dr("Fecha").ToString))
                cmd.Parameters.AddWithValue("@Dividendo", Operaciones.ConvertirDecimal(dr("Dividendo").ToString))
                cmd.Parameters.AddWithValue("@CantidadBase", Operaciones.ConvertirDecimal(dr("CantidadBase").ToString))
                cmd.Parameters.AddWithValue("@IngresoBruto", Operaciones.ConvertirDecimal(dr("IngresoBruto").ToString))
                cmd.Parameters.AddWithValue("@PorcISR", Operaciones.ConvertirDecimal(dr("PorcISR").ToString))
                cmd.Parameters.AddWithValue("@ISR", Operaciones.ConvertirDecimal(dr("ISR").ToString))
                cmd.Parameters.AddWithValue("@IngresoNeto", Operaciones.ConvertirDecimal(dr("IngresoNeto").ToString))
                cmd.Connection = cn
                res = cmd.ExecuteNonQuery
            Next
        End If


        cn.Close()
    End Sub

    Private Sub GuardarImpuestosYComisiones(ByVal CodInversion As String, ByVal dt As DataTable)
        Dim objCon As New Conexion
        Dim sql As String
        Dim cmd As SqlCommand
        Dim res As Integer
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        sql = "DELETE FROM [dbo].[ACC2]
      WHERE [CodInv]=@CodInv"


        cmd = New SqlCommand
        cmd.CommandText = sql
        cmd.Parameters.Add("@CodInv", SqlDbType.VarChar).Value = CodInversion
        cmd.Connection = cn

        res = cmd.ExecuteNonQuery

        sql = String.Empty
        If dt.Rows.Count > 0 Then
            For Each dr In dt.Rows
                cmd = New SqlCommand
                sql = "INSERT INTO [dbo].[ACC2]
           ([CodInv]
           ,[TipoOper]
           ,[CodImp]
           ,[PorcImp]
           ,[MontoImp]
           ,[MontoSujeto])
     VALUES
           (@CodInv
           ,@TipoOper
           ,@CodImp
           ,@PorcImp
           ,@MontoImp
           ,@MontoSujeto)"
                cmd.CommandText = sql
                cmd.Parameters.AddWithValue("@CodInv", CodInversion)
                cmd.Parameters.AddWithValue("@TipoOper", dr("TipoOper"))
                cmd.Parameters.AddWithValue("@CodImp", dr("CodImp"))
                cmd.Parameters.AddWithValue("@PorcImp", Operaciones.ConvertirDecimal(dr("PorcImp").ToString))
                cmd.Parameters.AddWithValue("@MontoImp", Operaciones.ConvertirDecimal(dr("MontoImp").ToString))
                cmd.Parameters.AddWithValue("@MontoSujeto", Operaciones.ConvertirDecimal(dr("MontoSujeto").ToString))
                cmd.Connection = cn
                res = cmd.ExecuteNonQuery
            Next
        End If
        cn.Close()
    End Sub






    Public Function CargarDividendo(ByVal codigo As String)
        Dim objCon As New Conexion
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        Dim sql = "select * from ACC1 where CodInv='" + codigo + "' order by NumDiv"


        Dim cmd As New SqlCommand(sql, cn)
        Dim dr As SqlDataReader
        dr = cmd.ExecuteReader




        Return dr
    End Function



End Class