diff --git a/lib/RecusHTML.php b/lib/RecusHTML.php new file mode 100644 index 0000000..b5db027 --- /dev/null +++ b/lib/RecusHTML.php @@ -0,0 +1,151 @@ +nomAsso = $nomAsso; + $this->adresseAsso = $adresseAsso; + $this->objetAsso = $objetAsso; + $this->signature = $signature; + $this->html = $this->entete(); + } + + function get() + { + //echo $this->html; + return $this->html; + } + + // 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 :

+ \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"; + } + + protected function entete() + { + $styleSheet = \Garradin\PLUGIN_ROOT . "/lib/pdf.css"; + ob_start(); +echo << + + + + + + +
    +
    + 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(); + } +} 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 5249958..a6278d6 100644 --- a/www/admin/generer_activites.php +++ b/www/admin/generer_activites.php @@ -2,7 +2,7 @@ namespace Garradin; -use Garradin\Plugin\RecusFiscaux\RecusPDF; +use Garradin\Plugin\RecusFiscaux\RecusHTML; use Garradin\Plugin\RecusFiscaux\Utils; use Garradin\Plugin\RecusFiscaux\Personne; @@ -21,22 +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 RecusPDF( - 'DejaVu', - 'SerifCondensed', + $html = new RecusHTML( $nomAsso, $adresseAsso, - $logoCERFA, + $plugin->getConfig('objet_asso'), $signature ); // extraire les montants des versements @@ -50,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, @@ -59,13 +53,13 @@ foreach ($totalPersonnes as $idPersonne => $personne) { $personne->codePostal, $personne->ville ); - // fabriquer le nom du fichier PDF + // fabriquer le fichier PDF + $nomPDF = \Garradin\Utils::filePDF($html->get()); + // changer le nom du fichier $nom = str_replace(' ', '_', $personne->nomPrenom); $nom = str_replace("'", "", $nom); - // $nomFichier = Utils::getPDFDirectory() . "/" . 'recu_' . $annee_recu . '_' . $nom . '.pdf'; - $nomFichier = PLUGIN_ROOT . '/pdf/recu_' . $_SESSION['annee_recu'] . '_' . $nom . '.pdf'; - - $pdf->Output('F', $nomFichier); + $nomFichier = "recu_" . $_SESSION['annee_recu'] . "_" . $nom . ".pdf"; + rename($nomPDF, $nomFichier); // ajouter le nom du fichier à la liste pour mettre dans une archive $listeFichiers[] = $nomFichier; } diff --git a/www/admin/generer_personnes.php b/www/admin/generer_personnes.php index 696410d..15de5f6 100644 --- a/www/admin/generer_personnes.php +++ b/www/admin/generer_personnes.php @@ -2,7 +2,7 @@ namespace Garradin; -use Garradin\Plugin\RecusFiscaux\RecusPDF; +use Garradin\Plugin\RecusFiscaux\RecusHTML; use Garradin\Plugin\RecusFiscaux\Utils; use Garradin\Plugin\RecusFiscaux\Personne; @@ -19,44 +19,46 @@ 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) { +foreach ($versementsSelectionnes as $ligne) +{ // générer un fichier par reçu - $pdf = new RecusPDF( - 'DejaVu', - 'SerifCondensed', + $html = new RecusHTML( $nomAsso, $adresseAsso, - $logoCERFA, + $plugin->getConfig('objet_asso'), $signature ); + // extraire les montants des versements $lesMontants[$_SESSION['taux_reduction']] = $ligne->versement/100; - $pdf->imprimer_recu( + $personne = $_SESSION['membresDonateurs'][$ligne->idUser]; + $html->imprimer_recu( $_SESSION['annee_recu'], - $ligne->idUser, - $_SESSION['membresDonateurs'][$ligne->idUser]->nomPrenom, + $personne->id, + $personne->nomPrenom, $lesMontants, - $_SESSION['membresDonateurs'][$ligne->idUser]->adresse, - $_SESSION['membresDonateurs'][$ligne->idUser]->codePostal, - $_SESSION['membresDonateurs'][$ligne->idUser]->ville + $personne->adresse, + $personne->codePostal, + $personne->ville ); - // fabriquer le nom du fichier PDF - $nom = str_replace(' ', '_', $_SESSION['membresDonateurs'][$ligne->idUser]->nomPrenom); + // fabriquer le fichier PDF + $nomPDF = \Garradin\Utils::filePDF($html->get()); + // changer le nom du fichier + $nom = str_replace(' ', '_', $personne->nomPrenom); $nom = str_replace("'", "", $nom); - // $nomFichier = Utils::getPDFDirectory() . "/" . 'recu_' . $annee_recu . '_' . $nom . '.pdf'; - $nomFichier = PLUGIN_ROOT . '/pdf/recu_' . $_SESSION['annee_recu'] . '_' . $nom . '.pdf'; - - $pdf->Output('F', $nomFichier); + $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 $fichierZip = Utils::makeArchive( $listeFichiers, $_SESSION['annee_recu'], PLUGIN_ROOT . "/zip" ); +