worker-automate-hub 0.5.828__tar.gz → 0.5.829__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 (110) hide show
  1. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/client.py +86 -2
  4. worker_automate_hub-0.5.829/worker_automate_hub/tasks/jobs/devolucao_produtos.py +991 -0
  5. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/task_definitions.py +8 -2
  6. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/utils/util.py +17 -4
  7. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/README.md +0 -0
  8. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/__init__.py +0 -0
  9. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/__init__.py +0 -0
  10. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/ahead_service.py +0 -0
  11. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/datalake_service.py +0 -0
  12. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/helpers/__init__.py +0 -0
  13. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  14. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/rdp_service.py +0 -0
  15. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/rpa_fila_service.py +0 -0
  16. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  17. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/api/webhook_service.py +0 -0
  18. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/cli.py +0 -0
  19. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/config/__init__.py +0 -0
  20. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/config/settings.py +0 -0
  21. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/config.py +0 -0
  22. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/core/so_manipulation.py +0 -0
  23. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/decorators/__init__.py +0 -0
  24. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/decorators/deprecation.py +0 -0
  25. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/decorators/rate_limit.py +0 -0
  26. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/decorators/repeat.py +0 -0
  27. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/decorators/retry.py +0 -0
  28. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/decorators/singleton.py +0 -0
  29. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/decorators/timeit.py +0 -0
  30. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/__init__.py +0 -0
  31. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dao/__init__.py +0 -0
  32. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  33. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dao/rpa_fila.py +0 -0
  34. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  35. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  36. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dao/rpa_robo.py +0 -0
  37. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dto/__init__.py +0 -0
  38. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  39. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  40. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
  41. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dto/rpa_sap_dto.py +0 -0
  42. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  43. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/__init__.py +0 -0
  44. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  45. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/abertura_livros_fiscais.py +0 -0
  46. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  47. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  48. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/cte_manual.py +0 -0
  49. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/cte_xml.py +0 -0
  50. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  51. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/devolucao_ctf.py +0 -0
  52. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/devolucao_ctf_35.py +0 -0
  53. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py +0 -0
  54. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  55. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  56. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  57. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  58. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  59. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  60. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_cte_1353.py +0 -0
  61. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_cte_333.py +0 -0
  62. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  63. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
  64. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  65. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_22.py +0 -0
  66. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  67. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  68. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  69. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  70. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_37.py +0 -0
  71. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
  72. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  73. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_503.py +0 -0
  74. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  75. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  76. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  77. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/entrada_de_notas_9000.py +0 -0
  78. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  79. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/extracao_fechamento_contabil.py +0 -0
  80. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/extracao_fechamento_emsys.py +0 -0
  81. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque.py +0 -0
  82. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque_fiscal.py +0 -0
  83. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +0 -0
  84. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/fidc_exportacao_docs_portal_b2b.py +0 -0
  85. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  86. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  87. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/fidc_retorno_cobranca.py +0 -0
  88. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos.py +0 -0
  89. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos_novo.py +0 -0
  90. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/geracao_balancetes_filial.py +0 -0
  91. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/integracao_contabil.py +0 -0
  92. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/integracao_contabil_generica.py +0 -0
  93. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/lancamento_pis_cofins.py +0 -0
  94. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/lancamento_rateio.py +0 -0
  95. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  96. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/login_emsys_versao_especifica.py +0 -0
  97. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/notas_faturamento_sap.py +0 -0
  98. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/opex_capex.py +0 -0
  99. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  100. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  101. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  102. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/tasks/task_executor.py +0 -0
  103. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/utils/__init__.py +0 -0
  104. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/utils/env.py +0 -0
  105. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  106. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/utils/logger.py +0 -0
  107. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/utils/toast.py +0 -0
  108. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/utils/updater.py +0 -0
  109. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  110. {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.829}/worker_automate_hub/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: worker-automate-hub
3
- Version: 0.5.828
3
+ Version: 0.5.829
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.828"
3
+ version = "0.5.829"
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"
@@ -2,12 +2,13 @@ from decimal import ROUND_HALF_UP, Decimal
2
2
  import threading
3
3
  from typing import Optional
4
4
  import aiohttp
5
-
5
+ import re
6
+ from collections import defaultdict
6
7
  import aiohttp
7
8
  import requests
8
9
  from aiohttp import ClientSession
9
10
  from rich.console import Console
10
-
11
+ from typing import List, Dict, Any
11
12
  from worker_automate_hub.api.helpers.api_helpers import handle_api_response
12
13
  from worker_automate_hub.config.settings import load_env_config
