Imports System.Data.SqlClient
Public Class ReportosDAO
    Dim oCon As New Conexion
    Dim cn As SqlConnection


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


        Return retorno
    End Function
    Public Function Nuevo(ByVal oReporto As ReportosCE, DocId As Integer, Tipo As String) As Integer
        Dim retorno As Integer = -1
        Dim Transaccion As SqlTransaction
        Dim query As String

        Dim Tabla As String = ""


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


        cn = oCon.Conectar
        cn.Open()
        Dim cmd As SqlCommand = cn.CreateCommand

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

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


        cmd.CommandText = query

        With cmd.Parameters
            .Add("@DocId", SqlDbType.Int).Value = DocId
            .Add("@CodCasa", SqlDbType.VarChar).Value = oReporto.CodigoCasa
            .Add("@Nombre", SqlDbType.VarChar).Value = oReporto.Nombre
            .Add("@FCompra", SqlDbType.DateTime).Value = oReporto.FechaDeCompra
            .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("@Impuestos", SqlDbType.Decimal).Value = oReporto.Impuestos
            .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 drd As SqlDataReader
        Dim cmd As SqlCommand
        Dim sql As String
        Dim Tabla As String

        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"

        cn = oCon.Conectar

        cn.Open()

        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 oReportosCE As ReportosCE
        Dim sql As String
        Dim cmd As SqlCommand
        Dim drd As SqlDataReader

        oReportosCE = New ReportosCE
        sql = "SELECT * FROM [dbo].[REP0] T0 WHERE T0.[CodInv]=@CodInv"

        cn = oCon.Conectar

        If Not cn.State = ConnectionState.Open Then
            cn.Open()
        End If

        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
End Class
