This repository has been archived by the owner on Nov 20, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
comprobantes.py
94 lines (88 loc) · 3.35 KB
/
comprobantes.py
1
2
3
4
5
6
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
"""
Modulo para la impresion de comprobantes de los empleados
Funciones:
- mostrar_comprobante
- generar_comprobantes
- generar_comprobante
- generacion_comprobantes
"""
from empleados import buscar_empleado
from modelos import RegistroSalarial
from nominas import buscar_registro
from utilidades import FMT_FECHA_MES, esperar_tecla, limpiar_pantalla, pedir_numero
def mostrar_comprobante(rsalarial: RegistroSalarial) -> None:
"""Muestra una informacion detallada sobre el registro salarial generado"""
print("INFORME PARA", rsalarial.empleado.nombre, rsalarial.empleado.apellido, "del", rsalarial.fecha.strftime(FMT_FECHA_MES))
print("ID:", rsalarial.empleado.id)
print("Salario bruto:", rsalarial.salario)
print()
print("DESCUENTOS")
print("Ausencias:", len(rsalarial.ausencias))
print("Descuento:", rsalarial.descuento_ausencia())
print("Llegadas tardias:", len(rsalarial.llegadas_tardias))
print("Descuento:", rsalarial.descuento_llegada_tardia())
print("Total:", rsalarial.calcular_descuentos())
print()
print("BONOS")
print("Trabajos extras:", len(rsalarial.trabajos_extra))
print("Bono:", rsalarial.bono_trabajo_extra())
print("Feriados trabajados:", len(rsalarial.feriados_trabajados))
print("Bono:", rsalarial.bono_feriado_trabajado())
print("Total:", rsalarial.calcular_bonos())
print()
print("Salario:", rsalarial.calcular_salario_neto())
print("IPS:", rsalarial.calcular_ips())
print()
print("Total a pagar:", rsalarial.calcular_salario())
def generar_comprobantes() -> None:
"""Genera un comprobante para cada empleado del registro"""
limpiar_pantalla()
registro = buscar_registro()
if not registro:
return
limpiar_pantalla()
# 18 + 1 + 12 + 1 + 18
print("=" * 18, "COMPROBANTES", "=" * 18)
for rsalarial in registro.registros:
mostrar_comprobante(rsalarial)
print("-" * 50)
print("Total registros:", len(registro.registros))
print("Total IPS:", registro.pago_ips())
print("Total salario:", registro.pago_empleados())
print("Total a pagar:", registro.pago_empleados() + registro.pago_ips())
def generar_comprobante() -> None:
"""Genera un comprobante para un empleado"""
limpiar_pantalla()
registro = buscar_registro()
if not registro:
return
empleado = buscar_empleado()
if not empleado:
return
rsalarial = None
for reg in registro.registros:
if reg.empleado.id == empleado.id:
rsalarial = reg
if not rsalarial:
print("El registro no incluye a este empleado")
return
limpiar_pantalla()
mostrar_comprobante(rsalarial)
def generacion_comprobantes() -> None:
"""Opciones del menu
- Generar comprobantes para todos los empleados
- Generar un comprobante para un empleado
"""
while True:
limpiar_pantalla()
# 16 + 1 + 16 + 1 + 16
print("=" * 16, "MENU COMPROBANTE", "=" * 16)
print("1. Generar comprobantes")
print("2. Generar un comprobante")
print("0. Regresar")
match pedir_numero("Ingrese una opcion: "):
case 1: generar_comprobantes()
case 2: generar_comprobante()
case 0: break
case _: print("Opción Invalida")
esperar_tecla()