worker-automate-hub 0.5.86__py3-none-any.whl → 0.5.88__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)
@@ -324,6 +324,44 @@ async def entrada_de_notas_505(task: RpaProcessoEntradaDTO) -> RpaRetornoProcess
324
324
  tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
325
325
  )
326
326
 
327
+ await worker_sleep(2)
328
+ console.print("Navegando pela Janela de Nota Fiscal de Entrada...\n")
329
+ app = Application().connect(class_name="TFrmNotaFiscalEntrada")
330
+ main_window = app["TFrmNotaFiscalEntrada"]
331
+
332
+ main_window.set_focus()
333
+ console.print("Acessando a aba de Pagamentos... \n")
334
+ panel_TPage = main_window.child_window(class_name="TPage", title="Formulario")
335
+ panel_TTabSheet = panel_TPage.child_window(class_name="TcxCustomInnerTreeView")
336
+ panel_TTabSheet.wait("visible")
337
+ panel_TTabSheet.click()
338
+ send_keys("{DOWN " + ("7") + "}")
339
+
340
+ panel_TPage = main_window.child_window(class_name="TPage", title="Formulario")
341
+ panel_TTabSheet = panel_TPage.child_window(class_name="TPageControl")
342
+
343
+ panel_TabPagamento = panel_TTabSheet.child_window(class_name="TTabSheet")
344
+
345
+ panel_TabParcelamento = panel_TTabSheet.child_window(title="Parcelamento")
346
+
347
+ tipo_cobranca = panel_TabParcelamento.child_window(
348
+ class_name="TDBIComboBox", found_index=0
349
+ )
350
+
351
+ console.print("Verificando o tipo de cobrança selecionado... \n")
352
+ tipo_selecionado = tipo_cobranca.window_text()
353
+ if "boleto" in tipo_selecionado.lower() or 'carteira' in tipo_selecionado.lower():
354
+ console.print(f"Tipo de cobrança corretamente selecionado {tipo_selecionado}... \n")
355
+ else:
356
+ console.print(f"Tipo de cobrança não foi selecionado corretamente, interagindo com o campo para selecionar o campo corretamente... \n")
357
+ tipo_cobranca.click()
358
+ try:
359
+ set_combobox("||List", "BANCO DO BRASIL BOLETO")
360
+ except:
361
+ set_combobox("||List", "CARTEIRA")
362
+
363
+ await worker_sleep(2)
364
+
327
365
  # Inclui registro
328
366
  console.print(f"Incluindo registro...\n")
329
367
  await worker_sleep(6)
@@ -391,4 +429,4 @@ async def entrada_de_notas_505(task: RpaProcessoEntradaDTO) -> RpaRetornoProcess
391
429
 
392
430
  finally:
393
431
  # Deleta o xml
394
- await delete_xml(nota.get("nfe"))
432
+ await delete_xml(nota.get("nfe"))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: worker-automate-hub
3
- Version: 0.5.86
3
+ Version: 0.5.88
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
@@ -53,7 +54,7 @@ worker_automate_hub/tasks/jobs/entrada_de_notas_34.py,sha256=MZNrG5KArW43lM_aPHy
53
54
  worker_automate_hub/tasks/jobs/entrada_de_notas_36.py,sha256=sFe3aYh6MrpK18aJdddsOG8QmJthbra9EhwLA_jvyWg,23194
54
55
  worker_automate_hub/tasks/jobs/entrada_de_notas_39.py,sha256=KDCOYx--J-6CFN3Af6sQbMLRGGjsuGHn_yB1ydEfDRE,35945
55
56
  worker_automate_hub/tasks/jobs/entrada_de_notas_500.py,sha256=JRHdejuNpQxaDCHcJ0eo_Sf2gngYdzannDpmPyj7zdc,34006
56
- worker_automate_hub/tasks/jobs/entrada_de_notas_505.py,sha256=7VR9udGS7NCBE9WEJA9_vpL5sTM7TFEMcCjEumBdokQ,15681
57
+ worker_automate_hub/tasks/jobs/entrada_de_notas_505.py,sha256=daN2YyJUgLwCxvTuelL9JUzWzuq0aG8IWUhvatFrCWI,17503
57
58
  worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py,sha256=ZUaowPxGxydx_US5VBcrGV7oMr7Br4Vil9EwovsRitU,17855
58
59
  worker_automate_hub/tasks/jobs/entrada_de_notas_9.py,sha256=vUj25yHxkCNhpyOU5Vk81gsYcTTH1TJ3yn-b8N00JfQ,52857
59
60
  worker_automate_hub/tasks/jobs/exemplo_processo.py,sha256=nV0iLoip2FH2-FhLmhX3nPqsfl_MPufZ3E5Q5krJvdc,3544
@@ -76,7 +77,7 @@ worker_automate_hub/utils/updater.py,sha256=en2FCGhI8aZ-JNP3LQm64NJDc4awCNW7UhbV
76
77
  worker_automate_hub/utils/util.py,sha256=ZMbWjvZ6vbDgkosFAt2xUJGoAJOIZhxNfJyYplvyN3Q,162310
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.86.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
80
- worker_automate_hub-0.5.86.dist-info/METADATA,sha256=ff80QPuHY_Z6CKunpDdTO0xwhZpbDm0wZu_vOTS50VI,2894
81
- worker_automate_hub-0.5.86.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
82
- worker_automate_hub-0.5.86.dist-info/RECORD,,
80
+ worker_automate_hub-0.5.88.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
81
+ worker_automate_hub-0.5.88.dist-info/METADATA,sha256=8gTgzQet0ffK8xespG6aZSX2MNQvsBfe_eFRvlhph4Y,2894
82
+ worker_automate_hub-0.5.88.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
83
+ worker_automate_hub-0.5.88.dist-info/RECORD,,