worker-automate-hub 0.4.414__py3-none-any.whl → 0.4.416__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,5 +1,6 @@
1
1
  import asyncio
2
- import datetime
2
+ import re
3
+ from datetime import datetime
3
4
  import getpass
4
5
  import os
5
6
  import warnings
@@ -196,15 +197,20 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
196
197
  console.print('Inserindo a data de emissão da nota')
197
198
  dt_emissao = nota.get("dataEmissao")
198
199
  numero_nota = nota.get("numeroNota")
200
+
201
+ try:
202
+ data_formatada = datetime.fromisoformat(dt_emissao[:-6]).strftime("%d/%m/%Y")
203
+ except ValueError:
204
+ data_formatada = dt_emissao
199
205
 
200
206
  edit = main_window.child_window(
201
207
  class_name="TDBIEditDate", found_index=0
202
208
  )
203
- edit.set_edit_text(dt_emissao)
209
+ edit.set_edit_text(data_formatada)
204
210
  edit = main_window.child_window(
205
211
  class_name="TDBIEditDate", found_index=1
206
212
  )
207
- edit.set_edit_text(dt_emissao)
213
+ edit.set_edit_text(data_formatada)
208
214
 
209
215
  console.print('Inserindo o numero da nota')
210
216
  edit = main_window.child_window(
@@ -322,7 +328,7 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
322
328
  )
323
329
 
324
330
 
325
- await worker_sleep(5)
331
+ await worker_sleep(10)
326
332
  # VERIFICANDO A EXISTENCIA DE ERRO
327
333
  erro_pop_up = await is_window_open("Erro")
328
334
  if erro_pop_up["IsOpened"] == True:
@@ -335,7 +341,6 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
335
341
 
336
342
  max_attempts = 10
337
343
  i = 0
338
-
339
344
  while i < max_attempts:
340
345
  information_pop_up = await is_window_open("Informações para importação da Nota Fiscal Eletrônica")
341
346
  if information_pop_up["IsOpened"] == True:
@@ -352,7 +357,27 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
352
357
  status=RpaHistoricoStatusEnum.Falha,
353
358
  )
354
359
 
355
- await worker_sleep(10)
360
+
361
+ console.print(
362
+ f"Marcando Manter calculo PIS/COFINS...\n"
363
+ )
364
+ app = Application(backend="uia").connect(title="Informações para importação da Nota Fiscal Eletrônica")
365
+ main_window = app["Informações para importação da Nota Fiscal Eletrônica"]
366
+ try:
367
+ checkbox = main_window.child_window(
368
+ title="Manter cálculo PIS/COFINS",
369
+ class_name="TCheckBox",
370
+ control_type="CheckBox",
371
+ )
372
+ except:
373
+ checkbox = main_window.child_window(
374
+ title=re.compile(".*PIS/COFINS.*"),
375
+ class_name="TCheckBox",
376
+ control_type="CheckBox"
377
+ )
378
+ if not checkbox.get_toggle_state() == 1:
379
+ checkbox.click()
380
+ console.print("Realizado com sucesso... \n")
356
381
 
357
382
  if nota.get("existeDespesa") != "Não":
358
383
  app = Application().connect(
@@ -381,10 +406,20 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
381
406
  status=RpaHistoricoStatusEnum.Falha,
382
407
  )
383
408
 
384
- pyautogui.click(709, 669)
385
-
409
+ # INTERAGINDO COM O CAMPO Manter Natureza de Operação selecionada
410
+ console.print(
411
+ f"Selecionando a opção 'Manter Natureza de Operação selecionada'...\n"
412
+ )
413
+ checkbox = main_window.child_window(
414
+ title="Manter Natureza de Operação selecionada",
415
+ class_name="TDBICheckBox",
416
+ )
417
+ if not checkbox.get_toggle_state() == 1:
418
+ checkbox.click()
419
+ console.print(
420
+ "A opção 'Manter Natureza de Operação selecionada' selecionado com sucesso... \n"
421
+ )
386
422
 
387
- console.print("Clicando em OK... \n")
388
423
 
389
424
  max_attempts = 3
390
425
  i = 0
@@ -408,52 +443,34 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
408
443
  status=RpaHistoricoStatusEnum.Descartado,
409
444
  )
410
445
 
