def tag_wait(self, driver, tag):
     delay = 10
     try:
         my_elem = WebDriverWait(driver, delay).until(
             expected_conditions.presence_of_element_located(
                 (By.TAG_NAME, tag)))
         print(f"\033[1;31m{tag.upper()}\033[m is ready!")
     except TimeoutException:
         input("Loading took too much time!")
    def change_ecac_client(self, CNPJ):
        """:return: vai até ao site de declaração do ECAC."""
        driver = self.driver

        def elem_with_text(elem, searched):
            _tag = driver.find_element_by_xpath(
                f"//{elem}[contains(text(),'{searched.rstrip()}')]")
            return _tag

        self.tags_wait('html', 'span')
        sleep(5)
        # nextcl = elem_with_text("span", "Alterar perfil de acesso")
        # nextcl.click()
        btn_perfil = WebDriverWait(self.driver, 20).until(
            expected_conditions.presence_of_element_located(
                (By.ID, 'btnPerfil')))
        self.click_ac_elementors(btn_perfil)
        # altera perfil e manda o cnpj
        self.tags_wait('label')

        cnpj = elem_with_text("label", "Procurador de pessoa jurídica - CNPJ")
        cnpj.click()
        sleep(.5)
        self.send_keys_anywhere(CNPJ)
        sleep(1)
        self.send_keys_anywhere(Keys.TAB)
        self.send_keys_anywhere(Keys.ENTER)
        sleep(1)
        # driver.find_element_by_class_name('access-button').click()
        # sleep(10)
        antigo = driver.current_url
        """I GOT IT"""
        # switch_to.frame...

        sleep(5)
        driver.get(
            'https://sinac.cav.receita.fazenda.gov.br/simplesnacional/aplicacoes/atspo/pgdasd2018.app/'
        )
        sleep(2.5)
        driver.get(antigo)
        driver.get(
            'https://cav.receita.fazenda.gov.br/ecac/Aplicacao.aspx?id=10009&origem=menu'
        )
        driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
        sleep(2)
        while True:
            try:
                driver.find_element_by_xpath(
                    '//span[@class="glyphicon glyphicon-off"]').click()
                driver.refresh()
                break
            except ElementClickInterceptedException:
                print(
                    '---> PRESSIONE ESC PARA CONTINUAR <--- glyphicon-off intercepted'
                )
                press_key_b4('esc')
            except NoSuchElementException:
                print(
                    '---> PRESSIONE ESC PARA CONTINUAR NoSuchElement glyphicon-off'
                )
                press_key_b4('esc')
                driver.get(
                    'https://sinac.cav.receita.fazenda.gov.br/simplesnacional/aplicacoes/atspo/pgdasd2018.app/'
                )
                driver.implicitly_wait(5)
                break
        sleep(3)
        driver.switch_to.default_content()
        """I GOT IT"""
        # chegou em todo mundo...

        driver.get(
            'https://sinac.cav.receita.fazenda.gov.br/simplesnacional/aplicacoes/atspo/pgdasd2018.app/'
        )
        driver.implicitly_wait(5)
    def __init__(self, compt=None):
        """
        :param compt: from GUI

        # remember past_only arg from self.get_atual_competencia
        """
        import pandas as pd
        from default.webdriver_utilities.pre_drivers import pgdas_driver
        # O vencimento DAS(seja pra qual for a compt) está certo, haja vista que se trata do mes atual

        sh_names = ['DEFIS']
        sh_name = sh_names[0]

        if compt is None:
            compt = super().get_compt_only()

        excel_file_name = super().excel_file_path()

        COMPT = compt = f"DEFIS_{self.y()}"
        # transcrevendo compt para que não seja 02/2021

        # excel_file_name = '/'.join(excel_file_name.split('/')[:-1])
        excel_file_name = os.path.dirname(excel_file_name)
        excel_file_name += f'/DEFIS-anual.xlsx'
        pdExcelFile = pd.ExcelFile(excel_file_name)

        msh = pdExcelFile.parse(sheet_name=str(sh_name))
        col_str_dic = {column: str for column in list(msh)}

        msh = pdExcelFile.parse(sheet_name=str(sh_name), dtype=col_str_dic)
        READ = self.le_excel_each_one(msh)
        self.after_READ = self.readnew_lista(READ, False)

        msh_socio = pdExcelFile.parse(sheet_name='Socios')
        col_str_dic = {column: str for column in list(msh_socio)}
        msh_socio = pdExcelFile.parse(sheet_name='Socios', dtype=col_str_dic)
        self.after_socio = self.readnew_lista(
            self.le_excel_each_one(msh_socio))

        SK = list(self.after_socio.keys())
        #  ACHEI FINALMENTE O JEITO RESPONSIVO DE DECLARAR PRA NÃO FICAR TENDO QUE ESCREVER POR EXTENSO

        cont_soc = 0
        for i, CNPJ in enumerate(self.after_READ['CNPJ']):
            _cliente = self.empresa_now = self.after_READ['Razão Social'][i]
            _ja_declared = self.after_READ['Declarado'][i].upper().strip()
            _cod_sim = self.after_READ['Código Simples'][i]
            _cpf = self.after_READ['CPF'][i]
            _cert_or_login = self.after_READ['CERTORLOGIN'][i]

            # Defis exclusivos
            _dirf = self.after_READ['DIRF'][i]
            # +2 Pois começa da linha 2, logo o excel está reconhendo isso como index
            while int(self.after_socio[SK[-4]][cont_soc]) - 2 != i:
                cont_soc += 1
            __ate_soc = self.after_socio[SK[-3]][cont_soc]
            __ate_soc = int(__ate_soc) + cont_soc

            self.socios_now__cnpj = self.after_socio[SK[0]][cont_soc:__ate_soc]
            self.socios_now__cpf = self.after_socio[SK[1]][cont_soc:__ate_soc]
            self.socios_now__nome = self.after_socio[SK[2]][cont_soc:__ate_soc]
            self.socios_now__cota = self.after_socio[SK[3]][cont_soc:__ate_soc]
            self.socios_now__tipo = self.after_socio[SK[5]][cont_soc:__ate_soc]

            self.client_path = self.files_pathit(
                _cliente,
                COMPT,
            )
            if _ja_declared not in ['S', 'OK', 'FORA']:
                print('-' * 60)
                # print(f'CNPJ: {CNPJ}, {CNPJ.strip()==self.socios_now__cnpj[0]}')
                self.the_print()

                __client_path = self.client_path
                self.driver = pgdas_driver(__client_path)
                now_process = subprocess.Popen(f'explorer {__client_path}')
                driver = self.driver
                super().__init__(driver)

                if _cert_or_login == 'certificado':
                    self.loga_cert()
                    # loga ECAC, Insere CNPJ
                    self.change_ecac_client(CNPJ)

                    self.current_url = driver.current_url
                    self.opta_script() if self.m() == 12 else None

                else:
                    self.loga_simples(CNPJ, _cpf, _cod_sim, _cliente)
                    self.current_url = driver.current_url
                    self.opta_script() if self.m() == 12 else None

                driver.get(
                    'https://www8.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATSPO/defis.app/entrada.aspx'
                )
                while True:
                    try:
                        WebDriverWait(self.driver, 10).until(
                            expected_conditions.presence_of_element_located(
                                (By.TAG_NAME, 'input')))
                        my_radios_bt = driver.find_elements_by_name(
                            'ctl00$conteudo$AnoC')
                        my_radios_bt[-2].click()
                        driver.find_element_by_id(
                            'ctl00_conteudo_lnkContinuar').click()
                        break
                    except TimeoutException:
                        driver.get(
                            'https://sinac.cav.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATSPO/defis.app/entrada.aspx'
                        )
                (print('sleeping'), sleep(5))
                self.send_keys_anywhere(Keys.TAB, 2)
                self.send_keys_anywhere(Keys.ENTER, 1)
                self.contains_text(str(self.y() - 1)).click()
                self.contains_text('Continuar').click()
                driver.implicitly_wait(10)
                self.send_keys_anywhere(Keys.TAB, 9)
                self.send_keys_anywhere(Keys.ENTER, 1)
                self.send_keys_anywhere(Keys.TAB, 2)
                self.send_keys_anywhere(Keys.ENTER, 1)
                WebDriverWait(self.driver, 5)
                try:
                    self.send_keys_anywhere(Keys.TAB, 1)
                    self.send_keys_anywhere(Keys.ENTER, 1)
                except UnexpectedAlertPresentException:
                    pass
                else:
                    # se 3 => De toda MP
                    self.send_keys_anywhere(Keys.TAB, 2)
                    self.send_keys_anywhere(Keys.ENTER)

                    self.send_keys_anywhere(Keys.TAB, 1)
                    # Informações econômicas e fiscais do estabelecimento

                    ac = ActionChains(self.driver)
                    for sdc in range(13):
                        ac.send_keys('0')
                        ac.send_keys(Keys.TAB)
                    ac.perform()
                    self.send_keys_anywhere(Keys.TAB, 11, pause=.1)

                    self.send_keys_anywhere(Keys.RIGHT)
                    self.send_keys_anywhere(Keys.TAB)
                    self.send_keys_anywhere(Keys.RIGHT)

                    self.send_keys_anywhere(Keys.TAB, 15, pause=.001)
                    self.send_keys_anywhere(Keys.ENTER)

                    # Chega até os campos padrão

                print('\033[1;31m DIGITE F8 p/ prosseguir \033[m')
                which_one = press_key_b4('f8')
                now_process.kill()
            print('-' * 30)
            print(f'already declared {_cliente}')
            print('-' * 30)
