worker-automate-hub 0.5.84__py3-none-any.whl → 0.5.85__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,6 +12,7 @@ from pywinauto.application import Application
12
12
  from pypdf import PdfReader
13
13
  from PIL import Image, ImageEnhance
14
14
  from pywinauto.keyboard import send_keys
15
+ from pywinauto.mouse import double_click
15
16
  import win32clipboard
16
17
  from pywinauto_recorder.player import set_combobox
17
18
  from rich.console import Console
@@ -51,6 +52,7 @@ from worker_automate_hub.utils.util import (
51
52
  type_text_into_field,
52
53
  worker_sleep,
53
54
  post_partner,
55
+ get_text_display_window,
54
56
  )
55
57
 
56
58
  pyautogui.PAUSE = 0.5
@@ -832,12 +834,15 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
832
834
  if information_pop_up["IsOpened"] == True:
833
835
  msg_pop_up = await ocr_by_class(numero_nota_fiscal, "TMessageForm", "TMessageForm")
834
836
  if msg_pop_up.sucesso:
835
- if 'operação concl' in msg_pop_up or 'operacao concl' in msg_pop_up:
836
- information_operacao_concluida = main_window.child_window(class_name="TMessageForm")
837
- btn_ok = information_operacao_concluida.child_window(class_name="TButton")
838
- btn_ok.click()
839
- await worker_sleep(4)
840
- main_window.close()
837
+ if 'operação concl' in msg_pop_up.lower() or 'operacao concl' in msg_pop_up.lower():
838
+ try:
839
+ information_operacao_concluida = main_window.child_window(class_name="TMessageForm")
840
+ btn_ok = information_operacao_concluida.child_window(class_name="TButton")
841
+ btn_ok.click()
842
+ await worker_sleep(4)
843
+ main_window.close()
844
+ except:
845
+ pyautogui.press('enter')
841
846
  break
842
847
  else:
843
848
  retorno = f"Pop up nao mapeado para seguimento do robo {msg_pop_up} \nEtapas Executadas:\n{steps}"
@@ -874,6 +879,44 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
874
879
  )
875
880
 
876
881
 
882
+ console.print("Verificando se a nota foi transmitida com sucesso")
883
+ app = Application().connect(class_name="TFrmProcessamentoFEe2", timeout=15)
884
+ main_window = app["TFrmProcessamentoFEe2"]
885
+ main_window.set_focus()
886
+
887
+ rect = main_window.rectangle()
888
+ center_x = (rect.left + rect.right) // 2
889
+ center_y = (rect.top + rect.bottom) // 2
890
+
891
+ adjusted_center_y = center_y + 10
892
+ double_click(coords=(center_x, adjusted_center_y))
893
+
894
+ with pyautogui.hold('ctrl'):
895
+ pyautogui.press('c')
896
+ await worker_sleep(1)
897
+ with pyautogui.hold('ctrl'):
898
+ pyautogui.press('c')
899
+
900
+ win32clipboard.OpenClipboard()
901
+ pop_up_status = win32clipboard.GetClipboardData().strip()
902
+ win32clipboard.CloseClipboard()
903
+ console.print(f"Status copiado: {pop_up_status}")
904
+
905
+ if "autorizado o uso da nf-e" in pop_up_status.lower():
906
+ console.print("Sucesso ao transmitir...\n")
907
+ main_window.close()
908
+ else:
909
+ get_error_msg = await get_text_display_window(pop_up_status)
910
+ console.print(f"Msg Rejeição: {get_error_msg}")
911
+ retorno = f"Erro ao transmitir, mensagem de rejeição {get_error_msg} \nEtapas Executadas:\n{steps}"
912
+ return RpaRetornoProcessoDTO(
913
+ sucesso=False,
914
+ retorno=result,
915
+ status=RpaHistoricoStatusEnum.Falha,
916
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
917
+ )
918
+
919
+
877
920
  #PROCESSO DE IMPRESSÃO
878
921
  console.print("Conectando a janela para seguir com o processo de impressão...\n")
879
922
  app = Application().connect(class_name="TFrmGerenciadorNFe2", timeout=60)
@@ -889,6 +932,7 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
889
932
  app = Application().connect(class_name="TFrmConfigurarTemplateDANF2", timeout=60)
890
933
  main_window = app["TFrmGerenciadorNFe2"]
891
934
  main_window.set_focus()
935
+ console.print("Selecionando PDF...\n")
892
936
  btn_selecionar_pdf = main_window.child_window(class_name="TRadioButton", found_index=1)
893
937
  btn_selecionar_pdf.click()
894
938
  await worker_sleep(2)
@@ -967,6 +1011,7 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
967
1011
  pyautogui.press("enter")
968
1012
  await worker_sleep(2)
969
1013
  pyautogui.press("enter")
1014
+ await worker_sleep(4)
970
1015
  console.print(f"\nPesquisa: 'Cadastro Pré venda' realizada com sucesso",style="bold green")
971
1016
  cadastro_pre_venda = await is_window_open_by_class("TFrmPreVenda", "TFrmPreVenda")
972
1017
  if cadastro_pre_venda["IsOpened"] == True:
@@ -1139,7 +1184,8 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1139
1184
  tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
1140
1185
  )
1141
1186
 
1142
- steps += 'ETAPA 04 - PRE VENDA INCLUIDA COM SUCESSO'
1187
+
1188
+ console.print("VERIFICANDO SE A PRÉ VENDA FOI INCLUIDA COM SUCESSO... \n")
1143
1189
  #VERIFICANDO SE A PRÉ VENDA FOI INCLUIDA COM SUCESSO
1144
1190
  app = Application().connect(class_name="TFrmIncluiItemPreVenda", timeout=60)
1145
1191
  main_window = app["Informação"]
@@ -1147,16 +1193,21 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1147
1193
 
1148
1194
  btn_ok = main_window.child_window(class_name="Button")
1149
1195
  btn_ok.click()
1196
+ await worker_sleep(1)
1197
+ steps += 'ETAPA 04 - PRE VENDA INCLUIDA COM SUCESSO'
1150
1198
 
1151
1199
  #CONFIRMANDO POP UP DE PRÉ VENDA
1200
+ console.print("CONFIRMANDO POP UP DE PRÉ VENDA... \n")
1152
1201
  app = Application().connect(class_name="TFrmIncluiItemPreVenda", timeout=60)
1153
1202
  main_window = app["Confirm"]
1154
1203
  main_window.set_focus()
1155
1204
 
1156
1205
  btn_yes = main_window.child_window(class_name="TButton", found_index=1)
1157
1206
  btn_yes.click()
1207
+ await worker_sleep(1)
1158
1208
 
1159
1209
  #CONFIRMANDO NA TELA DE PRE VENDA
1210
+ console.print("CONFIRMANDO POP UP DE PRÉ VENDA 2... \n")
1160
1211
  app = Application().connect(class_name="TFrmIncluiItemPreVenda", timeout=60)
1161
1212
  main_window = app["TFrmIncluiItemPreVenda"]
1162
1213
  main_window.set_focus()
@@ -1167,6 +1218,8 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1167
1218
  btn_confirmar.click()
1168
1219
  await worker_sleep(3)
1169
1220
 
1221
+ #CONFIRMANDO NA TELA DE PRE VENDA
1222
+ console.print("CONFIRMANDO POP UP DE PRÉ VENDA 3... \n")
1170
1223
  app = Application().connect(class_name="TFrmIncluiItemPreVenda", timeout=60)
1171
1224
  main_window = app["Confirm"]
1172
1225
  main_window.set_focus()
@@ -1183,7 +1236,8 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1183
1236
  btn_ok.click()
1184
1237
  await worker_sleep(3)
1185
1238
 
