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.
- worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py +6 -6
- worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +200 -19
- {worker_automate_hub-0.5.664.dist-info → worker_automate_hub-0.5.666.dist-info}/METADATA +1 -1
- {worker_automate_hub-0.5.664.dist-info → worker_automate_hub-0.5.666.dist-info}/RECORD +6 -6
- {worker_automate_hub-0.5.664.dist-info → worker_automate_hub-0.5.666.dist-info}/WHEEL +0 -0
- {worker_automate_hub-0.5.664.dist-info → worker_automate_hub-0.5.666.dist-info}/entry_points.txt +0 -0
|
@@ -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("
|
|
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
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
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
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
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
|
-
|
|
650
|
-
|
|
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=
|
|
766
|
+
retorno=observacao,
|
|
654
767
|
status=RpaHistoricoStatusEnum.Falha,
|
|
655
768
|
tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
|
|
656
769
|
)
|
|
657
|
-
|
|
658
|
-
|
|
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
|
|
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:
|
|
@@ -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=
|
|
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=
|
|
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.
|
|
102
|
-
worker_automate_hub-0.5.
|
|
103
|
-
worker_automate_hub-0.5.
|
|
104
|
-
worker_automate_hub-0.5.
|
|
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,,
|
|
File without changes
|
{worker_automate_hub-0.5.664.dist-info → worker_automate_hub-0.5.666.dist-info}/entry_points.txt
RENAMED
|
File without changes
|