requireAccess($session::SECTION_ACCOUNTING, $session::ACCESS_READ); $membres = new Membres; qv(['id' => 'required|numeric']); $id = (int) qg('id'); // Vérification que le document existe if (!$f = $facture->get($id)) { throw new UserException("Ce document n'existe pas."); } $moyen_paiement = $facture->getMoyenPaiement($f->moyen_paiement); // Récupération infos membre try { if ($f->receveur_membre) { $c = $membres->get($f->receveur_id); $c->identite = $c->$identite; foreach(['ville','code_postal','adresse'] as $v) { if($c->$v == '') { $c->$v = '[A RENSEIGNER DANS LA FICHE MEMBRE]'; } } } else { $c = $client->get($f->receveur_id); $c->identite = $c->nom; } } catch(UserException $e) { $form->addError($e); } // Formatage dates $emission = $f->date_emission->format('d/m/Y'); if (isset($f->date_echeance)) { $echeance = $f->date_echeance->format('d/m/Y'); } // -- Création du PDF // Génération factures, devis et cotisation if ($f->type_facture != CERFA) { 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 :

'. ''.$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 = Utils::money_format($f->total, ',', ' '); // 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')); $ttc = $plugin->getConfig('ttc') ? 'TTC':'HT'; // Génération du contenu de la facture ob_start(); echo << Contenu - $doc
EOF; $i = 1; foreach($f->contenu as $k=>$v) { echo ''; $i++; } echo <<
Désignations Prix
'; echo str_replace("\n", '
', $v['designation']); echo '
'; echo Utils::money_format($v['prix'], ',', ' ') .' €'; echo '
Total
Net à payer
$total €
({$ttc})
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'])); } // Génération du contenu du reçu de cotisation $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(); } // Génération du CERFA elseif ($f->type_facture == CERFA) { $doc = 'Reçu de don n°'. $f->numero; $url = WWW_URL; $libelles = $facture->listTextesCerfa(false); $t['numero'] = $f->numero; $t['nom_asso'] = $config->get('nom_asso'); $t['n_rue_asso'] = $plugin->getConfig('numero_rue_asso'); $t['rue_asso'] = $plugin->getConfig('rue_asso'); $t['cp_asso'] = $plugin->getConfig('cp_asso'); $t['ville_asso'] = $plugin->getConfig('ville_asso'); $t['objet0'] = $plugin->getConfig('objet_0'); $t['objet1'] = $plugin->getConfig('objet_1'); $t['objet2'] = $plugin->getConfig('objet_2'); $t['nom'] = $c->identite; $t['adresse'] = $c->adresse; $t['cp'] = $c->code_postal; $t['ville'] = $c->ville; $t['total'] = '***'.Utils::money_format($f->total).'***'; $t['total_lettre'] = numfmt_create('fr_FR', \NumberFormatter::SPELLOUT)->format($f->total/100). ' euros'; $t['d'] = ($f->date_emission->format('d')); $t['m'] = ($f->date_emission->format('m')); $t['Y'] = ($f->date_emission->format('Y')); $t['forme'] = $f->contenu['forme']; $t['nature'] = $f->contenu['nature']; $t['texte'] = $libelles[$f->contenu['texte']]; $t['art200'] = $t['art238'] = $t['art885'] = ''; if($plugin->getConfig('droit_art200')){ $t['art200'] = 'X'; } if($plugin->getConfig('droit_art238bis')){ $t['art238'] = 'X'; } if($plugin->getConfig('droit_art885-0VbisA')){ $t['art885'] = 'X'; } // forme du don switch ($t['forme']){ case '1': $t['frm'] = 'left: 15mm;'; break; case '2': $t['frm'] = 'left: 57.3mm;'; break; case '3': $t['frm'] = 'left: 115.2mm;'; break; case '4': $t['frm'] = 'left: 175.2mm;'; } // nature du don switch ($t['nature']){ case '1': $t['nat'] = 'left: 15mm;'; break; case '2': $t['nat'] = 'left: 57.3mm;'; break; case '3': $t['nat'] = 'left: 115.2mm;'; } // moyen de paiement switch ($f->moyen_paiement){ case 'ES': $t['pos'] = 'left: 15mm;'; break; case 'CH': $t['pos'] = 'left: 57.3mm;'; break; default: $t['pos'] = 'left: 115.2mm;'; } $t['d2'] = ($f->date_echeance->format('d')); $t['m2'] = ($f->date_echeance->format('m')); $t['Y2'] = ($f->date_echeance->format('Y')); ob_start(); echo << {$doc}_{$emission}
{$t['numero']}
{$t['nom_asso']}
{$t['n_rue_asso']}
{$t['rue_asso']}
{$t['cp_asso']}
{$t['ville_asso']}
{$t['objet0']}
{$t['objet1']}
{$t['objet2']}
X
{$t['nom']}
{$t['adresse']}
{$t['cp']}
{$t['ville']}
{$t['total']}
{$t['total_lettre']}
{$t['d']}
{$t['m']}
{$t['Y']}
{$t['art200']}
{$t['art238']}
{$t['art885']}
X
X
{$t['texte']}
X
{$t['d2']}
{$t['m2']}
{$t['Y2']}
EOF; $html = ob_get_clean(); } // End if cerfa if(qg('d') !== null) { $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 { echo $html; }