411
- await worker_sleep(40)
412
-
413
- try:
414
- app = Application().connect(title="Confirm")
415
- except:
416
- app = None
417
- console.print("Tela de itens não localizados",style="bold yellow")
418
- if app is not None:
419
- try:
420
- window_itens = app["Confirm"]
421
- button_yes = window_itens.child_window(title="&Yes")
422
- #Clicar em YES (ou sim)
423
- button_yes.click()
424
- #Aguarda Tela carregar
425
- await worker_sleep(5)
426
- #Conecta com tela de itens
427
- app = Application().connect(title="Incluir Item Fornecedor")
428
- window_incluir_itens = app["Incluir Item Fornecedor"]
429
- #Garante que a tela esta em foco
430
- window_incluir_itens.set_focus()
431
- trys = 10
432
- await worker_sleep(1)
433
- error_itens = []
434
- for i in range(trys):
435
- pyautogui.hotkey('ctrl', 'c')
436
- text_incluir_item_fornecedor = pyperclip.paste()
437
- error_itens.append(text_incluir_item_fornecedor)
438
- pyautogui.press('down', presses=1)
439
- await worker_sleep(1)
440
-
441
- return RpaRetornoProcessoDTO(
442
- sucesso=False,
443
- retorno=f"Itens nao localizados - \n{text_incluir_item_fornecedor}",
444
- status=RpaHistoricoStatusEnum.Falha,
445
- )
446
- except Exception as e:
446
+ await worker_sleep(60)
447
+ console.print(
448
+ "Verificando a existencia de POP-UP de Itens não localizados ou NCM ...\n"
449
+ )
450
+ itens_by_supplier = await is_window_open_by_class("TFrmAguarde", "TMessageForm")
451
+ if itens_by_supplier["IsOpened"] == True:
452
+ itens_by_supplier_work = await itens_not_found_supplier(nota.get("nfe"))
453
+ if itens_by_supplier_work["window"] == "NCM" or itens_by_supplier_work["window"] == "MultiplasRef":
454
+ console.log(itens_by_supplier_work["retorno"], style="bold green")
455
+ else:
447
456
  return RpaRetornoProcessoDTO(
448
457
  sucesso=False,
449
- retorno=f"Erro tratar tela 'Incluir item fornecedor', erro: {e}",
458
+ retorno=itens_by_supplier_work["retorno"],
450
459
  status=RpaHistoricoStatusEnum.Falha,
451
460
  )
452
461
 
453
- await emsys.verify_warning_and_error("Information", "&No")
454
-
455
462
  await worker_sleep(3)
456
463
 
464
+ # VERIFICANDO A EXISTENCIA DE ERRO
465
+ erro_pop_up = await is_window_open("Erro")
466
+ if erro_pop_up["IsOpened"] == True:
467
+ error_work = await error_after_xml_imported()
468
+ return RpaRetornoProcessoDTO(
469
+ sucesso=False,
470
+ retorno=error_work.retorno,
471
+ status=RpaHistoricoStatusEnum.Falha,
472
+ )
473
+
457
474
  # Seleciona pagamento
458
475
  console.log("Seleciona Pagamento", style="bold yellow")
459
476
  pyautogui.click(623, 374)
@@ -465,29 +482,17 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
465
482
  pyautogui.hotkey("enter")
466
483
 
467
484
  # Digita "Valor"
468
-
469
485
  pyautogui.click(1285, 352)
470
486
  await worker_sleep(1)
471
487
  pyautogui.hotkey("ctrl", "a")
472
488
  pyautogui.hotkey("del")
473
489
  await worker_sleep(1)
474
490
  pyautogui.write(nota["valorNota"])
491
+ await worker_sleep(3)
475
492
 
476
493
  await emsys.incluir_registro()
477
- await worker_sleep(40)
478
- #TODO tratar tela de CFOP da capa
479
- console.print(
480
- "Verificando a existencia de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n"
481
- )
482
- itens_variacao_maxima = await is_window_open_by_class(
483
- "TFrmTelaSelecao", "TFrmTelaSelecao"
484
- )
485
- if itens_variacao_maxima["IsOpened"] == True:
486
- app = Application().connect(class_name="TFrmTelaSelecao")
487
- main_window = app["TFrmTelaSelecao"]
488
- send_keys("%o")
494
+ await worker_sleep(10)
489
495
 
