worker-automate-hub 0.5.87__py3-none-any.whl → 0.5.89__py3-none-any.whl

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.
@@ -0,0 +1,70 @@
1
+ from mimetypes import guess_type
2
+
3
+ import aiohttp
4
+ from rich.console import Console
5
+
6
+ from worker_automate_hub.config.settings import load_env_config
7
+ from worker_automate_hub.utils.logger import logger
8
+
9
+ console = Console()
10
+
11
+
12
+ async def send_file_to_datalake(
13
+ file: bytes, filename: str, file_extension: str = None
14
+ ) -> None:
15
+ """
16
+ Envia um arquivo para a datalake.
17
+
18
+ Args:
19
+ file (bytes): O conteúdo binário do arquivo.
20
+ filename (str): O nome do arquivo.
21
+ file_extension (str, optional): A extensão do arquivo. Caso não seja
22
+ passada, tenta determinar com base no nome do arquivo.
23
+
24
+ Raises:
25
+ aiohttp.ClientResponseError: Caso a API retorne um status de erro.
26
+ Exception: Caso ocorra um erro genérico durante o processo.
27
+
28
+ Returns:
29
+ None
30
+ """
31
+ try:
32
+ env_config, _ = load_env_config()
33
+
34
+ if not file_extension:
35
+ file_extension = filename.split(".")[-1]
36
+
37
+ mime_type, _ = guess_type(filename)
38
+ if not mime_type:
39
+ mime_type = "application/octet-stream"
40
+
41
+ body = aiohttp.FormData()
42
+ body.add_field("file", file, filename=filename, content_type=mime_type)
43
+
44
+ headers_basic = {"Authorization": f"Basic {env_config['API_AUTHORIZATION']}"}
45
+
46
+ async with aiohttp.ClientSession(
47
+ connector=aiohttp.TCPConnector(ssl=False)
48
+ ) as session:
49
+ async with session.post(
50
+ f"{env_config['API_BASE_URL']}/arquivo/send-file-to-datalake",
51
+ data=body,
52
+ headers=headers_basic,
53
+ ) as response:
54
+ response.raise_for_status()
55
+
56
+ response_text = await response.text()
57
+
58
+ log_msg = f"\nSucesso ao enviar arquivo: {filename}\nResposta da API: {response_text}"
59
+ console.print(log_msg, style="bold green")
60
+ logger.info(log_msg)
61
+
62
+ except aiohttp.ClientResponseError as e:
63
+ err_msg = f"Erro na resposta da API: {e.status} - {e.message}\nDetalhes: {await e.response.text()}"
64
+ console.print(f"\n{err_msg}\n", style="bold red")
65
+ logger.error(err_msg)
66
+
67
+ except Exception as e:
68
+ err_msg = f"Erro ao enviar arquivo: {str(e)}"
69
+ console.print(f"\n{err_msg}\n", style="bold red")
70
+ logger.error(err_msg)
@@ -826,8 +826,8 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
826
826
  console.print("Aguardando pop de operacação concluida \n")
827
827
  while i < max_attempts:
828
828
  try:
829
- app = Application().connect(class_name="TFrmProcessamentoFEe2", timeout=10)
830
- main_window = app["TFrmProcessamentoFEe2"]
829
+ app = Application().connect(class_name="TFrmProcessamentoNFe2", timeout=10)
830
+ main_window = app["TFrmProcessamentoNFe2"]
831
831
 
832
832
  await worker_sleep(5)
833
833
  information_pop_up = await is_window_open_by_class("TMessageForm", "TMessageForm")
@@ -840,9 +840,9 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
840
840
  btn_ok = information_operacao_concluida.child_window(class_name="TButton")
841
841
  btn_ok.click()
842
842
  await worker_sleep(4)
843
- main_window.close()
844
843
  except:
845
844
  pyautogui.press('enter')
845
+ await worker_sleep(4)
846
846
  break
847
847
  else:
848
848
  retorno = f"Pop up nao mapeado para seguimento do robo {msg_pop_up} \nEtapas Executadas:\n{steps}"
@@ -880,16 +880,18 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
880
880
 
881
881
 
882
882
  console.print("Verificando se a nota foi transmitida com sucesso")
883
- app = Application().connect(class_name="TFrmProcessamentoFEe2", timeout=15)
884
- main_window = app["TFrmProcessamentoFEe2"]
883
+ app = Application().connect(class_name="TFrmProcessamentoNFe2", timeout=15)
884
+ main_window = app["TFrmProcessamentoNFe2"]
885
885
  main_window.set_focus()
886
886
 
887
- rect = main_window.rectangle()
887
+ tpanel_footer = main_window.child_window(class_name="TGroupBox", found_index=0)
888
+
889
+ rect = tpanel_footer.rectangle()
888
890
  center_x = (rect.left + rect.right) // 2
889
891
  center_y = (rect.top + rect.bottom) // 2
890
892
 
891
- adjusted_center_y = center_y + 10
892
- double_click(coords=(center_x, adjusted_center_y))
893
+ pyautogui.moveTo(center_x, center_y)
894
+ double_click(coords=(center_x, center_y))
893
895
 
894
896
  with pyautogui.hold('ctrl'):
895
897
  pyautogui.press('c')
@@ -907,7 +909,7 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
907
909
  main_window.close()
908
910
  else:
909
911
  get_error_msg = await get_text_display_window(pop_up_status)
910
- console.print(f"Msg Rejeição: {get_error_msg}")
912
+ console.print(f"Mensagem Rejeição: {get_error_msg}")
911
913
  retorno = f"Erro ao transmitir, mensagem de rejeição {get_error_msg} \nEtapas Executadas:\n{steps}"
