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.
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
  )