490
- await worker_sleep(3)
491
496
  console.print(
492
497
  "Verificando a existencia de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n"
493
498
  )
@@ -499,36 +504,100 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
499
504
  main_window = app["TFrmTelaSelecao"]
500
505
  send_keys("%o")
501
506
 
502
- await worker_sleep(3)
503
507
 
504
- await emsys.verify_warning_and_error("Aviso", "OK")
508
+ await worker_sleep(5)
509
+ aviso_pop_up = await is_window_open("Aviso")
510
+ if aviso_pop_up["IsOpened"] == True:
511
+ await emsys.verify_warning_and_error("Aviso", "OK")
512
+ try:
513
+ pyautogui.click(623, 374)
514
+ await worker_sleep(1)
515
+ pyautogui.press('home')
516
+ console.print("Alterando a NOP...\n")
505
517
 
506
- console.print(
507
- "Verificando a existencia de Warning informando que a Soma dos pagamentos não bate com o valor da nota. ...\n"
508
- )
509
- app = Application().connect(class_name="TFrmNotaFiscalEntrada")
510
- main_window = app["TFrmNotaFiscalEntrada"]
518
+ app = Application().connect(class_name="TFrmNotaFiscalEntrada", timeout=30)
519
+ main_window = app["TFrmNotaFiscalEntrada"]
520
+ main_window.set_focus()
511
521
 
512
- try:
513
- warning_pop_up_pagamentos = main_window.child_window(
514
- class_name="TMessageForm", title="Warning"
515
- )
516
- except:
517
- warning_pop_up_pagamentos = None
522
+ select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
523
+ select_box_nop_select.click()
524
+ nop_value = "1152 - ENTRADAS P/ TRANSFERENCIAS DE MERCADORIA- 1.152"
525
+ await worker_sleep(2)
526
+ set_combobox("||List", nop_value)
527
+ await worker_sleep(1)
528
+ pyautogui.press('down')
518
529
 
519
- if warning_pop_up_pagamentos.exists():
520
- console.print(
521
- "Erro: Warning informando que a Soma dos pagamentos não bate com o valor da nota. ...\n"
522
- )
523
- return RpaRetornoProcessoDTO(
524
- sucesso=False,
525
- retorno=f"A soma dos pagamentos não bate com o valor da nota.",
526
- status=RpaHistoricoStatusEnum.Falha,
527
- )
528
- else:
529
- console.print(
530
- "Warning informando que a Soma dos pagamentos não bate com o valor da nota não existe ...\n"
531
- )
530
+ nop_selected = select_box_nop_select.window_text()
531
+ if '1152' in nop_selected:
532
+ console.print(f"NOP selecionada corretamente, {nop_selected} ...\n")
533
+ else:
534
+ select_box_nop_select.click()
535
+ console.print(f"Inserindo a informação da NOP: {nop_value} ...\n")
536
+ await worker_sleep(2)
537
+ set_combobox("||List", nop_value)
538
+ await worker_sleep(2)
539
+ pyautogui.hotkey("enter")
540
+ await worker_sleep(2)
541
+ console.print(f"Confirmando a NOP selecionada...\n")
542
+ main_window.set_focus()
543
+ await worker_sleep(1)
544
+ select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
545
+ nop_selected = select_box_nop_select.window_text()
546
+ if '1152' in nop_selected:
547
+ console.print(f"NOP selecionada corretamente, {nop_selected} ...\n")
548
+ else:
549
+ return RpaRetornoProcessoDTO(
550
+ sucesso=False,
551
+ retorno=f"Erro não foi possivel selecionar NOP correta, NOP selecionada: {nop_selected}",
552
+ status=RpaHistoricoStatusEnum.Falha,
553
+ )
554
+
555
+ await emsys.incluir_registro()
556
+ await worker_sleep(10)
557
+
558
+ console.print("Verificando a existencia de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n")
559
+ itens_variacao_maxima = await is_window_open_by_class("TFrmTelaSelecao", "TFrmTelaSelecao")
560
+ if itens_variacao_maxima["IsOpened"] == True:
561
+ app = Application().connect(class_name="TFrmTelaSelecao")
562
+ main_window = app["TFrmTelaSelecao"]
563
+ send_keys("%o")
564
+ await worker_sleep(3)
565
+
566
+ aviso_pop_up = await is_window_open("Aviso")
567
+ if aviso_pop_up["IsOpened"] == True:
568
+ return RpaRetornoProcessoDTO(
569
+ sucesso=False,
570
+ retorno=f"Erro na validação de CFOP, foi encontrado mais de uma opção com a mesma informação",
571
+ status=RpaHistoricoStatusEnum.Falha,
572
+ )
573
+
574
+ console.print("Verificando a existencia de Warning informando que a Soma dos pagamentos não bate com o valor da nota. ...\n")
575
+ warning_pop_up_pagamentos = await is_window_open("Warning")
576
+ if warning_pop_up_pagamentos["IsOpened"] == True:
577
+ return RpaRetornoProcessoDTO(
578
+ sucesso=False,
579
+ retorno=f"A soma dos pagamentos não bate com o valor da nota.",
580
+ status=RpaHistoricoStatusEnum.Falha,
581
+ )
582
+
583
+ await worker_sleep(60)
584
+ console.print("\nVerifica se a nota ja foi lançada...")
585
+ nf_chave_acesso = int(nota.get("nfe"))
586
+ status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
587
+ if status_nf_emsys.get("status") == "Lançada":
588
+ return RpaRetornoProcessoDTO(
589
+ sucesso=True,
590
+ retorno="Nota Lançada com sucesso!",
591
+ status=RpaHistoricoStatusEnum.Sucesso,
592
+ )
593
+
594
+ except Exception as e:
595
+ select_box_nop_select.click()
596
+ return RpaRetornoProcessoDTO(
597
+ sucesso=False,
598
+ retorno=f"Erro ao alterar o NOP, erro {e}",
599
+ status=RpaHistoricoStatusEnum.Falha,
600
+ )
532
601
 
