worker-automate-hub 0.5.807__tar.gz → 0.5.808__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/abertura_livros_fiscais.py +63 -112
  4. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/utils/util.py +21 -3
  5. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/README.md +0 -0
  6. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/__init__.py +0 -0
  7. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/__init__.py +0 -0
  8. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/ahead_service.py +0 -0
  9. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/client.py +0 -0
  10. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/datalake_service.py +0 -0
  11. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/helpers/__init__.py +0 -0
  12. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  13. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/rdp_service.py +0 -0
  14. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/rpa_fila_service.py +0 -0
  15. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  16. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/api/webhook_service.py +0 -0
  17. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/cli.py +0 -0
  18. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/config/__init__.py +0 -0
  19. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/config/settings.py +0 -0
  20. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/config.py +0 -0
  21. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/core/so_manipulation.py +0 -0
  22. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/decorators/__init__.py +0 -0
  23. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/decorators/deprecation.py +0 -0
  24. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/decorators/rate_limit.py +0 -0
  25. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/decorators/repeat.py +0 -0
  26. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/decorators/retry.py +0 -0
  27. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/decorators/singleton.py +0 -0
  28. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/decorators/timeit.py +0 -0
  29. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/__init__.py +0 -0
  30. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dao/__init__.py +0 -0
  31. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  32. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dao/rpa_fila.py +0 -0
  33. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  34. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  35. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dao/rpa_robo.py +0 -0
  36. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dto/__init__.py +0 -0
  37. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  38. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  39. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
  40. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dto/rpa_sap_dto.py +0 -0
  41. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  42. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/__init__.py +0 -0
  43. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  44. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  45. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  46. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/cte_manual.py +0 -0
  47. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/cte_xml.py +0 -0
  48. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  49. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/devolucao_ctf.py +0 -0
  50. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/devolucao_ctf_35.py +0 -0
  51. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py +0 -0
  52. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  53. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  54. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  55. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  56. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  57. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  58. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_cte_1353.py +0 -0
  59. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_cte_333.py +0 -0
  60. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  61. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
  62. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  63. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_22.py +0 -0
  64. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  65. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  66. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  67. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  68. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_37.py +0 -0
  69. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
  70. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  71. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_503.py +0 -0
  72. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  73. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  74. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  75. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/entrada_de_notas_9000.py +0 -0
  76. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  77. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/extracao_fechamento_contabil.py +0 -0
  78. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/extracao_fechamento_emsys.py +0 -0
  79. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque.py +0 -0
  80. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque_fiscal.py +0 -0
  81. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +0 -0
  82. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/fidc_exportacao_docs_portal_b2b.py +0 -0
  83. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  84. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  85. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/fidc_retorno_cobranca.py +0 -0
  86. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos.py +0 -0
  87. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos_novo.py +0 -0
  88. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/integracao_contabil.py +0 -0
  89. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/integracao_contabil_generica.py +0 -0
  90. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/lancamento_pis_cofins.py +0 -0
  91. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/lancamento_rateio.py +0 -0
  92. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  93. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/login_emsys_versao_especifica.py +0 -0
  94. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/notas_faturamento_sap.py +0 -0
  95. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/opex_capex.py +0 -0
  96. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  97. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  98. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  99. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/task_definitions.py +0 -0
  100. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/tasks/task_executor.py +0 -0
  101. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/utils/__init__.py +0 -0
  102. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/utils/env.py +0 -0
  103. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  104. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/utils/logger.py +0 -0
  105. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/utils/toast.py +0 -0
  106. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/utils/updater.py +0 -0
  107. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  108. {worker_automate_hub-0.5.807 → worker_automate_hub-0.5.808}/worker_automate_hub/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: worker-automate-hub
3
- Version: 0.5.807
3
+ Version: 0.5.808
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.5.807"
3
+ version = "0.5.808"
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"
@@ -67,17 +67,6 @@ async def wait_aguarde_window_closed(app, timeout=60):
67
67
  console.log("Timeout esperando a janela Aguarde...")
68
68
 
69
69
 
70
- def click_desconfirmar():
71
- cords = (675, 748)
72
- pyautogui.click(x=cords[0], y=cords[1])
73
-
74
-
75
- def ctrl_c():
76
- pyautogui.press("tab", presses=12) # verificar
77
- pyautogui.hotkey("ctrl", "c")
78
- return pyperclip.paste()
79
-
80
-
81
70
  async def abertura_livros_fiscais(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
82
71
  try:
83
72
  config = await get_config_by_name("login_emsys_fiscal")
@@ -365,10 +354,10 @@ async def abertura_livros_fiscais(task: RpaProcessoEntradaDTO) -> RpaRetornoProc
365
354
  info_window.child_window(
366
355
  class_name="Button", found_index=0
367
356
  ).click_input()
368
- except Exception as e:
369
- print(f"Erro ao clicar em 'Sim' na janela Informação: {e}")
370
- except Exception as e:
371
- print(f"[Erro ao procurar imagem]: {e}")
357
+ except:
358
+ pass
359
+ except:
360
+ pass
372
361
 
373
362
  # Verifica se a janela TMsgBox de aviso está aberta
374
363
  try:
@@ -378,25 +367,49 @@ async def abertura_livros_fiscais(task: RpaProcessoEntradaDTO) -> RpaRetornoProc
378
367
  box.set_focus()
379
368
  box.child_window(class_name="TBitBtn", found_index=0).click_input()
380
369
  print("Clicou no botão 'TBitBtn'.")
381
- except ElementNotFoundError:
370
+ except:
382
371
  pass
383
- except Exception as e:
384
- print(f"[Erro ao procurar/clicar na TMessageForm]: {e}")
385
372
 
386
373
  # 2. Verifica e trata janela de confirmação TMessageForm
387
374
  try:
388
- app_msg = Application().connect(
389
- class_name="TMessageForm", timeout=2
390
- )
391
- form = app_msg["TMessageForm"]
392
- console.print("Janela de confirmação 'TMessageForm' encontrada.")
393
- form.set_focus()
394
- form.child_window(class_name="TButton", found_index=0).click_input()
395
- print("Clicou no botão de confirmação.")
396
- except ElementNotFoundError:
375
+ # img_dialog = r"C:\Users\automatehub\Documents\GitHub\worker-automate-hub\assets\abertura_livros\notas_rejeitadas.png"
376
+ img_dialog = "assets\\abertura_livros\\notas_rejeitadas.png"
377
+ if os.path.exists(img_dialog):
378
+ caixa = pyautogui.locateOnScreen(img_dialog, confidence=0.86, grayscale=True)
379
+ if caixa:
380
+ print("Janela 'notas rejeitadas' detectada por imagem.")
381
+ region = (caixa.left, caixa.top, caixa.width, caixa.height)
382
+
383
+ app_msg = Application().connect(
384
+ class_name="TMessageForm", timeout=2
385
+ )
386
+ form = app_msg["TMessageForm"]
387
+ console.print("Janela de confirmação 'TMessageForm' encontrada.")
388
+ form.set_focus()
389
+ form.child_window(class_name="TButton", found_index=1).click_input()
390
+ print("Clicou no botão de confirmação.")
391
+
392
+ await worker_sleep(5)
393
+
394
+ # img_dialog = r"C:\Users\automatehub\Documents\GitHub\worker-automate-hub\assets\abertura_livros\gerar_rel_notas_rejeitadas.png"
395
+ img_dialog = "assets\\abertura_livros\\gerar_rel_notas_rejeitadas.png"
396
+ if os.path.exists(img_dialog):
397
+ caixa = pyautogui.locateOnScreen(img_dialog, confidence=0.86, grayscale=True)
398
+ if caixa:
399
+ print("Janela 'notas rejeitadas' detectada por imagem.")
400
+ region = (caixa.left, caixa.top, caixa.width, caixa.height)
401
+
402
+ app_msg = Application().connect(
403
+ class_name="TMessageForm", timeout=2
404
+ )
405
+ form = app_msg["TMessageForm"]
406
+ console.print("Janela de confirmação 'TMessageForm' encontrada.")
407
+ form.set_focus()
408
+ form.child_window(class_name="TButton", found_index=0).click_input()
409
+ print("Clicou no botão de confirmação.")
410
+ except:
397
411
  pass
398
- except Exception as e:
399
- print(f"[Erro ao procurar/clicar na TMessageForm]: {e}")
412
+
400
413
 
401
414
  # 3. Verifica se a janela do relatório está aberta
402
415
  try:
@@ -406,10 +419,9 @@ async def abertura_livros_fiscais(task: RpaProcessoEntradaDTO) -> RpaRetornoProc
406
419
  janela = app_report["TFrmPreviewRelatorio"]
407
420
  print("Janela 'TFrmPreviewRelatorio' encontrada.")
408
421
  janela_aberta = True
409
- except ElementNotFoundError:
422
+ except:
410
423
  pass
411
- except Exception as e:
412
- print(f"[Erro ao procurar TFrmPreviewRelatorio]: {e}")
424
+
413
425
 
414
426
  # Se encontrou a janela de relatório, sai
415
427
  if janela_aberta:
@@ -444,9 +456,27 @@ async def abertura_livros_fiscais(task: RpaProcessoEntradaDTO) -> RpaRetornoProc
444
456
  main_window = app["TFrmPreviewRelatorio"]
445
457
  main_window.set_focus()
446
458
 
459
+ # Verificando se a foi confirmado os livres
460
+ console.print("Verificando se os livros foram confirmados")
461
+
462
+ # imagem = r"C:\Users\automatehub\Documents\GitHub\worker-automate-hub\assets\abertura_livros\confirmado_livros.png"
463
+ imagem = "assets\\abertura_livros\\confirmado_livros.png"
464
+ if os.path.exists(imagem):
465
+ caixa = pyautogui.locateOnScreen(imagem, confidence=0.9, grayscale=True)
466
+ else:
467
+ console.print("Imagem confirmada não encontrada")
468
+ return RpaRetornoProcessoDTO(
469
+ sucesso=False,
470
+ retorno=f"Erro na Abertura de Livro Fiscal: Imagem confirmada não encontrada",
471
+ status=RpaHistoricoStatusEnum.Falha,
472
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)],
473
+ )
474
+
447
475
  # Clicar em fechar