912
914
  return RpaRetornoProcessoDTO(
913
915
  sucesso=False,
@@ -3806,11 +3806,12 @@ async def gerenciador_nf_header(periodo: str, cod_cliente: str) -> RpaRetornoPro
3806
3806
 
3807
3807
  console.print("Verificando a situação...\n")
3808
3808
  situacao_text = situacao_select.window_text()
3809
- if "não transmitida" in situacao_text.lower():
3809
+ if "XPTO" in situacao_text.lower():
3810
3810
  console.print("Situação corretamente selecionada...\n")
3811
3811
  else:
3812
3812
  situacao_select.click()
3813
- set_combobox("||List", "Não Transmitida")
3813
+ set_combobox("||List", "Todas")
3814
+ #set_combobox("||List", "Não Transmitida")
3814
3815
 
3815
3816
  console.print("Inserindo o codigo do cliente...\n")
3816
3817
  field_cod_cliente.click()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: worker-automate-hub
3
- Version: 0.5.87
3
+ Version: 0.5.89
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
@@ -2,6 +2,7 @@ worker_automate_hub/__init__.py,sha256=LV28uQvBfpPIqudGIMJmVB8E941MjXHcu8DMoX5n8
2
2
  worker_automate_hub/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  worker_automate_hub/api/ahead_service.py,sha256=QbNrZf9q7fS0s-S5fZVytqC7dINi9u2f6aB6SDrGVVA,2231
4
4
  worker_automate_hub/api/client.py,sha256=uYmKPEdt2zUS7tKYJpk4NqXAGS413rpR4m33Eq3_5IU,19840
5
+ worker_automate_hub/api/datalake_service.py,sha256=UZTxbJFZSQ0Po2N5lWg4gRZBr0Zr0BGR5f6uGjmWCOQ,2387
5
6
  worker_automate_hub/api/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
7
  worker_automate_hub/api/helpers/api_helpers.py,sha256=SkheO2fXexeh-a4shr8Qzsz_kZhuSG0DJ7kbODctRbM,3696
7
8
  worker_automate_hub/api/rdp_service.py,sha256=L7orr60FkJr6zjETtA4me8tRYCW9m1g-i5pq6AILUFo,1647
@@ -37,7 +38,7 @@ worker_automate_hub/tasks/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
37
38
  worker_automate_hub/tasks/jobs/coleta_dje_process.py,sha256=UkLWTC5Ub2qBb0yY-8IZ0DLLOVJOfNTq_z9krx_t25Q,29476
38
39
  worker_automate_hub/tasks/jobs/conexao_rdp.py,sha256=S6QC4xhuo0pB5FjaUJZNMm1LIgEjpjifReCTBDqxH-U,11719
39
40
  worker_automate_hub/tasks/jobs/descartes.py,sha256=0bMCJ0xIcK8TLSgjF6taAbGFLMU-sGDVFIhUYSRtrbg,41092
40
- worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py,sha256=xy7k_MYVHWBcOjD_rnVO1fUSxIBudwWb8eA1UFnF2Ec,86704
41
+ worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py,sha256=BfX6N-L8wYW9xpwfPk2L6G5jYhlqT5NWrRUFfMR17Rk,86806
41
42
  worker_automate_hub/tasks/jobs/ecac_estadual_go.py,sha256=dKkf22nH5gp3RErq5u0UzRsKyJ81fc6ZZ4vLtUuMwHA,21002
42
43
  worker_automate_hub/tasks/jobs/ecac_estadual_main.py,sha256=8WmKe4-MRtzHobXz2S4YBDNN8alfawkC-BBlRY-mn1g,1726
43
44
  worker_automate_hub/tasks/jobs/ecac_estadual_mt.py,sha256=C26zmpGQGUq6sP9lU9nanM3Fje-rkyx5tjwmRy4lyL8,25300
@@ -73,10 +74,10 @@ worker_automate_hub/utils/get_creds_gworkspace.py,sha256=ZJ0IIEjM4IXIV9rwfbOZ1V1
73
74
  worker_automate_hub/utils/logger.py,sha256=FYV9fg0_RAYJF_ZOCJEbqQAiCXlXk2gMpvUU1rzT_xs,671
74
75
  worker_automate_hub/utils/toast.py,sha256=xPHc5r5uOxB_cZlCzm13Kt2qSKLLFZALncU6Qg3Ft68,1162
75
76
  worker_automate_hub/utils/updater.py,sha256=en2FCGhI8aZ-JNP3LQm64NJDc4awCNW7UhbVlwDl49Y,7972
76
- worker_automate_hub/utils/util.py,sha256=ZMbWjvZ6vbDgkosFAt2xUJGoAJOIZhxNfJyYplvyN3Q,162310
77
+ worker_automate_hub/utils/util.py,sha256=g0wcqb9m9Xd-SI4-FP-UODu0qxP_FUa-2uA147Zm1dU,162342
77
78
  worker_automate_hub/utils/utils_nfe_entrada.py,sha256=iYpOs7fb7C3bY61QHySr00xlDNzrrCP0zaexOpBPuaQ,31930
78
79
  worker_automate_hub/worker.py,sha256=CT-poyP1ZYvubArYsnnNd9oJ53SPaDwgr6p6keS3nI4,6248
79
- worker_automate_hub-0.5.87.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
80
- worker_automate_hub-0.5.87.dist-info/METADATA,sha256=Zr2zxQd6u1VHpUZNWhXz_w7LQnm8HzWvHrB6cV0krvA,2894
81
- worker_automate_hub-0.5.87.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
82
- worker_automate_hub-0.5.87.dist-info/RECORD,,
80
+ worker_automate_hub-0.5.89.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
81
+ worker_automate_hub-0.5.89.dist-info/METADATA,sha256=ZAm6ZEqvFquHPmnr1rrhbaUOpnGQ6bsvFY7wDJVdwPk,2894
82
+ worker_automate_hub-0.5.89.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
83
+ worker_automate_hub-0.5.89.dist-info/RECORD,,