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 <<
EOF;
if ($f->type_facture == DEVIS) {
echo <<
EOF;
$i = 1;
foreach($f->contenu as $k=>$v)
{
echo '
Désignations
Prix
';
$i++;
}
echo <<';
echo str_replace("\n", '
', $v['designation']);
echo '';
echo Utils::money_format($v['prix'], ',', ' ') .' €';
echo '
Total
Net à payer$total €
({$ttc})
$txtemis
$logo | $asso | $receveur |