From 5d439d25af91dbd1731f363af873571dbf54d7c9 Mon Sep 17 00:00:00 2001
From: engel <>
Date: Tue, 22 Feb 2022 09:47:54 +0000
Subject: [PATCH] =?UTF-8?q?am=C3=A9lioration=20g=C3=A9n=C3=A9ration=20pdf?=
=?UTF-8?q?=20depuis=20html?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
FossilOrigin-Name: 996c3a9ad1c56e94c83b77c74aa804ccc3ff2eb7e0f4ea90f885882a801a6a32
---
lib/HtmlPDF.php | 217 --------------------------------
lib/RecusHTML.php | 153 ++++++++++++++++++++++
lib/pdf.css | 121 ++++++++++++++++++
www/admin/generer_activites.php | 26 ++--
www/admin/generer_personnes.php | 13 +-
5 files changed, 297 insertions(+), 233 deletions(-)
delete mode 100644 lib/HtmlPDF.php
create mode 100644 lib/RecusHTML.php
create mode 100644 lib/pdf.css
diff --git a/lib/HtmlPDF.php b/lib/HtmlPDF.php
deleted file mode 100644
index ffdf87c..0000000
--- a/lib/HtmlPDF.php
+++ /dev/null
@@ -1,217 +0,0 @@
-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 .= "
-
Reçu numéro {$annee_recu}/{$numero}
-
-";
- // Donateur
- $this->html .= "
-
-
Donateur
-
{$nom}
-
{$adresse}
-
{$code_postal} {$ville}
-
-";
-
- $this->html .= "
-
-
Le bénéficiaire reconnaît avoir reçu au titre des dons et versements ouvrant droit à réduction d'impôt :
-
-
-";
-
- foreach ($lesMontants as $taux => $montant)
- {
- $this->imprimer_montant("la somme de ",
- $montant,
- Utils::getLigneReduction($taux));
- }
- $this->html .= "
-
-";
-
- $this->html .= "
-
-
Date des versements : année {$annee_recu}
-
Le bénéficiaire certifie sur l’honneur que les dons et versements qu’il reçoit ouvrent droit à la réduction
-d'impôt prévue à l’article 200 du CGI
-
Forme du don : Autre
-
Nature du don : Numéraire
-
Mode de versement : chèque et/ou virement
-
-";
-
- // cartouche final
- $date = date("j/m/Y");
-$this->html .= "
-
- 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 .= "
-{$texte} {$valeur} euros
-";
- if ($libelle != "") {
- $this->html .= "
- : {$libelle}
-";
- }
-$this->html .= "
-
-";
- }
-
- 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 <<
-
-
-
- {$this->nomAsso}
-
-
-
- Reçu au titre des dons à certains organismes d'intérêt général
- Bénéficiaire des versements
- Association « {$this->nomAsso} »
- {$this->adresseAsso}
- Objet : {$this->objetAsso}
-FDD;
- return ob_get_clean();
- }
-
- protected function fin()
- {
- $this->html .=
-'
-
-
-';
- }
-} // class RecusPDF
diff --git a/lib/RecusHTML.php b/lib/RecusHTML.php
new file mode 100644
index 0000000..a4124b8
--- /dev/null
+++ b/lib/RecusHTML.php
@@ -0,0 +1,153 @@
+nomAsso = $nomAsso;
+ $this->adresseAsso = $adresseAsso;
+ $this->objetAsso = $objetAsso;
+ $this->signature = $signature;
+ $this->html = $this->entete();
+ }
+
+ function get()
+ {
+ //echo $this->html;
+ return $this->html;
+ }
+
+ protected function entete()
+ {
+ $styleSheet = \Garradin\PLUGIN_ROOT . "/lib/pdf.css";
+ ob_start();
+echo <<
+
+
+
+ {$this->nomAsso}
+
+
+
+
+
+ Cerfa
+
+
+ N° 11580*4
+
+
Reçu au titre des dons à certains organismes d'intérêt général
+
Article 200, 238 bis et 885-0 V bis A du code général des impôts
+
+FDD;
+ return ob_get_clean();
+ }
+
+ // imprimer le reçu
+ function imprimer_recu($annee_recu,
+ $numero,
+ $nom,
+ $lesMontants,
+ $adresse,
+ $code_postal,
+ $ville)
+ {
+ ob_start();
+echo <<
+ Reçu numéro {$annee_recu}/{$numero}
+
+
+
+
Bénéficiaire des versements
+
Association « {$this->nomAsso} »
+
{$this->adresseAsso}
+
Objet : {$this->objetAsso}
+
+
+
+
Donateur
+
{$nom}
+
{$adresse}
+
{$code_postal} {$ville}
+
+
+
+
Le bénéficiaire reconnaît avoir reçu au titre des dons et versements ouvrant droit à réduction d'impôt :
+
+
+FDD;
+
+ foreach ($lesMontants as $taux => $montant)
+ {
+ $this->imprimer_montant("la somme de ",
+ $montant,
+ Utils::getLigneReduction($taux));
+ }
+ echo " \n";
+
+ $this->imprimer_description("Date des versements :",
+ "année {$annee_recu}");
+echo <<
Le bénéficiaire certifie sur l’honneur que les dons et versements qu’il reçoit ouvrent droit à la réduction d'impôt prévue à l’article 200 du CGI
+
+FDD;
+ $this->imprimer_description("Forme du don : ",
+ "Autre");
+ $this->imprimer_description("Nature du don : ",
+ "Numéraire");
+ $this->imprimer_description("Mode de versement : ",
+ "chèque et/ou virement");
+ echo " \n";
+
+ // cartouche final
+ $date = date("j/m/Y");
+echo <<
+ Rennes le {$date}
+
+ Président
+
+
+
+FDD;
+ $this->html .= ob_get_clean();
+ }
+
+ // imprimer un libellé précédé de son titre en gras
+ function imprimer_description($titre, $libelle)
+ {
+ echo <<{$titre} {$libelle}
+
+FDD;
+ }
+
+ // imprimer le montant de la réduction et un libellé
+ function imprimer_montant($texte, $montant, $libelle = "")
+ {
+ $valeur = number_format($montant, 2, ',', '');
+ echo "{$texte} {$valeur} euros";
+ if ($libelle != "") {
+ echo " : {$libelle}";
+ }
+ echo " \n";
+ }
+
+}
diff --git a/lib/pdf.css b/lib/pdf.css
new file mode 100644
index 0000000..a3a92ed
--- /dev/null
+++ b/lib/pdf.css
@@ -0,0 +1,121 @@
+/* organisation spatiale */
+body
+{
+ width : 21cm;
+ padding : 1cm 1cm;
+ display: grid;
+ grid-template-areas:
+ 'entete'
+ 'beneficiaire'
+ 'donateur'
+ 'versements'
+ 'signature';
+}
+
+#entete
+{
+ grid-area: entete;
+ width: 100%;
+}
+
+#logoCerfa
+{
+ line-height: 40px;
+ width: 100px;
+ background-color: rgb(0, 0, 128);
+ border-radius : 50%;
+ text-align : center;
+ margin : 0.5em;
+}
+
+.centre
+{
+ display : inline-block;
+ vertical-align : middle;
+ line-height: 20px; /* moitié de la hauteur du logo */
+ color : white;
+ font-weight: bold;
+ font-size : 14pt;
+}
+
+#numCerfa
+{
+ width: 100px; /* largeur du logo */
+ text-align: center;
+}
+
+#titre
+{
+ margin : 0 4cm 0 4cm;
+ text-align : center;
+ font-size : 140%;
+ font-weight: bold;
+}
+
+#articles
+{
+ margin : 0 4cm 0 4cm; /* idem titre */
+}
+
+#numRecu
+{
+ text-align : right;
+/* display : inline;*/
+}
+
+#beneficiaire
+{
+ grid-area: beneficiaire;
+ width: 100%;
+}
+
+#donateur
+{
+ grid-area: donateur;
+ width: 100%;
+}
+
+#versements
+{
+ grid-area: versements;
+ width: 100%;
+}
+
+#final
+{
+ grid-area: signature;
+ width: 100%;
+}
+
+.rubrique
+{
+ background-color : rgb(200, 200, 250);
+ padding : 0.5em;
+}
+
+.cartouche
+{
+ margin : 0.5em auto;
+ padding : 0 0.5em;
+ border : 1px solid rgb(0, 0, 128);
+ border-radius : 8px;
+}
+
+.titre, .important
+{
+ font-weight:bold;
+}
+
+#signature
+{
+ display: block;
+ width : 7cm;
+ margin: 0 auto;
+ padding-bottom : 0.5em;
+}
+
+#fonction
+{
+ text-align : center;
+ padding-bottom : 2em;
+}
diff --git a/www/admin/generer_activites.php b/www/admin/generer_activites.php
index 72c5b03..9985a77 100644
--- a/www/admin/generer_activites.php
+++ b/www/admin/generer_activites.php
@@ -2,7 +2,7 @@
namespace Garradin;
-use Garradin\Plugin\RecusFiscaux\HtmlPDF;
+use Garradin\Plugin\RecusFiscaux\RecusHTML;
use Garradin\Plugin\RecusFiscaux\Utils;
use Garradin\Plugin\RecusFiscaux\Personne;
@@ -21,21 +21,16 @@ $totalPersonnes = cumulerVersements($versementsSelectionnes);
$nomAsso = Utils::getNomAsso();
$adresseAsso = Utils::getAdresseAsso();
-// TODO
-// - associer le taux de réduction à chaque montant total
-
-// récupérer le logo CERFA (bôf) et la signature
-$logoCERFA = PLUGIN_ROOT . "/data/logoCerfa.png";
$signature = PLUGIN_ROOT . "/data/default_signature.png";
$listeFichiers = [];
-foreach ($totalPersonnes as $idPersonne => $personne) {
+foreach ($totalPersonnes as $idPersonne => $personne)
+{
// générer un fichier par reçu
- $pdf = new HtmlPDF(
+ $html = new RecusHTML(
$nomAsso,
$adresseAsso,
$plugin->getConfig('objet_asso'),
- $logoCERFA,
$signature
);
// extraire les montants des versements
@@ -49,7 +44,7 @@ foreach ($totalPersonnes as $idPersonne => $personne) {
$lesMontants[$versement->tauxReduction] = $versement->montant;
}
}
- $pdf->imprimer_recu(
+ $html->imprimer_recu(
$_SESSION['annee_recu'],
$personne->id,
$personne->nomPrenom,
@@ -58,10 +53,19 @@ foreach ($totalPersonnes as $idPersonne => $personne) {
$personne->codePostal,
$personne->ville
);
+ /*
+ $html->get();
+ */
// fabriquer le fichier PDF
- $nomFichier = \Garradin\Utils::filePDF($pdf->get());
+ $nomPDF = \Garradin\Utils::filePDF($html->get());
+ // changer le nom du fichier
+ $nom = str_replace(' ', '_', $personne->nomPrenom);
+ $nom = str_replace("'", "", $nom);
+ $nomFichier = "recu_" . $_SESSION['annee_recu'] . "_" . $nom . ".pdf";
+ rename($nomPDF, $nomFichier);
// ajouter le nom du fichier à la liste pour mettre dans une archive
$listeFichiers[] = $nomFichier;
+
}
// faire une archive zip
diff --git a/www/admin/generer_personnes.php b/www/admin/generer_personnes.php
index 424ab08..803b2a6 100644
--- a/www/admin/generer_personnes.php
+++ b/www/admin/generer_personnes.php
@@ -2,7 +2,7 @@
namespace Garradin;
-use Garradin\Plugin\RecusFiscaux\HtmlPDF;
+use Garradin\Plugin\RecusFiscaux\RecusHTML;
use Garradin\Plugin\RecusFiscaux\Utils;
use Garradin\Plugin\RecusFiscaux\Personne;
@@ -19,18 +19,16 @@ foreach ($lesLignes as $ligne) {
$nomAsso = Utils::getNomAsso();
$adresseAsso = Utils::getAdresseAsso();
-$logoCERFA = PLUGIN_ROOT . "/data/logoCerfa.png";
$signature = PLUGIN_ROOT . "/data/default_signature.png";
$listeFichiers = [];
foreach ($versementsSelectionnes as $ligne)
{
// générer un fichier par reçu
- $pdf = new HtmlPDF(
+ $pdf = new RecusHTML(
$nomAsso,
$adresseAsso,
$plugin->getConfig('objet_asso'),
- $logoCERFA,
$signature
);
@@ -46,7 +44,12 @@ foreach ($versementsSelectionnes as $ligne)
$_SESSION['membresDonateurs'][$ligne->idUser]->ville
);
// fabriquer le fichier PDF
- $nomFichier = \Garradin\Utils::filePDF($pdf->get());
+ $nomPDF = \Garradin\Utils::filePDF($pdf->get());
+ // changer le nom du fichier
+ $nom = str_replace(' ', '_', $_SESSION['membresDonateurs'][$ligne->idUser]->nomPrenom);
+ $nom = str_replace("'", "", $nom);
+ $nomFichier = "recu_" . $_SESSION['annee_recu'] . "_" . $nom . ".pdf";
+ rename($nomPDF, $nomFichier);
// ajouter le nom du fichier à la liste pour mettre dans une archive
$listeFichiers[] = $nomFichier;
}