Salvar status e filial no OnSave Boa tarde! Estou fazendo um formulário de cadastro de frete coleta e os campos Status e Unidade não recebem valor diretamente, eu quero que ao clicar no botão salvar o sistema identifique qual a filial a pessoa logou e salve no campo filial. Coloquei um switch para informar controlar ações erradas do usuário, ou seja, enquanto o documento estiver com Startus = 1 ele salva as alteraçõe...
RF
Salvar status e filial no OnSave  
Boa tarde!

Estou fazendo um formulário de cadastro de frete coleta e os campos Status e Unidade não recebem valor diretamente, eu quero que ao clicar no botão salvar o sistema identifique qual a filial a pessoa logou e salve no campo filial.
Coloquei um switch para informar controlar ações erradas do usuário, ou seja, enquanto o documento estiver com Startus = 1 ele salva as alterações.

O problema está no seguinte: Quando clico no botão Salvar ele informa que os campos Status e Unidade são obrigatórios, porém essas informações estão em tela. Só quando clico pela segunda vez é que o sistema salva as informações.
Alguém poderia indicar uma solução?

Abaixo segue o código do botão salvar. Há também a imagem com a mensagem mencionada.


 
  1. <?php
  2. public function onSave($param = null)
  3. {
  4. try
  5. {
  6. // Pega a informação dos campos
  7. $data = $this->form->getData();
  8. // Pega a informação do campo Status
  9. $statusAtual = $data->status;
  10. switch ($statusAtual) {
  11. case 2:
  12. new TMessage('error',"Não é permitido Salvar um Frete Coleta já Emitido!");
  13. break;
  14. case 3:
  15. new TMessage('error',"Não é permitido Salvar um Frete Coleta Cancelado!");
  16. break;
  17. default:
  18. TTransaction::open(self::$database); // open a transaction
  19. $messageAction = null;
  20. $object = new PagamentoFrete(); // create an empty object
  21. $data = $this->form->getData(); // get form data as array
  22. $object = new stdClass();
  23. $object->status = 1;
  24. $object->unidade = TSession::getValue('userunitid');
  25. TForm::sendData(self::$formName, $object);
  26. $this->form->validate(); // validate form data
  27. $object->fromArray( (array) $data); // load the object with data
  28. $object->store(); // save the object
  29. // get the generated {PRIMARY_KEY}
  30. $data->id = $object->id;
  31. $this->form->setData($data); // fill form data
  32. TTransaction::close(); // close the transaction
  33. new TMessage('info', "Frete Coleta Salvo", $messageAction);
  34. break;
  35. }
  36. }
  37. catch (Exception $e) // in case of exception
  38. {
  39. //</catchAutoCode>
  40. new TMessage('error', $e->getMessage()); // shows the exception error message
  41. $this->form->setData( $this->form->getData() ); // keep form data
  42. TTransaction::rollback(); // undo all pending operations
  43. }
  44. }
  45. ?>

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)


CC

Olá Robson,

eu uso assim antes do $object->store() no onSave:

$object->USUARIO = (TSession::getValue('username'));
$object->UNIDADEFILIAL = (TSession::getValue('userunitid'));
ou
$data->USUARIO = (TSession::getValue('username'));
$data->UNIDADEFILIAL = (TSession::getValue('userunitid'));

Espero ter ajudado!

RF

Bom dia! Eu fiz assim e funcionou, obrigado!

 
  1. <?php
  2. TTransaction::open(self::$database); // open a transaction
  3. $messageAction = null;
  4. $object = new stdClass();
  5. $object->status = 1;
  6. $object->unidade = TSession::getValue('userunitid');
  7. $object->numero = $num;
  8. if ($ouser != null) $object->usuario_alteracao = $ouser;
  9. TForm::sendData(self::$formName, $object);
  10. $this->form->validate(); // validate form data
  11. $object = new PagamentoFrete(); // create an empty object //</blockLine>
  12. $data = $this->form->getData(); // get form data as array
  13. $object->fromArray( (array) $data); // load the object with data
  14. $object->status = 1;
  15. $object->unidade = TSession::getValue('userunitid');
  16. $object->numero = $num;
  17. if ($ouser != null) $object->usuario_alteracao = $ouser;
  18. //</beforeStoreAutoCode> //</blockLine>
  19. $object->store(); // save the object //</blockLine>
  20. //</afterStoreAutoCode> //</blockLine>
  21. // get the generated {PRIMARY_KEY}
  22. $data->id = $object->id; //</blockLine>
  23. $this->form->setData($data); // fill form data
  24. TTransaction::close(); // close the transaction
  25. ?>