worker-automate-hub 0.5.741__tar.gz → 0.5.743__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 (105) hide show
  1. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +12 -1
  4. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +20 -3
  5. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_503.py +24 -2
  6. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +3 -3
  7. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_9000.py +3 -3
  8. worker_automate_hub-0.5.743/worker_automate_hub/tasks/jobs/extracao_saldo_estoque.py +232 -0
  9. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/task_definitions.py +2 -0
  10. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/README.md +0 -0
  11. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/__init__.py +0 -0
  12. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/__init__.py +0 -0
  13. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/ahead_service.py +0 -0
  14. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/client.py +0 -0
  15. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/datalake_service.py +0 -0
  16. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/helpers/__init__.py +0 -0
  17. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  18. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/rdp_service.py +0 -0
  19. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/rpa_fila_service.py +0 -0
  20. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  21. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/api/webhook_service.py +0 -0
  22. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/cli.py +0 -0
  23. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/config/__init__.py +0 -0
  24. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/config/settings.py +0 -0
  25. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/config.py +0 -0
  26. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/core/so_manipulation.py +0 -0
  27. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/decorators/__init__.py +0 -0
  28. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/decorators/deprecation.py +0 -0
  29. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/decorators/rate_limit.py +0 -0
  30. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/decorators/repeat.py +0 -0
  31. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/decorators/retry.py +0 -0
  32. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/decorators/singleton.py +0 -0
  33. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/decorators/timeit.py +0 -0
  34. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/__init__.py +0 -0
  35. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dao/__init__.py +0 -0
  36. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  37. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dao/rpa_fila.py +0 -0
  38. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  39. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  40. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dao/rpa_robo.py +0 -0
  41. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dto/__init__.py +0 -0
  42. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  43. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  44. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
  45. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dto/rpa_sap_dto.py +0 -0
  46. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  47. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/__init__.py +0 -0
  48. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  49. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/abertura_livros_fiscais.py +0 -0
  50. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  51. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  52. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/cte_manual.py +0 -0
  53. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/cte_xml.py +0 -0
  54. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  55. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/devolucao_ctf.py +0 -0
  56. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/devolucao_ctf_35.py +0 -0
  57. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py +0 -0
  58. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  59. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  60. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  61. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  62. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  63. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  64. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_cte_1353.py +0 -0
  65. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_cte_333.py +0 -0
  66. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
  67. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  68. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  69. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  70. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  71. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  72. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  73. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  74. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  75. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  76. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/extracao_fechamento_contabil.py +0 -0
  77. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/extracao_fechamento_emsys.py +0 -0
  78. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +0 -0
  79. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/fidc_exportacao_docs_portal_b2b.py +0 -0
  80. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  81. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  82. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/fidc_retorno_cobranca.py +0 -0
  83. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos.py +0 -0
  84. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos_novo.py +0 -0
  85. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/integracao_contabil.py +0 -0
  86. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/integracao_contabil_generica.py +0 -0
  87. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/lancamento_pis_cofins.py +0 -0
  88. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/lancamento_rateio.py +0 -0
  89. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  90. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/login_emsys_versao_especifica.py +0 -0
  91. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/notas_faturamento_sap.py +0 -0
  92. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/opex_capex.py +0 -0
  93. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  94. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  95. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  96. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/tasks/task_executor.py +0 -0
  97. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/utils/__init__.py +0 -0
  98. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/utils/env.py +0 -0
  99. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  100. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/utils/logger.py +0 -0
  101. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/utils/toast.py +0 -0
  102. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/utils/updater.py +0 -0
  103. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/utils/util.py +0 -0
  104. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  105. {worker_automate_hub-0.5.741 → worker_automate_hub-0.5.743}/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.741
3
+ Version: 0.5.743
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.741"
3
+ version = "0.5.743"
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"
@@ -593,7 +593,18 @@ async def entrada_de_notas_15(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
593
593
  )
594
594
 
595
595
  await worker_sleep(8)
