worker-automate-hub 0.4.414__tar.gz → 0.4.415__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.414 → worker_automate_hub-0.4.415}/PKG-INFO +1 -1
  2. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/pyproject.toml +1 -1
  3. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +202 -183
  4. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/README.md +0 -0
  5. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/__init__.py +0 -0
  6. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/api/__init__.py +0 -0
  7. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/api/ahead_service.py +0 -0
  8. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/api/client.py +0 -0
  9. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/api/helpers/__init__.py +0 -0
  10. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/api/helpers/api_helpers.py +0 -0
  11. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/api/rpa_historico_service.py +0 -0
  12. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/cli.py +0 -0
  13. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/config/__init__.py +0 -0
  14. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/config/settings.py +0 -0
  15. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/config.py +0 -0
  16. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/core/so_manipulation.py +0 -0
  17. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/decorators/__init__.py +0 -0
  18. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/decorators/deprecation.py +0 -0
  19. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/decorators/rate_limit.py +0 -0
  20. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/decorators/repeat.py +0 -0
  21. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/decorators/retry.py +0 -0
  22. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/decorators/singleton.py +0 -0
  23. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/decorators/timeit.py +0 -0
  24. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/models/__init__.py +0 -0
  25. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/models/dao/__init__.py +0 -0
  26. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/models/dao/rpa_configuracao.py +0 -0
  27. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/models/dao/rpa_historico.py +0 -0
  28. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/models/dao/rpa_processo.py +0 -0
  29. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/models/dto/__init__.py +0 -0
  30. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/models/dto/rpa_historico_request_dto.py +0 -0
  31. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/models/dto/rpa_processo_entrada_dto.py +0 -0
  32. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/models/dto/rpa_sistema_dto.py +0 -0
  33. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/__init__.py +0 -0
  34. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/__init__.py +0 -0
  35. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/coleta_dje_process.py +0 -0
  36. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/conexao_rdp.py +0 -0
  37. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/descartes.py +0 -0
  38. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/ecac_estadual_go.py +0 -0
  39. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/ecac_estadual_main.py +0 -0
  40. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/ecac_estadual_mt.py +0 -0
  41. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/ecac_estadual_sc.py +0 -0
  42. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/ecac_estadual_sp.py +0 -0
  43. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/ecac_federal.py +0 -0
  44. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +0 -0
  45. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_16.py +0 -0
  46. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_207.py +0 -0
  47. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_32.py +0 -0
  48. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_33.py +0 -0
  49. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_34.py +0 -0
  50. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_36.py +0 -0
  51. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_500.py +0 -0
  52. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_505.py +0 -0
  53. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py +0 -0
  54. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/entrada_de_notas_9.py +0 -0
  55. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/exemplo_processo.py +0 -0
  56. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/fidc_gerar_nosso_numero.py +0 -0
  57. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py +0 -0
  58. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/login_emsys.py +0 -0
  59. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/playground.py +0 -0
  60. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/sped_fiscal.py +0 -0
  61. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/jobs/transferencias.py +0 -0
  62. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/task_definitions.py +0 -0
  63. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/tasks/task_executor.py +0 -0
  64. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/utils/__init__.py +0 -0
  65. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/utils/env.py +0 -0
  66. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/utils/get_creds_gworkspace.py +0 -0
  67. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/utils/logger.py +0 -0
  68. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/utils/toast.py +0 -0
  69. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/utils/updater.py +0 -0
  70. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/utils/util.py +0 -0
  71. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/worker_automate_hub/utils/utils_nfe_entrada.py +0 -0
  72. {worker_automate_hub-0.4.414 → worker_automate_hub-0.4.415}/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.414
3
+ Version: 0.4.415
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.414"
3
+ version = "0.4.415"
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,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)