recusfiscaux/lib/HtmlPDF.php

218 lines
5.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Garradin\Plugin\RecusFiscaux;
// class to generate PDF documents
class HtmlPDF
{
private $nomAsso;
private $adresseAsso;
private $objetAsso;
private $logoCerfa;
private $signature;
/**
* initialize global data
*/
function __construct($nomAsso,
$adresseAsso,
$objetAsso,
$logo,
$signature)
{
$this->nomAsso = $nomAsso;
$this->adresseAsso = $adresseAsso;
$this->objetAsso = $objetAsso;
$this->logoCerfa = $logo;
$this->signature = $signature;
$this->html = $this->debut();
}
function get()
{
return $this->html;
}
// Header
function Header()
{
// Logo
$this->Image($this->logoCerfa, 10, 6, 30);
// document title
$this->SetTextColor(0, 0, 0);
$this->SetFont('DejaVu','B',12);
$titre = "Reçu au titre des dons à certains organismes d'intérêt général";
$this->SetXY(50, 10);
// Titre
$this->MultiCell(100,
6,
$titre,
0,
'C');
// numéro de Cerfa
$cerfa = "N° 11580*3";
$this->SetFont('DejaVu', 'B', 10);
$this->SetXY(10, 25);
$this->Cell(100, 0, $cerfa);
// Articles
$this->SetFont('DejaVu', '', 9);
$this->SetXY(50, 25);
$this->Cell(100, 0, 'Article 200, 238 bis et 885-0 V bis A du code général des impôts');
}
// imprimer le reçu
function imprimer_recu($annee_recu,
$numero,
$nom,
$lesMontants,
$adresse,
$code_postal,
$ville)
{
// Numéro de reçu
$this->html .= "
<div id=\"numrecu\"
<p>Reçu numéro {$annee_recu}/{$numero}</p>
</div>
";
// Donateur
$this->html .= "
<div id=\"donateur\">
<h3>Donateur</h3>
<p>{$nom}</p>
<p>{$adresse}</p>
<p>{$code_postal} {$ville}</p>
</div>
";
$this->html .= "
<div id=\"infodon\">
<p>Le bénéficiaire reconnaît avoir reçu au titre des dons et versements ouvrant droit à réduction d'impôt :</p>
</div>
<ul>
";
foreach ($lesMontants as $taux => $montant)
{
$this->imprimer_montant("la somme de ",
$montant,
Utils::getLigneReduction($taux));
}
$this->html .= "
</ul>
";
$this->html .= "
<div id=\"infodiverses\">
<p>Date des versements : année {$annee_recu}</p>
<p>Le bénéficiaire certifie sur lhonneur que les dons et versements quil reçoit ouvrent droit à la réduction
d'impôt prévue à larticle 200 du CGI</p>
<p>Forme du don : Autre</p>
<p>Nature du don : Numéraire</p>
<p>Mode de versement : chèque et/ou virement</p>
</div>
";
// cartouche final
$date = date("j/m/Y");
$this->html .= "
<div id=\"cartouchefinal\">
<p>Rennes le {$date}</p>
</div>
<img id=\"signature\" src=\"$this->signature\" />
";
/*
$this->Ln(10);
$this->Cell(0, 6, "", 'LRT', 1);
$this->Cell(0, 6, "Rennes le " . date("j/m/Y"), 'LR', 1, 'R');
$this->Cell(0, 36, "", 'LR', 1);
$this->Cell(0, 0, "", 'LBR', 1);
$this->SetXY(100, 220);
$this->Image($this->signature, null, null, 50);
*/
$this->fin();
}
// imprimer les informations du bénéficiaire
function imprimer_beneficiaire($nom, $adresse)
{
$this->titre_rubrique("Bénéficiaire des versements");
$this->SetFont('DejaVu', 'B', 11);
$this->Cell(0, 6, 'Association « ' . $nom . ' »', 'LR', 1);
$this->Cell(0, 6, str_replace(array("\r\n", "\n", "\r"), " ", $adresse), 'LR', 1);
$this->imprimer_description("Objet : ",
"célébrer le culte protestant évangélique et pourvoir aux frais et besoins de ce culte.");
$this->Cell(0, 6, "", 'LRB', 1);
}
// imprimer un libellé précédé de son titre en gras
function imprimer_description($titre, $libelle)
{
$this->SetFont('DejaVu', 'B', 11);
$this->Cell($this->GetStringWidth($titre), 6, $titre, 'L', 0);
$this->SetFont('DejaVu', '', 11);
$this->Cell(0, 6, $libelle, 'R', 1);
}
// imprimer le montant de la réduction et un libellé
function imprimer_montant($texte, $montant, $libelle = "")
{
$valeur = number_format($montant, 2, ',', '');
$this->html .= "
<li>{$texte} {$valeur} euros
";
if ($libelle != "") {
$this->html .= "
: {$libelle}
";
}
$this->html .= "
</li>
";
}
function titre_rubrique($texte)
{
$this->SetFont('DejaVu','B',12);
$largeur_texte = $this->GetStringWidth($texte);
$this->setX(10);
$this->SetFillColor(0, 255, 255);
$this->Cell(0, 6, $texte, 'LTR', 1, 'C', true);
$this->Cell(0, 6, "", 'LR', 1);
}
protected function debut()
{
ob_start();
echo <<<FDD
<!DOCTYPE html>
<html>
<meta charset="utf-8" />
<head>
<title>{$this->nomAsso}</title>
</head>
<body>
<img id="logoCerfa" src="$this->logoCerfa" />
<h3>Reçu au titre des dons à certains organismes d'intérêt général</h3>
<h3>Bénéficiaire des versements</h3>
<p>Association « {$this->nomAsso} »</p>
<p>{$this->adresseAsso}</p>
<p>Objet : {$this->objetAsso}</p>
FDD;
return ob_get_clean();
}
protected function fin()
{
$this->html .=
'
</body>
</html>
';
}
} // class RecusPDF