worker-automate-hub 0.4.416__tar.gz → 0.4.418__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +2 -15
  4. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +37 -28
  5. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +114 -1
  6. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/README.md +0 -0
  7. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/__init__.py +0 -0
  8. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/api/__init__.py +0 -0
  9. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/api/ahead_service.py +0 -0
  10. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/api/client.py +0 -0
  11. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/api/helpers/__init__.py +0 -0
  12. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  13. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  14. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/cli.py +0 -0
  15. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/config/__init__.py +0 -0
  16. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/config/settings.py +0 -0
  17. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/config.py +0 -0
  18. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/core/so_manipulation.py +0 -0
  19. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/decorators/__init__.py +0 -0
  20. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/decorators/deprecation.py +0 -0
  21. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/decorators/rate_limit.py +0 -0
  22. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/decorators/repeat.py +0 -0
  23. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/decorators/retry.py +0 -0
  24. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/decorators/singleton.py +0 -0
  25. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/decorators/timeit.py +0 -0
  26. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/models/__init__.py +0 -0
  27. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/models/dao/__init__.py +0 -0
  28. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  29. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  30. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  31. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/models/dto/__init__.py +0 -0
  32. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  33. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  34. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  35. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/__init__.py +0 -0
  36. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  37. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  38. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  39. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  40. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  41. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  42. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  43. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  44. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  45. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  46. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  47. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  48. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  49. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  50. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  51. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  52. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  53. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  54. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  55. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  56. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  57. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  58. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  59. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  60. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  61. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  62. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/task_definitions.py +0 -0
  63. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/tasks/task_executor.py +0 -0
  64. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/utils/__init__.py +0 -0
  65. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/utils/env.py +0 -0
  66. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  67. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/utils/logger.py +0 -0
  68. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/utils/toast.py +0 -0
  69. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/utils/updater.py +0 -0
  70. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/utils/util.py +0 -0
  71. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  72. {worker_automate_hub-0.4.416 → worker_automate_hub-0.4.418}/worker_automate_hub/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: worker-automate-hub
3
- Version: 0.4.416
3
+ Version: 0.4.418
4
4
  Summary: Worker Automate HUB é uma aplicação para automatizar rotinas de RPA nos ambientes Argenta.
5
5
  Author: Joel Paim
6
6
  Requires-Python: >=3.12,<4.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "worker-automate-hub"
3
- version = "0.4.416"
3
+ version = "0.4.418"
4
4
  description = "Worker Automate HUB é uma aplicação para automatizar rotinas de RPA nos ambientes Argenta."
5
5
  authors = ["Joel Paim"]
6
6
  readme = "README.md"