596
- await emsys.incluir_registro()
596
+ try:
597
+ retorno = await emsys.incluir_registro(chave_nfe=nota.get("nfe"))
598
+ if retorno.sucesso == True:
599
+ return RpaRetornoProcessoDTO(
600
+ sucesso=retorno.sucesso,
601
+ retorno=retorno.retorno,
602
+ status=retorno.status,
603
+ )
604
+ except:
605
+ console.print(
606
+ "A Nota fiscal ainda não foi incluída, continuando o processo..."
607
+ )
597
608
  await worker_sleep(5)
598
609
 
599
610
  # await emsys.verify_warning_and_error("Warning", "No")
@@ -713,7 +713,16 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
713
713
  pyautogui.write(nota["valorNota"])
714
714
  await worker_sleep(3)
715
715
 
716
- await emsys.incluir_registro()
716
+ try:
717
+ retorno = await emsys.incluir_registro()
718
+ if retorno.sucesso == True:
719
+ return RpaRetornoProcessoDTO(
720
+ sucesso=retorno.sucesso,
721
+ retorno=retorno.retorno,
722
+ status=retorno.status,
723
+ )
724
+ except:
725
+ console.print("A Nota fiscal ainda não foi incluída, continuando o processo...")
717
726
  await worker_sleep(25)
718
727
 
719
728
  console.print(
@@ -775,8 +784,16 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
775
784
  status=RpaHistoricoStatusEnum.Falha,
776
785
  tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
777
786
  )
778
-
779
- await emsys.incluir_registro()
787
+ try:
788
+ retorno = await emsys.incluir_registro()
789
+ if retorno.sucesso == True:
790
+ return RpaRetornoProcessoDTO(
791
+ sucesso=retorno.sucesso,
792
+ retorno=retorno.retorno,
793
+ status=retorno.status,
794
+ )
795
+ except:
796
+ console.print("A Nota fiscal ainda não foi incluída, continuando o processo...")
780
797
  await worker_sleep(25)
781
798
 
782
799
  console.print("Verificando a existencia de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n")
@@ -710,7 +710,18 @@ async def entrada_de_notas_503(task: RpaProcessoEntradaDTO) -> RpaRetornoProcess
710
710
  pyautogui.write(nota["valorNota"])
711
711
  await worker_sleep(3)
712
712
 
713
- await emsys.incluir_registro()
713
+ try:
714
+ retorno = await emsys.incluir_registro(chave_nfe=nota.get("nfe"))
715
+ if retorno.sucesso == True:
716
+ return RpaRetornoProcessoDTO(
717
+ sucesso=retorno.sucesso,
718
+ retorno=retorno.retorno,
719
+ status=retorno.status,
720
+ )
721
+ except:
722
+ console.print(
723
+ "A Nota fiscal ainda não foi incluída, continuando o processo..."
724
+ )
714
725
  await worker_sleep(25)
715
726
 
716
727
  console.print(
@@ -773,7 +784,18 @@ async def entrada_de_notas_503(task: RpaProcessoEntradaDTO) -> RpaRetornoProcess
773
784
  tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
774
785
  )
775
786
 
776
- await emsys.incluir_registro()
787
+ try:
788
+ retorno = await emsys.incluir_registro(chave_nfe=nota.get("nfe"))
789
+ if retorno.sucesso == True:
790
+ return RpaRetornoProcessoDTO(
791
+ sucesso=retorno.sucesso,
792
+ retorno=retorno.retorno,
793
+ status=retorno.status,
794
+ )
795
+ except:
796
+ console.print(
797
+ "A Nota fiscal ainda não foi incluída, continuando o processo..."
798
+ )
777
799
  await worker_sleep(25)
778
800
 
779
801
  console.print("Verificando a existencia de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n")
