Pular para conteúdo

Total horas mes

total_horas_mes(lista_horas, ano, mes)

Recebe um Dicionario de horas e calcula a quantidade para fechar o mes

Parameters:

Name Type Description Default
lista_horas list[int]

Lista contendo o lançamento das horas

required
ano int

Ano que deseja calcular

required
mes int

Mes que deseja calcular

required

Examples:

>>> total_horas_mes([44,44,44,44,30], 2024, 10)
{'total_de_horas_esperadas_no_mes': '206:00', 'total_horas_trabalhadas': '206:00', 'total_horas_faltantes': '000:00'}
>>> total_horas_mes([44,44,44,44], 2024, 9)
{'total_de_horas_esperadas_no_mes': '186:00', 'total_horas_trabalhadas': '176:00', 'total_horas_faltantes': '010:00'}

Returns:

Type Description
dict[str, list[str]]

Um Dicionario contendo a totalização das horas

Raises:

Type Description
ValueError

Caso valor passado não seja o esperado

Source code in conversor_horas_trabalho/total_horas_mes.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
def total_horas_mes(
    lista_horas: list[int], ano: int, mes: int
) -> dict[str, list[str]]:
    """
    Recebe um Dicionario de horas e calcula a quantidade para fechar o mes

    Args:
        lista_horas: Lista contendo o lançamento das horas
        ano: Ano que deseja calcular
        mes: Mes que deseja calcular

    Examples:
        >>> total_horas_mes([44,44,44,44,30], 2024, 10)
        {'total_de_horas_esperadas_no_mes': '206:00', 'total_horas_trabalhadas': '206:00', 'total_horas_faltantes': '000:00'}

        >>> total_horas_mes([44,44,44,44], 2024, 9)
        {'total_de_horas_esperadas_no_mes': '186:00', 'total_horas_trabalhadas': '176:00', 'total_horas_faltantes': '010:00'}

    Returns:
        Um Dicionario contendo a totalização das horas

    Raises:
        ValueError: Caso valor passado não seja o esperado
    """
    retorna = {}
    qnt_tot_hr_seg = 0
    qnt_tot_hr_falt_diff_seg = 0
    total_de_horas_esperadas_no_mes = 0
    for hr in lista_horas:
        try:
            qnt_horas_seg = hr * 3600
            qnt_tot_hr_seg = qnt_tot_hr_seg + qnt_horas_seg
        except:
            raise ValueError(
                f'Erro ao converter o valor de horas indicado {hr}'
            )

    maximo_horas_mes = _maximo_horas_trabalhadas(ano, mes)
    maximo_horas_mes_seg = maximo_horas_mes * 3600

    if qnt_tot_hr_seg >= maximo_horas_mes_seg:
        total_horas_faltantes = '000:00'
    else:
        qnt_tot_hr_falt_diff_seg = maximo_horas_mes_seg - qnt_tot_hr_seg
        total_horas_faltantes = _segundos_para_hhh_mm(qnt_tot_hr_falt_diff_seg)

    total_horas_trabalhadas = _segundos_para_hhh_mm(qnt_tot_hr_seg)
    total_de_horas_esperadas_no_mes = _segundos_para_hhh_mm(
        maximo_horas_mes_seg
    )

    retorna = {
        'total_de_horas_esperadas_no_mes': total_de_horas_esperadas_no_mes,
        'total_horas_trabalhadas': total_horas_trabalhadas,
        'total_horas_faltantes': total_horas_faltantes,
    }
    return retorna