Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Erro ao tentar editar form campos TDBUniqueSearch e TDBSelec Pessoal, estou tentando editar uma informação de um formulário que busco do banco normalmente. Mas na hora de salvar, como valido alguns campos, apresenta a informação que o cod_cliente não esta preenchido. Primeiro estava com problema em trazer os dados de um TDBSelect (Agregação), que só consegui sobrescrevendo o metódo de edição, agora estou no cod_cliente, que é um TDBUniqueSearch...
HT
Erro ao tentar editar form campos TDBUniqueSearch e TDBSelec  
Pessoal, estou tentando editar uma informação de um formulário que busco do banco normalmente. Mas na hora de salvar, como valido alguns campos, apresenta a informação que o cod_cliente não esta preenchido. Primeiro estava com problema em trazer os dados de um TDBSelect (Agregação), que só consegui sobrescrevendo o metódo de edição, agora estou no cod_cliente, que é um TDBUniqueSearch. Ele preenche o campo com a informação, mais quando vai para função salvar, o valor do campo vai zerado.

  1. <?php
  2. class SacColetaForm extends TPage
  3. {
  4.     protected $form// form
  5.     
  6.     use Adianti\Base\AdiantiStandardFormTrait// Standard form methods
  7.     
  8.     /**
  9.      * Class constructor
  10.      * Creates the page and the registration form
  11.      */
  12.     function __construct($param)
  13.     {
  14.         parent::__construct();
  15.         
  16.         $this->setDatabase('mysql');              // defines the database
  17.         $this->setActiveRecord('SacColeta');     // defines the active record
  18.         
  19.         // creates the form
  20.         $this->form = new BootstrapFormBuilder('form_SacColeta');
  21.         $this->form->setFormTitle('Sac Coleta');
  22.         
  23.         // create the form fields
  24.         $id = new TEntry('id');
  25.         $data_coleta = new TDate('data_coleta');
  26.         $data_saida = new TDate('data_saida');
  27.         $cod_cliente = new TDBUniqueSearch('cod_cliente''sqlserver''Clien''Codigo''Razao_Social');
  28.         $motivo = new TEntry('motivo''mysql''Motivo''id''descricao');
  29.         $sac_proced_id = new TDBSelect('sac_proced_id''mysql''SacProcedimento''id''descricao');
  30.         $sac_protoc_tipo_id = new TDBCombo('sac_protoc_tipo_id''mysql''SacProtocoloTipo''id''descricao');
  31.         $observacao = new TEntry('observacao');
  32.         $nota_fiscal = new TEntry('nota_fiscal');
  33.         $controle = new TCombo('controle');
  34.         $controle->addItems(array('E'=> 'Enviado''R'=> 'Recebido''A' => 'Arquivado'));
  35.         // add the fields
  36.         $this->form->addFields( [ new TLabel('Id') ], [ $id ] );
  37.         $this->form->addFields( [ new TLabel('Tipo Protocolo') ], [ $sac_protoc_tipo_id ] );
  38.         $this->form->addFields( [ new TLabel('Nota Fiscal') ], [ $nota_fiscal ] );
  39.         $this->form->addFields( [ new TLabel('Data Coleta') ], [ $data_coleta ] );
  40.         $this->form->addFields( [ new TLabel('Data Saida') ], [ $data_saida ] );
  41.         $this->form->addFields( [ new TLabel('Cliente') ], [ $cod_cliente ] );
  42.         $this->form->addFields( [ new TLabel('Motivo') ], [ $motivo ] );
  43.         $this->form->addFields( [ new TLabel('Procedimento') ], [ $sac_proced_id ] );
  44.         $this->form->addFields( [ new TLabel('Observacao') ], [ $observacao ] );
  45.         $this->form->addFields( [ new TLabel('Controle') ], [ $controle ] );
  46.         $nota_fiscal->setExitAction(new TAction(array($this'onExitNota')));
  47.         // set sizes
  48.         $id->setSize('100%');
  49.         $data_coleta->setSize('100%');
  50.         $data_saida->setSize('100%');
  51.         $cod_cliente->setSize('100%');
  52.         $motivo->setSize('100%');
  53.         $sac_proced_id->setSize('100%'200);
  54.         $sac_protoc_tipo_id->setSize('100%');
  55.         $observacao->setSize('100%');
  56.         $nota_fiscal->setSize('100%');
  57.         $nota_fiscal->setMask('99999999999');
  58.         // add validation
  59.         $sac_proced_id->addValidation'Procedimento', new TRequiredValidator );
  60.         $sac_protoc_tipo_id->addValidation'Tipo Protocolo', new TRequiredValidator ); 
  61.         $cod_cliente->addValidation'Cliente', new TRequiredValidator );
  62.         $observacao->addValidation'Observação', new TRequiredValidator );
  63.         $id->setEditable(FALSE);
  64.         if (!empty($param['key']))
  65.         {
  66.             $data_coleta->setEditable(FALSE); 
  67.             $data_saida->setEditable(FALSE); 
  68.             $cod_cliente->setEditable(FALSE); 
  69.             $motivo->setEditable(FALSE); 
  70.             $sac_proced_id->setEditable(FALSE);
  71.             $sac_protoc_tipo_id->setEditable(FALSE);
  72.             $observacao->setEditable(FALSE); 
  73.             $nota_fiscal->setEditable(FALSE);
  74.             TButton::enableField('form_SacColeta','salvar');
  75.         }else{
  76.             TButton::disableField('form_SacColeta','cancelar'); 
  77.             TButton::disableField('form_SacColeta','fechar');  
  78.         }
  79.         // create the form actions
  80.         $btn $this->form->addAction(_t('Save'), new TAction([$this'onSave']), 'fa:floppy-o');
  81.         $btn->class 'btn btn-sm btn-primary';
  82.         $this->form->addAction('Voltar', new TAction(['SacColetaList''onReload']), 'fa:backward blue');
  83.         
  84.         $this->form->addAction('Fechar',  new TAction([$this'onQuestionFechar']), 'fa:times green');
  85.         $this->form->addAction('Cancelar',  new TAction([$this'onQuestionCancel']), 'fa:eraser red');
  86.         // vertical box container
  87.         $container = new TVBox;
  88.         $container->style 'width: 100%';
  89.         // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  90.         $container->add($this->form);
  91.         parent::add($container);
  92.     }
  93.     function onQuestionFechar($param)
  94.     {
  95.         $this->form->setData($this->form->getData());
  96.         if($param['controle'] == '')
  97.         {
  98.             new TMessage('info','O campo controle precisa ser definido!');
  99.         }else{
  100.             $action = new TAction(array($this'onFechar'));
  101.             $action->setParameter('id'$param['id']);
  102.             $action->setParameter('controle'$param['controle']);
  103.             new TQuestion('Deseja realmente fechar a coleta?.'$action);
  104.         }    
  105.     }
  106. function onFechar($param)
  107. {
  108.     try
  109.     {
  110.         TTransaction::open('mysql');
  111.         $coleta = new SacColeta($param['id']);
  112.         $coleta->status 'F';
  113.         $coleta->controle $param['controle'];
  114.         $coleta->store();
  115.         TTransaction::close();
  116.         $action = new TAction(array('SacColetaList','onReload'));
  117.         new TMessage('info','Coleta fechada com sucesso!'$action);
  118.     }catch(Exception $e)
  119.     {
  120.         new TMessage('erro'$e->getMessage());
  121.     }
  122. function onQuestionCancel($param)
  123. {
  124.     $action = new TAction(array($this'onCancel'));
  125.     $action->setParameter('id'$param['id']);
  126.     new TQuestion('Deseja realmente cancelar a coleta?.'$action);
  127. }
  128. function onCancel($param)
  129. {
  130.     try
  131.     {
  132.         TTransaction::open('mysql');
  133.         $coleta = new SacColeta($param['id']);
  134.         $coleta->status 'C';
  135.         $coleta->store();
  136.         TTransaction::close();
  137.         $action = new TAction(array('SacColetaList','onReload'));
  138.         new TMessage('info','Coleta cancelada com sucesso!'$action);
  139.     }catch(Exception $e)
  140.     {
  141.         new TMessage('erro'$e->getMessage());
  142.     }
  143.     /**
  144.     * method onExitNota()
  145.     * Action to input nota
  146.     */
  147.     static function onExitNota($param)
  148.     {
  149.         try
  150.         {
  151.             TTransaction::open('sqlserver');
  152.             $nfscb = new Nfscb($param['nota_fiscal']);
  153.             if(!empty($nfscb))
  154.             {
  155.                 $object = new StdClass;
  156.                 $object->cod_cliente $nfscb->Cod_Cliente;
  157.                 TForm::sendData('form_SacColeta'$object);
  158.             }
  159.             
  160.             TTransaction::close();
  161.         }catch(Exception $e){
  162.             new TMessage('erro'$e->getMessage());
  163.         }
  164.     }
  165.     /**
  166.      * method onSave()
  167.      * Executed whenever the user clicks at the save button
  168.      */
  169.     public function onSave($param)
  170.     {
  171.         try
  172.         {
  173.             $object $this->form->getData();
  174.             print_r($object);
  175.             $this->form->validate();
  176.             $object $this->form->getData();
  177.             $this->form->setData($object);
  178.             TTransaction::open('mysql');
  179.             $sacColeta = new SacColeta;
  180.             TTransaction::close();
  181.             TTransaction::open('sqlserver');
  182.             
  183.             $cliente = new Clien($object->cod_cliente);
  184.             
  185.             if(!empty($object->nota_fiscal))
  186.             {
  187.                 $nfscb = new Nfscb($object->nota_fiscal);
  188.                 $sacColeta->nota_fiscal $object->nota_fiscal;
  189.                 $sacColeta->vendedor $nfscb->vendedor->Nome_Guerra;
  190.                 $sacColeta->operador $nfscb->vendedor->Nome_Guerra;
  191.                 if($nfscb->Cod_Cliente != $object->cod_cliente)
  192.                 {
  193.                     throw new Exception('Nota Fiscal não esta relacionada a esse cliente!'1);
  194.                 }
  195.             }
  196.             
  197.             $sacColeta->data_emissao date('Y-m-d');
  198.             $sacColeta->data_coleta $object->data_coleta;
  199.             $sacColeta->data_saida $object->data_saida;
  200.             $sacColeta->cod_cliente $object->cod_cliente;
  201.             $sacColeta->razao $cliente->Razao_Social;
  202.             $sacColeta->cnpj $cliente->Cgc_Cpf;
  203.             $sacColeta->endereco $cliente->Endereco;
  204.             $sacColeta->numero $cliente->Numero;
  205.             $sacColeta->bairro $cliente->bairro->Descricao;
  206.             $sacColeta->cidade $cliente->cidade->Descricao;
  207.             $sacColeta->estado $cliente->Cod_Estado;
  208.             $sacColeta->sac_protoc_tipo_id $object->sac_protoc_tipo_id;
  209.             $sacColeta->motivo $object->motivo;
  210.             $sacColeta->observacao $object->observacao;
  211.             TTransaction::close();
  212.             
  213.             TTransaction::open('mysql');
  214.             $sacColeta->protocolo date('dmy'). str_pad(rand(1,100),3,0,STR_PAD_LEFT) . $sacColeta->getLastID() + 1;
  215.             foreach ($object->sac_proced_id as $key => $value
  216.             {
  217.                 $sac_proc = new SacProcedimento($value);
  218.                 $sacColeta->addSacColetaProcedimento($sac_proc);
  219.             }
  220.             $sacColeta->store();
  221.             // close the transaction
  222.             TTransaction::close();
  223.             $pdf = new SacProtocoloDownload;
  224.             $pdf->protocoloPdfColeta($sacColeta->id);
  225.             $action = new TAction(array('SacColetaList','onReload'));
  226.             new TMessage('info'AdiantiCoreTranslator::translate('Record saved'), $action);
  227.             
  228.         }
  229.         catch (Exception $e// in case of exception
  230.         {
  231.             // get the form data
  232.             $object $this->form->getData();
  233.             
  234.             // fill the form with the active record data
  235.             $this->form->setData($object);
  236.             
  237.             // shows the exception error message
  238.             new TMessage('error'$e->getMessage());
  239.             
  240.             // undo all pending operations
  241.             TTransaction::rollback();
  242.         }
  243.     }
  244.      /**
  245.      * method onEdit()
  246.      * Executed whenever the user clicks at the edit button da datagrid
  247.      * @param  $param An array containing the GET ($_GET) parameters
  248.      */
  249.     public function onEdit($param)
  250.     {
  251.         try
  252.         {
  253.             if (empty($this->database))
  254.             {
  255.                 throw new Exception(AdiantiCoreTranslator::translate('^1 was not defined. You must call ^2 in ^3'AdiantiCoreTranslator::translate('Database'), 'setDatabase()'AdiantiCoreTranslator::translate('Constructor')));
  256.             }
  257.             
  258.             if (empty($this->activeRecord))
  259.             {
  260.                 throw new Exception(AdiantiCoreTranslator::translate('^1 was not defined. You must call ^2 in ^3''Active Record''setActiveRecord()'AdiantiCoreTranslator::translate('Constructor')));
  261.             }
  262.             
  263.             if (isset($param['key']))
  264.             {
  265.                 // get the parameter $key
  266.                 $key=$param['key'];
  267.                 
  268.                 // open a transaction with database
  269.                 TTransaction::open($this->database);
  270.                 
  271.                 $class $this->activeRecord;
  272.                 
  273.                 // instantiates object
  274.                 $object = new $class($key);
  275. // AQUI TIVE QUE FAZER ASSIM PARA PREENCHER O CAMPO TDBSelect.
  276.                 $object->sac_proced_id $object->getSacColetaProcedimentos();
  277.                 
  278.                 // fill the form with the active record data
  279.                 $this->form->setData($object);
  280.                 // close the transaction
  281.                 TTransaction::close();
  282.                 
  283.                 return $object;
  284.             }
  285.             else
  286.             {
  287.                 $this->form->clear();
  288.             }
  289.         }
  290.         catch (Exception $e// in case of exception
  291.         {
  292.             // shows the exception error message
  293.             new TMessage('error'$e->getMessage());
  294.             // undo all pending operations
  295.             TTransaction::rollback();
  296.         }
  297.     }
  298. }
  299. ?>

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


NR

O var_dump de $param na função onSave retorna esse campo?
HT

Sim, mas retorna vazio
HT

O sistema carrega o cliente no campo, mas na hora de salvar, informa o campo vazio.