Lançado Adianti Framework 7.6!
Clique aqui para saber mais
O form està sendo salvo sem chamar onSave Pessoal Eu tenho um form para gerar OS. Nele eu tenho um onChagenAction que ao selecionar um cliente, ele possa capturar e preencher alguns campos do formulário. Ocorre que está sendo criado a OS todas as vezes que o evento é chamado. O mais estranho é que eu coloquie um var-_dump() e exit. logo no inicio do onSave e o registro é criado sem passar pelo onSave. É o único lugar que t...
MG
O form està sendo salvo sem chamar onSave  
Pessoal
Eu tenho um form para gerar OS.
Nele eu tenho um onChagenAction que ao selecionar um cliente, ele possa capturar
e preencher alguns campos do formulário.
Ocorre que está sendo criado a OS todas as vezes que o evento é chamado.
O mais estranho é que eu coloquie um var-_dump() e exit. logo no inicio do onSave
e o registro é criado sem passar pelo onSave.
É o único lugar que tenho $os->store();

Segue o meu onChange.
  1. <?php
  2.     /**
  3.      * Ao selecionar um cliente, o sistema preenche alguns campos
  4.      * da tela
  5.      */
  6.     public static function onChangeCliente($param)
  7.     {
  8.         try {
  9.             $cliente_id $param['cliente_id'];
  10.             TTransaction::open('app');
  11.             $cliente Cliente::find($cliente_id);
  12.             TTransaction::close();
  13.             
  14.             // primeiro verifica se o cliente está ativo
  15.             if ($cliente->situacao == 0) {
  16.                 new TMessage('warningn''O Cliente selecionado está inativo!');
  17.             }
  18.             
  19.             if ($cliente) {
  20.                 $obj = new stdClass;
  21.                 $obj->faturado             $cliente->faturamento;
  22.                 $obj->cep_origem           $cliente->cep;
  23.                 $obj->logradouro_origem    $cliente->logradouro;
  24.                 $obj->complemento_origem   $cliente->complelento;
  25.                 $obj->bairro_origem        $cliente->bairro;
  26.                 $obj->uf_origem            $cliente->uf;
  27.                 $obj->nome_solicitante     $cliente->contato;
  28.                 $obj->telefone_solicitante $cliente->telefone;
  29.                 $obj->ordem_servico_id     0;
  30.             } else {
  31.                 $obj = new stdClass;
  32.                 $obj->faturado           '';
  33.                 $obj->cep_origem         '';
  34.                 $obj->logradouro_origem  '';
  35.                 $obj->complemento_origem '';
  36.                 $obj->bairro_origem      '';
  37.                 $obj->uf_origem          '';
  38.                 $obj->nome_solicitante   '';
  39.                 $obj->ordem_servico_id   0;
  40.             }
  41.             
  42.             $options = array();
  43.             $options[''] = '';
  44.             if (Cliente::getCalculoArea($cliente_id)) {
  45.                 $options['A'] = 'AREA';
  46.             }    
  47.             if (Cliente::getCalculoDistancia($cliente_id)) {
  48.                 $options['D'] = 'DISTANCIA';
  49.             }    
  50.             if (Cliente::getCalculoVeiculo($cliente_id)) {
  51.                 $options['T'] = 'VEICULO';
  52.             }    
  53.             TCombo::reload('form_OrdemServico','tipo_itinerario',$options);
  54.             TForm::sendData('form_OrdemServico',$obj);
  55.             
  56.         } catch (Exception $e) {
  57.             new TMessage('error',$e->getMessage());
  58.         }
  59.     }
  60. ?:

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (4)


LG

Não vai resolver o problema... mas acho que essa parte:
<php
$cliente = Cliente::find($cliente_id);
?>
O correto seria:
<php
$cliente = Cliente($cliente_id);
?>
Se não me engano o find retorna um array.
LG

Não vai resolver o problema... mas acho que essa parte:
  1. <?php 
  2. $cliente Cliente::find($cliente_id); 
  3. ?>

O correto seria:
  1. <?php 
  2. $cliente Cliente($cliente_id); 
  3. ?>

Se não me engano o find retorna um array.
MG

Leonardo
Ambos retornam um collection.
O efeito é o mesmo, e o problema persiste.
Mesmo assim grato
LG

Você tem razão, falha minha.
Sobre o teu problema me aconteceu algo parecido, não lembro direito o que eu estava fazendo de errado com o objeto, mas corrigi copiando os dados do objeto do model para uma stdclass.