worker-automate-hub 0.4.351__tar.gz → 0.4.352__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +82 -0
  4. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +81 -0
  5. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/sped_fiscal.py +2 -1
  6. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/README.md +0 -0
  7. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/__init__.py +0 -0
  8. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/api/__init__.py +0 -0
  9. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/api/ahead_service.py +0 -0
  10. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/api/client.py +0 -0
  11. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/api/helpers/__init__.py +0 -0
  12. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  13. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  14. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/cli.py +0 -0
  15. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/config/__init__.py +0 -0
  16. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/config/settings.py +0 -0
  17. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/config.py +0 -0
  18. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/core/so_manipulation.py +0 -0
  19. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/decorators/__init__.py +0 -0
  20. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/decorators/deprecation.py +0 -0
  21. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/decorators/rate_limit.py +0 -0
  22. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/decorators/repeat.py +0 -0
  23. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/decorators/retry.py +0 -0
  24. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/decorators/singleton.py +0 -0
  25. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/decorators/timeit.py +0 -0
  26. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/models/__init__.py +0 -0
  27. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/models/dao/__init__.py +0 -0
  28. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  29. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  30. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  31. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/models/dto/__init__.py +0 -0
  32. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  33. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  34. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  35. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/__init__.py +0 -0
  36. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  37. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  38. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  39. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  40. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  41. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  42. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  43. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  44. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  45. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  46. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  47. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  48. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  49. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  50. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  51. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +0 -0
  52. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  53. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  54. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  55. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  56. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  57. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  58. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  59. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  60. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  61. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  62. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/task_definitions.py +0 -0
  63. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/tasks/task_executor.py +0 -0
  64. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/utils/__init__.py +0 -0
  65. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/utils/env.py +0 -0
  66. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  67. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/utils/logger.py +0 -0
  68. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/utils/toast.py +0 -0
  69. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/utils/updater.py +0 -0
  70. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/utils/util.py +0 -0
  71. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  72. {worker_automate_hub-0.4.351 → worker_automate_hub-0.4.352}/worker_automate_hub/worker.py +0 -0
@@ -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.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
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "worker-automate-hub"
3
- version = "0.4.351"
3
+ version = "0.4.352"
4
4
  description = "Worker Automate HUB é uma aplicação para automatizar rotinas de RPA nos ambientes Argenta."
5
5
  authors = ["Joel Paim"]
6
6
  readme = "README.md"
@@ -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: