worker-automate-hub 0.4.346__tar.gz → 0.4.349__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +21 -56
  4. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/sped_fiscal.py +45 -28
  5. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/utils/util.py +79 -35
  6. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/README.md +0 -0
  7. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/__init__.py +0 -0
  8. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/api/__init__.py +0 -0
  9. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/api/ahead_service.py +0 -0
  10. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/api/client.py +0 -0
  11. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/api/helpers/__init__.py +0 -0
  12. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  13. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  14. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/cli.py +0 -0
  15. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/config/__init__.py +0 -0
  16. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/config/settings.py +0 -0
  17. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/config.py +0 -0
  18. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/core/so_manipulation.py +0 -0
  19. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/decorators/__init__.py +0 -0
  20. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/decorators/deprecation.py +0 -0
  21. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/decorators/rate_limit.py +0 -0
  22. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/decorators/repeat.py +0 -0
  23. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/decorators/retry.py +0 -0
  24. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/decorators/singleton.py +0 -0
  25. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/decorators/timeit.py +0 -0
  26. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/models/__init__.py +0 -0
  27. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/models/dao/__init__.py +0 -0
  28. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  29. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  30. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  31. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/models/dto/__init__.py +0 -0
  32. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  33. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  34. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  35. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/__init__.py +0 -0
  36. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  37. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  38. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  39. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  40. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  41. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  42. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  43. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  44. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  45. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  46. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  47. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
  48. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  49. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  50. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  51. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  52. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  53. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  54. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  55. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  56. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  57. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  58. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  59. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  60. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  61. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  62. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  63. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/task_definitions.py +0 -0
  64. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/tasks/task_executor.py +0 -0
  65. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/utils/__init__.py +0 -0
  66. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/utils/env.py +0 -0
  67. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  68. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/utils/logger.py +0 -0
  69. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/utils/toast.py +0 -0
  70. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/utils/updater.py +0 -0
  71. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  72. {worker_automate_hub-0.4.346 → worker_automate_hub-0.4.349}/worker_automate_hub/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: worker-automate-hub
3
- Version: 0.4.346
3
+ Version: 0.4.349
4
4
  Summary: Worker Automate HUB é uma aplicação para automatizar rotinas de RPA nos ambientes Argenta.
5
5
  Author: Joel Paim
6
6
  Requires-Python: >=3.12,<4.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "worker-automate-hub"
3
- version = "0.4.346"
3
+ version = "0.4.349"
4
4
  description = "Worker Automate HUB é uma aplicação para automatizar rotinas de RPA nos ambientes Argenta."
5
5
  authors = ["Joel Paim"]
6
6
  readme = "README.md"
@@ -320,7 +320,6 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
320
320
  # VERIFICANDO A EXISTENCIA DE ERRO
321
321
  erro_pop_up = await is_window_open("Erro")
322
322
  if erro_pop_up["IsOpened"] == True:
