Imports System.Data.SqlClient
Public Class PrestamoPersonalDAO
    Dim Operaciones As New Operaciones

    Public Function ProcesoDatos(ByVal Coleccion As Collection, ByVal Coleccion2 As Collection, ByVal Codigo As String, ByVal Diccionario As Dictionary(Of String, Collection), ByVal EstadoDeudor As String, ByVal EstadoDetalles 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


            If EstadoDeudor = "Nuevo" Then


                sql = "INSERT INTO [dbo].[PPER0](
           [CodInv]
           ,[nombredeudor]
           ,[numerodeudor]
           ,[fechaotorga]
           ,[fechapago]
           ,[periodogracia]
) VALUES(
           @CodInv
           ,@nombredeudor
           ,@numerodeudor
           ,@fechaotorga
           ,@fechapago
           ,@periodogracia
)
    "

            Else
                sql = "UPDATE [dbo].[PPER0] SET
           
           [nombredeudor]=@nombredeudor
           ,[numerodeudor]=@numerodeudor
           ,[fechaotorga]=@fechaotorga
           ,[fechapago]=@fechapago
           ,[periodogracia]=@periodogracia
           where [CodInv]=@CodInv

    "
            End If
            cmd = New SqlCommand
            cmd.CommandText = sql
            cmd.Connection = cn






            cmd.Transaction = myTrans

            With cmd.Parameters
                .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
                .Add("@nombredeudor", SqlDbType.VarChar).Value = Coleccion(1).ToString
                .Add("@numerodeudor", SqlDbType.VarChar).Value = Coleccion(2).ToString
                .Add("@fechaotorga", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(Coleccion(3).ToString)
                .Add("@fechapago", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(Coleccion(4).ToString)
                .Add("@periodogracia", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(5).ToString)

            End With


            retorno = cmd.ExecuteNonQuery






            If EstadoDetalles = "Nuevo" Then

                sql = "INSERT INTO [dbo].[PPER1](        
           [CodInv]
           ,[tasainteres]
           ,[duracionprestamo]
           ,[totalcuotas]
           ,[montoprestamo]
           ,[seguro]
            ,[CuotaSinSeguro]
            ,[CuotaReal]

) VALUES(
           @CodInv
           ,@tasainteres
           ,@duracionprestamo
           ,@totalcuotas
           ,@montoprestamo
           ,@seguro
           ,@CuotaSinSeguro
           ,@CuotaReal

)
    "

            Else
                sql = "UPDATE  [dbo].[PPER1] SET       
           
           [tasainteres]=@tasainteres
           ,[duracionprestamo]=@duracionprestamo
           ,[totalcuotas]=@totalcuotas
           ,[montoprestamo]=@montoprestamo
           ,[seguro]=@seguro
            ,[CuotaSinSeguro]=@CuotaSinSeguro
            ,[CuotaReal]=@CuotaReal
           where [CodInv]=@CodInv
 


    
    "
            End If
            cmd = New SqlCommand
            cmd.CommandText = sql
            cmd.Connection = cn






            cmd.Transaction = myTrans
            With cmd.Parameters
                .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
                .Add("@tasainteres", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(1).ToString)
                .Add("@duracionprestamo", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(2).ToString)
                .Add("@totalcuotas", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(3).ToString)
                .Add("@montoprestamo", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(4).ToString)
                .Add("@seguro", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(5).ToString)
                .Add("@CuotaSinSeguro", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(6).ToString)
                .Add("@CuotaReal", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion2(7).ToString)
            End With


            retorno = cmd.ExecuteNonQuery

















            sql = "DELETE FROM [dbo].[PPER2]
      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 Coleccion3 As Collection = DatosDiccionario.Value
                    sql = "INSERT INTO [dbo].[PPER2](
           [CodInv]
           ,[fecha]
           ,[Periodo]
           ,[saldoinicial]
           ,[pagocuota]
           ,[pagointeresIVA]
           ,[IVAinteres]
           ,[pagointeres]
           ,[abono]
           ,[prestamoremanente]
           ,[pagodanos]
           ,[pagovivienta]
           ,[totalcuota]
           ,[totalpagado]
           ,[abonoextra]
           ,[correlativo]
           ,[fechacorte]
) VALUES(
           @CodInv
           ,@fecha
           ,@Periodo
           ,@saldoinicial
           ,@pagocuota
           ,@pagointeresIVA
           ,@IVAinteres
           ,@pagointeres
           ,@abono
           ,@prestamoremanente
           ,@pagodanos
           ,@pagovivienta
           ,@totalcuota
           ,@totalpagado
           ,@abonoextra
           ,@correlativo
           ,@fechacorte

)
    "

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

                    With cmd.Parameters
                        .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
                        .Add("@correlativo", SqlDbType.Int).Value = Operaciones.ConvertirEntero(Coleccion3(1).ToString)
                        .Add("@fecha", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(Coleccion3(2).ToString)
                        .Add("@Periodo", SqlDbType.Int).Value = Operaciones.ConvertirEntero(Coleccion3(3).ToString)
                        .Add("@saldoinicial", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(4).ToString)
                        .Add("@pagocuota", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(5).ToString)
                        .Add("@pagointeresIVA", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(6).ToString)
                        .Add("@IVAinteres", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(7).ToString)
                        .Add("@pagointeres", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(8).ToString)
                        .Add("@abono", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(9).ToString)
                        .Add("@prestamoremanente", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(10).ToString)
                        .Add("@pagodanos", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(11).ToString)
                        .Add("@pagovivienta", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(12).ToString)
                        .Add("@totalcuota", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(13).ToString)
                        .Add("@totalpagado", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(14).ToString)
                        .Add("@abonoextra", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion3(15).ToString)
                        .Add("@fechacorte", SqlDbType.Date).Value = Operaciones.ConvertirFechaBaseDatos(Coleccion3(16).ToString)


                    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 NuevaAmortizacion(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].[PPER2](
           [CodInv]
           ,[fecha]
           ,[Periodo]
           ,[saldoinicial]
           ,[pagocuota]
           ,[pagointeresIVA]
           ,[IVAinteres]
           ,[pagointeres]
           ,[abono]
           ,[prestamoremanente]
           ,[pagodanos]
           ,[pagovivienta]
           ,[totalcuota]
           ,[totalpagado]
           ,[abonoextra]
           ,[correlativo]
           ,[fechacorte]
) VALUES(
           @CodInv
           ,@fecha
           ,@Periodo
           ,@saldoinicial
           ,@pagocuota
           ,@pagointeresIVA
           ,@IVAinteres
           ,@pagointeres
           ,@abono
           ,@prestamoremanente
           ,@pagodanos
           ,@pagovivienta
           ,@totalcuota
           ,@totalpagado
           ,@abonoextra
           ,@correlativo
           ,@fechacorte

)
    "

        cmd = New SqlCommand
        cmd.CommandText = sql

        With cmd.Parameters
            .Add("@CodInv", SqlDbType.VarChar).Value = Codigo
            .Add("@correlativo", SqlDbType.Int).Value = Operaciones.ConvertirEntero(Coleccion(1).ToString)
            .Add("@fecha", SqlDbType.DateTime).Value = Operaciones.ConvertirFecha(Coleccion(2).ToString)
            .Add("@Periodo", SqlDbType.Int).Value = Operaciones.ConvertirEntero(Coleccion(3).ToString)
            .Add("@saldoinicial", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(4).ToString)
            .Add("@pagocuota", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(5).ToString)
            .Add("@pagointeresIVA", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(6).ToString)
            .Add("@IVAinteres", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(7).ToString)
            .Add("@pagointeres", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(8).ToString)
            .Add("@abono", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(9).ToString)
            .Add("@prestamoremanente", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(10).ToString)
            .Add("@pagodanos", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(11).ToString)
            .Add("@pagovivienta", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(12).ToString)
            .Add("@totalcuota", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(13).ToString)
            .Add("@totalpagado", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(14).ToString)
            .Add("@abonoextra", SqlDbType.Float).Value = Operaciones.ConvertirDecimal(Coleccion(15).ToString)
            .Add("@fechacorte", SqlDbType.Date).Value = Operaciones.ConvertirFechaBaseDatos(Coleccion(16).ToString)


        End With

        cmd.Connection = cn

        retorno = cmd.ExecuteNonQuery
        cn.Dispose()
        cn.Close()

        Return retorno

    End Function












    Public Function CargarDeudor(ByVal Codigo As String)
        Dim objCon As New Conexion
        Dim sql As String
        Dim cmd As SqlCommand
        Dim Coleccion As New Collection
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        sql = "SELECT * FROM [dbo].[PPER0] WHERE CodInv=@Codigo"
        cmd = New SqlCommand


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


        Dim Datos = cmd.ExecuteReader
        If Datos.HasRows Then
            'SE ENCONTRO EL REGISTRO


            If Datos.Read Then

                Coleccion.Add(Datos.Item("nombredeudor"))
                Coleccion.Add(Datos.Item("numerodeudor"))
                Coleccion.Add(Datos.Item("fechaotorga"))
                Coleccion.Add(Datos.Item("fechapago"))
                Coleccion.Add(Datos.Item("periodogracia"))

                cn.Close()
                Return Coleccion
            End If
        End If
        cn.Close()
        Return False
    End Function








    Public Function CargarDetalles(ByVal Codigo As String)
        Dim objCon As New Conexion
        Dim sql As String
        Dim cmd As SqlCommand
        Dim Coleccion As New Collection
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        sql = "SELECT * FROM [dbo].[PPER1] WHERE CodInv=@Codigo"


        cmd = New SqlCommand

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

        ' Dim Datos = cmd.ExecuteScalar
        Dim Datos = cmd.ExecuteReader
        If Datos.HasRows Then
            'SE ENCONTRO EL REGISTRO


            If Datos.Read Then

                Coleccion.Add(Datos.Item("tasainteres"))
                Coleccion.Add(Datos.Item("duracionprestamo"))
                Coleccion.Add(Datos.Item("totalcuotas"))
                Coleccion.Add(Datos.Item("montoprestamo"))
                Coleccion.Add(Datos.Item("seguro"))
                cn.Close()
                Return Coleccion
            End If
        End If
        cn.Close()
        Return False
    End Function





    Public Function CargarAmortizacion(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 PPER2 where CodInv='" + codigo + "' order by Correlativo"


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

        Return dr
    End Function
    Public Sub Eliminar(ByVal Codigo 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 [dbo].[PPER0]
      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 [dbo].[PPER1]
      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 [dbo].[PPER2]
      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

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

    End Sub




End Class