533
602
  try:
534
603
  max_attempts = 7
@@ -562,6 +631,7 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
562
631
  console.log(despesa_rateio_work.retorno, style="bold green")
563
632
  await emsys.verify_warning_and_error("Information", "OK")
564
633
  await emsys.verify_warning_and_error("Informação", "OK")
634
+ await worker_sleep(15)
565
635
  else:
566
636
  return RpaRetornoProcessoDTO(
567
637
  sucesso=False,
@@ -569,10 +639,14 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
569
639
  status=RpaHistoricoStatusEnum.Falha,
570
640
  )
571
641
  except Exception as error:
572
- console.print("Falha ao realizar rateio {error}")
642
+ console.print(f"Falha ao realizar rateio {error}")
643
+ return RpaRetornoProcessoDTO(
644
+ sucesso=False,
645
+ retorno=f"Falha ao realizar rateio {error}",
646
+ status=RpaHistoricoStatusEnum.Falha,
647
+ )
648
+
573
649
 
574
- # Verifica se a info 'Nota fiscal incluida' está na tela
575
- await worker_sleep(15)
576
650
  warning_pop_up = await is_window_open("Warning")
577
651
  if warning_pop_up["IsOpened"] == True:
578
652
  app = Application().connect(title="Warning")
@@ -624,103 +698,48 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
624
698
  status=RpaHistoricoStatusEnum.Falha,
625
699
  )
626
700
 
627
- await emsys.verify_warning_and_error("Aviso", "OK")
628
-
629
- await worker_sleep(3)
630
-
631
- #Alterar NOP
632
- try:
633
- pyautogui.click(623, 374)
634
- await worker_sleep(1)
635
- pyautogui.press('home')
636
- console.print("Alterando a NOP...\n")
637
-
638
- app = Application().connect(class_name="TFrmNotaFiscalEntrada", timeout=30)
639
- main_window = app["TFrmNotaFiscalEntrada"]
640
- main_window.set_focus()
641
-
642
- select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
643
- select_box_nop_select.click()
644
- nop_value = "1152 - ENTRADAS P/ TRANSFERENCIAS DE MERCADORIA- 1.152"
645
- await worker_sleep(2)
646
- set_combobox("||List", nop_value)
647
- await worker_sleep(1)
648
- pyautogui.press('down')
649
701
 