1186
-
1239
+ #CONFIRMANDO NA TELA DE PRE VENDA
1240
+ console.print("CONFIRMANDO POP UP DE PRÉ VENDA 4... \n")
1187
1241
  app = Application().connect(class_name="TFrmIncluiItemPreVenda", timeout=60)
1188
1242
  main_window = app["Confirm"]
1189
1243
  main_window.set_focus()
@@ -1193,6 +1247,7 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1193
1247
  await worker_sleep(3)
1194
1248
 
1195
1249
  #APROVAR CREDITO
1250
+ console.print("Aprovar Credito... \n")
1196
1251
  app = Application().connect(class_name="TFrmIncluiItemPreVenda", timeout=60)
1197
1252
  main_window = app["TFrmIncluiItemPreVenda"]
1198
1253
  main_window.set_focus()
@@ -1221,6 +1276,7 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1221
1276
 
1222
1277
 
1223
1278
  #FATURAR
1279
+ console.print("FATURAR... \n")
1224
1280
  app = Application().connect(class_name="TFrmIncluiItemPreVenda", timeout=60)
1225
1281
  main_window = app["TFrmIncluiItemPreVenda"]
1226
1282
  main_window.set_focus()
@@ -1256,21 +1312,25 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1256
1312
  await worker_sleep(30)
1257
1313
 
1258
1314
  #FATURAMENTO PRÉ-VENDA
1315
+ console.print("FATURAMENTO PRÉ-VENDA... \n")
1259
1316
  app = Application().connect(class_name="TFrmDadosFaturamentoPreVenda", timeout=60)
1260
1317
  main_window = app["TFrmDadosFaturamentoPreVenda"]
1261
1318
  main_window.set_focus()
1262
1319
 
1263
1320
  #VERIFICANDO SE POSSUI POP UP WARNING
1321
+ console.print("Verificando a presença de Warning... \n")
1264
1322
  warning_boo = False
1265
1323
  try:
1266
1324
  app = Application().connect(class_name="TFrmDadosFaturamentoPreVenda", timeout=60)
1267
1325
  main_window = app["Warning"]
1268
1326
  main_window.set_focus()
1327
+ console.print("Possui Warning... \n")
1269
1328
  btn_ok = main_window.child_window(class_name="TButton", found_index=0)
1270
1329
  btn_ok.click()
1271
1330
  await worker_sleep(3)
1272
1331
  warning_boo = True
1273
1332
  except:
1333
+ console.print("Não Possui Warning... \n")
1274
1334
  pass
1275
1335
 
1276
1336
  #ALTERANDO TRIBUTO DOS ITENS
@@ -1283,7 +1343,9 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1283
1343
  await worker_sleep(2)
1284
1344
  send_keys("%g")
1285
1345
  await worker_sleep(2)
1346
+
1286
1347
 
1348
+ console.print("Conectando para realizar a alteração da tributação do produto... \n")
1287
1349
  app = Application().connect(class_name="TFrmDadosTributacaoProdutoPreVenda", timeout=60)
1288
1350
  main_window = app["TFrmDadosTributacaoProdutoPreVenda"]
1289
1351
 
@@ -1292,10 +1354,12 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1292
1354
 
1293
1355
 
1294
1356
  if not item_arla:
1357
+ console.print("Não é item Arla ajustando tributacao... \n")
1295
1358
  tributacao_icms_select.click()
1296
1359
  await worker_sleep(1)
1297
1360
  set_combobox("||List", "061 - 061- MONOFASICO")
1298
1361
  else:
1362
+ console.print("Item Arla buscando pela aliquota do estado... \n")
1299
1363
  aliquota = None
1300
1364
  for item in conconfig_aliquota_icms:
1301
1365
  if cidade_cliente in item["estado"]:
@@ -1320,6 +1384,8 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1320
1384
  send_keys("%o")
1321
1385
 
1322
1386
 
