Files
alrahma_sunday_school_api/app/Services/Finance/FinancialPdfReportService.php
T
2026-06-08 23:30:22 -04:00

61 lines
2.2 KiB
PHP

<?php
namespace App\Services\Finance;
class FinancialPdfReportService
{
public function __construct(private FinancialChartService $charts) {}
public function buildPdf(array $summary): string
{
$pdf = new \FPDF;
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(0, 10, 'Financial Report for School Year: '.($summary['schoolYear'] ?? ''), 0, 1, 'C');
$pdf->Ln(10);
$pdf->SetFont('Arial', 'B', 12);
$pdf->Cell(130, 10, 'Description', 1);
$pdf->Cell(60, 10, 'Amount (USD)', 1);
$pdf->Ln();
$rows = [
'Total Charges' => $summary['totalCharges'] ?? 0,
'Total Extra Charges' => $summary['totalExtraCharges'] ?? 0,
'Total Discounts' => $summary['totalDiscounts'] ?? 0,
'Total Refunds' => $summary['totalRefunds'] ?? 0,
'Total Expenses' => $summary['totalExpenses'] ?? 0,
'Total Reimbursements' => $summary['totalReimbursements'] ?? 0,
'Donation to School (Masjid/Donation reimbursements)' => $summary['donationToSchool'] ?? 0,
'Net Amount (Earned Income)' => $summary['netAmount'] ?? 0,
'Amount Collected (Paid)' => $summary['amountCollected'] ?? 0,
'Amount Unpaid (Outstanding)' => $summary['totalUnpaid'] ?? 0,
];
$pdf->SetFont('Arial', '', 11);
foreach ($rows as $label => $amount) {
$pdf->Cell(130, 10, $label, 1);
$pdf->Cell(60, 10, '$'.number_format((float) $amount, 2), 1);
$pdf->Ln();
}
$barChart = $this->charts->generateBarChart($summary);
if (! empty($barChart) && file_exists($barChart)) {
$pdf->Ln(10);
$pdf->SetFont('Arial', 'B', 12);
$pdf->Cell(0, 10, 'Summary Graph', 0, 1);
$pdf->Image($barChart, null, null, 180);
}
$pieChart = $this->charts->generatePieChart($summary);
if (! empty($pieChart) && file_exists($pieChart)) {
$pdf->Ln(10);
$pdf->SetFont('Arial', 'B', 12);
$pdf->Cell(0, 10, 'Expense Breakdown', 0, 1);
$pdf->Image($pieChart, null, null, 120);
}
return $pdf->Output('S');
}
}