Exemplo n.º 1
0
def tramitar_para_pago(drive):
    builder = ActionChains(drive)

    drive.get("https://tpf2.madrix.app/runtime/44/list/186/Solicitação de Pagamento")
    time.sleep(3)
    #Filtrando as solicitações com status processado
    espera_explicita_de_elemento(drive,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div/div/div","encontrar","SRB2",120)
    time.sleep(3)
    encontrar_elemento_por_repeticao(drive,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div/div/div","click","SRB3",4)
    time.sleep(3)
    encontrar_elemento_por_repeticao(drive,"/html/body/div[4]/div[3]/ul/li[8]","click","SRB4",4)
    time.sleep(3)

    lista_de_tramitacao = ler_dados_da_planilha("SP")
    
    for solicitacao in lista_de_tramitacao:
        #Acessando o botao do filtro
        encontrar_elemento_por_repeticao(drive,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[2]","click","SRB5",4)
        espera_explicita_de_elemento(drive,"/html/body/div[4]/div[3]/div/div[1]/div[1]/button","click","SRB6",120)
        drive.find_element_by_xpath("/html/body/div[4]/div[3]/div/ul/li[1]/div/div/div/div/input").send_keys(str(solicitacao[0]))
        drive.find_element_by_xpath("/html/body/div[4]/div[3]/div/div[2]/button").click()
        time.sleep(2)

        drive.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr").click()
        #/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[8]/div[1]/div/button
        time.sleep(5)
        drive.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[4]").click()
        espera_explicita_de_elemento(drive,"/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[5]/div/div/div/div[1]/div[1]/div[1]/div/div/span/div/button[1]","click","SRB7",120)
        time.sleep(10)
        #Data
        drive.find_element_by_xpath("/html/body/div[7]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div/div[1]/div[1]/div/div/div/input").send_keys(solicitacao[2])
        #Valor
        valor = str(solicitacao[1]).replace(".",",")

        teste_casas_decimais_virgula = valor.count(",")
        teste_casas_decimais = valor.split(",")

        if teste_casas_decimais_virgula > 0 and len(teste_casas_decimais[1]) == 1:
            valor+="0"
        elif teste_casas_decimais_virgula == 0:
            valor+=",00"
        drive.find_element_by_xpath("/html/body/div[7]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div/div[1]/div[2]/div/div/div/input").send_keys(valor)
        #Salvar
        drive.find_element_by_xpath("/html/body/div[7]/div[3]/div/div/div/div[4]/fieldset/button[2]").click()
        time.sleep(5)
        #/html/body/div[7]/div[3]/div/div/div[1]/div[4]/fieldset/button[2]
        #/html/body/div[7]/div[3]/div/div/div/div[4]/fieldset/button[2]
        #Voltar
        #drive.find_element_by_xpath("/html/body/div[7]/div[3]/div/div/div/div[1]/button").click()
        #Dados
        encontrar_elemento_por_repeticao(drive,"/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[1]","click","Click em dados pg",4)
        #drive.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[1]").click()
        #Valor Liquido
        drive.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[5]/div[1]/div[2]/div/div/input").send_keys(valor)
        
        #Pagar
        drive.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[8]/div[1]/div/button").click()
        time.sleep(5)
        
        atualizar_status_na_planilha(int(solicitacao[4]))
        print("p")

#tramitar_para_pago()
Exemplo n.º 2
0
def pagamentoAvulso(financeiro):
    #verificar se tem downloads antigos e apagar
    remover_arquivos_da_raiz(recuperar_diretorio_usuario() +
                             "\\tpfe.com.br\\SGP e SGC - RPA\\")
    #data atual formatada
    data_em_texto = date.today().strftime("%d.%m.%Y")
    #caminho da pasta macro(pasta do dia)
    caminho_da_pasta = recuperar_diretorio_usuario(
    ) + "\\tpfe.com.br\\SGP e SGC - RPA\\Pagamento Avulso\\"
    #criar pasta do dia dentro de pagamento avulso
    criarPastaData(caminho_da_pasta, data_em_texto)
    tipo_de_solicitacao = "PA"
    builder = ActionChains(financeiro)
    #financeiro.implicitly_wait(10)

    #ACESSANDO PAGAMENTO AVULSO
    espera_explicita_de_elemento(
        financeiro,
        "/html/body/div[1]/div/div[2]/main/section/div/div/div/div/section/div/div[2]/div",
        "encontrar", "SRB1", 2)
    financeiro.get(
        "https://tpf2.madrix.app/runtime/44/list/190/Solicitação de Pgto Avulso"
    )
    #financeiro.implicitly_wait(10)
    #FILTRANDO OS PAGAMENTOS SOLICITADOS
    encontrar_elemento_por_repeticao(
        financeiro,
        "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div/div/div",
        "click", "filtro", 3)
    encontrar_elemento_por_repeticao(financeiro,
                                     "/html/body/div[4]/div[3]/ul/li[2]",
                                     "click", "filtro", 2)

    encontrar_elemento_por_repeticao(
        financeiro,
        "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[3]",
        "click", "filtro", 3)
    encontrar_elemento_por_repeticao(
        financeiro, "/html/body/div[4]/div[3]/div/div[1]/div[1]/button",
        "click", "limpar", 0.2)
    encontrar_elemento_por_repeticao(
        financeiro, "/html/body/div[4]/div[3]/div/ul/li[3]/div/div/div",
        "click", "filtro", 2)
    encontrar_elemento_por_repeticao(financeiro,
                                     "/html/body/div[5]/div[3]/ul/li[3]",
                                     "click", "filtro", 0.4)
    encontrar_elemento_por_repeticao(financeiro, "/html/body/div[5]/div[1]",
                                     "click", "filtro", 0.3)
    print(20 * "=")
    encontrar_elemento_por_repeticao(
        financeiro, "/html/body/div[4]/div[3]/div/div[2]/button", "click",
        "fechando filtro", 0.4)

    #OBTER QUANTIDADE DE PAGAMENTOS
    sleep(5)
    quantidade_de_requisicoes = int((financeiro.find_element_by_xpath(
        "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/span[2]/div/p[2]"
    ).get_attribute("innerText")).split(" ")[-1])
    #LAÇO PARA TRAMITAR TODOS OS PAGAMENTOS
    for linha in range(1):  #voltar para antigo quantidades
        dados_do_formulario = []
        global identificador
        #armazenando o id de cada solicitaçao
        identificador = financeiro.find_element_by_xpath(
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[4]/div"
        ).get_attribute("innerText")
        global razao
        #armazenando a razao social de cada solicitaçao
        #/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]
        #/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[2]/span/span[1]/input
        razao = financeiro.find_element_by_xpath(
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[6]/div"
        ).get_attribute("innerText")
        #estado = financeiro.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[7]/div/span").get_attribute("innerText")
        #ACESSANDO A SOLICITAÇAO
        #/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/span[2]/div/p[2]
        encontrar_elemento_por_repeticao(
            financeiro,
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[2]/span/span[1]/input",
            "click", "click na checkbox", 4)
        #financeiro.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[2]/span/span[1]/input").click()
        #clicar no lápis de edição
        encontrar_elemento_por_repeticao(
            financeiro,
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[1]",
            "click", "click na linha", 4)

        #PEGAR TODAS AS INFORMAÇOES PARA ALIMENTAR A PLANILHA
        caminho_em_comum_entre_campos_do_formulario = "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div"

        #PA
        dados_do_formulario.append(tipo_de_solicitacao)
        #ID DA SOLICITAÇAO
        dados_do_formulario.append(identificador)
        #CPF/CNPJ
        encontrar_elemento_por_repeticao(
            financeiro,
            "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[1]/div/div/div/input",
            "click", "cnpj", 4)
        cnpj = financeiro.find_element_by_xpath(
            "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[1]/div/div/div/input"
        ).get_attribute("value")
        cpf = financeiro.find_element_by_xpath(
            caminho_em_comum_entre_campos_do_formulario +
            "[2]/div[2]/div/div/div/input").get_attribute("value")
        try:
            validacao_cpf = 0
            validacao_cpf = cpf.replace(".", "")
            validacao_cpf = validacao_cpf.replace("-", "")
            validacao_cpf = int(validacao_cpf)
        except:
            validacao_cpf = 0
        if len(cpf) > 0 and validacao_cpf > 0:
            dados_do_formulario.append(cpf)
        else:
            dados_do_formulario.append(cnpj)
        #RAZÃO SOCIAL
        dados_do_formulario.append(razao)

        try:
            #FORMA DE PAGAMENTO
            forma_de_pagamento = financeiro.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[4]/div[1]/div/div[1]/div/div/div/div/div/div/div[1]/div"
            ).get_attribute("innerText")
            dados_do_formulario.append(forma_de_pagamento)
        except:
            forma_de_pagamento = ""
            dados_do_formulario.append("")
        #BANCO
        dados_do_formulario.append(
            financeiro.find_element_by_xpath(
                caminho_em_comum_entre_campos_do_formulario +
                "[3]/div[1]/div/div[1]/div/div/div/input").get_attribute(
                    "value"))
        #AGENCIA
        dados_do_formulario.append(
            financeiro.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[3]/div[1]/div/div[2]/div/div/div/input"
            ).get_attribute("value"))
        #CONTA
        dados_do_formulario.append(
            financeiro.find_element_by_xpath(
                caminho_em_comum_entre_campos_do_formulario +
                "[3]/div[2]/div/div[1]/div/div/div/input").get_attribute(
                    "value"))
        #TIPO DE CONTA
        try:
            dados_do_formulario.append(
                financeiro.find_element_by_xpath(
                    "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[3]/div[2]/div/div[2]/div/div/div/div/div/div/div[1]/div"
                ).get_attribute("innerText"))
        except:
            dados_do_formulario.append("")
        #NATUREZA DA CONTA
        try:
            dados_do_formulario.append(
                financeiro.find_element_by_xpath(
                    caminho_em_comum_entre_campos_do_formulario +
                    "[4]/div[2]/div/div[3]/div/div/div/div/div/div/div[1]/div"
                ).get_attribute("innerText"))
        except:
            dados_do_formulario.append("")
        #VALOR
        valor = financeiro.find_element_by_xpath(
            caminho_em_comum_entre_campos_do_formulario +
            "[4]/div[1]/div/div[2]/div/div/div/input").get_attribute("value")
        dados_do_formulario.append(valor)
        #VALOR PAGO
        dados_do_formulario.append("")
        #DATA SOLICITADA PARA PAGAMENTO
        dados_do_formulario.append(
            financeiro.find_element_by_xpath(
                caminho_em_comum_entre_campos_do_formulario +
                "[5]/div[1]/div/div[1]/div/div/div/input").get_attribute(
                    "value"))
        #DATA DA SOLICITAÇÃO
        dados_do_formulario.append(
            financeiro.find_element_by_xpath(
                caminho_em_comum_entre_campos_do_formulario +
                "[5]/div[1]/div/div[2]/div/div/div/input").get_attribute(
                    "value"))
        #DATA DE PAGAMENTO
        dados_do_formulario.append(
            financeiro.find_element_by_xpath(
                caminho_em_comum_entre_campos_do_formulario +
                "[5]/div[2]/div/div[1]/div/div/div/input").get_attribute(
                    "value"))

        valor_da_conta = valor.replace(".", "")
        valor_da_conta = valor_da_conta.replace("R$", "")
        valor_da_conta = valor_da_conta.replace(",", ".")
        valor_da_conta = float(valor_da_conta)

        if forma_de_pagamento == "Transferência Bancária":
            if dados_do_formulario[5] == "" or dados_do_formulario[
                    6] == "" or dados_do_formulario[
                        7] == "" or dados_do_formulario[
                            8] == "" or dados_do_formulario[
                                9] == "" or valor_da_conta == 0:  # and  banco != ""
                #Comentario Robo
                dados_do_formulario.append(
                    "Dados bancários incompletos ou solicitação está com valor zerado."
                )
                # tramitar = 1
            else:
                dados_do_formulario.append("")
        elif forma_de_pagamento == "Boleto Bancário":
            if valor_da_conta == 0:
                dados_do_formulario.append("Boleto com valor zerado")
            else:
                #Comentario Robo
                dados_do_formulario.append("")
        else:
            dados_do_formulario.append("")
        #Ajuste
        dados_do_formulario.append("")

        sleep(3)
        #CRIAR A PASTA DO PAGAMENTO QUE ACABOU DE SER PROCESSADO

        razao = razao.replace("\\", "")
        razao = razao.replace("/", "")
        razao = razao.replace(":", "")
        razao = razao.replace("*", "")
        razao = razao.replace("?", "")
        razao = razao.replace('"', "")
        razao = razao.replace("<", "")
        razao = razao.replace(">", "")
        razao = razao.replace("|", "")
        razao = razao.replace(".", "")
        razao = razao.replace(",", "")

        nome_da_pasta = "ID " + str(identificador) + " " + str(razao)
        # else:
        #     nome_da_pasta = (f"PA ID {identificador} {razao}")

        print(nome_da_pasta)
        criarPastasFilhas("Pagamento Avulso", nome_da_pasta)

        #BAIXAR AS NF
        encontrar_elemento_por_repeticao(
            financeiro,
            "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[2]",
            "click", "clicar em notas", 3)
        tbody2 = financeiro.find_element_by_xpath(
            "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[3]/div/div/div/div[1]/div[3]/table/tbody"
        )
        #pega todas as linhas que contem nf
        rows2 = tbody2.find_elements_by_tag_name("a")

        try:
            for row in rows2:
                maximo_tentativas = 0
                while maximo_tentativas < 40:
                    if len(rows2) > 0:
                        row.click()
                        sleep(2)
                        maximo_tentativas = 40
                    else:
                        maximo_tentativas += 1
        except:
            comentario_nota_fiscal = (f"Não foi possível baixar a nota fiscal")
            print(comentario_nota_fiscal)
            dados_do_formulario[15] = comentario_nota_fiscal

            # else:
            #     comentario_nao_possui_nota = (f"A solicitação não possui notas fiscais para serem baixadas")
            #     print(comentario_nao_possui_nota)
            #     dados_do_formulario[15] = comentario_nao_possui_nota
        sleep(2)
        #IMPRIMINDO
        try:
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[1]",
                "click", "voltar", 10)
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[6]/div[2]/div/div[2]/div/div/button",
                "click", "imprimir", 3)
            financeiro.switch_to_frame(0)
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div/div/div/div[2]/div/table/tbody/tr/td[1]/table/tbody/tr/td[3]/div/table/tbody/tr",
                "click", "filtro", 2)
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div/div/div/div[16]/div/div[1]/table/tbody/tr/td[2]",
                "click", "baixar capa", 2)
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div/div/div/div[20]/div[4]/table/tbody/tr/td[1]/div/table/tbody/tr/td",
                "click", "baixar capa", 2)
            financeiro.switch_to.default_content()
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[7]/div[3]/div/div[1]/h2/div/div[2]/button",
                "click", "baixar capa", 2)
            print("passou")
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[4]/div[3]/div/div/div/div[1]/div/div[3]/button",
                "click", "baixar capa", 2)
        except:
            dados_do_formulario[15] += "A capa nao foi baixada"
            print(dados_do_formulario[15])

        #MOVENDO ARQUIVOS
        print("mover arquivos")
        validar_download(caminho_da_pasta, data_em_texto, nome_da_pasta)

        #TRAMITAÇÃO
        encontrar_elemento_por_repeticao(
            financeiro,
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[2]",
            "click", "tramitar", 2)
        encontrar_elemento_por_repeticao(
            financeiro, "/html/body/div[4]/div[3]/div/div[2]/ul/div[3]",
            "click", "tramitar", 2)
        #Status
        dados_do_formulario.append("Processada")

        #DATA DE EXECUÇÃO ROBO
        dados_do_formulario.append(date.today().strftime("%d/%m/%Y"))

        preencher_solicitacao_na_planilha(dados_do_formulario,
                                          tipo_de_solicitacao)
        sleep(5)
        financeiro.get(
            "https://tpf2.madrix.app/runtime/44/list/190/Solicitação de Pgto Avulso"
        )

    sleep(1.5)
    print("Vai começar a contar")
    sleep(5)

    # 2° PARTE : ESPERANDO DO FINANCEIRO PRA TRAMITAR PRA PAGO
    lista_de_tramitacao = ler_dados_da_planilha(tipo_de_solicitacao)
    #Filtro
    if len(lista_de_tramitacao) > 0:
        encontrar_elemento_por_repeticao(
            financeiro,
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div/div/div",
            "click", "filtro", 4)
        encontrar_elemento_por_repeticao(financeiro,
                                         "/html/body/div[4]/div[3]/ul/li[6]",
                                         "click", "filtro", 2)
        #Para cada solicitaçao que precisa ser paga
        for solicitacao in lista_de_tramitacao:
            print(lista_de_tramitacao)
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[3]",
                "click", "filtro", 2)
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[4]/div[3]/div/div[1]/div[1]/button", "click",
                "filtro", 0.2)
            #Filtrar o ID
            solicitacao2 = str(solicitacao[0])
            solicitacao2 = solicitacao2[2:len(solicitacao2)]
            financeiro.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/ul/li[1]/div/div/div/div/input"
            ).send_keys(solicitacao2)
            # encontrar_elemento_por_repeticao(financeiro, "/html/body/div[6]/div[1]", "click", "filtro", 0.4 )
            print(20 * "=")
            encontrar_elemento_por_repeticao(
                financeiro, "/html/body/div[4]/div[3]/div/div[2]/button",
                "click", "filtro", 0.4)
            sleep(3)
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr/td[2]/span/span[1]/input",
                "click", "LINHA", 2)
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[1]",
                "click", "editar", 2)
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[3]",
                "click", "pagamentos", 2)
            sleep(2)

            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[4]/div/div/div/div[1]/div[1]/div[1]/div/div/span/div/button[1]",
                "click", "add um novo pg", 2)
            sleep(3)
            #Data
            financeiro.find_element_by_xpath(
                "/html/body/div[7]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div/div[1]/div[1]/div/div/div/input"
            ).send_keys(str(solicitacao[2]))
            #Valor
            valor = str(solicitacao[1]).replace(".", ",")

            teste_casas_decimais_virgula = valor.count(",")
            teste_casas_decimais = valor.split(",")

            if teste_casas_decimais_virgula > 0 and len(
                    teste_casas_decimais[1]) == 1:
                valor += "0"
            elif teste_casas_decimais_virgula == 0:
                valor += ",00"
            financeiro.find_element_by_xpath(
                "/html/body/div[7]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div/div[1]/div[2]/div/div/div/input"
            ).send_keys(valor)
            #Salvar
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[7]/div[3]/div/div/div/div[4]/fieldset/button[2]",
                "click", "SPA", 3)
            #Voltar
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[4]/div[3]/div/div/div/div[1]/div/div[3]/button",
                "click", "SPA", 2)
            #Tramitar
            encontrar_elemento_por_repeticao(
                financeiro,
                "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[2]",
                "click", "SPA", 3)
            sleep(3)
            #Pago ou parcialmente pago
            #Erro no Maiusculo
            if str(solicitacao[3]).lower() == "pago":
                encontrar_elemento_por_repeticao(
                    financeiro,
                    "/html/body/div[4]/div[3]/div/div[2]/ul/div[1]", "click",
                    "pago", 3)
                #/html/body/div[4]/div[3]/div/div[2]/ul/div[1]
            elif str(solicitacao[3]).lower() == "parcialmente pago":
                encontrar_elemento_por_repeticao(
                    financeiro,
                    "/html/body/div[4]/div[3]/div/div[2]/ul/div[2]", "click",
                    "SPA", 3)
            sleep(4)

            atualizar_status_na_planilha(int(solicitacao[4]))
    print("FIMMMMMMMMMMMMMMM AVULSO")
    #financeiro.close()

    # #para cada solicitação marcar a caixa de selecionar todas
    # financeiro.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/thead/tr/th[2]/span/span[1]/input").click()
    # #desmarcar
    # financeiro.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/thead/tr/th[2]/span/span[1]/input").click()
    # #exportando a planilha
    # financeiro.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[4]").click()

    # delay = 10 # seconds
    # try:
    #     myElem = WebfinanceiroWait(financeiro, delay).until(EC.presence_of_element_located((By.XPATH, "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[3]")))
    #     filtro = financeiro.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[3]")
    #     try:
    #         filtro_click = builder.click(filtro)
    #         filtro_click.perform()
    #     except:
    #         pass

# #pegar o corpo da tabela de solicitaçoes
# tbody1 = financeiro.find_element_by_xpath("//*[@id='mainContent']/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody")
# #pegar as linhas que existem dentro do corpo
# rows1 = tbody1.find_elements_by_tag_name("tr")

# global solicitaçao
# #lista que vai receber os índices de cada linha
# solicitaçao = []

# for row in range(len(rows1)):
#     solicitaçao.append(row) #armazenando os indices de cada linha

# print(solicitaçao)
Exemplo n.º 3
0
def aporte(driver):
    #verificar se tem downloads antigos e apagar
    gerenciadorPastas.remover_arquivos_da_raiz(
        gerenciadorPastas.recuperar_diretorio_usuario() +
        "\\tpfe.com.br\\SGP e SGC - RPA\\")
    #data atual formatada
    data_em_texto = date.today().strftime("%d.%m.%Y")
    #caminho da pasta macro(pasta do dia)
    caminho_da_pasta = gerenciadorPastas.recuperar_diretorio_usuario(
    ) + "\\tpfe.com.br\\SGP e SGC - RPA\\Solicitação de Aporte\\"
    #criar pasta do dia dentro de pagamento avulso
    gerenciadorPastas.criarPastaData(caminho_da_pasta, data_em_texto)
    tipo_de_solicitacao = "SA"
    builder = ActionChains(driver)
    driver.implicitly_wait(2)

    #ACESSANDO SOLICITAÇAO DE APORTE
    funcoes.espera_explicita_de_elemento(
        driver,
        "/html/body/div[1]/div/div[2]/main/section/div/div/div/div/section/div/div[2]/div",
        "encontrar", "AD", 2)
    driver.get(
        "https://tpf2.madrix.app/runtime/44/list/220/Solicitação de Aporte"
    )  #driver.implicitly_wait(10)

    #FILTRANDO AS SOLICITAÇÕES APROVADAS PELO GERENTE
    funcoes.encontrar_elemento_por_repeticao(
        driver,
        "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div/div/div",
        "click", "filtro", 2)
    funcoes.encontrar_elemento_por_repeticao(
        driver, "/html/body/div[4]/div[3]/ul/li[3]", "click", "filtro", 0.4)
    funcoes.encontrar_elemento_por_repeticao(
        driver,
        "//*[@id='mainContent']/section/div/div/div/div[1]/div/div[1]/button[2]",
        "click", "filtro", 2)
    funcoes.encontrar_elemento_por_repeticao(
        driver, "/html/body/div[4]/div[3]/div/div[1]/div[1]/button", "click",
        "filtro", 0.2)
    funcoes.encontrar_elemento_por_repeticao(
        driver, "/html/body/div[4]/div[3]/div/ul/li[4]/div/div/div/div",
        "click", "filtro", 0.3)
    funcoes.encontrar_elemento_por_repeticao(
        driver, "/html/body/div[5]/div[3]/ul/li[3]", "click", "solicitado",
        0.4)
    funcoes.encontrar_elemento_por_repeticao(driver,
                                             "/html/body/div[5]/div[1]",
                                             "click", "clicar fora", 0.5)
    funcoes.encontrar_elemento_por_repeticao(
        driver, "/html/body/div[4]/div[3]/div/div[2]/button", "click",
        "aplicar", 0.3)
    print(20 * "=")

    #OBTER QUANTIDADE DE PAGAMENTOS
    sleep(5)
    quantidade_de_requisicoes = int((driver.find_element_by_xpath(
        "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/span[2]/div/p"
    ).get_attribute("innerText")).split(" ")[-1])

    #LAÇO PARA TRAMITAR TODOS OS PAGAMENTOS
    for linha in range(2):  #voltar para antigo quantidades
        dados_do_formulario = []
        global identificador
        #armazenando o id de cada solicitaçao
        identificador = driver.find_element_by_xpath(
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[4]/div"
        ).get_attribute("innerText")
        #armazenando a razao social de cada solicitaçao
        #estado = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[7]/div/span").get_attribute("innerText")
        #ACESSANDO A SOLICITAÇAO
        driver.find_element_by_xpath(
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[2]/span/span[1]/input"
        ).click()
        #clicar no lápis de edição
        funcoes.encontrar_elemento_por_repeticao(
            driver,
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[1]",
            "click", "click na linha", 4)

        #PEGAR TODAS AS INFORMAÇOES PARA ALIMENTAR A PLANILHA
        sleep(3)
        #SA
        dados_do_formulario.append(tipo_de_solicitacao)
        #ID DA SOLICITAÇAO
        dados_do_formulario.append(identificador)
        #CPF/CNPJ
        dados_do_formulario.append(
            driver.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div/div[1]/div[1]/div/div[1]/div/div/div/input"
            ).get_attribute("value"))
        #RAZÃO SOCIAL
        dados_do_formulario.append("")
        #FORMA DE PAGAMENTO
        dados_do_formulario.append("Tranferência Bancária")
        #BANCO
        dados_do_formulario.append(
            driver.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div/div[1]/div[1]/div/div[2]/div/div/div/input"
            ).get_attribute("value"))
        #AGENCIA
        dados_do_formulario.append(
            driver.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div/div[1]/div[2]/div/div[1]/div/div/div/input"
            ).get_attribute("value"))
        #CONTA
        dados_do_formulario.append(
            driver.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div/div[1]/div[2]/div/div[2]/div/div/div/input"
            ).get_attribute("value"))
        #TIPO DE CONTA
        dados_do_formulario.append(
            driver.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div/div[1]/div[2]/div/div[3]/div/div/div/input"
            ).get_attribute("value"))
        #NATUREZA DA CONTA
        dados_do_formulario.append("")
        #VALOR
        valor = driver.find_element_by_xpath(
            "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div/div[2]/div[1]/div/div[1]/div/div/div/input"
        ).get_attribute("value")
        dados_do_formulario.append(valor)
        #VALOR PAGO
        dados_do_formulario.append("0")
        #DATA SOLICITADA PARA PAGAMENTO
        dados_do_formulario.append("")
        #DATA DA SOLICITAÇÃO
        dados_do_formulario.append("")
        #DATA DE PAGAMENTO
        dados_do_formulario.append(
            driver.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div/div[2]/div[1]/div/div[2]/div/div/div/input"
            ).get_attribute("value"))

        valor_da_conta = valor.replace(".", "")
        valor_da_conta = valor_da_conta.replace("R$", "")
        valor_da_conta = valor_da_conta.replace(",", ".")
        valor_da_conta = float(valor_da_conta)

        if dados_do_formulario[5] == "" or dados_do_formulario[
                6] == "" or dados_do_formulario[7] == "" or dados_do_formulario[
                    8] == "" or dados_do_formulario[
                        9] == "" or valor_da_conta == 0:  # and  banco != ""
            #Comentario Robo
            dados_do_formulario.append(
                "Dados bancários incompletos ou solicitação está com valor zerado."
            )
            # tramitar = 1
        else:
            #Comentario Robo
            dados_do_formulario.append("")
        #Ajuste
        dados_do_formulario.append("")

        #CRIAR A PASTA DO PAGAMENTO QUE ACABOU DE SER PROCESSADO

        nome_da_pasta = (f"SA ID {identificador}")

        sleep(2)
        gerenciadorPastas.criarPastasFilhas("Solicitação de Aporte",
                                            nome_da_pasta)

        sleep(3)

        #BAIXAR NOTA FISCAL
        funcoes.encontrar_elemento_por_repeticao(
            driver,
            "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[2]",
            "click", "clicar em notas", 3)
        tbody2 = driver.find_element_by_xpath(
            "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[3]/div/div/div/div[1]/div[3]/table/tbody"
        )
        #pega todas as linhas que contem nf
        rows2 = tbody2.find_elements_by_tag_name("a")

        #Baixando Nfs
        try:
            for row in rows2:
                maximo_tentativas = 0
                while maximo_tentativas < 40:
                    if len(rows2) > 0:
                        row.click()
                        sleep(3)
                        maximo_tentativas = 40
                    else:
                        maximo_tentativas += 1
        except:
            comentario_nota_fiscal = (f"Não foi possível baixar a nota fiscal")
            print(comentario_nota_fiscal)
            dados_do_formulario[15] = comentario_nota_fiscal

        sleep(5)
        #IMPRIMINDO
        try:
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[1]",
                "click", "voltar", 10)
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[4]/div[2]/div/div/button",
                "click", "imprimir", 3)
            driver.switch_to_frame(0)
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div/div/div/div[2]/div/table/tbody/tr/td[1]/table/tbody/tr/td[3]/div/table/tbody/tr",
                "click", "filtro", 2)
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div/div/div/div[16]/div/div[1]/table/tbody/tr/td[2]",
                "click", "baixar capa", 2)
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div/div/div/div[20]/div[4]/table/tbody/tr/td[1]/div/table/tbody/tr/td",
                "click", "baixar capa", 2)
            driver.switch_to.default_content()
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div[5]/div[3]/div/div[1]/h2/div/div[2]/button",
                "click", "baixar capa", 2)
            print("passou")
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div[4]/div[3]/div/div/div/div[1]/div/div[3]/button",
                "click", "baixar capa", 2)
        except:
            dados_do_formulario[15] += "A capa nao foi baixada"

        #MOVENDO ARQUIVOS
        print("mover arquivos")
        funcoes.validar_download(caminho_da_pasta, data_em_texto,
                                 nome_da_pasta)
        sleep(3)

        #TRAMITAÇÃO
        funcoes.encontrar_elemento_por_repeticao(
            driver,
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[3]",
            "click", "tramitar", 2)
        funcoes.encontrar_elemento_por_repeticao(
            driver, "/html/body/div[4]/div[3]/div/div[2]/ul/div", "click",
            "PROCESSAR", 2)
        #status
        dados_do_formulario.append("Processada")

        #DATA DE EXECUÇÃO ROBO
        dados_do_formulario.append(date.today().strftime("%d/%m/%Y"))

        preencher_solicitacao_na_planilha(dados_do_formulario,
                                          tipo_de_solicitacao)
        sleep(5)

    sleep(1.5)
    print("Vai começar a contar")
    sleep(5)

    # 2° PARTE : ESPERANDO DO driver PRA TRAMITAR PRA PAGO
    lista_de_tramitacao = ler_dados_da_planilha(tipo_de_solicitacao)
    if len(lista_de_tramitacao) > 0:
        #Filtro
        funcoes.encontrar_elemento_por_repeticao(
            driver,
            "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div/div/div",
            "click", "filtro", 4)
        funcoes.encontrar_elemento_por_repeticao(
            driver, "/html/body/div[4]/div[3]/ul/li[3]", "click", "filtro", 2)
        #Para cada solicitaçao que precisa ser paga
        for solicitacao in lista_de_tramitacao:
            print(lista_de_tramitacao)
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[3]",
                "click", "filtro", 2)
            funcoes.encontrar_elemento_por_repeticao(
                driver, "/html/body/div[5]/div[3]/div/div[1]/div[1]/button",
                "click", "filtro", 0.2)
            #Filtrar o ID
            driver.find_element_by_xpath(
                "/html/body/div[4]/div[3]/div/ul/li[1]/div/div/div/div/input"
            ).send_keys(str(solicitacao[0]))
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div[4]/div[3]/div/ul/li[4]/div/div/div/div",
                "click", "filtro", 0.3)
            funcoes.encontrar_elemento_por_repeticao(
                driver, "/html/body/div[5]/div[3]/ul/li[4]", "click",
                "processadoss", 0.4)
            funcoes.encontrar_elemento_por_repeticao(
                driver, "/html/body/div[5]/div[1]", "click", "clicar fora",
                0.5)
            funcoes.encontrar_elemento_por_repeticao(
                driver, "/html/body/div[4]/div[3]/div/div[2]/button", "click",
                "aplicar", 0.3)
            sleep(3)
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr/td[2]/span/span[1]/input",
                "click", "LINHA", 2)
            funcoes.encontrar_elemento_por_repeticao(
                driver,
                "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[3]",
                "click", "LINHA", 2)
            sleep(2)
            #Pago ou parcialmente pago
            if str(solicitacao[3]) == "PAGO":
                funcoes.encontrar_elemento_por_repeticao(
                    driver, "/html/body/div[4]/div[3]/div/div[2]/ul/div[1]",
                    "click", "SPA", 2)
            elif str(solicitacao[3]) == "PARCIALMENTE PAGO":
                funcoes.encontrar_elemento_por_repeticao(
                    driver, "/html/body/div[4]/div[3]/div/div[2]/ul/div[2]",
                    "click", "SPA", 2)
            sleep(2)

            atualizar_status_na_planilha(int(solicitacao[4]))
    print("FIMMMMMMMMMMMMMMM AVULSO")
Exemplo n.º 4
0
def adiantamento(driver):
    #verificar se tem downloads antigos e apagar
    remover_arquivos_da_raiz(recuperar_diretorio_usuario() + "\\tpfe.com.br\\SGP e SGC - RPA\\")
    #data atual formatada
    data_em_texto = date.today().strftime("%d.%m.%Y")
    #caminho da pasta macro(pasta do dia)
    caminho_da_pasta = recuperar_diretorio_usuario() + "\\tpfe.com.br\\SGP e SGC - RPA\\Adiantamento\\" 
    #criar pasta do dia dentro de pagamento avulso
    criarPastaData(caminho_da_pasta, data_em_texto)
    tipo_de_solicitacao = "SA"
    builder = ActionChains(driver)
    #driver.implicitly_wait(2)

    #ACESSANDO SOLICITAÇAO DE ADIANTAMENTO
    espera_explicita_de_elemento(driver,"/html/body/div[1]/div/div[2]/main/section/div/div/div/div/section/div/div[2]/div","encontrar","AD",2)
    driver.get("https://tpf2.madrix.app/runtime/44/list/184/Solicitação de Adiantamento")
    # driver.implicitly_wait(10)

    #FILTRANDO AS SOLICITAÇÕES APROVADAS PELO GERENTE
    encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div/div/div","click","Abrir filtro", 4)
    encontrar_elemento_por_repeticao(driver,"/html/body/div[4]/div[3]/ul/li[3]","click","aprovado",4)
    encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[3]","click","2-filtro", 4)
    encontrar_elemento_por_repeticao(driver,"/html/body/div[4]/div[3]/div/div[1]/div[1]/button","click","limpar filtro",4)
    encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/ul/li[3]/div/div/div/div", "click", "filtrar por",4)
    encontrar_elemento_por_repeticao(driver,"/html/body/div[5]/div[3]/ul/li[7]", "click", "2-aprovado", 4)
    encontrar_elemento_por_repeticao(driver,"/html/body/div[5]/div[1]", "click", "clique fora", 4)
    print(20*"=")
    encontrar_elemento_por_repeticao(driver,"/html/body/div[4]/div[3]/div/div[2]/button", "click", "fechando filtro", 4)
    
    #OBTER QUANTIDADE DE PAGAMENTOS
    sleep(5)
    # quantidade_de_requisicoes = int((driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/span[2]/div/p").get_attribute("innerText")).split(" ")[-1])
    
    #LAÇO PARA TRAMITAR TODOS AS SOLICITAÇÕES
    for linha in range(0): 
        print(linha)#voltar para antigo quantidades
        dados_do_formulario = [] 
        global identificador
        #armazenando o id de cada solicitaçao
        encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[4]/div", "link", "Encontrar ID", 3)
        sleep(2)
        identificador = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[4]/div").get_attribute("innerText")
        solicitante = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr/td[6]/div/div[2]").get_attribute("innerText")
        #ACESSANDO A SOLICITAÇAO
        #espera_explicita_de_elemento(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[2]/span/span[1]/input", "encontrar", "clicar na caixinha", 3).click()
        encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[2]/span/span[1]/input", "click", "clicar na caixinha", 3)
        sleep(3)
        #clicar no lápis de edição /html/body/div[4]/div[3]/div/div[3]/button[2]
        encontrar_elemento_por_repeticao(driver, "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[1]", "click", "click na linha", 0.3)
        #Acessando as informações presentes em 'Financeiro HTML'
        sleep(5)

      #  if linha == 0:
       #     encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[2]/div/div/div/div/div", "click", "escolher form", 4)
        #    filtro_click = builder.send_keys(Keys.ARROW_DOWN)
         #   filtro_click.perform()
          #  filtro_click = builder.send_keys(Keys.ARROW_DOWN)
           # filtro_click.perform()
            #filtro_click = builder.send_keys(Keys.SPACE)
            #filtro_click.perform()
            #try:
             #   encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[3]/button[2]", "click", "acessar form", 0.5)
            #except: 
             #   filtro_click = builder.send_keys(Keys.ARROW_DOWN)
              #  filtro_click.perform()
               # filtro_click = builder.send_keys(Keys.SPACE)
                #filtro_click.perform()
                #encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[3]/button[2]", "click", "acessar form", 0.5).click()
            #sleep(3)
            
    
        #Acessando as informações presentes em 'Financeiro HTML'
        encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[2]/div/div/div/div/div", "click", "escolher form", 4)
        filtro_click = builder.send_keys(Keys.DOWN)
        filtro_click = builder.send_keys(Keys.SPACE)
        filtro_click.perform()
        encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[3]/button[2]", "click", "acessar form", 4)
        sleep(3)
        #PEGAR TODAS AS INFORMAÇOES PARA ALIMENTAR A PLANILHA

        #AD
        dados_do_formulario.append(tipo_de_solicitacao)
        #ID DA SOLICITAÇAO
        dados_do_formulario.append(identificador)
        #CPF/CNPJ
        dados_do_formulario.append(driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[1]/div[2]/div/div/div/input").get_attribute("value"))
        #RAZAO SOCIAL
        dados_do_formulario.append("")
        #FORMA DE PAGAMENTO
        dados_do_formulario.append("Transferência Bancária")
        #BANCO 
        dados_do_formulario.append(driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div/input").get_attribute("value"))
        #AGENCIA
        dados_do_formulario.append(driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div[1]/div/div[2]/div/div/div/input").get_attribute("value"))
        #CONTA
        dados_do_formulario.append(driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div[2]/div/div[1]/div/div/div/input").get_attribute("value"))
        #TIPO DE CONTA 
        dados_do_formulario.append(driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[2]/div[2]/div/div[2]/div/div[2]/div/div/div/input").get_attribute("value"))
        #NATUREZA DA CONTA
        dados_do_formulario.append("")
        #VALOR
        valor = driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[4]/div[1]/div/div[1]/div/div/div/input").get_attribute("value")
        dados_do_formulario.append(valor)
        #VALOR PAGO
        dados_do_formulario.append("")
        #DATA SOLICITADA PARA PAGAMENTO
        dados_do_formulario.append("")
        #DATA DA SOLICITAÇÃO 
        dados_do_formulario.append(driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[4]/div[1]/div/div[2]/div/div/div/input").get_attribute("value"))
        #DATA DE PAGAMENTO 
        dados_do_formulario.append("")

        valor_da_conta = valor.replace(".","")
        valor_da_conta = valor_da_conta.replace("R$","")
        valor_da_conta = valor_da_conta.replace(",",".")
        valor_da_conta = float(valor_da_conta)

        if dados_do_formulario[5] == "" or  dados_do_formulario[6] == "" or  dados_do_formulario[7] == "" or  dados_do_formulario[8] == "" or valor_da_conta == 0:# and  banco != ""
            #Comentario Robo
            dados_do_formulario.append("Dados bancários incompletos ou solicitação está com valor zerado.")
        else:
            #Comentario Robo 
            dados_do_formulario.append("")
        #Ajuste
        dados_do_formulario.append("")
        
        ####PASSO QUE DEVE SER DADO APÓS O GERENTE ADICIONAR AS NOTAS####
        #clicar em "notas fiscais"
        encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[2]", "click", "clicar em notas", 3)
        tbody2 = driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[3]/div/div/div/div[1]/div[3]/table/tbody")
        # #pega todas as linhas que contem nf
        rows2 = tbody2.find_elements_by_tag_name("a") 

        #Baixando Nfs
        try:
            for row in rows2:
                maximo_tentativas = 0
                while maximo_tentativas < 40: 
                    if len(rows2) > 0:
                        row.click()
                        sleep(2)
                        maximo_tentativas = 40
                    else:
                        maximo_tentativas += 1
        except:
            comentario_nota_fiscal = (f"Não foi possível baixar a nota fiscal")     
            print(comentario_nota_fiscal)
            dados_do_formulario[15] = comentario_nota_fiscal 
 
        sleep(2)
        #IMPRIMINDO A CAPA
        encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[1]", "click", "VOLTAR", 5)
        encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[7]/div[2]/div/div/button", "click", "imprimir", 5)
        driver.switch_to_frame(0)
        encontrar_elemento_por_repeticao(driver,"/html/body/div/div/div/div[2]/div/table/tbody/tr/td[1]/table/tbody/tr/td[3]/div/table/tbody/tr","click","filtro-impressao",2) 
        encontrar_elemento_por_repeticao(driver, "/html/body/div/div/div/div[16]/div/div[1]/table/tbody/tr/td[2]", "click", "baixar capa", 2)
        encontrar_elemento_por_repeticao(driver, "/html/body/div/div/div/div[20]/div[4]/table/tbody/tr/td[1]/div/table/tbody/tr/td", "click", "baixar capa", 2)
        driver.switch_to.default_content()
        encontrar_elemento_por_repeticao(driver, "/html/body/div[7]/div[3]/div/div[1]/h2/div/div[2]/button", "click", "baixar capa", 2)
        print("passou")
        encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div/div/div[1]/div/div[3]/button", "click", "fechar", 2)

        #CRIANDO A PASTA
        solicitante1 = solicitante.replace("\\" , "")
        solicitante1 = solicitante1.replace("/", "")
        solicitante1 = solicitante1.replace(":", "")
        solicitante1 = solicitante1.replace("*", "")
        solicitante1 = solicitante1.replace("?", "")
        solicitante1 = solicitante1.replace('"', "")
        solicitante1 = solicitante1.replace("<", "")
        solicitante1 = solicitante1.replace(">", "")
        solicitante1 = solicitante1.replace("|", "")
        solicitante1 = solicitante1.replace(".", "")
        solicitante1 = solicitante1.replace(",", "")

        nome_da_pasta = (f"ID {identificador} {solicitante1}")
        print(nome_da_pasta)
        # #com a funçao do outro arquivo, criar a pasta da atual solicitação de acordo com o laço
        criarPastasFilhas("Adiantamento", nome_da_pasta)
      
        #tempo para salvar todas pastas
        sleep(3)
        # MOVENDO ARQUIVOS

        validar_download(caminho_da_pasta, data_em_texto, nome_da_pasta)
        sleep(3)
        #TRAMITAÇÃO DAS SOLICITAÇÕES
        encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[2]","click","tramitar",4)
        encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[2]/ul/div[1]", "click", "processar", 4)
        # #status robo
        dados_do_formulario.append("Processada")

        #DATA DE EXECUÇÃO ROBO
        dados_do_formulario.append(date.today().strftime("%d/%m/%Y"))
        
        preencher_solicitacao_na_planilha(dados_do_formulario, tipo_de_solicitacao)
        sleep(5)
        driver.get("https://tpf2.madrix.app/runtime/44/list/184/Solicitação de Adiantamento")
        sleep(2)

        

   #2° PARTE: ESPERANDO DO FINANCEIRO PRA TRAMITAR PRA PAGO 
    lista_de_tramitacao = ler_dados_da_planilha(tipo_de_solicitacao)
    if len(lista_de_tramitacao) > 0:
        encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div/div/div","click","filtro", 4)
        encontrar_elemento_por_repeticao(driver,"/html/body/div[4]/div[3]/ul/li[11]","click","processado",2)
        for solicitacao in lista_de_tramitacao:
            print(lista_de_tramitacao[0] + "" + solicitacao)
            encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[3]","click","2-filtro", 2)
            encontrar_elemento_por_repeticao(driver,"/html/body/div[4]/div[3]/div/div[1]/div[1]/button","click","limpar",3)
            sleep(4)
            driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/ul/li[1]/div/div/div/div/input").send_keys(str(solicitacao[0]))
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/ul/li[3]/div/div/div/div", "click", "filtrar", 3)
            encontrar_elemento_por_repeticao(driver, "/html/body/div[5]/div[3]/ul/li[9]", "click", "processados", 0.4)
            encontrar_elemento_por_repeticao(driver, "/html/body/div[5]/div[1]", "click", "clique fora", 0.4 )
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[2]/button", "click", "fechar filtro", 4)
            sleep(5)
            encontrar_elemento_por_repeticao(driver, "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr/td[2]/span/span[1]/input", "click", "click na caixinha", 4 )
            encontrar_elemento_por_repeticao(driver, "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[2]", "click", "tramitar", 4 )
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[2]/ul/div", "click", "pagar", 4)
            atualizar_status_na_planilha(int(solicitacao[4]))    
    
    #3° PARTE - TRAMITAR PARA BAIXADAS
    lista_para_baixadas = dados_para_tramitar_para_baixadas(tipo_de_solicitacao)
    if len(lista_para_baixadas) > 0:
        encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div/div/div","click","filtro", 4)
        encontrar_elemento_por_repeticao(driver,"/html/body/div[4]/div[3]/ul/li[10]","click","prestaçao",2)
        for solicitacao in lista_para_baixadas:
            print(solicitacao)
            encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/button[3]","click","2-filtro", 2)
            encontrar_elemento_por_repeticao(driver,"/html/body/div[4]/div[3]/div/div[1]/div[1]/button","click","limpar",3)
            sleep(4)
            driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/ul/li[1]/div/div/div/div/input").send_keys(str(solicitacao[0]))
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/ul/li[3]/div/div/div/div", "click", "filtrar", 3)
            encontrar_elemento_por_repeticao(driver, "/html/body/div[5]/div[3]/ul/li[6]", "click", "prestacao", 0.4)
            encontrar_elemento_por_repeticao(driver, "/html/body/div[5]/div[1]", "click", "clique fora", 0.4 )
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[2]/button", "click", "fechar filtro", 4)
            sleep(5)
            encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[3]/div/div/div/table/tbody/tr[1]/td[2]/span/span[1]/input", "click", "clicar na caixinha", 3)
            sleep(3)
            #clicar no lápis de edição /html/body/div[4]/div[3]/div/div[3]/button[2]
            encontrar_elemento_por_repeticao(driver, "/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[1]", "click", "click na linha", 0.3)
            #Acessando as informações presentes em 'Financeiro HTML'
            sleep(5)
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[2]/div/div/div/div/div", "click", "escolher form", 4)
            filtro_click = builder.send_keys(Keys.DOWN)
            filtro_click = builder.send_keys(Keys.SPACE)
            filtro_click.perform()
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[3]/button[2]", "click", "acessar form", 4)
            sleep(3)
             #clicar em "notas fiscais"
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[2]", "click", "clicar em notas", 3)
            tbody2 = driver.find_element_by_xpath("/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[3]/div/div/div/div[1]/div[3]/table/tbody")
            # #pega todas as linhas que contem nf
            rows2 = tbody2.find_elements_by_tag_name("a") 

            #Baixando Nfs
            try:
                for row in rows2:
                    maximo_tentativas = 0
                    while maximo_tentativas < 40: 
                        if len(rows2) > 0:
                            row.click()
                            sleep(2)
                            maximo_tentativas = 40
                        else:
                            maximo_tentativas += 1
            except:
                comentario_nota_fiscal = (f"Não foi possível baixar a nota fiscal")     
                print(comentario_nota_fiscal)
                dados_do_formulario[15] = comentario_nota_fiscal 
    
            sleep(2)
            #IMPRIMINDO A CAPA
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[1]/div/div[2]/div/button[1]", "click", "VOLTAR", 5)
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div/div/div[3]/form/fieldset/div/div/div[2]/div/div[7]/div[2]/div/div/button", "click", "imprimir", 5)
            driver.switch_to_frame(0)
            encontrar_elemento_por_repeticao(driver,"/html/body/div/div/div/div[2]/div/table/tbody/tr/td[1]/table/tbody/tr/td[3]/div/table/tbody/tr","click","filtro-impressao",2) 
            encontrar_elemento_por_repeticao(driver, "/html/body/div/div/div/div[16]/div/div[1]/table/tbody/tr/td[2]", "click", "baixar capa", 2)
            encontrar_elemento_por_repeticao(driver, "/html/body/div/div/div/div[20]/div[4]/table/tbody/tr/td[1]/div/table/tbody/tr/td", "click", "baixar capa", 2)
            driver.switch_to.default_content()
            encontrar_elemento_por_repeticao(driver, "/html/body/div[7]/div[3]/div/div[1]/h2/div/div[2]/button", "click", "baixar capa", 2)
            print("passou")
            encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div/div/div[1]/div/div[3]/button", "click", "fechar", 2)
            solicitante = str(solicitacao[1])
            #CRIANDO A PASTA
            if solicitante != "" or solicitante != "None":
                solicitante1 = solicitante.replace("\\" , "")
                solicitante1 = solicitante1.replace("/", "")
                solicitante1 = solicitante1.replace(":", "")
                solicitante1 = solicitante1.replace("*", "")
                solicitante1 = solicitante1.replace("?", "")
                solicitante1 = solicitante1.replace('"', "")
                solicitante1 = solicitante1.replace("<", "")
                solicitante1 = solicitante1.replace(">", "")
                solicitante1 = solicitante1.replace("|", "")
                solicitante1 = solicitante1.replace(".", "")
                solicitante1 = solicitante1.replace(",", "")

                nome_da_pasta = (f"ID {solicitacao[0]} {solicitante1}")
            else:
                nome_da_pasta = (f"ID {solicitacao[0]} {solicitante}")   
            print(nome_da_pasta)
            # #com a funçao do outro arquivo, criar a pasta da atual solicitação de acordo com o laço
            criarPastasFilhas("Adiantamento", nome_da_pasta)
        
            #tempo para salvar todas pastas
            sleep(3)
            # MOVENDO ARQUIVOS

            validar_download(caminho_da_pasta, data_em_texto, nome_da_pasta)
            sleep(3)

            #TRAMITAÇÃO DAS SOLICITAÇÕES
            encontrar_elemento_por_repeticao(driver,"/html/body/div[1]/div/div[2]/div/main/section/div/div/div/div[1]/div/div[1]/div[3]/div/button[2]","click","tramitar",4)
            # encontrar_elemento_por_repeticao(driver, "/html/body/div[4]/div[3]/div/div[2]/ul/div[1]", "click", "BAIXADOS", 4)
           
            atualizar_status_na_planilha(int(solicitacao[4]))
            sleep(5)
            driver.get("https://tpf2.madrix.app/runtime/44/list/184/Solicitação de Adiantamento")
            sleep(2)






    print("FIMMMMMMMMMMMMMMM ADIANTAMENTO")
    # driver.close()