none
Calcular vacaciones

    Question

  • Buenas estoy haciendo una pantalla para calcular las vacaciones de los trabajadores de la empresa, pero me gustaría saber como hago para calcular las vacaciones empezando desde el 2 de enero hasta la fecha actual, en la empresa se da 1 dia de vacaciones por cada mes transcurrido, si alguien me puede ayudar se los agradecería mucho
    Monday, March 11, 2013 9:25 PM

Answers

  • Hola:
    Creo que lo que quieres saber es la diferencia en meses entre 2 fechas siempre y cuando esas 2 fechas sean del mismo año.

    En un Form con 2 DateTimePicker y 1 Button, copia y pega el siguiente codigo

    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If Year(DateTimePicker1.Value) <> Year(DateTimePicker2.Value) Then
                MessageBox.Show("Año diferente")
                Return
            End If
            Dim liMeses As Integer = DateDiff(DateInterval.Month, DateTimePicker1.Value, DateTimePicker2.Value)
            MessageBox.Show("Dias de Vacaciones: " & CStr(liMeses))
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos

    Wednesday, March 13, 2013 8:28 AM
  • Hola de nuevo Darm:

    calcular un dia de vacaciones por cada mes transcurrido desde la fecha de ingreso hasta su fecha actual??

     El detalle es que no calculas los dias que le corresponden  de vacaciones de una forma tan directa, para eso necesitas primero calcular la cantidad de años que lleva trabajando para con eso conocer la cantidad de dias que le corresponden, porque repitiendo lo que te comenté más arriba el primer año le corresponden 6 dias, el segundo año le corresponden 8 dias...etc.

     Entonces, necesitamos:

    1.  Obtener el número de años que lleva el empleado laborando en la empresa.              
        Public Shared Function MonthDifference(ByVal FechaFin As DateTime, ByVal FechaInicio As DateTime) As Decimal
            Return Math.Abs((FechaFin.Month - FechaInicio.Month) + 12 * (FechaFin.Year - FechaInicio.Year))
        End Function

       Puedes llamar a la función MonthDifference desde el evento click de un botton, como aqui:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim mes As Integer = CInt(MonthDifference(DateTimePicker1.Value.Date, DateTimePicker2.Value.Date))
            TextBox1.Text = CStr(mes / 12)
        End Sub

             2 . - Una vez teniendo el número de años laborados podrias, usar un Select Case para obtener el numero de dias correspondientes, por ejemplo: 

            Dim DiasVaciones As Integer
            Select Case mes / 12
                Case 1
                    DiasVaciones = 6
                Case 2
                    DiasVaciones = 8
                Case 3
                    DiasVaciones = 10
                Case 4
                    DiasVaciones = 12
                Case 5, 6, 7, 8, 9
                    DiasVaciones = 14
                Case 10
                    DiasVaciones = 16
            End Select
            MessageBox.Show(String.Format("Los dias de vaciones correspondientes son : {0}", DiasVaciones))

       3 .-  Como ya tenemos el número de dias que le corresponden al trabajador en función de los años laborados, solo resta usar la  formula que te sugerí en mi primer respuesta:

     Calculas los dias correspondientes por mes.

     DiasVacaciones/12Meses = DiasXMes

    MesesLaboradosEnEsteAño * DiasxMes = DiasCorrespondientesAesteAño

    calcular un dia de vacaciones por cada mes transcurrido desde la fecha de ingreso hasta su fecha actual??

     Observa con detenimiendo esta formula.

    DiasVacaciones/12Meses = DiasXMes

     Porque los dias de vacaciones siempre se dividiran por 12 meses que es lo correspondiente a un año, si el empleado tiene 8 meses laborando eso significa que está en su primer añor laboral y lo que le correspondera de vacaciones son 6 dias, entonces harias:

    6 Dias / 12 Meses = 0.5 dias por mes de vacaciones

     Calculemos ahora el número de dias de vaciones que le corresponden en proporción a sus 8 meses laborados en el Año Actual.

    8 Meses * 0.5 DiasXMes = 4 Dias ya ganados de vacaciones en este año

     Bueno, en resumén los dias de vacaciones dependen directamente del número de años laborados, pero la cantidad de dias por mes se calculan en 12 meses lo correpondiente a 1 año y este es independiente de la cantidad de dias que acumulo el año pasado.

     Las formulas y la manera de obtener los datos siempre seran mejorables pero por lo menos ya tienes una guía sobre el proceso.


    Saludos desde Monterrey, Nuevo León, México!!!

    Wednesday, March 13, 2013 4:51 PM

