worker-automate-hub 0.5.665__tar.gz → 0.5.667__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.

Potentially problematic release.


This version of worker-automate-hub might be problematic. Click here for more details.

Files changed (103) hide show
  1. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +3 -3
  4. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +200 -19
  5. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/README.md +0 -0
  6. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/__init__.py +0 -0
  7. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/__init__.py +0 -0
  8. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/ahead_service.py +0 -0
  9. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/client.py +0 -0
  10. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/datalake_service.py +0 -0
  11. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/helpers/__init__.py +0 -0
  12. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  13. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/rdp_service.py +0 -0
  14. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/rpa_fila_service.py +0 -0
  15. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  16. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/api/webhook_service.py +0 -0
  17. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/cli.py +0 -0
  18. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/config/__init__.py +0 -0
  19. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/config/settings.py +0 -0
  20. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/config.py +0 -0
  21. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/core/so_manipulation.py +0 -0
  22. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/decorators/__init__.py +0 -0
  23. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/decorators/deprecation.py +0 -0
  24. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/decorators/rate_limit.py +0 -0
  25. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/decorators/repeat.py +0 -0
  26. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/decorators/retry.py +0 -0
  27. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/decorators/singleton.py +0 -0
  28. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/decorators/timeit.py +0 -0
  29. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/__init__.py +0 -0
  30. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dao/__init__.py +0 -0
  31. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  32. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dao/rpa_fila.py +0 -0
  33. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  34. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  35. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dao/rpa_robo.py +0 -0
  36. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dto/__init__.py +0 -0
  37. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  38. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  39. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
  40. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dto/rpa_sap_dto.py +0 -0
  41. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  42. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/__init__.py +0 -0
  43. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  44. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/abertura_livros_fiscais.py +0 -0
  45. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  46. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  47. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/cte_manual.py +0 -0
  48. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/cte_xml.py +0 -0
  49. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  50. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/devolucao_ctf.py +0 -0
  51. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/devolucao_ctf_35.py +0 -0
  52. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py +0 -0
  53. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  54. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  55. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  56. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  57. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  58. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  59. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_cte_1353.py +0 -0
  60. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_cte_333.py +0 -0
  61. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  62. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  63. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  64. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  65. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  66. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  67. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
  68. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  69. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_503.py +0 -0
  70. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  71. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  72. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/entrada_de_notas_9000.py +0 -0
  73. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  74. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/extracao_fechamento_contabil.py +0 -0
  75. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/extracao_fechamento_emsys.py +0 -0
  76. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +0 -0
  77. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/fidc_exportacao_docs_portal_b2b.py +0 -0
  78. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  79. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  80. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/fidc_retorno_cobranca.py +0 -0
  81. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos.py +0 -0
  82. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos_novo.py +0 -0
  83. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/integracao_contabil.py +0 -0
  84. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/integracao_contabil_generica.py +0 -0
  85. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/lancamento_pis_cofins.py +0 -0
  86. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/lancamento_rateio.py +0 -0
  87. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  88. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/login_emsys_versao_especifica.py +0 -0
  89. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/notas_faturamento_sap.py +0 -0
  90. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  91. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  92. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  93. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/task_definitions.py +0 -0
  94. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/tasks/task_executor.py +0 -0
  95. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/utils/__init__.py +0 -0
  96. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/utils/env.py +0 -0
  97. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  98. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/utils/logger.py +0 -0
  99. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/utils/toast.py +0 -0
  100. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/utils/updater.py +0 -0
  101. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/utils/util.py +0 -0
  102. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  103. {worker_automate_hub-0.5.665 → worker_automate_hub-0.5.667}/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.665