1387
+ console.print("Processo de ajustar aliquota realizado com sucesso, adicionando a mensagem... \n")
1388
+ console.print("Conectando a janela de pre venda... \n")
1323
1389
  app = Application().connect(class_name="TFrmDadosFaturamentoPreVenda", timeout=60)
1324
1390
  main_window = app["TFrmDadosFaturamentoPreVenda"]
1325
1391
  main_window.set_focus()
@@ -1329,11 +1395,14 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1329
1395
 
1330
1396
  panel_tab_sheet = main_window.child_window(class_name="TcxTabSheet", found_index=0)
1331
1397
  field_observacao = panel_tab_sheet.child_window(class_name="TDBIMemo")
1398
+ console.print(f"Mensagem a ser adicionada\n")
1332
1399
  text_campo_observacao = f"Nome do Motorista: {nota.get("nomeMotorista")} - Placa: {nota.get("placaClienteCorreto")} - Quilometragem do Veículo: {nota.get("quilometragemVeiculo")}"
1400
+ console.print(f"{text_campo_observacao}\n")
1333
1401
  field_observacao.set_edit_text(text_campo_observacao)
1334
- send_keys("%o")
1335
1402
  await worker_sleep(2)
1336
1403
 
1404
+ console.print(f"Mensagem adicionada com sucesso, filizando o processo\n")
1405
+ send_keys("%o")
1337
1406
  app = Application().connect(class_name="TFrmDadosFaturamentoPreVenda", timeout=60)
1338
1407
  main_window = app["Confirm"]
1339
1408
  main_window.set_focus()
@@ -1355,6 +1424,7 @@ async def devolucao_prazo_a_faturar(task: RpaProcessoEntradaDTO) -> RpaRetornoPr
1355
1424
  btn_ok_print_screen.click()
1356
1425
 
1357
1426
  #NAVEGANDO NA TELA DE SALVAR RELATORIO
1427
+ console.print(f"NAVEGANDO NA TELA DE SALVAR RELATORIO\n")
1358
1428
  tpanel_main_window = main_window.child_window(class_name="HWNDView", found_index=0)
1359
1429
  tpanel_element = tpanel_main_window.child_window(class_name="Element", found_index=0)
1360
1430
  tpanel_background = tpanel_element.child_window(class_name="PreviewBackground", found_index=0)
@@ -3849,9 +3849,9 @@ async def gerenciador_nf_header(periodo: str, cod_cliente: str) -> RpaRetornoPro
3849
3849
  if i == max_attempts:
3850
3850
  return RpaRetornoProcessoDTO(
3851
3851
  sucesso=False,
3852
- retorno=f"Tempo esgotado, No data display ainda presente na busca pela nota em Gerenciador NF-e",
3852
+ retorno=f"Tempo esgotado, No data display ainda presente na busca pela nota em Gerenciador NF-e, nota não encontrada",
3853
3853
  status=RpaHistoricoStatusEnum.Falha,
3854
- tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
3854
+ tags=[RpaTagDTO(descricao=RpaTagEnum.Negocio)]
3855
3855
  )
3856
3856
 
3857
3857
  try:
@@ -4039,3 +4039,14 @@ async def pessoas_ativa_cliente_fornecedor(cod_cliente: str, ativar_cliente: boo
4039
4039
  status=RpaHistoricoStatusEnum.Falha,
4040
4040
  tags=[RpaTagDTO(descricao=RpaTagEnum.Tecnico)]
4041
4041
  )
4042
+
4043
+
4044
+
4045
+ async def get_text_display_window(dados_texto):
4046
+ linhas = dados_texto.strip().split("\n")
4047
+
4048
+ for linha in linhas[1:]:
4049
+ match = re.search(r"Rejeicao:(.*)", linha)
4050
+ if match:
4051
+ return match.group(1).strip()
4052
+ return ''
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: worker-automate-hub
3
- Version: 0.5.84
3
+ Version: 0.5.85
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
@@ -37,7 +37,7 @@ worker_automate_hub/tasks/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
37
37
  worker_automate_hub/tasks/jobs/coleta_dje_process.py,sha256=UkLWTC5Ub2qBb0yY-8IZ0DLLOVJOfNTq_z9krx_t25Q,29476
