worker-automate-hub 0.5.15__py3-none-any.whl → 0.5.17__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of worker-automate-hub might be problematic. Click here for more details.
- 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
|
)
|