Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Pegar valor da função "enableTotal" Olá pessoal, boa tarde. é possivel fazer um getValue() na funçao: Ou seja, fazer $col_valor->getValue() por exemplo. ...
EB
Pegar valor da função "enableTotal"  
Olá pessoal, boa tarde.
é possivel fazer um getValue() na funçao:

  1. <?php
  2. ...
  3.        $col_valor->enableTotal('sum''R$'2',''.');
  4. ...
  5. ?>


Ou seja, fazer $col_valor->getValue() por exemplo.

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


NR

Acho que não tem como. Você vai ter que recalcular esse valor de acordo com os itens que montam a grid.
EB

Entendi @Nataniel, a questão é que na 7.2 nao vem o onReload no mestre detalhe.
Já olhei no AdiantiMasterDetailTrait.php e nao vi o onReload pra eu copiar e usar lá.

Sabe como eu proceder?

Obrigado
NR

A função onReloadAlgumaCoisa geralmente fica dentro do próprio control do formulário. Se não tiver essa função, talvez você esteja usando outro modelo de mestre x detalhe.
EB

Estou usando esse modelo usando o Adianti Studio em:

Formularios -> Formulario mestre/detalhe;

Criou esse código abaixo e não tem o onReload:
  1. <?php
  2. use Adianti\Widget\Datagrid\TDataGridColumn;
  3. /**
  4.  * PagamentoNfForm Master/Detail
  5.  * @author  <your name here>
  6.  */
  7. class PagamentoNfForm extends TWindow
  8. {
  9.     protected $form// form
  10.     protected $detail_list;
  11.     
  12.     /**
  13.      * Page constructor
  14.      */
  15.     public function __construct()
  16.     {
  17.         parent::__construct();
  18.         
  19.         $this->labelTotal = new TLabel('');
  20.         // creates the form
  21.         $this->form = new BootstrapFormBuilder('form_PagamentoNf');
  22.         $this->form->setFormTitle('PagamentoNf');
  23.         
  24.         // master fields
  25.         $pnf_id = new TEntry('pnf_id');
  26.         $id_conta_pagar = new TEntry('id_conta_pagar');
  27.         $valor = new TNumeric('valor','2',',','.');
  28.         $valor_pago = new TNumeric('valor_pago','2',',','.');
  29.         $valor_saldo = new TNumeric('valor_saldo','2',',','.');
  30.         $valor->setNumericMask(2,',''.'true);
  31.         $valor_pago->setNumericMask(2,',''.'true);
  32.         $valor_saldo->setNumericMask(2,',''.'true);
  33.         // detail fields
  34.         $detail_uniqid = new THidden('detail_uniqid');
  35.         $detail_dpn_id = new THidden('detail_dpn_id');
  36.         $detail_id_conta_pagar_nf = new TEntry('detail_id_conta_pagar_nf');
  37.         $detail_data_pgto = new TDate('detail_data_pgto');
  38.         $detail_forma_pgto_id = new TDBCombo('detail_forma_pgto_id','patrimonial''TipoPagamento''tpag_id''tpag_nome''tpag_nome');
  39.         $detail_valor_pgto = new TEntry('detail_valor_pgto');
  40.         if (!empty($pnf_id))
  41.         {
  42.             $pnf_id->setEditable(FALSE);
  43.         }
  44.         
  45.         $id_conta_pagar->setValue(TSession::getValue('chave'));     
  46.         $valor->setvalue(TSession::getValue('valor'));
  47.         
  48.         // master fields
  49.               $row $this->form->addFields(
  50.             [new TLabel('Id'), $pnf_id],
  51.         [new TLabel('Conta'), $id_conta_pagar], 
  52.         [new TLabel('Valor'),$valor], 
  53.         [new TLabel('Valor Pago'),$valor_pago],
  54.         [new TLabel('Valor Saldo'),$valor_saldo
  55.           );
  56.          $row->layout = ['col-sm-2','col-sm-2','col-sm-2','col-sm-2','col-sm-2'];
  57.         // detail fields
  58.         $this->form->addContent( ['<h4>Details</h4><hr>'] );
  59.         $this->form->addFields( [$detail_uniqid] );
  60.         $this->form->addFields( [$detail_dpn_id] );
  61.         $add TButton::create('add', [$this'onDetailAdd'], 'Register''fa:plus-circle green');
  62.         $add->getAction()->setParameter('static','1');
  63.       
  64.         $row2 $this->form->addFields
  65.             [new TLabel('Conta'), $detail_id_conta_pagar_nf],
  66.             [new TLabel('Forma Pagamento'), $detail_forma_pgto_id],
  67.             [new TLabel('Data'), $detail_data_pgto],
  68.             [new TLabel('Vlr. Pgto'), $detail_valor_pgto],
  69.             [], 
  70.             [$add] );
  71.        $row2->layout = ['col-sm-2','col-sm-2','col-sm-2','col-sm-2','col-sm-2','col-sm-2'];
  72.         $this->detail_list = new BootstrapDatagridWrapper(new TDataGrid);
  73.         $this->detail_list->setId('DetPgtoNf_list');
  74.         $this->detail_list->generateHiddenFields();
  75.         $this->detail_list->style "min-width: 700px; width:100%;margin-bottom: 10px";
  76.         
  77.         // items
  78. $col_uniq               = new TDataGridColumn('uniqid''Uniqid''center');
  79. $col_dpn_id             = new TDataGridColumn('dpn_id''Id''center');
  80. $col_id_conta_pagar_nf  = new TDataGridColumn('id_conta_pagar_nf''Conta''left'100); 
  81. $col_forma_pagamento_id = new TDataGridColumn('forma_pgto_id''Forma Pagamento''left',100);
  82. $col_forma_pgto_nome    = new TDataGridColumn('forma_pgto_id''Forma Pagamento''left',100);
  83. $col_vlr_pgto           = new TDataGridColumn('valor_pgto''Vlr Pgto''left'100 );
  84. $col_data_pgto          = new TDataGridColumn('data_pgto''Data Pgto''left'50 );
  85.     $this->detail_list->addColumn($col_uniq           );
  86.     $this->detail_list->addColumn($col_dpn_id         );
  87.     $this->detail_list->addColumn($col_id_conta_pagar_nf );
  88.     $this->detail_list->addColumn($col_forma_pagamento_id);
  89.     $this->detail_list->addColumn($col_forma_pgto_nome);
  90.     $this->detail_list->addColumn($col_data_pgto      );
  91.     $this->detail_list->addColumn($col_vlr_pgto       );
  92.     $col_forma_pgto_nome->setTransformer(function($value) {
  93.         return TipoPagamento::findInTransaction('patrimonial'$value)->tpag_nome;
  94.        });
  95.        $col_vlr_pgto->enableTotal('sum''R$'2',''.');
  96.        
  97.       
  98.         $col_uniq->setVisibility(false);
  99.         $col_forma_pagamento_id->setVisibility(false);
  100.         $format_value = function($value) {
  101.             if (is_numeric($value)) {
  102.                 return 'R$ '.number_format($value2',''.');
  103.             }
  104.             return $value;
  105.         };
  106.         $col_vlr_pgto->setTransformer$format_value );
  107.         // detail actions
  108.         $action1 = new TDataGridAction([$this'onDetailEdit'] );
  109.         $action1->setFields( ['uniqid''*'] );
  110.         
  111.         $action2 = new TDataGridAction([$this'onDetailDelete']);
  112.         $action2->setField('uniqid');
  113.         
  114.         // add the actions to the datagrid
  115.         $this->detail_list->addAction($action1_t('Edit'), 'fa:edit blue');
  116.         $this->detail_list->addAction($action2_t('Delete'), 'far:trash-alt red');
  117.         
  118.         $this->detail_list->createModel();
  119.         
  120.         $panel = new TPanelGroup;
  121.         $panel->add($this->detail_list);
  122.         $panel->getBody()->style 'overflow-x:auto';
  123.         $this->form->addContent( [$panel] );
  124.         
  125.         $this->form->addAction'Save',  new TAction([$this'onSave'], ['static'=>'1']), 'fa:save green');
  126.         $this->form->addAction'Clear', new TAction([$this'onClear']), 'fa:eraser red');
  127.         
  128.         // create the page container
  129.         $container = new TVBox;
  130.         $container->style 'width: 100%';
  131.         // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  132.         $container->add($this->form);
  133.         $container->add($this->labelTotal);
  134.         parent::add($container);
  135.     }
  136.     
  137.     
  138.     /**
  139.      * Clear form
  140.      * @param $param URL parameters
  141.      */
  142.     public function onClear($param)
  143.     {
  144.         $this->form->clear(TRUE);
  145.     }
  146.     
  147.     /**
  148.      * Add detail item
  149.      * @param $param URL parameters
  150.      */
  151.     public function onDetailAdd$param )
  152.     {
  153.         try
  154.         {
  155.             $this->form->validate();
  156.             $data $this->form->getData();
  157.             
  158.             /** validation sample
  159.             if (empty($data->fieldX))
  160.             {
  161.                 throw new Exception('The field fieldX is required');
  162.             }
  163.             **/
  164.             
  165.             $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid uniqid();
  166.             
  167.             $grid_data = [];
  168.             $grid_data['uniqid'] = $uniqid;
  169.             $grid_data['dpn_id'] = $data->detail_dpn_id;
  170.             $grid_data['id_conta_pagar_nf'] = $data->id_conta_pagar;
  171.             $grid_data['data_pgto'] = $data->detail_data_pgto;
  172.             $grid_data['forma_pgto_id'] = $data->detail_forma_pgto_id;
  173.             $grid_data['valor_pgto'] = $data->detail_valor_pgto;
  174.             
  175.             // insert row dynamically
  176.             $row $this->detail_list->addItem( (object) $grid_data );
  177.             $row->id $uniqid;
  178.             
  179.             TDataGrid::replaceRowById('DetPgtoNf_list'$uniqid$row);
  180.             
  181.             // clear detail form fields
  182.             $data->detail_uniqid '';
  183.             $data->detail_dpn_id '';
  184.             $data->detail_id_conta_pagar_nf '';
  185.             $data->detail_data_pgto '';
  186.             $data->detail_forma_pgto_id '';
  187.             $data->detail_valor_pgto '';
  188.             
  189.             // send data, do not fire change/exit events
  190.             TForm::sendData'form_PagamentoNf'$datafalsefalse );
  191.     
  192.         }
  193.         catch (Exception $e)
  194.         {
  195.             $this->form->setData$this->form->getData());
  196.             new TMessage('error'$e->getMessage());
  197.         }
  198.     }
  199.     
  200.     /**
  201.      * Edit detail item
  202.      * @param $param URL parameters
  203.      */
  204.     public static function onDetailEdit$param )
  205.     {
  206.         $data = new stdClass;
  207.         $data->detail_uniqid $param['uniqid'];
  208.         $data->detail_dpn_id $param['dpn_id'];
  209.         $data->detail_id_conta_pagar_nf $param['id_conta_pagar'];
  210.         $data->detail_data_pgto $param['data_pgto'];
  211.         $data->detail_forma_pgto_id $param['forma_pgto_id'];
  212.         $data->detail_valor_pgto $param['valor_pgto'];
  213.         
  214.         // send data, do not fire change/exit events
  215.         TForm::sendData'form_PagamentoNf'$datafalsefalse );
  216.     }
  217.     
  218.     /**
  219.      * Delete detail item
  220.      * @param $param URL parameters
  221.      */
  222.     public static function onDetailDelete$param )
  223.     {
  224.         // clear detail form fields
  225.         $data = new stdClass;
  226.         $data->detail_uniqid '';
  227.         $data->detail_dpn_id '';
  228.         $data->detail_id_conta_pagar_nf '';
  229.         $data->detail_data_pgto '';
  230.         $data->detail_forma_pgto_id '';
  231.         $data->detail_valor_pgto '';
  232.         
  233.         // send data, do not fire change/exit events
  234.         TForm::sendData'form_PagamentoNf'$datafalsefalse );
  235.         
  236.         // remove row
  237.         TDataGrid::removeRowById('DetPgtoNf_list'$param['uniqid']);
  238.     }
  239.     
  240.     /**
  241.      * Load Master/Detail data from database to form
  242.      */
  243.     public function onEdit($param)
  244.     {
  245.         try
  246.         {
  247.             TTransaction::open('patrimonial');
  248.             
  249.             if (isset($param['key']))
  250.             {
  251.                 $key $param['key'];
  252.                 
  253.                 $object = new PagamentoNf($key);
  254.                 $items  DetPgtoNf::where('pagamento_nf_id''='$key)->load();
  255.                 
  256.                 foreach( $items as $item )
  257.                 {
  258.                     $item->uniqid uniqid();
  259.                     $row $this->detail_list->addItem$item );
  260.                     $row->id $item->uniqid;
  261.                 }
  262.                 $this->form->setData($object);
  263.                 TTransaction::close();
  264.             }
  265.             else
  266.             {
  267.                 $this->form->clear(TRUE);
  268.             }
  269.         }
  270.         catch (Exception $e// in case of exception
  271.         {
  272.             new TMessage('error'$e->getMessage());
  273.             TTransaction::rollback();
  274.         }
  275.     }
  276.     
  277.     /**
  278.      * Save the Master/Detail data from form to database
  279.      */
  280.     public function onSave($param)
  281.     {
  282.         try
  283.         {
  284.             // open a transaction with database
  285.             TTransaction::open('patrimonial');
  286.             
  287.             $data $this->form->getData();
  288.             $this->form->validate();
  289.             
  290.             $master = new PagamentoNf;
  291.             $master->fromArray( (array) $data);
  292.             $master->store();
  293.             
  294.             DetPgtoNf::where('pagamento_nf_id''='$master->pnf_id)->delete();
  295.             
  296.             if( $param['DetPgtoNf_list_id_conta_pagar_nf'] )
  297.             {
  298.                 foreach( $param['DetPgtoNf_list_id_conta_pagar_nf'] as $key => $item_id )
  299.                 {
  300.                     $detail = new DetPgtoNf;
  301.                     $detail->id_conta_pagar_nf  $param['DetPgtoNf_list_id_conta_pagar'][$key];
  302.                     $detail->data_pgto  $param['DetPgtoNf_list_data_pgto'][$key];
  303.                     $detail->forma_pgto_id  $param['DetPgtoNf_list_forma_pgto_id'][$key];
  304.                     $detail->valor_pgto  $param['DetPgtoNf_list_valor_pgto'][$key];
  305.                     $detail->pagamento_nf_id $master->pnf_id;
  306.                     $detail->store();
  307.                 }
  308.             }
  309.             TTransaction::close(); // close the transaction
  310.             
  311.             TForm::sendData('form_PagamentoNf', (object) ['id' => $master->pnf_id]);
  312.             
  313.             new TMessage('info'AdiantiCoreTranslator::translate('Record saved'));
  314.         }
  315.         catch (Exception $e// in case of exception
  316.         {
  317.             new TMessage('error'$e->getMessage());
  318.             $this->form->setData$this->form->getData() ); // keep form data
  319.             TTransaction::rollback();
  320.         }
  321.     }
  322. }
  323. ?>
</your>