Calcular sueldo por horas trabajadas en Visual Basic

Un saludo a los seguidores que siempre estan esperando alguna nueva publicación, en esta vez he tratado de hacer alguna utilidad que más de una vez se nos ocurre realizar, como dice el titulo del post vamos ha calcular el sueldo en funcion de las horas trabajadas, en efecto muchos de nosotros que trabajamos en empresas particulares requerimos la necesidad de calcular nuestra remuneracion de acuerdo a las horas que hemos laborado, es asi que mediante un post anterior y con referencia en el ejemplo del Guille:
http://www.elguille.info/colabora/puntoNET/AlexTaya_InterDateTime.htm  Autor : Pedro Alex Taya Yactayo he fusionado ambos algoritmos hallando la manera basica de esta app.

La app calcula el subtotal de cada dia ganado en la fila y al final  la suma de todo lo obtenido, indicado brevemente que en fechas donde hagan mas de 24h se debe modificar la misma para que el programa calcule basado en la diferencia de ambas. Les dejo un pantallazo en diseño


Ahora la codificación

Public Class Form1
    Dim asuntos() As String = {"XXXXXX", "XXXXYY", "XXXXZZ"}
    Dim codigos() As Integer = {100, 101, 102}
    Dim i As Integer
    Dim intervalo As String
    Private dragBoxFromMouseDown As Rectangle
    Private rowIndexFromMouseDown As Integer
    Private rowIndexOfItemUnderMouseToDrop As Integer
    Dim dias As String
    Dim horas As String
    Dim minutos As String
    Dim segundos As String
    Dim subtotal As Double

    Dim sumatotal As Double
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            For i = 0 To codigos.Length - 1
                If CInt(txtcod.Text) = codigos(i) Then
                    Imprimir()
                End If
            Next
            txtganado.Text = Format(sumatotal, "0.00")
        Catch ex As Exception
            MsgBox("Ingrese el [valor/hora] para iniciar calculo", MsgBoxStyle.Critical)
            txtvalor.Focus()
        End Try

    End Sub
    Sub calcularsueldo()
        subtotal = ((dias * 24) * CDbl(txtvalor.Text)) + (horas * CDbl(txtvalor.Text)) + ((minutos / 60) * CDbl(txtvalor.Text))
    End Sub
    Sub calculartotal()
        Dim contadorfilas As Integer = DataGridView1.Rows.Count
        For j As Integer = 1 To contadorfilas
        Next
        sumatotal += subtotal
        txtganado.Text = Format(sumatotal, "0.00")
    End Sub
    Sub Imprimir()
        evaluartiempo()
        calcularsueldo()
        'agrega filas a la grid
        DataGridView1.Rows.Add(1)
        'llena la grid
        Dim r As Integer = DataGridView1.Rows.Count - 1
        DataGridView1.Item(0, r).Value = txtcod.Text
        DataGridView1.Item(1, r).Value = asuntos(i)
        DataGridView1.Item(2, r).Value = tiempo1.Value
        DataGridView1.Item(3, r).Value = tiempo2.Value
        DataGridView1.Item(4, r).Value = dias + ":" + horas + ":" + minutos
        calcularsueldo()
        DataGridView1.Item(5, r).Value = Format(subtotal, "0.000")
        calculartotal()
    End Sub
    Sub evaluartiempo()
        Dim TiempSpan As TimeSpan
        Dim TiempoInicio As DateTime
        Dim TiempoFinal As DateTime
        TiempoInicio = DateTime.Parse(tiempo1.Value)
        TiempoFinal = DateTime.Parse(tiempo2.Value)
        TiempSpan = TiempoFinal.Subtract(TiempoInicio).Duration
        IntervaloTiempo(TiempSpan)
    End Sub
    Private Sub IntervaloTiempo(ByVal TiempSpan As TimeSpan)
        dias = TiempSpan.Days.ToString
        horas = TiempSpan.Hours.ToString
        minutos = TiempSpan.Minutes.ToString
        segundos = TiempSpan.Seconds.ToString
    End Sub
    Private Sub txtvalor_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtvalor.KeyPress
        If e.KeyChar = "."c Then
            e.Handled = True
            SendKeys.Send(",")
        End If
    End Sub

 Al final la captura ejecutándose


 Cualquier duda a mi correo, nos vemos en otro post: les dejo mi ejemplo


https://mega.co.nz/#!tZ9SXRAB!PmFQ2yzoR6_zDbitbhJ2jyjs2pVfkN0P7ocZCGxaSZs



Comentarios

Entradas populares de este blog

Imprimir directamente ReportViewer a impresora predeterminada

DevComponents DotnetBar 12.5.0.2

Metodo Iterativo Gauss-Seidel en Visual Basic