worker-automate-hub 0.5.664__py3-none-any.whl → 0.5.666__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.

Potentially problematic release.


This version of worker-automate-hub might be problematic. Click here for more details.

@@ -369,7 +369,7 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
369
369
 
370
370
 
371
371
  #SELECIONAO A NOP
372
- console.print("SELECIONAO A NOP...\n")
372
+ console.print("SELECIONANDO A NOP...\n")
373
373
  select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
374
374
  select_box_nop_select.click()
375
375
 
@@ -391,14 +391,14 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
391
391
  if '2662' in item and (('c/fi' in item.lower() or 'c /fi' in item.lower())):
392
392
  nop_to_be_select = item
393
393
  break
394
- else:
395
- if '1662' in item and (('c/fi' in item.lower() or 'c /fi' in item.lower())):
396
- nop_to_be_select = item
397
- break
394
+ else:
395
+ if '1662' in item and (('c/fi' in item.lower() or 'c /fi' in item.lower())):
396
+ nop_to_be_select = item
397
+ break
398
398
  else:
399
399
  if '1662' in item and (('c/fi' in item.lower() or 'c /fi' in item.lower())):
400
400
  nop_to_be_select = item
401
- break
401
+ break
402
402
 
403
403
 
404
404
  if nop_to_be_select != '':
@@ -1,6 +1,7 @@
1
1
  import asyncio
2
2
  import getpass
3
3
  import os
4
+ import pyperclip
4
5
  import warnings
5
6
  import time
6
7
  import uuid
@@ -50,11 +51,67 @@ from worker_automate_hub.utils.util import (
50
51
  carregamento_import_xml,
51
52
  errors_generate_after_import,
52
53
  )
54
+ from worker_automate_hub.utils.utils_nfe_entrada import EMSys
55
+
56
+ emsys = EMSys()
53
57
 
54
58
  pyautogui.PAUSE = 0.5
55
59
  pyautogui.FAILSAFE = False
56
60
  console = Console()
57
61
 
62
+ async def parse_copied_content(content):
63
+ lines = content.strip().split("\n")
64
+ data_list = []
65
+ i = 0
66
+ while i < len(lines):
67
+ line = lines[i].strip()
68
+ if line.startswith("Código"):
69
+ headers_line = line
70
+ headers = headers_line.split("\t")
71
+ i += 1
72
+ if i < len(lines):
73
+ data_line = lines[i].strip()
74
+ data = data_line.split("\t")
75
+ if len(headers) == len(data):
76
+ item_dict = dict(zip(headers, data))
77
+ data_list.append(item_dict)
78
+ else:
79
+ console.print(
80
+ "Número de cabeçalhos e dados não correspondem.",
81
+ style="bold red",
82
+ )
83
+ console.print(f"Cabeçalhos: {headers}")
84
+ console.print(f"Dados: {data}")
85
+ else:
86
+ console.print(
87
+ "Sem linha de dados após cabeçalho.", style="bold red"
88
+ )
89
+ i += 1
90
+ else:
91
+ i += 1
92
+
93
+ final_list = []
94
+ for item in data_list:
95
+ try:
96
+ new_item = {
97
+ "codigo": int(item["Código"]),
98
+ "descricao": item["Descrição"],
99
+ "curto": float(item["R$ Curto"].replace(".", "").replace(",", ".")),
100
+ "custo_min": float(
101
+ item["R$ Custo Min."]
102
+ .replace("worker_automate_hub/utils/utils_nfe_entrada.py.", "")
103
+ .replace(",", ".")
104
+ ),
105
+ "custo_max": float(
106
+ item["R$ Custo Máx."].replace(".", "").replace(",", ".")
107
+ ),
108
+ }
109
+ final_list.append(new_item)
110
+ except Exception as e:
111
+ console.print(
112
+ f"Erro ao processar item: {item}. Erro: {e}", style="bold red"
113
+ )
114
+ return final_list
58
115
 
