class EmisionLiquidacionHistoricasAction: """ La clase EmisionLiquidacionHistoricasAction es responsable de agrupar las funcionalidades de Emisión de Liquidaciones Históricas """ def __init__(self): self.emision_liquidacion_historicas_page = EmisionLiquidacionHistoricasPage( ) self.menu_page = MenuPage() def ejecutar_liquidacion_historicas(self, periodo, empresa, ordenamiento): """ Realiza una liquidacion historica de todos los colaboradores y genera el documento PDF """ self.emision_liquidacion_historicas_page.unselect_envia_liquidaciones_por_mail( ) self.emision_liquidacion_historicas_page.unselect_no_emite_liquidaciones_neto_0( ) self.emision_liquidacion_historicas_page.unselect_pdf_agrupamiento() self.emision_liquidacion_historicas_page.selecciona_todos() while self.emision_liquidacion_historicas_page.get_seleccionados_text( ) == "Ninguno": pass # to make sure that someone is selected self.emision_liquidacion_historicas_page.select_mes_de_pago( self.menu_page.get_ames().strftime('%m')) self.emision_liquidacion_historicas_page.select_year_de_pago( self.menu_page.get_ames().strftime('%Y')) self.emision_liquidacion_historicas_page.set_periodos(periodo) self.emision_liquidacion_historicas_page.ingresa_empresa(empresa) self.emision_liquidacion_historicas_page.click_ordenamiento() self.emision_liquidacion_historicas_page.switch_to_popup() self.emision_liquidacion_historicas_page.set_ordenamiento1( ordenamiento) self.emision_liquidacion_historicas_page.set_ordenamiento2( ordenamiento) self.emision_liquidacion_historicas_page.set_ordenamiento3( ordenamiento) self.emision_liquidacion_historicas_page.set_ordenamiento4( ordenamiento) self.emision_liquidacion_historicas_page.set_ordenamiento5( ordenamiento) self.emision_liquidacion_historicas_page.click_ok() self.emision_liquidacion_historicas_page.switch_to_main_window() self.emision_liquidacion_historicas_page.presiona_reimprimir() self.emision_liquidacion_historicas_page.presiona_imprimir_pdf() def comprobar_descarga_PDF(self, path): """ Comprueba la descarga del archivo :param path: la direccion en la cual se descargó el archivo :return: True si encuentra el archivo . False sino """ return self.emision_liquidacion_historicas_page.is_pdf_file_downloaded( path, self.emision_liquidacion_historicas_page.get_recibo_name() + ".pdf")
def __init__(self): self.libro_remuneraciones_page = LibroRemuneracionesPage() self.menu_page = MenuPage() self.SELECCION_TODOS = "TODOS" self.SELECCION_SELECCION = "SELECCIÓN" self.SELECCION_REPETIR_ULTIMA = "REPETIR ÚLTIMA" self.OPCION_HOJA_OFICIO = "Hoja Oficio" self.OPCION_HOJA_CARTA = "Hoja Carta" self.FORMATO_PDF = "PDF" self.FORMATO_EXCEL = "Excel"
def step_impl(context): context.finiquito_individual_action = FiniquitoIndividualAction() colaborador_data = ColaboradorData() menu_page = MenuPage() fecha = menu_page.get_ames().strftime('%d-%m-%Y') context.finiquito_individual_action.generate_finiquito( fecha, fecha, colaborador_data.motivo, colaborador_data.firma, colaborador_data.observacion) report.write_line("Simular finiquito individual", report.Status.SUCCESS, True)
def __init__(self): self.menu_page = MenuPage()
class MenuAction: """ La clase MenuAction es responsable de agrupar funcionalidades del menú principal """ def __init__(self): self.menu_page = MenuPage() def click_resumen_del_proceso(self): """ Navegación a Resumen del Proceso """ self.menu_page.click_inicio() self.menu_page.click_informes() self.menu_page.click_basicos() self.menu_page.click_resumen_del_proceso() report.write_line("Navegar a Resumen del Proceso.", report.Status.SUCCESS, True) def click_emision_de_liquidaciones(self): """ Navegación a Emisión de Liquidaciones """ self.menu_page.click_inicio() self.menu_page.click_procesos() self.menu_page.click_emision_de_liquidaciones() report.write_line("Navegar a Emisión de Liquidaciones.", report.Status.SUCCESS, True) def click_ficha_colaborador(self): """ Navegación a la Ficha del Colaborador """ self.menu_page.click_inicio() self.menu_page.click_mantencion() self.menu_page.click_ficha_colaborador() self.menu_page.wait_for_load_page() report.write_line("Navegando a la Ficha del Colaborador.", report.Status.SUCCESS, True) def click_de_items(self): """ Navegación hasta el menu de items """ self.menu_page.click_inicio() self.menu_page.click_mantencion() self.menu_page.click_de_items() def click_libro_remuneraciones(self): """ Navegación al Libro de Remuneraciones """ report.write_line("Abrir pantalla Libro de Remuneraciones.", report.Status.INFO, True) self.menu_page.click_inicio() self.menu_page.click_informes() self.menu_page.click_informes_legales() self.menu_page.click_libro_remuneraciones() report.write_line("Navegando al Libro de Remuneraciones.", report.Status.SUCCESS, True) def click_emision_liquidacion_historicas(self): """ Navegación a emision liquidacion historicas """ self.menu_page.click_inicio() self.menu_page.click_procesos() self.menu_page.click_emision_liquidacion_historicas() report.write_line("Navegando a Emisión Liquidaciones Históricas.", report.Status.SUCCESS, True) def click_mantencion_indices(self): """ Navegación a la Mantención de Índices """ self.menu_page.click_inicio() self.menu_page.click_mantencion() self.menu_page.click_otras() self.menu_page.click_de_indices() report.write_line("Navegando a la Mantención de índices.", report.Status.SUCCESS, True) def click_finiquitos_masivos(self): """ Navegación a Finiquitos Masivos """ self.menu_page.click_inicio() self.menu_page.click_informes() self.menu_page.click_informes_legales() self.menu_page.click_finiquitos_masivos() report.write_line("Navegando a Finiquitos Masivos.", report.Status.SUCCESS, True) def click_ingreso_masivo_campos(self): """ Navegación a Ingreso Masivo de Campos """ self.menu_page.click_inicio() self.menu_page.click_ingresos() self.menu_page.click_ingreso_masivo_campos() report.write_line("Navegando a Ingreso Masivo de Campos.", report.Status.SUCCESS, True)
class LibroRemuneracionesAction: """" La clase LibroRemuneracionesAction agrupa funcionalidades de la página de búsqueda de colaboradores """ def __init__(self): self.libro_remuneraciones_page = LibroRemuneracionesPage() self.menu_page = MenuPage() self.SELECCION_TODOS = "TODOS" self.SELECCION_SELECCION = "SELECCIÓN" self.SELECCION_REPETIR_ULTIMA = "REPETIR ÚLTIMA" self.OPCION_HOJA_OFICIO = "Hoja Oficio" self.OPCION_HOJA_CARTA = "Hoja Carta" self.FORMATO_PDF = "PDF" self.FORMATO_EXCEL = "Excel" def genera_reporte(self, seleccion, opcion, formato): """ Genera reporte y lo descarga. :param seleccion: Selector de empleados - TODOS, REPETIR ULTIMA. :param opcion: Tipo de hoja - oficio, carta. :param formato: Tipo de formato reporte - PDF, XLS. :return: """ report.write_line( "Generando reporte de libro de remuneraciones con selección {}, opción {} y formato {}.".format(seleccion, opcion, formato)) if seleccion == self.SELECCION_TODOS: self.libro_remuneraciones_page.click_todos() elif seleccion == self.SELECCION_REPETIR_ULTIMA: self.libro_remuneraciones_page.click_repetir_ultima() self.libro_remuneraciones_page.select_opcion_tipo_hoja(opcion) self.libro_remuneraciones_page.select_formato_salida_reporte(formato) self.libro_remuneraciones_page.seleccionar_mes(self.menu_page.get_ames().strftime('%m')) self.libro_remuneraciones_page.seleccionar_anio(self.menu_page.get_ames().strftime('%Y')) self.libro_remuneraciones_page.click_ok() report.write_line("Descargando reporte.", report.Status.INFO, True) if formato == self.FORMATO_PDF: self.libro_remuneraciones_page.click_link_formato_pdf() else: self.libro_remuneraciones_page.click_link_formato_excel() def valida_reporte(self, carpeta_descargas, extension_archivo): """ Comprueba que libro de remuneraciones haya sido descargado. :param carpeta_descargas: Ubicacion fisica de carpeta de descargas. :param extension_archivo: Extension del archivo. :return: True si archivo reporte fue correctamente descargado. """ report.write_line("Verificar validez reporte descargado.", report.Status.INFO, True) try: ruta_y_nombre_reporte = self.obtener_nombre_y_ruta_reporte(carpeta_descargas, extension_archivo) self.libro_remuneraciones_page = LibroRemuneracionesPage() existe_reporte = self.libro_remuneraciones_page.esta_libro_remuneraciones_descargado(ruta_y_nombre_reporte) self.borrar_reporte(ruta_y_nombre_reporte) if existe_reporte: report.write_line("Verificación de reporte exitosa.", report.Status.INFO, False) else: report.write_line("Verificación de reporte errónea: reporte no fue descargado.", report.Status.DANGER, False) return existe_reporte except AssertionError: report.write_line("Verificación de reporte errónea: ", report.Status.DANGER, False) return False def obtener_nombre_y_ruta_reporte(self, carpeta_descargas, extension_archivo): """ Obtiene el nombre y la ruta del archivo de reportes que se genera en prueba. :param carpeta_descargas: Ubicacion fisica de carpeta de descargas. :param extension_archivo: Extension del archivo. :return: Nombre del reporte y su ubicacion. """ ames_pago = self.libro_remuneraciones_page.obtener_ames_pago() return "{}{}_Libro_Remuneraciones{}".format( carpeta_descargas, ames_pago, "_T.PDF" if extension_archivo == "PDF" else ".xls") def borrar_reporte(self, nombre_y_ruta_reporte): """ Borra reporte creado por pruebas. Si está vacía, se borra carpeta descargas. """ while os.path.isfile(nombre_y_ruta_reporte): os.remove(nombre_y_ruta_reporte) while os.path.isfile(nombre_y_ruta_reporte + ".part"): try: os.remove(nombre_y_ruta_reporte + ".part") except PermissionError: report.write_line("No fue posible elimina archivo", report.Status.DANGER) continue def seleccionar_mes_de_pago(self): """ Selecciona mes de pago :param mes: string :param year: int """ report.write_line("Selección mes de pago.", report.Status.INFO, True) self.libro_remuneraciones_page.seleccionar_mes() self.libro_remuneraciones_page.seleccionar_anio()
def __init__(self): self.solicitudes_page = SolicitudesPage() self.menu_page = MenuPage() self.estaTodoBien = False
class SolicitudesAction: """" La clase SolicitudesAction agrupa funcionalidades de la página auto-consulta. """ def __init__(self): self.solicitudes_page = SolicitudesPage() self.menu_page = MenuPage() self.estaTodoBien = False def go_liquidaciones(self): """ Realiza la ejecuciageón de los elementos de auto-consulta """ report.write_line("Ir a Liquidaciones", report.Status.SUCCESS, True) self.solicitudes_page.click_liquidaciones() def navega(self): """ Navega a Solicitudes """ self.menu_page.click_inicio() self.solicitudes_page.click_solicitudes() report.write_line("Navega a Solicitudes", report.Status.SUCCESS) def navega_opcion_revisar(self): """ Navega a Solicitud Revisar """ report.write_line("Navega a Solicitud Revisar") self.navega() if self.solicitudes_page.is_pagina_principal(): self.solicitudes_page.click_revisar_solicitudes() else: self.navega_opcion_revisar() def navega_opcion_feriados(self): """ Navega a Solicitud Feriados """ self.navega() self.solicitudes_page.click_solicitar_feriados() report.write_line("Navega a Solicitud Feriados", report.Status.SUCCESS, True) def download_PDF(self): """ Recorre los registros de la tabla LIQUIDACIONES y hace clic en icono PDF """ linea = self.solicitudes_page.get_lineas_tabla()[0] self.solicitudes_page.click_pdf(linea) def elimina(self, tfecha_eliminar): """ Elimina las solicitudes obsoletas :param tfecha_eliminar: Fecha actual """ self.navega_opcion_revisar() self.solicitudes_page.click_eliminar_de_revisar_solicitudes() self.solicitudes_page.clear_fecha_tope_eliminacion() self.solicitudes_page.set_fecha_tope_eliminacion(tfecha_eliminar) self.solicitudes_page.click_ok_eliminar_solicitudes() report.write_line("Eliminar Solicitudes de Feriados Pendientes", report.Status.SUCCESS, True) def envia_feriados(self, tfecha, tcant_dias, tmotivo, tdia): """ Envía los datos para registrar la solicitud :param tdate: Valor para campo Desde :param tcant_dias: Valor para campo Cant. días solicitados :param tmotivo: Valor para campo Motivo :param tdia: Nombre del día actual """ self.navega_opcion_feriados() self.solicitudes_page.set_fecha_desde(tfecha) self.solicitudes_page.set_cantidad_dias(tcant_dias) self.solicitudes_page.set_motivo(tmotivo) report.write_line("Datos Solicitud de Feriados", report.Status.SUCCESS, True) self.solicitudes_page.click_enviar_solicitud() if tdia == "FRIDAY" or tdia == "VIERNES": self.solicitudes_page.click_aceptar_alerta() if self.solicitudes_page.is_pagina_principal(): report.write_line("Envío de Datos para Solicitud de Feriados", report.Status.SUCCESS, True) else: report.write_line( "Los datos de la solicitud no fueron registrados.", report.Status.DANGER, True) def valida(self, tipo, codigo, fecha, estado): """ Valida la solicitud :param tipo: Corresponde al tipo :param codigo: Corresponde al código :param fecha: Corresponde a la fecha :param estado: Corresponde al estado :return: """ report.write_line("Valida la solicitud") self.navega_opcion_revisar() self.estaTodoBien = (self.solicitudes_page.get_columna_tipo() == tipo) and \ (self.solicitudes_page.get_columna_codigo() == codigo) and \ (self.solicitudes_page.get_columna_fecha() == fecha) and \ (self.solicitudes_page.get_columna_estado() == estado) if self.estaTodoBien: report.write_line( "Solicitud {} Código {} con Fecha {} y Estado {} está todo bien" .format(tipo, codigo, fecha, estado), report.Status.SUCCESS, True) else: report.write_line( "Solicitud {} Código {} con Fecha {} y Estado {} no está todo bien" .format(tipo, codigo, fecha, estado), report.Status.DANGER, True) return self.estaTodoBien
def __init__(self): self.emision_liquidacion_historicas_page = EmisionLiquidacionHistoricasPage( ) self.menu_page = MenuPage()