worker-automate-hub 0.4.351__py3-none-any.whl → 0.4.353__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.
@@ -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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: worker-automate-hub
3
- Version: 0.4.351
3
+ Version: 0.4.353
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
@@ -67,7 +67,7 @@ worker_automate_hub/utils/updater.py,sha256=0LR6Xpe3HZk-xu-trH7vKRhP5FXp0nhp1qxt
67
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.351.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
71
- worker_automate_hub-0.4.351.dist-info/METADATA,sha256=ky-T3vMI68MDigUAt0Lie8oNTAYPoh7F-a0t0tPjfAw,2895
72
- worker_automate_hub-0.4.351.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
73
- worker_automate_hub-0.4.351.dist-info/RECORD,,
70
+ worker_automate_hub-0.4.353.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
71
+ worker_automate_hub-0.4.353.dist-info/METADATA,sha256=8gUo3g2dAa5ggnngmCRLwwsN_o75tHeI7bpt4TVRofA,2895
72
+ worker_automate_hub-0.4.353.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
73
+ worker_automate_hub-0.4.353.dist-info/RECORD,,