Report pdf gruppo

MaurizioG

Nuovo Utente
8 Set 2024
1
0
1
Buongiorno,
articolo su Internet che fa proprio al caso mio.
Il problema è solo sui totali di colonna nelle tabelle create per gruppo.
Praticamente la prima tabella ha il totale giusto, le tabelle successive viene calcolato il totale precedente sommando i valori della tabella successiva e così via.
Io invece dovrei calcolare i totali per ogni singola tabella e alla fine del report il totale generale.
Premetto che mi sto approcciando a php da poco chiedo questo aiuto che sicuramente per molti di voi sarà un scherzo darmi la soluzione

Raggruppamenti​

Una delle funzionalità più utili dei report sono sicuramente i raggruppamenti, perché consentono di estrarre degli indicatori sintetici da una lunga fila di dati. Affinché si possano raggruppare i dati, è necessario che questi siano ordinati per la caratteristica che si vuole raggruppare. Nell’esempio sopra possiamo notare che i rapporti di vendita sono già ordinati per prodotto: non ci resta che creare un report che sfrutti questo raggruppamento:

<?php
include ('fpdf/fpdf.php');

define('EURO', chr(128));

function report_table_header($pdf) {
$pdf->SetFont('Helvetica', 'B', 10);
$pdf->Cell(30, 7, 'Cod. prodotto', 1);
$pdf->Cell(40, 7, 'Nome prodotto', 1);
$pdf->Cell(30, 7, 'Cod. cliente', 1);
$pdf->Cell(40, 7, 'Nome cliente', 1);
$pdf->Cell(40, 7, 'Prezzo pagato', 1);
$pdf->Ln();
}

function report_product_total($pdf, $productTotal) {
if (isset($productTotal)) {
$pdf->SetFont('Helvetica', 'B', 10);
$pdf->Cell(100, 7, '', 3);
$pdf->Cell(40, 7, 'Totale', 0, 0, 'R');
$pdf->Cell(40, 7, EURO . ' ' . number_format($productTotal, 2, ',', '.'), 1, 0, 'R');
$pdf->Ln();
}
}

// dati di test

NB: COPIARE LA SEZIONE DI DATI DALL'ESEMPIO N. 1

// crea PDF

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, 'Report vendite - per modello');
$pdf->Ln();

$pdf->Ln(5);

$pdf->SetFont('Helvetica', '', 10);

$lastProductCode = null;
$breakProduct = true;
$productTotal = null;

foreach($data as $row) {
$breakProduct = $row['product_code'] != $lastProductCode;

if ($breakProduct) {
// mostra totali del prodotto precedente (se c'è)
report_product_total($pdf, $productTotal);

// mostra titolo prodotto
$pdf->SetFont('Helvetica', 'B', 10);
$pdf->Cell(40, 10, $row['product_code'] . ' - ' . $row['product_name']);
$pdf->Ln();
// mostra header tabella
report_table_header($pdf);
}

$pdf->SetFont('Helvetica', '', 10);
$pdf->Cell(30, 7, $row['product_code'], 1);
$pdf->Cell(40, 7, $row['product_name'], 1);
$pdf->Cell(30, 7, $row['customer_code'], 1);
$pdf->Cell(40, 7, $row['customer_name'], 1);
// formattazione italiana
$pdf->Cell(40, 7, EURO . ' ' . number_format($row['amount'], 2, ',', '.'), 1, 0, 'R');
$pdf->Ln();

$lastProductCode = $row['product_code'];
$productTotal += $row['amount'];
}

// totale dell'ultimo prodotto
report_product_total($pdf, $productTotal);

$pdf->Output();


Potete aiutarmi a calcolare i parziali di ogni singola tabella grazie
 

Discussioni simili