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

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 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. <?>