323
- console.print("Aveia")
324
323
  return RpaRetornoProcessoDTO(
325
324
  sucesso=False,
326
325
  retorno="Nota não encontrada no EMsys",
@@ -341,7 +340,6 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
341
340
  i += 1
342
341
 
343
342
  if i >= max_attempts:
344
- console.print("batata")
345
343
  return RpaRetornoProcessoDTO(
346
344
  sucesso=False,
347
345
  retorno="Nota não encontrada no EMsys",
@@ -350,67 +348,35 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
350
348
 
351
349
  await worker_sleep(10)
352
350
 
353
- app = Application().connect(
351
+ if nota.get("existeDespesa") != "Não":
352
+ app = Application().connect(
354
353
  title="Informações para importação da Nota Fiscal Eletrônica"
355
- )
356
- main_window = app["Informações para importação da Nota Fiscal Eletrônica"]
357
-
358
- # Configurar Tipo de Despesa com base no fornecedor e natureza
359
- fornecedor = nota.get("nomeFornecedor", "").lower()
360
- natureza = nota.get("natureza", "")
361
- despesa = None
362
-
363
- if "brs" in fornecedor and natureza == "33":
364
- despesa = "192"
365
- elif "ataca" in fornecedor and natureza == "32":
366
- despesa = "15"
367
- elif "hygia" in fornecedor and natureza == "34":
368
- despesa = "193"
369
-
370
- if despesa is not None:
354
+ )
355
+ main_window = app["Informações para importação da Nota Fiscal Eletrônica"]
371
356
 
372
- console.print(f"Selecionando Tipo de Despesa: {despesa}...\n")
373
- tipo_despesa_work = await tipo_despesa(despesa)
374
- if not tipo_despesa_work.sucesso:
375
- return RpaRetornoProcessoDTO(
376
- sucesso=False,
377
- retorno=f"Erro ao configurar Tipo de Despesa: {tipo_despesa_work.retorno}",
378
- status=RpaHistoricoStatusEnum.Falha,
379
- )
357
+ combo_box_natureza_operacao = main_window.child_window(
358
+ class_name="TDBIComboBox", found_index=0
359
+ )
360
+ combo_box_natureza_operacao.click()
361
+ await worker_sleep(4)
362
+ set_combobox("||List", "1152-ENTRADA P/TRANSFERENCIA MERCADORIA S/EST")
363
+ await worker_sleep(3)
380
364
 
381
- # Configurar ICMS (inserir código e zerar tributação)
382
- console.print("Configurando ICMS...\n")
383
- cod_icms_work = await cod_icms("33")
384
- if not cod_icms_work.sucesso:
385
- return RpaRetornoProcessoDTO(
386
- sucesso=False,
387
- retorno=f"Erro ao configurar Código ICMS: {cod_icms_work.retorno}",
388
- status=RpaHistoricoStatusEnum.Falha,
389
- )
365
+ pyautogui.hotkey("tab")
390
366
 
391
- checkbox_zerar_icms = await zerar_icms()
392
- if not checkbox_zerar_icms.sucesso:
367
+ despesa = "291"
368
+ tipo_despesa_work = await tipo_despesa(despesa)
369
+ if tipo_despesa_work.sucesso == True:
370
+ console.log(tipo_despesa_work.retorno, style="bold green")
371
+ else:
393
372
  return RpaRetornoProcessoDTO(
394
373
  sucesso=False,
395
- retorno=f"Erro ao zerar tributação ICMS: {checkbox_zerar_icms.retorno}",
374
+ retorno=tipo_despesa_work.retorno,
396
375
  status=RpaHistoricoStatusEnum.Falha,
397
376
  )
398
377
 
399
- # Selecionar "Manter Natureza de Operação selecionada"
400
- console.print("Selecionando 'Manter Natureza de Operação selecionada'...\n")
401
- try:
402
- checkbox_natureza = main_window.child_window(
403
- title="Manter Natureza de Operação selecionada", class_name="TDBICheckBox"
404
- )
405
- if not checkbox_natureza.get_toggle_state():
406
- checkbox_natureza.click()
407
- console.print("'Manter Natureza de Operação selecionada' foi marcado com sucesso.\n")
408
- except Exception as e:
409
- return RpaRetornoProcessoDTO(
410
- sucesso=False,
411
- retorno=f"Erro ao selecionar 'Manter Natureza de Operação selecionada': {e}",
412
- status=RpaHistoricoStatusEnum.Falha,
413
- )
378
+ pyautogui.click(709, 669)
379
+
414
380
 
415
381
  console.print("Clicando em OK... \n")
416
382
 
@@ -423,8 +389,7 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
423
389
  btn_ok = main_window.child_window(title="Ok")
424
390
  btn_ok.click()
425
391
  except:
426
- btn_ok = main_window.child_window(title="&Ok")
427
- btn_ok.click()
392
+ pyautogui.click(1093,728)
428
393
  except:
429
394
  console.print("Não foi possivel clicar no Botão OK... \n")
430
395
 
@@ -27,11 +27,11 @@ from worker_automate_hub.utils.logger import logger
27
27
  from worker_automate_hub.utils.util import (
28
28
  is_window_open,
29
29
  is_window_open_by_class,
30
- kill_process,
31
30
  login_emsys_fiscal,
32
31
  set_variable,
33
32
  type_text_into_field,
34
33
  worker_sleep,
34
+ kill_all_emsys,
35
35
  )
36
36
 
37
37
  pyautogui.PAUSE = 0.5
@@ -55,7 +55,7 @@ async def sped_fiscal(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
55
55
  set_variable("timeout_multiplicador", multiplicador_timeout)
56
56
 
57
57
  # Fecha a instancia do emsys - caso esteja aberta
58
- await kill_process("EMSysFiscal")
58
+ await kill_all_emsys()
59
59
 
60
60
  app = Application(backend="win32").start("C:\\Rezende\\EMSys3\\EMSysFiscal.exe")
61
61
  warnings.filterwarnings(
@@ -75,7 +75,7 @@ async def sped_fiscal(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
75
75
  status=RpaHistoricoStatusEnum.Falha,
76
76
  )
77
77
 
78
-
78
+
79
79
  return_login = await login_emsys_fiscal(config.conConfiguracao, app, task)
80
80
  if return_login.sucesso == True:
81
81
  type_text_into_field(
@@ -141,14 +141,14 @@ async def sped_fiscal(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
141
141
  console.print("Inserindo o período para geração do sped...\n")
142
142
  periodo = panel_TTabSheet.child_window(class_name="TDBIEditDate", found_index=2)
143
143
  periodo.set_edit_text(periodo_dt)
144
- await worker_sleep(1)
144
+ await worker_sleep(2)
145
145
 
146
146
  console.print("Selecionando a opção Gerar E115...\n")
147
147
  checkbox_gerar_e115 = main_window.child_window(class_name="TDBICheckBox", found_index=8)
148
148
  if not checkbox_gerar_e115.get_toggle_state() == 1:
149
149
  checkbox_gerar_e115.click()
150
150
  console.print("Selecionado com sucesso... \n")
151
- await worker_sleep(1)
151
+ await worker_sleep(2)
152
152
 
153
153
 
154
154
  console.print("Selecionando a opção Gerar valores zerados para notas de cfop 5929 e 6929...\n")
@@ -156,14 +156,14 @@ async def sped_fiscal(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
156
156
  if not checkbox_gerar_cfop.get_toggle_state() == 1:
157
157
  checkbox_gerar_cfop.click()
158
158
  console.print("Selecionado com sucesso... \n")
159
- await worker_sleep(1)
159
+ await worker_sleep(2)
160
160
 
161
161
  console.print("Selecionando a opção Gerar valores zerados para IPI...\n")
162
162
  checkbox_valores_ipi = main_window.child_window(class_name="TCheckBox", found_index=1)
163
163
  if not checkbox_valores_ipi.get_toggle_state() == 1:
164
164
  checkbox_valores_ipi.click()
165
165
  console.print("Selecionado com sucesso... \n")
166
- await worker_sleep(1)
166
+ await worker_sleep(2)
167
167
 
168
168
 
169
169
  console.print("Gerar valores zerados para Base ST e Icms ST...\n")
@@ -171,7 +171,7 @@ async def sped_fiscal(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
171
171
  if not checkbox_gerar_base_ct_icms_st.get_toggle_state() == 1:
172
172
  checkbox_gerar_base_ct_icms_st.click()
173
173
  console.print("Selecionado com sucesso... \n")
174
- await worker_sleep(1)
174
+ await worker_sleep(2)
175
175
 
176
176
  console.print("Todos os campos selecionados com sucesso, seguindo para geração do Sped Fiscal...\n")
177
177
  except Exception as e:
@@ -214,35 +214,45 @@ async def sped_fiscal(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
214
214
  retorno=f"Não foi possivel seguir pois não foi fois possivel interagir com o botão de gerar sped na tela Gerar Sped Fiscal,Error: {e}",
215
215
  status=RpaHistoricoStatusEnum.Falha,
216
216
  )
217
+
218
+ console.print(f"Verificando sem possui o pop-up de Registro de Entrada... \n")
219
+ registro_entrada_pop_up_class = await is_window_open_by_class("TMsgBox")
220
+ if registro_entrada_pop_up_class == True:
221
+ console.print(f"Pop-up existe, clicando em Sim... \n")
222
+ app = Application(backend="win32").connect(class_name="TMsgBox", timeout=30)
223
+ main_window = app["TMsgBox"]
224
+ btn_sim = main_window["Sim"]
225
+ if btn_sim.exists():
226
+ try:
227
+ btn_sim.click()
228
+ await worker_sleep(3)
229
+ console.print("O botão Sim, na tela de Registro de Entrada foi clicado com sucesso.", style="green")
230
+ except:
231
+ console.print("Falha ao clicar no botão Sim na tela de Registro de Entrada", style="red")
232
+ else:
233
+ return RpaRetornoProcessoDTO(
234
+ sucesso=False,
235
+ retorno=f"Erro: Botão Sim, na tela de Registro de Entrada",
236
+ status=RpaHistoricoStatusEnum.Falha,
237
+ )
217
238
 
218
239
 
219
240
  max_attempts = 75
220
241
  i = 0
221
242
  while i < max_attempts:
222
243
  aviso_gerando_sped_full_path = "assets\\entrada_notas\\gerando_sped_fiscal.png.png"
223
- sped_gerado_element = False
224
- sped_gerado_ui = False
225
244
  try:
226
245
  aviso_gerando_sped_full_path = pyautogui.locateCenterOnScreen(aviso_gerando_sped_full_path, confidence=0.6)
227
246
  if aviso_gerando_sped_full_path:
228
247
  console.print(f"Gerando o arquivo Sped Fiscal...\n")
248
+ i += 1
249
+ console.print(f"Gerando o arquivo Sped Fiscal, Tentativa {i}/{max_attempts}: Aguarde mais 120 segundos...\n")
250
+ await worker_sleep(120)
229
251
  else:
230
- sped_gerado_ui = True
252
+ break
231
253
  except:
232
254
  console.print(f"Tela de gerando sped não encontrada, verificando via elemento para dupla confirmação...\n")
233
- sped_gerado_ui = True
234
-
235
- aguardar_sped = await is_window_open_by_class("TFrmAguarde", "TFrmAguarde")
236
- if aguardar_sped["IsOpened"] == False:
237
- sped_gerado_element = True
238
-
239
- if sped_gerado_element and sped_gerado_ui:
240
- console.print("Confirmação dupla: Nenhum indicador de SPED em progresso encontrado. Saindo do loop...\n")
241
- break
242
- else:
243
- i += 1
244
- console.print(f"Gerando o arquivo Sped Fiscal, Tentativa {i}/{max_attempts}: Aguarde mais 120 segundos...\n")
245
- await worker_sleep(120)
255
+ break
246
256
 
247
257
 
248
258
  # Verificando se possui pop-up de Aviso
@@ -316,17 +326,24 @@ async def sped_fiscal(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
316
326
  # Verifica se a info 'Arquivo do SPED gerado com sucesso' está na tela
317
327
  await worker_sleep(6)
318
328
  try:
319
- max_attempts = 60
329
+ max_attempts = 30
320
330
  i = 0
321
331
 
322
332
  while i < max_attempts:
323
- information_pop_up = await is_window_open("Informação")
324
- if information_pop_up["IsOpened"] == True:
333
+ information_pop_up_class = await is_window_open_by_class("TMsgBox", "TMsgBox")
334
+ if information_pop_up_class == True:
325
335
  break
326
336
  else:
327
- console.print(f"Aguardando confirmação de nota incluida...\n")
337
+ console.print(f"Aguardando confirmação de sped finalizado...\n")
328
338
  await worker_sleep(5)
329
339
  i += 1
340
+
341
+ if i >= max_attempts:
342
+ return RpaRetornoProcessoDTO(
343
+ sucesso=False,
344
+ retorno="Não foi possivel obter o retorno de conclusão do SPED",
345
+ status=RpaHistoricoStatusEnum.Falha,
346
+ )
330
347
 
331
348
  app = Application().connect(class_name="TMsgBox")
332
349
  main_window = app["Informação"]
@@ -312,6 +312,7 @@ async def login_emsys_fiscal(
312
312
  )
313
313
 
314
314
  filial_cod = task.configEntrada.get("empresa")
315
+ console.print(f'Empresa a ser processada: {filial_cod}')
315
316
 
316
317
  try:
317
318
  console.print("\nEMSys Fiscal inciado com sucesso...", style="bold green")
@@ -339,48 +340,51 @@ async def login_emsys_fiscal(
339
340
 
340
341
 
341
342
  await worker_sleep(2)
342
- pyautogui.press("enter")
343
+ edit_password.type_keys("{ENTER}")
344
+ await worker_sleep(6)
343
345
 
344
- # Seleciona a filial do emsys
345
- console.print("Seleciona a filial do emsys...")
346
- selecao_filial = await find_element_center(
347
- "assets/emsys/selecao_filial.png", (480, 590, 820, 740), 15
348
- )
349
346
 
350
- console.print(f"Selecao filial via imagem: {selecao_filial}")
351
- if selecao_filial == None:
352
- screenshot_path = take_screenshot()
353
- selecao_filial = find_target_position(
354
- screenshot_path, "Grupo", 0, -50, attempts=15
355
- )
356
- console.print(
357
- f"Selecao filial localização de texto: {selecao_filial}"
347
+ max_attempts = 15
348
+ i = 0
349
+ while i < max_attempts:
350
+ selecionar_empresa = await is_window_open_by_class("TFrmSelecaoEmpresa", "TFrmSelecaoEmpresa")
351
+ if selecionar_empresa["IsOpened"] == True:
352
+ console.print("janela para gerar seleção da empresa foi aberta com sucesso...\n")
353
+ break
354
+ else:
355
+ warning_pop_up = await is_window_open("Warning")
356
+ information_pop = await is_window_open("Information")
357
+ if warning_pop_up["IsOpened"] == True or information_pop == True:
358
+ return RpaRetornoProcessoDTO(
359
+ sucesso=False,
360
+ retorno="Pop-up Warning/Information ao tentar realizar login",
361
+ status=RpaHistoricoStatusEnum.Falha,
362
+ )
363
+ else:
364
+ edit_password.type_keys("{ENTER}")
365
+ await worker_sleep(1)
366
+ i = i+1
367
+
368
+ if i >= max_attempts:
369
+ return RpaRetornoProcessoDTO(
370
+ sucesso=False,
371
+ retorno="Erro ao abrir a janela para seleção da empresa, tela não encontrada",
372
+ status=RpaHistoricoStatusEnum.Falha,
358
373
  )
359
- if selecao_filial == None:
360
- selecao_filial = (700, 639)
361
- console.print(f"Selecao filial posição fixa: {selecao_filial}")
362
374
 
363
- pyautogui.click(selecao_filial)
364
- console.print(
365
- f"Escrevendo [{filial_cod}] no campo filial..."
366
- )
375
+ # Seleciona a filial do emsys
376
+ console.print("Seleciona a filial do emsys...")
377
+ app = Application().connect(class_name="TFrmSelecaoEmpresa")
378
+ main_window = app["TFrmSelecaoEmpresa"]
379
+ main_window.set_focus()
367
380
 
368
- pyautogui.write(
369
- task.configEntrada.get("Código da Filial")
370
- )
381
+ edit_user = main_window.child_window(class_name="TEdit", found_index=0)
382
+ edit_user.set_edit_text(filial_cod)
371
383
 
372
- else:
373
- console.print(
374
- f"Escrevendo [{filial_cod}] no campo filial..."
375
- )
376
- type_text_into_field(
377
- task.configEntrada.get("Código da Filial"),
378
- app["Seleção de Empresas"]["Edit"],
379
- True,
380
- "50",
381
- )
382
- pyautogui.press("enter")
384
+ await worker_sleep(2)
385
+ edit_password.type_keys("{ENTER}")
383
386
 
387
+
384
388
  await worker_sleep(5)
385
389
  console.print(
386
390
  f"Verificando a presença de Warning..."
@@ -392,6 +396,29 @@ async def login_emsys_fiscal(
392
396
  retorno=f"Erro: Não foi possível acessar a filial {filial_cod}, esta com o CNPJ bloqueado, por favor verificar",
393
397
  status=RpaHistoricoStatusEnum.Falha,
394
398
  )
399
+
400
+ information_pop_up = await is_window_open_by_class("TMessageForm","TMessageForm")
401
+ if information_pop_up["IsOpened"] == True:
402
+ app_information = Application().connect(
403
+ class_name="TMessageForm"
404
+ )
405
+ main_window_information = app_information["TMessageForm"]
406
+ main_window.set_focus()
407
+ await worker_sleep(2)
408
+ btn_no = main_window_information["&No"]
409
+ if btn_no.exists():
410
+ try:
411
+ btn_no.click()
412
+ await worker_sleep(3)
413
+ console.print("O botão No após selecionar a filiam na seleção de empresa foi clicado com sucesso.", style="green")
414
+ except:
415
+ console.print("Falha ao clicar no botão No após selecionar a filiam na seleção de empresa", style="red")
416
+ else:
417
+ return RpaRetornoProcessoDTO(
418
+ sucesso=False,
419
+ retorno=f"Erro: Botão No, nao existe no pop-up information após a seleção da filial da empresa",
420
+ status=RpaHistoricoStatusEnum.Falha,
421
+ )
395
422
 
396
423
  max_attempts = 10
397
424
  i = 0
@@ -3102,4 +3129,21 @@ async def check_nota_importada(xml_nota: str) -> RpaRetornoProcessoDTO:
3102
3129
  sucesso=False,
3103
3130
  retorno=f"Erro em obter o retorno, Nota inserida com sucesso, erro {e}",
3104
3131
  status=RpaHistoricoStatusEnum.Falha,
3132
+ )
3133
+
3134
+
3135
+ async def kill_all_emsys():
3136
+ try:
3137
+ await kill_process("EMSysFiscal")
3138
+ await kill_process("EMSys")
3139
+ return RpaRetornoProcessoDTO(
3140
+ sucesso=True,
3141
+ retorno=f"EMSys encerrado com sucesso",
3142
+ status=RpaHistoricoStatusEnum.Sucesso,
3143
+ )
3144
+ except Exception as e:
3145
+ return RpaRetornoProcessoDTO(
3146
+ sucesso=False,
3147
+ retorno=f"Erro ao fechar o emsys, erro{e}",
3148
+ status=RpaHistoricoStatusEnum.Falha,
3105
3149
  )