38
38
  worker_automate_hub/tasks/jobs/conexao_rdp.py,sha256=S6QC4xhuo0pB5FjaUJZNMm1LIgEjpjifReCTBDqxH-U,11719
39
39
  worker_automate_hub/tasks/jobs/descartes.py,sha256=0bMCJ0xIcK8TLSgjF6taAbGFLMU-sGDVFIhUYSRtrbg,41092
40
- worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py,sha256=UIc3YWJ--jNVewu15e8S7_6zJsbHC9EBVZvrKpeg-5U,82716
40
+ worker_automate_hub/tasks/jobs/devolucao_prazo_a_faturar.py,sha256=xy7k_MYVHWBcOjD_rnVO1fUSxIBudwWb8eA1UFnF2Ec,86704
41
41
  worker_automate_hub/tasks/jobs/ecac_estadual_go.py,sha256=dKkf22nH5gp3RErq5u0UzRsKyJ81fc6ZZ4vLtUuMwHA,21002
42
42
  worker_automate_hub/tasks/jobs/ecac_estadual_main.py,sha256=8WmKe4-MRtzHobXz2S4YBDNN8alfawkC-BBlRY-mn1g,1726
43
43
  worker_automate_hub/tasks/jobs/ecac_estadual_mt.py,sha256=C26zmpGQGUq6sP9lU9nanM3Fje-rkyx5tjwmRy4lyL8,25300
@@ -73,10 +73,10 @@ worker_automate_hub/utils/get_creds_gworkspace.py,sha256=ZJ0IIEjM4IXIV9rwfbOZ1V1
73
73
  worker_automate_hub/utils/logger.py,sha256=FYV9fg0_RAYJF_ZOCJEbqQAiCXlXk2gMpvUU1rzT_xs,671
74
74
  worker_automate_hub/utils/toast.py,sha256=xPHc5r5uOxB_cZlCzm13Kt2qSKLLFZALncU6Qg3Ft68,1162
75
75
  worker_automate_hub/utils/updater.py,sha256=en2FCGhI8aZ-JNP3LQm64NJDc4awCNW7UhbVlwDl49Y,7972
76
- worker_automate_hub/utils/util.py,sha256=bN6DwqQeXJqR2TuCsp_TF8j4vcSGwiE71ExAuR_X3fU,162024
76
+ worker_automate_hub/utils/util.py,sha256=ZMbWjvZ6vbDgkosFAt2xUJGoAJOIZhxNfJyYplvyN3Q,162310
77
77
  worker_automate_hub/utils/utils_nfe_entrada.py,sha256=iYpOs7fb7C3bY61QHySr00xlDNzrrCP0zaexOpBPuaQ,31930
78
78
  worker_automate_hub/worker.py,sha256=CT-poyP1ZYvubArYsnnNd9oJ53SPaDwgr6p6keS3nI4,6248
79
- worker_automate_hub-0.5.84.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
80
- worker_automate_hub-0.5.84.dist-info/METADATA,sha256=eYGDlY07ESjGjGgG-frp4eeaTJ0jLgFGAn_Iusp1qOE,2894
81
- worker_automate_hub-0.5.84.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
82
- worker_automate_hub-0.5.84.dist-info/RECORD,,
79
+ worker_automate_hub-0.5.85.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
80
+ worker_automate_hub-0.5.85.dist-info/METADATA,sha256=lLj6gBWfTbJVWrY4xtDZFJTRmPzly4a159kp5RWg1yc,2894
81
+ worker_automate_hub-0.5.85.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
82
+ worker_automate_hub-0.5.85.dist-info/RECORD,,