Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
Erro ao Salvar Pessoal estou tentando salvar os dados de um formulário, mas nem todos os dados deste formulário são salvos. Percebi que os campos onde estão setados como setEditable(FALSE) e que são relacionamentos com outras tabelas ficam sem receber valores. Como posso resolver esse problema? ...
CJ
Erro ao Salvar  
Pessoal estou tentando salvar os dados de um formulário, mas nem todos os dados deste formulário são salvos. Percebi que os campos onde estão setados como setEditable(FALSE) e que são relacionamentos com outras tabelas ficam sem receber valores. Como posso resolver esse problema?

 
  1. <?php>
 
  1. <?php
  2. class ContratoSituacaoForm extends TPage
  3. {
  4. protected $form;
  5. public function __construct( $param )
  6. {
  7. parent::__construct();
  8. $this->form = new BootstrapFormBuilder('form_ContratoSituacao');
  9. $this->form->setFormTitle('Situação dos Contratos');
  10. $id = new TEntry('id');
  11. $proposta = new TEntry('proposta');
  12. $cliente_id = new TDBCombo('cliente_id', 'contratos', 'Cliente', 'id', 'nome', 'nome');
  13. $beneficio_id = new TEntry('beneficio_id');
  14. $data_contrato = new TDate('data_contrato');
  15. $bancopg_id = new TDBCombo('bancopg_id', 'contratos', 'Bancopg', 'id', 'nome', 'nome');
  16. $agencia = new TEntry('agencia');
  17. $conta_credito = new TEntry('conta_credito');
  18. $conta_id = new TDBCombo('conta_id', 'contratos', 'Conta', 'id', 'nome', 'nome');
  19. $banco_id = new TDBCombo('banco_id', 'contratos', 'Banco', 'id', 'nome', 'nome');
  20. $convenio_id = new TDBCombo('convenio_id', 'contratos', 'Convenio', 'id', 'nome', 'nome');
  21. $promotor_id = new TDBCombo('promotor_id', 'contratos', 'SystemUser', 'id', 'name', 'name');
  22. $digitador_id = new TDBCombo('digitador_id', 'contratos', 'SystemUser', 'id', 'name', 'name');
  23. $valorliquido = new TEntry('valorliquido');
  24. $valoremprestimo = new TEntry('valoremprestimo');
  25. $parcelas = new TEntry('parcelas');
  26. $tipo_id = new TDBCombo('tipo_id', 'contratos', 'Tipo', 'id', 'nome', 'nome');
  27. $situacao_id = new TDBCombo('situacao_id', 'contratos', 'Situacao', 'id', 'nome', 'nome');
  28. $data_situacao = new TDate('data_situacao');
  29. $fisicopendente = new TCombo('fisicopendente');
  30. $data_fisico = new TDate('data_fisico');
  31. $comissao_paga = new TCombo('comissao_paga');
  32. $data_comissao = new TDate('data_comissao');
  33. $obs = new TText('obs');
  34. $proposta->setSize('100%');
  35. $cliente_id->setSize('100%');
  36. $beneficio_id->setSize('100%');
  37. $data_contrato->setSize('100%');
  38. $bancopg_id->setSize('100%');
  39. $agencia->setSize('100%');
  40. $conta_credito->setSize('100%');
  41. $conta_id->setSize('100%');
  42. $banco_id->setSize('100%');
  43. $convenio_id->setSize('100%');
  44. $promotor_id->setSize('100%');
  45. $digitador_id->setSize('100%');
  46. $valorliquido->setSize('100%');
  47. $valoremprestimo->setSize('100%');
  48. $parcelas->setSize('100%');
  49. $tipo_id->setSize('100%');
  50. $obs->setSize('100%');
  51. $situacao_id->setSize('100%');
  52. $data_situacao->setSize('100%');
  53. $fisicopendente->setSize('100%');
  54. $data_fisico->setSize('100%');
  55. $comissao_paga->setSize('100%');
  56. $data_comissao->setSize('100%');
  57. // Máscaras
  58. // Config fields
  59. $opcoes_fisico = ['N' => 'NÃO', 'S' => 'SIM'];
  60. $fisicopendente->addItems($opcoes_fisico);
  61. $opcoes_comissao = ['N' => 'NÃO', 'S' => 'SIM'];
  62. $comissao_paga->addItems($opcoes_comissao);
  63. $data_situacao->setMask('dd/mm/yyyy');
  64. $data_situacao->setDatabaseMask('yyyy-mm-dd');
  65. $data_contrato->setMask('dd/mm/yyyy');
  66. $data_contrato->setDatabaseMask('yyyy-mm-dd');
  67. $data_fisico->setMask('dd/mm/yyyy');
  68. $data_fisico->setDatabaseMask('yyyy-mm-dd');
  69. $data_comissao->setMask('dd/mm/yyyy');
  70. $data_comissao->setDatabaseMask('yyyy-mm-dd');
  71. $parcelas->setInputType('number');
  72. $valoremprestimo->setNumericMask(2, ',', '.', true);
  73. $valorliquido->setNumericMask(2, ',', '.', true);
  74. // Set Fields
  75. $digitador_id->setEditable(FALSE);
  76. $banco_id->enableSearch();
  77. $convenio_id->enableSearch();
  78. $promotor_id->enableSearch();
  79. $digitador_id->enableSearch();
  80. $bancopg_id->enableSearch();
  81. $tipo_id->enableSearch();
  82. $cliente_id->enableSearch();
  83. $conta_id->enableSearch();
  84. $situacao_id->enableSearch();
  85. // Validações
  86. $proposta->addValidation('Proposta', new TRequiredValidator);
  87. $cliente_id->addValidation('Cliente', new TRequiredValidator);
  88. $beneficio_id->addValidation('Benefício', new TRequiredValidator);
  89. $data_contrato->addValidation('Data Contrato', new TRequiredValidator);
  90. $bancopg_id->addValidation('Banco Cliente', new TRequiredValidator);
  91. $agencia->addValidation('Agência', new TRequiredValidator);
  92. $conta_credito->addValidation('Conta', new TRequiredValidator);
  93. $conta_id->addValidation('Tipo de Conta', new TRequiredValidator);
  94. $banco_id->addValidation('Banco Convênio', new TRequiredValidator);
  95. $convenio_id->addValidation('Convênio', new TRequiredValidator);
  96. $promotor_id->addValidation('Corretor', new TRequiredValidator);
  97. $valorliquido->addValidation('Valor líquido', new TRequiredValidator);
  98. $valoremprestimo->addValidation('Valor empréstimo', new TRequiredValidator);
  99. $parcelas->addValidation('Parcelas', new TRequiredValidator);
  100. $tipo_id->addValidation('Tipo Contrato', new TRequiredValidator);
  101. $situacao_id->addValidation('Situação', new TRequiredValidator);
  102. $fisicopendente->addValidation('Físico Pendente', new TRequiredValidator);
  103. $comissao_paga->addValidation('Comissão Paga', new TRequiredValidator);
  104. // Pega o usuário logado
  105. $logged = TSession::getValue('userid');
  106. $digitador_id->setValue($logged);
  107. // add the fields
  108. $id->setEditable(FALSE);
  109. $proposta->setEditable(FALSE);
  110. $beneficio_id->setEditable(FALSE);
  111. $data_contrato->setEditable(FALSE);
  112. $agencia->setEditable(FALSE);
  113. $conta_credito->setEditable(FALSE);
  114. $valorliquido->setEditable(FALSE);
  115. $valoremprestimo->setEditable(FALSE);
  116. $parcelas->setEditable(FALSE);
  117. $obs->setEditable(TRUE);
  118. /*
  119. $cliente_id->setEditable(FALSE);
  120. $bancopg_id->setEditable(FALSE);
  121. $conta_id->setEditable(FALSE);
  122. $banco_id->setEditable(FALSE);
  123. $convenio_id->setEditable(FALSE);
  124. $promotor_id->setEditable(FALSE);
  125. $digitador_id->setEditable(FALSE);
  126. $tipo_id->setEditable(FALSE);
  127. */
  128. TTransaction::open('permission');
  129. $user = SystemUser::newFromLogin(TSession::getValue('login'));
  130. $is_digitador = $user->checkInGroup( new SystemGroup(4) );
  131. TTransaction::close();
  132. if ( $is_digitador)
  133. {
  134. $comissao_paga->setEditable(false);
  135. $data_comissao->setEditable(false);
  136. }
  137. else
  138. {
  139. $comissao_paga->setEditable(true);
  140. TDate::enableField('form_ContratoSituacao', 'data_comissao');
  141. }
  142. $this->form->appendPage('Dados do Empréstimo');
  143. $this->form->addFields([new TLabel('Id', 'red')], [$id], [new TLabel('N. Proposta', 'red')], [$proposta]);
  144. $this->form->addFields([new TLabel('Cliente')], [$cliente_id]);
  145. $this->form->addFields([new TLabel('Beneficio')], [$beneficio_id], [new TLabel('Data Contrato')], [$data_contrato]);
  146. $this->form->addFields([new TLabel('Tipo Contrato')], [$tipo_id], [new TLabel('Banco Convênio')], [$banco_id]);
  147. $this->form->addFields([new TLabel('Convenio')], [$convenio_id], [new TLabel('Corretor')], [$promotor_id]);
  148. $this->form->addFields([new TLabel('Digitador')], [$digitador_id], [new TLabel('Parcelas')], [$parcelas]);
  149. $this->form->addFields([new TLabel('Valor emprestimo')], [$valoremprestimo], [new TLabel('Valor líquido')], [$valorliquido]);
  150. $this->form->addFields([new TLabel('Situação', 'red')], [$situacao_id], [new TLabel('Data Situação', 'red')], [$data_situacao]);
  151. $this->form->addFields([new TLabel('Físico Pendente', 'red')], [$fisicopendente], [new TLabel('Data Físico', 'red')], [$data_fisico]);
  152. $this->form->addFields([new TLabel('Comissão Paga', 'red')], [$comissao_paga], [new TLabel('Data Comissão', 'red')], [$data_comissao]);
  153. $this->form->appendPage('Dados do Crédito');
  154. $this->form->addFields([new TLabel('Banco Cliente', 'red')], [$bancopg_id], [ new TLabel('Tipo de Conta', 'red') ],[ $conta_id ]);
  155. $this->form->addFields([new TLabel('Agencia', 'red')], [$agencia], [ new TLabel('Conta', 'red')],[ $conta_credito]);
  156. $this->form->appendPage('Observação');
  157. $this->form->addFields([new TLabel('Observação')],[ $obs ] );
  158. // create the form actions
  159. $btn_save = $this->form->addAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
  160. $btn_save->class = 'btn btn-sm btn-primary';
  161. $this->form->addAction('Listagem de Contratos', new TAction(array('ContratoFormList', 'onReload')), 'fa:table blue');
  162. $change_action0 = new TAction(array($this, 'onChangeSituacao'));
  163. $situacao_id->setChangeAction($change_action0);
  164. $change_action2 = new TAction(array($this, 'onChangeComissao'));
  165. $comissao_paga->setChangeAction($change_action2);
  166. // vertical box container
  167. $container = new TVBox;
  168. $container->style = 'width: 100%';
  169. $container->add( $this->form );
  170. parent::add($container);
  171. }
  172. public static function onChangeSituacao($param)
  173. {
  174. if ( isset($param['situacao_id'] ))
  175. {
  176. if ( ($param['situacao_id'] == 1))
  177. {
  178. TDate::disableField('form_ContratoSituacao', 'data_situacao');
  179. TDate::clearField('form_ContratoSituacao', 'data_situacao');
  180. }
  181. else
  182. {
  183. TDate::enableField('form_ContratoSituacao', 'data_situacao');
  184. }
  185. }
  186. else
  187. {
  188. TDate::disableField('form_ContratoSituacao', 'data_situacao');
  189. TDate::clearField('form_ContratoSituacao', 'data_situacao');
  190. }
  191. }
  192. public static function onChangeComissao($param)
  193. {
  194. if ( isset($param['comissao_paga'] ))
  195. {
  196. if ( ($param['comissao_paga'] == 'N'))
  197. {
  198. TDate::disableField('form_ContratoSituacao', 'data_comissao');
  199. TDate::clearField('form_ContratoSituacao', 'data_comissao');
  200. }
  201. else
  202. {
  203. TDate::enableField('form_ContratoSituacao', 'data_comissao');
  204. }
  205. }
  206. else
  207. {
  208. TDate::disableField('form_ContratoSituacao', 'data_comissao');
  209. TDate::clearField('form_ContratoSituacao', 'data_comissao');
  210. }
  211. }
  212. /**
  213. * Save form data
  214. * @param $param Request
  215. */
  216. public function onSave( $param )
  217. {
  218. try
  219. {
  220. TTransaction::open('contratos'); // open a transaction
  221. $this->form->validate(); // validate form data
  222. $object = new Contrato; // create an empty object
  223. $data = $this->form->getData(); // get form data as array
  224. $object->fromArray( (array) $data); // load the object with data
  225. $object->store(); // save the object
  226. $data->id = $object->id;
  227. $this->form->setData($data); // fill form data
  228. TTransaction::close(); // close the transaction
  229. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  230. }
  231. catch (Exception $e) // in case of exception
  232. {
  233. if (strripos($e->getMessage(), '1062'))
  234. {
  235. new TMessage('error', 'Proposta já cadastrada !');
  236. }
  237. else
  238. {
  239. new TMessage('error', $e->getMessage());
  240. }
  241. $this->form->setData( $this->form->getData() ); // keep form data
  242. TTransaction::rollback(); // undo all pending operations
  243. }
  244. }
  245. /**
  246. * Load object to form data
  247. * @param $param Request
  248. */
  249. public function onEdit( $param )
  250. {
  251. try
  252. {
  253. if (isset($param['key']))
  254. {
  255. $key = $param['key']; // get the parameter $key
  256. TTransaction::open('contratos'); // open a transaction
  257. $object = new Contrato($key); // instantiates the Active Record
  258. $this->onChangeSituacao($object->situacao_id);
  259. $this->onChangeComissao($object->comissao_paga);
  260. $this->form->setData($object); // fill the form
  261. TTransaction::close(); // close the transaction
  262. TTransaction::open('permission');
  263. $user = SystemUser::newFromLogin(TSession::getValue('login'));
  264. $is_digitador = $user->checkInGroup( new SystemGroup(4) );
  265. TTransaction::close();
  266. if ($is_digitador)
  267. {
  268. TDBCombo::disableField('form_ContratoSituacao', 'comissao_paga');
  269. }
  270. else
  271. {
  272. TDBCombo::enableField('form_ContratoSituacao', 'comissao_paga');
  273. }
  274. }
  275. }
  276. catch (Exception $e) // in case of exception
  277. {
  278. new TMessage('error', $e->getMessage()); // shows the exception error message
  279. TTransaction::rollback(); // undo all pending operations
  280. }
  281. }
  282. }
  283. <?>

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 (1)


CJ

Ao comentar o código abaixo, verifiquei que o conteudo dos campos deste formulário é salvo com sucesso, mas o que necessito, além de salvar, é que esse campos fiquem desabilitados.

 
  1. <?php>
  2. $cliente_id->setEditable(FALSE);
  3. $bancopg_id->setEditable(FALSE);
  4. $conta_id->setEditable(FALSE);
  5. $banco_id->setEditable(FALSE);
  6. $convenio_id->setEditable(FALSE);
  7. $promotor_id->setEditable(FALSE);
  8. $digitador_id->setEditable(FALSE);
  9. $tipo_id->setEditable(FALSE);
  10. <?>