worker-automate-hub 0.4.350__py3-none-any.whl → 0.4.352__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,12 @@
1
1
  import asyncio
2
+ import getpass
3
+ import os
2
4
  import warnings
3
5
 
4
6
  import pyautogui
7
+ from pywinauto.keyboard import send_keys
8
+ from PIL import Image, ImageEnhance
9
+ import pytesseract
5
10
  from pywinauto.application import Application
6
11
  from pywinauto_recorder.player import set_combobox
7
12
  from rich.console import Console
@@ -332,6 +337,83 @@ async def entrada_de_notas_15(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
332
337
  status=RpaHistoricoStatusEnum.Falha,
333
338
  )
334
339
 
340
+ try:
341
+ max_attempts = 60
342
+ i = 0
343
+
344
+ while i < max_attempts:
345
+ information_pop_up = await is_window_open("Information")
346
+ if information_pop_up["IsOpened"] == True:
347
+ break
348
+ else:
349
+ console.print(f"Aguardando confirmação de nota incluida...\n")
350
+ await worker_sleep(5)
351
+ i += 1
352
+
353
+ information_pop_up = await is_window_open("Information")
354
+ if information_pop_up["IsOpened"] == True:
355
+ app = Application().connect(class_name="TFrmNotaFiscalEntrada")
356
+ main_window = app["Information"]
357
+
358
+ main_window.set_focus()
359
+
360
+ console.print(f"Obtendo texto do Information...\n")
361
+ console.print(f"Tirando print da janela do Information para realização do OCR...\n")
362
+
363
+ window_rect = main_window.rectangle()
364
+ screenshot = pyautogui.screenshot(
365
+ region=(
366
+ window_rect.left,
367
+ window_rect.top,
368
+ window_rect.width(),
369
+ window_rect.height(),
370
+ )
371
+ )
372
+ username = getpass.getuser()
373
+ path_to_png = f"C:\\Users\\{username}\\Downloads\\information_popup_{nota.get("nfe")}.png"
374
+ screenshot.save(path_to_png)
375
+ console.print(f"Print salvo em {path_to_png}...\n")
376
+
377
+ console.print(
378
+ f"Preparando a imagem para maior resolução e assertividade no OCR...\n"
379
+ )
380
+ image = Image.open(path_to_png)
381
+ image = image.convert("L")
382
+ enhancer = ImageEnhance.Contrast(image)
383
+ image = enhancer.enhance(2.0)
384
+ image.save(path_to_png)
385
+ console.print(f"Imagem preparada com sucesso...\n")
386
+ console.print(f"Realizando OCR...\n")
387
+ captured_text = pytesseract.image_to_string(Image.open(path_to_png))
388
+ console.print(
389
+ f"Texto Full capturado {captured_text}...\n"
390
+ )
391
+ os.remove(path_to_png)
392
+ if 'nota fiscal inc' in captured_text.lower():
393
+ console.print(f"Tentando clicar no Botão OK...\n")
394
+ btn_ok = main_window.child_window(class_name="TButton")
395
+
396
+ if btn_ok.exists():
397
+ btn_ok.click()
398
+ retorno = True
399
+ else:
400
+ return RpaRetornoProcessoDTO(
401
+ sucesso=False,
402
+ retorno=f"Pop_up Informantion não mapeado para andamento do robô, mensagem {captured_text}",
403
+ status=RpaHistoricoStatusEnum.Falha,
404
+ )
405
+ else:
406
+ console.print(f"Aba Information não encontrada")
407
+ retorno = await verify_nf_incuded()
408
+
409
+ except Exception as e:
410
+ console.print(f"Erro ao conectar à janela Information: {e}\n")
411
+ return RpaRetornoProcessoDTO(
412
+ sucesso=False,
413
+ retorno=f"Erro em obter o retorno, Nota inserida com sucesso, erro {e}",
414
+ status=RpaHistoricoStatusEnum.Falha,
415
+ )
416
+
335
417
  if retorno:
336
418
  console.print("\nNota lançada com sucesso...", style="bold green")
337
419
  await worker_sleep(6)
