示例#1
0
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)
示例#4
0
 def __init__(self):
     self.menu_page = MenuPage()
示例#5
0
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()
示例#7
0
 def __init__(self):
     self.solicitudes_page = SolicitudesPage()
     self.menu_page = MenuPage()
     self.estaTodoBien = False
示例#8
0
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
示例#9
0
 def __init__(self):
     self.emision_liquidacion_historicas_page = EmisionLiquidacionHistoricasPage(
     )
     self.menu_page = MenuPage()