@@ -1172,9 +1172,9 @@ async def entrada_de_notas_9(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
1172
1172
  retorno = await emsys.incluir_registro(chave_nfe=nota.get("nfe"))
1173
1173
  if retorno.sucesso == True:
1174
1174
  return RpaRetornoProcessoDTO(
1175
- sucesso=error_work.sucesso,
1176
- retorno=error_work.retorno,
1177
- status=error_work.status,
1175
+ sucesso=retorno.sucesso,
1176
+ retorno=retorno.retorno,
1177
+ status=retorno.status,
1178
1178
  )
1179
1179
  except:
1180
1180
  console.print("A Nota fiscal ainda não foi incluída, continuando o processo...")
@@ -1190,9 +1190,9 @@ async def entrada_de_notas_9000(task: RpaProcessoEntradaDTO) -> RpaRetornoProces
1190
1190
  retorno = await emsys.incluir_registro(chave_nfe=nota.get("nfe"))
1191
1191
  if retorno.sucesso == True:
1192
1192
  return RpaRetornoProcessoDTO(
1193
- sucesso=error_work.sucesso,
1194
- retorno=error_work.retorno,
1195
- status=error_work.status,
1193
+ sucesso=retorno.sucesso,
1194
+ retorno=retorno.retorno,
1195
+ status=retorno.status,
1196
1196
  )
1197
1197
  except:
1198
1198
  console.print("A Nota fiscal ainda não foi incluída, continuando o processo...")
@@ -0,0 +1,232 @@
1
+ import asyncio
2
+ import os
3
+ from datetime import datetime
4
+ from pywinauto import Application, timings, findwindows
5
+ import sys
6
+ import io
7
+ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..')))
8
+
9
+ from worker_automate_hub.models.dto.rpa_historico_request_dto import (
10
+ RpaHistoricoStatusEnum,
11
+ RpaRetornoProcessoDTO,
12
+ RpaTagDTO,
13
+ RpaTagEnum,
14
+ )
15
+ from worker_automate_hub.models.dto.rpa_processo_entrada_dto import (
16
+ RpaProcessoEntradaDTO,
17
+ )
18
+ from rich.console import Console
19
+ import re
20
+ from pywinauto.keyboard import send_keys
21
+ import warnings
22
+ from pywinauto.application import Application
23
+ from worker_automate_hub.api.client import get_config_by_name, send_file
24
+ from worker_automate_hub.utils.util import (
25
+ kill_all_emsys,
26
+ login_emsys,
27
+ set_variable,
28
+ type_text_into_field,
29
+ worker_sleep,
30
+ )
31
+ from pywinauto_recorder.player import set_combobox
32
+
33
+ from datetime import timedelta
34
+ import pyautogui
35
+ from worker_automate_hub.utils.logger import logger
36
+ from worker_automate_hub.utils.utils_nfe_entrada import EMSys
37
+
38
+ emsys = EMSys()
39
+
40
+ console = Console()
41
+ pyautogui.PAUSE = 0.5
42
+ pyautogui.FAILSAFE = False
43
+
44
+
45
+ async def extracao_saldo_estoque(task: RpaProcessoEntradaDTO):
46
+ try:
47
+ config = await get_config_by_name("login_emsys")
48
+ periodo = task.configEntrada['periodo']
49
+ periodo_format = periodo.replace("/","")
50
+ filial = task.configEntrada['filialEmpresaOrigem']
51
+ historico_id = task.historico_id
52
+ await kill_all_emsys()
53
+
54
+ app = Application(backend="win32").start("C:\\Rezende\\EMSys3\\EMSys3_35.exe")
55
+ warnings.filterwarnings(
56
+ "ignore",
57
+ category=UserWarning,
58
+ message="32-bit application should be automated using 32-bit Python",
59
+ )
60
+ console.print("\nEMSys iniciando...", style="bold green")
61
+ return_login = await login_emsys(
62
+ config.conConfiguracao, app, task, filial_origem=filial
63
+ )
64
+
65
+ if return_login.sucesso == True:
66
+ type_text_into_field(
67
+ "Rel. Saldo Estoque ", app["TFrmMenuPrincipal"]["Edit"], True, "50"
68
+ )
69
+ pyautogui.press("enter")
70
+ await worker_sleep(2)
71
+ pyautogui.press("enter")
72
+
73
+ else:
74
+ logger.info(f"\nError Message: {return_login.retorno}")
75
+ console.print(f"\nError Message: {return_login.retorno}", style="bold red")
76
+ return return_login
77
+
78
+ await worker_sleep(2)
79
+
80
+ ##### Janela Relatório Saldos do Estoque #####
81
+ # Marcar check box data
82
+ app = Application().connect(class_name="TFrmRelSaldoEstoque", timeout=60)
83
+ main_window = app["TFrmRelSaldoEstoque"]
84
+ main_window.set_focus()
85
+
86
+ # Captura o campo de data
87
+ data_chk = main_window.child_window(
88
+ class_name="TCheckBox", found_index=3
89
+ ).click_input()
90
+
91
+ await worker_sleep(2)
92
+ # Insere a data
93
+ data_input = main_window.child_window(
94
+ class_name="TDBIEditDate", found_index=0
95
+ )
96
+
97
+ data_input.set_edit_text(periodo)
98
+
99
+ # Clicar em gerar relatório
100
+ btn_gerar = main_window.child_window(
101
+ class_name="TBitBtn", found_index=0
102
+ ).click_input()
103
+
104
+ # Aguarda até 60 segundos para a janela aparecer
105
+ timings.wait_until_passes(
106
+ timeout=1800,
107
+ retry_interval=1,
108
+ func=lambda: Application().connect(class_name="TFrmPreviewRelatorio")
109
+ )
110
+
111
+ await worker_sleep(2)
112
+
113
+ # Conecta à janela Preview Relatorio
114
+ app = Application().connect(class_name="TFrmPreviewRelatorio")
115
+ main_window = app["TFrmPreviewRelatorio"]
116
+ main_window.set_focus()
117
+
118
+ # Clicar em salvar
119
+ caminho = r"assets\\extracao_realtorios\\btn_salvar.png"
120
+ # Verifica se o arquivo existe
121
+ if os.path.isfile(caminho):
122
+ print("A imagem existe:", caminho)
123
+
124
+ # Procura a imagem na tela
125
+ pos = pyautogui.locateCenterOnScreen(caminho, confidence=0.9) # ajuste o confidence se necessário
126
+ if pos:
127
+ pyautogui.click(pos) # clica no centro da imagem
128
+ print("Clique realizado na imagem.")
129
+ else:
130
+ print("Imagem encontrada no disco, mas não está visível na tela.")
131
+ else:
132
+ print("A imagem NÃO existe:", caminho)
133
+
134
+ await worker_sleep(2)
135
+
136
+ # Conecta na janela Configuração para Salvar Arquivo
137
+ app = Application().connect(class_name="TFrmRelatorioFormato")
138
+ main_window = app["TFrmRelatorioFormato"]
139
+ main_window.set_focus()
140
+ # Acessa o ComboBox pelo identificador conhecido
141
+ combo = main_window.ComboBox
142
+
143
+ # Garante que existe "Excel" na lista
144
+ itens = combo.texts()
145
+ print("Itens do ComboBox:", itens)
146
+
147
+ # Seleciona o Excel correto (o segundo da lista, índice 8)
148
+ combo.select(8)
149
+
150
+ await worker_sleep(2)
151
+
152
+ # Clicar em Salvar
153
+ btn_salvar = main_window.child_window(
154
+ class_name="TBitBtn", found_index=1
155
+ ).click_input()
156
+
157
+ await worker_sleep(5)
158
+
159
+ # Conecta na janela "Salvar para arquivo"
160
+ app = Application().connect(title_re="Salvar para arquivo", timeout=30)
161
+ main_window = app.window(title_re="Salvar para arquivo")
162
+
163
+ # Campo Nome (Edit) - use set_edit_text para evitar problemas de escape
164
+ campo_nome = main_window.child_window(class_name="Edit", control_id=1148).wrapper_object()
165
+ caminho_arquivo = rf"C:\Users\automatehub\Downloads\saldo_estoque_{periodo_format}_{filial}.xlsx"
166
+ campo_nome.set_focus()
167
+ campo_nome.set_edit_text(caminho_arquivo)
168
+
169
+ print("✅ Texto inserido no campo Nome")
170
+
171
+ await worker_sleep(2)
172
+
173
+ # Clicar em ok para salvar
174
+ btn_ok = main_window.child_window(
175
+ class_name="Button", found_index=0
176
+ ).click_input()
177
+
178
+ await worker_sleep(5)
179
+
180
+ caminho_img = r"assets\\extracao_realtorios\\janela_printing.png"
181
+
182
+ # Aguarda até a janela com título "Printing" (ou "Salvando...") fechar
183
+ try:
184
+ app = Application().connect(title_re="Printing") # conecta se existir
185
+ janela = app.window(title_re="Printing")
186
+
187
+ print("⏳ Aguardando a janela 'Printing' sumir...")
188
+ janela.wait_not("visible", timeout=60) # espera até 60 segundos
189
+ print("✅ Janela 'Printing' fechada.")
190
+
191
+ except findwindows.ElementNotFoundError:
192
+ print("⚠️ Janela 'Printing' não estava aberta.")
193
+
194
+ nome_com_extensao = f'saldo_estoque_{periodo_format}_{filial}.xlsx'
195
+ # lê o arquivo
196
+ with open(f"{caminho_arquivo}", "rb") as file:
197
+ file_bytes = io.BytesIO(file.read())
198
+
199
+ console.print("Enviar Excel para o BOF")
200
+ try:
201
+ await send_file(
202
+ historico_id,
203
+ nome_com_extensao,
204
+ "xlsx",
205
+ file_bytes,
206
+ file_extension="xlsx",
207
+ )
208
+ console.print("Removendo arquivo XLS da pasta downloads")
209
+ os.remove(f"{caminho_arquivo}")
210
+
211
+ except Exception as e:
212
+ console.print(f"Erro ao enviar o arquivo: {e}", style="bold red")
213
+ return RpaRetornoProcessoDTO(
214
+ sucesso=False,
215
+ retorno=f"Erro ao enviar o arquivo: {e}",
216
+ status=RpaHistoricoStatusEnum.Falha,
217
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)],
218
+ )
219
+
220
+ print("")
221
+
222
+ except Exception as ex:
223
+ retorno = f"Erro Processo Fechamento Balancete: {str(ex)}"
224
+ logger.error(retorno)
225
+ console.print(retorno, style="bold red")
226
+ return RpaRetornoProcessoDTO(
227
+ sucesso=False,
228
+ retorno=retorno,
229
+ status=RpaHistoricoStatusEnum.Falha,
230
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)],
231
+ )
232
+
@@ -31,6 +31,7 @@ from worker_automate_hub.tasks.jobs.entrada_de_notas_9000 import entrada_de_nota
31
31
  from worker_automate_hub.tasks.jobs.entrada_de_notas_7139 import entrada_de_notas_7139
32
32
  from worker_automate_hub.tasks.jobs.entrada_de_notas_36 import entrada_de_notas_36
33
33
  from worker_automate_hub.tasks.jobs.entrada_de_notas_503 import entrada_de_notas_503
34
+ from worker_automate_hub.tasks.jobs.extracao_saldo_estoque import extracao_saldo_estoque
34
35
  from worker_automate_hub.tasks.jobs.fidc_remessa_cobranca_cnab240 import (
35
36
  remessa_cobranca_cnab240,
36
37
  )
@@ -198,6 +199,7 @@ task_definitions = {
198
199
  "58de6a65-68cd-4e68-ab28-31b543b6de02": transferencias, # Logistica reverse
199
200
  "ca7ac373-e8e7-4ac2-aa7e-298070e0d9a0": extracao_fechamento_contabil,
200
201
  "8c28726d-458d-4119-afa0-202695b79a8f": extracao_fechamento_emsys,
202
+ "16debe45-3520-4f63-acfe-ef0e8784fcab": extracao_saldo_estoque
201
203
  }
202
204
 
203
205