Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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: ...
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:

  1. <?php
  2. /**
  3.  * BensForm Master/Detail
  4.  * @author  <your name here>
  5.  */
  6. class BensForm extends TPage
  7. {
  8.     protected $form// form
  9.     protected $detail_list;
  10.     
  11.     /**
  12.      * Page constructor
  13.      */
  14.     public function __construct()
  15.     {
  16.         parent::__construct();
  17.         
  18.         
  19.         // creates the form
  20.         $this->form = new BootstrapFormBuilder('form_Bens');
  21.         $this->form->setFormTitle('<h4><b>Bens Patrimoniais</b></h4>');
  22.         //$this->form->style = "ont-weight:bold; font-style: ilatic;color: red;";
  23.         $this->form->setFieldSizes('100%');
  24.         $this->form->generateAria(); // automatic aria-label
  25.         
  26.         
  27.         // master fields
  28.         $id               = new TEntry('id');
  29.         $num_tombamento   = new TEntry('num_tombamento');
  30.         $descricao        = new TEntry('descricao');
  31.         $empresa_id       = new TDBUniqueSearch('empresa_id''patrimonio''Empresa''id''nome');
  32.         $data_receb       = new TDate('data_receb');
  33.         $tipoaquisicao_id = new TDBCombo('tipoaquisicao_id''patrimonio''Tipoaquisicao''id''descaquisicao');
  34.         $estadoprod_id    = new TDBCombo('estadoprod_id''patrimonio''Estadoprod''id''estadoprod');
  35.         $numdoc           = new TEntry('numdoc');
  36.         $num_notafiscal   = new TEntry('num_notafiscal');
  37.         $valordoben       = new TEntry('valordoben');
  38.         //$ativo            = new TEntry('ativo');
  39.         $tipotomb_id      = new TDBCombo('tipotomb_id''patrimonio''Tipotomb''id''descricao');
  40.         $tipoproduto_id   = new TDBCombo('tipoproduto_id''patrimonio''Tipoproduto''id''descricao');
  41.         $empresa_id->setMinLength(1);
  42.         // detail fields
  43.         $detail_uniqid      = new THidden('detail_uniqid');
  44.         $detail_id          = new THidden('detail_id');
  45.         $detail_numtermomov = new TEntry('detail_numtermomov');
  46.         $detail_datamov     = new TDate('detail_datamov');
  47.         $detail_destino_id  = new TDBCombo('detail_destino_id''patrimonio''Destino''id''nome');
  48.         
  49.         $detail_motivo_id   = new TDBCombo('detail_motivo_id''patrimonio''Motivo''id''motivo');
  50.         $detail_ativo       = new TCombo('detail_ativo');
  51.         
  52.         if (!empty($id))
  53.         {
  54.             $id->setEditable(FALSE);
  55.         }
  56.         
  57.         $detail_ativo->setSize('100%');
  58.         $detail_ativo->addItems( ['S' => 'S''N' => 'N'] );
  59.         
  60.         //definindo valor inicial
  61.         $detail_ativo->setValue('S');
  62.         
  63.         //
  64.         //$detail_destino_id->setMinLength(1);
  65.         //$detail_motivo_id->setMinLength(1);
  66.         
  67.         $row $this->form->addFields( [ new TLabel('<b>Codigo</b>')        ,   $id ],
  68.                                        [ new TLabel('<b>Num.Tombamento</b>'),   $num_tombamento ],
  69.                                        [ new TLabel('<b>Descrição</b>')     ,   $descricao ] );
  70.         $row->layout = ['col-sm-2''col-sm-2''col-sm-8' ];
  71.         
  72.         $row $this->form->addFields( [ new TLabel('<b>Empresa</b>'),  $empresa_id ] );
  73.         $row->layout = ['col-sm-12'];
  74.         
  75.         $row $this->form->addFields( [ new TLabel('<b>Data do Receb.</b>')    , $data_receb ],
  76.                                        [ new TLabel('<b>Tipo Aquisição</b>')    , $tipoaquisicao_id ],
  77.                                        [ new TLabel('<b>Estado do Produto</b>') , $estadoprod_id ],
  78.                                        [ new TLabel('<b>Numero Doc.</b>')       , $numdoc ] );
  79.         $row->layout = ['col-sm-3''col-sm-3''col-sm-3','col-sm-2'];
  80.                                        
  81.         $row $this->form->addFields( [ new TLabel('<b>N. Fiscal</b>')       ,  $num_notafiscal ],
  82.                                        [ new TLabel('<b>Valor do Produto</b>'),  $valordoben ],
  83.                                        [ new TLabel('<b>Tp. Patrim.</b>')     ,  $tipotomb_id ],
  84.                                        [ new TLabel('<b>Tp. do Produto</b>')  ,  $tipoproduto_id ]);
  85.         $row->layout = [ 'col-sm-2''col-sm-2','col-sm-3''col-sm-2' ];
  86.         
  87.         // detail fields
  88.         //$this->form->addContent( ['<br> </br>'] );
  89.         $this->form->addContent( ['<h4><b>Movimentação</b></h4>'] );
  90.         $this->form->addFields( [$detail_uniqid] );
  91.         $this->form->addFields( [$detail_id] );
  92.         
  93.         $add TButton::create('add', [$this'onDetailAdd'], 'Incluir''fa:plus-circle green');
  94.         $add->getAction()->setParameter('static','1');
  95.         $row $this->form->addFields( [ new TLabel('<b>N.Termo</b>')     , $detail_numtermomov ],
  96.                                        [ new TLabel('<b>Data do Mov.</b>'), $detail_datamov ],
  97.                                        [ new TLabel('<b>Destino</b>')     , $detail_destino_id ],
  98.                                        [ new TLabel('<b>Motivo</b>')      , $detail_motivo_id ],
  99.                                        [ new TLabel('<b>Ativo</b>')       , $detail_ativo ],
  100.                                        [ new TLabel('')                   , $add]);
  101.                                        
  102.         $row->layout = [ 'col-sm-2''col-sm-2','col-sm-3''col-sm-3','col-sm-1','col-sm-1','col-sm-1'];                               
  103.         
  104.         /*
  105.         $add = TButton::create('add', [$this, 'onDetailAdd'], 'Incluir Mov.', 'fa:plus-circle green');
  106.         $add->getAction()->setParameter('static','1');
  107.         $this->form->addFields( [], [$add] );
  108.         */
  109.         $this->detail_list = new BootstrapDatagridWrapper(new TDataGrid);
  110.         $this->detail_list->setId('Movimentacao_list');
  111.         $this->detail_list->generateHiddenFields();
  112.         $this->detail_list->style "min-width: 700px; width:100%;margin-bottom: 10px";
  113.         
  114.         // items
  115.         $this->detail_list->addColumn( new TDataGridColumn('uniqid''Uniqid''center') )->setVisibility(false);
  116.         $this->detail_list->addColumn( new TDataGridColumn('id''Id''center') )->setVisibility(false);
  117.         $this->detail_list->addColumn( new TDataGridColumn('numtermomov''N.Termo''left'10) );
  118.         $this->detail_list->addColumn( new TDataGridColumn('datamov''Data.Mov''left'50) );
  119.         $this->detail_list->addColumn( new TDataGridColumn('destino_id''ID''left'10) );
  120.         $this->detail_list->addColumn( new TDataGridColumn('destino->nome''Destino''left'100) );
  121.         $this->detail_list->addColumn( new TDataGridColumn('motivo_id''M.ID''left'10) );
  122.         $this->detail_list->addColumn( new TDataGridColumn('motivo->motivo''Motivo''left'100) );
  123.         $this->detail_list->addColumn( new TDataGridColumn('ativo''Ativo''left'10) );
  124.         // detail actions
  125.         $action1 = new TDataGridAction([$this'onDetailEdit'] );
  126.         $action1->setFields( ['uniqid''*'] );
  127.         
  128.         $action2 = new TDataGridAction([$this'onDetailDelete']);
  129.         $action2->setField('uniqid');
  130.         
  131.         // add the actions to the datagrid
  132.         $this->detail_list->addAction($action1_t('Edit'), 'fa:edit blue');
  133.         $this->detail_list->addAction($action2_t('Delete'), 'far:trash-alt red');
  134.         
  135.         $this->detail_list->createModel();
  136.         
  137.         $panel = new TPanelGroup;
  138.         $panel->add($this->detail_list);
  139.         $panel->getBody()->style 'overflow-x:auto';
  140.         $this->form->addContent( [$panel] );
  141.         
  142.         $this->form->addAction'Save',  new TAction([$this'onSave'], ['static'=>'1']), 'fa:save green');
  143.         $this->form->addAction'Clear', new TAction([$this'onClear']), 'fa:eraser red');
  144.         $this->form->addActionLink('Voltar', new TAction(array('BensList','onReload')),'fa:table blue');
  145.         
  146.         // create the page container
  147.         $container = new TVBox;
  148.         $container->style 'width: 100%';
  149.         // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  150.         $container->add($this->form);
  151.         parent::add($container);
  152.     }
  153.     
  154.     
  155.     /**
  156.      * Clear form
  157.      * @param $param URL parameters
  158.      */
  159.     public function onClear($param)
  160.     {
  161.         $this->form->clear(TRUE);
  162.     }
  163.     
  164.     /**
  165.      * Add detail item
  166.      * @param $param URL parameters
  167.      */
  168.     public function onDetailAdd$param )
  169.     {
  170.         try
  171.         {
  172.             $this->form->validate();
  173.             $data $this->form->getData();
  174.             
  175.             /** validation sample
  176.             if (empty($data->fieldX))
  177.             {
  178.                 throw new Exception('The field fieldX is required');
  179.             }
  180.             **/
  181.             
  182.             $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid uniqid();
  183.             
  184.             echo '<pre>';
  185.             print_r($data);
  186.             echo '</pre>';
  187.             
  188.             $grid_data = [];
  189.             $grid_data['uniqid']      = $uniqid;
  190.             $grid_data['id']          = $data->detail_id;
  191.             $grid_data['numtermomov'] = $data->detail_numtermomov;
  192.             $grid_data['datamov']     = $data->detail_datamov;
  193.             $grid_data['destino_id']  = $data->detail_destino_id;   //.' - '.$data->destino->nome;
  194.             $grid_data['motivo_id']   = $data->detail_motivo_id;
  195.             $grid_data['ativo']       = $data->detail_ativo;
  196.             
  197.             // insert row dynamically
  198.             $row $this->detail_list->addItem( (object) $grid_data );
  199.             $row->id $uniqid;
  200.             
  201.             TDataGrid::replaceRowById('Movimentacao_list'$uniqid$row);
  202.             
  203.             // clear detail form fields
  204.             $data->detail_uniqid '';
  205.             $data->detail_id '';
  206.             $data->detail_numtermomov '';
  207.             $data->detail_datamov '';
  208.             $data->detail_destino_id '';
  209.             $data->detail_motivo_id '';
  210.             $data->detail_ativo '';
  211.             
  212.             // send data, do not fire change/exit events
  213.             TForm::sendData'form_Bens'$datafalsefalse );
  214.         }
  215.         catch (Exception $e)
  216.         {
  217.             $this->form->setData$this->form->getData());
  218.             new TMessage('error'$e->getMessage());
  219.         }
  220.     }
  221.     
  222.     /**
  223.      * Edit detail item
  224.      * @param $param URL parameters
  225.      */
  226.     public static function onDetailEdit$param )
  227.     {
  228.         //echo'<pre>';
  229.         //print_r($param);
  230.         //echo'<pre>';
  231.         
  232.         $data = new stdClass;
  233.         $data->detail_uniqid      $param['uniqid'];
  234.         $data->detail_id          $param['id'];
  235.         $data->detail_numtermomov $param['numtermomov'];
  236.         $data->detail_datamov     $param['datamov'];
  237.         $data->detail_destino_id  $param['destino_id'];
  238.         $data->detail_motivo_id   $param['motivo_id'];
  239.         $data->detail_ativo       $param['ativo'];
  240.         
  241.         // send data, do not fire change/exit events
  242.         TForm::sendData'form_Bens'$datafalsefalse );
  243.     }
  244.     
  245.     /**
  246.      * Delete detail item
  247.      * @param $param URL parameters
  248.      */
  249.     public static function onDetailDelete$param )
  250.     {
  251.         // clear detail form fields
  252.         $data = new stdClass;
  253.         $data->detail_uniqid '';
  254.         $data->detail_id '';
  255.         $data->detail_numtermomov '';
  256.         $data->detail_datamov '';
  257.         $data->detail_destino_id '';
  258.         $data->detail_motivo_id '';
  259.         $data->detail_ativo '';
  260.         
  261.         // send data, do not fire change/exit events
  262.         TForm::sendData'form_Bens'$datafalsefalse );
  263.         
  264.         // remove row
  265.         TDataGrid::removeRowById('Movimentacao_list'$param['uniqid']);
  266.     }
  267.     
  268.     /**
  269.      * Load Master/Detail data from database to form
  270.      */
  271.     public function onEdit($param)
  272.     {
  273.         try
  274.         {
  275.             TTransaction::open('patrimonio');
  276.             
  277.             if (isset($param['key']))
  278.             {
  279.                 $key $param['key'];
  280.                 
  281.                 $object = new Bens($key);
  282.                 $items  Movimentacao::where('bens_id''='$key)->load();
  283.                 
  284.                 foreach( $items as $item )
  285.                 {
  286.                     $item->uniqid uniqid();
  287.                     $row $this->detail_list->addItem$item );
  288.                     $row->id $item->uniqid;
  289.                 }
  290.                 $this->form->setData($object);
  291.                 TTransaction::close();
  292.             }
  293.             else
  294.             {
  295.                 $this->form->clear(TRUE);
  296.             }
  297.         }
  298.         catch (Exception $e// in case of exception
  299.         {
  300.             new TMessage('error'$e->getMessage());
  301.             TTransaction::rollback();
  302.         }
  303.     }
  304.     
  305.     /**
  306.      * Save the Master/Detail data from form to database
  307.      */
  308.     public function onSave($param)
  309.     {
  310.         try
  311.         {
  312.             // open a transaction with database
  313.             TTransaction::open('patrimonio');
  314.             
  315.             $data $this->form->getData();
  316.             $this->form->validate();
  317.             
  318.             $master = new Bens;
  319.             $master->fromArray( (array) $data);
  320.             $master->store();
  321.             
  322.             Movimentacao::where('bens_id''='$master->id)->delete();
  323.             
  324.             if( $param['Movimentacao_list_numtermomov'] ?? false )
  325.             {
  326.                 foreach( $param['Movimentacao_list_numtermomov'] as $key => $item_id )
  327.                 {
  328.                     $detail = new Movimentacao;
  329.                     $detail->numtermomov $param['Movimentacao_list_numtermomov'][$key];
  330.                     $detail->datamov     $param['Movimentacao_list_datamov'][$key];
  331.                     $detail->destino_id  $param['Movimentacao_list_destino_id'][$key];
  332.                     $detail->motivo_id   $param['Movimentacao_list_motivo_id'][$key];
  333.                     $detail->ativo       $param['Movimentacao_list_ativo'][$key];
  334.                     $detail->bens_id $master->id;
  335.                     $detail->store();
  336.                 }
  337.             }
  338.              
  339.             TTransaction::close(); // close the transaction
  340.             
  341.             TForm::sendData('form_Bens', (object) ['id' => $master->id]);
  342.             
  343.             new TMessage('info'AdiantiCoreTranslator::translate('Record saved'));
  344.         }
  345.         catch (Exception $e// in case of exception
  346.         {
  347.             new TMessage('error'$e->getMessage());
  348.             $this->form->setData$this->form->getData() ); // keep form data
  349.             TTransaction::rollback();
  350.         }
  351.     }
  352. }
  353. stdClass Object
  354. (
  355.     [id] => 9
  356.     [num_tombamento] => 126621
  357.     [descricao] => Birô com 02 gavetas
  358.     [empresa_id] => 1
  359.     [data_receb] => 2021-08-02
  360.     [tipoaquisicao_id] => 2
  361.     [estadoprod_id] => 1
  362.     [numdoc] => S/N
  363.     [num_notafiscal] => S/N
  364.     [valordoben] => 0
  365.     [tipotomb_id] => 2
  366.     [tipoproduto_id] => 107
  367.     [detail_uniqid] => 611eef3f542f0
  368.     [detail_id] => 6
  369.     [detail_numtermomov] => 3
  370.     [detail_datamov] => 2021-08-02
  371.     [detail_destino_id] => 1
  372.     [detail_motivo_id] => 1
  373.     [detail_ativo] => S
  374. )

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)


NR

Você pode usar uns transformer como no exemplo do tutor:
https://adianti.com.br/framework_files/tutor/index.php?class=SaleForm