Imports System.Data.SqlClient
Public Class ReportosDAO



    Dim Operaciones As New Operaciones




    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 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).ToString
            .Add("@FCompra", SqlDbType.DateTime).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.DateTime).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.Float).Value = Operaciones.ConvertirDecimal(Coleccion(24).ToString)
            .Add("@EstadoRenta", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(25).ToString)


        End With




        cmd.Connection = cn

            retorno = cmd.ExecuteNonQuery

        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.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 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

End Class
