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 ...
JF
Totalizar Mestre/Detalhe do Studio  
Criei um Form Mestre/Detalhe com o Studio e acresci uma função totalizadora, assim:
 
  1. <?php
  2. // ...
  3. $total = $this->detail_list->addColumn( new TDataGridColumn('faturadetalheitem', 'Valor(R$)', 'right', 100) );
  4. // define totais
  5. $total->setTotalFunction( function($values) {return array_sum((array) $values);});
  6. ?>

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:
 
  1. <?php
  2. $add = TButton::create('add', [$this, 'onDetailAdd'], 'Registrar', 'fa:plus-circle green');
  3. $add->getAction()->setParameter('static','1'); // Aqui?
  4. $this->form->addFields( [$add] );
  5. ?>

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?
 
  1. <?php
  2. public function onDetailAdd( $param )
  3. {
  4. try
  5. {
  6. $this->form->validate();
  7. $data = $this->form->getData();
  8. $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid : uniqid();
  9. $grid_data = [];
  10. $grid_data['uniqid'] = $uniqid;
  11. $grid_data['idfaturadetalheitem'] = $data->detail_idfaturadetalheitem;
  12. $grid_data['faturadetalhe'] = $data->detail_faturadetalhe;
  13. $grid_data['faturadetalheitem'] = $data->detail_faturadetalheitem;
  14. $row = $this->detail_list->addItem( (object) $grid_data );
  15. $row->id = $uniqid;
  16. TDataGrid::replaceRowById('FaturaDetalheItem_list', $uniqid, $row);
  17. $data->detail_uniqid = '';
  18. $data->detail_idfaturadetalheitem = '';
  19. $data->detail_faturadetalhe = '';
  20. $data->detail_faturadetalheitem = '';
  21. TForm::sendData( 'form_Fatura', $data, false, false );
  22. }
  23. catch (Exception $e)
  24. {
  25. $this->form->setData( $this->form->getData());
  26. new TMessage('error', $e->getMessage());
  27. }
  28. }
  29. ?>

Sugestões?

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (2)


NR

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
JF

VALEU Nataniel. Obrigado!!!!