Imports System.Data.SqlClient
Public Class BonosDAO



    Dim oDAOGeneral As New DAOGeneral

    Public Function Nuevo(ByVal oBono As BonosCE) As Integer
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim query As String

        Dim cmd As SqlCommand
        'Dim vSiguienteCodigo As String = String.Empty
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If


        If Not oBono Is Nothing Then
            'VIENE OBJETO BONO
            'vSiguienteCodigo = Me.SiguienteCodigo(oBono)

            query = "INSERT INTO [dbo].[BON0]
([CodInv]
,[PeriodicC]
,[ValNomC]
,[UltFCupC]
,[SigFCupC]
,[FLiqC]
,[FVencC]
,[PorcCupC]
--,[YTMVencComC]
,[YTMVencC]
,[PrecVencC]
,[PrecioCompra]
,[DiasBaseC]
--,[DiasAcumC]
--,[DiasVencC]
--,[PorcIntAcumC]
--,[IntAcumC]
--,[PrecioSucioC]
--,[ValTransC]
--,[MontoPagarC]
,[CostoTransC]

,[PeriodicV]
,[ValNomV]
,[UltFCupV]
,[SigFCupV]
,[FLiqV]
,[FVencV]
,[PorcCupV]
--,[YTMVencComV]
,[YTMVencV]
,[PrecVencV]
,[PrecioVenta]
,[DiasBaseV]
--,[DiasAcumV]
--,[DiasVencV]
--,[PorcIntAcumV]
--,[IntAcumV]
--,[PrecioSucioV]
--,[ValTransV]
--,[MontoPagarV]
,[CostoTransV]
--,[ValNomRO]
--,[PlazoRO]
--,[PrecioCompraRO]
--,[PrecioVentaRO]
--,[GanPerdCap]
--,[IngrPorInt]
--,[CostosTotales]
--,[GanPerdTot]
--,[RendGanPerd]
--,[RendInt]
--,[RendAntISR]
--,[RendDespISR]
)
VALUES
(@CodInv
,@PeriodicC
,@ValNomC
,@UltFCupC
,@SigFCupC
,@FLiqC
,@FVencC
,@PorcCupC
--,@YTMVencComC
,@YTMVencC
,@PrecVencC
,@PrecioCompra
,@DiasBaseC
--,@DiasAcumC
--,@DiasVencC
--,@PorcIntAcumC
--,@IntAcumC
--,@PrecioSucioC
--,@ValTransC
--,@MontoPagarC
,@CostoTransC

,@PeriodicV
,@ValNomV
,@UltFCupV
,@SigFCupV
,@FLiqV
,@FVencV
,@PorcCupV
--,@YTMVencComV
,@YTMVencV
,@PrecVencV
,@PrecioVenta
,@DiasBaseV
--,@DiasAcumV
--,@DiasVencV
--,@PorcIntAcumV
--,@IntAcumV
--,@PrecioSucioV
--,@ValTransV
--,@MontoPagarV
,@CostoTransV

--,@ValNomRO
--,@PlazoRO
--,@PrecioCompraRO
--,@PrecioVentaRO
--,@GanPerdCap
--,@IngrPorInt
--,@CostosTotales
--,@GanPerdTot
--,@RendGanPerd
--,@RendInt
--,@RendAntISR
--,@RendDespISR
)"
            cmd = New SqlCommand
            cmd.CommandText = query

            With cmd.Parameters
                .Add("@CodInv", SqlDbType.VarChar).Value = oBono.CodigoInversion
                .Add("@PeriodicC", SqlDbType.VarChar).Value = oBono.PeriodicidadCompra
                .Add("@ValNomC", SqlDbType.Float).Value = oBono.ValorNominalCompra
                .Add("@UltFCupC", SqlDbType.Date).Value = oBono.UltimaFechaCuponCompra
                .Add("@SigFCupC", SqlDbType.Date).Value = oBono.SiguienteFechaCuponCompra
                .Add("@FLiqC", SqlDbType.Date).Value = oBono.FechaLiquidacionCompra
                .Add("@FVencC", SqlDbType.Date).Value = oBono.FechaVencimientoCompra
                .Add("@PorcCupC", SqlDbType.Float).Value = oBono.PorcentajeCuponCompra
                '.Add("@YTMVencComC", SqlDbType.Float).Value = oBono.YTMAlVencimientoComisionCompra
                .Add("@YTMVencC", SqlDbType.Float).Value = oBono.YTMAlVencimientoCompra
                .Add("@PrecVencC", SqlDbType.Float).Value = oBono.PrecioAlVencimientoCompra
                .Add("@PrecioCompra", SqlDbType.Float).Value = oBono.PrecioCompra
                .Add("@DiasBaseC", SqlDbType.Int).Value = oBono.DiasBaseCompra
                '.Add("@DiasAcumC", SqlDbType.Int).Value = oBono.DiasAcumuladosCompra
                '.Add("@DiasVencC", SqlDbType.Int).Value = oBono.DiasAlVencimientoCompra
                '.Add("@PorcIntAcumC", SqlDbType.Float).Value = oBono.PorcentajeInteresAcumuladoCompra
                '.Add("@IntAcumC", SqlDbType.Float).Value = oBono.InteresAcumuladoCompra
                '.Add("@PrecioSucioC", SqlDbType.Float).Value = oBono.PrecioSucioCompra
                '.Add("@ValTransC", SqlDbType.Float).Value = oBono.ValorTransadoCompra
                '.Add("@MontoPagarC", SqlDbType.Float).Value = oBono.MontoAPagarCompra
                .Add("@CostoTransC", SqlDbType.Float).Value = oBono.CostoDeTransferenciaCompra

                .Add("@PeriodicV", SqlDbType.Float).Value = oBono.PeriodicidadVenta
                .Add("@ValNomV", SqlDbType.Float).Value = oBono.ValorNominalVenta
                .Add("@UltFCupV", SqlDbType.Date).Value = oBono.UltimaFechaCuponVenta
                .Add("@SigFCupV", SqlDbType.Date).Value = oBono.SiguienteFechaCuponVenta
                .Add("@FLiqV", SqlDbType.Date).Value = oBono.FechaLiquidacionVenta
                .Add("@FVencV", SqlDbType.Date).Value = oBono.FechaVencimientoVenta
                .Add("@PorcCupV", SqlDbType.Float).Value = oBono.PorcentajeCuponVenta
                '.Add("@YTMVencComV", SqlDbType.Float).Value = oBono.YTMAlVencimientoComisionVenta
                .Add("@YTMVencV", SqlDbType.Float).Value = oBono.YTMAlVencimientoVenta
                .Add("@PrecVencV", SqlDbType.Float).Value = oBono.PrecioAlVencimientoVenta
                .Add("@PrecioVenta", SqlDbType.Float).Value = oBono.PrecioVenta
                .Add("@DiasBaseV", SqlDbType.Int).Value = oBono.DiasBaseVenta
                '.Add("@DiasAcumV", SqlDbType.Int).Value = oBono.DiasAcumuladosVenta
                '.Add("@DiasVencV", SqlDbType.Int).Value = oBono.DiasAlVencimientoVenta
                '.Add("@PorcIntAcumV", SqlDbType.Float).Value = oBono.PorcentajeInteresAcumuladoVenta
                '.Add("@IntAcumV", SqlDbType.Float).Value = oBono.InteresAcumuladoVenta
                '.Add("@PrecioSucioV", SqlDbType.Float).Value = oBono.PrecioSucioVenta
                '.Add("@ValTransV", SqlDbType.Float).Value = oBono.ValorTransadoVenta
                '.Add("@MontoPagarV", SqlDbType.Float).Value = oBono.MontoARecibirVenta
                .Add("@CostoTransV", SqlDbType.Float).Value = oBono.CostoDeTransferenciaVenta

                '.Add("@ValNomRO", SqlDbType.Float).Value = oBono.ValorNominalRO
                '.Add("@PlazoRO", SqlDbType.Float).Value = oBono.DiasPlazoRO
                '.Add("@PrecioCompraRO", SqlDbType.Float).Value = oBono.PrecioCompraRO
                '.Add("@PrecioVentaRO", SqlDbType.Float).Value = oBono.PrecioVentaRO
                '.Add("@GanPerdCap", SqlDbType.Float).Value = oBono.GananciaPerdidaDeCapital
                '.Add("@IngrPorInt", SqlDbType.Float).Value = oBono.IngresoPorInteres
                '.Add("@CostosTotales", SqlDbType.Float).Value = oBono.CostosTotales
                '.Add("@GanPerdTot", SqlDbType.Float).Value = oBono.GananciaPerdidaTotal
                '.Add("@RendGanPerd", SqlDbType.Float).Value = oBono.RendimientoGananciaPerdida
                '.Add("@RendInt", SqlDbType.Float).Value = oBono.RendimientoDeIntereses
                '.Add("@RendAntISR", SqlDbType.Float).Value = oBono.RendimientoAntesImpuestos
                '.Add("@RendDespISR", SqlDbType.Float).Value = oBono.RendimientoDespuesImpuestos
            End With


            cmd.Connection = cn

            Try
                retorno = cmd.ExecuteNonQuery
            Catch ex As Exception
                retorno = 0
            End Try

        Else
            'NO VIENE OBJETO BONO
            retorno = 0
        End If



        cn.Close()
        Return retorno
    End Function
    Function Nuevo(ByVal oBono As BonosCE, 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 = "PBON"
        End If
        If Tipo = "I" Then
            Tabla = "IBON"
        End If


        Dim cmd As SqlCommand = cn.CreateCommand

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

        query = "INSERT INTO [dbo].[PBON]
           ([DocId]
           ,[CodCasaC]
           ,[ValNomC]
           ,[UltFCupC]
           ,[SigFCupC]
           ,[FLiqC]
           ,[FVencC]
           ,[PorcCupC]
           ,[YMTVencComC]
           ,[YMTVencC]
           ,[PrecVencC]
           ,[PrecioCompra]
           ,[DiasBaseC]
           ,[DiasAcumC]
           ,[DiasVencC]
           ,[PorcIntAcumC]
           ,[IntAcumC]
           ,[PrecioSucioC]
           ,[ValTransC]
           ,[MontoPagarC]
           ,[CostoTransC]
           ,[CodCasaV]
           ,[ValNomV]
           ,[UltFCupV]
           ,[SigFCupV]
           ,[FLiqV]
           ,[FVencV]
           ,[PorcCupV]
           ,[YMTVencComV]
           ,[YMTVencV]
           ,[PrecVencV]
           ,[PrecioVenta]
           ,[DiasBaseV]
           ,[DiasAcumV]
           ,[DiasVencV]
           ,[PorcIntAcumV]
           ,[IntAcumV]
           ,[PrecioSucioV]
           ,[ValTransV]
           ,[MontoPagarV]
           ,[CostoTransV]
           ,[ValNomRO]
           ,[PlazoRO]
           ,[PrecioCompraRO]
           ,[PrecioVentaRO]
           ,[GanPerdCap]
           ,[IngrPorInt]
           ,[CostosTotales]
           ,[GanPerdTot]
           ,[RendGanPerd]
           ,[RendInt]
           ,[RendAntISR]
           ,[RendDespISR])
     VALUES
           (@DocId
           ,@CodCasaC
           ,@ValNomC
           ,@UltFCupC
           ,@SigFCupC
           ,@FLiqC
           ,@FVencC
           ,@PorcCupC
           ,@YMTVencComC
           ,@YMTVencC
           ,@PrecVencC
           ,@PrecioCompra
           ,@DiasBaseC
           ,@DiasAcumC
           ,@DiasVencC
           ,@PorcIntAcumC
           ,@IntAcumC
           ,@PrecioSucioC
           ,@ValTransC
           ,@MontoPagarC
           ,@CostoTransC
           ,@CodCasaV
           ,@ValNomV
           ,@UltFCupV
           ,@SigFCupV
           ,@FLiqV
           ,@FVencV
           ,@PorcCupV
           ,@YMTVencComV
           ,@YMTVencV
           ,@PrecVencV
           ,@PrecioVenta
           ,@DiasBaseV
           ,@DiasAcumV
           ,@DiasVencV
           ,@PorcIntAcumV
           ,@IntAcumV
           ,@PrecioSucioV
           ,@ValTransV
           ,@MontoPagarV
           ,@CostoTransV
           ,@ValNomRO
           ,@PlazoRO
           ,@PrecioCompraRO
           ,@PrecioVentaRO
           ,@GanPerdCap
           ,@IngrPorInt
           ,@CostosTotales
           ,@GanPerdTot
           ,@RendGanPerd
           ,@RendInt
           ,@RendAntISR
           ,@RendDespISR
		   )"

        cmd.CommandText = query

        With cmd.Parameters
            .Add("@DocId", SqlDbType.Int).Value = DocId
            '.Add("@CodCasaC", SqlDbType.VarChar).Value = oBono.CodigoCasaCompra
            .Add("@ValNomC", SqlDbType.Decimal).Value = oBono.ValorNominalCompra
            .Add("@UltFCupC", SqlDbType.DateTime).Value = oBono.UltimaFechaCuponCompra
            .Add("@SigFCupC", SqlDbType.DateTime).Value = oBono.SiguienteFechaCuponCompra
            .Add("@FLiqC", SqlDbType.DateTime).Value = oBono.FechaLiquidacionCompra
            .Add("@FVencC", SqlDbType.DateTime).Value = oBono.FechaVencimientoCompra
            .Add("@PorcCupC", SqlDbType.Decimal).Value = oBono.PorcentajeCuponCompra
            .Add("@YMTVencComC", SqlDbType.Decimal).Value = oBono.YTMAlVencimientoComisionCompra
            .Add("@YMTVencC", SqlDbType.Decimal).Value = oBono.YTMAlVencimientoCompra
            .Add("@PrecVencC", SqlDbType.Decimal).Value = oBono.PrecioAlVencimientoCompra
            .Add("@PrecioCompra", SqlDbType.Decimal).Value = oBono.PrecioCompra
            .Add("@DiasBaseC", SqlDbType.Int).Value = oBono.DiasBaseCompra
            .Add("@DiasAcumC", SqlDbType.Int).Value = oBono.DiasAcumuladosCompra
            .Add("@DiasVencC", SqlDbType.Int).Value = oBono.DiasAlVencimientoCompra
            .Add("@PorcIntAcumC", SqlDbType.Decimal).Value = oBono.PorcentajeInteresAcumuladoCompra
            .Add("@IntAcumC", SqlDbType.Decimal).Value = oBono.InteresAcumuladoCompra
            .Add("@PrecioSucioC", SqlDbType.Decimal).Value = oBono.PrecioSucioCompra
            .Add("@ValTransC", SqlDbType.Decimal).Value = oBono.ValorTransadoCompra
            .Add("@MontoPagarC", SqlDbType.Decimal).Value = oBono.MontoAPagarCompra
            .Add("@CostoTransC", SqlDbType.Decimal).Value = oBono.CostoDeTransferenciaCompra

            '.Add("@CodCasaV", SqlDbType.VarChar).Value = oBono.CodigoCasaVenta
            .Add("@ValNomV", SqlDbType.Decimal).Value = oBono.ValorNominalVenta
            .Add("@UltFCupV", SqlDbType.DateTime).Value = oBono.UltimaFechaCuponVenta
            .Add("@SigFCupV", SqlDbType.DateTime).Value = oBono.SiguienteFechaCuponVenta
            .Add("@FLiqV", SqlDbType.DateTime).Value = oBono.FechaLiquidacionVenta
            .Add("@FVencV", SqlDbType.DateTime).Value = oBono.FechaVencimientoVenta
            .Add("@PorcCupV", SqlDbType.Decimal).Value = oBono.PorcentajeCuponVenta
            .Add("@YMTVencComV", SqlDbType.Decimal).Value = oBono.YTMAlVencimientoComisionVenta
            .Add("@YMTVencV", SqlDbType.Decimal).Value = oBono.YTMAlVencimientoVenta
            .Add("@PrecVencV", SqlDbType.Decimal).Value = oBono.PrecioAlVencimientoVenta
            .Add("@PrecioVenta", SqlDbType.Decimal).Value = oBono.PrecioVenta
            .Add("@DiasBaseV", SqlDbType.Int).Value = oBono.DiasBaseVenta
            .Add("@DiasAcumV", SqlDbType.Int).Value = oBono.DiasAcumuladosVenta
            .Add("@DiasVencV", SqlDbType.Int).Value = oBono.DiasAlVencimientoVenta
            .Add("@PorcIntAcumV", SqlDbType.Decimal).Value = oBono.InteresAcumuladoPorcentajeVenta
            .Add("@IntAcumV", SqlDbType.Decimal).Value = oBono.InteresAcumuladoVenta
            .Add("@PrecioSucioV", SqlDbType.Decimal).Value = oBono.PrecioSucioVenta
            .Add("@ValTransV", SqlDbType.Decimal).Value = oBono.ValorTransadoVenta
            .Add("@MontoPagarV", SqlDbType.Decimal).Value = oBono.MontoARecibirVenta
            .Add("@CostoTransV", SqlDbType.Decimal).Value = oBono.CostoDeTransferenciaVenta
            .Add("@ValNomRO", SqlDbType.Decimal).Value = oBono.ValorNominalRO
            .Add("@PlazoRO", SqlDbType.Decimal).Value = oBono.DiasPlazoRO
            .Add("@PrecioCompraRO", SqlDbType.Decimal).Value = oBono.PrecioCompraRO
            .Add("@PrecioVentaRO", SqlDbType.Decimal).Value = oBono.PrecioVentaRO
            .Add("@GanPerdCap", SqlDbType.Decimal).Value = oBono.GananciaPerdidaDeCapital
            .Add("@IngrPorInt", SqlDbType.Decimal).Value = oBono.IngresoPorInteres
            .Add("@CostosTotales", SqlDbType.Decimal).Value = oBono.CostosTotales
            .Add("@GanPerdTot", SqlDbType.Decimal).Value = oBono.GananciaPerdidaTotal
            .Add("@RendGanPerd", SqlDbType.Decimal).Value = oBono.RendimientoGananciaPerdida
            .Add("@RendInt", SqlDbType.Decimal).Value = oBono.RendimientoDeIntereses
            .Add("@RendAntISR", SqlDbType.Decimal).Value = oBono.RendimientoAntesImpuestos
            .Add("@RendDespISR", SqlDbType.Decimal).Value = oBono.RendimientoDespuesImpuestos
        End With

        Try
            cmd.ExecuteNonQuery()
            Transaccion.Commit()
            retorno = 0
        Catch ex As Exception
            MsgBox("Error al Guardar Bono : " & 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 oBonos As BonosCE, 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 = "PBON"
        End If
        If Tipo = "I" Then
            Tabla = "IBON"
        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
                'oBonos.CodigoCasaCompra = drd.Item("CodCasaC")
                oBonos.ValorNominalCompra = drd.Item("ValNomC")
                oBonos.UltimaFechaCuponCompra = drd.Item("UltFCupC")
                oBonos.SiguienteFechaCuponCompra = drd.Item("SigFCupC")
                oBonos.FechaLiquidacionCompra = drd.Item("FLiqC")
                oBonos.FechaVencimientoCompra = drd.Item("FVencC")
                oBonos.PorcentajeCuponCompra = drd.Item("PorcCupC")
                'oBonos.YTMAlVencimientoComisionCompra = drd.Item("YTMVencComC")
                'oBonos.YTMAlVencimientoCompra = drd.Item("YTMVencC")
                oBonos.PrecioAlVencimientoCompra = drd.Item("PrecVencC")
                oBonos.PrecioCompra = drd.Item("PrecioCompra")
                oBonos.DiasBaseCompra = drd.Item("DiasBaseC")
                'oBonos.DiasAcumuladosCompra = drd.Item("DiasAcumC")
                'oBonos.DiasAlVencimientoCompra = drd.Item("DiasVencC")
                'oBonos.PorcentajeInteresAcumuladoCompra = drd.Item("PorcIntAcumC")
                'oBonos.InteresAcumuladoCompra = drd.Item("IntAcumC")
                'oBonos.PrecioSucioCompra = drd.Item("PrecioSucioC")
                'oBonos.ValorTransadoCompra = drd.Item("ValTransC")
                'oBonos.MontoAPagarCompra = drd.Item("MontoPagarC")
                oBonos.CostoDeTransferenciaCompra = drd.Item("CostoTransC")

                'oBonos.CodigoCasaVenta = drd.Item("CodCasaV")
                oBonos.ValorNominalVenta = drd.Item("ValNomV")
                oBonos.UltimaFechaCuponVenta = drd.Item("UltFCupV")
                oBonos.SiguienteFechaCuponVenta = drd.Item("SigFCupV")
                oBonos.FechaLiquidacionVenta = drd.Item("FLiqV")
                oBonos.FechaVencimientoVenta = drd.Item("FVencV")
                oBonos.PorcentajeCuponVenta = drd.Item("PorcCupV")
                'oBonos.YTMAlVencimientoComisionVenta = drd.Item("YTMVencComV")
                'oBonos.YTMAlVencimientoVenta = drd.Item("YTMVencV")
                oBonos.PrecioAlVencimientoVenta = drd.Item("PrecVencV")
                oBonos.PrecioVenta = drd.Item("PrecioVenta")
                oBonos.DiasBaseVenta = drd.Item("DiasBaseV")
                'oBonos.DiasAcumuladosVenta = drd.Item("DiasAcumV")
                'oBonos.DiasAlVencimientoVenta = drd.Item("DiasVencV")
                'oBonos.PorcentajeInteresAcumuladoVenta = drd.Item("PorcIntAcumV")
                'oBonos.InteresAcumuladoVenta = drd.Item("IntAcumV")
                'oBonos.PrecioSucioVenta = drd.Item("PrecioSucioV")
                'oBonos.ValorTransadoVenta = drd.Item("ValTransV")
                'oBonos.MontoAPagarVenta = drd.Item("MontoPagarV")
                oBonos.CostoDeTransferenciaVenta = drd.Item("CostoTransV")

                'oBonos.ValorNominalRO = drd.Item("ValNomRO")
                'oBonos.PlazoRO = drd.Item("PlazoRO")
                'oBonos.PrecioCompraRO = drd.Item("PrecioCompraRO")
                'oBonos.PrecioVentaRO = drd.Item("PrecioVentaRO")
                'oBonos.GananciaPerdidaDeCapital = drd.Item("GanPerdCap")
                'oBonos.IngresoPorInteres = drd.Item("IngrPorInt")
                'oBonos.CostosTotales = drd.Item("CostosTotales")
                'oBonos.GananciaPerdidaTotal = drd.Item("GanPerdTot")
                'oBonos.RendimientoGananciaPerdida = drd.Item("RendGanPerd")
                'oBonos.RendimientoDeIntereses = drd.Item("RendInt")
                'oBonos.RendimientoAntesImpuestos = drd.Item("RendAntISR")
                'oBonos.RendimientoDespuesImpuestos = drd.Item("RendDespISR")
            End If
        Else
            'NO SE ENCONTRO EL REGISTRO
        End If

        drd.Close()
        cmd.Dispose()
        cn.Dispose()
    End Sub
    Public Function CargarRegistro(ByVal CodigoInversion As String) As BonosCE
        Dim objCon As New Conexion
        Dim oBonos As BonosCE
        Dim drd As SqlDataReader
        Dim cmd As SqlCommand
        Dim sql As String
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        sql = "SELECT * FROM [dbo].[BON0] T0 WHERE T0.CodInv=@CodInv"


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

        drd = cmd.ExecuteReader

        If drd.HasRows Then
            'SE ENCONTRO EL REGISTRO
            oBonos = New BonosCE
            If drd.Read Then
                'oBonos.CodigoCasaCompra = drd.Item("CodCasaC")
                oBonos.PeriodicidadCompra = drd.Item("PeriodicV")
                oBonos.ValorNominalCompra = drd.Item("ValNomC")
                oBonos.UltimaFechaCuponCompra = drd.Item("UltFCupC")
                oBonos.SiguienteFechaCuponCompra = drd.Item("SigFCupC")
                oBonos.FechaLiquidacionCompra = drd.Item("FLiqC")
                oBonos.FechaVencimientoCompra = drd.Item("FVencC")
                oBonos.PorcentajeCuponCompra = drd.Item("PorcCupC")
                'oBonos.YTMAlVencimientoComisionCompra = drd.Item("YTMVencComC")
                'oBonos.YTMAlVencimientoCompra = drd.Item("YTMVencC")
                oBonos.PrecioAlVencimientoCompra = drd.Item("PrecVencC")
                oBonos.PrecioCompra = drd.Item("PrecioCompra")
                oBonos.DiasBaseCompra = drd.Item("DiasBaseC")
                'oBonos.DiasAcumuladosCompra = drd.Item("DiasAcumC")
                'oBonos.DiasAlVencimientoCompra = drd.Item("DiasVencC")
                'oBonos.PorcentajeInteresAcumuladoCompra = drd.Item("PorcIntAcumC")
                'oBonos.InteresAcumuladoCompra = drd.Item("IntAcumC")
                'oBonos.PrecioSucioCompra = drd.Item("PrecioSucioC")
                'oBonos.ValorTransadoCompra = drd.Item("ValTransC")
                'oBonos.MontoAPagarCompra = drd.Item("MontoPagarC")
                oBonos.CostoDeTransferenciaCompra = drd.Item("CostoTransC")

                'oBonos.CodigoCasaVenta = drd.Item("CodCasaV")
                oBonos.PeriodicidadVenta = drd.Item("PeriodicV")
                oBonos.ValorNominalVenta = drd.Item("ValNomV")
                oBonos.UltimaFechaCuponVenta = drd.Item("UltFCupV")
                oBonos.SiguienteFechaCuponVenta = drd.Item("SigFCupV")
                oBonos.FechaLiquidacionVenta = drd.Item("FLiqV")
                oBonos.FechaVencimientoVenta = drd.Item("FVencV")
                oBonos.PorcentajeCuponVenta = drd.Item("PorcCupV")
                'oBonos.YTMAlVencimientoComisionVenta = drd.Item("YTMVencComV")
                'oBonos.YTMAlVencimientoVenta = drd.Item("YTMVencV")
                oBonos.PrecioAlVencimientoVenta = drd.Item("PrecVencV")
                oBonos.PrecioVenta = drd.Item("PrecioVenta")
                oBonos.DiasBaseVenta = drd.Item("DiasBaseV")
                'oBonos.DiasAcumuladosVenta = drd.Item("DiasAcumV")
                'oBonos.DiasAlVencimientoVenta = drd.Item("DiasVencV")
                'oBonos.PorcentajeInteresAcumuladoVenta = drd.Item("PorcIntAcumV")
                'oBonos.InteresAcumuladoVenta = drd.Item("IntAcumV")
                'oBonos.PrecioSucioVenta = drd.Item("PrecioSucioV")
                'oBonos.ValorTransadoVenta = drd.Item("ValTransV")
                'oBonos.MontoAPagarVenta = drd.Item("MontoPagarV")
                oBonos.CostoDeTransferenciaVenta = drd.Item("CostoTransV")

                'oBonos.ValorNominalRO = drd.Item("ValNomRO")
                'oBonos.PlazoRO = drd.Item("PlazoRO")
                'oBonos.PrecioCompraRO = drd.Item("PrecioCompraRO")
                'oBonos.PrecioVentaRO = drd.Item("PrecioVentaRO")
                'oBonos.GananciaPerdidaDeCapital = drd.Item("GanPerdCap")
                'oBonos.IngresoPorInteres = drd.Item("IngrPorInt")
                'oBonos.CostosTotales = drd.Item("CostosTotales")
                'oBonos.GananciaPerdidaTotal = drd.Item("GanPerdTot")
                'oBonos.RendimientoGananciaPerdida = drd.Item("RendGanPerd")
                'oBonos.RendimientoDeIntereses = drd.Item("RendInt")
                'oBonos.RendimientoAntesImpuestos = drd.Item("RendAntISR")
                'oBonos.RendimientoDespuesImpuestos = drd.Item("RendDespISR")
            End If
        Else
            'NO SE ENCONTRO EL REGISTRO
        End If

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

        Return oBonos
    End Function
    Public Function Actualizar(ByVal oBonosCE As BonosCE) 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 = "UPDATE [dbo].[BON0]
   SET [PeriodicC] = @PeriodicC
      ,[ValNomC] = @ValNomC
      ,[UltFCupC] = @UltFCupC
      ,[SigFCupC] = @SigFCupC
      ,[FLiqC] = @FLiqC
      ,[FVencC] = @FVencC
      ,[PorcCupC] = @PorcCupC
      ,[YTMVencComC] = @YTMVencComC 
      ,[PrecVencC] = @PrecVencC
      ,[PrecioCompra] = @PrecioCompra
      ,[DiasBaseC] = @DiasBaseC
      ,[CostoTransC] = @CostoTransC
      
	  ,[PeriodicV] = @PeriodicV
      ,[ValNomV] = @ValNomV
      ,[UltFCupV] = @UltFCupV
      ,[SigFCupV] = @SigFCupV
      ,[FLiqV] = @FLiqV
      ,[FVencV] = @FVencV
      ,[PorcCupV] = @PorcCupV
      ,[YTMVencComV] = @YTMVencComV
      ,[DiasBaseV] = @DiasBaseV
      ,[CostoTransV] = @CostoTransV
 WHERE [CodInv] = @CodInv
"

        cmd = New SqlCommand
        cmd.CommandText = sql
        With cmd.Parameters
            .Add("@PeriodicC", SqlDbType.VarChar).Value = oBonosCE.PeriodicidadCompra
            .Add("@ValNomC", SqlDbType.Float).Value = oBonosCE.ValorNominalCompra
            .Add("@UltFCupC", SqlDbType.Date).Value = oBonosCE.UltimaFechaCuponCompra
            .Add("@SigFCupC", SqlDbType.Date).Value = oBonosCE.SiguienteFechaCuponCompra
            .Add("@FLiqC", SqlDbType.Date).Value = oBonosCE.FechaLiquidacionCompra
            .Add("@FVencC", SqlDbType.Date).Value = oBonosCE.FechaVencimientoCompra
            .Add("@PorcCupC", SqlDbType.Float).Value = oBonosCE.PorcentajeCuponCompra
            .Add("@YTMVencComC", SqlDbType.Float).Value = oBonosCE.YTMAlVencimientoComisionCompra
            .Add("@PrecVencC", SqlDbType.Float).Value = oBonosCE.PrecioAlVencimientoCompra
            .Add("@PrecioCompra", SqlDbType.Float).Value = oBonosCE.PrecioCompra
            .Add("@DiasBaseC", SqlDbType.Int).Value = oBonosCE.DiasBaseCompra
            .Add("@CostoTransC", SqlDbType.Float).Value = oBonosCE.CostoDeTransferenciaCompra

            .Add("@PeriodicV", SqlDbType.VarChar).Value = oBonosCE.PeriodicidadVenta
            .Add("@ValNomV", SqlDbType.Float).Value = oBonosCE.ValorNominalVenta
            .Add("@UltFCupV", SqlDbType.Date).Value = oBonosCE.UltimaFechaCuponVenta
            .Add("@SigFCupV", SqlDbType.Date).Value = oBonosCE.SiguienteFechaCuponVenta
            .Add("@FLiqV", SqlDbType.Date).Value = oBonosCE.FechaLiquidacionVenta
            .Add("@FVencV", SqlDbType.Date).Value = oBonosCE.FechaVencimientoVenta
            .Add("@PorcCupV", SqlDbType.Float).Value = oBonosCE.PorcentajeCuponVenta
            .Add("@YTMVencComV", SqlDbType.Float).Value = oBonosCE.YTMAlVencimientoComisionVenta
            .Add("@DiasBaseV", SqlDbType.Int).Value = oBonosCE.DiasBaseVenta
            .Add("@CostoTransV", SqlDbType.Float).Value = oBonosCE.CostoDeTransferenciaVenta
            .Add("@CodInv", SqlDbType.VarChar).Value = oBonosCE.CodigoInversion
        End With

        cmd.Connection = cn

        retorno = cmd.ExecuteNonQuery

        GuardarIngresos(oBonosCE.CodigoInversion, oBonosCE.ImpuestosYComisiones)
        Me.GuardarImpuestosYComisiones(oBonosCE.CodigoInversion, oBonosCE.ImpuestosYComisiones)
        cn.Close()
        Return retorno
    End Function
    Private Sub GuardarIngresos(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].[BON1]
      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].[BON1]
    ([CodInv]
    ,[NumCupon]
    ,[FechaCupon]
    ,[Dias]
    ,[Ingreso]
    ,[PorcImpuesto]
    ,[MontoImpuesto]
    ,[Liquido]
)
VALUES
    (@CodInv
    ,@NumCupon
    ,@FechaCupon
    ,@Dias
    ,@Ingreso
    ,@PorcImpuesto
    ,@MontoImpuesto
    ,@Liquido
)
"
                cmd.CommandText = sql
                cmd.Parameters.AddWithValue("@CodInv", CodInversion)
                cmd.Parameters.AddWithValue("@NumCupon", dr("NumCupon"))
                cmd.Parameters.AddWithValue("@FechaCupon", dr("FechaCupon"))
                cmd.Parameters.AddWithValue("@Dias", dr("Dias"))
                cmd.Parameters.AddWithValue("@Ingreso", dr("Ingreso"))
                cmd.Parameters.AddWithValue("@PorcImpuesto", dr("PorcImpuesto"))
                cmd.Parameters.AddWithValue("@MontoImpuesto", dr("MontoImpuesto"))
                cmd.Parameters.AddWithValue("@Liquido", dr("MontoImpuesto"))
                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].[BON2]
      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].[BON2]
           ([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", dr("PorcImp"))
                cmd.Parameters.AddWithValue("@MontoImp", dr("MontoImp"))
                cmd.Parameters.AddWithValue("@MontoSujeto", dr("MontoSujeto"))
                cmd.Connection = cn
                res = cmd.ExecuteNonQuery
            Next
        End If
        cn.Close()
    End Sub











    Public Function NuevoImpuesto(ByVal Coleccion As Collection, ByVal Codigo 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
        sql = "INSERT INTO [dbo].[IMP](
           [CodInv]
           ,[TipoImp]
           ,[TipoOp]
           ,[PorcImp]           
           ,[MontoSuje]
           ,[MontoImp]
) VALUES(
           @CodInv
           ,@TipoImp
           ,@TipoOp
           ,@PorcImp
           ,@MontoSuje
           ,@MontoImp

)
    "

        cmd = New SqlCommand
        cmd.CommandText = sql

        With cmd.Parameters
            .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
            .Add("@TipoImp", SqlDbType.VarChar).Value = Coleccion(1)
            .Add("@TipoOp", SqlDbType.VarChar).Value = Coleccion(2)
            .Add("@PorcImp", SqlDbType.Float).Value = Coleccion(3)
            .Add("@MontoSuje", SqlDbType.Float).Value = Coleccion(4)
            .Add("@MontoImp", SqlDbType.Float).Value = Coleccion(5)

        End With


        cmd.Connection = cn

        retorno = cmd.ExecuteNonQuery

        cn.Close()
        Return retorno

    End Function



    Public Function NuevoIngreso(ByVal Coleccion As Collection, ByVal Codigo As String, ByVal InstrumentoFinanciero As String)
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim Tabla As String
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (InstrumentoFinanciero = "CINV") Then
            Tabla = "CIN1"


        ElseIf (InstrumentoFinanciero = "BONO") Then
            Tabla = "BON1"

        ElseIf (InstrumentoFinanciero = "EURB") Then
            Tabla = "EURB1"
        ElseIf (InstrumentoFinanciero = "TIT") Then
            Tabla = "TIT0_0"
        Else
            Return 0

        End If





        sql = "INSERT INTO " + Tabla + "(
           [CodInv]
           ,[NumCupon]
           ,[FechaCupon]
           ,[Dias]
           ,[Ingreso]
           ,[PorcImpuesto]
           ,[MontoImpuesto]
           ,[Liquido]
) VALUES(
           @CodInv
           ,@NumCupon
           ,@FechaCupon
           ,@Dias
           ,@Ingreso
           ,@PorcImpuesto
           ,@MontoImpuesto
           ,@Liquido
)
    "

        cmd = New SqlCommand
        cmd.CommandText = sql

        Try



            With cmd.Parameters
                .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
                .Add("@NumCupon", SqlDbType.VarChar).Value = Coleccion(1)
                .Add("@FechaCupon", SqlDbType.DateTime).Value = Coleccion(2)





                .Add("@Dias", SqlDbType.Int).Value = Coleccion(3)
                .Add("@Ingreso", SqlDbType.Float).Value = Coleccion(4)
                .Add("@PorcImpuesto", SqlDbType.Float).Value = Coleccion(5)
                .Add("@MontoImpuesto", SqlDbType.Float).Value = Coleccion(6)
                .Add("@Liquido", SqlDbType.Float).Value = Coleccion(7)
            End With


            cmd.Connection = cn

            retorno = cmd.ExecuteNonQuery

        Catch ex As Exception
            MsgBox("Datos de ingreso no guardados")
            Return Nothing
        End Try
        cn.Close()
        Return retorno

    End Function









    Public Function ModificarIngreso(ByVal Coleccion As Collection, ByVal Codigo As String, ByVal CodigoInstrumento As String)
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim Tabla As String
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (CodigoInstrumento = "CINV") Then
            Tabla = "CIN1"


        ElseIf (CodigoInstrumento = "BONO") Then
            Tabla = "BON1"
        ElseIf (CodigoInstrumento = "EURB") Then
            Tabla = "EURB1"
        ElseIf (CodigoInstrumento = "TIT") Then
            Tabla = "TIT0_0"
        Else
            Return 0

        End If

        sql = "UPDATE " + Tabla + " SET
           [FechaCupon]=@FechaCupon
           ,[Dias]=@Dias
           ,[Ingreso]=@Ingreso
           ,[PorcImpuesto]=@PorcImpuesto
           ,[MontoImpuesto]=@MontoImpuesto
           ,[Liquido]=@Liquido
           where [CodInv]=@CodInv AND [NumCupon]=@NumCupon

    "

        cmd = New SqlCommand
        cmd.CommandText = sql

        With cmd.Parameters
            .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
            .Add("@NumCupon", SqlDbType.VarChar).Value = Coleccion(1)
            .Add("@FechaCupon", SqlDbType.DateTime).Value = Coleccion(2)



            .Add("@Dias", SqlDbType.Int).Value = Coleccion(3)
            .Add("@Ingreso", SqlDbType.Float).Value = Coleccion(4)
            .Add("@PorcImpuesto", SqlDbType.Float).Value = Coleccion(5)
            .Add("@MontoImpuesto", SqlDbType.Float).Value = Coleccion(6)
            .Add("@Liquido", SqlDbType.Float).Value = Coleccion(7)
        End With


        cmd.Connection = cn

        retorno = cmd.ExecuteNonQuery

        cn.Close()
        Return retorno

    End Function







    Public Sub EliminarImpuesto(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].[IMP]
      WHERE [CodInv]=@CodInv"


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

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



    Public Sub EliminarIngreso(ByVal Codigo As String, ByVal NoCupon As Integer, ByVal CodigoInstrumento As String)
        Dim objCon As New Conexion
        Dim sql As String
        Dim cmd As SqlCommand
        Dim res As Integer
        Dim Tabla As String
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (CodigoInstrumento = "CINV") Then
            Tabla = "CIN1"


        ElseIf (CodigoInstrumento = "BONO") Then
            Tabla = "BON1"

        ElseIf (CodigoInstrumento = "TIT") Then
            Tabla = "TIT0_0"

        ElseIf (CodigoInstrumento = "EURB") Then
            Tabla = "EURB1"


        End If

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


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

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

    Public Sub EliminarIngresoCompleto(ByVal Codigo As String, ByVal CodigoInstrumento As String)
        Dim objCon As New Conexion
        Dim sql As String
        Dim cmd As SqlCommand
        Dim res As Integer
        Dim Tabla As String
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (CodigoInstrumento = "CINV") Then
            Tabla = "CIN1"


        ElseIf (CodigoInstrumento = "BONO") Then
            Tabla = "BON1"


        End If

        sql = "DELETE FROM " + Tabla + "
      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("Datos no actualizados")
        End Try
        cn.Close()
    End Sub



    Public Function CargarImpuestos(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 IMP where CodInv='" + codigo + "'"


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

        Return dr
    End Function


    Public Function CargarIngreso(ByVal codigo As String, ByVal CodigoInstrumento As String)
        Dim objCon As New Conexion
        Dim Tabla As String
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (CodigoInstrumento = "CINV") Then
            Tabla = "CIN1"


        ElseIf (CodigoInstrumento = "BONO") Then
            Tabla = "BON1"

        ElseIf (CodigoInstrumento = "EURB") Then
            Tabla = "EURB1"
        ElseIf (CodigoInstrumento = "TIT") Then
            Tabla = "TIT0_0"

        Else
            Return 0

        End If

        Dim sql = "select * from " + Tabla + " where CodInv='" + codigo + "' order by NumCupon"


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

        Return dr
    End Function


End Class






