From 6a02ddfe87a00a987d90a5db655a6476ad9d8647 Mon Sep 17 00:00:00 2001 From: Noizette Date: Wed, 10 Nov 2021 23:27:07 +0100 Subject: [PATCH] PDF pour devis/facture/cotisation --- templates/facture.tpl | 4 +- www/admin/_inc.php | 1 - www/admin/pdf.php | 455 ++++++++++++++++++------------------------ 3 files changed, 196 insertions(+), 264 deletions(-) diff --git a/templates/facture.tpl b/templates/facture.tpl index 6aec27e..4c29ed8 100644 --- a/templates/facture.tpl +++ b/templates/facture.tpl @@ -11,7 +11,7 @@ {linkbutton shape="delete" href="%sfacture_supprimer.php?id=%d"|args:$plugin_url,$facture.id label="Supprimer ce document"} -
- +
+
{include file="admin/_foot.tpl"} diff --git a/www/admin/_inc.php b/www/admin/_inc.php index 1a10bc7..9f27261 100644 --- a/www/admin/_inc.php +++ b/www/admin/_inc.php @@ -9,7 +9,6 @@ define('COTIS', 3); use Garradin\Plugin\Facturation\Facture; use Garradin\Plugin\Facturation\Client; -use Garradin\Plugin\Facturation\GenDon; $client = new Client; $facture = new Facture; diff --git a/www/admin/pdf.php b/www/admin/pdf.php index d01da63..2a78d3d 100644 --- a/www/admin/pdf.php +++ b/www/admin/pdf.php @@ -3,7 +3,6 @@ namespace Garradin; require_once __DIR__ . '/_inc.php'; -require_once PLUGIN_ROOT . '/lib/MPDF/vendor/autoload.php'; $session->requireAccess($session::SECTION_ACCOUNTING, $session::ACCESS_READ); @@ -47,12 +46,6 @@ catch(UserException $e) // Création du PDF -$pdf = new \Mpdf\Mpdf([ - 'default_font_size' => 10, - 'default_font' => 'dejavusans', -]); -$pdf->SetAuthor($config->get('nom_asso')); - $emission = $f->date_emission->format('d/m/Y'); if (isset($f->date_echeance)) @@ -61,12 +54,20 @@ if (isset($f->date_echeance)) } // Génération factures et devis -if ($f->type_facture < 2) +if ($f->type_facture != CERFA) { - ob_start(); - - $doc = ($f->type_facture?'Facture':'Devis').' n°'.$f->numero; - $pdf->SetTitle($doc.' - '.$emission); + switch ($f->type_facture) + { + case FACT: + $doc = 'Facture n°'. $f->numero; + break; + case DEVIS: + $doc = 'Devis n°'. $f->numero; + break; + case COTIS: + $doc = 'Reçu de cotisation n°'. $f->numero; + break; + } $asso = // 'Émis par :

'. @@ -86,91 +87,18 @@ if ($f->type_facture < 2) (($t = $c->telephone)?"Tel : $t
":''); $total = Utils::money_format($f->total, ',', ' '); - $echeance = ($f->type_facture?'Échéance de paiement':'Échéance du devis')." : ".$echeance; - $reglee = !$f->reglee?'Cette facture est en attente de règlement.':'Cette facture a été reglée.'; - $footer = str_replace("\n", '
', $plugin->getConfig('footer')); + + // Devis et facture + if ($f->type_facture != COTIS) + { + $echeance = ($f->type_facture?'Échéance de paiement':'Échéance du devis')." : ".$echeance; + $reglee = !$f->reglee?'Cette facture est en attente de règlement.':'Cette facture a été reglée.'; + $footer = str_replace("\n", '
', $plugin->getConfig('footer')); -echo << - - - - - -

-$doc - Émis le $emission -

