requireAccess($session::SECTION_ACCOUNTING, $session::ACCESS_READ); $users = new Users\Users; f(['id' => 'required|numeric']); $id = (int) qg('id'); $sign_tag = UserTemplate\Functions::signature(); // 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 = $users->get($f->receveur_id); // l'identité du membre peut être redéfinie dans la configuration des membres $name_fields = \Paheko\Users\DynamicFields::getNameFields(); array_walk($name_fields, function(&$elem) use ($c) { $elem = $c->$elem; }); $nom_client = implode(" ", $name_fields); if (preg_match('/^ +$/', $nom_client)) { $nom_client = "** ABSENT **"; } // adresse, code postal et ville peuvent être redéfini(e)s dans la configuration du plugin $adresse_client = $plugin->getConfig('adresse_client'); if ($adresse_client != null && $c->$adresse_client != null) { $c->adresse = $c->$adresse_client; } $code_postal_client = $plugin->getConfig('code_postal_client'); if ($code_postal_client != null && $c->$code_postal_client != null) { $c->code_postal = $c->$code_postal_client; } $ville_client = $plugin->getConfig('ville_client'); if ($ville_client != null && $c->$ville_client != null) { $c->ville = $c->$ville_client; } foreach(['ville','code_postal','adresse'] as $v) { if($c->$v == '') { $c->$v = '[À RENSEIGNER DANS LA FICHE MEMBRE]'; } } } else { $c = $client->get($f->receveur_id); $nom_client = $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 switch ($f->type_facture) { case FACT: $doc = 'Facture n° '. $f->numero; $txtemis = $doc . " - Émise le " . $emission; $txtdest = "Adressée à :"; break; case DEVIS: $doc = 'Devis n° '. $f->numero; $txtemis = $doc . " - Émis le " . $emission; $txtdest = "Adressé à :"; break; } // utiliser l'adresse configurée dans le plugin sinon celle de l'asso sinon rien ! if ($plugin->getConfig('rue_asso') != null && $plugin->getConfig('cp_asso') != null && $plugin->getConfig('ville_asso') != null) { $adresse = (($plugin->getConfig('numero_rue_asso') != null) ? $plugin->getConfig('numero_rue_asso') . " " : "") . $plugin->getConfig('rue_asso') . "" . $plugin->getConfig('cp_asso') . " " . $plugin->getConfig('ville_asso'); } else if ($config->get('org_address') != null) { $adresse = str_replace("\n", '', $config->get('org_address')); } else { $adresse = ""; } $logo=''; if ($plugin->getConfig('logo')) { $logo = ''; } $asso = // 'Émis par :'. ''.$config->get('org_name')."". $adresse ."". (($t = $plugin->getConfig('rna_asso'))?"RNA : $t":''). (($t = $plugin->getConfig('siret_asso'))?"SIRET : " . implode(' ', str_split($t, 3)) . "":''). (($t = $config->get('email_asso'))?"Email : $t":''). (($t = $config->get('site_asso'))?"Site web : $t":''); $receveur = $txtdest.''. ''.$nom_client.''. $c->adresse."". $c->code_postal.' '.$c->ville."". (($t = $c->siret)?"SIREN/SIRET : " . implode(' ', str_split($t, 3)) . "":''). (($t = $c->email)?"Email : $t":''). (($t = $c->telephone)?"Tel : $t":''); $total = Utils::money_format($f->total, ',', ' '); // Devis et facture { $echeance = ($f->type_facture?'Échéance de paiement':'Échéance du devis')." : ".$echeance; if ($f->type_facture == FACT) { $reglee = !$f->reglee?'Cette facture est en attente de règlement.':'Cette facture a été réglée.'; } else { $reglee = ""; } $footer = str_replace("\n", '', $plugin->getConfig('footer') ?? '[Pied de page à configurer]'); $ttc = $plugin->getConfig('ttc') ? 'TTC':'HT'; // Génération du contenu de la facture ob_start(); echo << Contenu - $doc Désignations Prix 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++; } echo << TotalNet à payer $total €({$ttc}) EOF; $content = ob_get_clean(); } //-- Layout du document ob_start(); echo << {$doc}_{$emission} $txtemis $logo $asso $receveur $content EOF; $html = ob_get_clean(); if(qg('d') !== null) { $filename = 'Print'; if (preg_match('!(.*)!U', $html, $match)) { $filename = str_replace(" ", "_", 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; }
$txtemis