448
476
  main_window.close()
449
477
 
478
+ console.print("Livros confirmados")
479
+
450
480
  await worker_sleep(5)
451
481
 
452
482
  # Conecta na janela principal
@@ -577,86 +607,6 @@ async def abertura_livros_fiscais(task: RpaProcessoEntradaDTO) -> RpaRetornoProc
577
607
 
578
608
  await worker_sleep(2)
579
609
 
580
- # flag para controlar se é a primeira vez
581
- primeira_confirmacao = True
582
-
583
- while True:
584
- janela_aberta = False
585
-
586
- # 1. Verifica se a imagem apareceu e clica em 'Sim' na janela "Informação"
587
- try:
588
- if pyautogui.locateOnScreen(imagem, confidence=0.9):
589
- print("Imagem 'livros_incluidos' apareceu na tela.")
590
- try:
591
- app_info = Application().connect(title="Informação", timeout=5)
592
- info_window = app_info["Informação"]
593
- info_window.set_focus()
594
- console.print("Clicando em 'Sim' na janela Informação...")
595
- info_window.child_window(class_name="Button", found_index=0).click_input()
596
- except Exception as e:
597
- print(f"Erro ao clicar em 'Sim' na janela Informação: {e}")
598
- except Exception as e:
599
- print(f"[Erro ao procurar imagem]: {e}")
600
-
601
- # Verifica se a janela TMsgBox de aviso está aberta
602
- try:
603
- app_msgbox = Application().connect(class_name="TMsgBox", timeout=10)
604
- box = app_msgbox["TMsgBox"]
605
- print("Janela 'TMsgBox' encontrada.")
606
- box.set_focus()
607
- box.child_window(class_name="TBitBtn", found_index=0).click_input()
608
- print("Clicou no botão 'TBitBtn'.")
609
- except ElementNotFoundError:
610
- pass
611
- except Exception as e:
612
- print(f"[Erro ao procurar/clicar na TMsgBox]: {e}")
613
-
614
- # 2. Verifica e trata janela de confirmação TMessageForm
615
- try:
616
- app_msg = Application().connect(class_name="TMessageForm", timeout=2)
617
- form = app_msg["TMessageForm"]
618
- console.print("Janela de confirmação 'TMessageForm' encontrada.")
619
- form.set_focus()
620
-
621
- idx = 1 if primeira_confirmacao else 0
622
- try:
623
- form.child_window(class_name="TButton", found_index=idx).click_input()
624
- print(f"Clicou no botão de confirmação (found_index={idx}).")
625
- primeira_confirmacao = False # nas próximas vezes será 0
626
- except Exception as e:
627
- print(f"[Falha ao clicar no botão found_index={idx}]: {e}")
628
-
629
- except ElementNotFoundError:
630
- pass
631
- except Exception as e:
632
- print(f"[Erro ao procurar/clicar na TMessageForm]: {e}")
633
-
634
- await worker_sleep(5)
635
-
636
- # 3. Verifica se a janela do relatório está aberta
637
- try:
638
- app_report = Application().connect(class_name="TFrmPreviewRelatorio", timeout=2)
639
- janela = app_report["TFrmPreviewRelatorio"]
640
- print("Janela 'TFrmPreviewRelatorio' encontrada.")
641
- janela_aberta = True
642
- except ElementNotFoundError:
643
- pass
644
- except Exception as e:
645
- print(f"[Erro ao procurar TFrmPreviewRelatorio]: {e}")
646
-
647
- # Se encontrou a janela de relatório, sai
648
- if janela_aberta:
649
- print("Relatório carregado. Saindo do loop.")
650
- break
651
-
652
- # Verifica tempo limite
653
- if time.time() - inicio > tempo_limite:
654
- print("Tempo esgotado. Relatório não carregado.")
655
- break
656
-
657
- print("Aguardando janela de relatório... (verificando novas confirmações se houver)")
658
- time.sleep(intervalo)
659
-
660
610
 
661
611
  # === 5) Se não houve 'Aviso' com erro mapeado, considera sucesso ===
662
612
  console.print("Nenhum erro confirmado. Fluxo OK.")
@@ -682,3 +632,4 @@ async def abertura_livros_fiscais(task: RpaProcessoEntradaDTO) -> RpaRetornoProc
682
632
  status=RpaHistoricoStatusEnum.Falha,
683
633
  tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)],
684
634
  )
635
+
@@ -339,9 +339,27 @@ async def login_emsys_fiscal(
339
339
  message="32-bit application should be automated using 32-bit Python",
340
340
  )
341
341
  await worker_sleep(2)
342
- filial_cod = task.configEntrada.get("empresa")
343
- if filial_cod == None:
344
- filial_cod = task.configEntrada.get("filialEmpresaOrigem")
342
+ filial_cod = (
343
+ task.configEntrada.get("empresa")
344
+ or task.configEntrada.get("filialEmpresaOrigem")
345
+ or task.configEntrada.get("descricaoFilial")
346
+ )
347
+
348
+ # Extrai apenas os dígitos iniciais da string
349
+ num = None
350
+ if filial_cod is not None:
351
+ s = str(filial_cod).strip()
352
+ m = re.match(r'^(\d+)', s) # pega o número do INÍCIO
353
+ if not m:
354
+ m = re.search(r'\d+', s) # fallback: primeiro número que aparecer
355
+ if m:
356
+ num = m.group(1)
357
+
358
+ if num is None:
359
+ raise ValueError(f"Não foi possível extrair número de: {filial_cod!r}")
360
+
361
+ filial_cod = num
362
+
345
363
  console.print(f"Empresa a ser processada: {filial_cod}")
346
364
 
347
365
  try: