recusfiscaux/www/admin/generer_personnes.php

244 lines
5.5 KiB
PHP
Raw Permalink 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;
use Garradin\Plugin\RecusFiscaux\RecusHTML;
use Garradin\Plugin\RecusFiscaux\Utils;
use Garradin\Plugin\RecusFiscaux\Personne;
// récupérer les lignes sélectionnées
$lesLignes = f('selected');
// filtrer les versements sélectionnés
$versementsSelectionnes = array();
foreach ($lesLignes as $ligne) {
$versementsSelectionnes[] = $_SESSION['lesVersementsTotaux'][$ligne];
}
// informations de l'association
$nomAsso = Utils::getNomAsso();
$adresseAsso = Utils::getAdresseAsso();
$signature =
(null !== $plugin->getConfig('signature')) ?
\Garradin\Files\Files::get($plugin->getConfig('signature'))->fullpath() :
"";
$objetAsso = $plugin->getConfig('objet_asso');
$nomResponsable = $plugin->getConfig('nom_responsable');
$fonctionResponsable = $plugin->getConfig('fonction_responsable');
// articles du CGI
$articlesCGI = array();
foreach ($plugin->getConfig('articlesCGI') as $article)
{
if ($article->valeur == 1) {
$articlesCGI[] = $article->titre;
}
}
/**
* insérer une feuille de style
*/
$tpl->register_function('ajouter_style', function()
{
$out = '
@page
{
size: A4 portrait;
margin: 1cm;
}
body
{
font-family: Serif;
font-size: 11pt;
background-color: white;
}
#logoCerfa
{
line-height: 40px;
width: 100px;
background-color: rgb(0, 0, 128);
border-radius : 50%;
text-align : center;
margin : 2mm;
}
.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 : 14pt;
font-weight: bold;
}
#articles
{
margin : 0 4cm 0 4cm; /* idem titre */
text-align : center;
}
#numRecu
{
text-align : right;
}
#final
{
height : 5cm;
}
.rubrique
{
background-color : rgb(200, 200, 250);
padding : 2mm;
}
.cartouche
{
margin : 2mm auto;
padding : 0 2mm;
border : 1px solid rgb(0, 0, 128);
border-radius : 8px;
}
.titre, .important
{
font-weight:bold;
}
#signature
{
display: block;
max-width : 7cm;
max-height : 2cm;
margin: 0 auto;
padding-bottom : 2mm;
}
#fonction, #nom
{
text-align : center;
}
';
return $out;
});
/**
* imprimer un montant et le taux de réduction associé
* @param montant
* @param taux
*/
$tpl->register_function('imprimer_montant', function ($params)
{
$montant = $params['montant'];
$taux = $params['taux'];
$valeur = number_format($montant, 2, ',', '');
$libelle = Utils::getLigneReduction($taux);
$out = sprintf('
<li>la somme de <b>%s euros</b>',
$valeur);
if ($libelle != "") {
$out .= sprintf(' (%s)', $libelle);
}
$out .= '
</li>
';
return $out;
});
/**
* imprimer les articles du code général des impôts concernés
* @param articles
*/
$tpl->register_function('imprimer_articles', function ($params)
{
$articlesCGI = $params['articles'];
$nbArticles = count($articlesCGI);
$out = "<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";
if ($nbArticles == 1)
{
$out .= sprintf(' à larticle %s du code général des impôts</p>', articlesCGI[0]);
}
else if ($nbArticles > 1)
{
$out .= " aux articles ";
for ($i = 0; $i < $nbArticles; ++$i) {
$out .= sprintf("%s", $articlesCGI[$i]);
if ($i < $nbArticles - 2) {
$out .= ", ";
}
else if ($i == $nbArticles - 2) {
$out .= " et ";
}
}
$out .= " du code général des impôts.</p>";
}
return $out;
});
$listeFichiers = array(); // fichiers pdf générés
foreach ($versementsSelectionnes as $ligne)
{
// extraire les montants des versements
$lesMontants[$_SESSION['taux_reduction']] = $ligne->versement/100;
$personne = $_SESSION['membresDonateurs'][$ligne->idUser];
$tpl->assign(compact('nomAsso',
'adresseAsso',
'objetAsso',
'nomResponsable',
'fonctionResponsable',
'articlesCGI',
'signature'
));
$tpl->assign('anneeRecu', $_SESSION['annee_recu']);
$tpl->assign('numero', $personne->id);
$tpl->assign('nom', $personne->nomPrenom);
$tpl->assign('lesMontants', $lesMontants);
$tpl->assign('adresse', $personne->adresse);
$tpl->assign('codePostal', $personne->codePostal);
$tpl->assign('ville', $personne->ville);
// $tpl->assign('styleSheet', 'pdf.css');
// $tpl->assign('styleSheet', \Garradin\PLUGIN_URL . 'pdf.css');
// $tpl->assign('plugin_css', ['pdf.css']);
ob_start();
$tpl->display(PLUGIN_ROOT . '/templates/recuHTML.tpl');
$html = ob_get_clean();
// fabriquer le fichier PDF
$nomPDF = \Garradin\Utils::filePDF($html);
// 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
$fichierZip = Utils::makeArchive(
$listeFichiers,
$_SESSION['annee_recu'],
PLUGIN_ROOT . "/zip"
);