Example #4
0
    def __init__(self):
        from time import sleep

        front_compt = super().get_compt_only()
        fname = excel_file_name = super().excel_file_path()

        print('teste ginfess')
        json_file = self.load_json(fname)
        # input(len(after_READ['CNPJ']))
        print('-='*30)
        print(f'{"Ginfess Download":^30}')
        # print(json_file)
        print('-='*30)
        for eid in json_file.keys():
            print('~'*30)
            print(eid)
            print('~' * 30)
            # print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'*10)
            # print(list_with_dict)
            list_with_dic = json_file[eid]

            values = [v.values() for v in list_with_dic[:]]
            # padrão
            _cliente, _cnpj, _cpf, _cod_simples, _ja_declared = self.any_to_str(*values[:5])
            print(_cliente, _cnpj, _cpf, _cod_simples, _ja_declared)
            _ginfess_cod = ''.join(values[-6])
            _city = ''.join(values[-4])
            print(_ginfess_cod, _city)
            # mesma coisa de self.any_to_str, só que ele aceita args desempacotados
            client_path = self.files_pathit(_cliente, front_compt)
            self.client_path = client_path

            # Checa se já existe certificado
            if _ginfess_cod.lower() == 'não há':
                # removi o ja_imported
                print(f'\033[1;31m o cliente {_cliente} não possui notas\n...(muito bom) O certificado anula o _ja_imported...\033[m')
            elif self.check_done(client_path, '.png', startswith='GINFESS'):
                # Checka o certificado ginfess, somente

                # if city in 'ABC':
                self.driver = ginfess_driver(self.client_path)
                super().__init__(self.driver)
                driver = self.driver

                id_url = self.id_url(_city)
                try:
                    self.driver.get(id_url)
                except InvalidArgumentException:
                    if int(eid)-1 == len(json_file.keys()):
                        print('FIM')
                        break
                #for
                if _city in ['A', 'B', 'C']:
                    # links das cidades

                    # driver.maximize_window()
                    # #######################################################
                    self.ABC_ginfess(_cnpj, _ginfess_cod, _city)

                    # #######################################################

                    try:
                        # Find existent tags
                        driver.implicitly_wait(5)
                        self.tags_wait('table', 'tbody', 'tr', 'td')

                        print('printscreen aqui')

                        self.download(_city)
                        driver.implicitly_wait(5)
                        self.cexcel_from_html_above_v1(_cliente, self.ginfess_table_valores_html_code())

                    except IndexError:
                        print('~' * 30)
                        print('não emitiu nenhuma nota'.upper())
                        print('~' * 30)

                    driver.save_screenshot(self.certif_feito(self.client_path, add='GINFESS'))
                    # coloquei tudo no dele

                elif _city.upper() == 'TREM':
                    driver.implicitly_wait(5)


                    zero_um = _ginfess_cod.split('//')
                    # ginfess login//senha
                    self.tags_wait('html')
                    self.tags_wait('body')
                    while True:
                        driver.implicitly_wait(5)

                        ccm = driver.find_element_by_id('ccm')
                        senha = driver.find_element_by_id('senha')
                        confirma = driver.find_element_by_id('confirma')
                        ccm.send_keys(zero_um[0])

                        for el in ccm, senha, confirma:
                            el.clear()
                        ccm.send_keys(zero_um[0])
                        senha.send_keys(zero_um[1])
                        trem_cod = self.captcha_hacking()
                        confirma.send_keys(trem_cod)
                        # driver.find_element_by_id('btnOk').click()
                        if 'login.php' in driver.current_url:
                            driver.refresh()
                            driver.implicitly_wait(6)
                        else:
                            break

                    print('break')
                    driver.implicitly_wait(10)
                    driver.execute_script("""function abre_arquivo(onde){
                    var iframe = document.getElementById("main");
                    iframe.src = onde;
                    }
                    """)

                    driver.execute_script("abre_arquivo('dmm/_menuPeriodo.php');")

                    driver.implicitly_wait(5)

                    # self.tag_with_text('td', 'Movimento ').click()

                    WebDriverWait(self.driver, 10).until(expected_conditions.presence_of_element_located((By.ID, 'main')))

                    iframe = driver.find_element_by_id('main')
                    driver.switch_to_frame(iframe)
                    driver.find_element_by_name('btnAlterar').click()
                    driver.implicitly_wait(5)

                    # handelling select
                    front_compt = front_compt
                    mes, ano = front_compt.split('-')

                    driver.find_element_by_name('ano').clear()
                    driver.find_element_by_name('ano').send_keys(ano)
                    mes = self.nome_mes(int(mes))

                    driver.find_element_by_xpath(f"//select[@name='mes']/option[text()='{mes}']").click()
                    # driver.find_element_by_name('ano').send_keys(ano)

                    driver.implicitly_wait(5)
                    driver.find_element_by_id('btnOk').click()

                    driver.implicitly_wait(10)

                    # iframe = driver.find_element_by_id('iframe')
                    # driver.switch_to_frame(iframe)

                    self.tag_with_text('td', 'Encerramento').click()
                    # driver.switch_to_alert().accept()

                    # driver.get('../fechamento/prestado.php')
                    driver.find_element_by_xpath('//a[contains(@href,"../fechamento/prestado.php")]').click()
                    driver.implicitly_wait(10)
                    try:
                        driver.find_element_by_id('btnSalvar').click()
                        driver.implicitly_wait(5)
                        driver.switch_to_alert().accept()
                        driver.implicitly_wait(5)
                        # driver.back()
                    except (NoSuchElementException, NoAlertPresentException):
                        print('Já encerrado')
                    finally:
                        driver.implicitly_wait(5)
                        driver.back()
                        driver.back()
                        driver.execute_script("""function abre_arquivo(onde){
                        var iframe = document.getElementById("main");
                        iframe.src = onde;
                        }
                        """)
                        driver.execute_script("abre_arquivo('dmm/_menuPeriodo.php');")
                        iframe = driver.find_element_by_id('main')
                        driver.switch_to_frame(iframe)
                        driver.find_element_by_name('btnAlterar').click()
                        driver.find_element_by_name('btnOk').click()

                        # ############### validar driver.back()

                    url = '/'.join(driver.current_url.split('/')[:-1])
                    driver.get(f'{url}/nfe/nfe_historico_exportacao.php')
                    driver.implicitly_wait(3)
                    self.tags_wait('html')
                    self.tags_wait('body')

                    driver.implicitly_wait(2)
                    driver.find_element_by_id('todos').click()
                    driver.find_element_by_id('btnExportar').click()
                    driver.switch_to.alert.accept()
                    self.download(_city)

                    path_zip = client_path
                    print(f'path_zip-> {path_zip}')
                    self.unzipe_file(path_zip)

                    driver.switch_to_default_content()
                    driver.save_screenshot(self.certif_feito(self.client_path, add='GINFESS'))

                [(print(f'Sleeping before close {i}'), sleep(1)) for i in range(5, -1, -1)]

                driver.close()