3
+ Version: 0.5.667
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.665"
3
+ version = "0.5.667"
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"
@@ -520,7 +520,7 @@ async def entrada_de_notas_16(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
520
520
  except:
521
521
  console.print("Não foi possivel clicar no Botão OK... \n")
522
522
 
523
- await worker_sleep(3)
523
+ await worker_sleep(5)
524
524
 
525
525
  console.print(
526
526
  "Verificando a existencia da tela Informações para importação da Nota Fiscal Eletrônica...\n"
@@ -550,7 +550,7 @@ async def entrada_de_notas_16(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
550
550
  tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
551
551
  )
552
552
 
553
- await worker_sleep(15)
553
+ await worker_sleep(20)
554
554
 
555
555
  try:
556
556
  console.print("Verificando itens não localizados ou NCM...\n")
@@ -858,4 +858,4 @@ async def entrada_de_notas_16(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
858
858
  retorno=observacao,
859
859
  status=RpaHistoricoStatusEnum.Falha,
860
860
  tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
861
- )
861
+ )
@@ -1,6 +1,7 @@
1
1
  import asyncio
2
2
  import getpass
3
3
  import os
4
+ import pyperclip
4
5
  import warnings
5
6
  import time
6
7
  import uuid
@@ -50,11 +51,67 @@ from worker_automate_hub.utils.util import (
50
51
  carregamento_import_xml,
51
52
  errors_generate_after_import,
52
53
  )
54
+ from worker_automate_hub.utils.utils_nfe_entrada import EMSys
55
+
56
+ emsys = EMSys()
53
57
 
54
58
  pyautogui.PAUSE = 0.5
55
59
  pyautogui.FAILSAFE = False
56
60
  console = Console()
57
61
 
62
+ async def parse_copied_content(content):
63
+ lines = content.strip().split("\n")
64
+ data_list = []
65
+ i = 0
66
+ while i < len(lines):
67
+ line = lines[i].strip()
68
+ if line.startswith("Código"):
69
+ headers_line = line
70
+ headers = headers_line.split("\t")
71
+ i += 1
72
+ if i < len(lines):
73
+ data_line = lines[i].strip()
74
+ data = data_line.split("\t")
75
+ if len(headers) == len(data):
76
+ item_dict = dict(zip(headers, data))
77
+ data_list.append(item_dict)
78
+ else:
79
+ console.print(
80
+ "Número de cabeçalhos e dados não correspondem.",
81
+ style="bold red",
82
+ )
83
+ console.print(f"Cabeçalhos: {headers}")
84
+ console.print(f"Dados: {data}")
85
+ else:
86
+ console.print(
87
+ "Sem linha de dados após cabeçalho.", style="bold red"
88
+ )
89
+ i += 1
90
+ else:
91
+ i += 1
92
+
93
+ final_list = []
94
+ for item in data_list:
95
+ try:
96
+ new_item = {
97
+ "codigo": int(item["Código"]),
98
+ "descricao": item["Descrição"],
99
+ "curto": float(item["R$ Curto"].replace(".", "").replace(",", ".")),
100
+ "custo_min": float(
101
+ item["R$ Custo Min."]
102
+ .replace("worker_automate_hub/utils/utils_nfe_entrada.py.", "")
103
+ .replace(",", ".")
104
+ ),
105
+ "custo_max": float(
106
+ item["R$ Custo Máx."].replace(".", "").replace(",", ".")
107
+ ),
108
+ }
109
+ final_list.append(new_item)
110
+ except Exception as e:
111
+ console.print(
112
+ f"Erro ao processar item: {item}. Erro: {e}", style="bold red"
113
+ )
114
+ return final_list
58
115
 
59
116
  async def entrada_de_notas_7139(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
60
117
  """
@@ -633,34 +690,158 @@ async def entrada_de_notas_7139(task: RpaProcessoEntradaDTO) -> RpaRetornoProces
633
690
 
634
691
 
635
692
  await worker_sleep(6)
636
- nf_imported = await check_nota_importada(nota.get("nfe"))
637
- if nf_imported.sucesso == True:
638
- await worker_sleep(3)
639
- console.print("\nVerifica se a nota ja foi lançada...")
640
- nf_chave_acesso = int(nota.get("nfe"))
641
- status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
642
- if status_nf_emsys.get("status") == "Lançada":
643
- console.print("\nNota lançada com sucesso, processo finalizado...", style="bold green")
644
- return RpaRetornoProcessoDTO(
645
- sucesso=True,
646
- retorno="Nota Lançada com sucesso!",
647
- status=RpaHistoricoStatusEnum.Sucesso,
693
+
694
+ try:
695
+ console.print("Iniciando a coleta de dados do grid...\n")
696
+ app = Application(backend="uia").connect(class_name="TFrmTelaSelecao")
697
+ main_window = app.window(class_name="TFrmTelaSelecao")
698
+ grid = main_window.child_window(class_name="TcxGridSite")
699
+ grid.set_focus()
700
+ grid_wrapper = grid.wrapper_object()
701
+ send_keys("^({HOME})")
702
+ await worker_sleep(1)
703
+
704
+ data_list = []
705
+ last_content = ""
706
+ repeat_count = 0
707
+ max_repeats = 2
708
+
709
+ while True:
710
+ send_keys("^c")
711
+ await worker_sleep(1)
712
+ current_content = pyperclip.paste().strip()
713
+
714
+ if not current_content:
715
+ console.print(
716
+ "Nenhum conteúdo copiado, encerrando loop.", style="bold red"
717
+ )
718
+ break
719
+
720
+ if current_content == last_content:
721
+ repeat_count += 1
722
+ if repeat_count >= max_repeats:
723
+ console.print(
724
+ "Não há mais itens para processar. Fim do grid alcançado.",
725
+ style="bold green",
726
+ )
727
+ break
728
+ else:
729
+ item_data = await parse_copied_content(current_content)
730
+ data_list.extend(item_data)
731
+ last_content = current_content
732
+ repeat_count = 0
733
+
734
+ send_keys("{DOWN}")
735
+ await worker_sleep(1)
736
+
737
+ console.print(f"Dados coletados: {data_list}")
738
+
739
+ itens_invalidos = []
740
+ for item in data_list:
741
+ custo_min = item["custo_min"]
742
+ custo_max = item["custo_max"]
743
+ valor_curto = item["curto"]
744
+ intervalo = custo_max - custo_min
745
+ limite_inferior = custo_min - (intervalo * 0.8)
746
+ limite_superior = custo_max + (intervalo * 0.8)
747
+
748
+ if not (limite_inferior <= valor_curto <= limite_superior):
749
+ console.print(
750
+ f"[bold red]Item fora da faixa permitida:[/bold red] "
751
+ f"Código={item['codigo']} | Curto={valor_curto} | "
752
+ f"Faixa esperada: [{limite_inferior:.2f} - {limite_superior:.2f}]"
753
+ )
754
+ itens_invalidos.append(item["codigo"])
755
+
756
+ if itens_invalidos:
757
+ console.print(
758
+ "Itens que Ultrapassaram a Variação Máxima de Custo",
759
+ style="bold yellow",
648
760
  )
649
- else:
650
- console.print("Erro ao lançar nota", style="bold red")
761
+ console.print(f"Códigos dos itens: {itens_invalidos}")
762
+ send_keys("{ESC}")
763
+ observacao = f"Itens que ultrapassaram a variação máxima de custo: {itens_invalidos}. Processo cancelado."
651
764
  return RpaRetornoProcessoDTO(
652
765
  sucesso=False,
653
- retorno=f"Pop-up nota incluida encontrada, porém nota encontrada como 'já lançada' trazendo as seguintes informações: {nf_imported.retorno} - {error_work}",
766
+ retorno=observacao,
654
767
  status=RpaHistoricoStatusEnum.Falha,
655
768
  tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
656
769
  )
657
- else:
658
- console.print("Erro ao lançar nota", style="bold red")
770
+ else:
771
+ console.print(
772
+ "Todos os itens estão dentro da variação de custo permitida.",
773
+ style="bold green",
774
+ )
775
+ send_keys("{ENTER}")
776
+ observacao = "Todos os itens estão dentro da variação de custo permitida. Processo concluído com sucesso."
777
+
778
+ try:
779
+ await worker_sleep(2)
780
+ console.print(
781
+ "Verificando a existência de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n"
782
+ )
783
+ itens_variacao_maxima = await is_window_open_by_class(
784
+ "TFrmTelaSelecao", "TFrmTelaSelecao"
785
+ )
786
+ if itens_variacao_maxima["IsOpened"]:
787
+ app = Application().connect(class_name="TFrmTelaSelecao")
788
+ main_window = app["TFrmTelaSelecao"]
789
+ send_keys("%o")
790
+
791
+ await worker_sleep(2)
792
+ except:
793
+ observacao = (
794
+ "Falha ao clicar em OK no POP-UP de Itens que Ultrapassam a Variação Máxima de Custo."
795
+ )
796
+ return RpaRetornoProcessoDTO(
797
+ sucesso=False,
798
+ retorno=observacao,
799
+ status=RpaHistoricoStatusEnum.Falha,
800
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)],
801
+ )
802
+
803
+ await worker_sleep(5)
804
+
805
+
806
+ panel_TPage = main_window.child_window(class_name="TPage", title="Formulario")
807
+
808
+
809
+ nf_imported = await check_nota_importada(nota.get("nfe"))
810
+ if nf_imported.sucesso == True:
811
+ await worker_sleep(3)
812
+ console.print("\nVerifica se a nota ja foi lançada...")
813
+ nf_chave_acesso = int(nota.get("nfe"))
814
+ status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
815
+ if status_nf_emsys.get("status") == "Lançada":
816
+ console.print("\nNota lançada com sucesso, processo finalizado...", style="bold green")
817
+ return RpaRetornoProcessoDTO(
818
+ sucesso=True,
819
+ retorno="Nota Lançada com sucesso!",
820
+ status=RpaHistoricoStatusEnum.Sucesso,
821
+ )
822
+ else:
823
+ console.print("Erro ao lançar nota", style="bold red")
824
+ return RpaRetornoProcessoDTO(
825
+ sucesso=False,
826
+ retorno=f"Pop-up nota incluida encontrada, porém nota encontrada como 'já lançada' trazendo as seguintes informações: {nf_imported.retorno} - {error_work}",
827
+ status=RpaHistoricoStatusEnum.Falha,
828
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
829
+ )
830
+ else:
831
+ console.print("Erro ao lançar nota", style="bold red")
832
+ return RpaRetornoProcessoDTO(
833
+ sucesso=False,
834
+ retorno=f"Erro ao lançar nota, erro: {nf_imported.retorno}",
835
+ status=RpaHistoricoStatusEnum.Falha,
836
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
837
+ )
838
+
839
+ except Exception as error:
659
840
  return RpaRetornoProcessoDTO(
660
841
  sucesso=False,
661
- retorno=f"Erro ao lançar nota, erro: {nf_imported.retorno}",
842
+ retorno=f"Erro inesperado: {str(error)}",
662
843
  status=RpaHistoricoStatusEnum.Falha,
663
- tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
844
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)],
664
845
  )
665
846
 
666
847
  except Exception as ex: