domingo, 14 de febrero de 2016

Tabla de Amortización mensual en un Datagridview

Un saludo programadores y disculpas por la ausencia prolongada en la realización de mis post.
En esta vez, me propuse realizar rápidamente un tabla de amortización de crédito mensual, una utilidad para los que usan a menudo. Aunque dignamente les adelanto que lo hice rápidamente y no use todas la reglas de una programación ordenada, uds saben...

Entonces comencemos con la parte matemática:




Vamos a implementar en vbnet

En un modulo colocamos las funciones:

Module Calculos
    Public Function Inte_mensual(ByVal interes_anual As Double)
        Inte_mensual = ((1 + interes_anual) ^ (1 / 12)) - 1
        Return Inte_mensual
    End Function
    Public Function Valor_Cuota(ByVal Monto As Double, ByVal interes_mensual As Double, ByVal plazo As Double)
        Valor_Cuota = Monto * ((interes_mensual * ((1 + interes_mensual) ^ plazo)) / (((1 + interes_mensual) ^ (plazo)) - 1))
        Return Valor_Cuota
    End Function
    Public Function interes_couta(ByVal saldo_capital As Double, ByVal interes_mensual As Double)
        interes_couta = saldo_capital * interes_mensual
        Return interes_couta
    End Function
    Public Function Sumargrid(ByRef grid As DataGridView, ByVal ycolumn As Integer)
        Dim suma As Double
        Dim xrows As Integer
        Try
            For j As Integer = 0 To grid.Rows.Count - 1
                suma += grid.Item(ycolumn, xrows + j).Value
                suma = Format(suma, "0.00")
            Next
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
        Return suma
    End Function
End Module
Public Class Form1
    Dim fecha As String
    Dim n As Integer
    Dim capital, saldo, tasaxmes, intresxcuota, couta_pagar, monto, tasa_anual, interes_total As Double
    Private Sub btngenerar_Click(sender As Object, e As EventArgs) Handles btngenerar.Click
        gridamortizacion.Rows.Clear()
        calcular()
    End Sub

    Private Sub txtmonto_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtplazo.KeyPress, txtmonto.KeyPress, txtinteres.KeyPress, btngenerar.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
        If e.KeyChar = "."c Then
            e.Handled = True
            SendKeys.Send(",")
        End If
    End Sub

    Sub calcular()
        Try
            n = CInt(txtplazo.Text)
            monto = CDbl(txtmonto.Text)
            tasa_anual = CDbl(txtinteres.Text) / 100
            tasaxmes = Inte_mensual(tasa_anual)
            couta_pagar = Valor_Cuota(CDbl(monto), tasaxmes, n)
            interes_total = tasa_anual * (monto / n)
            For i As Integer = 0 To n - 1
                intresxcuota = interes_couta(CDbl(monto), tasaxmes)
                capital = couta_pagar - intresxcuota
                saldo = Math.Abs(CDbl(monto) - capital)
                fecha = DateAdd("m", i, time.Text)
                monto = saldo
                llenartabla()
            Next
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

    End Sub
    Sub llenartabla()
        Try
            gridamortizacion.Rows.Add(1)
            Dim r As Integer = gridamortizacion.Rows.Count - 1
            gridamortizacion.Item(0, r).Value = r + 1
            gridamortizacion.Item(1, r).Value = fecha
            gridamortizacion.Item(2, r).Value = Format(couta_pagar, "0.00")
            gridamortizacion.Item(3, r).Value = Format(intresxcuota, "0.00")
            gridamortizacion.Item(4, r).Value = Format(capital, "0.00")
            gridamortizacion.Item(5, r).Value = Format(saldo, "0.00")
            lblinteres_mensual.Text = tasaxmes
            lblintres_total.Text = Sumargrid(gridamortizacion, 3)

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

End Class
Cualquier comentario a mi correo ya los saben. Les dejo una captura de mi programa ejecutándose y el link de mi ejemplo al final, nos vemos en otra entrega.


Mi ejemplo:

https://mega.nz/#!RI0gSZ7I!u-Bb2ZpE_9A3SFTCJBoix5hU7RDhJxLPKaIrCFLMbZA