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
Publicar un comentario