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. // primeiro verifica se o cliente está ativo
  14. if ($cliente->situacao == 0) {
  15. new TMessage('warningn', 'O Cliente selecionado está inativo!');
  16. }
  17. if ($cliente) {
  18. $obj = new stdClass;
  19. $obj->faturado = $cliente->faturamento;
  20. $obj->cep_origem = $cliente->cep;
  21. $obj->logradouro_origem = $cliente->logradouro;
  22. $obj->complemento_origem = $cliente->complelento;
  23. $obj->bairro_origem = $cliente->bairro;
  24. $obj->uf_origem = $cliente->uf;
  25. $obj->nome_solicitante = $cliente->contato;
  26. $obj->telefone_solicitante = $cliente->telefone;
  27. $obj->ordem_servico_id = 0;
  28. } else {
  29. $obj = new stdClass;
  30. $obj->faturado = '';
  31. $obj->cep_origem = '';
  32. $obj->logradouro_origem = '';
  33. $obj->complemento_origem = '';
  34. $obj->bairro_origem = '';
  35. $obj->uf_origem = '';
  36. $obj->nome_solicitante = '';
  37. $obj->ordem_servico_id = 0;
  38. }
  39. $options = array();
  40. $options[''] = '';
  41. if (Cliente::getCalculoArea($cliente_id)) {
  42. $options['A'] = 'AREA';
  43. }
  44. if (Cliente::getCalculoDistancia($cliente_id)) {
  45. $options['D'] = 'DISTANCIA';
  46. }
  47. if (Cliente::getCalculoVeiculo($cliente_id)) {
  48. $options['T'] = 'VEICULO';
  49. }
  50. TCombo::reload('form_OrdemServico','tipo_itinerario',$options);
  51. TForm::sendData('form_OrdemServico',$obj);
  52. } catch (Exception $e) {
  53. new TMessage('error',$e->getMessage());
  54. }
  55. }
  56. ?:

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 (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.