- - - - - - -
$asso$receveur
- -
+ ob_start(); + echo << Contenu - $doc
@@ -190,18 +118,18 @@ $doc - Émis le $emission EOF; - $i = 1; - foreach($f->contenu as $k=>$v) - { - echo ''; - echo str_replace("\n", '
', $v['designation']); - echo ''; - echo Utils::money_format($v['prix'], ',', ' ') .' €'; - echo ''; - $i++; - } + $i = 1; + foreach($f->contenu as $k=>$v) + { + echo ''; + echo str_replace("\n", '
', $v['designation']); + echo ''; + echo Utils::money_format($v['prix'], ',', ' ') .' €'; + echo ''; + $i++; + } -echo << @@ -210,8 +138,6 @@ echo << - -
Détails

@@ -223,13 +149,163 @@ echo << $footer

-
EOF; + $content = ob_get_clean(); + + } + else // Reçu de cotisation + { + $lieu = $plugin->getConfig('ville_asso'); + $intitule = $f->contenu['intitule']; + + $souscription = date('d/m/Y', strtotime($f->contenu['souscription'])); + + if($f->contenu['expiration'] == '1970-01-01') + { + $expiration = "jour même, s'agissant d'une cotisation ponctuelle."; + } + else { + $expiration = date('d/m/Y', strtotime($f->contenu['expiration'])); + } + + $content = << + Reçu de votre cotisation - $doc + +
+
+

À $lieu, le $emission,

+

Bonjour,

+ +

Nous accusons réception de votre cotisation « $intitule » reçue le $emission et nous vous en remercions.

+

Nous reconnaissons que vous avez acquitté la somme de {$total} €.
111 + Votre adhésion sera donc effective à compter du $souscription jusqu’au $expiration.

+
+ +

Nous vous prions de recevoir, chère adhérente, cher adhérent, nos meilleures salutations,

+
+

-représentant·e de l'asso-

+
+

Nous vous rappelons que la cotisation n’est pas soumise à la TVA et qu’elle ne donne pas lieu à la délivrance d’une facture. Elle n’ouvre 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.

+
+EOF; + + } + + // Layout du document + ob_start(); + +echo << + + +${doc}_${emission} + + + + +

+$doc - Émis le $emission +

+ + + + + + +
$asso$receveur
+
+ +$content + + + +EOF; $html = ob_get_clean(); - $pdf->WriteHTML($html); } // End if facture+devis elseif ($f->type_facture == CERFA) @@ -323,163 +399,20 @@ elseif ($f->type_facture == CERFA) $pdf->Image($uri, 150, 245, 32, 0, 'PNG' ); // Emplacement de la signature avec restriction de largeur pour tenir dans sur la case. */ } // End if cerfa -elseif ($f->type_facture == 3) -{ - // Reçu de cotisation crade et en rien liés aux cotisations pour le moment - ob_start(); - - $doc = 'Reçu n°'.$f->numero; - $pdf->SetTitle($doc.' - '.$emission); - - $asso = - // 'Émis par :

'. - ''.$config->get('nom_asso')."
". - str_replace("\n", '
', $config->get('adresse_asso'))."
". - (($t = $plugin->getConfig('rna_asso'))?"RNA : $t
":''). - (($t = $plugin->getConfig('siret_asso'))?"SIRET : $t
":''). - (($t = $config->get('email_asso'))?"Email : $t
":''). - (($t = $config->get('site_asso'))?"Site web : $t
":''); - - $receveur = - 'Adressé à :

'. - ''.$c->identite.'
'. - $c->adresse."
". - $c->code_postal.' '.$c->ville."
". - (($t = $c->email)?"Email : $t
":''). - (($t = $c->telephone)?"Tel : $t
":''); - - $total = $f->total / 100; - $total = number_format($total, 2, ',', ' '); - - $lieu = $plugin->getConfig('ville_asso'); - $intitule = $f->contenu['intitule']; - - $souscription = date('d/m/Y', strtotime($f->contenu['souscription'])); - - if($f->contenu['expiration'] == '1970-01-01') - { - $expiration = "jour même, s'agissant d'une cotisation ponctuelle."; - } - else { - $expiration = date('d/m/Y', strtotime($f->contenu['expiration'])); - } - - - echo << - - - - -
-

-$doc - Émis le $emission -

- - - - - - -
$asso$receveur
-
-
- Reçu de votre cotisation - $doc -
-
- -

-Bonjour, -

-À $lieu, le $emission, -

- -Nous accusons réception de votre cotisation « $intitule » reçue le $emission et nous vous en remercions. -

-Nous reconnaissons que vous avez acquitté la somme de {$total} €. -
-Votre adhésion sera donc effective à compter du $souscription jusqu’au $expiration. -


- -Nous vous prions de recevoir, chère adhérente, cher adhérent, nos meilleures salutations, -


--représentant·e de l'asso- -


-Nous vous rappelons que la cotisation n’est pas soumise à la TVA et qu’elle ne donne pas lieu à la délivrance d’une facture. Elle n’ouvre 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. -EOF; - -$html = ob_get_clean(); -$pdf->WriteHTML($html); - -} // End if reçu cotis if(qg('d') !== null) { - $t = \Mpdf\Output\Destination::DOWNLOAD; + $filename = 'Print'; + if (preg_match('!(.*)!U', $html, $match)) { + $filename = trim($match[1]); + } + + header('Content-type: application/pdf'); + header(sprintf('Content-Disposition: attachment; filename="%s.pdf"', Utils::safeFileName($filename))); + Utils::streamPDF($html); } else { - $t = \Mpdf\Output\Destination::INLINE; + echo $html; } - -$pdf->Output( - ($f->type_facture?'Facture':'Devis').' '.$f->numero - . ' du '.$emission - .'.pdf', $t);