worker-automate-hub 0.5.15__py3-none-any.whl → 0.5.17__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.
- worker_automate_hub/tasks/jobs/coleta_dje_process.py +12 -0
- worker_automate_hub/tasks/jobs/conexao_rdp.py +4 -4
- worker_automate_hub/tasks/jobs/descartes.py +21 -18
- worker_automate_hub/tasks/jobs/ecac_estadual_go.py +8 -6
- worker_automate_hub/tasks/jobs/ecac_estadual_main.py +4 -2
- worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +8 -6
- worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +5 -3
- worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +9 -7
- worker_automate_hub/tasks/jobs/ecac_federal.py +11 -8
- worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +14 -12
- worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +19 -11
- worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +23 -11
- worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +63 -32
- worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +56 -28
- worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +54 -38
- worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +33 -16
- worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +53 -28
- worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +40 -14
- worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +28 -14
- worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +18 -12
- worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +40 -13
- worker_automate_hub/tasks/jobs/exemplo_processo.py +3 -0
- worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +3 -3
- worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +9 -7
- worker_automate_hub/tasks/jobs/login_emsys.py +2 -1
- worker_automate_hub/tasks/jobs/playground.py +4 -0
- worker_automate_hub/tasks/jobs/sped_fiscal.py +24 -0
- worker_automate_hub/tasks/jobs/transferencias.py +28 -26
- worker_automate_hub/tasks/task_executor.py +3 -0
- worker_automate_hub/utils/util.py +151 -141
- worker_automate_hub/utils/utils_nfe_entrada.py +10 -0
- {worker_automate_hub-0.5.15.dist-info → worker_automate_hub-0.5.17.dist-info}/METADATA +1 -1
- {worker_automate_hub-0.5.15.dist-info → worker_automate_hub-0.5.17.dist-info}/RECORD +35 -35
- {worker_automate_hub-0.5.15.dist-info → worker_automate_hub-0.5.17.dist-info}/WHEEL +0 -0
- {worker_automate_hub-0.5.15.dist-info → worker_automate_hub-0.5.17.dist-info}/entry_points.txt +0 -0
@@ -34,6 +34,8 @@ from worker_automate_hub.models.dao.rpa_configuracao import RpaConfiguracao
|
|
34
34
|
from worker_automate_hub.models.dto.rpa_historico_request_dto import (
|
35
35
|
RpaHistoricoStatusEnum,
|
36
36
|
RpaRetornoProcessoDTO,
|
37
|
+
RpaTagDTO,
|
38
|
+
RpaTagEnum,
|
37
39
|
)
|
38
40
|
from worker_automate_hub.models.dto.rpa_processo_entrada_dto import (
|
39
41
|
RpaProcessoEntradaDTO,
|
@@ -334,7 +336,7 @@ async def login_emsys_fiscal(
|
|
334
336
|
return RpaRetornoProcessoDTO(
|
335
337
|
sucesso=False,
|
336
338
|
retorno=f"Erro: Não foi possivel obter as credencias para login",
|
337
|
-
status=RpaHistoricoStatusEnum.Falha,
|
339
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
338
340
|
)
|
339
341
|
|
340
342
|
main_window.set_focus()
|
@@ -370,7 +372,7 @@ async def login_emsys_fiscal(
|
|
370
372
|
return RpaRetornoProcessoDTO(
|
371
373
|
sucesso=False,
|
372
374
|
retorno="Pop-up Warning/Information ao tentar realizar login",
|
373
|
-
status=RpaHistoricoStatusEnum.Falha,
|
375
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
374
376
|
)
|
375
377
|
else:
|
376
378
|
edit_password.type_keys("{ENTER}")
|
@@ -381,7 +383,7 @@ async def login_emsys_fiscal(
|
|
381
383
|
return RpaRetornoProcessoDTO(
|
382
384
|
sucesso=False,
|
383
385
|
retorno="Erro ao abrir a janela para seleção da empresa, tela não encontrada",
|
384
|
-
status=RpaHistoricoStatusEnum.Falha,
|
386
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
385
387
|
)
|
386
388
|
|
387
389
|
# Seleciona a filial do emsys
|
@@ -407,7 +409,7 @@ async def login_emsys_fiscal(
|
|
407
409
|
return RpaRetornoProcessoDTO(
|
408
410
|
sucesso=False,
|
409
411
|
retorno=f"Erro: Não foi possível acessar a filial {filial_cod}, esta com o CNPJ bloqueado, por favor verificar",
|
410
|
-
status=RpaHistoricoStatusEnum.Falha,
|
412
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
|
411
413
|
)
|
412
414
|
|
413
415
|
information_pop_up = await is_window_open_by_class("TMessageForm","TMessageForm")
|
@@ -430,7 +432,7 @@ async def login_emsys_fiscal(
|
|
430
432
|
return RpaRetornoProcessoDTO(
|
431
433
|
sucesso=False,
|
432
434
|
retorno=f"Erro: Botão No, nao existe no pop-up information após a seleção da filial da empresa",
|
433
|
-
status=RpaHistoricoStatusEnum.Falha,
|
435
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
434
436
|
)
|
435
437
|
|
436
438
|
max_attempts = 10
|
@@ -453,7 +455,7 @@ async def login_emsys_fiscal(
|
|
453
455
|
return RpaRetornoProcessoDTO(
|
454
456
|
sucesso=False,
|
455
457
|
retorno="Erro ao abrir o EMSys Fiscal, tela de login não encontrada",
|
456
|
-
status=RpaHistoricoStatusEnum.Falha,
|
458
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
457
459
|
)
|
458
460
|
|
459
461
|
|
@@ -461,7 +463,7 @@ async def login_emsys_fiscal(
|
|
461
463
|
log_msg = f"Erro ao realizar login no EMSys Fiscal, erro: {e}..."
|
462
464
|
console.print(log_msg, style="bold red")
|
463
465
|
return RpaRetornoProcessoDTO(
|
464
|
-
sucesso=False, retorno=log_msg, status=RpaHistoricoStatusEnum.Falha
|
466
|
+
sucesso=False, retorno=log_msg, status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
465
467
|
)
|
466
468
|
|
467
469
|
|
@@ -596,7 +598,7 @@ async def login_emsys(
|
|
596
598
|
return RpaRetornoProcessoDTO(
|
597
599
|
sucesso=False,
|
598
600
|
retorno="Falha ao logar no EMSys!",
|
599
|
-
status=RpaHistoricoStatusEnum.Falha,
|
601
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
600
602
|
)
|
601
603
|
|
602
604
|
else:
|
@@ -605,7 +607,7 @@ async def login_emsys(
|
|
605
607
|
logger.info(log_msg)
|
606
608
|
console.print(log_msg, style="bold red")
|
607
609
|
return RpaRetornoProcessoDTO(
|
608
|
-
sucesso=False, retorno=log_msg, status=RpaHistoricoStatusEnum.Falha
|
610
|
+
sucesso=False, retorno=log_msg, status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
609
611
|
)
|
610
612
|
|
611
613
|
|
@@ -889,7 +891,7 @@ def select_model_capa() -> RpaRetornoProcessoDTO:
|
|
889
891
|
return RpaRetornoProcessoDTO(
|
890
892
|
sucesso=False,
|
891
893
|
retorno="Não foi possivel encontrar o campo 'Documento'",
|
892
|
-
status=RpaHistoricoStatusEnum.Falha,
|
894
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
893
895
|
)
|
894
896
|
pyautogui.click(field)
|
895
897
|
pyautogui.write("Nfe")
|
@@ -902,7 +904,7 @@ def select_model_capa() -> RpaRetornoProcessoDTO:
|
|
902
904
|
return RpaRetornoProcessoDTO(
|
903
905
|
sucesso=False,
|
904
906
|
retorno=f"Não foi possivel encontrar o campo 'Documento'",
|
905
|
-
status=RpaHistoricoStatusEnum.Falha,
|
907
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
906
908
|
)
|
907
909
|
|
908
910
|
pyautogui.click(field)
|
@@ -962,7 +964,7 @@ async def download_xml(
|
|
962
964
|
return RpaRetornoProcessoDTO(
|
963
965
|
sucesso=False,
|
964
966
|
retorno=f"Erro ao obter autenticação para o GCP",
|
965
|
-
status=RpaHistoricoStatusEnum.Falha,
|
967
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
966
968
|
)
|
967
969
|
|
968
970
|
# Inicializando o serviço do Google Drive
|
@@ -992,7 +994,7 @@ async def download_xml(
|
|
992
994
|
return RpaRetornoProcessoDTO(
|
993
995
|
sucesso=False,
|
994
996
|
retorno=f"Nenhum arquivo com o nome {chave_nota} foi encontrado no Google Drive",
|
995
|
-
status=RpaHistoricoStatusEnum.Falha,
|
997
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
996
998
|
)
|
997
999
|
|
998
1000
|
# Pegando o primeiro arquivo encontrado
|
@@ -1027,7 +1029,7 @@ async def download_xml(
|
|
1027
1029
|
return RpaRetornoProcessoDTO(
|
1028
1030
|
sucesso=False,
|
1029
1031
|
retorno=f"Erro ao baixar o arquivo do Google Drive, erro: {e}",
|
1030
|
-
status=RpaHistoricoStatusEnum.Falha,
|
1032
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
1031
1033
|
)
|
1032
1034
|
|
1033
1035
|
|
@@ -1050,7 +1052,7 @@ async def get_xml_outras_empresas() -> RpaRetornoProcessoDTO:
|
|
1050
1052
|
return RpaRetornoProcessoDTO(
|
1051
1053
|
sucesso=False,
|
1052
1054
|
retorno=f"Erro - Janela principal de importação do XML não foi encontrada.",
|
1053
|
-
status=RpaHistoricoStatusEnum.Falha,
|
1055
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
1054
1056
|
)
|
1055
1057
|
|
1056
1058
|
console.print("Selecionando Notas de outras empresas... \n")
|
@@ -1062,7 +1064,7 @@ async def get_xml_outras_empresas() -> RpaRetornoProcessoDTO:
|
|
1062
1064
|
return RpaRetornoProcessoDTO(
|
1063
1065
|
sucesso=False,
|
1064
1066
|
retorno=f"Erro - Botão Notas de outras empresas não foi encontrado.",
|
1065
|
-
status=RpaHistoricoStatusEnum.Falha,
|
1067
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
1066
1068
|
)
|
1067
1069
|
|
1068
1070
|
await worker_sleep(3)
|
@@ -1103,7 +1105,7 @@ async def get_xml_outras_empresas() -> RpaRetornoProcessoDTO:
|
|
1103
1105
|
return RpaRetornoProcessoDTO(
|
1104
1106
|
sucesso=False,
|
1105
1107
|
retorno=f"Erro - Número máximo de tentativas atingido. A tela para importar o Nota de Outra Empresa não foi encontrada.",
|
1106
|
-
status=RpaHistoricoStatusEnum.Falha,
|
1108
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
1107
1109
|
)
|
1108
1110
|
else:
|
1109
1111
|
return RpaRetornoProcessoDTO(
|
@@ -1442,7 +1444,7 @@ async def import_nfe() -> RpaRetornoProcessoDTO:
|
|
1442
1444
|
return RpaRetornoProcessoDTO(
|
1443
1445
|
sucesso=False,
|
1444
1446
|
retorno="Não foi possivel localizar o campo 'Importar NF-e' ",
|
1445
|
-
status=RpaHistoricoStatusEnum.Falha,
|
1447
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
1446
1448
|
)
|
1447
1449
|
except:
|
1448
1450
|
app = Application().connect(title="Nota Fiscal de Entrada")
|
@@ -1557,7 +1559,7 @@ async def transmitir_nota(
|
|
1557
1559
|
return RpaRetornoProcessoDTO(
|
1558
1560
|
sucesso=False,
|
1559
1561
|
retorno=log_msg,
|
1560
|
-
status=RpaHistoricoStatusEnum.Falha,
|
1562
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
1561
1563
|
)
|
1562
1564
|
|
1563
1565
|
return RpaRetornoProcessoDTO(
|
@@ -2251,14 +2253,14 @@ async def select_documento_type(document_type: str) -> RpaRetornoProcessoDTO:
|
|
2251
2253
|
return RpaRetornoProcessoDTO(
|
2252
2254
|
sucesso=False,
|
2253
2255
|
retorno=f"Não foi possivel selecionar o tipo do documento",
|
2254
|
-
status=RpaHistoricoStatusEnum.Falha,
|
2256
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2255
2257
|
)
|
2256
2258
|
|
2257
2259
|
except Exception as e:
|
2258
2260
|
return RpaRetornoProcessoDTO(
|
2259
2261
|
sucesso=False,
|
2260
2262
|
retorno=f"Não foi possivel selecionar o tipo do documento, erro: {e} ",
|
2261
|
-
status=RpaHistoricoStatusEnum.Falha,
|
2263
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2262
2264
|
)
|
2263
2265
|
|
2264
2266
|
|
@@ -2359,7 +2361,7 @@ async def warnings_after_xml_imported() -> RpaRetornoProcessoDTO:
|
|
2359
2361
|
return RpaRetornoProcessoDTO(
|
2360
2362
|
sucesso=False,
|
2361
2363
|
retorno=f"Warning: Erro ao clicar em NO: {e}",
|
2362
|
-
status=RpaHistoricoStatusEnum.Falha,
|
2364
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2363
2365
|
)
|
2364
2366
|
|
2365
2367
|
else:
|
@@ -2367,7 +2369,7 @@ async def warnings_after_xml_imported() -> RpaRetornoProcessoDTO:
|
|
2367
2369
|
return RpaRetornoProcessoDTO(
|
2368
2370
|
sucesso=False,
|
2369
2371
|
retorno="Warning - Erro após a importação do arquivo, não foi encontrado o botão No para andamento do processo... \n",
|
2370
|
-
status=RpaHistoricoStatusEnum.Falha,
|
2372
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2371
2373
|
)
|
2372
2374
|
|
2373
2375
|
|
@@ -2399,13 +2401,14 @@ async def error_after_xml_imported() -> RpaRetornoProcessoDTO:
|
|
2399
2401
|
return RpaRetornoProcessoDTO(
|
2400
2402
|
sucesso=False,
|
2401
2403
|
retorno=f"Não foi possivel seguir devido ao numero da chave ja existir no banco de dados, erro: {control_text}... \n",
|
2402
|
-
|
2404
|
+
|
2405
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2403
2406
|
)
|
2404
2407
|
else:
|
2405
2408
|
return RpaRetornoProcessoDTO(
|
2406
2409
|
sucesso=False,
|
2407
2410
|
retorno=f"Erro do banco de dados: {control_text} \n",
|
2408
|
-
status=RpaHistoricoStatusEnum.Falha,
|
2411
|
+
status=RpaHistoricoStatusEnum.Falha, tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2409
2412
|
)
|
2410
2413
|
|
2411
2414
|
elif "XML já foi importado anteriormente" in control_text:
|
@@ -2441,6 +2444,7 @@ async def error_before_persist_record() -> RpaRetornoProcessoDTO:
|
|
2441
2444
|
sucesso=False,
|
2442
2445
|
retorno=f"Erro ao incluir registro, As datas das parcelas não podem ser menores que a data de entrada da nota: {control_text} \n",
|
2443
2446
|
status=RpaHistoricoStatusEnum.Falha,
|
2447
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
|
2444
2448
|
)
|
2445
2449
|
|
2446
2450
|
elif capturar_proxima_mensagem:
|
@@ -2448,13 +2452,12 @@ async def error_before_persist_record() -> RpaRetornoProcessoDTO:
|
|
2448
2452
|
sucesso=False,
|
2449
2453
|
retorno=f"Erro ao incluir registro: {control_text} \n",
|
2450
2454
|
status=RpaHistoricoStatusEnum.Falha,
|
2455
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2451
2456
|
)
|
2452
2457
|
except:
|
2453
2458
|
console.print("Erro ao capturar mensagem de erro")
|
2454
2459
|
|
2455
|
-
|
2456
|
-
# TODO: Melhorar o retorno
|
2457
|
-
async def itens_not_found_supplier(xml: str):
|
2460
|
+
async def itens_not_found_supplier(xml: str) -> RpaRetornoProcessoDTO:
|
2458
2461
|
try:
|
2459
2462
|
username = getpass.getuser()
|
2460
2463
|
console.print("Verificando se existe tela de multiplas referencias.\n")
|
@@ -2466,14 +2469,15 @@ async def itens_not_found_supplier(xml: str):
|
|
2466
2469
|
|
2467
2470
|
if itens_fornecedor["IsOpened"] == True:
|
2468
2471
|
console.print("Tela de multiplas referencias existe.\n")
|
2469
|
-
return
|
2470
|
-
|
2471
|
-
|
2472
|
-
|
2473
|
-
|
2474
|
-
|
2472
|
+
return RpaRetornoProcessoDTO(
|
2473
|
+
sucesso=False,
|
2474
|
+
retorno="Tela de Itens fornecedor - Multiplas referencias",
|
2475
|
+
status=RpaHistoricoStatusEnum.Falha,
|
2476
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
|
2477
|
+
)
|
2478
|
+
|
2475
2479
|
console.print("Iteragindo com a tela de itens não localizados // NCM ...\n")
|
2476
|
-
|
2480
|
+
|
2477
2481
|
app = Application().connect(class_name="TFrmAguarde", timeout=60)
|
2478
2482
|
|
2479
2483
|
max_attempts = 60
|
@@ -2482,7 +2486,7 @@ async def itens_not_found_supplier(xml: str):
|
|
2482
2486
|
while i < max_attempts:
|
2483
2487
|
try:
|
2484
2488
|
main_window = app["TMessageForm"]
|
2485
|
-
console.print(
|
2489
|
+
console.print("Janela 'TMessageForm' encontrada!")
|
2486
2490
|
break
|
2487
2491
|
except Exception as e:
|
2488
2492
|
console.print(f"Erro ao tentar acessar TMessageForm: {e}")
|
@@ -2490,48 +2494,44 @@ async def itens_not_found_supplier(xml: str):
|
|
2490
2494
|
"TFrmAguarde", "TFrmAguarde"
|
2491
2495
|
)
|
2492
2496
|
if janela_aguarde["IsOpened"] == True:
|
2493
|
-
console.print(
|
2497
|
+
console.print("Aguardando tela de aguarde desaparecer ou conectar...\n")
|
2494
2498
|
else:
|
2495
2499
|
try:
|
2496
2500
|
main_window = app["TMessageForm"]
|
2497
2501
|
if main_window.exists():
|
2498
|
-
console.print(
|
2502
|
+
console.print("Janela 'TMessageForm' encontrada!")
|
2499
2503
|
break
|
2500
2504
|
except:
|
2501
|
-
return
|
2502
|
-
|
2503
|
-
|
2504
|
-
|
2505
|
-
|
2505
|
+
return RpaRetornoProcessoDTO(
|
2506
|
+
sucesso=True,
|
2507
|
+
retorno="Tela de aguardar carregada - Seguindo com andamento do processo (NCM).",
|
2508
|
+
status=RpaHistoricoStatusEnum.Sucesso
|
2509
|
+
)
|
2510
|
+
|
2506
2511
|
await worker_sleep(3)
|
2507
2512
|
i += 1
|
2508
2513
|
|
2509
2514
|
window_title = main_window.window_text()
|
2510
2515
|
|
2511
2516
|
if "Confirm" in window_title or "Seleciona Itens Fornecedor" in window_title:
|
2512
|
-
console.print(
|
2517
|
+
console.print("Itens nao localizados para o fornecedor...\n")
|
2513
2518
|
if main_window.exists():
|
2514
2519
|
main_window.type_keys("%n")
|
2515
|
-
|
2516
2520
|
await worker_sleep(10)
|
2517
|
-
|
2518
|
-
|
2519
|
-
)
|
2521
|
+
|
2522
|
+
console.print("Verificando a existencia de tela de selecionar Itens...\n")
|
2520
2523
|
itens_fornecedor = await is_window_open_by_class(
|
2521
2524
|
"TFrmSelecionaItensFornecedor", "TFrmSelecionaItensFornecedor"
|
2522
2525
|
)
|
2523
2526
|
|
2524
2527
|
if itens_fornecedor["IsOpened"] == True:
|
2525
|
-
return
|
2526
|
-
|
2527
|
-
|
2528
|
-
|
2529
|
-
}
|
2530
|
-
else:
|
2531
|
-
console.print(
|
2532
|
-
"Não possui a existencia de tela de selecionar Itens Fornecedor...\n"
|
2528
|
+
return RpaRetornoProcessoDTO(
|
2529
|
+
sucesso=True,
|
2530
|
+
retorno="Tela de Itens fornecedor - Multiplas referencias",
|
2531
|
+
status=RpaHistoricoStatusEnum.Sucesso,
|
2533
2532
|
)
|
2534
|
-
|
2533
|
+
else:
|
2534
|
+
console.print("Não possui a existencia de tela de selecionar Itens Fornecedor...\n")
|
2535
2535
|
|
2536
2536
|
await worker_sleep(10)
|
2537
2537
|
console.print("Verificando a existe da tela dos itens com erro...\n")
|
@@ -2539,31 +2539,31 @@ async def itens_not_found_supplier(xml: str):
|
|
2539
2539
|
max_attempts = 60
|
2540
2540
|
i = 0
|
2541
2541
|
while i < max_attempts:
|
2542
|
-
logs_erro = await is_window_open_by_class(
|
2542
|
+
logs_erro = await is_window_open_by_class(
|
2543
|
+
"TFrmExibeLogErroImportacaoNfe","TFrmExibeLogErroImportacaoNfe"
|
2544
|
+
)
|
2543
2545
|
if logs_erro["IsOpened"] == True:
|
2544
2546
|
break
|
2545
2547
|
else:
|
2546
|
-
console.print(
|
2548
|
+
console.print("Aguardando confirmação de tela de erro importação NFe...\n")
|
2547
2549
|
try:
|
2548
2550
|
app = Application().connect(class_name="TFrmAguarde")
|
2549
2551
|
main_window = app["TMessageForm"]
|
2550
|
-
console.print(
|
2552
|
+
console.print("Janela 'Information' encontrada!")
|
2551
2553
|
window_title = main_window.window_text()
|
2552
2554
|
if "Information" in window_title:
|
2553
2555
|
main_window.type_keys("%n")
|
2554
2556
|
else:
|
2555
|
-
console.print(
|
2556
|
-
"Não possui a existencia de tela de Information, seguindo...\n"
|
2557
|
-
)
|
2557
|
+
console.print("Não possui a existencia de 'Information'...\n")
|
2558
2558
|
except:
|
2559
|
-
console.print(
|
2560
|
-
"Não possui a existencia de tela de Information...\n"
|
2561
|
-
)
|
2559
|
+
console.print("Não possui a existencia de tela de Information...\n")
|
2562
2560
|
await worker_sleep(5)
|
2563
2561
|
i += 1
|
2564
|
-
|
2562
|
+
|
2565
2563
|
await worker_sleep(5)
|
2566
|
-
logs_erro = await is_window_open_by_class(
|
2564
|
+
logs_erro = await is_window_open_by_class(
|
2565
|
+
"TFrmExibeLogErroImportacaoNfe","TFrmExibeLogErroImportacaoNfe"
|
2566
|
+
)
|
2567
2567
|
if logs_erro["IsOpened"] == True:
|
2568
2568
|
app = Application().connect(class_name="TFrmExibeLogErroImportacaoNfe")
|
2569
2569
|
main_window = app["TFrmExibeLogErroImportacaoNfe"]
|
@@ -2582,112 +2582,101 @@ async def itens_not_found_supplier(xml: str):
|
|
2582
2582
|
btn_save.click()
|
2583
2583
|
except:
|
2584
2584
|
console.print("Não foi possivel clicar no Botão OK... \n")
|
2585
|
-
|
2586
2585
|
await worker_sleep(3)
|
2587
2586
|
|
2588
|
-
console.print(
|
2589
|
-
"Verificando a existencia da tela para informar o caminho do arquivo...\n"
|
2590
|
-
)
|
2591
|
-
|
2587
|
+
console.print("Verificando a existencia da tela 'Salvar'...\n")
|
2592
2588
|
try:
|
2593
2589
|
app = Application().connect(title="Salvar")
|
2594
2590
|
main_window = app["Salvar"]
|
2595
|
-
console.print(
|
2596
|
-
"Tela para informar o caminho do arquivo existe"
|
2597
|
-
)
|
2591
|
+
console.print("Tela 'Salvar' encontrada!")
|
2598
2592
|
break
|
2599
2593
|
except Exception as e:
|
2600
2594
|
console.print(
|
2601
|
-
f"Tela
|
2595
|
+
f"Tela 'Salvar' não encontrada. Tentativa {i + 1}/{max_attempts}."
|
2602
2596
|
)
|
2603
|
-
|
2604
2597
|
i += 1
|
2605
2598
|
|
2606
2599
|
if i == max_attempts:
|
2607
|
-
|
2608
|
-
|
2600
|
+
return RpaRetornoProcessoDTO(
|
2601
|
+
sucesso=False,
|
2602
|
+
retorno="Número máximo de tentativas ao tentar conectar à tela 'Salvar'.",
|
2603
|
+
status=RpaHistoricoStatusEnum.Falha,
|
2604
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2609
2605
|
)
|
2610
2606
|
|
2611
2607
|
await worker_sleep(4)
|
2612
|
-
console.print(
|
2613
|
-
|
2614
|
-
|
2615
|
-
app = Application().connect(title="Salvar")
|
2616
|
-
main_window = app["Salvar"]
|
2617
|
-
console.print(
|
2618
|
-
"Tela para informar o caminho do arquivo existe, inserindo o diretorio...\n"
|
2619
|
-
)
|
2620
|
-
await worker_sleep(2)
|
2608
|
+
console.print("Interagindo com a tela 'Salvar'...\n")
|
2609
|
+
path_to_txt = f"C:\\Users\\{username}\\Downloads\\erro_itens{xml}.txt"
|
2610
|
+
|
2621
2611
|
main_window.type_keys("%n")
|
2622
|
-
path_to_txt = (
|
2623
|
-
f"C:\\Users\\{username}\\Downloads\\erro_itens{xml}.txt"
|
2624
|
-
)
|
2625
2612
|
pyautogui.write(path_to_txt)
|
2626
2613
|
await worker_sleep(1)
|
2627
2614
|
main_window.type_keys("%l")
|
2628
|
-
console.print(
|
2615
|
+
console.print("Arquivo salvo com sucesso...\n")
|
2629
2616
|
|
2630
|
-
conteudo = ""
|
2631
2617
|
await worker_sleep(3)
|
2632
|
-
with open(
|
2633
|
-
path_to_txt, "r", encoding="latin1", errors="replace"
|
2634
|
-
) as arquivo:
|
2618
|
+
with open(path_to_txt, "r", encoding="latin1", errors="replace") as arquivo:
|
2635
2619
|
conteudo = arquivo.read()
|
2636
2620
|
console.print(
|
2637
2621
|
f"Arquivo salvo com sucesso, itens com erro {conteudo}...\n"
|
2638
2622
|
)
|
2639
2623
|
|
2640
2624
|
os.remove(path_to_txt)
|
2641
|
-
console.print(
|
2642
|
-
|
2643
|
-
|
2644
|
-
|
2645
|
-
f"Itens nao localizados
|
2625
|
+
console.print("Removendo o arquivo...\n")
|
2626
|
+
|
2627
|
+
return RpaRetornoProcessoDTO(
|
2628
|
+
sucesso=False,
|
2629
|
+
retorno=f"Itens nao localizados p/ fornecedor. Mensagem: {conteudo}",
|
2630
|
+
status=RpaHistoricoStatusEnum.Falha,
|
2631
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
|
2646
2632
|
)
|
2647
|
-
return {
|
2648
|
-
"sucesso": True,
|
2649
|
-
"retorno": f"Itens nao localizados para o fornecedor, Mensagem: {conteudo}",
|
2650
|
-
"window": "Itens",
|
2651
|
-
}
|
2652
2633
|
else:
|
2653
|
-
|
2654
|
-
|
2655
|
-
"
|
2656
|
-
|
2657
|
-
|
2658
|
-
|
2634
|
+
return RpaRetornoProcessoDTO(
|
2635
|
+
sucesso=False,
|
2636
|
+
retorno="Botao Salvar - Não foi encontrado",
|
2637
|
+
status=RpaHistoricoStatusEnum.Falha,
|
2638
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2639
|
+
)
|
2640
|
+
|
2659
2641
|
else:
|
2660
|
-
return
|
2661
|
-
|
2662
|
-
|
2663
|
-
|
2664
|
-
|
2642
|
+
return RpaRetornoProcessoDTO(
|
2643
|
+
sucesso=False,
|
2644
|
+
retorno="Tela 'TFrmExibeLogErroImportacaoNfe' não encontrada, tentar novamente...",
|
2645
|
+
status=RpaHistoricoStatusEnum.Falha,
|
2646
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2647
|
+
)
|
2665
2648
|
else:
|
2666
|
-
return
|
2667
|
-
|
2668
|
-
|
2669
|
-
|
2670
|
-
|
2649
|
+
return RpaRetornoProcessoDTO(
|
2650
|
+
sucesso=False,
|
2651
|
+
retorno="Erro não mapeado, pop-up Confirm não encontrado...",
|
2652
|
+
status=RpaHistoricoStatusEnum.Falha,
|
2653
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2654
|
+
)
|
2655
|
+
|
2671
2656
|
elif "Information" in window_title:
|
2672
|
-
console.print(
|
2657
|
+
console.print("Tela de NCM para o fornecedor...\n")
|
2673
2658
|
if main_window.exists():
|
2674
|
-
console.print(
|
2675
|
-
f"Tela de NCM clicando em NO para andamento no processo...\n"
|
2676
|
-
)
|
2659
|
+
console.print("Tela de NCM, clicando em NO para prosseguir...\n")
|
2677
2660
|
main_window.type_keys("%n")
|
2678
|
-
return
|
2679
|
-
|
2680
|
-
|
2681
|
-
|
2682
|
-
|
2683
|
-
except Exception as e:
|
2684
|
-
return {
|
2685
|
-
"sucesso": False,
|
2686
|
-
"retorno": f"Erro ao processar tela de itens // ncm {e}",
|
2687
|
-
"window": "Erro",
|
2688
|
-
}
|
2661
|
+
return RpaRetornoProcessoDTO(
|
2662
|
+
sucesso=True,
|
2663
|
+
retorno="Tela de NCM - clicado em NO para andamento do processo",
|
2664
|
+
status=RpaHistoricoStatusEnum.Sucesso,
|
2665
|
+
)
|
2689
2666
|
|
2667
|
+
return RpaRetornoProcessoDTO(
|
2668
|
+
sucesso=True,
|
2669
|
+
retorno="Tela TMessageForm sem Title match. Seguindo...",
|
2670
|
+
status=RpaHistoricoStatusEnum.Sucesso
|
2671
|
+
)
|
2690
2672
|
|
2673
|
+
except Exception as e:
|
2674
|
+
return RpaRetornoProcessoDTO(
|
2675
|
+
sucesso=False,
|
2676
|
+
retorno=f"Erro ao processar tela de itens/ncm: {e}",
|
2677
|
+
status=RpaHistoricoStatusEnum.Falha,
|
2678
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2679
|
+
)
|
2691
2680
|
|
2692
2681
|
async def tipo_despesa(tipo: str) -> RpaRetornoProcessoDTO:
|
2693
2682
|
console.print(f"Conectando a tela de Informações para importação da Nota Fiscal Eletrônica para seleção do tipo de despesas...\n")
|
@@ -2720,12 +2709,14 @@ async def tipo_despesa(tipo: str) -> RpaRetornoProcessoDTO:
|
|
2720
2709
|
sucesso=False,
|
2721
2710
|
retorno=f"Campo tipo de despesas - Não foi encontrado... \n",
|
2722
2711
|
status=RpaHistoricoStatusEnum.Falha,
|
2712
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2723
2713
|
)
|
2724
2714
|
except Exception as e:
|
2725
2715
|
return RpaRetornoProcessoDTO(
|
2726
2716
|
sucesso=False,
|
2727
2717
|
retorno=f"Erro ao processar tela de Informações para importação da Nota Fiscal Eletrônica para inserir o tipo de despesa, erro: {e}... \n",
|
2728
2718
|
status=RpaHistoricoStatusEnum.Falha,
|
2719
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2729
2720
|
)
|
2730
2721
|
|
2731
2722
|
|
@@ -2760,6 +2751,7 @@ async def zerar_icms() -> RpaRetornoProcessoDTO:
|
|
2760
2751
|
sucesso=False,
|
2761
2752
|
retorno=f"Erro ao processar tela de Informações para importação da Nota Fiscal Eletrônica para marcar a opção de zerar ICMS, erro: {e}... \n",
|
2762
2753
|
status=RpaHistoricoStatusEnum.Falha,
|
2754
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2763
2755
|
)
|
2764
2756
|
|
2765
2757
|
|
@@ -2794,12 +2786,14 @@ async def cod_icms(codigo: str) -> RpaRetornoProcessoDTO:
|
|
2794
2786
|
sucesso=False,
|
2795
2787
|
retorno=f"Campo codigo do icms - Não foi encontrado",
|
2796
2788
|
status=RpaHistoricoStatusEnum.Falha,
|
2789
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2797
2790
|
)
|
2798
2791
|
except Exception as e:
|
2799
2792
|
return RpaRetornoProcessoDTO(
|
2800
2793
|
sucesso=False,
|
2801
2794
|
retorno=f"Erro ao processar tela de Informações para importação da Nota Fiscal Eletrônica para inserir o codigo do icms, erro: {e}",
|
2802
2795
|
status=RpaHistoricoStatusEnum.Falha,
|
2796
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2803
2797
|
)
|
2804
2798
|
|
2805
2799
|
|
@@ -2823,6 +2817,7 @@ async def rateio_despesa(unidade_code: str) -> RpaRetornoProcessoDTO:
|
|
2823
2817
|
sucesso=False,
|
2824
2818
|
retorno=f"Error ao interagir com o campo de selecionar todos : {e}",
|
2825
2819
|
status=RpaHistoricoStatusEnum.Falha,
|
2820
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2826
2821
|
)
|
2827
2822
|
|
2828
2823
|
await worker_sleep(5)
|
@@ -2853,6 +2848,7 @@ async def rateio_despesa(unidade_code: str) -> RpaRetornoProcessoDTO:
|
|
2853
2848
|
sucesso=False,
|
2854
2849
|
retorno=f"Unidade code não é um número válido.",
|
2855
2850
|
status=RpaHistoricoStatusEnum.Falha,
|
2851
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
|
2856
2852
|
)
|
2857
2853
|
|
2858
2854
|
value_centro_str = str(value_centro)
|
@@ -2867,6 +2863,7 @@ async def rateio_despesa(unidade_code: str) -> RpaRetornoProcessoDTO:
|
|
2867
2863
|
sucesso=False,
|
2868
2864
|
retorno=f"Campo tipo de despesas - Não foi encontrado",
|
2869
2865
|
status=RpaHistoricoStatusEnum.Falha,
|
2866
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2870
2867
|
)
|
2871
2868
|
|
2872
2869
|
console.print(f"Conectado com sucesso, inserindo o valor do rateio...\n")
|
@@ -2882,6 +2879,7 @@ async def rateio_despesa(unidade_code: str) -> RpaRetornoProcessoDTO:
|
|
2882
2879
|
sucesso=False,
|
2883
2880
|
retorno=f"Campo valor do rateio - Não foi encontrado",
|
2884
2881
|
status=RpaHistoricoStatusEnum.Falha,
|
2882
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2885
2883
|
)
|
2886
2884
|
|
2887
2885
|
await worker_sleep(3)
|
@@ -2912,14 +2910,16 @@ async def rateio_despesa(unidade_code: str) -> RpaRetornoProcessoDTO:
|
|
2912
2910
|
main_window = app["Busca Centro de Custo"]
|
2913
2911
|
return RpaRetornoProcessoDTO(
|
2914
2912
|
sucesso=False,
|
2915
|
-
retorno=f"
|
2913
|
+
retorno=f"Centro de custo não localizado na tela de rateio, por favor, verificar",
|
2916
2914
|
status=RpaHistoricoStatusEnum.Falha,
|
2915
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
|
2917
2916
|
)
|
2918
2917
|
except Exception as e:
|
2919
2918
|
return RpaRetornoProcessoDTO(
|
2920
2919
|
sucesso=False,
|
2921
2920
|
retorno=f"Campo aplicar rateio - Não foi encontrado, erro: {e}",
|
2922
2921
|
status=RpaHistoricoStatusEnum.Falha,
|
2922
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2923
2923
|
)
|
2924
2924
|
|
2925
2925
|
console.print(f"Tentando clicar em Incluir Registro...\n")
|
@@ -2951,6 +2951,7 @@ async def rateio_despesa(unidade_code: str) -> RpaRetornoProcessoDTO:
|
|
2951
2951
|
sucesso=False,
|
2952
2952
|
retorno="Campo Incluir registro nao foi encontrado",
|
2953
2953
|
status=RpaHistoricoStatusEnum.Falha,
|
2954
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2954
2955
|
)
|
2955
2956
|
|
2956
2957
|
await worker_sleep(3)
|
@@ -2976,6 +2977,7 @@ async def rateio_despesa(unidade_code: str) -> RpaRetornoProcessoDTO:
|
|
2976
2977
|
sucesso=False,
|
2977
2978
|
retorno="Campo valor do rateio - Não foi encontrado",
|
2978
2979
|
status=RpaHistoricoStatusEnum.Falha,
|
2980
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2979
2981
|
)
|
2980
2982
|
|
2981
2983
|
|
@@ -2984,6 +2986,7 @@ async def rateio_despesa(unidade_code: str) -> RpaRetornoProcessoDTO:
|
|
2984
2986
|
sucesso=False,
|
2985
2987
|
retorno=f"Erro ao processar tela de Informações para importação da Nota Fiscal Eletrônica para inserir o tipo de despesa, erro: {e}",
|
2986
2988
|
status=RpaHistoricoStatusEnum.Falha,
|
2989
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
2987
2990
|
)
|
2988
2991
|
|
2989
2992
|
|
@@ -3040,6 +3043,7 @@ async def select_nop_document_type(nop: str) -> RpaRetornoProcessoDTO:
|
|
3040
3043
|
sucesso=False,
|
3041
3044
|
retorno=f"Não foi possivel selecionar o NOP Nota, erro: {e} ",
|
3042
3045
|
status=RpaHistoricoStatusEnum.Falha,
|
3046
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
3043
3047
|
)
|
3044
3048
|
|
3045
3049
|
|
@@ -3178,6 +3182,7 @@ async def check_nota_importada(xml_nota: str) -> RpaRetornoProcessoDTO:
|
|
3178
3182
|
sucesso=False,
|
3179
3183
|
retorno=f"Erro ao lançar nota",
|
3180
3184
|
status=RpaHistoricoStatusEnum.Falha,
|
3185
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
3181
3186
|
)
|
3182
3187
|
except Exception as e:
|
3183
3188
|
console.print(f"Error: {e}")
|
@@ -3185,6 +3190,7 @@ async def check_nota_importada(xml_nota: str) -> RpaRetornoProcessoDTO:
|
|
3185
3190
|
sucesso=False,
|
3186
3191
|
retorno=f"Erro em obter o retorno, Nota inserida com sucesso, erro {e}",
|
3187
3192
|
status=RpaHistoricoStatusEnum.Falha,
|
3193
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
3188
3194
|
)
|
3189
3195
|
except Exception as e:
|
3190
3196
|
console.print(f"Erro ao conectar à janela Information para obter retorno de status de inclusão da nota: {e}\n")
|
@@ -3192,6 +3198,7 @@ async def check_nota_importada(xml_nota: str) -> RpaRetornoProcessoDTO:
|
|
3192
3198
|
sucesso=False,
|
3193
3199
|
retorno=f"Erro em obter o retorno, Nota inserida com sucesso, erro {e}",
|
3194
3200
|
status=RpaHistoricoStatusEnum.Falha,
|
3201
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
3195
3202
|
)
|
3196
3203
|
|
3197
3204
|
|
@@ -3209,6 +3216,7 @@ async def kill_all_emsys():
|
|
3209
3216
|
sucesso=False,
|
3210
3217
|
retorno=f"Erro ao fechar o emsys, erro{e}",
|
3211
3218
|
status=RpaHistoricoStatusEnum.Falha,
|
3219
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
3212
3220
|
)
|
3213
3221
|
|
3214
3222
|
async def errors_generate_after_import(xml_nota: str) -> RpaRetornoProcessoDTO:
|
@@ -3294,9 +3302,10 @@ async def errors_generate_after_import(xml_nota: str) -> RpaRetornoProcessoDTO:
|
|
3294
3302
|
f"Itens nao localizados para o fornecedor salvo e retornando como falha no backoffice para correção...\n"
|
3295
3303
|
)
|
3296
3304
|
return RpaRetornoProcessoDTO(
|
3297
|
-
sucesso=
|
3305
|
+
sucesso=False,
|
3298
3306
|
retorno=f"Itens nao localizados para o fornecedor, Mensagem: {conteudo}",
|
3299
|
-
status=RpaHistoricoStatusEnum.
|
3307
|
+
status=RpaHistoricoStatusEnum.Falha,
|
3308
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
|
3300
3309
|
)
|
3301
3310
|
else:
|
3302
3311
|
console.print(f"Botao Salvar - Não foi encontrado...\n")
|
@@ -3310,4 +3319,5 @@ async def errors_generate_after_import(xml_nota: str) -> RpaRetornoProcessoDTO:
|
|
3310
3319
|
sucesso=False,
|
3311
3320
|
retorno=f"Erro ao processar - Tela de Erros gerados na importação do NF-e, {e}",
|
3312
3321
|
status=RpaHistoricoStatusEnum.Falha,
|
3322
|
+
tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
|
3313
3323
|
)
|