Ajout de commentaires

This commit is contained in:
Noizette 2021-11-10 23:33:00 +01:00
parent 6a02ddfe87
commit b4629a5ed9

View File

@ -3,14 +3,13 @@
namespace Garradin; namespace Garradin;
require_once __DIR__ . '/_inc.php'; require_once __DIR__ . '/_inc.php';
$session->requireAccess($session::SECTION_ACCOUNTING, $session::ACCESS_READ); $session->requireAccess($session::SECTION_ACCOUNTING, $session::ACCESS_READ);
$membres = new Membres; $membres = new Membres;
qv(['id' => 'required|numeric']); qv(['id' => 'required|numeric']);
$id = (int) qg('id'); $id = (int) qg('id');
// Vérification que le document existe
if (!$f = $facture->get($id)) if (!$f = $facture->get($id))
{ {
throw new UserException("Ce document n'existe pas."); throw new UserException("Ce document n'existe pas.");
@ -18,6 +17,7 @@ if (!$f = $facture->get($id))
$moyen_paiement = $facture->getMoyenPaiement($f->moyen_paiement); $moyen_paiement = $facture->getMoyenPaiement($f->moyen_paiement);
// Récupération infos membre
try try
{ {
if ($f->receveur_membre) if ($f->receveur_membre)
@ -43,17 +43,17 @@ catch(UserException $e)
$form->addError($e); $form->addError($e);
} }
// Formatage dates
// Création du PDF
$emission = $f->date_emission->format('d/m/Y'); $emission = $f->date_emission->format('d/m/Y');
if (isset($f->date_echeance)) if (isset($f->date_echeance))
{ {
$echeance = $f->date_echeance->format('d/m/Y'); $echeance = $f->date_echeance->format('d/m/Y');
} }
// Génération factures et devis
// -- Création du PDF
// Génération factures, devis et cotisation
if ($f->type_facture != CERFA) if ($f->type_facture != CERFA)
{ {
switch ($f->type_facture) switch ($f->type_facture)
@ -95,9 +95,8 @@ if ($f->type_facture != CERFA)
$reglee = !$f->reglee?'Cette facture est en attente de règlement.':'Cette facture a été reglée.'; $reglee = !$f->reglee?'Cette facture est en attente de règlement.':'Cette facture a été reglée.';
$footer = str_replace("\n", '<br>', $plugin->getConfig('footer')); $footer = str_replace("\n", '<br>', $plugin->getConfig('footer'));
// Génération du contenu de la facture
ob_start(); ob_start();
echo <<<EOF echo <<<EOF
<div class="h2"> <div class="h2">
<span>Contenu</span> - $doc <span>Contenu</span> - $doc
@ -170,6 +169,7 @@ EOF;
$expiration = date('d/m/Y', strtotime($f->contenu['expiration'])); $expiration = date('d/m/Y', strtotime($f->contenu['expiration']));
} }
// Génération du contenu du reçu de cotisation
$content = <<<EOF $content = <<<EOF
<div class="h2"> <div class="h2">
<span>Reçu de votre cotisation</span> - $doc <span>Reçu de votre cotisation</span> - $doc
@ -191,123 +191,119 @@ EOF;
<p><i>Nous vous rappelons que la cotisation nest pas soumise à la TVA et quelle ne donne pas lieu à la délivrance dune facture. Elle nouvre pas droit au bénéfice des dispositions des articles 200, 238 bis et 885-0 V bis A du code général des impôts.</i></p> <p><i>Nous vous rappelons que la cotisation nest pas soumise à la TVA et quelle ne donne pas lieu à la délivrance dune facture. Elle nouvre pas droit au bénéfice des dispositions des articles 200, 238 bis et 885-0 V bis A du code général des impôts.</i></p>
</div> </div>
EOF; EOF;
} }
// Layout du document //-- Layout du document
ob_start();
echo <<<EOF ob_start();
echo <<<EOF
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>${doc}_${emission}</title> <title>${doc}_${emission}</title>
<style> <style>
@page { @page {
size: A4 portrait; size: A4 portrait;
margin: 0; margin: 0;
} }
body { body {
padding: 4mm; padding: 4mm;
font-family: Helvetica, Arial, sans; font-family: Helvetica, Arial, sans;
font-size: 10pt; font-size: 10pt;
background: white; background: white;
} }
.titre { .titre {
text-align: center; text-align: center;
font-size: 8pt; font-size: 8pt;
margin-bottom: 6mm; margin-bottom: 6mm;
margin-top: 0mm; margin-top: 0mm;
} }
.h2 { .h2 {
margin: 20px 20px 0px 20px; margin: 20px 20px 0px 20px;
} }
.h2 span { .h2 span {
font-weight: bold; font-weight: bold;
font-size: 14pt; font-size: 14pt;
} }
hr { hr {
margin: 5px 0px 15px 0px; margin: 5px 0px 15px 0px;
border: none; border: none;
border-top: 1px solid; border-top: 1px solid;
} }
.adressage { .adressage {
font-size: 11pt; font-size: 11pt;
margin: auto; margin: auto;
} }
.adressage td { .adressage td {
width: 40%; width: 40%;
vertical-align: top; vertical-align: top;
} }
.contenuTexte { .contenuTexte {
padding: 0 6mm; padding: 0 6mm;
} }
.contenu { .contenu {
width: 100%; width: 100%;
} }
.contenu td, .contenu th { .contenu td, .contenu th {
vertical-align: top; vertical-align: top;
padding: 8px 10px; padding: 8px 10px;
margin : 0px; margin : 0px;
border-collapse: collapse; border-collapse: collapse;
} }
.contenu tr th, .contenu tr td { .contenu tr th, .contenu tr td {
text-align: right; text-align: right;
width: 16%; width: 16%;
} }
.contenu tr td:nth-child(1), .contenu tr th:nth-child(1) { .contenu tr td:nth-child(1), .contenu tr th:nth-child(1) {
text-align: left; text-align: left;
width: 84%; width: 84%;
} }
.contenu thead tr, .contenu tfoot tr { .contenu thead tr, .contenu tfoot tr {
background-color: #CCE; background-color: #CCE;
border: 10px solid black; border: 10px solid black;
} }
.contenu tbody tr:nth-child(even) { .contenu tbody tr:nth-child(even) {
background-color: #DDF !important; background-color: #DDF !important;
} }
.contenu tfoot { .contenu tfoot {
display: table-row-group; display: table-row-group;
} }
footer { footer {
bottom: 0; bottom: 0;
margin: 14mm 0; margin: 14mm 0;
width: inherit; width: inherit;
font-size: 9pt; font-size: 9pt;
} }
</style> </style>
</head> </head>
<body>
<p class="titre">
$doc - Émis le $emission
</p>
<body> <table class="adressage">
<p class="titre"> <tr>
$doc - Émis le $emission <td>$asso</td>
</p> <td>$receveur</td>
</tr>
<table class="adressage"> </table>
<tr> <br>
<td>$asso</td> $content
<td>$receveur</td> </body>
</tr>
</table>
<br>
$content
</body>
</html> </html>
EOF; EOF;
$html = ob_get_clean(); $html = ob_get_clean();
} // End if facture+devis } // Génération du CERFA
elseif ($f->type_facture == CERFA) elseif ($f->type_facture == CERFA)
{ {
// nom prénom ? pas de champs prénoms / champs identité pour membres // nom prénom ? pas de champs prénoms / champs identité pour membres