JF
Totalizar Mestre/Detalhe do Studio
Criei um Form Mestre/Detalhe com o Studio e acresci uma função totalizadora, assim:
Ao abrir-se (editar) o Form a soma está lá como o esperado, porém ao inserir algum dado a soma não está sendo executada dinamicamente. Acho que é na ação do botão Registrar que não mexi:
Calculo que seja no setParameter do getAction(), mas não encontrei nada sobre o assunto. Também pode ser no onDetailAdd (mostro abaixo), mas não tenho nenhuma ideia. Alguém tem sugestão?
Sugestões?
- <?php
- // ...
- $total = $this->detail_list->addColumn( new TDataGridColumn('faturadetalheitem', 'Valor(R$)', 'right', 100) );
- // define totais
- $total->setTotalFunction( function($values) {return array_sum((array) $values);});
- ?>
Ao abrir-se (editar) o Form a soma está lá como o esperado, porém ao inserir algum dado a soma não está sendo executada dinamicamente. Acho que é na ação do botão Registrar que não mexi:
- <?php
- $add = TButton::create('add', [$this, 'onDetailAdd'], 'Registrar', 'fa:plus-circle green');
- $add->getAction()->setParameter('static','1'); // Aqui?
- $this->form->addFields( [$add] );
- ?>
Calculo que seja no setParameter do getAction(), mas não encontrei nada sobre o assunto. Também pode ser no onDetailAdd (mostro abaixo), mas não tenho nenhuma ideia. Alguém tem sugestão?
- <?php
- public function onDetailAdd( $param )
- {
- try
- {
- $this->form->validate();
- $data = $this->form->getData();
- $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid : uniqid();
- $grid_data = [];
- $grid_data['uniqid'] = $uniqid;
- $grid_data['idfaturadetalheitem'] = $data->detail_idfaturadetalheitem;
- $grid_data['faturadetalhe'] = $data->detail_faturadetalhe;
- $grid_data['faturadetalheitem'] = $data->detail_faturadetalheitem;
- $row = $this->detail_list->addItem( (object) $grid_data );
- $row->id = $uniqid;
- TDataGrid::replaceRowById('FaturaDetalheItem_list', $uniqid, $row);
- $data->detail_uniqid = '';
- $data->detail_idfaturadetalheitem = '';
- $data->detail_faturadetalhe = '';
- $data->detail_faturadetalheitem = '';
- TForm::sendData( 'form_Fatura', $data, false, false );
- }
- catch (Exception $e)
- {
- $this->form->setData( $this->form->getData());
- new TMessage('error', $e->getMessage());
- }
- }
- ?>
Sugestões?
Segundo o changelog da 7.2 o totalizador deve funcionar também com telas estáticas, conforme exemplo do tutor:
https://adianti.com.br/framework_files/tutor/index.php?class=SaleForm
VALEU Nataniel. Obrigado!!!!