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.

Files changed (35) hide show
  1. worker_automate_hub/tasks/jobs/coleta_dje_process.py +12 -0
  2. worker_automate_hub/tasks/jobs/conexao_rdp.py +4 -4
  3. worker_automate_hub/tasks/jobs/descartes.py +21 -18
  4. worker_automate_hub/tasks/jobs/ecac_estadual_go.py +8 -6
  5. worker_automate_hub/tasks/jobs/ecac_estadual_main.py +4 -2
  6. worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +8 -6
  7. worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +5 -3
  8. worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +9 -7
  9. worker_automate_hub/tasks/jobs/ecac_federal.py +11 -8
  10. worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +14 -12
  11. worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +19 -11
  12. worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +23 -11
  13. worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +63 -32
  14. worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +56 -28
  15. worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +54 -38
  16. worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +33 -16
  17. worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +53 -28
  18. worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +40 -14
  19. worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +28 -14
  20. worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +18 -12
  21. worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +40 -13
  22. worker_automate_hub/tasks/jobs/exemplo_processo.py +3 -0
  23. worker_automate_hub/tasks/jobs/fechar_conexao_rdp.py +3 -3
  24. worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +9 -7
  25. worker_automate_hub/tasks/jobs/login_emsys.py +2 -1
  26. worker_automate_hub/tasks/jobs/playground.py +4 -0
  27. worker_automate_hub/tasks/jobs/sped_fiscal.py +24 -0
  28. worker_automate_hub/tasks/jobs/transferencias.py +28 -26
  29. worker_automate_hub/tasks/task_executor.py +3 -0
  30. worker_automate_hub/utils/util.py +151 -141
  31. worker_automate_hub/utils/utils_nfe_entrada.py +10 -0
  32. {worker_automate_hub-0.5.15.dist-info → worker_automate_hub-0.5.17.dist-info}/METADATA +1 -1
  33. {worker_automate_hub-0.5.15.dist-info → worker_automate_hub-0.5.17.dist-info}/RECORD +35 -35
  34. {worker_automate_hub-0.5.15.dist-info → worker_automate_hub-0.5.17.dist-info}/WHEEL +0 -0
  35. {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
- status=RpaHistoricoStatusEnum.Falha,
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
- "sucesso": True,
2471
- "retorno": f"Tela de Itens fornecedor - Multiplas referencias",
2472
- "window": "MultiplasRef",
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(f"Janela 'TMessageForm' encontrada!")
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(f"Aguardando tela de aguarde desaparecer ou conectar a tela de information...\n")
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(f"Janela 'TMessageForm' encontrada!")
2502
+ console.print("Janela 'TMessageForm' encontrada!")
2499
2503
  break
2500
2504
  except:
2501
- return {
2502
- "sucesso": True,
2503
- "retorno": f"Tela de aguardar carregada - Seguindo com andamento do processo",
2504
- "window": "NCM",
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(f"Itens nao localizados para o fornecedor...\n")
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
- console.print(
2518
- "Verificando a existencia de tela de selecionar Itens Fornecedor...\n"
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
- "sucesso": True,
2527
- "retorno": f"Tela de Itens fornecedor - Multiplas referencias",
2528
- "window": "MultiplasRef",
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("TFrmExibeLogErroImportacaoNfe","TFrmExibeLogErroImportacaoNfe")
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(f"Aguardando confirmação de tela de erro importação NFe...\n")
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(f"Janela 'Information' encontrada!")
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("TFrmExibeLogErroImportacaoNfe","TFrmExibeLogErroImportacaoNfe")
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 para informar o caminho do arquivo não encontrada. Tentativa {i + 1}/{max_attempts}."
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
- raise Exception(
2608
- "Número máximo de tentativas atingido. Tela para informar o caminho do arquivo existe."
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
- "Interagindo com a tela para informar o caminho do arquivo...\n"
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(f"Arquivo salvo com sucesso... \n")
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
- f"Removendo o arquivo e enviando os itens para o backoffice... \n"
2643
- )
2644
- console.print(
2645
- f"Itens nao localizados para o fornecedor salvo e retornando como falha no backoffice para correção...\n"
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
- console.print(f"Botao Salvar - Não foi encontrado...\n")
2654
- return {
2655
- "sucesso": False,
2656
- "retorno": f"Botao Salvar - Não foi encontrado",
2657
- "window": "Itens",
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
- "sucesso": False,
2662
- "retorno": f"Tela para salvar as informações dos itens com erro não encontrada, tentar novamente...",
2663
- "window": "Erro",
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
- "sucesso": False,
2668
- "retorno": f"Erro não mapeado, pop-up Confirm não encontrado...",
2669
- "window": "Erro",
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(f"Tela de NCM para o fornecedor...\n")
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
- "sucesso": True,
2680
- "retorno": f"Tela de NCM - clicado em NO para andamento do processo ",
2681
- "window": "NCM",
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"Nota não encontrada no Emsys durante a pesquisa de rateio, por favor, verificar",
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=True,
3305
+ sucesso=False,
3298
3306
  retorno=f"Itens nao localizados para o fornecedor, Mensagem: {conteudo}",
3299
- status=RpaHistoricoStatusEnum.Sucesso,
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
  )