@@ -69,20 +69,6 @@ async def entrada_de_notas_16(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
69
69
  # Abre um novo emsys
70
70
  await kill_process("EMSys")
71
71
 
72
- #Verifica se a nota ja foi lançada
73
- console.print("\nVerifica se a nota ja foi lançada...")
74
- nf_chave_acesso = int(nota.get("nfe"))
75
- status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
76
- if status_nf_emsys.get("status") == "Lançada":
77
- console.print("\nNota ja lançada, processo finalizado...", style="bold green")
78
- return RpaRetornoProcessoDTO(
79
- sucesso=False,
80
- retorno="Nota já lançada",
81
- status=RpaHistoricoStatusEnum.Descartado,
82
- )
83
- else:
84
- console.print("\nNota não lançada, iniciando o processo...")
85
-
86
72
  app = Application(backend="win32").start("C:\\Rezende\\EMSys3\\EMSys3.exe")
87
73
  warnings.filterwarnings(
88
74
  "ignore",
@@ -359,6 +345,7 @@ async def entrada_de_notas_16(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
359
345
 
360
346
  await worker_sleep(10)
361
347
  await emsys.percorrer_grid()
348
+ pyautogui.click(585, 328)
362
349
  await emsys.select_tipo_cobranca()
363
350
  await emsys.inserir_vencimento_e_valor(
364
351
  nota.get("nomeFornecedor"),
@@ -536,4 +523,4 @@ async def entrada_de_notas_16(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
536
523
  sucesso=False,
537
524
  retorno=observacao,
538
525
  status=RpaHistoricoStatusEnum.Falha,
539
- )
526
+ )
@@ -521,36 +521,36 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
521
521
 
522
522
  select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
523
523
  select_box_nop_select.click()
524
- nop_value = "1152 - ENTRADAS P/ TRANSFERENCIAS DE MERCADORIA- 1.152"
524
+ pyautogui.write("1152")
525
+ await worker_sleep(2)
526
+ pyautogui.hotkey("enter")
525
527
  await worker_sleep(2)
526
- set_combobox("||List", nop_value)
527
- await worker_sleep(1)
528
- pyautogui.press('down')
529
528
 
530
- nop_selected = select_box_nop_select.window_text()
531
- if '1152' in nop_selected:
532
- console.print(f"NOP selecionada corretamente, {nop_selected} ...\n")
533
- else:
534
- select_box_nop_select.click()
535
- console.print(f"Inserindo a informação da NOP: {nop_value} ...\n")
536
- await worker_sleep(2)
537
- set_combobox("||List", nop_value)
538
- await worker_sleep(2)
539
- pyautogui.hotkey("enter")
540
- await worker_sleep(2)
541
- console.print(f"Confirmando a NOP selecionada...\n")
542
- main_window.set_focus()
543
- await worker_sleep(1)
529
+ max_try = 10
530
+ i = 0
531
+ first_nop = False
532
+ while i <= max_try:
544
533
  select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
545
534
  nop_selected = select_box_nop_select.window_text()
546
- if '1152' in nop_selected:
547
- console.print(f"NOP selecionada corretamente, {nop_selected} ...\n")
535
+ if '1152 - ENTRADAS P/ TRANSFERENCIA DE MERCADORIAS- 1.152' == nop_selected and first_nop == False:
536
+ first_nop = True
548
537
  else:
549
- return RpaRetornoProcessoDTO(
550
- sucesso=False,
551
- retorno=f"Erro não foi possivel selecionar NOP correta, NOP selecionada: {nop_selected}",
552
- status=RpaHistoricoStatusEnum.Falha,
553
- )
538
+ if '1152 - ENTRADAS P/ TRANSFERENCIA DE MERCADORIAS- 1.152' == nop_selected:
539
+ break
540
+
541
+ pyautogui.press('down')
542
+ await worker_sleep(2)
543
+ i = i + 1
544
+
545
+
546
+ if i <= max_try and first_nop:
547
+ console.print(f"A segunda correspondência '1152 - ENTRADAS P/ TRANSFERENCIA DE MERCADORIAS- 1.152' foi encontrada e selecionada.")
548
+ else:
549
+ return RpaRetornoProcessoDTO(
550
+ sucesso=False,
551
+ retorno=f"Erro não foi encontrada a segunda correspondência dentro do número máximo de tentativas ({max_try})",
552
+ status=RpaHistoricoStatusEnum.Falha,
553
+ )
554
554
 
555
555
  await emsys.incluir_registro()
556
556
  await worker_sleep(10)
@@ -589,8 +589,7 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
589
589
  sucesso=True,
590
590
  retorno="Nota Lançada com sucesso!",
591
591
  status=RpaHistoricoStatusEnum.Sucesso,
592
- )
593
-
592
+ )
594
593
  except Exception as e:
595
594
  select_box_nop_select.click()
596
595
  return RpaRetornoProcessoDTO(
@@ -709,7 +708,17 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
709
708
  app = Application().connect(class_name="TFrmTelaSelecao")
710
709
  main_window = app["TFrmTelaSelecao"]
711
710
  send_keys("%o")
712
- await worker_sleep(3)
711
+ await worker_sleep(7)
712
+
713
+ # VERIFICANDO A EXISTENCIA DE ERRO
714
+ erro_pop_up = await is_window_open("Erro")
715
+ if erro_pop_up["IsOpened"] == True:
716
+ error_work = await error_after_xml_imported()
717
+ return RpaRetornoProcessoDTO(
718
+ sucesso=False,
719
+ retorno=error_work.retorno,
720
+ status=RpaHistoricoStatusEnum.Falha,
721
+ )
713
722
 
714
723
  max_attempts = 50
715
724
  i = 0
@@ -523,8 +523,121 @@ async def entrada_de_notas_500(task: RpaProcessoEntradaDTO) -> RpaRetornoProcess
523
523
  app = Application().connect(class_name="TFrmTelaSelecao")
524
524
  main_window = app["TFrmTelaSelecao"]
525
525
  send_keys("%o")
526
-
527
526
 
527
+
528
+ await worker_sleep(7)
529
+ aviso_pop_up = await is_window_open("Aviso")
530
+ if aviso_pop_up["IsOpened"] == True:
531
+ app = Application().connect(title="Aviso")
532
+ main_window = app["Aviso"]
533
+ main_window.set_focus()
534
+
535
+ console.print(f"Clicando em Aviso, para andamento do processo...\n")
536
+ btn_no = main_window.child_window(title="OK")
537
+ if btn_no.exists(timeout=5) and btn_no.is_enabled():
538
+ btn_no.set_focus()
539
+ btn_no.click()
540
+ await worker_sleep(2)
541
+
542
+ try:
543
+ pyautogui.click(623, 374)
544
+ await worker_sleep(1)
545
+ pyautogui.press('home')
546
+ console.print("Alterando a NOP...\n")
547
+
548
+ app = Application().connect(class_name="TFrmNotaFiscalEntrada", timeout=30)
549
+ main_window = app["TFrmNotaFiscalEntrada"]
550
+ main_window.set_focus()
551
+
552
+ select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
553
+ select_box_nop_select.click()
554
+ pyautogui.write("1152")
555
+ await worker_sleep(2)
556
+ pyautogui.hotkey("enter")
557
+ await worker_sleep(2)
558
+
559
+ max_try = 10
560
+ i = 0
561
+ first_nop = False
562
+ while i <= max_try:
563
+ select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
564
+ nop_selected = select_box_nop_select.window_text()
565
+ if '1152 - ENTRADAS P/ TRANSFERENCIA DE MERCADORIAS- 1.152' == nop_selected and first_nop == False:
566
+ first_nop = True
567
+ else:
568
+ if '1152 - ENTRADAS P/ TRANSFERENCIA DE MERCADORIAS- 1.152' == nop_selected:
569
+ break
570
+
571
+ pyautogui.press('down')
572
+ await worker_sleep(2)
573
+ i = i + 1
574
+
575
+
576
+ if i <= max_try and first_nop:
577
+ console.print(f"A segunda correspondência '1152 - ENTRADAS P/ TRANSFERENCIA DE MERCADORIAS- 1.152' foi encontrada e selecionada.")
578
+ else:
579
+ return RpaRetornoProcessoDTO(
580
+ sucesso=False,
581
+ retorno=f"Erro não foi encontrada a segunda correspondência dentro do número máximo de tentativas ({max_try})",
582
+ status=RpaHistoricoStatusEnum.Falha,
583
+ )
584
+
585
+ try:
586
+ ASSETS_PATH = "assets"
587
+ inserir_registro = pyautogui.locateOnScreen(
588
+ ASSETS_PATH + "\\entrada_notas\\IncluirRegistro.png", confidence=0.8
589
+ )
590
+ pyautogui.click(inserir_registro)
591
+ except Exception as e:
592
+ console.print(
593
+ f"Não foi possivel incluir o registro utilizando reconhecimento de imagem, Error: {e}...\n tentando inserir via posição...\n"
594
+ )
595
+ await incluir_registro()
596
+ await worker_sleep(10)
597
+
598
+ console.print("Verificando a existencia de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n")
599
+ itens_variacao_maxima = await is_window_open_by_class("TFrmTelaSelecao", "TFrmTelaSelecao")
600
+ if itens_variacao_maxima["IsOpened"] == True:
601
+ app = Application().connect(class_name="TFrmTelaSelecao")
602
+ main_window = app["TFrmTelaSelecao"]
603
+ send_keys("%o")
604
+ await worker_sleep(7)
605
+
606
+ aviso_pop_up = await is_window_open("Aviso")
607
+ if aviso_pop_up["IsOpened"] == True:
608
+ return RpaRetornoProcessoDTO(
609
+ sucesso=False,
610
+ retorno=f"Erro na validação de CFOP, foi encontrado mais de uma opção com a mesma informação",
611
+ status=RpaHistoricoStatusEnum.Falha,
612
+ )
613
+
614
+ console.print("Verificando a existencia de Warning informando que a Soma dos pagamentos não bate com o valor da nota. ...\n")
615
+ warning_pop_up_pagamentos = await is_window_open("Warning")
616
+ if warning_pop_up_pagamentos["IsOpened"] == True:
617
+ return RpaRetornoProcessoDTO(
618
+ sucesso=False,
619
+ retorno=f"A soma dos pagamentos não bate com o valor da nota.",
620
+ status=RpaHistoricoStatusEnum.Falha,
621
+ )
622
+
623
+ await worker_sleep(60)
624
+ console.print("\nVerifica se a nota ja foi lançada...")
625
+ nf_chave_acesso = int(nota.get("nfe"))
626
+ status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
627
+ if status_nf_emsys.get("status") == "Lançada":
628
+ return RpaRetornoProcessoDTO(
629
+ sucesso=True,
630
+ retorno="Nota Lançada com sucesso!",
631
+ status=RpaHistoricoStatusEnum.Sucesso,
632
+ )
633
+ except Exception as e:
634
+ select_box_nop_select.click()
635
+ return RpaRetornoProcessoDTO(
636
+ sucesso=False,
637
+ retorno=f"Erro ao alterar o NOP, erro {e}",
638
+ status=RpaHistoricoStatusEnum.Falha,
639
+ )
640
+
528
641
  # Verificando se possui pop-up de Warning
529
642
  await worker_sleep(6)
530
643
  warning_pop_up = await is_window_open("Warning")