@@ -1,7 +1,12 @@
1
1
  import asyncio
2
+ import getpass
3
+ import os
2
4
  import warnings
3
5
 
4
6
  import pyautogui
7
+ from pywinauto.keyboard import send_keys
8
+ from PIL import Image, ImageEnhance
9
+ import pytesseract
5
10
  from pywinauto.application import Application
6
11
  from pywinauto_recorder.player import set_combobox
7
12
  from rich.console import Console
@@ -429,6 +434,82 @@ async def entrada_de_notas_16(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
429
434
  retorno=observacao,
430
435
  status=RpaHistoricoStatusEnum.Falha,
431
436
  )
437
+ try:
438
+ max_attempts = 60
439
+ i = 0
440
+
441
+ while i < max_attempts:
442
+ information_pop_up = await is_window_open("Information")
443
+ if information_pop_up["IsOpened"] == True:
444
+ break
445
+ else:
446
+ console.print(f"Aguardando confirmação de nota incluida...\n")
447
+ await worker_sleep(5)
448
+ i += 1
449
+
450
+ information_pop_up = await is_window_open("Information")
451
+ if information_pop_up["IsOpened"] == True:
452
+ app = Application().connect(class_name="TFrmNotaFiscalEntrada")
453
+ main_window = app["Information"]
454
+
455
+ main_window.set_focus()
456
+
457
+ console.print(f"Obtendo texto do Information...\n")
458
+ console.print(f"Tirando print da janela do Information para realização do OCR...\n")
459
+
460
+ window_rect = main_window.rectangle()
461
+ screenshot = pyautogui.screenshot(
462
+ region=(
463
+ window_rect.left,
464
+ window_rect.top,
465
+ window_rect.width(),
466
+ window_rect.height(),
467
+ )
468
+ )
469
+ username = getpass.getuser()
470
+ path_to_png = f"C:\\Users\\{username}\\Downloads\\information_popup_{nota.get("nfe")}.png"
471
+ screenshot.save(path_to_png)
472
+ console.print(f"Print salvo em {path_to_png}...\n")
473
+
474
+ console.print(
475
+ f"Preparando a imagem para maior resolução e assertividade no OCR...\n"
476
+ )
477
+ image = Image.open(path_to_png)
478
+ image = image.convert("L")
479
+ enhancer = ImageEnhance.Contrast(image)
480
+ image = enhancer.enhance(2.0)
481
+ image.save(path_to_png)
482
+ console.print(f"Imagem preparada com sucesso...\n")
483
+ console.print(f"Realizando OCR...\n")
484
+ captured_text = pytesseract.image_to_string(Image.open(path_to_png))
485
+ console.print(
486
+ f"Texto Full capturado {captured_text}...\n"
487
+ )
488
+ os.remove(path_to_png)
489
+ if 'nota fiscal inc' in captured_text.lower():
490
+ console.print(f"Tentando clicar no Botão OK...\n")
491
+ btn_ok = main_window.child_window(class_name="TButton")
492
+
493
+ if btn_ok.exists():
494
+ btn_ok.click()
495
+ retorno = True
496
+ else:
497
+ return RpaRetornoProcessoDTO(
498
+ sucesso=False,
499
+ retorno=f"Pop_up Informantion não mapeado para andamento do robô, mensagem {captured_text}",
500
+ status=RpaHistoricoStatusEnum.Falha,
501
+ )
502
+ else:
503
+ console.print(f"Aba Information não encontrada")
504
+ retorno = await verify_nf_incuded()
505
+
506
+ except Exception as e:
507
+ console.print(f"Erro ao conectar à janela Information: {e}\n")
508
+ return RpaRetornoProcessoDTO(
509
+ sucesso=False,
510
+ retorno=f"Erro em obter o retorno, Nota inserida com sucesso, erro {e}",
511
+ status=RpaHistoricoStatusEnum.Falha,
512
+ )
432
513
 
433
514
  if retorno:
434
515
  console.print("\nNota lançada com sucesso...", style="bold green")
@@ -139,7 +139,7 @@ async def sped_fiscal(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
139
139
  await worker_sleep(2)
140
140
 
141
141
  console.print("Inserindo o período para geração do sped...\n")
142
- periodo = panel_TTabSheet.child_window(class_name="TDBIEditDate", found_index=2)
142
+ periodo = main_window.child_window(class_name="TDBIEditDate", found_index=0)
143
143
  periodo.set_edit_text(periodo_dt)
144
144
  await worker_sleep(2)
145
145
 
@@ -215,6 +215,7 @@ async def sped_fiscal(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
215
215
  status=RpaHistoricoStatusEnum.Falha,
216
216
  )
217
217
 
218
+
218
219
  console.print(f"Verificando sem possui o pop-up de Registro de Entrada... \n")
219
220
  registro_entrada_pop_up_class = await is_window_open_by_class("TMsgBox")
220
221
  if registro_entrada_pop_up_class == True:
@@ -377,16 +377,17 @@ async def login_emsys_fiscal(
377
377
  )
378
378
 
379
379
  # Seleciona a filial do emsys
380
- console.print("Seleciona a filial do emsys...")
380
+ console.print(f"Seleciona a filial {filial_cod} no emsys...")
381
381
  app = Application().connect(class_name="TFrmSelecaoEmpresa")
382
382
  main_window = app["TFrmSelecaoEmpresa"]
383
383
  main_window.set_focus()
384
384
 
385
- edit_user = main_window.child_window(class_name="TEdit", found_index=0)
386
- edit_user.set_edit_text(filial_cod)
387
-
385
+ edit_filial = main_window.child_window(class_name="TEdit", found_index=0)
386
+ edit_filial.click()
387
+ await worker_sleep(1)
388
+ pyautogui.write(filial_cod)
388
389
  await worker_sleep(2)
389
- edit_password.type_keys("{ENTER}")
390
+ edit_filial.type_keys("{ENTER}")
390
391
 
391
392
 
392
393
  await worker_sleep(5)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: worker-automate-hub
3
- Version: 0.4.350
3
+ Version: 0.4.352
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,8 +37,8 @@ worker_automate_hub/tasks/jobs/ecac_estadual_mt.py,sha256=4fe5Ri--lNIlRBSusbjyYt
37
37
  worker_automate_hub/tasks/jobs/ecac_estadual_sc.py,sha256=ZTjc4rS8J7VfWHPFLkJBcSj9sIfwToxTIC0D7p2rQTQ,13677
38
38
  worker_automate_hub/tasks/jobs/ecac_estadual_sp.py,sha256=iS6za_nGCzBRVCXYYuUTIyMWJznHp8l6BPahqwzc_5c,29102
39
39
  worker_automate_hub/tasks/jobs/ecac_federal.py,sha256=ORQbA4DCfyHJqjfvOCenc97QHvBCBlA3oMSzl59K6vg,55316
40
- worker_automate_hub/tasks/jobs/entrada_de_notas_15.py,sha256=epsa-yZM3I8RWOLisrW_6PIJ0MGtb6168lekEb2zvAg,13000
41
- worker_automate_hub/tasks/jobs/entrada_de_notas_16.py,sha256=saXQEc8LqkEOdBKWOCu8ni2ldqRWK4MKhxNf4bH_8oI,17255
40
+ worker_automate_hub/tasks/jobs/entrada_de_notas_15.py,sha256=5Rqz_kf-399nEA3s1_69MGOAn6Mk0GbdAP_0EFzAcYw,16570
41
+ worker_automate_hub/tasks/jobs/entrada_de_notas_16.py,sha256=Y8k9alYB46XX3RUzpeAkB2rdTp9j1o6kT6TNZenFRcY,20823
42
42
  worker_automate_hub/tasks/jobs/entrada_de_notas_207.py,sha256=mkAaQYDPd9QLz_LPn3AD6NjvWwr01z5NCzMIHg93cH0,24931
43
43
  worker_automate_hub/tasks/jobs/entrada_de_notas_32.py,sha256=bAzQZD6EP7_eofC0GL45CLAqKwZ5N50Wzbphm3ZhoYs,32391
44
44
  worker_automate_hub/tasks/jobs/entrada_de_notas_33.py,sha256=zwDQzPbqqw1RpjJkF3VSkMnqgrzjFAXLGq7xrFo5D0o,31459
@@ -54,7 +54,7 @@ worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py,sha256=Y-mKYcgX1kwcy_s
54
54
  worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py,sha256=QBGm6eS5JghgNWNqZlk1g2a2iV8LnBLiOTBBL3Giet0,4181
55
55
  worker_automate_hub/tasks/jobs/login_emsys.py,sha256=IoGCIvO4UwmuxOZEn3cvYJlKyhsWvtHvbFk8vwjTroQ,5620
56
56
  worker_automate_hub/tasks/jobs/playground.py,sha256=bdnXv3C7WLQUxt4edGZDfAbRJJ2-q4zuIQaK3GLnaUc,1765
57
- worker_automate_hub/tasks/jobs/sped_fiscal.py,sha256=ZumAOktR22DhkA6Q23mcdEqlWO4VEagoqzWciGPKvbc,20451
57
+ worker_automate_hub/tasks/jobs/sped_fiscal.py,sha256=rokkI8i3SVEzBLFBQuMytIelv_0JKLmIZi26n37_NoM,20449
58
58
  worker_automate_hub/tasks/jobs/transferencias.py,sha256=keCUlvbPhLrTiZQ9Co_r6IqL5wjYqVGB_-mgvdDe9pM,36080
59
59
  worker_automate_hub/tasks/task_definitions.py,sha256=2Jp1H4_qJZqqGyaP6MA87KLt4QNrtWBYWbXu-2gymFo,4459
60
60
  worker_automate_hub/tasks/task_executor.py,sha256=QqVNRljSlSbSXzTwKLezMjCLej6AixuBcDAhDrqmAkU,8435
@@ -64,10 +64,10 @@ worker_automate_hub/utils/get_creds_gworkspace.py,sha256=ZJ0IIEjM4IXIV9rwfbOZ1V1
64
64
  worker_automate_hub/utils/logger.py,sha256=FYV9fg0_RAYJF_ZOCJEbqQAiCXlXk2gMpvUU1rzT_xs,671
65
65
  worker_automate_hub/utils/toast.py,sha256=xPHc5r5uOxB_cZlCzm13Kt2qSKLLFZALncU6Qg3Ft68,1162
66
66
  worker_automate_hub/utils/updater.py,sha256=0LR6Xpe3HZk-xu-trH7vKRhP5FXp0nhp1qxtygE2Jps,7280
67
- worker_automate_hub/utils/util.py,sha256=Z2d_U9S5_0PHSH8tTten3msiuOCjU93-_5MWAJYYp_U,119501
67
+ worker_automate_hub/utils/util.py,sha256=hUzQOnVYwvlrFzAv1p5Lt3s1dmW_77NZFuG77QQHKL4,119565
68
68
  worker_automate_hub/utils/utils_nfe_entrada.py,sha256=4--3HDyWddT8vw2mBNY_-9IscvAQYBygwPIMiKvAG-w,27583
69
69
  worker_automate_hub/worker.py,sha256=vkl_x7gSo6nQlhSBLwRkGx6LEONnYptfBaGxOy1ZLsE,4634
70
- worker_automate_hub-0.4.350.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
71
- worker_automate_hub-0.4.350.dist-info/METADATA,sha256=lgI2v-Se-gYEYjNn9D1JorSaRGSc2syN0UMECEqIt98,2895
72
- worker_automate_hub-0.4.350.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
73
- worker_automate_hub-0.4.350.dist-info/RECORD,,
70
+ worker_automate_hub-0.4.352.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
71
+ worker_automate_hub-0.4.352.dist-info/METADATA,sha256=wTinaf9ZhFtFqk7bN9wqSwNNuKSIr0uKocgMyGZBwTY,2895
72
+ worker_automate_hub-0.4.352.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
73
+ worker_automate_hub-0.4.352.dist-info/RECORD,,