All replies

  • hola

    pero las vacaciones las deberias calcular desde la fecha de ingreso de la persona, ya que se supone que si la antiguedad es de menos de 5 años este ya le corresponden 15 dias de vaciones, pero si tiene mas me corresponde 20 y si es mas de 10 años 30 dias

    o sea las vacacioens no se calculan en base al año en curso, sino se tiene en cuanta cuando ingreso la persona, salvo que nuevos empleados que ingresaron ese año

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Monday, March 11, 2013 9:40 PM
  • Si eso lo entiendo bien, se supone que es mediante la fecha de ingreso pero en esta empresa las vacaciones empiezan a contar desde el 2 de enero, y digamos que una persona entrara en 02/12//2006 le calcularía muchas vacaciones no? o como se haría? esque soy nuevo en esto jeje y la verdad no lo se muy bien
    • Edited by Darm18 Monday, March 11, 2013 11:47 PM
    Monday, March 11, 2013 9:45 PM
  • Alguien me podría ayudar por favor diciéndome como hago para calcular las vacaciones?
    Tuesday, March 12, 2013 9:58 AM
  • Hola:
    Las reglas del negocio tu eres el que tienes que conocerlas.

    "digamos que una persona entrara en 02/12/2006 le calcularía muchas vacaciones no"

    Generalmente, le corresponderian lo mismo que a otra persona que halla entrado el 02/12/1996.
    Explica como son dichas reglas y si no las sabes, pues pregunta al departamento de RRHH

    Un saludo desde Bilbo
    Carlos

    Tuesday, March 12, 2013 11:47 AM
  • Carlos Gracias por responder, ya pregunte como es que funciona lo de las vacaciones mira por ejemplo una persona entro el 2 de octubre del 2012 de ese dia hasta diciembre se le contaron 2 días de vacaciones pero ya el 31 de diciembre se le dejaron de contar las de ese año y el 2 de enero empezaron a contarse los nuevos días de vacaciones no se si me entiendes

    Tuesday, March 12, 2013 8:17 PM
  • Hola Darm:

     Los dias de vacaciones al menos aqui en México estan regidas bajo la ley federal de trabajo, la cual en uno de los articulos indica cuantos dias le corresponden a cada trabajador en funcion de los años ininterrumpidos (baja) que lleve laborando para la empresa. En base a eso se calcula que...

     En el primer año laboral le corresponden 6 dias de vacaciones, es decir si su fecha de ingreso fue  el 2 de enero del 2012 sus 6 dias estaran completas hasta el 2 de Enero del 2013, despues de esa fecha empiezan a correr sus nuevas vacaciones y segun la ley le corresponden ahora 8 dias de vacaciones, has el 2 de Enero del 2014. Cantidad de dias se van incrementando 2 dias por cada año hasta llegar a los 5 años laborados, despues de eso se le vuelve a incrementar 2 dias hasta los 9 años...

     La solucion a tu problema esta en calcular primero los años o meses que lleva el empleado laborando para la empresa, con esa fecha podrias obtener lo correspondiente a los dias de vacaciones que le corresponden. por ejemplo

      En un año tendria 6 dias, y tu empleado lleva 8 meses laborando,

      Dias/12Meses = DiasXMes

      8 meses * DiasxMes = 4 dias

     Espero te sirva de Guía...


    Saludos desde Monterrey, Nuevo León, México!!!



    • Edited by Luis_Escobar Wednesday, March 13, 2013 12:31 AM
    • Proposed as answer by Luis_Escobar Monday, April 01, 2013 4:19 PM
    Tuesday, March 12, 2013 9:43 PM
  • Luis tu ejemplo va bien, pero ahora viéndolo como lo explicaste calcularlo por la fecha de ingreso es lo mejor me dijieron que eso se podía lograr con algo llamado datediff el problema es como se usa digamos para calcular un dia de vacaciones por cada mes transcurrido desde la fecha de ingreso hasta su fecha actual??
    Wednesday, March 13, 2013 5:25 AM
  • Hola:
    Creo que lo que quieres saber es la diferencia en meses entre 2 fechas siempre y cuando esas 2 fechas sean del mismo año.

    En un Form con 2 DateTimePicker y 1 Button, copia y pega el siguiente codigo

    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If Year(DateTimePicker1.Value) <> Year(DateTimePicker2.Value) Then
                MessageBox.Show("Año diferente")
                Return
            End If
            Dim liMeses As Integer = DateDiff(DateInterval.Month, DateTimePicker1.Value, DateTimePicker2.Value)
            MessageBox.Show("Dias de Vacaciones: " & CStr(liMeses))
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos

    Wednesday, March 13, 2013 8:28 AM
  • Hola de nuevo Darm:

    calcular un dia de vacaciones por cada mes transcurrido desde la fecha de ingreso hasta su fecha actual??

     El detalle es que no calculas los dias que le corresponden  de vacaciones de una forma tan directa, para eso necesitas primero calcular la cantidad de años que lleva trabajando para con eso conocer la cantidad de dias que le corresponden, porque repitiendo lo que te comenté más arriba el primer año le corresponden 6 dias, el segundo año le corresponden 8 dias...etc.

     Entonces, necesitamos:

    1.  Obtener el número de años que lleva el empleado laborando en la empresa.              
        Public Shared Function MonthDifference(ByVal FechaFin As DateTime, ByVal FechaInicio As DateTime) As Decimal
            Return Math.Abs((FechaFin.Month - FechaInicio.Month) + 12 * (FechaFin.Year - FechaInicio.Year))
        End Function

       Puedes llamar a la función MonthDifference desde el evento click de un botton, como aqui:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim mes As Integer = CInt(MonthDifference(DateTimePicker1.Value.Date, DateTimePicker2.Value.Date))
            TextBox1.Text = CStr(mes / 12)
        End Sub

             2 . - Una vez teniendo el número de años laborados podrias, usar un Select Case para obtener el numero de dias correspondientes, por ejemplo: 

            Dim DiasVaciones As Integer
            Select Case mes / 12
                Case 1
                    DiasVaciones = 6
                Case 2
                    DiasVaciones = 8
                Case 3
                    DiasVaciones = 10
                Case 4
                    DiasVaciones = 12
                Case 5, 6, 7, 8, 9
                    DiasVaciones = 14
                Case 10
                    DiasVaciones = 16
            End Select
            MessageBox.Show(String.Format("Los dias de vaciones correspondientes son : {0}", DiasVaciones))

       3 .-  Como ya tenemos el número de dias que le corresponden al trabajador en función de los años laborados, solo resta usar la  formula que te sugerí en mi primer respuesta:

     Calculas los dias correspondientes por mes.

     DiasVacaciones/12Meses = DiasXMes

    MesesLaboradosEnEsteAño * DiasxMes = DiasCorrespondientesAesteAño

    calcular un dia de vacaciones por cada mes transcurrido desde la fecha de ingreso hasta su fecha actual??

     Observa con detenimiendo esta formula.

    DiasVacaciones/12Meses = DiasXMes

     Porque los dias de vacaciones siempre se dividiran por 12 meses que es lo correspondiente a un año, si el empleado tiene 8 meses laborando eso significa que está en su primer añor laboral y lo que le correspondera de vacaciones son 6 dias, entonces harias:

    6 Dias / 12 Meses = 0.5 dias por mes de vacaciones

     Calculemos ahora el número de dias de vaciones que le corresponden en proporción a sus 8 meses laborados en el Año Actual.

    8 Meses * 0.5 DiasXMes = 4 Dias ya ganados de vacaciones en este año

     Bueno, en resumén los dias de vacaciones dependen directamente del número de años laborados, pero la cantidad de dias por mes se calculan en 12 meses lo correpondiente a 1 año y este es independiente de la cantidad de dias que acumulo el año pasado.

     Las formulas y la manera de obtener los datos siempre seran mejorables pero por lo menos ya tienes una guía sobre el proceso.


    Saludos desde Monterrey, Nuevo León, México!!!

    Wednesday, March 13, 2013 4:51 PM
  • Hola Darm:

     Pudiste resolver tu problema?


    Saludos desde Monterrey, Nuevo León, México!!!

    Friday, March 22, 2013 4:37 AM