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?
- <?php>
- <?php
- class ContratoSituacaoForm extends TPage
- {
- protected $form;
- public function __construct( $param )
- {
- parent::__construct();
- $this->form = new BootstrapFormBuilder('form_ContratoSituacao');
- $this->form->setFormTitle('Situação dos Contratos');
- $id = new TEntry('id');
- $proposta = new TEntry('proposta');
- $cliente_id = new TDBCombo('cliente_id', 'contratos', 'Cliente', 'id', 'nome', 'nome');
- $beneficio_id = new TEntry('beneficio_id');
- $data_contrato = new TDate('data_contrato');
- $bancopg_id = new TDBCombo('bancopg_id', 'contratos', 'Bancopg', 'id', 'nome', 'nome');
- $agencia = new TEntry('agencia');
- $conta_credito = new TEntry('conta_credito');
- $conta_id = new TDBCombo('conta_id', 'contratos', 'Conta', 'id', 'nome', 'nome');
- $banco_id = new TDBCombo('banco_id', 'contratos', 'Banco', 'id', 'nome', 'nome');
- $convenio_id = new TDBCombo('convenio_id', 'contratos', 'Convenio', 'id', 'nome', 'nome');
- $promotor_id = new TDBCombo('promotor_id', 'contratos', 'SystemUser', 'id', 'name', 'name');
- $digitador_id = new TDBCombo('digitador_id', 'contratos', 'SystemUser', 'id', 'name', 'name');
- $valorliquido = new TEntry('valorliquido');
- $valoremprestimo = new TEntry('valoremprestimo');
- $parcelas = new TEntry('parcelas');
- $tipo_id = new TDBCombo('tipo_id', 'contratos', 'Tipo', 'id', 'nome', 'nome');
- $situacao_id = new TDBCombo('situacao_id', 'contratos', 'Situacao', 'id', 'nome', 'nome');
- $data_situacao = new TDate('data_situacao');
- $fisicopendente = new TCombo('fisicopendente');
- $data_fisico = new TDate('data_fisico');
- $comissao_paga = new TCombo('comissao_paga');
- $data_comissao = new TDate('data_comissao');
- $obs = new TText('obs');
- $proposta->setSize('100%');
- $cliente_id->setSize('100%');
- $beneficio_id->setSize('100%');
- $data_contrato->setSize('100%');
- $bancopg_id->setSize('100%');
- $agencia->setSize('100%');
- $conta_credito->setSize('100%');
- $conta_id->setSize('100%');
- $banco_id->setSize('100%');
- $convenio_id->setSize('100%');
- $promotor_id->setSize('100%');
- $digitador_id->setSize('100%');
- $valorliquido->setSize('100%');
- $valoremprestimo->setSize('100%');
- $parcelas->setSize('100%');
- $tipo_id->setSize('100%');
- $obs->setSize('100%');
- $situacao_id->setSize('100%');
- $data_situacao->setSize('100%');
- $fisicopendente->setSize('100%');
- $data_fisico->setSize('100%');
- $comissao_paga->setSize('100%');
- $data_comissao->setSize('100%');
- // Máscaras
- // Config fields
- $opcoes_fisico = ['N' => 'NÃO', 'S' => 'SIM'];
- $fisicopendente->addItems($opcoes_fisico);
- $opcoes_comissao = ['N' => 'NÃO', 'S' => 'SIM'];
- $comissao_paga->addItems($opcoes_comissao);
- $data_situacao->setMask('dd/mm/yyyy');
- $data_situacao->setDatabaseMask('yyyy-mm-dd');
- $data_contrato->setMask('dd/mm/yyyy');
- $data_contrato->setDatabaseMask('yyyy-mm-dd');
- $data_fisico->setMask('dd/mm/yyyy');
- $data_fisico->setDatabaseMask('yyyy-mm-dd');
- $data_comissao->setMask('dd/mm/yyyy');
- $data_comissao->setDatabaseMask('yyyy-mm-dd');
- $parcelas->setInputType('number');
- $valoremprestimo->setNumericMask(2, ',', '.', true);
- $valorliquido->setNumericMask(2, ',', '.', true);
- // Set Fields
- $digitador_id->setEditable(FALSE);
- $banco_id->enableSearch();
- $convenio_id->enableSearch();
- $promotor_id->enableSearch();
- $digitador_id->enableSearch();
- $bancopg_id->enableSearch();
- $tipo_id->enableSearch();
- $cliente_id->enableSearch();
- $conta_id->enableSearch();
- $situacao_id->enableSearch();
- // Validações
- $proposta->addValidation('Proposta', new TRequiredValidator);
- $cliente_id->addValidation('Cliente', new TRequiredValidator);
- $beneficio_id->addValidation('Benefício', new TRequiredValidator);
- $data_contrato->addValidation('Data Contrato', new TRequiredValidator);
- $bancopg_id->addValidation('Banco Cliente', new TRequiredValidator);
- $agencia->addValidation('Agência', new TRequiredValidator);
- $conta_credito->addValidation('Conta', new TRequiredValidator);
- $conta_id->addValidation('Tipo de Conta', new TRequiredValidator);
- $banco_id->addValidation('Banco Convênio', new TRequiredValidator);
- $convenio_id->addValidation('Convênio', new TRequiredValidator);
- $promotor_id->addValidation('Corretor', new TRequiredValidator);
- $valorliquido->addValidation('Valor líquido', new TRequiredValidator);
- $valoremprestimo->addValidation('Valor empréstimo', new TRequiredValidator);
- $parcelas->addValidation('Parcelas', new TRequiredValidator);
- $tipo_id->addValidation('Tipo Contrato', new TRequiredValidator);
- $situacao_id->addValidation('Situação', new TRequiredValidator);
- $fisicopendente->addValidation('Físico Pendente', new TRequiredValidator);
- $comissao_paga->addValidation('Comissão Paga', new TRequiredValidator);
- // Pega o usuário logado
- $logged = TSession::getValue('userid');
- $digitador_id->setValue($logged);
- // add the fields
- $id->setEditable(FALSE);
- $proposta->setEditable(FALSE);
- $beneficio_id->setEditable(FALSE);
- $data_contrato->setEditable(FALSE);
- $agencia->setEditable(FALSE);
- $conta_credito->setEditable(FALSE);
- $valorliquido->setEditable(FALSE);
- $valoremprestimo->setEditable(FALSE);
- $parcelas->setEditable(FALSE);
- $obs->setEditable(TRUE);
- /*
- $cliente_id->setEditable(FALSE);
- $bancopg_id->setEditable(FALSE);
- $conta_id->setEditable(FALSE);
- $banco_id->setEditable(FALSE);
- $convenio_id->setEditable(FALSE);
- $promotor_id->setEditable(FALSE);
- $digitador_id->setEditable(FALSE);
- $tipo_id->setEditable(FALSE);
- */
- TTransaction::open('permission');
- $user = SystemUser::newFromLogin(TSession::getValue('login'));
- $is_digitador = $user->checkInGroup( new SystemGroup(4) );
- TTransaction::close();
- if ( $is_digitador)
- {
- $comissao_paga->setEditable(false);
- $data_comissao->setEditable(false);
- }
- else
- {
- $comissao_paga->setEditable(true);
- TDate::enableField('form_ContratoSituacao', 'data_comissao');
- }
- $this->form->appendPage('Dados do Empréstimo');
- $this->form->addFields([new TLabel('Id', 'red')], [$id], [new TLabel('N. Proposta', 'red')], [$proposta]);
- $this->form->addFields([new TLabel('Cliente')], [$cliente_id]);
- $this->form->addFields([new TLabel('Beneficio')], [$beneficio_id], [new TLabel('Data Contrato')], [$data_contrato]);
- $this->form->addFields([new TLabel('Tipo Contrato')], [$tipo_id], [new TLabel('Banco Convênio')], [$banco_id]);
- $this->form->addFields([new TLabel('Convenio')], [$convenio_id], [new TLabel('Corretor')], [$promotor_id]);
- $this->form->addFields([new TLabel('Digitador')], [$digitador_id], [new TLabel('Parcelas')], [$parcelas]);
- $this->form->addFields([new TLabel('Valor emprestimo')], [$valoremprestimo], [new TLabel('Valor líquido')], [$valorliquido]);
- $this->form->addFields([new TLabel('Situação', 'red')], [$situacao_id], [new TLabel('Data Situação', 'red')], [$data_situacao]);
- $this->form->addFields([new TLabel('Físico Pendente', 'red')], [$fisicopendente], [new TLabel('Data Físico', 'red')], [$data_fisico]);
- $this->form->addFields([new TLabel('Comissão Paga', 'red')], [$comissao_paga], [new TLabel('Data Comissão', 'red')], [$data_comissao]);
- $this->form->appendPage('Dados do Crédito');
- $this->form->addFields([new TLabel('Banco Cliente', 'red')], [$bancopg_id], [ new TLabel('Tipo de Conta', 'red') ],[ $conta_id ]);
- $this->form->addFields([new TLabel('Agencia', 'red')], [$agencia], [ new TLabel('Conta', 'red')],[ $conta_credito]);
- $this->form->appendPage('Observação');
- $this->form->addFields([new TLabel('Observação')],[ $obs ] );
- // create the form actions
- $btn_save = $this->form->addAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
- $btn_save->class = 'btn btn-sm btn-primary';
- $this->form->addAction('Listagem de Contratos', new TAction(array('ContratoFormList', 'onReload')), 'fa:table blue');
- $change_action0 = new TAction(array($this, 'onChangeSituacao'));
- $situacao_id->setChangeAction($change_action0);
- $change_action2 = new TAction(array($this, 'onChangeComissao'));
- $comissao_paga->setChangeAction($change_action2);
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 100%';
- $container->add( $this->form );
- parent::add($container);
- }
- public static function onChangeSituacao($param)
- {
- if ( isset($param['situacao_id'] ))
- {
- if ( ($param['situacao_id'] == 1))
- {
- TDate::disableField('form_ContratoSituacao', 'data_situacao');
- TDate::clearField('form_ContratoSituacao', 'data_situacao');
- }
- else
- {
- TDate::enableField('form_ContratoSituacao', 'data_situacao');
- }
- }
- else
- {
- TDate::disableField('form_ContratoSituacao', 'data_situacao');
- TDate::clearField('form_ContratoSituacao', 'data_situacao');
- }
- }
- public static function onChangeComissao($param)
- {
- if ( isset($param['comissao_paga'] ))
- {
- if ( ($param['comissao_paga'] == 'N'))
- {
- TDate::disableField('form_ContratoSituacao', 'data_comissao');
- TDate::clearField('form_ContratoSituacao', 'data_comissao');
- }
- else
- {
- TDate::enableField('form_ContratoSituacao', 'data_comissao');
- }
- }
- else
- {
- TDate::disableField('form_ContratoSituacao', 'data_comissao');
- TDate::clearField('form_ContratoSituacao', 'data_comissao');
- }
- }
- /**
- * Save form data
- * @param $param Request
- */
- public function onSave( $param )
- {
- try
- {
- TTransaction::open('contratos'); // open a transaction
- $this->form->validate(); // validate form data
- $object = new Contrato; // create an empty object
- $data = $this->form->getData(); // get form data as array
- $object->fromArray( (array) $data); // load the object with data
- $object->store(); // save the object
- $data->id = $object->id;
- $this->form->setData($data); // fill form data
- TTransaction::close(); // close the transaction
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- if (strripos($e->getMessage(), '1062'))
- {
- new TMessage('error', 'Proposta já cadastrada !');
- }
- else
- {
- new TMessage('error', $e->getMessage());
- }
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback(); // undo all pending operations
- }
- }
- /**
- * Load object to form data
- * @param $param Request
- */
- public function onEdit( $param )
- {
- try
- {
- if (isset($param['key']))
- {
- $key = $param['key']; // get the parameter $key
- TTransaction::open('contratos'); // open a transaction
- $object = new Contrato($key); // instantiates the Active Record
- $this->onChangeSituacao($object->situacao_id);
- $this->onChangeComissao($object->comissao_paga);
- $this->form->setData($object); // fill the form
- TTransaction::close(); // close the transaction
- TTransaction::open('permission');
- $user = SystemUser::newFromLogin(TSession::getValue('login'));
- $is_digitador = $user->checkInGroup( new SystemGroup(4) );
- TTransaction::close();
- if ($is_digitador)
- {
- TDBCombo::disableField('form_ContratoSituacao', 'comissao_paga');
- }
- else
- {
- TDBCombo::enableField('form_ContratoSituacao', 'comissao_paga');
- }
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- }
- <?>
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.