650
- nop_selected = select_box_nop_select.window_text()
651
- if '1152' in nop_selected:
652
- console.print(f"NOP selecionada corretamente, {nop_selected} ...\n")
702
+ console.print(
703
+ "Verificando a existencia de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n"
704
+ )
705
+ itens_variacao_maxima = await is_window_open_by_class(
706
+ "TFrmTelaSelecao", "TFrmTelaSelecao"
707
+ )
708
+ if itens_variacao_maxima["IsOpened"] == True:
709
+ app = Application().connect(class_name="TFrmTelaSelecao")
710
+ main_window = app["TFrmTelaSelecao"]
711
+ send_keys("%o")
712
+ await worker_sleep(3)
713
+
714
+ max_attempts = 50
715
+ i = 0
716
+ while i < max_attempts:
717
+ information_pop_up = await is_window_open("Information")
718
+ if information_pop_up["IsOpened"] == True:
719
+ break
653
720
  else:
654
- select_box_nop_select.click()
655
- console.print(f"Inserindo a informação da NOP: {nop_value} ...\n")
656
- await worker_sleep(2)
657
- set_combobox("||List", nop_value)
658
- await worker_sleep(2)
659
- pyautogui.hotkey("enter")
660
- await worker_sleep(2)
661
- console.print(f"Confirmando a NOP selecionada...\n")
662
- main_window.set_focus()
663
- await worker_sleep(1)
664
- select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
665
- nop_selected = select_box_nop_select.window_text()
666
- if '1152' in nop_selected:
667
- console.print(f"NOP selecionada corretamente, {nop_selected} ...\n")
668
- else:
669
- return RpaRetornoProcessoDTO(
670
- sucesso=False,
671
- retorno=f"Erro não foi possivel selecionar NOP correta, NOP selecionada: {nop_selected}",
672
- status=RpaHistoricoStatusEnum.Falha,
673
- )
674
- console.print(f"Clicando para incluir a nota...\n")
675
- pyautogui.click(593, 297)
676
- await worker_sleep(15)
677
- console.print(
678
- "Verificando a existencia de POP-UP de Itens que Ultrapassam a Variação Máxima de Custo ...\n"
679
- )
680
- itens_variacao_maxima = await is_window_open_by_class(
681
- "TFrmTelaSelecao", "TFrmTelaSelecao"
721
+ console.print(f"Aguardando confirmação de nota incluida...\n")
722
+ await worker_sleep(4)
723
+ i += 1
724
+
725
+ await worker_sleep(15)
726
+ console.print("\nVerifica se a nota ja foi lançada...")
727
+ nf_chave_acesso = int(nota.get("nfe"))
728
+ status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
729
+ if status_nf_emsys.get("status") != "Lançada":
730
+ return RpaRetornoProcessoDTO(
731
+ sucesso=False,
732
+ retorno=f"Erro ao lançar nota",
733
+ status=RpaHistoricoStatusEnum.Falha,
682
734
  )
683
- if itens_variacao_maxima["IsOpened"] == True:
684
- app = Application().connect(class_name="TFrmTelaSelecao")
685
- main_window = app["TFrmTelaSelecao"]
686
- send_keys("%o")
687
- await worker_sleep(40)
688
- await emsys.verify_warning_and_error("Aviso", "OK")
689
- max_attempts = 50
690
- i = 0
735
+ else:
736
+ return RpaRetornoProcessoDTO(
737
+ sucesso=True,
738
+ retorno="Nota Lançada com sucesso!",
739
+ status=RpaHistoricoStatusEnum.Sucesso,
740
+ )
691
741
 
692
- while i < max_attempts:
693
- information_pop_up = await is_window_open("Information")
694
- if information_pop_up["IsOpened"] == True:
695
- break
696
- else:
697
- console.print(f"Aguardando confirmação de nota incluida...\n")
698
- await worker_sleep(4)
699
- i += 1
700
-
701
- await worker_sleep(15)
702
- console.print("\nVerifica se a nota ja foi lançada...")
703
- nf_chave_acesso = int(nota.get("nfe"))
704
- status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
705
- if status_nf_emsys.get("status") != "Lançada":
706
- return RpaRetornoProcessoDTO(
707
- sucesso=False,
708
- retorno=f"Erro na validação de CFOP, foi encontrado mais de uma opção com a mesma informação",
709
- status=RpaHistoricoStatusEnum.Falha,
710
- )
711
- else:
712
- return RpaRetornoProcessoDTO(
713
- sucesso=True,
714
- retorno="Nota Lançada com sucesso!",
715
- status=RpaHistoricoStatusEnum.Sucesso,
716
- )
717
742
 
718
- except Exception as e:
719
- return RpaRetornoProcessoDTO(
720
- sucesso=False,
721
- retorno=f"Erro ao alterar o NOP, erro {e}",
722
- status=RpaHistoricoStatusEnum.Falha,
723
- )
724
743
  except Exception as ex:
725
744
  observacao = f"Erro Processo Entrada de Notas: {str(ex)}"
726
745
  logger.error(observacao)
@@ -7,7 +7,7 @@ import pyautogui
7
7
  import pytesseract
8
8
  from datetime import datetime, timedelta
9
9
  from pywinauto.application import Application
10
- from PIL import Image, ImageEnhance
10
+ from PIL import Image, ImageEnhance, ImageFilter
11
11
  from pywinauto.keyboard import send_keys
12
12
  import win32clipboard
13
13
  from pywinauto_recorder.player import set_combobox
@@ -461,39 +461,50 @@ async def entrada_de_notas_9(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoD
461
461
  if distribuiu_algo:
462
462
  console.print(f"Extraindo informação da Janela de Distribuir Itens para realização do OCR...\n")
463
463
 
464
- main_window.set_focus()
465
- window_rect = main_window.rectangle()
466
- screenshot = pyautogui.screenshot(
467
- region=(
468
- window_rect.left,
469
- window_rect.top,
470
- window_rect.width(),
471
- window_rect.height(),
464
+ max_attempts = 3
465
+ attempts = 0
466
+ resultado = None
467
+ while attempts < max_attempts:
468
+ main_window.set_focus()
469
+ window_rect = main_window.rectangle()
470
+ screenshot = pyautogui.screenshot(
471
+ region=(
472
+ window_rect.left,
473
+ window_rect.top,
474
+ window_rect.width(),
475
+ window_rect.height(),
476
+ )
472
477
  )
473
- )
474
- username = getpass.getuser()
475
- path_to_png = f"C:\\Users\\{username}\\Downloads\\distribuir_iten_{nota.get("nfe")}.png"
476
- screenshot.save(path_to_png)
477
- console.print(f"Print salvo em {path_to_png}...\n")
478
+ username = getpass.getuser()
479
+ path_to_png = f"C:\\Users\\{username}\\Downloads\\distribuir_iten_{nota.get("nfe")}.png"
480
+ screenshot.save(path_to_png)
481
+ console.print(f"Print salvo em {path_to_png}...\n")
478
482
 
479
- console.print(
480
- f"Preparando a imagem para maior resolução e assertividade no OCR...\n"
481
- )
482
- image = Image.open(path_to_png)
483
- image = image.convert("L")
484
- enhancer = ImageEnhance.Contrast(image)
485
- image = enhancer.enhance(2.0)
486
- image.save(path_to_png)
487
- console.print(f"Imagem preparada com sucesso...\n")
488
- console.print(f"Realizando OCR...\n")
489
- captured_text = pytesseract.image_to_string(Image.open(path_to_png))
490
- console.print(
491
- f"Texto Full capturado {captured_text}...\n"
492
- )
493
- os.remove(path_to_png)
483
+ console.print(
484
+ f"Preparando a imagem para maior resolução e assertividade no OCR...\n"
485
+ )
486
+ image = Image.open(path_to_png)
487
+ image = image.filter(ImageFilter.SHARPEN)
488
+ image = image.convert("L")
489
+ enhancer = ImageEnhance.Contrast(image)
490
+ image = enhancer.enhance(2.0)
491
+ image.save(path_to_png)
492
+ console.print(f"Imagem preparada com sucesso...\n")
493
+ console.print(f"Realizando OCR...\n")
494
+ await worker_sleep(1)
495
+ captured_text = pytesseract.image_to_string(Image.open(path_to_png))
496
+ console.print(
497
+ f"Texto Full capturado {captured_text}...\n"
498
+ )
499
+ os.remove(path_to_png)
494
500
 
495
- pattern_qtd_restante = r"Quantidade restante:\s([\d,]+)"
496
- resultado = re.search(pattern_qtd_restante, captured_text)
501
+ pattern_qtd_restante = r"Quantidade restante:\s([\d,]+)"
502
+ resultado = re.search(pattern_qtd_restante, captured_text)
503
+ if resultado:
504
+ break
505
+ else:
506
+ await worker_sleep(2)
507
+ attempts += 1
497
508
 
498
509
  try:
499
510
  if resultado:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: worker-automate-hub
3
- Version: 0.4.414
3
+ Version: 0.4.416
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
@@ -44,11 +44,11 @@ worker_automate_hub/tasks/jobs/entrada_de_notas_32.py,sha256=0cneKY6bQU5neo3TKlG
44
44
  worker_automate_hub/tasks/jobs/entrada_de_notas_33.py,sha256=ktXc_kdMhlz9cbb7XjfMJhME29mgMFd_FnatxSZZU_s,31457
45
45
  worker_automate_hub/tasks/jobs/entrada_de_notas_34.py,sha256=iaSmtWTWlazHDtGp22yTV5J5rHDhUCbEaCAnpU7UWyM,31808
46
46
  worker_automate_hub/tasks/jobs/entrada_de_notas_36.py,sha256=vFkDcgJ9uxrMMLYdeONCMxh6_evnhgF1Sun5HEHAWa4,22716
47
- worker_automate_hub/tasks/jobs/entrada_de_notas_39.py,sha256=w_XHaXIfbAaIBah1Rh4TIuZX6xS2DqVtFMLXGcD1urg,30991
47
+ worker_automate_hub/tasks/jobs/entrada_de_notas_39.py,sha256=j_QE5v4t_D6jKWWaeSCCmIelPWc5vjGbC_gb13ovwLg,32579
48
48
  worker_automate_hub/tasks/jobs/entrada_de_notas_500.py,sha256=ryl5AZ2617aROSVcS-N5wQIBlFQ1Bp0khUH9fP4DOzU,26542
49
49
  worker_automate_hub/tasks/jobs/entrada_de_notas_505.py,sha256=jIml8gjXPdI6_x7S9VVV8IrKZRF7_PTNOMnhNmYMDTU,14490
50
50
  worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py,sha256=8XP9G3n0PUeshbRWkWKOMnyUGRWspIolPZVqQTR3SMI,14184
51
- worker_automate_hub/tasks/jobs/entrada_de_notas_9.py,sha256=OPOE43iMTUg3uNf2ZxqENV_NWn-g7HXBavHHgPN7RoA,47796
51
+ worker_automate_hub/tasks/jobs/entrada_de_notas_9.py,sha256=DBzP8O-m7OvuBOmWGfmC7JwCQ29IkKFAWD6JnJI7BLE,48452
52
52
  worker_automate_hub/tasks/jobs/exemplo_processo.py,sha256=3-zxbb-9YHPmSA_K1Qgxp_FwSqg2QDjGBRCLxDZ8QoQ,3451
53
53
  worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py,sha256=iXIKBMNFPj3L6G5Iq5nyDKiZT3NAP5sIhRSzYdURpNw,9571
54
54
  worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py,sha256=QBGm6eS5JghgNWNqZlk1g2a2iV8LnBLiOTBBL3Giet0,4181
@@ -67,7 +67,7 @@ worker_automate_hub/utils/updater.py,sha256=en2FCGhI8aZ-JNP3LQm64NJDc4awCNW7UhbV
67
67
  worker_automate_hub/utils/util.py,sha256=YQkdPMCgrwuCJG_069p1cIG7xTg8VgvSHlGnIQrlyHo,119625
68
68
  worker_automate_hub/utils/utils_nfe_entrada.py,sha256=yQFyDzvXPSO-UYV1m38WLJ3AWQgZYcyUkHZdCKE1jG4,28360
69
69
  worker_automate_hub/worker.py,sha256=KDBU3L2kVobndrnN5coRZFTwVmBLKmPJjRv20sCo5Hc,4697
70
- worker_automate_hub-0.4.414.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
71
- worker_automate_hub-0.4.414.dist-info/METADATA,sha256=hAbkl5h5t1ZWMZ9WmVWDmA182s06DahZrhfO9pDDwGk,2895
72
- worker_automate_hub-0.4.414.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
73
- worker_automate_hub-0.4.414.dist-info/RECORD,,
70
+ worker_automate_hub-0.4.416.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
71
+ worker_automate_hub-0.4.416.dist-info/METADATA,sha256=NENRDzoGSGgIAUcTWYNw0TlBANB-uL7FrW5a96ZyZRU,2895
72
+ worker_automate_hub-0.4.416.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
73
+ worker_automate_hub-0.4.416.dist-info/RECORD,,