worker-automate-hub 0.5.831__tar.gz → 0.5.833__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.831 → worker_automate_hub-0.5.833}/PKG-INFO +1 -1
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/pyproject.toml +1 -1
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/devolucao_produtos.py +103 -25
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/README.md +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/ahead_service.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/client.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/datalake_service.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/helpers/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/rdp_service.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/rpa_fila_service.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/rpa_historico_service.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/webhook_service.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/cli.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/config/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/config/settings.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/config.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/core/so_manipulation.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/deprecation.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/rate_limit.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/repeat.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/retry.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/singleton.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/timeit.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dao/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dao/rpa_fila.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dao/rpa_robo.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dto/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dto/rpa_sap_dto.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/abertura_livros_fiscais.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/cte_manual.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/cte_xml.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/devolucao_ctf.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/devolucao_ctf_35.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_cte_1353.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_cte_333.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_22.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_37.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_503.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/entrada_de_notas_9000.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/extracao_fechamento_contabil.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/extracao_fechamento_emsys.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/extracao_saldo_estoque_fiscal.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/fidc_exportacao_docs_portal_b2b.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/fidc_retorno_cobranca.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/geracao_aprovacao_pedidos_novo.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/geracao_balancetes_filial.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/integracao_contabil.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/integracao_contabil_generica.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/lancamento_pis_cofins.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/lancamento_rateio.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/login_emsys_versao_especifica.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/notas_faturamento_sap.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/opex_capex.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/playground.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/task_definitions.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/task_executor.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/__init__.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/env.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/logger.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/toast.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/updater.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/util.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
- {worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/worker.py +0 -0
|
@@ -2,6 +2,7 @@ import asyncio
|
|
|
2
2
|
import warnings
|
|
3
3
|
from datetime import datetime
|
|
4
4
|
import json
|
|
5
|
+
import ast
|
|
5
6
|
import io
|
|
6
7
|
import pyautogui
|
|
7
8
|
from pywinauto.application import Application
|
|
@@ -127,7 +128,7 @@ def normalize_config_entrada(cfg: dict) -> dict:
|
|
|
127
128
|
for k in chaves_remover:
|
|
128
129
|
cfg.pop(k, None)
|
|
129
130
|
return cfg
|
|
130
|
-
|
|
131
|
+
|
|
131
132
|
|
|
132
133
|
# --- fim do normalizador ---
|
|
133
134
|
|
|
@@ -148,6 +149,7 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
148
149
|
descricao_fornecedor = nota.get("descricaoFornecedor", "")
|
|
149
150
|
historico_id = task.historico_id
|
|
150
151
|
cod_fornecedor = descricao_fornecedor.split(" - ")[0]
|
|
152
|
+
fornecedor = descricao_fornecedor.split(" - ")[1]
|
|
151
153
|
identificador = nota.get("identificador", "")
|
|
152
154
|
url_retorno = nota.get("urlRetorno", "")
|
|
153
155
|
multiplicador_timeout = int(float(task.sistemas[0].timeout))
|
|
@@ -158,12 +160,40 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
158
160
|
res = await get_notas_produtos(int(cod_fornecedor), int(empresa), itens)
|
|
159
161
|
by_code = res.get("por_codigo", {}) or {} # dict dinâmico por código
|
|
160
162
|
|
|
163
|
+
# ========= EXTRAÇÃO DE UM CFOP (PRIMEIRO ENCONTRADO) =========
|
|
164
|
+
cfop = None # Apenas um CFOP em variável
|
|
165
|
+
for info in by_code.values():
|
|
166
|
+
notas_raw = info.get("notas") or []
|
|
167
|
+
# garante que seja lista
|
|
168
|
+
if isinstance(notas_raw, (str, int)):
|
|
169
|
+
notas_raw = [notas_raw]
|
|
170
|
+
|
|
171
|
+
achou = False
|
|
172
|
+
for n in notas_raw:
|
|
173
|
+
try:
|
|
174
|
+
# Caso venha como string de dict: "{'nota': '1401414', 'cfop': '1102'}"
|
|
175
|
+
if isinstance(n, str) and n.strip().startswith("{"):
|
|
176
|
+
nota_dict = ast.literal_eval(n)
|
|
177
|
+
elif isinstance(n, dict):
|
|
178
|
+
nota_dict = n
|
|
179
|
+
else:
|
|
180
|
+
nota_dict = None
|
|
181
|
+
|
|
182
|
+
if isinstance(nota_dict, dict) and "cfop" in nota_dict:
|
|
183
|
+
cfop = nota_dict["cfop"]
|
|
184
|
+
achou = True
|
|
185
|
+
break
|
|
186
|
+
except Exception:
|
|
187
|
+
continue
|
|
188
|
+
if achou:
|
|
189
|
+
break
|
|
190
|
+
|
|
161
191
|
# Constrói os itens na estrutura usada no fluxo de UI
|
|
162
192
|
itens_ui = []
|
|
163
|
-
notas_encontradas = [] # acumula notas para deduplicar depois
|
|
193
|
+
notas_encontradas = [] # acumula apenas os números das notas (strings) para deduplicar depois
|
|
164
194
|
|
|
165
195
|
for it in itens:
|
|
166
|
-
# aceita "
|
|
196
|
+
# aceita "descricaoProduto" contendo o código, ou "codigo"/"codigoProduto"
|
|
167
197
|
desc = it.get("descricaoProduto", "") or ""
|
|
168
198
|
nums = re.findall(r"\d+", desc)
|
|
169
199
|
if not nums:
|
|
@@ -178,7 +208,7 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
178
208
|
else:
|
|
179
209
|
cod = int(nums[0])
|
|
180
210
|
|
|
181
|
-
# quantidade (como int)
|
|
211
|
+
# quantidade (como int > 0)
|
|
182
212
|
qtd_raw = it.get("quantidade", it.get("qtd"))
|
|
183
213
|
try:
|
|
184
214
|
qtd = int(qtd_raw)
|
|
@@ -190,14 +220,35 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
190
220
|
info = by_code.get(cod) or {}
|
|
191
221
|
valor_unit = float(info.get("valorUnitario", 0) or 0)
|
|
192
222
|
|
|
193
|
-
# Normaliza "notas" para lista
|
|
194
|
-
|
|
195
|
-
if isinstance(
|
|
196
|
-
|
|
197
|
-
|
|
223
|
+
# Normaliza "notas" para lista SÓ com os números das notas (strings)
|
|
224
|
+
notas_item_raw = info.get("notas") or []
|
|
225
|
+
if isinstance(notas_item_raw, (str, int)):
|
|
226
|
+
notas_item_raw = [notas_item_raw]
|
|
227
|
+
|
|
228
|
+
notas_item_nums = []
|
|
229
|
+
for n in notas_item_raw:
|
|
230
|
+
# 1) se já vier dict
|
|
231
|
+
if isinstance(n, dict):
|
|
232
|
+
nota_num = n.get("nota")
|
|
233
|
+
if nota_num is not None:
|
|
234
|
+
notas_item_nums.append(str(nota_num))
|
|
235
|
+
continue
|
|
236
|
+
|
|
237
|
+
# 2) se vier string de dict "{'nota': '1401414', 'cfop': '1102'}"
|
|
238
|
+
if isinstance(n, str) and n.strip().startswith("{"):
|
|
239
|
+
try:
|
|
240
|
+
d = ast.literal_eval(n)
|
|
241
|
+
if isinstance(d, dict) and d.get("nota") is not None:
|
|
242
|
+
notas_item_nums.append(str(d["nota"]))
|
|
243
|
+
continue
|
|
244
|
+
except Exception:
|
|
245
|
+
pass
|
|
246
|
+
|
|
247
|
+
# 3) fallback: manter como string (pode ser já o número)
|
|
248
|
+
notas_item_nums.append(str(n))
|
|
198
249
|
|
|
199
250
|
# Acumula para a lista geral (será deduplicada depois)
|
|
200
|
-
notas_encontradas.extend(
|
|
251
|
+
notas_encontradas.extend(notas_item_nums)
|
|
201
252
|
|
|
202
253
|
itens_ui.append(
|
|
203
254
|
{
|
|
@@ -205,7 +256,7 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
205
256
|
"quantidade": qtd,
|
|
206
257
|
"valor_unitario": valor_unit,
|
|
207
258
|
"valor_total_item": round(valor_unit * qtd, 2),
|
|
208
|
-
"notas":
|
|
259
|
+
"notas": notas_item_nums, # vínculo item ↔ números das notas
|
|
209
260
|
}
|
|
210
261
|
)
|
|
211
262
|
|
|
@@ -220,11 +271,12 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
220
271
|
|
|
221
272
|
data = {
|
|
222
273
|
"nf_referencia": nf_ref, # ex.: ['1418727', '1410744']
|
|
223
|
-
"itens": itens_ui,
|
|
274
|
+
"itens": itens_ui, # cada item com suas notas (apenas números)
|
|
224
275
|
"totais": {
|
|
225
276
|
"valor_final": round(sum(i["valor_total_item"] for i in itens_ui), 2)
|
|
226
277
|
},
|
|
227
278
|
"itens_por_nota": itens_por_nota, # para uso direto no fluxo de UI
|
|
279
|
+
"cfop": cfop, # <<< CFOP único extraído e disponível no payload
|
|
228
280
|
}
|
|
229
281
|
# ========= FIM DA MONTAGEM DO DATA =========
|
|
230
282
|
|
|
@@ -316,11 +368,13 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
316
368
|
app = Application().connect(class_name="TFrmPreVenda")
|
|
317
369
|
main_window = app["TFrmPreVenda"]
|
|
318
370
|
console.print("Verificar estado...")
|
|
319
|
-
|
|
320
|
-
|
|
371
|
+
cfop_dentro = ["5101", "5102", "5103", "5104", "1102"]
|
|
372
|
+
if cfop not in cfop_dentro:
|
|
373
|
+
modelo = "DEVOLUCAO DE COMPRA DE MERCADORIAS SC"
|
|
321
374
|
else:
|
|
322
375
|
modelo = "DEVOLUCAO DE COMPRA DE MERCADORIAS - TRIBUTADO"
|
|
323
376
|
|
|
377
|
+
|
|
324
378
|
# Inserir modelo
|
|
325
379
|
console.print("Inserir modelo...")
|
|
326
380
|
select_modelo = main_window.child_window(
|
|
@@ -401,7 +455,22 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
401
455
|
await worker_sleep(1)
|
|
402
456
|
input_codigo.type_keys(codigo, with_spaces=True, set_foreground=True)
|
|
403
457
|
keyboard.send_keys("{TAB}")
|
|
404
|
-
await worker_sleep(
|
|
458
|
+
await worker_sleep(5)
|
|
459
|
+
try:
|
|
460
|
+
# Verificar item sem saldo
|
|
461
|
+
app_item_ss = Application().connect(class_name="TFrmPesquisaItem")
|
|
462
|
+
item_ss = app_item_ss["TFrmPesquisaItem"]
|
|
463
|
+
btn_ss = item_ss.child_window(
|
|
464
|
+
title="&Cancela", class_name="TDBIBitBtn").click_input()
|
|
465
|
+
# adiciona no dicionário de erros
|
|
466
|
+
itens_sem_saldo[codigo] = {
|
|
467
|
+
"quantidade": quantidade,
|
|
468
|
+
"valor_unitario": val_unitario,
|
|
469
|
+
}
|
|
470
|
+
continue
|
|
471
|
+
|
|
472
|
+
except:
|
|
473
|
+
pass
|
|
405
474
|
|
|
406
475
|
# --- Unidade (UNI) ---
|
|
407
476
|
console.print("Selecionar Unidade...")
|
|
@@ -471,7 +540,7 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
471
540
|
had_saldo = True
|
|
472
541
|
try:
|
|
473
542
|
console.print("Verificar mensagem de saldo menor....")
|
|
474
|
-
# img_saldo = r"C:\Users\automatehub\
|
|
543
|
+
# img_saldo = r"C:\Users\automatehub\Desktop\img_leo\saldo_menor.png"
|
|
475
544
|
img_saldo = "assets\\devolucao_produtos\\saldo_menor.png"
|
|
476
545
|
img_saldo_bool = False
|
|
477
546
|
|
|
@@ -885,7 +954,6 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
885
954
|
|
|
886
955
|
# Inserir mensagem padrão
|
|
887
956
|
console.print("Inserir mensagem...")
|
|
888
|
-
fornecedor = "Disbal"
|
|
889
957
|
lista_fornecedores = ["Disbal", "Pepsico", "Punta Balena"]
|
|
890
958
|
mensagem = (
|
|
891
959
|
"PRODUTOS VENCIDOS"
|
|
@@ -929,24 +997,33 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
929
997
|
app = Application().connect(class_name="TFrmDadosTributacaoProdutoPreVenda")
|
|
930
998
|
trib = app["TFrmDadosTributacaoProdutoPreVenda"]
|
|
931
999
|
|
|
932
|
-
if
|
|
1000
|
+
if "disbal" in fornecedor.lower():
|
|
1001
|
+
select_trib.select("020 - 020 - ICMS 12% RED. BASE 41,667")
|
|
1002
|
+
|
|
1003
|
+
elif "punta balena" in fornecedor.lower():
|
|
1004
|
+
select_trib.select("000 - 000 - ICMS - 12%")
|
|
1005
|
+
|
|
1006
|
+
elif "vitrola" in fornecedor.lower():
|
|
1007
|
+
select_trib.select("041 - 041 - ICMS - NAO INCIDENTE ")
|
|
1008
|
+
|
|
1009
|
+
elif estado == "RS" and "pepsico" in fornecedor.lower():
|
|
933
1010
|
select_trib = trib.child_window(class_name="TDBIComboBox", found_index=4)
|
|
934
1011
|
select_trib.select("051 - 051 - ICMS 17% RED BC 29,4118% - TRIBUT.CORRETA")
|
|
935
1012
|
print("Selecionado: 051 - 051 - ICMS 17% RED BC 29,4118% - TRIBUT.CORRETA")
|
|
1013
|
+
|
|
1014
|
+
elif estado == "RS":
|
|
1015
|
+
select_trib = trib.child_window(class_name="TDBIComboBox", found_index=4)
|
|
1016
|
+
select_trib.select("051 - 051 - ICMS 17% RED BC 29,4118% - TRIBUT.CORRETA")
|
|
1017
|
+
print("Selecionado: 051 - 051 - ICMS 17% RED BC 29,4118% - TRIBUT.CORRETA")
|
|
1018
|
+
|
|
936
1019
|
elif estado == "SC":
|
|
937
1020
|
select_trib = trib.child_window(class_name="TDBIComboBox", found_index=4)
|
|
938
1021
|
select_trib.select("000 - 000 - ICMS - 12%")
|
|
939
1022
|
print("Selecionado: 000 - 000 - ICMS - 12%")
|
|
1023
|
+
|
|
940
1024
|
else:
|
|
941
1025
|
print("Estado diferente dos mapeados")
|
|
942
1026
|
|
|
943
|
-
if fornecedor == "Disbal":
|
|
944
|
-
select_trib.select("020 - 020 - ICMS 12% RED. BASE 41,667")
|
|
945
|
-
elif fornecedor == "Punta Balena":
|
|
946
|
-
select_trib.select("000 - 000 - ICMS - 12%")
|
|
947
|
-
elif fornecedor == "Vitrola":
|
|
948
|
-
select_trib.select("041 - 041 - ICMS - NAO INCIDENTE ")
|
|
949
|
-
|
|
950
1027
|
await worker_sleep(2)
|
|
951
1028
|
|
|
952
1029
|
trib.child_window(title="&OK", class_name="TBitBtn").click_input()
|
|
@@ -1109,3 +1186,4 @@ async def devolucao_produtos(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
|
|
|
1109
1186
|
status=RpaHistoricoStatusEnum.Sucesso,
|
|
1110
1187
|
tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)],
|
|
1111
1188
|
)
|
|
1189
|
+
|
|
File without changes
|
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/__init__.py
RENAMED
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/ahead_service.py
RENAMED
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/api/rdp_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/config/__init__.py
RENAMED
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/config/settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/repeat.py
RENAMED
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/retry.py
RENAMED
|
File without changes
|
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/decorators/timeit.py
RENAMED
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/tasks/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/__init__.py
RENAMED
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/env.py
RENAMED
|
File without changes
|
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/logger.py
RENAMED
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/toast.py
RENAMED
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/updater.py
RENAMED
|
File without changes
|
{worker_automate_hub-0.5.831 → worker_automate_hub-0.5.833}/worker_automate_hub/utils/util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|