Imports System.Data.SqlClient
Public Class ReportosDAO



    Dim Operaciones As New Operaciones

    Public Function Nuevo(ByVal oReporto As ReportosCE) As Integer
        Dim retorno As Integer


        Return retorno
    End Function


    Public Function ProcesoDatos(ByVal Diccionario As Dictionary(Of String, Collection), ByVal Codigo As String, ByVal Tabla 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 " + Tabla + "
            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 Coleccion As Collection = DatosDiccionario.Value






                    If Tabla = "REP0" Then
                        sql = "INSERT INTO " + Tabla + "(
           [CodInv]
            ,[codigo]
            ,[Nombre]
            ,[FCompra]
            ,[ValTrans]
            ,[Dias]
            ,[FVenc]
            ,[Rend]
            ,[CostoTransfr]
            ,[ComisionCasa]
            ,[ComisionBolsa]
            ,[Casa]
            ,[IOF]
            ,[Renta]
            ,[Base]
            ,[ComisionCasaValor]
            ,[ComisionBolsaValor]
            ,[IOFValor]
            ,[OtrosCostos]
            ,[TotalCostos]
            ,[MontoLiq]
            ,[IntGenerar]
            ,[RendAntImp]
            ,[RendDesImp]
            ,[ImpLiq]
            ,[IngrNet]
            ,[ValorNet]
            ,[EstadoIOF]
            ,[EstadoRenta]
            

) VALUES(
           @CodInv
            ,@codigo
            ,@Nombre
            ,@FCompra
            ,@ValTrans
            ,@Dias
            ,@FVenc
            ,@Rend
            ,@CostoTransfr
            ,@ComisionCasa
            ,@ComisionBolsa
            ,@Casa
            ,@IOF
            ,@Renta
            ,@Base
            ,@ComisionCasaValor
            ,@ComisionBolsaValor
            ,@IOFValor
            ,@OtrosCostos
            ,@TotalCostos
            ,@MontoLiq
            ,@IntGenerar
            ,@RendAntImp
            ,@RendDesImp
            ,@ImpLiq
            ,@IngrNet
            ,@ValorNet
            ,@EstadoIOF
            ,@EstadoRenta
     
)
    "
                    Else

                        sql = "INSERT INTO " + Tabla + "(
           [CodInv]
            ,[codigo]
            ,[Nombre]
            ,[FCompra]
            ,[ValTrans]
            ,[Dias]
            ,[FVenc]
            ,[Rend]
            ,[CostoTransfr]
            ,[ComisionCasa]
            ,[ComisionBolsa]
            ,[Casa]
            ,[IOF]
            ,[Renta]
            ,[Base]
            ,[ComisionCasaValor]
            ,[ComisionBolsaValor]
            ,[IOFValor]
            ,[OtrosCostos]
            ,[TotalCostos]
            ,[MontoLiq]
            ,[IntGenerar]
            ,[RendAntImp]
            ,[RendDesImp]
            ,[ImpLiq]
            ,[IngrNet]
            ,[ValorNet]
            ,[EstadoIOF]
            ,[EstadoRenta]
         

) VALUES(
           @CodInv
            ,@codigo
            ,@Nombre
            ,@FCompra
            ,@ValTrans
            ,@Dias
            ,@FVenc
            ,@Rend
            ,@CostoTransfr
            ,@ComisionCasa
            ,@ComisionBolsa
            ,@Casa
            ,@IOF
            ,@Renta
            ,@Base
            ,@ComisionCasaValor
            ,@ComisionBolsaValor
            ,@IOFValor
            ,@OtrosCostos
            ,@TotalCostos
            ,@MontoLiq
            ,@IntGenerar
            ,@RendAntImp
            ,@RendDesImp
            ,@ImpLiq
            ,@IngrNet
            ,@ValorNet
            ,@EstadoIOF
            ,@EstadoRenta
          
)
    "


                    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("@Nombre", SqlDbType.VarChar).Value = Coleccion(1).ToString
                    .Add("@FCompra", SqlDbType.Date).Value = Operaciones.ConvertirFecha(Coleccion(2).ToString)
                    .Add("@ValTrans", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(3).ToString)
                    .Add("@Dias", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(4).ToString)
                    .Add("@FVenc", SqlDbType.Date).Value = Operaciones.ConvertirFecha(Coleccion(5).ToString)
                    .Add("@Rend", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(6).ToString)
                    .Add("@CostoTransfr", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(7).ToString)
                    .Add("@codigo", SqlDbType.VarChar).Value = Coleccion(8).ToString
                    .Add("@ComisionCasa", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(Coleccion(9).ToString)
                    .Add("@ComisionBolsa", SqlDbType.Decimal).Value = Operaciones.ConvertirDecimal(Coleccion(10).ToString)
                    .Add("@Casa", SqlDbType.VarChar).Value = Coleccion(11).ToString
                    .Add("@IOF", SqlDbType.Bit).Value = CByte(Coleccion(12))
                    .Add("@Renta", SqlDbType.Bit).Value = CByte(Coleccion(13))
                    .Add("@Base", SqlDbType.Int).Value = DBNull.Value
                    .Add("@ComisionCasaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(14).ToString)
                    .Add("@ComisionBolsaValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(15).ToString)
                    .Add("@IOFValor", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(16).ToString)
                    .Add("@OtrosCostos", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(17).ToString)
                    .Add("@TotalCostos", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(18).ToString)
                    .Add("@MontoLiq", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(19).ToString)
                    .Add("@IntGenerar", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(20).ToString)
                    .Add("@RendAntImp", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(21).ToString)
                    .Add("@RendDesImp", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(22).ToString)
                    .Add("@ImpLiq", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(23).ToString)
                    .Add("@IngrNet", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(24).ToString)
                    .Add("@ValorNet", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(25).ToString)
                    .Add("@EstadoIOF", SqlDbType.Bit).Value = CByte(Coleccion(27))
                    .Add("@EstadoRenta", SqlDbType.Bit).Value = CByte(Coleccion(28))



                    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 Function CargarReporto(ByVal codigo As String, ByVal Tabla 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 " + Tabla + " where CodInv='" + codigo + "' order by codigo"


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

        dr = cmd.ExecuteReader

        If (Not dr.HasRows) Then
            cn.Close()
            Return Nothing
        End If


        Return dr

    End Function









    Public Sub Eliminar(ByVal Codigo As String, ByVal clave As String, ByVal Tabla 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
        If (String.IsNullOrEmpty(clave)) Then
            sql = "DELETE FROM " + Tabla + "
      WHERE [CodInv]=@CodInv AND codigo is null"

        Else
            sql = "DELETE FROM " + Tabla + "
      WHERE [CodInv]=@CodInv AND codigo=@codigo"

        End If




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

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




    Public Function Nuevo(ByVal oReporto As ReportosCE, 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 cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        Dim Tabla As String = ""


        If Tipo = "P" Then
            Tabla = "PREP"
        End If
        If Tipo = "I" Then
            Tabla = "IREP"
        End If

        Dim cmd As SqlCommand = cn.CreateCommand

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

        query = "INSERT INTO [dbo].[PREP]
           ([DocId]
           ,[CodInv]           
           ,[ValTrans]
           ,[Dias]
           ,[FVenc]
           ,[Rend]
           ,[OtrosCostos]
           ,[TotCostos]
           ,[MontoLiq]
           ,[InterGen]
           ,[CostoTransfr]
           ,[RendNetoAntImp]
           ,[ValReCompra]
           ,[ImpLiquidacion]
           ,[IngrNeto]
           ,[ValNeto]
           ,[RendNetoDespImp])
     VALUES
           (@DocId
           ,@CodInv
           ,@ValTrans
           ,@Dias
           ,@FVenc
           ,@Rend
           ,@OtrosCostos
           ,@TotCostos
           ,@MontoLiq
           ,@InterGen
           ,@CostoTransfr
           ,@RendNetoAntImp
           ,@ValReCompra
           ,@ImpLiquidacion
           ,@IngrNeto
           ,@ValNeto
           ,@RendNetoDespImp
		   )"


        cmd.CommandText = query

        With cmd.Parameters
            .Add("@DocId", SqlDbType.Int).Value = DocId
            .Add("@CodInv", SqlDbType.VarChar).Value = oReporto.ValorTransado
            .Add("@ValTrans", SqlDbType.Decimal).Value = oReporto.ValorTransado
            .Add("@Dias", SqlDbType.Int).Value = oReporto.Dias
            .Add("@FVenc", SqlDbType.DateTime).Value = oReporto.FechaVencimiento
            .Add("@Rend", SqlDbType.Decimal).Value = oReporto.Rendimiento
            .Add("@OtrosCostos", SqlDbType.Decimal).Value = oReporto.OtrosCostos
            .Add("@TotCostos", SqlDbType.Decimal).Value = oReporto.TotalCostos
            .Add("@MontoLiq", SqlDbType.Decimal).Value = oReporto.MontoALiquidar
            .Add("@InterGen", SqlDbType.Decimal).Value = oReporto.InteresAGenerar
            .Add("@CostoTransfr", SqlDbType.Decimal).Value = oReporto.CostoDeTransferencia
            .Add("@RendNetoAntImp", SqlDbType.Decimal).Value = oReporto.RendimientoNetoAntesDeImpuestos
            .Add("@ValReCompra", SqlDbType.Decimal).Value = oReporto.ValorReCompra
            .Add("@ImpLiquidacion", SqlDbType.Decimal).Value = oReporto.ImpuestosLiquidacion
            .Add("@IngrNeto", SqlDbType.Decimal).Value = oReporto.IngresoNeto
            .Add("@ValNeto", SqlDbType.Decimal).Value = oReporto.ValorNeto
            .Add("@RendNetoDespImp", SqlDbType.Decimal).Value = oReporto.RendimientoNetoDespuesDeImpuestos
        End With

        Try
            cmd.ExecuteNonQuery()
            Transaccion.Commit()
            retorno = 0
        Catch ex As Exception
            MsgBox("Error al Guardar Reporto : " & 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 Sub CargarRegistro(ByVal oReportos As ReportosCE, Tipo As String, IdRegistro As Integer)
        Dim objCon As New Conexion
        Dim drd As SqlDataReader
        Dim cmd As SqlCommand
        Dim sql 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 = "PREP"
        End If
        If Tipo = "I" Then
            Tabla = "IREP"
        End If

        sql = "SELECT * FROM [dbo].[" & Tabla & "] T0 WHERE T0.[DocId]=@DocId"


        cmd = New SqlCommand
        cmd.CommandText = sql
        cmd.Parameters.Add("@DocId", SqlDbType.Int).Value = IdRegistro
        cmd.Connection = cn

        drd = cmd.ExecuteReader
        If drd.HasRows Then
            'SE ENCONTRO EL REGISTRO
            If drd.Read Then
                oReportos.CodigoCasa = drd.Item("CodCasa")
                oReportos.Nombre = drd.Item("Nombre")
                oReportos.FechaDeCompra = drd.Item("FCompra")
                oReportos.ValorTransado = drd.Item("ValTrans")
                oReportos.Dias = drd.Item("Dias")
                oReportos.FechaVencimiento = drd.Item("FVenc")
                oReportos.Rendimiento = drd.Item("Rend")
                oReportos.Impuestos = drd.Item("Impuestos")
                oReportos.OtrosCostos = drd.Item("OtrosCostos")
                'oReportos.TotalCostos = drd.Item("TotCostos")
                oReportos.MontoALiquidar = drd.Item("MontoLiq")
                'oReportos.InteresAGenerar = drd.Item("InterGen")
                oReportos.CostoDeTransferencia = drd.Item("CostoTransfr")
                'oReportos.RendimientoNetoAntesDeImpuestos = drd.Item("RendNetoAntImp")
                oReportos.ValorReCompra = drd.Item("ValReCompra")
                oReportos.ImpuestosLiquidacion = drd.Item("ImpLiquidacion")
                'oReportos.IngresoNeto = drd.Item("IngrNeto")
                oReportos.ValorNeto = drd.Item("ValNeto")
                'oReportos.RendimientoNetoDespuesDeImpuestos = drd.Item("RendNetoDespImp")
            End If
        Else
            'NO SE ENCONTRO EL REGISTRO
        End If
        drd.Close()
        cmd.Dispose()
        cn.Dispose()


    End Sub

    Public Function CargarRegistro(ByVal vCodigoInversion As String) As ReportosCE
        Dim objCon As New Conexion
        Dim oReportosCE As ReportosCE
        Dim sql As String
        Dim cmd As SqlCommand
        Dim drd As SqlDataReader
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        oReportosCE = New ReportosCE
        sql = "SELECT * FROM [dbo].[REP0] 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
            If drd.Read Then
                oReportosCE.CodigoInversion = vCodigoInversion
                oReportosCE.Nombre = drd.Item("Nombre")
                oReportosCE.FechaDeCompra = drd.Item("FCompra")
                oReportosCE.ValorTransado = drd.Item("ValTrans")
                oReportosCE.Dias = drd.Item("Dias")
                oReportosCE.FechaVencimiento = drd.Item("FVenc")
                oReportosCE.Rendimiento = drd.Item("Rend")
            End If
        Else
            'NO SE ENCONTRO EL REGISTRO
        End If

        drd.Close()
        cmd.Dispose()
        cn.Dispose()

        Return oReportosCE
    End Function


    Public Function Nuevo(ByVal Coleccion As Collection, ByVal Codigo As String, ByVal Tabla As String)
        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 Tabla = "REP0" Then
            sql = "INSERT INTO " + Tabla + "(
           [CodInv]
            ,[codigo]
            ,[Nombre]
            ,[FCompra]
            ,[ValTrans]
            ,[Dias]
            ,[FVenc]
            ,[Rend]
            ,[CostoTransfr]
            ,[ComisionCasa]
            ,[ComisionBolsa]
            ,[Casa]
            ,[IOF]
            ,[Renta]
            ,[Base]
            ,[ComisionCasaValor]
            ,[ComisionBolsaValor]
            ,[IOFValor]
            ,[OtrosCostos]
            ,[TotalCostos]
            ,[MontoLiq]
            ,[IntGenerar]
            ,[RendAntImp]
            ,[RendDesImp]
            ,[ImpLiq]
            ,[IngrNet]
            ,[ValorNet]
            ,[EstadoIOF]
            ,[EstadoRenta]

) VALUES(
           @CodInv
            ,@codigo
            ,@Nombre
            ,@FCompra
            ,@ValTrans
            ,@Dias
            ,@FVenc
            ,@Rend
            ,@CostoTransfr
            ,@ComisionCasa
            ,@ComisionBolsa
            ,@Casa
            ,@IOF
            ,@Renta
            ,@Base
            ,@ComisionCasaValor
            ,@ComisionBolsaValor
            ,@IOFValor
            ,@OtrosCostos
            ,@TotalCostos
            ,@MontoLiq
            ,@IntGenerar
            ,@RendAntImp
            ,@RendDesImp
            ,@ImpLiq
            ,@IngrNet
            ,@ValorNet
            ,@EstadoIOF
            ,@EstadoRenta
)
    "

        Else


            sql = "INSERT INTO " + Tabla + "(
           [CodInv]
            ,[codigo]
            ,[Nombre]
            ,[FCompra]
            ,[ValTrans]
            ,[Dias]
            ,[FVenc]
            ,[Rend]
            ,[CostoTransfr]
            ,[ComisionCasa]
            ,[ComisionBolsa]
            ,[Casa]
            ,[IOF]
            ,[Renta]
            ,[Base]
            ,[ComisionCasaValor]
            ,[ComisionBolsaValor]
            ,[IOFValor]
            ,[OtrosCostos]
            ,[TotalCostos]
            ,[MontoLiq]
            ,[IntGenerar]
            ,[RendAntImp]
            ,[RendDesImp]
            ,[ImpLiq]
            ,[IngrNet]
            ,[ValorNet]
            ,[EstadoIOF]
            ,[EstadoRenta]
         

) VALUES(
           @CodInv
            ,@codigo
            ,@Nombre
            ,@FCompra
            ,@ValTrans
            ,@Dias
            ,@FVenc
            ,@Rend
            ,@CostoTransfr
            ,@ComisionCasa
            ,@ComisionBolsa
            ,@Casa
            ,@IOF
            ,@Renta
            ,@Base
            ,@ComisionCasaValor
            ,@ComisionBolsaValor
            ,@IOFValor
            ,@OtrosCostos
            ,@TotalCostos
            ,@MontoLiq
            ,@IntGenerar
            ,@RendAntImp
            ,@RendDesImp
            ,@ImpLiq
            ,@IngrNet
            ,@ValorNet
            ,@EstadoIOF
            ,@EstadoRenta
        

)
    "
        End If




        cmd = New SqlCommand
        cmd.CommandText = sql





        With cmd.Parameters
                        .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
                        .Add("@Nombre", SqlDbType.VarChar).Value = Coleccion(1)
                        .Add("@FCompra", SqlDbType.DateTime).Value = Coleccion(2)
                        .Add("@ValTrans", SqlDbType.Float).Value = Coleccion(3)
                        .Add("@Dias", SqlDbType.Float).Value = Coleccion(4)
                        .Add("@FVenc", SqlDbType.DateTime).Value = Coleccion(5)
                        .Add("@Rend", SqlDbType.Float).Value = Coleccion(6)
                        .Add("@CostoTransfr", SqlDbType.Float).Value = Coleccion(7)
                        .Add("@codigo", SqlDbType.VarChar).Value = Coleccion(8)
                        .Add("@ComisionCasa", SqlDbType.Decimal).Value = Coleccion(9)
                        .Add("@ComisionBolsa", SqlDbType.Decimal).Value = Coleccion(10)
                        .Add("@Casa", SqlDbType.VarChar).Value = Coleccion(11)
                        .Add("@IOF", SqlDbType.Bit).Value = CByte(Coleccion(12))
            .Add("@Renta", SqlDbType.Bit).Value = CByte(Coleccion(13))
            .Add("@Base", SqlDbType.Int).Value = DBNull.Value
            .Add("@ComisionCasaValor", SqlDbType.Float).Value = Coleccion(14)
                .Add("@ComisionBolsaValor", SqlDbType.Float).Value = Coleccion(15)
                .Add("@IOFValor", SqlDbType.Float).Value = Coleccion(16)
                .Add("@OtrosCostos", SqlDbType.Float).Value = Coleccion(17)
                .Add("@TotalCostos", SqlDbType.Float).Value = Coleccion(18)
                .Add("@MontoLiq", SqlDbType.Float).Value = Coleccion(19)
                .Add("@IntGenerar", SqlDbType.Float).Value = Coleccion(20)
                .Add("@RendAntImp", SqlDbType.Float).Value = Coleccion(21)
                .Add("@RendDesImp", SqlDbType.Float).Value = Coleccion(22)
                .Add("@ImpLiq", SqlDbType.Float).Value = Coleccion(23)
                .Add("@IngrNet", SqlDbType.Float).Value = Coleccion(24)
            .Add("@ValorNet", SqlDbType.Float).Value = Coleccion(25)
            .Add("@EstadoIOF", SqlDbType.Float).Value = Coleccion(24)
            .Add("@EstadoRenta", SqlDbType.Float).Value = Coleccion(25)


        End With




        cmd.Connection = cn

            retorno = cmd.ExecuteNonQuery

        cn.Close()
        Return retorno

    End Function




    Public Function Modificar(ByVal Coleccion As Collection, ByVal Codigo As String, ByVal Tabla As String)
        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 Tabla = "REP0" Then

            sql = "UPDATE " + Tabla + " SET
            [codigo]=@codigo
            ,[Nombre]=@Nombre
            ,[FCompra]=@FCompra
            ,[ValTrans]=@ValTrans
            ,[Dias]=@Dias
            ,[FVenc]=@FVenc
            ,[Rend]=@Rend
            ,[CostoTransfr]=@CostoTransfr
            ,[ComisionCasa]=@ComisionCasa
            ,[ComisionBolsa]=@ComisionBolsa
            ,[Casa]=@Casa
            ,[IOF]=@IOF
            ,[Renta]=@Renta
            ,[Base]=@Base


         ,[ComisionCasaValor]=@ComisionCasaValor
            ,[ComisionBolsaValor]=@ComisionBolsaValor
            ,[IOFValor]=@IOFValor
            ,[OtrosCostos]=@OtrosCostos
            ,[TotalCostos]=@TotalCostos
            ,[MontoLiq]=@MontoLiq
            ,[IntGenerar]=@IntGenerar
            ,[RendAntImp]=@RendAntImp
            ,[RendDesImp]=@RendDesImp
            ,[ImpLiq]=@ImpLiq
            ,[IngrNet]=@IngrNet
            ,[ValorNet]=@ValorNet




            where  [CodInv]=@CodInv AND ([codigo]=@codigo OR codigo is null)
    "
        Else

            sql = "UPDATE " + Tabla + " SET
   
            [Monto]=@Monto
            ,[FVenc]=@FVenc
            ,[CostoFinanciero]=@CostoFinanciero
            ,[Interes]=@Interes
            ,[Bolsa]=@Bolsa
            ,[TotPagar]=@TotPagar
            ,[Nombre]=@Nombre
            ,[FCompra]=@FCompra
            ,[ComisionCasa]=@ComisionCasa
            ,[ComisionBolsa]=@ComisionBolsa
            ,[Casa]=@Casa
            ,[Casa2]=@Casa2
            ,[Dias]=@Dias
            ,[Base]=@Base
   where  [CodInv]=@CodInv AND ([codigo]=@codigo OR codigo is null)


    "

        End If

        cmd = New SqlCommand
        cmd.CommandText = sql
        'Try

        If Tabla = "REP0" Then


            With cmd.Parameters
                .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
                .Add("@Nombre", SqlDbType.VarChar).Value = Coleccion(1)
                .Add("@FCompra", SqlDbType.DateTime).Value = Coleccion(2)
                .Add("@ValTrans", SqlDbType.Float).Value = Coleccion(3)
                .Add("@Dias", SqlDbType.Float).Value = Coleccion(4)
                .Add("@FVenc", SqlDbType.DateTime).Value = Coleccion(5)
                .Add("@Rend", SqlDbType.Float).Value = Coleccion(6)
                .Add("@CostoTransfr", SqlDbType.Float).Value = Coleccion(7)
                .Add("@codigo", SqlDbType.VarChar).Value = Coleccion(8)
                .Add("@ComisionCasa", SqlDbType.Decimal).Value = Coleccion(9)
                .Add("@ComisionBolsa", SqlDbType.Decimal).Value = Coleccion(10)
                .Add("@Casa", SqlDbType.VarChar).Value = Coleccion(11)
                .Add("@IOF", SqlDbType.Bit).Value = CByte(Coleccion(12))
                .Add("@Renta", SqlDbType.Bit).Value = CByte(Coleccion(13))

                If Coleccion(14) Is DBNull.Value Then
                    '.Add("@Base", SqlDbType.Int).Value = 0
                Else
                    If String.IsNullOrEmpty(Coleccion(14)) Then
                        '.Add("@Base", SqlDbType.Int).Value = 0
                    Else
                        '.Add("@Base", SqlDbType.Int).Value = Coleccion(14)
                    End If

                End If

                .Add("@Base", SqlDbType.Int).Value = DBNull.Value


                .Add("@ComisionCasaValor", SqlDbType.Float).Value = Coleccion(14)
                .Add("@ComisionBolsaValor", SqlDbType.Float).Value = Coleccion(15)
                .Add("@IOFValor", SqlDbType.Float).Value = Coleccion(16)
                .Add("@OtrosCostos", SqlDbType.Float).Value = Coleccion(17)
                .Add("@TotalCostos", SqlDbType.Float).Value = Coleccion(18)
                .Add("@MontoLiq", SqlDbType.Float).Value = Coleccion(19)
                .Add("@IntGenerar", SqlDbType.Float).Value = Coleccion(20)
                .Add("@RendAntImp", SqlDbType.Float).Value = Coleccion(21)
                .Add("@RendDesImp", SqlDbType.Float).Value = Coleccion(22)
                .Add("@ImpLiq", SqlDbType.Float).Value = Coleccion(23)
                .Add("@IngrNet", SqlDbType.Float).Value = Coleccion(24)
                .Add("@ValorNet", SqlDbType.Float).Value = Coleccion(25)
            End With

        Else
            With cmd.Parameters
                .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
                .Add("@Monto", SqlDbType.Float).Value = Coleccion(1)
                .Add("@FVenc", SqlDbType.Date).Value = Coleccion(2)
                .Add("@CostoFinanciero", SqlDbType.Float).Value = Coleccion(3)
                .Add("@Interes", SqlDbType.Float).Value = Coleccion(4)
                .Add("@Bolsa", SqlDbType.Float).Value = Coleccion(5)
                .Add("@TotPagar", SqlDbType.Float).Value = Coleccion(6)
                .Add("@Nombre", SqlDbType.VarChar).Value = Coleccion(7)
                .Add("@FCompra", SqlDbType.Date).Value = Coleccion(8)
                .Add("@ComisionCasa", SqlDbType.Decimal).Value = Coleccion(9)
                .Add("@ComisionBolsa", SqlDbType.Decimal).Value = Coleccion(10)
                .Add("@Casa", SqlDbType.Float).Value = Coleccion(11)
                .Add("@Casa2", SqlDbType.VarChar).Value = Coleccion(12)
                .Add("@Dias", SqlDbType.Int).Value = Coleccion(13)
                .Add("@codigo", SqlDbType.Int).Value = Coleccion(14)
                If Coleccion(15) Is DBNull.Value Then
                    '.Add("@Base", SqlDbType.Int).Value = 0
                Else
                    If String.IsNullOrEmpty(Coleccion(15)) Then
                        '.Add("@Base", SqlDbType.Int).Value = 0
                    Else
                        '.Add("@Base", SqlDbType.Int).Value = Coleccion(15)
                    End If

                End If
                .Add("@Base", SqlDbType.Int).Value = DBNull.Value

            End With
        End If
        cmd.Connection = cn

        retorno = cmd.ExecuteNonQuery

        'Catch ex As Exception
        '    MsgBox("Error al Modificar los registros")
        '    Return Nothing
        'End Try
        cn.Close()
        Return retorno

    End Function

    Public Function TraerImpuesto(ByVal Codigo As String, ByVal codigoElemento As String)
        Dim objCon As New Conexion
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (Not String.IsNullOrEmpty(Codigo)) Then


            Dim sql As String
            Dim cmd As SqlCommand
            Dim Impuesto As String

            sql = "SELECT * FROM REP0 WHERE CodInv=@Codigo and [codigo]=@codigoElemento"


            cmd = New SqlCommand


            cmd.CommandText = sql
            cmd.Parameters.Add("@Codigo", SqlDbType.VarChar).Value = Codigo
            cmd.Parameters.Add("@codigoElemento", SqlDbType.VarChar).Value = codigoElemento
            cmd.Connection = cn

            ' Dim Datos = cmd.ExecuteScalar
            Dim Datos = cmd.ExecuteReader
            cn.Close()
            If Datos.HasRows Then
                'SE ENCONTRO EL REGISTRO

                Try


                    If Datos.Read Then
                        Impuesto = Datos.Item("Impuestos")
                        Return Impuesto

                    Else
                        Return 0
                    End If

                Catch ex As Exception
                    Return 0
                End Try

            Else
                Return 0
            End If
        Else
            Return 0
        End If
    End Function

    Public Function AgregarImpuesto(ByVal CodigoInv As String, ByVal CodigoElemento As String, ByVal Impues As String, ByVal Flag 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
        Dim Impuestos As String = TraerImpuesto(CodigoInv, CodigoElemento)
        If (String.IsNullOrEmpty(Impuestos) Or Impuestos = "0") Then
            Impuestos = Impues
        Else
            If (Flag = 0) Then


                If InStr(1, Impuestos, Impues) = 0 Then

                    Impuestos = Impuestos.ToString + "-" + Impues.ToString
                End If
            Else
                If Not InStr(1, Impuestos, Impues) = 0 Then

                    Dim QuitarImpuesto = Impuestos.Split("-")
                    Impuestos = String.Empty
                    For Each i In QuitarImpuesto

                        If (Not i = Impues) Then
                            If (String.IsNullOrEmpty(Impuestos)) Then
                                Impuestos = i
                            Else
                                Impuestos = Impuestos + "-" + i
                            End If
                        End If
                    Next



                End If

            End If
        End If


















        sql = "UPDATE [dbo].[REP0] SET
           
           [Impuestos]=@Impuestos
           where [CodInv]=@CodInv and [codigo]=@codigo

    "

        cmd = New SqlCommand
        cmd.CommandText = sql

        With cmd.Parameters
            .Add("@CodInv", SqlDbType.VarChar).Value = CodigoInv
            .Add("@codigo", SqlDbType.VarChar).Value = CodigoElemento
            .Add("@Impuestos", SqlDbType.VarChar).Value = Impuestos
        End With

        cmd.Connection = cn

        retorno = cmd.ExecuteNonQuery

        cn.Close()
        Return retorno

    End Function

    Public Function FiltroReportoVenta(ByRef FechaVenOperacion1 As String, ByRef FechaVenOperacion2 As String, ByRef Estado As String, ByRef Empresa As String, ByRef CasaCorredora As String) As DataSet
        Dim objCon As New Conexion
        Dim da As New SqlDataAdapter
        Dim ds As New DataSet

        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        Dim sql = "SP_CargarReportoVentas"


        Dim cmd As New SqlCommand(sql, cn)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add("@FechaOperacion1", SqlDbType.Date).Value = Operaciones.ConvertirFechaBaseDatos(FechaVenOperacion1)
        cmd.Parameters.Add("@FechaOperacion2", SqlDbType.Date).Value = Operaciones.ConvertirFechaBaseDatos(FechaVenOperacion2)
        cmd.Parameters.Add("@Empresa", SqlDbType.VarChar).Value = Empresa
        cmd.Parameters.Add("@CasaCorredora", SqlDbType.VarChar).Value = CasaCorredora
        cmd.Parameters.Add("@Estado", SqlDbType.VarChar).Value = Estado
        da = New SqlDataAdapter(cmd)

        da.Fill(ds)
        cn.Close()
        Return ds
    End Function


    Public Function FiltroReportoCostos() As DataSet
        Dim objCon As New Conexion
        Dim da As New SqlDataAdapter
        Dim ds As New DataSet
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        Dim sql = "SP_CargarReportoCostos"


        Dim cmd As New SqlCommand(sql, cn)
        cmd.CommandType = CommandType.StoredProcedure

        da = New SqlDataAdapter(cmd)

        da.Fill(ds)
        cn.Close()
        Return ds
    End Function

    Public Function ReportoVentaFondo(ByRef Vigente As String, ByRef Vencido As String) As DataTable
        Dim objCon As New Conexion
        Dim da As New SqlDataAdapter
        Dim ds As New DataSet

        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        Dim sql = "SP_CargarReportoVentaFondo"


        Dim cmd As New SqlCommand(sql, cn)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add("@Vigente", SqlDbType.VarChar).Value = Vigente
        cmd.Parameters.Add("@Vencido", SqlDbType.VarChar).Value = Vencido

        da = New SqlDataAdapter(cmd)

        da.Fill(ds)
        cn.Close()
        Return ds.Tables(0)
    End Function
End Class
