Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
ExitAction executa 2 vezes Pessoal, Gostaria de uma dica. Tenho uma ExitAction em um campo, para preencher informações adicionais de um SeekButton, e nesta mesma etapa eu gostaria de validar se o centro de custo em questão possui saldo, e disparar uma mensagem, só que para isto eu preciso buscar em 2 outras tabelas, não sei se assim é a melhor forma para fazer isto. Mas o problema, é que esta exit action execu...
FW
ExitAction executa 2 vezes  
Fechado
Pessoal,

Gostaria de uma dica.

Tenho uma ExitAction em um campo, para preencher informações adicionais de um SeekButton, e nesta mesma etapa eu gostaria de validar se o centro de custo em questão possui saldo, e disparar uma mensagem, só que para isto eu preciso buscar em 2 outras tabelas, não sei se assim é a melhor forma para fazer isto.
Mas o problema, é que esta exit action executa 2 vezes, não sei oq ocorre.
 
  1. <?php
  2. $colaborador_id->setExitAction(new TAction(array($this, 'onExitColabId')));
  3. ?>

E a seguir o método:
 
  1. <?php
  2. public static function onExitColabId($param)
  3. {
  4. $colab_id = $param['colaborador_id'];
  5. try
  6. {
  7. if($colab_id)
  8. {
  9. TTransaction::open('gestao_viagens');
  10. $colab = new Colaboradores($colab_id);
  11. $obj = new StdClass;
  12. $obj->diretoria = $colab->DIR2;
  13. $obj->area = $colab->AREA;
  14. TForm::sendData('form_solicita_viagem', $obj);
  15. $cc = $colab->CENTRO_CUSTO;
  16. $objc = $colab->OBJETO_CUSTO;
  17. $cc_obj = $cc . $objc;
  18. $criteria = new TCriteria;
  19. $criteria->add(new TFilter('cc_obj_filho', '=', $cc_obj));
  20. $repository = new TRepository('EstruturaCC');
  21. $estruturas = $repository->load($criteria);
  22. foreach ($estruturas as $estrutura)
  23. {
  24. $ccpai = $estrutura->cc_pai;
  25. }
  26. $mes_ano = date("m/Y");
  27. $data = '01/' . $mes_ano;
  28. $criteria1 = new TCriteria;
  29. $criteria1->add(new TFilter('centro_custo', '=', $ccpai));
  30. $criteria1->add(new TFilter('mes', '=', $data));
  31. $repository1 = new TRepository('Orcamento');
  32. $orcamentos = $repository1->load($criteria1);
  33. foreach ($orcamentos as $orcamento)
  34. {
  35. $valor_mes = $orcamento->valor;
  36. }
  37. echo $data . ' - '. $ccpai . ' - ' . $valor_mes . '<br>';
  38. TTransaction::close();
  39. }
  40. }
  41. catch (Exception $e)
  42. {
  43. new TMessage('error', '<b>Error:</b> ' . $e->getMessage());
  44. }
  45. }
  46. ?>

Obrigado.

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (2)


NR

Uma alternativa seria você criar uma seek manual e fazer essas verificações no onSelect dessa seek. Assim não precisaria da exitAction
FW

Nataniel.
Uma boa alternativa.

Fiz um método separado para isto, e adicionei ele ao onSave, executando antes de salvar. Mas é uma boa ideia.

Vou testar, obrigado.