worker-automate-hub 0.5.52__tar.gz → 0.5.54__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/api/webhook_service.py +5 -1
  4. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py +38 -12
  5. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/task_executor.py +5 -1
  6. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/utils/util.py +104 -19
  7. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/README.md +0 -0
  8. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/__init__.py +0 -0
  9. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/api/__init__.py +0 -0
  10. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/api/ahead_service.py +0 -0
  11. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/api/client.py +0 -0
  12. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/api/helpers/__init__.py +0 -0
  13. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  14. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/api/rdp_service.py +0 -0
  15. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/api/rpa_fila_service.py +0 -0
  16. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  17. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/cli.py +0 -0
  18. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/config/__init__.py +0 -0
  19. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/config/settings.py +0 -0
  20. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/config.py +0 -0
  21. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/core/so_manipulation.py +0 -0
  22. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/decorators/__init__.py +0 -0
  23. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/decorators/deprecation.py +0 -0
  24. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/decorators/rate_limit.py +0 -0
  25. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/decorators/repeat.py +0 -0
  26. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/decorators/retry.py +0 -0
  27. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/decorators/singleton.py +0 -0
  28. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/decorators/timeit.py +0 -0
  29. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/__init__.py +0 -0
  30. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dao/__init__.py +0 -0
  31. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  32. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dao/rpa_fila.py +0 -0
  33. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  34. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  35. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dao/rpa_robo.py +0 -0
  36. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dto/__init__.py +0 -0
  37. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  38. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  39. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
  40. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  41. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/__init__.py +0 -0
  42. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  43. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  44. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  45. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  46. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  47. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  48. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  49. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  50. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  51. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  52. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  53. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
  54. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  55. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  56. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  57. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  58. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  59. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
  60. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  61. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  62. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  63. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  64. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  65. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +0 -0
  66. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  67. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  68. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  69. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/login_emsys_versao_especifica.py +0 -0
  70. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  71. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  72. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  73. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/tasks/task_definitions.py +0 -0
  74. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/utils/__init__.py +0 -0
  75. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/utils/env.py +0 -0
  76. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  77. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/utils/logger.py +0 -0
  78. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/utils/toast.py +0 -0
  79. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/utils/updater.py +0 -0
  80. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  81. {worker_automate_hub-0.5.52 → worker_automate_hub-0.5.54}/worker_automate_hub/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: worker-automate-hub
3
- Version: 0.5.52
3
+ Version: 0.5.54
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.52"
3
+ version = "0.5.54"
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"
@@ -8,7 +8,8 @@ console = Console()
8
8
  async def send_to_webhook(
9
9
  url_retorno: str,
10
10
  status: str,
11
- observacao: str
11
+ observacao: str,
12
+ identificador_webhook: str = None
12
13
  ) -> None:
13
14
  """
14
15
  Envia uma notificacao para o endpoint do webhook passado como parametro.
@@ -35,6 +36,9 @@ async def send_to_webhook(
35
36
  "observacao": observacao,
36
37
  }
37
38
 
39
+ if identificador_webhook:
40
+ data["identificador"] = identificador_webhook
41
+
38
42
  try:
39
43
  async with aiohttp.ClientSession(
40
44
  connector=aiohttp.TCPConnector(verify_ssl=False)
@@ -35,6 +35,7 @@ from worker_automate_hub.utils.util import (
35
35
  e_ultimo_dia_util,
36
36
  delete_xml,
37
37
  ocr_warnings,
38
+ ocr_by_class,
38
39
  nf_busca_nf_saida,
39
40
  pessoas_ativa_cliente_fornecedor,
40
41
  nf_devolucao_liquidar_cupom,
@@ -210,6 +211,10 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
210
211
  btn_ir_para_nota = pyautogui.locateOnScreen(ASSETS_PATH + "\\notas_saida\\ir_para_nota_a_fatura_esmaecido.png", confidence=0.8)
211
212
  if btn_ir_para_nota:
212
213
  console.print("Botão 'Ir para nota de faturar' inativo, seguindo com o processo...\n")
214
+ app = Application().connect(class_name="TFrmNotaFiscalSaida", timeout=60)
215
+ main_window = app["TFrmNotaFiscalSaida"]
216
+ main_window.set_focus()
217
+ main_window.close()
213
218
  else:
214
219
  retorno = f"Botão [Ir para nota de faturar] está ativo, impossibilitando realizar a devolução \nEtapas Executadas:\n{steps}"
215
220
  return RpaRetornoProcessoDTO(
@@ -754,9 +759,7 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
754
759
  console.print(f"Imagem preparada com sucesso...\n")
755
760
  console.print(f"Realizando OCR...\n")
756
761
  captured_text = pytesseract.image_to_string(Image.open(path_to_png))
757
- console.print(
758
- f"Texto Full capturado {captured_text}...\n"
759
- )
762
+ console.print(f"Texto Full capturado {captured_text}...\n")
760
763
  os.remove(path_to_png)
761
764
  pattern = r"sequ[êe]ncia:\s*(\d+)"
762
765
  match = re.search(pattern, captured_text)
@@ -765,6 +768,9 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
765
768
  numero_nota_fiscal = match.group(1)
766
769
 
767
770
 
771
+ app = Application().connect(title="Information", timeout=180)
772
+ main_window = app["Information"]
773
+ main_window.set_focus()
768
774
  btn_ok = main_window.child_window(class_name="TButton", found_index=0)
769
775
  btn_ok.click()
770
776
  await worker_sleep(3)
@@ -815,17 +821,37 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
815
821
 
816
822
  while i < max_attempts:
817
823
  try:
818
- app = Application().connect(class_name="TFrmProcessamentoFEe2", timeout=60)
824
+ app = Application().connect(class_name="TFrmProcessamentoFEe2", timeout=10)
819
825
  main_window = app["TFrmProcessamentoFEe2"]
820
826
 
821
- await worker_sleep(15)
822
-
823
- information_operacao_concluida = main_window.child_window(class_name="TMessageForm")
824
- btn_ok = information_operacao_concluida.child_window(class_name="TButton")
825
- btn_ok.click()
826
- await worker_sleep(4)
827
- main_window.close()
828
- break
827
+ await worker_sleep(5)
828
+ information_pop_up = await is_window_open_by_class("TMessageForm", "TMessageForm")
829
+ if information_pop_up["IsOpened"] == True:
830
+ msg_pop_up = await ocr_by_class(numero_nota_fiscal, "TMessageForm", "TMessageForm")
831
+ if msg_pop_up.sucesso:
832
+ if 'operação concl' in msg_pop_up or 'operacao concl' in msg_pop_up:
833
+ information_operacao_concluida = main_window.child_window(class_name="TMessageForm")
834
+ btn_ok = information_operacao_concluida.child_window(class_name="TButton")
835
+ btn_ok.click()
836
+ await worker_sleep(4)
837
+ main_window.close()
838
+ break
839
+ else:
840
+ retorno = f"Pop up nao mapeado para seguimento do robo {msg_pop_up} \nEtapas Executadas:\n{steps}"
841
+ return RpaRetornoProcessoDTO(
842
+ sucesso=False,
843
+ retorno=retorno,
844
+ status=RpaHistoricoStatusEnum.Falha,
845
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
846
+ )
847
+ else:
848
+ retorno = f"Não foi possivel realizar a confirmação do msg do OCR \nEtapas Executadas:\n{steps}"
849
+ return RpaRetornoProcessoDTO(
850
+ sucesso=False,
851
+ retorno=retorno,
852
+ status=RpaHistoricoStatusEnum.Falha,
853
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
854
+ )
829
855
  except Exception as e:
830
856
  pass
831
857
 
@@ -36,6 +36,7 @@ async def perform_task(task: RpaProcessoEntradaDTO):
36
36
  logger.info(log_msg)
37
37
  task_uuid = task.uuidProcesso
38
38
  url_retorno = task.configEntrada.get("urlRetorno", None)
39
+ identificador_webhook = task.configEntrada.get("identificador", None)
39
40
  processo: RpaProcesso = await get_processo(task_uuid)
40
41
  if processo is None:
41
42
  worker_config = load_worker_config()
@@ -77,7 +78,10 @@ async def perform_task(task: RpaProcessoEntradaDTO):
77
78
  show_toast("Sucesso", f"Processo executado com sucesso: {result}")
78
79
 
79
80
  if url_retorno is not None and result.sucesso == False:
80
- await send_to_webhook(url_retorno, result.status, result.retorno)
81
+ if identificador_webhook:
82
+ await send_to_webhook(url_retorno, result.status, result.retorno, identificador_webhook)
83
+ else:
84
+ await send_to_webhook(url_retorno, result.status, result.retorno)
81
85
  return result
82
86
  else:
83
87
  err_msg = f"Processo não encontrado: {task_uuid}"
@@ -3437,6 +3437,60 @@ async def ocr_warnings(numero_nota: str)-> RpaRetornoProcessoDTO:
3437
3437
  pass
3438
3438
 
3439
3439
 
3440
+ async def ocr_by_class(numero_nota: str, windows_class: str, app_class: str)-> RpaRetornoProcessoDTO:
3441
+ try:
3442
+ app = Application().connect(class_name=windows_class)
3443
+ main_window = app[app_class]
3444
+ main_window.set_focus()
3445
+
3446
+ console.print(f"Obtendo texto da Janela...\n")
3447
+ console.print(f"Tirando print da janela do warning para realização do OCR...\n")
3448
+
3449
+ window_rect = main_window.rectangle()
3450
+ screenshot = pyautogui.screenshot(
3451
+ region=(
3452
+ window_rect.left,
3453
+ window_rect.top,
3454
+ window_rect.width(),
3455
+ window_rect.height(),
3456
+ )
3457
+ )
3458
+ username = getpass.getuser()
3459
+ path_to_png = f"C:\\Users\\{username}\\Downloads\\ocr_bt_class_popup_{numero_nota}.png"
3460
+ screenshot.save(path_to_png)
3461
+ console.print(f"Print salvo em {path_to_png}...\n")
3462
+
3463
+ console.print(
3464
+ f"Preparando a imagem para maior resolução e assertividade no OCR...\n"
3465
+ )
3466
+ image = Image.open(path_to_png)
3467
+ image = image.convert("L")
3468
+ enhancer = ImageEnhance.Contrast(image)
3469
+ image = enhancer.enhance(2.0)
3470
+ image.save(path_to_png)
3471
+ console.print(f"Imagem preparada com sucesso...\n")
3472
+ console.print(f"Realizando OCR...\n")
3473
+ captured_text = pytesseract.image_to_string(Image.open(path_to_png))
3474
+ console.print(f"Texto Full capturado {captured_text}...\n")
3475
+ return RpaRetornoProcessoDTO(
3476
+ sucesso=True,
3477
+ retorno=captured_text,
3478
+ status=RpaHistoricoStatusEnum.Sucesso,
3479
+ )
3480
+ except Exception as e:
3481
+ return RpaRetornoProcessoDTO(
3482
+ sucesso=False,
3483
+ retorno=f"Erro ao realizar a extração do texto vinculado ao warning, erro - {e}",
3484
+ status=RpaHistoricoStatusEnum.Falha,
3485
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
3486
+ )
3487
+ finally:
3488
+ try:
3489
+ os.remove(path_to_png)
3490
+ except:
3491
+ pass
3492
+
3493
+
3440
3494
  async def nf_busca_nf_saida(num_nota_fiscal: str) -> RpaRetornoProcessoDTO:
3441
3495
  try:
3442
3496
  app = Application().connect(class_name="TFrmNotaFiscalSaida", timeout=60)
@@ -3561,7 +3615,7 @@ async def nf_devolucao_liquidar_cupom(num_nota_fiscal: str, data_atual: str) ->
3561
3615
 
3562
3616
  main_window.set_focus()
3563
3617
 
3564
- page_control = main_window.child_window(class_name="TPageControl")
3618
+ page_control = main_window.child_window(class_name="TPageControl", found_index=0)
3565
3619
  # Navegar até a aba TabSheetLiquidacao
3566
3620
  tab_sheet_liquidacao = page_control.child_window(title="TabSheetLiquidacao")
3567
3621
  panel_liquidacao = tab_sheet_liquidacao.child_window(class_name="TPanel", found_index=0)
@@ -3592,30 +3646,54 @@ async def nf_devolucao_liquidar_cupom(num_nota_fiscal: str, data_atual: str) ->
3592
3646
  await worker_sleep(3)
3593
3647
  confirm_pop_up = await is_window_open_by_class("TMessageForm","TMessageForm")
3594
3648
  if confirm_pop_up["IsOpened"] == True:
3595
- app_confirm = Application().connect(class_name="TMessageForm")
3596
- main_window_confirm = app_confirm["TMessageForm"]
3597
-
3598
- btn_yes = main_window_confirm["&Yes"]
3599
- try:
3600
- btn_yes.click()
3601
- await worker_sleep(3)
3602
- console.print("O botão Yes foi clicado com sucesso.", style="green")
3603
- #main_window.close()
3604
- except:
3605
- return RpaRetornoProcessoDTO(
3606
- sucesso=False,
3607
- retorno=f"Não foi possivel clicar em Yes durante para a confirmação da liquidação do titulo",
3608
- status=RpaHistoricoStatusEnum.Falha,
3609
- tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
3610
- )
3649
+ capture_text_ocr = await ocr_by_class(num_nota_fiscal,"TMessageForm","TMessageForm")
3650
+ if capture_text_ocr.sucesso == True:
3651
+ msg_result = capture_text_ocr.retorno
3652
+ if "deseja realmente" in msg_result.lower():
3653
+ app_confirm = Application().connect(class_name="TMessageForm")
3654
+ main_window_confirm = app_confirm["TMessageForm"]
3655
+
3656
+ btn_yes = main_window_confirm["&Yes"]
3657
+ try:
3658
+ btn_yes.click()
3659
+ await worker_sleep(3)
3660
+ console.print("O botão Yes foi clicado com sucesso.", style="green")
3661
+ #main_window.close()
3662
+ except:
3663
+ return RpaRetornoProcessoDTO(
3664
+ sucesso=False,
3665
+ retorno=f"Não foi possivel clicar em Yes durante para a confirmação da liquidação do titulo",
3666
+ status=RpaHistoricoStatusEnum.Falha,
3667
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
3668
+ )
3669
+ else:
3670
+ return RpaRetornoProcessoDTO(
3671
+ sucesso=False,
3672
+ retorno=f"POP não mapeado: {msg_result}",
3673
+ status=RpaHistoricoStatusEnum.Falha,
3674
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
3675
+ )
3611
3676
 
3612
3677
  console.print('Aguardando a confirmação de Liquidação realizado com sucesso')
3613
3678
  try:
3614
3679
  app = Application().connect(title="Informação", timeout=60)
3615
3680
  main_window = app["Informação"]
3616
3681
  main_window.set_focus()
3617
- btn_ok = main_window.child_window(class_name="Button")
3618
- btn_ok.click()
3682
+ msg_pop_up = await ocr_by_class(num_nota_fiscal,"TMessageForm","TMessageForm")
3683
+ if msg_pop_up.sucesso == True:
3684
+ msg_result = msg_pop_up.retorno
3685
+ if "sucesso" in msg_result.lower():
3686
+ btn_ok = main_window.child_window(class_name="Button")
3687
+ btn_ok.click()
3688
+ pyautogui.press('enter')
3689
+ await worker_sleep(1)
3690
+ else:
3691
+ return RpaRetornoProcessoDTO(
3692
+ sucesso=False,
3693
+ retorno=f"Não foi possivel obter a confirmação de titulo liquidado com sucesso, pop_up nao mepeado: {msg_result}",
3694
+ status=RpaHistoricoStatusEnum.Falha,
3695
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
3696
+ )
3619
3697
  except Exception as e:
3620
3698
  return RpaRetornoProcessoDTO(
3621
3699
  sucesso=False,
@@ -3624,6 +3702,10 @@ async def nf_devolucao_liquidar_cupom(num_nota_fiscal: str, data_atual: str) ->
3624
3702
  tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
3625
3703
  )
3626
3704
 
3705
+
3706
+ app = Application().connect(class_name="TFrmTituloReceber", timeout=60)
3707
+ main_window = app["TFrmTituloReceber"]
3708
+ main_window.set_focus()
3627
3709
  console.print('Confirmando se o titulo alterou para Liquidado')
3628
3710
  panel_TPage = main_window.child_window(class_name="TcxTreeView")
3629
3711
  panel_TTabSheet = panel_TPage.child_window(class_name="TcxCustomInnerTreeView")
@@ -3638,6 +3720,9 @@ async def nf_devolucao_liquidar_cupom(num_nota_fiscal: str, data_atual: str) ->
3638
3720
 
3639
3721
  if radio_liquidado.is_checked():
3640
3722
  console.print("Botão 'Liquidado' está selecionado, seguindo com o processo...\n")
3723
+ app = Application().connect(class_name="TFrmTituloReceber", timeout=60)
3724
+ main_window = app["TFrmTituloReceber"]
3725
+ main_window.set_focus()
3641
3726
  main_window.close()
3642
3727
  else:
3643
3728
  return RpaRetornoProcessoDTO(