Imports System.Data.SqlClient
Public Class CertificadosDeInversionDAO

    Dim Operaciones As New Operaciones
    Dim oDAOGeneral As New DAOGeneral




    Function Nuevo(ByVal oCE As CertificadoDeInversionCE, 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("@ValNomC", SqlDbType.Decimal).Value = oCE.ValorNominalCompra
            .Add("@UltFCupC", SqlDbType.DateTime).Value = oCE.UltimaFechaCuponCompra
            .Add("@SigFCupC", SqlDbType.DateTime).Value = oCE.SiguienteFechaCuponCompra
            .Add("@FLiqC", SqlDbType.DateTime).Value = oCE.FechaLiquidacionCompra
            .Add("@FVencC", SqlDbType.DateTime).Value = oCE.FechaVencimientoCompra
            .Add("@PorcCupC", SqlDbType.Decimal).Value = oCE.PorcentajeCuponCompra
            .Add("@YMTVencComC", SqlDbType.Decimal).Value = oCE.YTMAlVencimientoComisionCompra
            .Add("@YMTVencC", SqlDbType.Decimal).Value = oCE.YTMAlVencimientoCompra
            .Add("@PrecVencC", SqlDbType.Decimal).Value = oCE.PrecioAlVencimientoCompra
            .Add("@PrecioCompra", SqlDbType.Decimal).Value = oCE.PrecioCompra
            .Add("@DiasBaseC", SqlDbType.Int).Value = oCE.DiasBaseCompra
            .Add("@DiasAcumC", SqlDbType.Int).Value = oCE.DiasAcumuladosCompra
            .Add("@DiasVencC", SqlDbType.Int).Value = oCE.DiasAlVencimientoCompra
            .Add("@PorcIntAcumC", SqlDbType.Decimal).Value = oCE.PorcentajeInteresAcumuladoCompra
            .Add("@IntAcumC", SqlDbType.Decimal).Value = oCE.InteresAcumuladoCompra
            .Add("@PrecioSucioC", SqlDbType.Decimal).Value = oCE.PrecioSucioCompra
            .Add("@ValTransC", SqlDbType.Decimal).Value = oCE.ValorTransadoCompra
            .Add("@MontoPagarC", SqlDbType.Decimal).Value = oCE.MontoAPagarCompra
            .Add("@CostoTransC", SqlDbType.Decimal).Value = oCE.CostoDeTransferenciaCompra


            .Add("@ValNomV", SqlDbType.Decimal).Value = oCE.ValorNominalVenta
            .Add("@UltFCupV", SqlDbType.DateTime).Value = oCE.UltimaFechaCuponVenta
            .Add("@SigFCupV", SqlDbType.DateTime).Value = oCE.SiguienteFechaCuponVenta
            .Add("@FLiqV", SqlDbType.DateTime).Value = oCE.FechaLiquidacionVenta
            .Add("@FVencV", SqlDbType.DateTime).Value = oCE.FechaVencimientoVenta
            .Add("@PorcCupV", SqlDbType.Decimal).Value = oCE.PorcentajeCuponVenta
            .Add("@YMTVencComV", SqlDbType.Decimal).Value = oCE.YTMAlVencimientoComisionVenta
            .Add("@YMTVencV", SqlDbType.Decimal).Value = oCE.YTMAlVencimientoVenta
            .Add("@PrecVencV", SqlDbType.Decimal).Value = oCE.PrecioAlVencimientoVenta
            .Add("@PrecioVenta", SqlDbType.Decimal).Value = oCE.PrecioVenta
            .Add("@DiasBaseV", SqlDbType.Int).Value = oCE.DiasBaseVenta
            .Add("@DiasAcumV", SqlDbType.Int).Value = oCE.DiasAcumuladosVenta
            .Add("@DiasVencV", SqlDbType.Int).Value = oCE.DiasAlVencimientoVenta
            .Add("@PorcIntAcumV", SqlDbType.Decimal).Value = oCE.InteresAcumuladoPorcentajeVenta
            .Add("@IntAcumV", SqlDbType.Decimal).Value = oCE.InteresAcumuladoVenta
            .Add("@PrecioSucioV", SqlDbType.Decimal).Value = oCE.PrecioSucioVenta
            .Add("@ValTransV", SqlDbType.Decimal).Value = oCE.ValorTransadoVenta
            .Add("@MontoPagarV", SqlDbType.Decimal).Value = oCE.MontoARecibirVenta
            .Add("@CostoTransV", SqlDbType.Decimal).Value = oCE.CostoDeTransferenciaVenta
            .Add("@ValNomRO", SqlDbType.Decimal).Value = oCE.ValorNominalRO
            .Add("@PlazoRO", SqlDbType.Decimal).Value = oCE.DiasPlazoRO
            .Add("@PrecioCompraRO", SqlDbType.Decimal).Value = oCE.PrecioCompraRO
            .Add("@PrecioVentaRO", SqlDbType.Decimal).Value = oCE.PrecioVentaRO
            .Add("@GanPerdCap", SqlDbType.Decimal).Value = oCE.GananciaPerdidaDeCapital
            .Add("@IngrPorInt", SqlDbType.Decimal).Value = oCE.IngresoPorInteres
            .Add("@CostosTotales", SqlDbType.Decimal).Value = oCE.CostosTotales
            .Add("@GanPerdTot", SqlDbType.Decimal).Value = oCE.GananciaPerdidaTotal
            .Add("@RendGanPerd", SqlDbType.Decimal).Value = oCE.RendimientoGananciaPerdida
            .Add("@RendInt", SqlDbType.Decimal).Value = oCE.RendimientoDeIntereses
            .Add("@RendAntISR", SqlDbType.Decimal).Value = oCE.RendimientoAntesImpuestos
            .Add("@RendDespISR", SqlDbType.Decimal).Value = oCE.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 Function CargarRegistro(ByVal CodigoInversion As String, ByVal CodigoInstrumento As String) As Collection
        Dim objCon As New Conexion
        Dim oCE As CertificadoDeInversionCE
        Dim drd As SqlDataReader
        Dim cmd As SqlCommand
        Dim sql As String
        Dim Tabla As String
        Dim coleccion As New Collection
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (CodigoInstrumento = "CINV") Then
            Tabla = "CIN0"
        ElseIf (CodigoInstrumento = "TIT") Then
            Tabla = "TIT"
        ElseIf (CodigoInstrumento = "EURB") Then
            Tabla = "EURB0"
        ElseIf (CodigoInstrumento = "BONO") Then
            Tabla = "BON0"
        Else
            coleccion.Add(False)
            Return coleccion
        End If




        sql = "SELECT * FROM " + Tabla + "  WHERE CodInv=@CodInv"


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

        Try

            drd = cmd.ExecuteReader



        Catch ex As Exception


            coleccion.Add(False)
            Return coleccion
        End Try

        If drd.HasRows Then
            'SE ENCONTRO EL REGISTRO

            If drd.Read Then
                coleccion.Add(drd.Item("PeriodicC").ToString)
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ValNomC").ToString))
                coleccion.Add(Operaciones.ConvertirFecha(drd.Item("UltFCupC").ToString))
                coleccion.Add(Operaciones.ConvertirFecha(drd.Item("SigFCupC").ToString))
                coleccion.Add(Operaciones.ConvertirFecha(drd.Item("FLiqC").ToString))
                coleccion.Add(Operaciones.ConvertirFecha(drd.Item("FVencC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PorcCupC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PrecVencC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PrecioCompra").ToString))
                coleccion.Add(Operaciones.ConvertirEntero(drd.Item("DiasBaseC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("CostTransC").ToString))
                coleccion.Add(drd.Item("PeriodicV").ToString)
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ValNomV").ToString))
                coleccion.Add(Operaciones.ConvertirFecha(drd.Item("UltFCupV").ToString))
                coleccion.Add(Operaciones.ConvertirFecha(drd.Item("SigFCupV").ToString))
                coleccion.Add(Operaciones.ConvertirFecha(drd.Item("FLiqV").ToString))
                coleccion.Add(Operaciones.ConvertirFecha(drd.Item("FVencV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PorcCupV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PrecVencV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PrecioVenta").ToString))
                coleccion.Add(Operaciones.ConvertirEntero(drd.Item("DiasBaseV").ToString))

                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("CupRecibidos").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PorcCupC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PorcCupV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ComisionPorCompraCasa").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ComisionPorCompraBolsa").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ComisionPorVentaCasa").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ComisionPorVentaBolsa").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("YTMCompra").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("YTMVenta").ToString))


                'Çampos Extras (Calculados)


                coleccion.Add(Operaciones.ConvertirEntero(drd.Item("DiasVenC").ToString))
                coleccion.Add(Operaciones.ConvertirEntero(drd.Item("DiasVenV").ToString))
                coleccion.Add(Operaciones.ConvertirEntero(drd.Item("DiasAcuC").ToString))
                coleccion.Add(Operaciones.ConvertirEntero(drd.Item("DiasAcuV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("YTMVenC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("YTMVenV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("IntPorAcuC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("IntPorAcuV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("IntAcuC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("IntAcuV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PrecSucioC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("PrecSucioV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ComisionCasaC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ComisionCasaV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ComisionBolsaC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ComisionBolsaV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ValTransC").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("ValTransV").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("MontoPagar").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("MontoRecibir").ToString))
                coleccion.Add(Operaciones.ConvertirDecimal(drd.Item("CupRecibidos").ToString))

            Else




                coleccion.Add(False)
                Return coleccion
            End If
        Else
            'NO SE ENCONTRO EL REGISTRO


            coleccion.Add(False)
            Return coleccion
        End If

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

        Return coleccion
    End Function
    Public Function ProcesoDatos(ByVal coleccion As Collection, ByVal Diccionario As Dictionary(Of Integer, Collection), ByVal CodigoInstrumento As String) As Integer
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim Tabla As String = String.Empty
        Dim TablaIngresos As String = String.Empty


        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        Dim myTrans As SqlTransaction
        If (CodigoInstrumento = "CINV") Then
            Tabla = "CIN0"
            TablaIngresos = "CIN1"
        ElseIf (CodigoInstrumento = "TIT") Then
            Tabla = "TIT"
        ElseIf (CodigoInstrumento = "EURB") Then
            Tabla = "EURB0"
            TablaIngresos = "EURB1"
        ElseIf (CodigoInstrumento = "BONO") Then
            Tabla = "BON0"
            TablaIngresos = "BON1"
        Else
            Return 0

        End If


        myTrans = cn.BeginTransaction()
        Try



            sql = "UPDATE " + Tabla + "
   SET [PeriodicC] = @PeriodicC
      ,[ValNomC] = @ValNomC
      ,[UltFCupC] = @UltFCupC
      ,[SigFCupC] = @SigFCupC
      ,[FLiqC] = @FLiqC
      ,[FVencC] = @FVencC
      ,[PorcCupC] = @PorcCupC
      ,[PrecVencC] = @PrecVencC
      ,[PrecioCompra] = @PrecioCompra
      ,[DiasBaseC] = @DiasBaseC
     

      
	  ,[PeriodicV] = @PeriodicV
      ,[ValNomV] = @ValNomV
      ,[UltFCupV] = @UltFCupV
      ,[SigFCupV] = @SigFCupV
      ,[FLiqV] = @FLiqV
      ,[FVencV] = @FVencV
      ,[PorcCupV] = @PorcCupV
      ,[PrecVencV] = @PrecVencV
      ,[PrecioVenta] = @PrecioVenta
      ,[DiasBaseV] = @DiasBaseV

   


      ,[ComisionPorCompraCasa]=@ComisionPorCompraCasa
      ,[ComisionPorCompraBolsa]=@ComisionPorCompraBolsa
      ,[ComisionPorVentaCasa]=@ComisionPorVentaCasa
      ,[ComisionPorVentaBolsa]=@ComisionPorVentaBolsa
      ,[YTMCompra]=@YTMCompra
      ,[YTMVenta]=@YTMVenta





        ,[DiasVenC]=@DiasVenC
        ,[DiasVenV]=@DiasVenV
        ,[DiasAcuC]=@DiasAcuC
        ,[DiasAcuV]=@DiasAcuV
        ,[YTMVenC]=@YTMVenC
        ,[YTMVenV]=@YTMVenV
        ,[IntAcuC]=@IntAcuC
        ,[IntAcuV]=@IntAcuV
        ,[IntPorAcuC]=@IntPorAcuC
        ,[IntPorAcuV]=@IntPorAcuV
        ,[PrecSucioC]=@PrecSucioC
        ,[PrecSucioV]=@PrecSucioV
        ,[ComisionCasaC]=@ComisionCasaC
        ,[ComisionCasaV]=@ComisionCasaV
        ,[ComisionBolsaC]=@ComisionBolsaC
        ,[ComisionBolsaV]=@ComisionBolsaV
        ,[ValTransC]=@ValTransC
        ,[ValTransV]=@ValTransV
        ,[MontoPagar]=@MontoPagar
        ,[MontoRecibir]=@MontoRecibir
        ,[CostTransC]=@CostTransC
        ,[CupRecibidos]=@CupRecibidos
        WHERE [CodInv] = @CodInv
"

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



            With cmd.Parameters
                .Add("@PeriodicC", SqlDbType.VarChar).Value = coleccion(1).ToString()
                .Add("@ValNomC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(2).ToString())
                .Add("@UltFCupC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(3).ToString)
                .Add("@SigFCupC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(4).ToString)
                .Add("@FLiqC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(5).ToString)
                .Add("@FVencC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(6).ToString)
                .Add("@PorcCupC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(7).ToString())
                .Add("@PrecVencC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(8).ToString())
                .Add("@PrecioCompra", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(9).ToString())
                .Add("@DiasBaseC", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(10).ToString())
                .Add("@PeriodicV", SqlDbType.VarChar).Value = coleccion(12).ToString()
                .Add("@ValNomV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(13).ToString())
                .Add("@UltFCupV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(14).ToString)
                .Add("@SigFCupV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(15).ToString)
                .Add("@FLiqV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(16).ToString)
                .Add("@FVencV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(17).ToString)
                .Add("@PorcCupV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(18).ToString())
                .Add("@PrecVencV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(19).ToString())
                .Add("@PrecioVenta", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(20).ToString())
                .Add("@DiasBaseV", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(21).ToString())
                .Add("@CodInv", SqlDbType.VarChar).Value = coleccion(23).ToString()
                .Add("@ComisionPorCompraCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(26).ToString())
                .Add("@ComisionPorCompraBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(27).ToString())
                .Add("@ComisionPorVentaCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(28).ToString())
                .Add("@ComisionPorVentaBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(29).ToString())
                .Add("@YTMCompra", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(30).ToString())
                .Add("@YTMVenta", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(31).ToString())
                .Add("DiasVenC", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(32).ToString)
                .Add("@DiasVenV", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(33).ToString)
                .Add("@DiasAcuC", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(34).ToString)
                .Add("@DiasAcuV", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(35).ToString)
                .Add("@YTMVenC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(36).ToString)
                .Add("@YTMVenV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(37).ToString)
                .Add("@IntAcuC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(38).ToString)
                .Add("@IntAcuV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(39).ToString)
                .Add("@IntPorAcuC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(40).ToString)
                .Add("@IntPorAcuV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(41).ToString)
                .Add("@PrecSucioC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(42).ToString)
                .Add("@PrecSucioV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(43).ToString)
                .Add("@ComisionCasaC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(44).ToString)
                .Add("@ComisionCasaV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(45).ToString)
                .Add("@ComisionBolsaC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(46).ToString)
                .Add("@ComisionBolsaV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(47).ToString)
                .Add("@ValTransC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(48).ToString)
                .Add("@ValTransV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(49).ToString)
                .Add("@MontoPagar", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(50).ToString)
                .Add("@MontoRecibir", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(51).ToString)
                .Add("@CostTransC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(52).ToString)
                .Add("@CupRecibidos", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(53).ToString)

            End With
            retorno = cmd.ExecuteNonQuery



            If Not Diccionario Is Nothing And Not Diccionario.Count = 0 Then
                If Not String.IsNullOrEmpty(TablaIngresos) Then




                    sql = "DELETE FROM " + TablaIngresos + "
            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













                    For Each DatosDiccionario In Diccionario
                        Dim Coleccion2 As Collection = DatosDiccionario.Value
                        sql = "INSERT INTO " + TablaIngresos + "(
           [CodInv]
           ,[NumCupon]
           ,[FechaCupon]
           ,[Dias]
           ,[Ingreso]
           ,[PorcImpuesto]
           ,[MontoImpuesto]
           ,[Liquido]
) VALUES(
           @CodInv
           ,@NumCupon
           ,@FechaCupon
           ,@Dias
           ,@Ingreso
           ,@PorcImpuesto
           ,@MontoImpuesto
           ,@Liquido
)
    "


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

                        With cmd.Parameters
                            .Add("@CodInv", SqlDbType.VarChar).Value = Codigo.ToString
                            .Add("@NumCupon", SqlDbType.VarChar).Value = Coleccion2(1).ToString
                            .Add("@FechaCupon", SqlDbType.Date).Value = Operaciones.ConvertirFecha(Coleccion2(2).ToString)
                            .Add("@Dias", SqlDbType.Int).Value = Operaciones.ConvertirEntero(Coleccion2(3).ToString)
                            .Add("@Ingreso", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(4).ToString)
                            .Add("@PorcImpuesto", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(5).ToString)
                            .Add("@MontoImpuesto", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(6).ToString)
                            .Add("@Liquido", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(7).ToString)
                        End With

                        retorno = cmd.ExecuteNonQuery
                    Next
                End If
            End If


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


        cn.Close()
        Return retorno
    End Function

    Public Function Nuevo(ByVal coleccion As Collection, ByVal CodigoInstrumento As String) As Integer

        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim Tabla As String = String.Empty
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        If (CodigoInstrumento = "CINV") Then
            Tabla = "CIN0"
        ElseIf (CodigoInstrumento = "TIT") Then
            Tabla = "TIT"

        ElseIf (CodigoInstrumento = "EURB") Then
            Tabla = "EURB0"
        ElseIf (CodigoInstrumento = "BONO") Then
            Tabla = "BON0"

        End If


        If (Not String.IsNullOrEmpty(Tabla.ToString)) Then


            sql = "INSERT INTO " + Tabla + "
      ([CodInv]   
      ,[PeriodicC]
      ,[ValNomC]
      ,[UltFCupC]
      ,[SigFCupC]
      ,[FLiqC]
      ,[FVencC]
      ,[PorcCupC]
      ,[PrecVencC]
      ,[PrecioCompra]
      ,[DiasBaseC]
     
      
	  ,[PeriodicV]
      ,[ValNomV]
      ,[UltFCupV]
      ,[SigFCupV]
      ,[FLiqV]
      ,[FVencV]
      ,[PorcCupV]
      ,[PrecVencV]
      ,[PrecioVenta]
      ,[DiasBaseV]
   

      ,[ComisionPorCompraCasa]
      ,[ComisionPorCompraBolsa]
      ,[ComisionPorVentaCasa]
      ,[ComisionPorVentaBolsa]
      ,[YTMCompra]
      ,[YTMVenta]
        ,[DiasVenC]
        ,[DiasVenV]
        ,[DiasAcuC]
        ,[DiasAcuV]
        ,[YTMVenC]
        ,[YTMVenV]
        ,[IntAcuC]
        ,[IntAcuV]
        ,[IntPorAcuC]
        ,[IntPorAcuV]
        ,[PrecSucioC]
        ,[PrecSucioV]
        ,[ComisionCasaC]
        ,[ComisionCasaV]
        ,[ComisionBolsaC]
        ,[ComisionBolsaV]
        ,[ValTransC]
        ,[ValTransV]
        ,[MontoPagar]
        ,[MontoRecibir]
        ,[CostTransC]
        ,[CupRecibidos]

)
      VALUES(
       @CodInv
      ,@PeriodicC
      ,@ValNomC
      ,@UltFCupC
      ,@SigFCupC
      ,@FLiqC
      ,@FVencC
      ,@PorcCupC
      ,@PrecVencC
      ,@PrecioCompra
      ,@DiasBaseC
      
	  ,@PeriodicV
      ,@ValNomV
      ,@UltFCupV
      ,@SigFCupV
      ,@FLiqV
      ,@FVencV
      ,@PorcCupV
      ,@PrecVencV
      ,@PrecioVenta
      ,@DiasBaseV


      ,@ComisionPorCompraCasa
      ,@ComisionPorCompraBolsa
      ,@ComisionPorVentaCasa
      ,@ComisionPorVentaBolsa
      ,@YTMCompra
      ,@YTMVenta     



        ,@DiasVenC
        ,@DiasVenV
        ,@DiasAcuC
        ,@DiasAcuV
        ,@YTMVenC
        ,@YTMVenV
        ,@IntAcuC
        ,@IntAcuV
        ,@IntPorAcuC
        ,@IntPorAcuV
        ,@PrecSucioC
        ,@PrecSucioV
        ,@ComisionCasaC
        ,@ComisionCasaV
        ,@ComisionBolsaC
        ,@ComisionBolsaV
        ,@ValTransC
        ,@ValTransV
        ,@MontoPagar
        ,@MontoRecibir
        ,@CostTransC
        ,@CupRecibidos

)


 
"







            cmd = New SqlCommand
            cmd.CommandText = sql


            With cmd.Parameters
                If (coleccion(1) Is Nothing) Then
                    .Add("@PeriodicC", SqlDbType.VarChar).Value = "M"
                Else
                    .Add("@PeriodicC", SqlDbType.VarChar).Value = coleccion(1).ToString()
                End If
                .Add("@ValNomC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(2).ToString)
                .Add("@UltFCupC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(3).ToString)
                .Add("@SigFCupC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(4).ToString)
                .Add("@FLiqC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(5).ToString)
                .Add("@FVencC", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(6).ToString)
                .Add("@PorcCupC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(7).ToString)
                .Add("@PrecVencC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(8).ToString)
                .Add("@PrecioCompra", SqlDbType.Float).Value = coleccion(9).ToString
                If (coleccion(10) Is Nothing) Then
                    .Add("@DiasBaseC", SqlDbType.Int).Value = 365
                Else
                    .Add("@DiasBaseC", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(10).ToString)
                End If

                If (coleccion(12) Is Nothing) Then
                    .Add("@PeriodicV", SqlDbType.VarChar).Value = "M"
                Else
                    .Add("@PeriodicV", SqlDbType.VarChar).Value = coleccion(12).ToString()
                End If
                .Add("@ValNomV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(13).ToString)
                .Add("@UltFCupV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(14).ToString)
                .Add("@SigFCupV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(15).ToString)
                .Add("@FLiqV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(16).ToString)
                .Add("@FVencV", SqlDbType.Date).Value = Operaciones.ConvertirFecha(coleccion(17).ToString)
                .Add("@PorcCupV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(18).ToString)
                .Add("@PrecVencV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(19).ToString)
                .Add("@PrecioVenta", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(20).ToString)
                If (coleccion(21) Is Nothing) Then
                    .Add("@DiasBaseV", SqlDbType.Int).Value = 365
                Else
                    .Add("@DiasBaseV", SqlDbType.Int).Value = Operaciones.ConvertirEntero(coleccion(21).ToString)
                End If

                .Add("@CodInv", SqlDbType.VarChar).Value = coleccion(23).ToString()
                .Add("@ComisionPorCompraCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(26).ToString())
                .Add("@ComisionPorCompraBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(27).ToString())
                .Add("@ComisionPorVentaCasa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(28).ToString())
                .Add("@ComisionPorVentaBolsa", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(29).ToString())
                .Add("@YTMCompra", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(30).ToString())
                .Add("@YTMVenta", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(31).ToString())
                .Add("@DiasVenC", SqlDbType.Int).Value = coleccion(32).ToString
                .Add("@DiasVenV", SqlDbType.Int).Value = coleccion(33).ToString
                .Add("@DiasAcuC", SqlDbType.Int).Value = coleccion(34).ToString
                .Add("@DiasAcuV", SqlDbType.Int).Value = coleccion(35).ToString
                .Add("@YTMVenC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(36).ToString)
                .Add("@YTMVenV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(37).ToString)
                .Add("@IntAcuC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(38).ToString)
                .Add("@IntAcuV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(39).ToString)
                .Add("@IntPorAcuC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(40).ToString)
                .Add("@IntPorAcuV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(41).ToString)
                .Add("@PrecSucioC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(42).ToString)
                .Add("@PrecSucioV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(43).ToString)
                .Add("@ComisionCasaC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(44).ToString)
                .Add("@ComisionCasaV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(45).ToString)
                .Add("@ComisionBolsaC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(46).ToString)
                .Add("@ComisionBolsaV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(47).ToString)
                .Add("@ValTransC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(48).ToString)
                .Add("@ValTransV", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(49).ToString)
                .Add("@MontoPagar", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(50).ToString)
                .Add("@MontoRecibir", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(51).ToString)
                .Add("@CostTransC", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(52).ToString)
                .Add("@CupRecibidos", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(coleccion(53).ToString)
            End With

            cmd.Connection = cn

            retorno = cmd.ExecuteNonQuery
            MsgBox("Registro creado éxitosmente")

        Else
            MsgBox("No se pudo ingresar los datos")
            retorno = 0
        End If

        cn.Close()
        Return retorno
    End Function

    Public Sub Eliminar(ByVal Eliminar As String, ByVal CodigoInstrumento As String)
        Dim objCon As New Conexion
        Dim res As Integer
        Dim Tabla As String = String.Empty
        Dim TablaIngresos As String = String.Empty
        Dim TablaTIT1 As String = String.Empty
        Dim TablaTIT2 As String = String.Empty
        If (CodigoInstrumento = "CINV") Then
            Tabla = "CIN0"
            TablaIngresos = "CIN1"
        ElseIf (CodigoInstrumento = "TIT") Then
            Tabla = "TIT"
            TablaIngresos = "TIT0_0"
            TablaTIT1 = "TIT0"
            TablaTIT2 = "TIT2"
        ElseIf (CodigoInstrumento = "BONO") Then
            Tabla = "BON0"
            TablaIngresos = "BON1"
        ElseIf (CodigoInstrumento = "EURB") Then
            Tabla = "EURB0"
            TablaIngresos = "EURB1"

        End If


        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



            sql = "DELETE FROM " + TablaIngresos + "
      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 (CodigoInstrumento = "TIT") Then
                sql = "DELETE FROM " + TablaTIT1 + "
      WHERE [CodInv]=@CodInv"


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


                sql = "DELETE FROM " + TablaTIT2 + "
      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
            End If




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


