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.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto 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>