Image(ROOTDIR . '/assets/img/' . $logoFilename, 15, 25, 75);
# Invoice Status
$pdf->SetXY(0, 0);
$pdf->SetFont($pdfFont, 'B', 28);
$pdf->SetTextColor(255);
$pdf->SetLineWidth(0.75);
$pdf->StartTransform();
$pdf->Rotate(-35, 100, 225);
if ($status == 'Draft') {
$pdf->SetFillColor(200);
$pdf->SetDrawColor(140);
} elseif ($status == 'Paid') {
$pdf->SetFillColor(151, 223, 74);
$pdf->SetDrawColor(110, 192, 70);
} elseif ($status == 'Cancelled') {
$pdf->SetFillColor(200);
$pdf->SetDrawColor(140);
} elseif ($status == 'Refunded') {
$pdf->SetFillColor(131, 182, 218);
$pdf->SetDrawColor(91, 136, 182);
} elseif ($status == 'Collections') {
$pdf->SetFillColor(3, 3, 2);
$pdf->SetDrawColor(127);
} else {
$pdf->SetFillColor(223, 85, 74);
$pdf->SetDrawColor(171, 49, 43);
}
if ($status == 'Payment Pending'){
$pdf->Cell(100, 18, strtoupper(Lang::trans('invoices' . str_replace(' ', '', $status))), 'TB', 0, 'C', '1');
} else {
$pdf->Cell(100, 18, strtoupper(Lang::trans('invoices' . strtolower($status))), 'TB', 0, 'C', '1');
}
$pdf->StopTransform();
$pdf->SetTextColor(0);
# Company Details
$pdf->SetXY(15, 42);
$pdf->SetFont($pdfFont, '', 13);
foreach ($companyaddress as $addressLine) {
$pdf->Cell(180, 4, trim($addressLine), 0, 1, 'R');
$pdf->SetFont($pdfFont, '', 9);
}
if ($taxCode) {
$pdf->Cell(180, 4, $taxIdLabel . ': ' . trim($taxCode), 0, 1, 'R');
}
$pdf->Ln(5);
# Header Bar
/**
* Invoice header
*
* You can optionally define a header/footer in a way that is repeated across page breaks.
* For more information, see https://docs.whmcs.com/PDF_Invoice#Header.2FFooter
*/
$pdf->SetFont($pdfFont, 'B', 15);
$pdf->SetFillColor(239);
$pdf->Cell(0, 8, $pagetitle, 0, 1, 'L', '1');
$pdf->SetFont($pdfFont, '', 10);
$pdf->Cell(0, 6, Lang::trans('invoicesdatecreated') . ': ' . $datecreated, 0, 1, 'L', '1');
$pdf->Cell(0, 6, Lang::trans('invoicesdatedue') . ': ' . $duedate, 0, 1, 'L', '1');
$pdf->Ln(10);
$startpage = $pdf->GetPage();
# Clients Details
$addressypos = $pdf->GetY();
$pdf->SetFont($pdfFont, 'B', 10);
$pdf->Cell(0, 4, Lang::trans('invoicesinvoicedto'), 0, 1);
$pdf->SetFont($pdfFont, '', 9);
if ($clientsdetails["companyname"]) {
$pdf->Cell(0, 4, $clientsdetails["companyname"], 0, 1, 'L');
$pdf->Cell(0, 4, Lang::trans('invoicesattn') . ': ' . $clientsdetails["firstname"] . ' ' . $clientsdetails["lastname"], 0, 1, 'L');
} else {
$pdf->Cell(0, 4, $clientsdetails["firstname"] . " " . $clientsdetails["lastname"], 0, 1, 'L');
}
$pdf->Cell(0, 4, $clientsdetails["address1"], 0, 1, 'L');
if ($clientsdetails["address2"]) {
$pdf->Cell(0, 4, $clientsdetails["address2"], 0, 1, 'L');
}
$pdf->Cell(0, 4, $clientsdetails["city"] . ", " . $clientsdetails["state"] . ", " . $clientsdetails["postcode"], 0, 1, 'L');
$pdf->Cell(0, 4, $clientsdetails["country"], 0, 1, 'L');
if (array_key_exists('tax_id', $clientsdetails) && $clientsdetails['tax_id']) {
$pdf->Cell(0, 4, $taxIdLabel . ': ' . $clientsdetails['tax_id'], 0, 1, 'L');
}
if ($customfields) {
$pdf->Ln();
foreach ($customfields as $customfield) {
$pdf->Cell(0, 4, $customfield['fieldname'] . ': ' . $customfield['value'], 0, 1, 'L');
}
}
$pdf->Ln(10);
# Invoice Items
$tblhtml = '
| ' . Lang::trans('invoicesdescription') . ' |
' . Lang::trans('quotelinetotal') . ' |
';
foreach ($invoiceitems as $item) {
$tblhtml .= '
' . nl2br($item['description']) . '
|
' . $item['amount'] . ' |
';
}
$tblhtml .= '
| ' . Lang::trans('invoicessubtotal') . ' |
' . $subtotal . ' |
';
if ($taxname) {
$tblhtml .= '
| ' . $taxrate . '% ' . $taxname . ' |
' . $tax . ' |
';
}
if ($taxname2) {
$tblhtml .= '
| ' . $taxrate2 . '% ' . $taxname2 . ' |
' . $tax2 . ' |
';
}
$tblhtml .= '
| ' . Lang::trans('invoicescredit') . ' |
' . $credit . ' |
| ' . Lang::trans('invoicestotal') . ' |
' . $total . ' |
';
$pdf->writeHTML($tblhtml, true, false, false, false, '');
$pdf->Ln(5);
# Transactions
$pdf->SetFont($pdfFont, 'B', 12);
$pdf->Cell(0, 4, Lang::trans('invoicestransactions'), 0, 1);
$pdf->Ln(5);
$pdf->SetFont($pdfFont, '', 9);
$tblhtml = '
| ' . Lang::trans('invoicestransdate') . ' |
' . Lang::trans('invoicestransgateway') . ' |
' . Lang::trans('invoicestransid') . ' |
' . Lang::trans('invoicestransamount') . ' |
';
if (!count($transactions)) {
$tblhtml .= '
| ' . Lang::trans('invoicestransnonefound') . ' |
';
} else {
foreach ($transactions AS $trans) {
$tblhtml .= '
| ' . $trans['date'] . ' |
' . $trans['gateway'] . ' |
' . $trans['transid'] . ' |
' . $trans['amount'] . ' |
';
}
}
$tblhtml .= '
| ' . Lang::trans('invoicesbalance') . ' |
' . $balance . ' |
';
$pdf->writeHTML($tblhtml, true, false, false, false, '');
# Notes
if ($notes) {
$pdf->Ln(5);
$pdf->SetFont($pdfFont, '', 8);
$pdf->MultiCell(170, 5, Lang::trans('invoicesnotes') . ': ' . $notes);
}
# Generation Date
$pdf->SetFont($pdfFont, '', 8);
$pdf->Ln(5);
$pdf->Cell(180, 4, Lang::trans('invoicepdfgenerated') . ' ' . getTodaysDate(1), '', '', 'C');
/**
* Invoice footer
*/