MO
Incluir nome no grid
Pessoal tenho uma entrada de dados mestre/detalhe, no detalhe entro com informações só que queria que mostrasse o nome do destino, quando edito um registro ele mostra, mas quando incluo o movimento ele só mostra o ID, código abaixo:
- <?php
- /**
- * BensForm Master/Detail
- * @author <your name here>
- */
- class BensForm extends TPage
- {
- protected $form; // form
- protected $detail_list;
- /**
- * Page constructor
- */
- public function __construct()
- {
- parent::__construct();
- // creates the form
- $this->form = new BootstrapFormBuilder('form_Bens');
- $this->form->setFormTitle('<h4><b>Bens Patrimoniais</b></h4>');
- //$this->form->style = "ont-weight:bold; font-style: ilatic;color: red;";
- $this->form->setFieldSizes('100%');
- $this->form->generateAria(); // automatic aria-label
- // master fields
- $id = new TEntry('id');
- $num_tombamento = new TEntry('num_tombamento');
- $descricao = new TEntry('descricao');
- $empresa_id = new TDBUniqueSearch('empresa_id', 'patrimonio', 'Empresa', 'id', 'nome');
- $data_receb = new TDate('data_receb');
- $tipoaquisicao_id = new TDBCombo('tipoaquisicao_id', 'patrimonio', 'Tipoaquisicao', 'id', 'descaquisicao');
- $estadoprod_id = new TDBCombo('estadoprod_id', 'patrimonio', 'Estadoprod', 'id', 'estadoprod');
- $numdoc = new TEntry('numdoc');
- $num_notafiscal = new TEntry('num_notafiscal');
- $valordoben = new TEntry('valordoben');
- //$ativo = new TEntry('ativo');
- $tipotomb_id = new TDBCombo('tipotomb_id', 'patrimonio', 'Tipotomb', 'id', 'descricao');
- $tipoproduto_id = new TDBCombo('tipoproduto_id', 'patrimonio', 'Tipoproduto', 'id', 'descricao');
- $empresa_id->setMinLength(1);
- // detail fields
- $detail_uniqid = new THidden('detail_uniqid');
- $detail_id = new THidden('detail_id');
- $detail_numtermomov = new TEntry('detail_numtermomov');
- $detail_datamov = new TDate('detail_datamov');
- $detail_destino_id = new TDBCombo('detail_destino_id', 'patrimonio', 'Destino', 'id', 'nome');
- $detail_motivo_id = new TDBCombo('detail_motivo_id', 'patrimonio', 'Motivo', 'id', 'motivo');
- $detail_ativo = new TCombo('detail_ativo');
- if (!empty($id))
- {
- $id->setEditable(FALSE);
- }
- $detail_ativo->setSize('100%');
- $detail_ativo->addItems( ['S' => 'S', 'N' => 'N'] );
- //definindo valor inicial
- $detail_ativo->setValue('S');
- //
- //$detail_destino_id->setMinLength(1);
- //$detail_motivo_id->setMinLength(1);
- $row = $this->form->addFields( [ new TLabel('<b>Codigo</b>') , $id ],
- [ new TLabel('<b>Num.Tombamento</b>'), $num_tombamento ],
- [ new TLabel('<b>Descrição</b>') , $descricao ] );
- $row->layout = ['col-sm-2', 'col-sm-2', 'col-sm-8' ];
- $row = $this->form->addFields( [ new TLabel('<b>Empresa</b>'), $empresa_id ] );
- $row->layout = ['col-sm-12'];
- $row = $this->form->addFields( [ new TLabel('<b>Data do Receb.</b>') , $data_receb ],
- [ new TLabel('<b>Tipo Aquisição</b>') , $tipoaquisicao_id ],
- [ new TLabel('<b>Estado do Produto</b>') , $estadoprod_id ],
- [ new TLabel('<b>Numero Doc.</b>') , $numdoc ] );
- $row->layout = ['col-sm-3', 'col-sm-3', 'col-sm-3','col-sm-2'];
- $row = $this->form->addFields( [ new TLabel('<b>N. Fiscal</b>') , $num_notafiscal ],
- [ new TLabel('<b>Valor do Produto</b>'), $valordoben ],
- [ new TLabel('<b>Tp. Patrim.</b>') , $tipotomb_id ],
- [ new TLabel('<b>Tp. do Produto</b>') , $tipoproduto_id ]);
- $row->layout = [ 'col-sm-2', 'col-sm-2','col-sm-3', 'col-sm-2' ];
- // detail fields
- //$this->form->addContent( ['<br> </br>'] );
- $this->form->addContent( ['<h4><b>Movimentação</b></h4>'] );
- $this->form->addFields( [$detail_uniqid] );
- $this->form->addFields( [$detail_id] );
- $add = TButton::create('add', [$this, 'onDetailAdd'], 'Incluir', 'fa:plus-circle green');
- $add->getAction()->setParameter('static','1');
- $row = $this->form->addFields( [ new TLabel('<b>N.Termo</b>') , $detail_numtermomov ],
- [ new TLabel('<b>Data do Mov.</b>'), $detail_datamov ],
- [ new TLabel('<b>Destino</b>') , $detail_destino_id ],
- [ new TLabel('<b>Motivo</b>') , $detail_motivo_id ],
- [ new TLabel('<b>Ativo</b>') , $detail_ativo ],
- [ new TLabel('') , $add]);
- $row->layout = [ 'col-sm-2', 'col-sm-2','col-sm-3', 'col-sm-3','col-sm-1','col-sm-1','col-sm-1'];
- /*
- $add = TButton::create('add', [$this, 'onDetailAdd'], 'Incluir Mov.', 'fa:plus-circle green');
- $add->getAction()->setParameter('static','1');
- $this->form->addFields( [], [$add] );
- */
- $this->detail_list = new BootstrapDatagridWrapper(new TDataGrid);
- $this->detail_list->setId('Movimentacao_list');
- $this->detail_list->generateHiddenFields();
- $this->detail_list->style = "min-width: 700px; width:100%;margin-bottom: 10px";
- // items
- $this->detail_list->addColumn( new TDataGridColumn('uniqid', 'Uniqid', 'center') )->setVisibility(false);
- $this->detail_list->addColumn( new TDataGridColumn('id', 'Id', 'center') )->setVisibility(false);
- $this->detail_list->addColumn( new TDataGridColumn('numtermomov', 'N.Termo', 'left', 10) );
- $this->detail_list->addColumn( new TDataGridColumn('datamov', 'Data.Mov', 'left', 50) );
- $this->detail_list->addColumn( new TDataGridColumn('destino_id', 'ID', 'left', 10) );
- $this->detail_list->addColumn( new TDataGridColumn('destino->nome', 'Destino', 'left', 100) );
- $this->detail_list->addColumn( new TDataGridColumn('motivo_id', 'M.ID', 'left', 10) );
- $this->detail_list->addColumn( new TDataGridColumn('motivo->motivo', 'Motivo', 'left', 100) );
- $this->detail_list->addColumn( new TDataGridColumn('ativo', 'Ativo', 'left', 10) );
- // detail actions
- $action1 = new TDataGridAction([$this, 'onDetailEdit'] );
- $action1->setFields( ['uniqid', '*'] );
- $action2 = new TDataGridAction([$this, 'onDetailDelete']);
- $action2->setField('uniqid');
- // add the actions to the datagrid
- $this->detail_list->addAction($action1, _t('Edit'), 'fa:edit blue');
- $this->detail_list->addAction($action2, _t('Delete'), 'far:trash-alt red');
- $this->detail_list->createModel();
- $panel = new TPanelGroup;
- $panel->add($this->detail_list);
- $panel->getBody()->style = 'overflow-x:auto';
- $this->form->addContent( [$panel] );
- $this->form->addAction( 'Save', new TAction([$this, 'onSave'], ['static'=>'1']), 'fa:save green');
- $this->form->addAction( 'Clear', new TAction([$this, 'onClear']), 'fa:eraser red');
- $this->form->addActionLink('Voltar', new TAction(array('BensList','onReload')),'fa:table blue');
- // create the page container
- $container = new TVBox;
- $container->style = 'width: 100%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- parent::add($container);
- }
- /**
- * Clear form
- * @param $param URL parameters
- */
- public function onClear($param)
- {
- $this->form->clear(TRUE);
- }
- /**
- * Add detail item
- * @param $param URL parameters
- */
- public function onDetailAdd( $param )
- {
- try
- {
- $this->form->validate();
- $data = $this->form->getData();
- /** validation sample
- if (empty($data->fieldX))
- {
- throw new Exception('The field fieldX is required');
- }
- **/
- $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid : uniqid();
- echo '<pre>';
- print_r($data);
- echo '</pre>';
- $grid_data = [];
- $grid_data['uniqid'] = $uniqid;
- $grid_data['id'] = $data->detail_id;
- $grid_data['numtermomov'] = $data->detail_numtermomov;
- $grid_data['datamov'] = $data->detail_datamov;
- $grid_data['destino_id'] = $data->detail_destino_id; //.' - '.$data->destino->nome;
- $grid_data['motivo_id'] = $data->detail_motivo_id;
- $grid_data['ativo'] = $data->detail_ativo;
- // insert row dynamically
- $row = $this->detail_list->addItem( (object) $grid_data );
- $row->id = $uniqid;
- TDataGrid::replaceRowById('Movimentacao_list', $uniqid, $row);
- // clear detail form fields
- $data->detail_uniqid = '';
- $data->detail_id = '';
- $data->detail_numtermomov = '';
- $data->detail_datamov = '';
- $data->detail_destino_id = '';
- $data->detail_motivo_id = '';
- $data->detail_ativo = '';
- // send data, do not fire change/exit events
- TForm::sendData( 'form_Bens', $data, false, false );
- }
- catch (Exception $e)
- {
- $this->form->setData( $this->form->getData());
- new TMessage('error', $e->getMessage());
- }
- }
- /**
- * Edit detail item
- * @param $param URL parameters
- */
- public static function onDetailEdit( $param )
- {
- //echo'<pre>';
- //print_r($param);
- //echo'<pre>';
- $data = new stdClass;
- $data->detail_uniqid = $param['uniqid'];
- $data->detail_id = $param['id'];
- $data->detail_numtermomov = $param['numtermomov'];
- $data->detail_datamov = $param['datamov'];
- $data->detail_destino_id = $param['destino_id'];
- $data->detail_motivo_id = $param['motivo_id'];
- $data->detail_ativo = $param['ativo'];
- // send data, do not fire change/exit events
- TForm::sendData( 'form_Bens', $data, false, false );
- }
- /**
- * Delete detail item
- * @param $param URL parameters
- */
- public static function onDetailDelete( $param )
- {
- // clear detail form fields
- $data = new stdClass;
- $data->detail_uniqid = '';
- $data->detail_id = '';
- $data->detail_numtermomov = '';
- $data->detail_datamov = '';
- $data->detail_destino_id = '';
- $data->detail_motivo_id = '';
- $data->detail_ativo = '';
- // send data, do not fire change/exit events
- TForm::sendData( 'form_Bens', $data, false, false );
- // remove row
- TDataGrid::removeRowById('Movimentacao_list', $param['uniqid']);
- }
- /**
- * Load Master/Detail data from database to form
- */
- public function onEdit($param)
- {
- try
- {
- TTransaction::open('patrimonio');
- if (isset($param['key']))
- {
- $key = $param['key'];
- $object = new Bens($key);
- $items = Movimentacao::where('bens_id', '=', $key)->load();
- foreach( $items as $item )
- {
- $item->uniqid = uniqid();
- $row = $this->detail_list->addItem( $item );
- $row->id = $item->uniqid;
- }
- $this->form->setData($object);
- TTransaction::close();
- }
- else
- {
- $this->form->clear(TRUE);
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- /**
- * Save the Master/Detail data from form to database
- */
- public function onSave($param)
- {
- try
- {
- // open a transaction with database
- TTransaction::open('patrimonio');
- $data = $this->form->getData();
- $this->form->validate();
- $master = new Bens;
- $master->fromArray( (array) $data);
- $master->store();
- Movimentacao::where('bens_id', '=', $master->id)->delete();
- if( $param['Movimentacao_list_numtermomov'] ?? false )
- {
- foreach( $param['Movimentacao_list_numtermomov'] as $key => $item_id )
- {
- $detail = new Movimentacao;
- $detail->numtermomov = $param['Movimentacao_list_numtermomov'][$key];
- $detail->datamov = $param['Movimentacao_list_datamov'][$key];
- $detail->destino_id = $param['Movimentacao_list_destino_id'][$key];
- $detail->motivo_id = $param['Movimentacao_list_motivo_id'][$key];
- $detail->ativo = $param['Movimentacao_list_ativo'][$key];
- $detail->bens_id = $master->id;
- $detail->store();
- }
- }
- TTransaction::close(); // close the transaction
- TForm::sendData('form_Bens', (object) ['id' => $master->id]);
- new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback();
- }
- }
- }
- stdClass Object
- (
- [id] => 9
- [num_tombamento] => 126621
- [descricao] => Birô com 02 gavetas
- [empresa_id] => 1
- [data_receb] => 2021-08-02
- [tipoaquisicao_id] => 2
- [estadoprod_id] => 1
- [numdoc] => S/N
- [num_notafiscal] => S/N
- [valordoben] => 0
- [tipotomb_id] => 2
- [tipoproduto_id] => 107
- [detail_uniqid] => 611eef3f542f0
- [detail_id] => 6
- [detail_numtermomov] => 3
- [detail_datamov] => 2021-08-02
- [detail_destino_id] => 1
- [detail_motivo_id] => 1
- [detail_ativo] => S
- )
Você pode usar uns transformer como no exemplo do tutor:
https://adianti.com.br/framework_files/tutor/index.php?class=SaleForm