worker-automate-hub 0.4.448__tar.gz → 0.4.450__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/PKG-INFO +1 -1
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/pyproject.toml +1 -1
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/conexao_rdp.py +89 -76
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +21 -80
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +16 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/README.md +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/ahead_service.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/client.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/helpers/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/rpa_fila_service.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/rpa_historico_service.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/webhook_service.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/cli.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/config/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/config/settings.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/config.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/core/so_manipulation.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/deprecation.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/rate_limit.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/repeat.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/retry.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/singleton.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/timeit.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/dao/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/dto/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/dto/rpa_processo_rdp_dto.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/playground.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/task_definitions.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/task_executor.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/__init__.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/env.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/logger.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/toast.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/updater.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/util.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
- {worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/worker.py +0 -0
@@ -3,6 +3,7 @@ import platform
|
|
3
3
|
import subprocess
|
4
4
|
import socket
|
5
5
|
import pyautogui
|
6
|
+
import os
|
6
7
|
import pygetwindow as gw
|
7
8
|
from rich.console import Console
|
8
9
|
import pygetwindow as gw
|
@@ -55,16 +56,10 @@ class RDPConnection:
|
|
55
56
|
return ping_alcancado and porta_aberta
|
56
57
|
|
57
58
|
async def clicar_no_titulo(self):
|
58
|
-
"""
|
59
|
-
Função para clicar no título das janelas de Conexão de Área de Trabalho Remota
|
60
|
-
com o botão direito do mouse e executar comandos.
|
61
|
-
"""
|
62
59
|
janelas_rdp = [
|
63
60
|
win
|
64
61
|
for win in gw.getAllTitles()
|
65
|
-
if
|
66
|
-
or "Remote Desktop Connection" in win
|
67
|
-
or "Conexão de Área de Trabalho Remota" in win
|
62
|
+
if self.ip in win
|
68
63
|
]
|
69
64
|
|
70
65
|
for titulo in janelas_rdp:
|
@@ -74,88 +69,98 @@ class RDPConnection:
|
|
74
69
|
continue
|
75
70
|
|
76
71
|
console.print(f"Processando janela: {titulo}")
|
77
|
-
|
78
|
-
# Obtém as coordenadas da janela
|
79
72
|
x, y = janela.left, janela.top
|
80
73
|
|
81
74
|
try:
|
82
|
-
|
83
|
-
pyautogui.
|
84
|
-
|
85
|
-
|
86
|
-
await worker_sleep(
|
87
|
-
pyautogui.press("down", presses=7, interval=0.1)
|
88
|
-
await worker_sleep(5)
|
75
|
+
pyautogui.moveTo(x + 2, y + 2)
|
76
|
+
pyautogui.hotkey("alt", "space")
|
77
|
+
await worker_sleep(2)
|
78
|
+
pyautogui.press("down", presses=6, interval=0.1)
|
79
|
+
await worker_sleep(2)
|
89
80
|
pyautogui.hotkey("enter")
|
90
|
-
await worker_sleep(
|
81
|
+
await worker_sleep(2)
|
91
82
|
pyautogui.hotkey("enter")
|
92
83
|
break
|
93
84
|
|
94
85
|
except Exception as e:
|
95
86
|
console.print(f"Erro ao interagir com a janela {titulo}: {e}")
|
96
|
-
|
87
|
+
|
88
|
+
async def open_rdp(self):
|
89
|
+
base_path = os.path.join("worker_automate_hub", "tasks", "jobs")
|
90
|
+
rdp_file_path = os.path.join(base_path, "connection.rdp")
|
91
|
+
os.makedirs(base_path, exist_ok=True)
|
92
|
+
|
93
|
+
rdp_content = f"""screen mode id:i:1
|
94
|
+
desktopwidth:i:1920
|
95
|
+
desktopheight:i:1080
|
96
|
+
use multimon:i:0
|
97
|
+
session bpp:i:32
|
98
|
+
compression:i:1
|
99
|
+
keyboardhook:i:2
|
100
|
+
displayconnectionbar:i:1
|
101
|
+
disable wallpaper:i:0
|
102
|
+
allow font smoothing:i:1
|
103
|
+
allow desktop composition:i:1
|
104
|
+
disable full window drag:i:0
|
105
|
+
disable menu anims:i:0
|
106
|
+
disable themes:i:0
|
107
|
+
disable cursor setting:i:0
|
108
|
+
bitmapcachepersistenable:i:1
|
109
|
+
full address:s:{self.ip}
|
110
|
+
username:s:{self.user}
|
111
|
+
winposstr:s:0,1,{(1920 // 4)},{(1080 // 4)},{(1920 // 4) + (1920 // 2)},{(1080 // 4) + (1080 // 2)}
|
112
|
+
"""
|
113
|
+
|
114
|
+
try:
|
115
|
+
with open(rdp_file_path, "w") as file:
|
116
|
+
file.write(rdp_content)
|
117
|
+
print(f"Arquivo RDP criado: {rdp_file_path}")
|
118
|
+
except Exception as error:
|
119
|
+
print(f"Erro ao montar o arquivo RDP: {error}")
|
120
|
+
return
|
121
|
+
|
122
|
+
try:
|
123
|
+
subprocess.Popen(["mstsc", rdp_file_path], close_fds=True, start_new_session=True)
|
124
|
+
console.print("Conexão RDP iniciada.")
|
125
|
+
except Exception as error:
|
126
|
+
console.print(f"Erro ao abrir a conexão RDP: {error}")
|
127
|
+
|
97
128
|
async def conectar(self):
|
98
129
|
console.print(f"Iniciando cliente RDP para {self.ip}")
|
99
130
|
try:
|
100
|
-
pyautogui.hotkey("win", "d")
|
101
|
-
await worker_sleep(5) # Tempo para garantir que todas as janelas sejam minimizadas
|
102
|
-
console.print("Todas as janelas minimizadas com sucesso.")
|
103
|
-
|
104
|
-
subprocess.Popen(["mstsc", f"/v:{self.ip}"], close_fds=True, start_new_session=True)
|
105
|
-
await worker_sleep(10) # Tempo aumentado para garantir abertura
|
106
|
-
|
107
|
-
console.print("Procurando janela 'Ligação ao ambiente de trabalho remoto'")
|
108
|
-
try:
|
109
|
-
windows = gw.getWindowsWithTitle("Ligação ao ambiente de trabalho remoto")
|
110
|
-
except:
|
111
|
-
windows = gw.getWindowsWithTitle("Conexão de Área de Trabalho Remota")
|
112
|
-
|
113
|
-
if not windows:
|
114
|
-
logger.warning("Tentando encontrar janela com título em inglês 'Remote Desktop Connection'")
|
115
|
-
windows = gw.getWindowsWithTitle("Remote Desktop Connection")
|
116
|
-
|
117
|
-
if not windows:
|
118
|
-
logger.error("Janela de RDP não encontrada.")
|
119
|
-
return False
|
120
|
-
|
121
|
-
rdp_window = windows[0]
|
122
|
-
console.print(f"Janela '{rdp_window.title}' encontrada. Focando na janela.")
|
123
|
-
|
124
|
-
# Restaurar janela se estiver minimizada
|
125
|
-
if rdp_window.isMinimized:
|
126
|
-
rdp_window.restore()
|
127
|
-
await worker_sleep(5)
|
128
|
-
|
129
|
-
# Redimensionar para 50% da tela
|
130
|
-
screen_width, screen_height = pyautogui.size()
|
131
|
-
new_width = screen_width // 2
|
132
|
-
new_height = screen_height // 2
|
133
|
-
rdp_window.resizeTo(new_width, new_height)
|
134
|
-
rdp_window.moveTo(screen_width // 4, screen_height // 4)
|
135
|
-
console.print(f"Janela redimensionada para {new_width}x{new_height}.")
|
136
|
-
|
137
|
-
rdp_window.activate()
|
138
|
-
await worker_sleep(5) # Tempo extra para garantir que a janela está ativa
|
139
|
-
|
140
|
-
# Clique para garantir o foco
|
141
|
-
pyautogui.click(rdp_window.left + 50, rdp_window.top + 50)
|
142
131
|
await worker_sleep(3)
|
132
|
+
await self.open_rdp()
|
133
|
+
await worker_sleep(5)
|
143
134
|
|
144
|
-
|
145
|
-
|
135
|
+
console.print("Procurando janela RDP")
|
146
136
|
try:
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
137
|
+
possible_titles = ["Conexão de Área de Trabalho Remota", "Ligação ao ambiente de trabalho remoto"]
|
138
|
+
app = None
|
139
|
+
app_window = None
|
140
|
+
|
141
|
+
for title in possible_titles:
|
142
|
+
try:
|
143
|
+
app = Application(backend="uia").connect(title=title)
|
144
|
+
app_window = app.window(title=title)
|
145
|
+
console.print(f"Janela encontrada: {title}")
|
146
|
+
break
|
147
|
+
except Exception:
|
148
|
+
continue
|
149
|
+
|
150
|
+
if not app or not app_window:
|
151
|
+
raise Exception("Nenhuma janela com título correspondente foi encontrada.")
|
152
|
+
|
153
|
+
app_window.set_focus()
|
154
|
+
console.print("Janela RDP ativada.")
|
155
|
+
|
156
|
+
pyautogui.press("left")
|
157
|
+
await worker_sleep(1)
|
158
|
+
pyautogui.hotkey("enter")
|
159
|
+
await worker_sleep(3)
|
160
|
+
|
161
|
+
except Exception as e:
|
162
|
+
console.print(f"Erro ao ativar a janela RDP: {e}", style="bold red")
|
163
|
+
|
159
164
|
|
160
165
|
console.print("Inserindo senha.")
|
161
166
|
pyautogui.write(self.password, interval=0.1)
|
@@ -165,9 +170,18 @@ class RDPConnection:
|
|
165
170
|
await worker_sleep(5)
|
166
171
|
pyautogui.press("enter")
|
167
172
|
console.print("Credenciais inseridas.")
|
168
|
-
await worker_sleep(5)
|
173
|
+
await worker_sleep(5)
|
169
174
|
|
170
175
|
console.print("Conexão RDP ativa. Mantendo o script em execução.")
|
176
|
+
|
177
|
+
try:
|
178
|
+
base_path = os.path.join("worker_automate_hub", "tasks", "jobs")
|
179
|
+
rdp_file_path = os.path.join(base_path, "connection.rdp")
|
180
|
+
if os.path.exists(rdp_file_path):
|
181
|
+
os.remove(rdp_file_path)
|
182
|
+
except Exception as error:
|
183
|
+
console.print(f"Erro ao deletar arquivo 'connection.rdp'. Error: {error}")
|
184
|
+
|
171
185
|
return True
|
172
186
|
except Exception as e:
|
173
187
|
logger.error(f"Erro ao tentar conectar via RDP: {e}")
|
@@ -191,7 +205,6 @@ async def conexao_rdp(task: RpaProcessoRdpDTO) -> RpaRetornoProcessoDTO:
|
|
191
205
|
|
192
206
|
await rdp.clicar_no_titulo()
|
193
207
|
|
194
|
-
# Mantém o script ativo para manter a conexão RDP aberta
|
195
208
|
return RpaRetornoProcessoDTO(
|
196
209
|
sucesso=True,
|
197
210
|
retorno="Conexão RDP estabelecida com sucesso.",
|
@@ -331,7 +331,6 @@ async def entrada_de_notas_15(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
|
|
331
331
|
|
332
332
|
# Verifica se a info 'Nota fiscal incluida' está na tela
|
333
333
|
await worker_sleep(6)
|
334
|
-
retorno = False
|
335
334
|
try:
|
336
335
|
app = Application().connect(class_name="TFrmNotaFiscalEntrada")
|
337
336
|
main_window = app["Information"]
|
@@ -343,11 +342,8 @@ async def entrada_de_notas_15(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
|
|
343
342
|
|
344
343
|
if btn_ok.exists():
|
345
344
|
btn_ok.click()
|
346
|
-
retorno = True
|
347
345
|
else:
|
348
346
|
console.print(f" botão OK Não enontrado")
|
349
|
-
retorno = await verify_nf_incuded()
|
350
|
-
|
351
347
|
except Exception as e:
|
352
348
|
try:
|
353
349
|
await worker_sleep(5)
|
@@ -366,92 +362,37 @@ async def entrada_de_notas_15(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
|
|
366
362
|
status=RpaHistoricoStatusEnum.Falha,
|
367
363
|
)
|
368
364
|
|
369
|
-
|
370
|
-
|
371
|
-
i = 0
|
372
|
-
|
373
|
-
while i < max_attempts:
|
374
|
-
information_pop_up = await is_window_open("Information")
|
375
|
-
if information_pop_up["IsOpened"] == True:
|
376
|
-
break
|
377
|
-
else:
|
378
|
-
console.print(f"Aguardando confirmação de nota incluida...\n")
|
379
|
-
await worker_sleep(5)
|
380
|
-
i += 1
|
365
|
+
max_attempts = 60
|
366
|
+
i = 0
|
381
367
|
|
368
|
+
while i < max_attempts:
|
382
369
|
information_pop_up = await is_window_open("Information")
|
383
370
|
if information_pop_up["IsOpened"] == True:
|
384
|
-
|
385
|
-
main_window = app["Information"]
|
386
|
-
|
387
|
-
main_window.set_focus()
|
388
|
-
|
389
|
-
console.print(f"Obtendo texto do Information...\n")
|
390
|
-
console.print(f"Tirando print da janela do Information para realização do OCR...\n")
|
391
|
-
|
392
|
-
window_rect = main_window.rectangle()
|
393
|
-
screenshot = pyautogui.screenshot(
|
394
|
-
region=(
|
395
|
-
window_rect.left,
|
396
|
-
window_rect.top,
|
397
|
-
window_rect.width(),
|
398
|
-
window_rect.height(),
|
399
|
-
)
|
400
|
-
)
|
401
|
-
username = getpass.getuser()
|
402
|
-
path_to_png = f"C:\\Users\\{username}\\Downloads\\information_popup_{nota.get("nfe")}.png"
|
403
|
-
screenshot.save(path_to_png)
|
404
|
-
console.print(f"Print salvo em {path_to_png}...\n")
|
405
|
-
|
406
|
-
console.print(
|
407
|
-
f"Preparando a imagem para maior resolução e assertividade no OCR...\n"
|
408
|
-
)
|
409
|
-
image = Image.open(path_to_png)
|
410
|
-
image = image.convert("L")
|
411
|
-
enhancer = ImageEnhance.Contrast(image)
|
412
|
-
image = enhancer.enhance(2.0)
|
413
|
-
image.save(path_to_png)
|
414
|
-
console.print(f"Imagem preparada com sucesso...\n")
|
415
|
-
console.print(f"Realizando OCR...\n")
|
416
|
-
captured_text = pytesseract.image_to_string(Image.open(path_to_png))
|
417
|
-
console.print(
|
418
|
-
f"Texto Full capturado {captured_text}...\n"
|
419
|
-
)
|
420
|
-
os.remove(path_to_png)
|
421
|
-
if 'nota fiscal inc' in captured_text.lower():
|
422
|
-
console.print(f"Tentando clicar no Botão OK...\n")
|
423
|
-
btn_ok = main_window.child_window(class_name="TButton")
|
424
|
-
|
425
|
-
if btn_ok.exists():
|
426
|
-
btn_ok.click()
|
427
|
-
retorno = True
|
428
|
-
else:
|
429
|
-
return RpaRetornoProcessoDTO(
|
430
|
-
sucesso=False,
|
431
|
-
retorno=f"Pop_up Informantion não mapeado para andamento do robô, mensagem {captured_text}",
|
432
|
-
status=RpaHistoricoStatusEnum.Falha,
|
433
|
-
)
|
371
|
+
break
|
434
372
|
else:
|
435
|
-
console.print(f"
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
373
|
+
console.print(f"Aguardando confirmação de nota incluida...\n")
|
374
|
+
await worker_sleep(5)
|
375
|
+
i += 1
|
376
|
+
|
377
|
+
await worker_sleep(15)
|
378
|
+
console.print("\nVerifica se a nota ja foi lançada...")
|
379
|
+
nf_chave_acesso = int(nota.get("nfe"))
|
380
|
+
status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
|
381
|
+
if status_nf_emsys.get("status") != "Lançada":
|
440
382
|
return RpaRetornoProcessoDTO(
|
441
383
|
sucesso=False,
|
442
|
-
retorno=f"Erro
|
384
|
+
retorno=f"Erro ao lançar nota",
|
443
385
|
status=RpaHistoricoStatusEnum.Falha,
|
444
386
|
)
|
445
|
-
|
446
|
-
if retorno:
|
447
|
-
console.print("\nNota lançada com sucesso...", style="bold green")
|
448
|
-
await worker_sleep(6)
|
387
|
+
else:
|
449
388
|
return RpaRetornoProcessoDTO(
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
389
|
+
sucesso=True,
|
390
|
+
retorno="Nota Lançada com sucesso!",
|
391
|
+
status=RpaHistoricoStatusEnum.Sucesso,
|
392
|
+
)
|
393
|
+
|
454
394
|
|
395
|
+
|
455
396
|
except Exception as ex:
|
456
397
|
observacao = f"Erro Processo Entrada de Notas: {str(ex)}"
|
457
398
|
logger.error(observacao)
|
@@ -710,6 +710,22 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
|
|
710
710
|
send_keys("%o")
|
711
711
|
await worker_sleep(7)
|
712
712
|
|
713
|
+
|
714
|
+
itens_by_supplier = await is_window_open_by_class("TFrmAguarde", "TMessageForm")
|
715
|
+
if itens_by_supplier["IsOpened"] == True:
|
716
|
+
console.print(
|
717
|
+
"Tela de POP-UP de Itens não localizados ou NCM encontrado ...\n"
|
718
|
+
)
|
719
|
+
itens_by_supplier_work = await itens_not_found_supplier(nota.get("nfe"))
|
720
|
+
if itens_by_supplier_work["window"] == "NCM" or itens_by_supplier_work["window"] == "MultiplasRef":
|
721
|
+
console.log(itens_by_supplier_work["retorno"], style="bold green")
|
722
|
+
else:
|
723
|
+
return RpaRetornoProcessoDTO(
|
724
|
+
sucesso=False,
|
725
|
+
retorno=itens_by_supplier_work["retorno"],
|
726
|
+
status=RpaHistoricoStatusEnum.Falha,
|
727
|
+
)
|
728
|
+
|
713
729
|
# VERIFICANDO A EXISTENCIA DE ERRO
|
714
730
|
erro_pop_up = await is_window_open("Erro")
|
715
731
|
if erro_pop_up["IsOpened"] == True:
|
File without changes
|
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/__init__.py
RENAMED
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/ahead_service.py
RENAMED
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/api/client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/config/__init__.py
RENAMED
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/config/settings.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/repeat.py
RENAMED
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/retry.py
RENAMED
File without changes
|
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/decorators/timeit.py
RENAMED
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/models/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/tasks/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/__init__.py
RENAMED
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/env.py
RENAMED
File without changes
|
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/logger.py
RENAMED
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/toast.py
RENAMED
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/updater.py
RENAMED
File without changes
|
{worker_automate_hub-0.4.448 → worker_automate_hub-0.4.450}/worker_automate_hub/utils/util.py
RENAMED
File without changes
|
File without changes
|
File without changes
|