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.
E a seguir o método:
Obrigado.
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.
- <?php
- $colaborador_id->setExitAction(new TAction(array($this, 'onExitColabId')));
- ?>
E a seguir o método:
- <?php
- public static function onExitColabId($param)
- {
- $colab_id = $param['colaborador_id'];
- try
- {
- if($colab_id)
- {
- TTransaction::open('gestao_viagens');
- $colab = new Colaboradores($colab_id);
-
- $obj = new StdClass;
- $obj->diretoria = $colab->DIR2;
- $obj->area = $colab->AREA;
-
- TForm::sendData('form_solicita_viagem', $obj);
-
- $cc = $colab->CENTRO_CUSTO;
- $objc = $colab->OBJETO_CUSTO;
-
- $cc_obj = $cc . $objc;
-
- $criteria = new TCriteria;
- $criteria->add(new TFilter('cc_obj_filho', '=', $cc_obj));
-
- $repository = new TRepository('EstruturaCC');
- $estruturas = $repository->load($criteria);
-
- foreach ($estruturas as $estrutura)
- {
- $ccpai = $estrutura->cc_pai;
- }
-
- $mes_ano = date("m/Y");
- $data = '01/' . $mes_ano;
-
- $criteria1 = new TCriteria;
- $criteria1->add(new TFilter('centro_custo', '=', $ccpai));
- $criteria1->add(new TFilter('mes', '=', $data));
-
- $repository1 = new TRepository('Orcamento');
- $orcamentos = $repository1->load($criteria1);
-
- foreach ($orcamentos as $orcamento)
- {
- $valor_mes = $orcamento->valor;
- }
-
- echo $data . ' - '. $ccpai . ' - ' . $valor_mes . '<br>';
-
- TTransaction::close();
- }
- }
- catch (Exception $e)
- {
- new TMessage('error', '<b>Error:</b> ' . $e->getMessage());
- }
- }
- ?>
Obrigado.
Uma alternativa seria você criar uma seek manual e fazer essas verificações no onSelect dessa seek. Assim não precisaria da exitAction
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.