Example #5
0
    def __init__(self):
        print('filespathteste')
        """
        """
        import pandas as pd
        from default.webdriver_utilities.pre_drivers import pgdas_driver

        # O vencimento DAS(seja pra qual for a compt) está certo, haja vista que se trata do mes atual

        sh_names = ['_Dívidas']
        compt = super().get_compt_only()
        excel_file_name = super().excel_file_path()

        for sh_name in sh_names:
            # agora eu posso fazer downloalds sem me preocupar tendo a variável path
            mshExcelFile = pd.ExcelFile(excel_file_name)

            msh = mshExcelFile.parse(sheet_name=str(sh_name))
            col_str_dic = {column: str for column in list(msh)}
            msh = mshExcelFile.parse(sheet_name=str(sh_name),
                                     dtype=col_str_dic)
            READ = self.le_excel_each_one(msh)
            self.after_READ = self.readnew_lista(READ, False)
            after_READ = self.after_READ

            for i, CNPJ in enumerate(after_READ['CNPJ']):
                CLIENTE = after_READ['Razão Social'][i]
                JA_DECLARED = after_READ['Declarado'][i]
                simples_or_ativa = after_READ['tipo'][i]

                if JA_DECLARED not in ['S', 'OK', 'FORA']:

                    self.client_path = self.files_pathit(
                        'Dívidas_Simples_' + CLIENTE, compt)
                    __client_path = self.client_path

                    self.driver = pgdas_driver(__client_path)
                    super().__init__(self.driver)
                    driver = self.driver

                    self.loga_cert()
                    self.change_ecac_client(CNPJ)

                    driver.find_element_by_id('linkHome').click()

                    if simples_or_ativa == 'simples nacional':
                        driver.find_element_by_link_text(
                            'Simples Nacional').click()
                        driver.find_element_by_link_text(
                            'Solicitar, acompanhar e emitir DAS de parcelamento'
                        ).click()

                        driver.implicitly_wait(10)

                        driver.switch_to.frame(
                            driver.find_element_by_id('frmApp'))

                        empel = driver.find_element_by_id(
                            'ctl00_contentPlaceH_linkButtonEmitirDAS')
                        empel.click()
                        WebDriverWait(self.driver, 20).until(
                            expected_conditions.presence_of_element_located(
                                (By.XPATH,
                                 '//input[@value="Continuar"]'))).click()

                        imprimires = WebDriverWait(self.driver, 20).until(
                            expected_conditions.
                            presence_of_all_elements_located(
                                (By.LINK_TEXT, 'Imprimir')))
                        for imprimir in imprimires:
                            imprimir.click()
                        # Imprimir
                        driver.switch_to.default_content()
                    elif simples_or_ativa == 'dívida ativa':

                        driver.find_element_by_link_text(
                            'Dívida Ativa da União').click()
                        driver.find_element_by_link_text(
                            'Débitos Inscritos em Dívida Ativa da União'
                        ).click()

                        driver.switch_to.window(driver.window_handles[1])
                        driver.implicitly_wait(10)

                        sispar_url = f"{'/'.join(driver.current_url.split('/')[:-1])}/sispar"
                        driver.get(sispar_url)
                        try:
                            WebDriverWait(self.driver, 10).until(
                                expected_conditions.
                                presence_of_element_located(
                                    (By.TAG_NAME, 'button')))
                            self.tag_with_text('button',
                                               'Acessar o SISPAR').click()
                        except NoSuchElementException:
                            WebDriverWait(self.driver, 10).until(
                                expected_conditions.
                                presence_of_element_located(
                                    (By.TAG_NAME, 'button')))
                            self.tag_with_text('button', 'Acessar').click()
                            # provavelmente uma mudança no sistema mas vou validar
                        # WebDriverWait(self.driver, 10).until(expected_conditions.new_window_is_opened(driver.window_handles))
                        WebDriverWait(self.driver, 10).until(
                            expected_conditions.number_of_windows_to_be(3))
                        driver.switch_to.window(driver.window_handles[2])

                        driver.execute_script(
                            "PrimeFaces.addSubmitParam('cabecalho',{'cabecalho:j_idt45':'cabecalho:j_idt45'}).submit('cabecalho');"
                        )
                        self.click_elements_by_tt('DEFERIDO E CONSOLIDADO')
                        sleep(1)
                        WebDriverWait(self.driver, 20).until(
                            expected_conditions.presence_of_element_located(
                                (By.ID, 'formListaDarf:idbtnDarf'))).click()

                        WebDriverWait(self.driver, 20).until(
                            expected_conditions.presence_of_element_located(
                                (By.TAG_NAME, 'table')))
                        compt_dividas_ativas = f'{self.m():02d}/{self.y()}'
                        print(compt_dividas_ativas)

                        sleep(7)

                        dris = driver.find_elements_by_css_selector(
                            ".colunaAlinhaCentro")

                        elemitidos = driver.find_elements_by_css_selector(
                            f"[title*='Já emitido']")
                        for el in elemitidos:
                            el.click()
                            sleep(.5)
                            self.send_keys_anywhere(Keys.ENTER)
                        print('breakou, baixou JÁ EMITIDOS')
                        self.contains_title('Não emitido').click()
                        sleep(.5)
                        self.send_keys_anywhere(Keys.ENTER)
                        self.click_ac_elementors(
                            WebDriverWait(self.driver, 20).until(
                                expected_conditions.
                                presence_of_element_located((
                                    By.ID,
                                    'formResumoParcelamentoDarf:dlgInformacoesEmissaoDarf'
                                ))))
                        self.send_keys_anywhere(Keys.TAB)
                        self.send_keys_anywhere(Keys.TAB)
                        self.send_keys_anywhere(Keys.ENTER)

                        self.click_ac_elementors(
                            WebDriverWait(self.driver, 20).until(
                                expected_conditions.
                                presence_of_element_located((
                                    By.ID,
                                    'formResumoParcelamentoDarf:emitirDarf'))))

                        WebDriverWait(self.driver, 5)

                    else:
                        print('ACABOU, break')
                        break