13
14
  from worker_automate_hub.models.dao.rpa_configuracao import RpaConfiguracao
@@ -498,6 +499,89 @@ async def get_valor_remessa_cobranca(date: str):
498
499
  logger.info(err_msg)
499
500
 
500
501
 
502
+ async def get_notas_produtos(codFornecedor: int, codEmpresa: int, itens: List[Dict[str, Any]]) -> Dict[str, Any]:
503
+ """
504
+ Função única:
505
+ - Converte itens (aceita chaves codigo/codigoProduto e quantidade/qtd)
506
+ - Chama /nf-supplier/checker com Authorization: Basic
507
+ - Normaliza tipos do retorno
508
+ - Entrega:
509
+ {
510
+ "lista": [ {codItem, qtdTotal, notas, valorUnitario}, ... ],
511
+ "por_codigo": { codItem: {...}, ... }
512
+ }
513
+
514
+ Retorno esperado da API (ex):
515
+ [
516
+ {"codItem": 19969, "qtdTotal": 15, "notas": ["1418727","1410744"], "valorUnitario": 5.29},
517
+ {"codItem": 29272, "qtdTotal": 10, "notas": ["1418727"], "valorUnitario": 7.12}
518
+ ]
519
+ """
520
+ # --- Carrega config
521
+ env_config, _ = load_env_config()
522
+ url_base = env_config["API_BASE_URL"].rstrip("/")
523
+ url = f"{url_base}/nf-supplier/checker"
524
+
525
+ # --- Header Basic (aceita token puro ou já "Basic ...")
526
+ token = (env_config.get("API_AUTHORIZATION") or "").strip()
527
+ auth_header = token if token.lower().startswith("basic ") else f"Basic {token}"
528
+
529
+ # --- Converte itens de entrada
530
+ itens_convertidos: List[Dict[str, int]] = []
531
+ for it in itens or []:
532
+ codigo = re.findall(r"\d+", it.get("descricaoProduto"))[0]
533
+ quantidade = it.get("quantidade", it.get("qtd"))
534
+ if codigo is None or quantidade is None:
535
+ logger.warning(f"Item incompleto: {it}")
536
+ console.print(f"⚠️ Item incompleto: {it}", style="yellow")
537
+ continue
538
+ try:
539
+ itens_convertidos.append({"codigo": int(codigo), "quantidade": int(quantidade)})
540
+ except Exception:
541
+ logger.warning(f"Item inválido (não numérico): {it}")
542
+ console.print(f"⚠️ Item inválido (não numérico): {it}", style="yellow")
543
+
544
+ body = {
545
+ "codFornecedor": int(codFornecedor),
546
+ "codEmpresa": int(codEmpresa),
547
+ "itens": itens_convertidos,
548
+ }
549
+ headers = {"Authorization": auth_header, "Content-Type": "application/json"}
550
+
551
+ # --- Chamada HTTP
552
+ async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
553
+ async with session.post(url, json=body, headers=headers) as resp:
554
+ text = await resp.text()
555
+ if resp.status != 200:
556
+ raise RuntimeError(f"HTTP {resp.status} ao chamar {url}: {text}")
557
+ try:
558
+ data = await resp.json()
559
+ except Exception:
560
+ raise RuntimeError(f"Resposta não-JSON do servidor: {text[:600]}")
561
+
562
+ console.print(f"✅ Resposta da API: {data}", style="bold green")
563
+ logger.info(f"nf-supplier/checker -> {data}")
564
+
565
+ if not isinstance(data, list):
566
+ raise ValueError(f"Formato inesperado da API: {type(data)} -> {data}")
567
+
568
+ # --- Normaliza tipos e monta índices
569
+ lista_norm: List[Dict[str, Any]] = []
570
+ por_codigo: Dict[int, Dict[str, Any]] = {}
571
+
572
+ for row in data:
573
+ cod = int(row.get("codItem"))
574
+ item_norm = {
575
+ "codItem": cod,
576
+ "qtdTotal": int(row.get("qtdTotal", 0)),
577
+ "notas": [str(n) for n in (row.get("notas") or [])],
578
+ "valorUnitario": float(row.get("valorUnitario", 0.0)),
579
+ }
580
+ lista_norm.append(item_norm)
581
+ por_codigo[cod] = item_norm
582
+
583
+ return {"lista": lista_norm, "por_codigo": por_codigo}
584
+
501
585
  async def get_status_nf_emsys(chave: int):
502
586
  """
503
587
  Procura o status de nota fiscal no EMSYS.