RR
Ajuda com calculo.
Pessoal bom dia como sou novo com desenvolvimento com o adianti gostaria de uma ajuda dos demais colegas, o cenário e o seguinte: tenho que gerar um relatório onde ele pega os dados organiza por plano de contas esta organização eu consegui gerar no relatório já com os valores de cada item o problema que não estou conseguindo e na hora de fazer a varredura dos resultados mostrar a soma dos valores por grupo alguém poderia me dar uma ajuda segue o código abaixo:
Relatorio geral de contas.
47 ROCHA E SOARES LTDA Materiais de limpeza R$ 957.00
67 CAPITAL EMBALAGENS Materiais de limpeza R$ 364.74
166 ROCHA E SOARES LTDA Materiais de limpeza R$ 1130.28
172 CAPITAL EMBALAGENS Materiais de limpeza R$ 716.68
Total R$ ? obs: esta parte que não estou conseguindo fazer dar total por grupo.
- <?php
- use Adianti\Widget\Wrapper\TQuickForm;
- use Adianti\Widget\Form\TEntry;
- use Adianti\Widget\Wrapper\ ">TDBSeekButton;
- use Adianti\Widget\Wrapper\TDBCombo;
- use Adianti\Widget\Form\TRadioButton;
- use Adianti\Widget\Form\TRadioGroup;
- use Adianti\Widget\Wrapper\TDBEntry;
- use Adianti\Control\TAction;
- use Adianti\Widget\Dialog\TMessage;
- use Adianti\Database\TTransaction;
- use Adianti\Database\TRepository;
- use Adianti\Database\TCriteria;
- use Adianti\Database\TFilter;
- /**
- * PDF Designed Customer report
- *
- * @version 1.0
- * @package samples
- * @subpackage tutor
- * @author Pablo Dall'Oglio
- * @copyright Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
- * @license http://www.adianti.com.br/framework-license
- */
- class RelatorioAnalitico extends TPage
- {
- private $form; // form
- /**
- * Class constructor
- */
- function __construct()
- {
- parent::__construct();
- //cria o formulario
- $this->form = new TQuickForm('form_Contas_Report');
- $this->form->class = 'tform';
- $this->form->setFormTitle('Relatorio de Contas');
- //cria os campos
- $dt_inicio = new TDate('dt_inicio');
- $dt_fim = new TDate('dt_fim');
- $lbl_dtfin = new TLabel('Data final:');
- $this->form->addQuickFields('Período - Data inicial:', [$dt_inicio, $lbl_dtfin, $dt_fim]);
- //adiciona a��o
- $this->form->addQuickAction('Gerar Relatorio', new TAction(array($this, 'onGenerate')), 'fa:download blue');
- parent::add($this->form);
- }
- function onGenerate(){
- try
- {
- TTransaction::open('samples');
- $object = $this->form->getData();
- $repository1 = new TRepository('Plano');
- $repository2 = new TRepository('Contas');
- $criteria1 = new TCriteria;
- $criteria2 = new TCriteria;
- if($object->dt_inicio AND $object->dt_fim)// verifica se o campo foi preenchido
- {
- $criteria2->add(new TFilter('vencimento', 'between', ''.$object->dt_inicio.'', ''.$object->dt_fim.'', "order by plano_conta desc"));
- }
- //carrega os objetos
- $result1 = $repository1->load($criteria1);
- $result2 = $repository2->load($criteria2);
- $data = $this->form->getData();
- $this->form->validate();
- $designer = new TPDFDesigner;
- $designer->fromXml('app/reports/report.pdf.xml');
- $designer->generate();
- $fill = TRUE;
- $designer->gotoAnchorXY('details');
- $designer->SetFont('Arial', '', 10);
- $designer->setFillColorRGB( '#F9F9FF' );
- $designer->Ln(15);
- $designer->Image('app/images/logo.jpg', 25, 15, 150);
- $designer->Cell(100);
- $designer->Cell(0, 100,'Relatorio geral de contas.',0,1,'C');
- $designer->Ln(15);
- if($result2)
- {
- foreach ($result1 as $row1)
- {
- $plano = str_replace(" ","",$row1->descricao);
- $valorTotal = 0;
- foreach($result2 as $row2)
- {
- $valorTotal = 0;
- $plano_conta = str_replace(" ","",$row2->plano_conta);
- if($plano == $plano_conta)
- {
- $valorTotal += (float)$row2->valor;
- $designer->gotoAnchorX('details');
- $designer->Cell(30, 12, $row2->idcontas, 1, 0, 'C', $fill);
- $designer->Cell(230, 12, utf8_decode($row2->fornecedor), 1, 0, 'L', $fill);
- $designer->Cell(230, 12, utf8_decode($row2->plano_conta), 1, 0, 'L', $fill);
- $designer->Cell(120, 12, utf8_decode('R$ '.$row2->valor), 1, 0, 'L', $fill);
- $designer->Ln(12);
- // grid background
- $fill = !$fill;
- }
- }
- }
- $file = 'app/output/pdf_report.pdf';
- if (!file_exists($file) OR is_writable($file))
- {
- $designer->save($file);
- parent::openFile($file);
- }
- else
- {
- throw new Exception(_t('Permission denied') . ': ' . $file);
- }
- new TMessage('info', 'Relatório gerado. Por favor, habilite os popups no navegador (apenas na web).');
- // close the transaction
- TTransaction::close();
- }
- }
- catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback(); //desfaz opera�oes.
- }
- }
- }
- ?>
Relatorio geral de contas.
47 ROCHA E SOARES LTDA Materiais de limpeza R$ 957.00
67 CAPITAL EMBALAGENS Materiais de limpeza R$ 364.74
166 ROCHA E SOARES LTDA Materiais de limpeza R$ 1130.28
172 CAPITAL EMBALAGENS Materiais de limpeza R$ 716.68
Total R$ ? obs: esta parte que não estou conseguindo fazer dar total por grupo.
Você pode usar um array associativo para isso: