worker-automate-hub 0.5.828__tar.gz → 0.5.830__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.
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/PKG-INFO +1 -1
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/pyproject.toml +1 -1
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/client.py +86 -2
- worker_automate_hub-0.5.830/worker_automate_hub/tasks/jobs/devolucao_produtos.py +1102 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/task_definitions.py +8 -2
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/utils/util.py +17 -4
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/README.md +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/ahead_service.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/datalake_service.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/helpers/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/rdp_service.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/rpa_fila_service.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/rpa_historico_service.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/webhook_service.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/cli.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/config/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/config/settings.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/config.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/core/so_manipulation.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/decorators/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/decorators/deprecation.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/decorators/rate_limit.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/decorators/repeat.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/decorators/retry.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/decorators/singleton.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/decorators/timeit.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dao/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dao/rpa_fila.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dao/rpa_robo.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dto/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dto/rpa_sap_dto.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/abertura_livros_fiscais.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/cte_manual.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/cte_xml.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/devolucao_ctf.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/devolucao_ctf_35.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_cte_1353.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_cte_333.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_22.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_37.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_503.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/entrada_de_notas_9000.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/extracao_fechamento_contabil.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/extracao_fechamento_emsys.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque_fiscal.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/fidc_exportacao_docs_portal_b2b.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/fidc_retorno_cobranca.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos_novo.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/geracao_balancetes_filial.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/integracao_contabil.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/integracao_contabil_generica.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/lancamento_pis_cofins.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/lancamento_rateio.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/login_emsys_versao_especifica.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/notas_faturamento_sap.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/opex_capex.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/playground.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/tasks/task_executor.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/utils/__init__.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/utils/env.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/utils/logger.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/utils/toast.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/utils/updater.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
- {worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/worker.py +0 -0
{worker_automate_hub-0.5.828 → worker_automate_hub-0.5.830}/worker_automate_hub/api/client.py
RENAMED
|
@@ -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.
|