59
116
  async def entrada_de_notas_7139(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
60
117
  """
@@ -633,34 +690,158 @@ async def entrada_de_notas_7139(task: RpaProcessoEntradaDTO) -> RpaRetornoProces
633
690
 
634
691
 
635
692
  await worker_sleep(6)
636
- nf_imported = await check_nota_importada(nota.get("nfe"))
637
- if nf_imported.sucesso == True:
638
- await worker_sleep(3)
639
- console.print("\nVerifica se a nota ja foi lançada...")
640
- nf_chave_acesso = int(nota.get("nfe"))
641
- status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
642
- if status_nf_emsys.get("status") == "Lançada":
643
- console.print("\nNota lançada com sucesso, processo finalizado...", style="bold green")
644
- return RpaRetornoProcessoDTO(
645
- sucesso=True,
646
- retorno="Nota Lançada com sucesso!",
647
- status=RpaHistoricoStatusEnum.Sucesso,
693
+
694
+ try:
695
+ console.print("Iniciando a coleta de dados do grid...\n")
696
+ app = Application(backend="uia").connect(class_name="TFrmTelaSelecao")
697
+ main_window = app.window(class_name="TFrmTelaSelecao")
698
+ grid = main_window.child_window(class_name="TcxGridSite")
699
+ grid.set_focus()
700
+ grid_wrapper = grid.wrapper_object()
701
+ send_keys("^({HOME})")
702
+ await worker_sleep(1)
703
+
704
+ data_list = []
705
+ last_content = ""
706
+ repeat_count = 0
707
+ max_repeats = 2
708
+
709
+ while True:
710
+ send_keys("^c")
711
+ await worker_sleep(1)
712
+ current_content = pyperclip.paste().strip()
713
+
714
+ if not current_content:
715
+ console.print(
716
+ "Nenhum conteúdo copiado, encerrando loop.", style="bold red"
717
+ )
718
+ break
719
+
720
+ if current_content == last_content:
721
+ repeat_count += 1
722
+ if repeat_count >= max_repeats:
723
+ console.print(
724
+ "Não há mais itens para processar. Fim do grid alcançado.",
725
+ style="bold green",
726
+ )
727
+ break
728
+ else:
729
+ item_data = await parse_copied_content(current_content)
730
+ data_list.extend(item_data)
731
+ last_content = current_content
732
+ repeat_count = 0
733
+
734
+ send_keys("{DOWN}")
735
+ await worker_sleep(1)
736
+
737
+ console.print(f"Dados coletados: {data_list}")
738
+
739
+ itens_invalidos = []
740
+ for item in data_list:
741
+ custo_min = item["custo_min"]
742
+ custo_max = item["custo_max"]
743
+ valor_curto = item["curto"]
744
+ intervalo = custo_max - custo_min
745
+ limite_inferior = custo_min - (intervalo * 0.8)
746
+ limite_superior = custo_max + (intervalo * 0.8)
747
+
748
+ if not (limite_inferior <= valor_curto <= limite_superior):
749
+ console.print(
750
+ f"[bold red]Item fora da faixa permitida:[/bold red] "
751
+ f"Código={item['codigo']} | Curto={valor_curto} | "
752
+ f"Faixa esperada: [{limite_inferior:.2f} - {limite_superior:.2f}]"
753
+ )
754
+ itens_invalidos.append(item["codigo"])
755
+
756
+ if itens_invalidos:
757
+ console.print(
758
+ "Itens que Ultrapassaram a Variação Máxima de Custo",
759
+ style="bold yellow",
648
760
  )
649
- else:
650
- console.print("Erro ao lançar nota", style="bold red")
761
+ console.print(f"Códigos dos itens: {itens_invalidos}")
762
+ send_keys("{ESC}")
763
+ observacao = f"Itens que ultrapassaram a variação máxima de custo: {itens_invalidos}. Processo cancelado."
651
764
  return RpaRetornoProcessoDTO(
652
765
  sucesso=False,
653
- retorno=f"Pop-up nota incluida encontrada, porém nota encontrada como 'já lançada' trazendo as seguintes informações: {nf_imported.retorno} - {error_work}",
766
+ retorno=observacao,
654
767
  status=RpaHistoricoStatusEnum.Falha,
655
768
  tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
656
769
  )
657
- else:
658
- console.print("Erro ao lançar nota", style="bold red")
770
+ else:
771
+ console.print(
772
+ "Todos os itens estão dentro da variação de custo permitida.",
773
+ style="bold green",
774
+ )
775
+ send_keys("{ENTER}")
776
+ observacao = "Todos os itens estão dentro da variação de custo permitida. Processo concluído com sucesso."
777
+
778
+ try:
779
+ await worker_sleep(2)
780
+ console.print(
781
+ "Verificando a existência de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n"
782
+ )
783
+ itens_variacao_maxima = await is_window_open_by_class(
784
+ "TFrmTelaSelecao", "TFrmTelaSelecao"
785
+ )
786
+ if itens_variacao_maxima["IsOpened"]:
787
+ app = Application().connect(class_name="TFrmTelaSelecao")
788
+ main_window = app["TFrmTelaSelecao"]
789
+ send_keys("%o")
790
+
791
+ await worker_sleep(2)
792
+ except:
793
+ observacao = (
794
+ "Falha ao clicar em OK no POP-UP de Itens que Ultrapassam a Variação Máxima de Custo."
795
+ )
796
+ return RpaRetornoProcessoDTO(
797
+ sucesso=False,
798
+ retorno=observacao,
799
+ status=RpaHistoricoStatusEnum.Falha,
800
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)],
801
+ )
802
+
803
+ await worker_sleep(5)
804
+
805
+
806
+ panel_TPage = main_window.child_window(class_name="TPage", title="Formulario")
807
+
808
+
809
+ nf_imported = await check_nota_importada(nota.get("nfe"))
810
+ if nf_imported.sucesso == True:
811
+ await worker_sleep(3)
812
+ console.print("\nVerifica se a nota ja foi lançada...")
813
+ nf_chave_acesso = int(nota.get("nfe"))
814
+ status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
815
+ if status_nf_emsys.get("status") == "Lançada":
816
+ console.print("\nNota lançada com sucesso, processo finalizado...", style="bold green")
817
+ return RpaRetornoProcessoDTO(
818
+ sucesso=True,
819
+ retorno="Nota Lançada com sucesso!",
820
+ status=RpaHistoricoStatusEnum.Sucesso,
821
+ )
822
+ else:
823
+ console.print("Erro ao lançar nota", style="bold red")
824
+ return RpaRetornoProcessoDTO(
825
+ sucesso=False,
826
+ retorno=f"Pop-up nota incluida encontrada, porém nota encontrada como 'já lançada' trazendo as seguintes informações: {nf_imported.retorno} - {error_work}",
827
+ status=RpaHistoricoStatusEnum.Falha,
828
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
829
+ )
830
+ else:
831
+ console.print("Erro ao lançar nota", style="bold red")
832
+ return RpaRetornoProcessoDTO(
833
+ sucesso=False,
834
+ retorno=f"Erro ao lançar nota, erro: {nf_imported.retorno}",
835
+ status=RpaHistoricoStatusEnum.Falha,
836
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
837
+ )
838
+
839
+ except Exception as error:
659
840
  return RpaRetornoProcessoDTO(
660
841
  sucesso=False,
661
- retorno=f"Erro ao lançar nota, erro: {nf_imported.retorno}",
842
+ retorno=f"Erro inesperado: {str(error)}",
662
843
  status=RpaHistoricoStatusEnum.Falha,
663
- tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
844
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)],
664
845
  )
665
846
 
666
847
  except Exception as ex:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: worker-automate-hub
3
- Version: 0.5.664
3
+ Version: 0.5.666
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
@@ -44,7 +44,7 @@ worker_automate_hub/tasks/jobs/cte_xml.py,sha256=hvKWRF46Pcl_Mp-l2FjgXaqrQ5UgKVk
44
44
  worker_automate_hub/tasks/jobs/descartes.py,sha256=E5kKef8j7e0PTm6NBeZAXkljUoAFEMjVWvHaJ8g2fv4,44451
45
45
  worker_automate_hub/tasks/jobs/devolucao_ctf.py,sha256=zQcRXZ9TxJhyL4jHjBTS-iW5BcmRoSPv9FsBLy0-eWQ,250793
46
46
  worker_automate_hub/tasks/jobs/devolucao_ctf_35.py,sha256=e9t5k2mtZcUcEGKPWysbWzsH_gqrK-6aBXjWe2jWfTg,253948
47
- worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py,sha256=Y3xY3eE1-H_NoKoLAte_UWiWd6gfmT2M_VDwq1tf6rk,278013
47
+ worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py,sha256=TYRFo6voeLtDn_mtbsmLOQ0_8MnoYSKI07b_HVeQhIU,278006
48
48
  worker_automate_hub/tasks/jobs/ecac_estadual_go.py,sha256=dKkf22nH5gp3RErq5u0UzRsKyJ81fc6ZZ4vLtUuMwHA,21002
49
49
  worker_automate_hub/tasks/jobs/ecac_estadual_main.py,sha256=8WmKe4-MRtzHobXz2S4YBDNN8alfawkC-BBlRY-mn1g,1726
50
50
  worker_automate_hub/tasks/jobs/ecac_estadual_mt.py,sha256=C26zmpGQGUq6sP9lU9nanM3Fje-rkyx5tjwmRy4lyL8,25300
@@ -64,7 +64,7 @@ worker_automate_hub/tasks/jobs/entrada_de_notas_39.py,sha256=89WgjhzhQXKoMmbRPil
64
64
  worker_automate_hub/tasks/jobs/entrada_de_notas_500.py,sha256=WBsCRbH7ANiCjEn0aEDc5AqGf6grEFhxyBoAIh3zJ40,44160
65
65
  worker_automate_hub/tasks/jobs/entrada_de_notas_503.py,sha256=FIF8HCyEAdecDw6dB9WC3hcLoLAC3FMQyTujPgfQFaI,46560
66
66
  worker_automate_hub/tasks/jobs/entrada_de_notas_505.py,sha256=xXeNipdXTSll8yAtAmN7v0sjN3oMlWU4THu30mKDddc,30339
67
- worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py,sha256=zpGcsMpmtfVK6TUE8JVBaAcdgAXialbqunWxeymsYh0,29183
67
+ worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py,sha256=Y20hsr46YbfkHPaSdC7pAgODMbfHyIAUg-NzCODWL78,37089
68
68
  worker_automate_hub/tasks/jobs/entrada_de_notas_9.py,sha256=ZYE2YmQJ9954Uuc9fiSykGi0ws_NPXs8ex244y20P44,64642
69
69
  worker_automate_hub/tasks/jobs/entrada_de_notas_9000.py,sha256=cDMzDGcylhg9pwtCPmZ82YItPS05PWcPtfeeC2WGrpA,65507
70
70
  worker_automate_hub/tasks/jobs/exemplo_processo.py,sha256=nV0iLoip2FH2-FhLmhX3nPqsfl_MPufZ3E5Q5krJvdc,3544
@@ -98,7 +98,7 @@ worker_automate_hub/utils/updater.py,sha256=en2FCGhI8aZ-JNP3LQm64NJDc4awCNW7UhbV
98
98
  worker_automate_hub/utils/util.py,sha256=kXGtm91s6XJBtD7m_KyCrOxQ7mCeIBqEOnhbfYs3Vf8,206355
99
99
  worker_automate_hub/utils/utils_nfe_entrada.py,sha256=L_z1Aps6BFWl-6_Ibm45vDid1S4kFDz5O78N2uO1Rq0,36458
100
100
  worker_automate_hub/worker.py,sha256=axdrr1xLTjWEyWfcyH3OCSpPTsyzck_fL_0u1DBLjvw,6525
101
- worker_automate_hub-0.5.664.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
102
- worker_automate_hub-0.5.664.dist-info/METADATA,sha256=cWIVE9pcQDN0pDK3VJ6VAJ3454GhhIO__KGR6GRwkDM,3049
103
- worker_automate_hub-0.5.664.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
104
- worker_automate_hub-0.5.664.dist-info/RECORD,,
101
+ worker_automate_hub-0.5.666.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
102
+ worker_automate_hub-0.5.666.dist-info/METADATA,sha256=XBITRv7rc811gyqZSrj_D6dWtC455hT33-J2kAEvpyA,3049
103
+ worker_automate_hub-0.5.666.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
104
+ worker_automate_hub-0.5.666.dist-info/RECORD,,