From f321e83e20db0e49035c2b9f0cc76c9568fde3cb Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Fri, 6 Sep 2024 21:40:27 +0200 Subject: [PATCH] =?UTF-8?q?Simplification=20:=20suppression=20g=C3=A9n?= =?UTF-8?q?=C3=A9ration=20re=C3=A7u=20dons=20et=20cotisations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/_facture_common.php | 86 +-------- admin/_inc.php | 8 +- admin/pdf.php | 386 ++++++++------------------------------ lib/Facture.php | 99 +--------- templates/_form.tpl | 112 +---------- templates/_js.tpl | 8 +- templates/aide.tpl | 2 - templates/clients.tpl | 2 +- templates/config.tpl | 21 +-- 9 files changed, 102 insertions(+), 622 deletions(-) diff --git a/admin/_facture_common.php b/admin/_facture_common.php index ecc0c30..8876d57 100644 --- a/admin/_facture_common.php +++ b/admin/_facture_common.php @@ -21,14 +21,10 @@ $db = DB::getInstance(); $step = false; $radio = $liste = $designations = $prix = []; -$fields = $facture->recu_fields; - $moyens_paiement = $facture->listMoyensPaiement(true); $tpl->assign('moyens_paiement', $moyens_paiement); $tpl->assign('moyen_paiement', f('moyen_paiement') ?: 'ES'); -$tpl->assign('moyen_paiement_cerfa', f('moyen_paiement_cerfa') ?: 'ES'); - $tpl->assign('formes_don', array('1' => 'Acte authentique', '2' => 'Acte sous seing privé', '3' => 'Don manuel', @@ -36,7 +32,6 @@ $tpl->assign('formes_don', array('1' => 'Acte authentique', $tpl->assign('natures_don', array('1' => 'Numéraire', '2' => 'Chèque', '3' => 'Virement, CB; ...')); -$tpl->assign('textes_don', $facture->listTextesCerfa()); if ( !$target ) { f(['id' => 'required|numeric']); @@ -85,16 +80,6 @@ $form->runIf(f('save') && !$form->hasErrors(), $data['total'] = $data['toto']; unset($data['toto']); } - elseif ( f('type') == CERFA ) - { - $data['moyen_paiement'] = f('moyen_paiement_cerfa'); - $data['contenu'] = [ - 'forme' => f('forme_don'), - 'nature' => f('nature_don'), - 'texte' => f('texte_don')]; - $data['total'] = Utils::moneyToInteger(f('total')); - unset($data['toto']); - } if (f('base_receveur') == 'client') { $data['receveur_membre'] = 0; @@ -118,62 +103,9 @@ $form->runIf(f('save') && !$form->hasErrors(), }, $csrf_key); -$form->runIf(f('select_cotis') && !$form->hasErrors(), - function () use ($step) - { - $step = true; - }, 'add_cotis_1'); - -$form->runIf(f('add_cotis') && !$form->hasErrors(), - function () use ($radio, $fields, $facture, $form) - { - $radio['type'] = f('cotisation'); - try - { - $num = (int) str_replace('cotis_', '', $radio['type']); - foreach($fields as $field) - { - $cotis[$field] = f($field.'_'.$num); - } - - $r = $facture->getCotis(f('membre_cotis'), $cotis['id']); - $r = $r[0]; - - $data = [ - 'type_facture' => COTIS, - 'numero' => f('numero_facture'), - 'receveur_membre' => 1, - 'receveur_id' => f('membre_cotis'), - 'date_emission' => f('date_emission'), - 'moyen_paiement' => 'AU', - 'total' => $r->paid_amount ?? $r->amount, - 'contenu' => ['id' => $cotis['id'], - 'intitule' => $cotis['label'], - 'souscription' => $cotis['date'], - 'expiration' => $cotis['expiry'] ] - ]; - - } - catch (UserException $e) - { - $form->addError($e->getMessage()); - } - }, 'add_cotis_2'); - if (! $form->hasErrors()) { - if ($step) - { - try - { - $liste = $facture->getCotis((int)f('membre_cotis')); - } - catch (UserException $e) - { - $form->addError($e->getMessage()); - } - } - elseif (count($data) > 0) + if (count($data) > 0) { if ($target) { @@ -205,19 +137,13 @@ if ($target) $doc['base_receveur'] = $f->receveur_membre ? 'membre' : 'client'; $doc['client'] = $f->receveur_id; $doc['membre'] = $f->receveur_id; - - if ( $f->type_facture == CERFA ) { - $doc['forme_don'] = $f->contenu['forme']; - $doc['nature_don'] = $f->contenu['nature']; - $doc['texte_don'] = $f->contenu['texte']; - } } // Type du document: $type = qg('t') ? (int) qg('t') : null; // Si le type est défini dans l'URL - if (in_array($type, [DEVIS, FACT, CERFA, COTIS], true)) + if (in_array($type, [DEVIS, FACT], true)) { $radio['type'] = $type; } // ... s'il a été rempli dans le formulaire envoyé @@ -246,14 +172,6 @@ else $doc['date_emission'] = f('date_emission') ?: $f->date_emission; $doc['date_echeance'] = f('date_echeance')?: $f->date_echeance; // Smarty m'a saoulé pour utiliser form_field|date_fr:--- - /* modif DD -- CERFA -------------------------------------- */ - if ( $f->type_facture == CERFA ) { - $doc['total'] = $f->total; - $doc['forme_don'] = $f->contenu['forme']; - $doc['nature_don'] = $f->contenu['nature']; - $doc['texte_don'] = $f->contenu['texte']; - } - $radio['type'] = f('type')??$doc['type']; } $tpl->assign('types_details', $facture->types); diff --git a/admin/_inc.php b/admin/_inc.php index 582e462..da3cd9d 100644 --- a/admin/_inc.php +++ b/admin/_inc.php @@ -7,8 +7,6 @@ use Paheko\Utils; define('DEVIS', 0); define('FACT', 1); -define('CERFA', 2); -define('COTIS', 3); const PATTERNS_LIST = [ null => 'Aucun, le numéro sera à spécifier manuellement pour chaque document', @@ -48,11 +46,11 @@ $tpl->register_function('money_fac', function (array $params) if (!isset($user)) { $user = false; - } + } if (!isset($name)) { - $name = 'prix[]'; + $name = 'prix[]'; } if (null !== $current_value && !$user) { @@ -62,7 +60,7 @@ $tpl->register_function('money_fac', function (array $params) if (null !== $current_value) { $current_value = htmlspecialchars($current_value, ENT_QUOTES, 'UTF-8'); } - + $currency = Config::getInstance()->get('monnaie'); return sprintf('%s', $name, $current_value, $currency); } diff --git a/admin/pdf.php b/admin/pdf.php index c8fa8c4..3bd9d76 100644 --- a/admin/pdf.php +++ b/admin/pdf.php @@ -67,82 +67,74 @@ if (isset($f->date_echeance)) // -- Création du PDF -// Génération factures, devis et cotisation -if ($f->type_facture != CERFA) +// Génération factures, devis +switch ($f->type_facture) { - 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; - case COTIS: - $doc = 'Reçu de cotisation n° '. $f->numero; - $txtemis = $doc . " - Émis le " . $emission; - $txtdest = "Adressé à :"; - break; - } + 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 = ""; - } +// 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
":''); +$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.'
'. - ''.$c->nom.'
'. - $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
":''); +$receveur = + $txtdest.'
'. + ''.$c->nom.'
'. + $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, ',', ' '); +$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é réglée.'; - $footer = str_replace("\n", '
', $plugin->getConfig('footer') ?? '[Pied de page à configurer]'); - $ttc = $plugin->getConfig('ttc') ? 'TTC':'HT'; +// Devis et facture +{ + $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é réglée.'; + $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 @@ -162,18 +154,18 @@ if ($f->type_facture != CERFA) 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 << @@ -196,52 +188,14 @@ EOF; EOF; - $content = ob_get_clean(); + $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'])); +//-- Layout du document - 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 << @@ -355,191 +309,7 @@ EOF; 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['org_name'] = $config->get('org_name'); - $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->nom; - $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['org_name']}
-
{$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']}
- -
{$sign_tag}
-
- - -EOF; - - $html = ob_get_clean(); - -} // End if cerfa +$html = ob_get_clean(); if(qg('d') !== null) diff --git a/lib/Facture.php b/lib/Facture.php index 9baabf8..9433be3 100644 --- a/lib/Facture.php +++ b/lib/Facture.php @@ -15,17 +15,15 @@ class Facture const TYPES_NAMES = [ DEVIS => 'Devis', FACT => 'Facture', - CERFA => 'Reçu fiscal', - COTIS => 'Reçu de cotisation', ]; private $keys = [ - 'type_facture', // 0 : devis, 1 : facture, 2 : reçu cerfa, 3 : reçu cotis + 'type_facture', // 0 : devis, 1 : facture 'numero', 'receveur_membre', 'receveur_id', - 'date_emission', // Reçus : date du don - 'date_echeance', // Reçus : date d'édition du reçu + 'date_emission', + 'date_echeance', 'reglee', 'archivee', 'moyen_paiement', @@ -44,16 +42,6 @@ class Facture 'accounts' => [], 'label' => 'Facture', 'help' => ''], - CERFA => [ - 'id' => CERFA, - 'accounts' => [], - 'label' => 'Reçu fiscal', - 'help' => 'Reçu fiscal pour un don (membre ou client)'], - COTIS => [ - 'id' => COTIS, - 'accounts' => [], - 'label' => 'Reçu de cotisation', - 'help' => 'Reçu pour une cotisation payée par un·e membre'], ]; public function __construct() @@ -88,18 +76,12 @@ class Facture } if ($datas[$k] < 2) { $fac = true; - $cerfa = false; - $recu = false; } elseif ($datas[$k] == 2) { $fac = false; - $cerfa = true; - $recu = false; } elseif ($datas[$k] == 3) { $fac = false; - $cerfa = false; - $recu = true; } break; case 'receveur_membre': @@ -162,21 +144,9 @@ class Facture throw new UserException("Toutes les désignations/prix sont vides."); } } - elseif ($cerfa) - { - - } - elseif ($recu) - { - // $fields = ['id', 'intitule', 'date', 'expiration']; - // foreach ($datas[$k]as $) - } $datas[$k] = json_encode($datas[$k]); break; case 'total': - if ($cerfa && $datas[$k] < 1) { - throw new UserException('Le total ne peut être inférieur à 1€ pour les reçus (bug encore non résolu).'); - } if ($fac && !isset($datas['contenu'])) { throw new UserException("Pas de contenu fourni pour vérifier le total."); } @@ -230,15 +200,6 @@ class Facture $type = 'FACT'; $t = 'F'; } - elseif ($type == CERFA) { - $type = 'CERFA'; - $t = 'RF'; - } - else { - $type = 'COTIS'; - $t = 'RC'; - } - $year = $date->format('Y'); $y = $date->format('y'); @@ -415,21 +376,9 @@ class Facture // Remplir le contenu $content = json_decode((string)$row->contenu); - if ($row->type_facture == COTIS && isset($content->intitule, $content->souscription)) { - $row->contenu = sprintf("Cotisation %s\nSouscrite le %s", - $content->intitule, - Utils::date_fr($content->souscription, 'd/m/Y') - ); - } - elseif ($row->type_facture != CERFA) { - $row->contenu = implode("\n", array_map(function ($row) use ($currency) { - return sprintf('%s : %s %s', $row->designation, Utils::money_format($row->prix), $currency); - }, (array)$content)); - } - else - { - $row->contenu = ''; - } + $row->contenu = implode("\n", array_map(function ($row) use ($currency) { + return sprintf('%s : %s %s', $row->designation, Utils::money_format($row->prix), $currency); + }, (array)$content)); }); return $list; @@ -499,31 +448,6 @@ class Facture return DB::getInstance()->test('plugin_facturation_factures', 'receveur_membre = ? AND receveur_id = ?', $base, $id); } - // ** Pour type reçu ** - - public $recu_fields = ['id', 'label', 'amount', 'date', 'expiry', 'paid', 'paid_amount']; - - public function getCotis(int $user_id, int $su_id = null) - { - $where = 'WHERE su.id_user = ?'; - if (null !== $su_id) - { - $where .= ' AND su.id = '.$su_id; - } - - $sql = 'SELECT su.id, s.label, su.date, MAX(su.expiry_date) as expiry, sf.label as fee, sf.amount as amount, su.paid, SUM(tl.debit) as paid_amount - FROM services_users su - INNER JOIN services s ON s.id = su.id_service - LEFT JOIN services_fees sf ON sf.id = su.id_fee - LEFT JOIN acc_transactions_users tu ON tu.id_service_user = su.id - LEFT JOIN acc_transactions_lines tl ON tl.id_transaction = tu.id_transaction - '.$where.' - GROUP BY su.id - ORDER BY su.date;'; - - return DB::getInstance()->get($sql, $user_id); - } - public function listMoyensPaiement($assoc = false) { $db = DB::getInstance(); @@ -538,17 +462,6 @@ class Facture } } - /* modif DD -- lecture et retour des textes de CERFA -- */ - public function listTextesCerfa($menu = true) - { - $db = DB::getInstance(); - - $sel = ($menu) ? 'id, menu' : 'id, texte'; - $query = 'SELECT '.$sel.' FROM "plugin_facturation_txt_cerfa" WHERE 1 ORDER BY id ;'; - - return $db->getAssoc($query); - } - public function getMoyenPaiement($code) { $db = DB::getInstance(); diff --git a/templates/_form.tpl b/templates/_form.tpl index 3e6029d..8f78d7e 100644 --- a/templates/_form.tpl +++ b/templates/_form.tpl @@ -24,8 +24,6 @@
Créer un devis Créer une facture - Créer un reçu fiscal - Créer un reçu de cotisation
{input type="text" name="numero_facture" maxlength=18 label="Numéro du document" required=$require_number source=$doc} @@ -38,27 +36,21 @@ {/if} {input type="date" name="date_emission" default=$date label="Date d'émission" required=1 source=$doc} -
-

Date du versemen du don

-
-
+
{input type="date" name="date_echeance" default=$date label="Date d'échéance" required=1 source=$doc} -
-

Date d'établissement du document

-
- + {input type="checkbox" name="reglee" value="1" label="Réglée" source=$doc data-types="t1"} -
+
{input type="checkbox" name="archivee" value="1" label="Archivée" source=$doc disabled="disabled"}
-
+
Client
@@ -113,14 +105,14 @@ {button label="Enlever" title="Enlever la ligne" shape="minus" min="2" name="remove_line"} - {foreach from=$designations item=designation key=key} + {foreach from=$designations item=designation key=key} {money_fac value=$prix[$key] user=$from_user} {button label="Enlever" title="Enlever la ligne" shape="minus" min="2" name="remove_line"} {/foreach} - {else} + {else} {money_fac name="prix_tpl[]"} @@ -139,102 +131,12 @@
- -
- Contenu -
- {input type="money" name="total" label="Montant du don" required=1 source=$doc default="0,0"} - {input type="select" name="forme_don" required=1 label="Forme du don" source=$doc options=$formes_don default=$doc.forme_don} - {input type="select" name="nature_don" required=1 label="Nature du don" source=$doc options=$natures_don default=$doc.nature_don} - {input type="select" name="texte_don" required=1 label="Texte explicatif" source=$doc options=$textes_don default=$doc.texte_don} - {input type="select" name="moyen_paiement_cerfa" required=1 label="Moyen de paiement" source=$doc options=$moyens_paiement default=$doc.moyen_paiement_cerfa} -
-
- -

+

{csrf_field key=$csrf_key} {button type="submit" name="save" label="Enregistrer" shape="right" class="main"}

-
- Membre -
-
-
- {input type="select" name="membre_cotis" label="Membre" options=$users required=1 default=$doc.membre} -
-
-
- -

- {csrf_field key="add_cotis_1"} - {button type="submit" name="select_cotis" label="Sélectionner" shape="right" class="main"} -

- - -{if $step} -
- Cotisation - {if count($liste)} -
-
Sélectionnez la cotisation concernée :
- - - - - - - - - - - - - - {foreach from=$liste item=cotis key=i} - {if !$cotis.paid} - {continue} - {/if} - - - {foreach from=$cotis item=element key=key} - {if $key == 'paid'} - {continue} - {/if} - - {/foreach} - - {/foreach} -
IdIntituléDate d'inscriptionExpiration d'expirationTarifMontantSomme payée
- {input type="radio" name="cotisation" value="%s"|args:$i} - - -
- -
-
- -

- {csrf_field key="add_cotis_2"} - {button type="submit" name="add_cotis" label="Enregistrer" shape="right" class="main"} -

- {else} -

Ce membre n'a aucune cotisation payée.

-
- {/if} -{/if} - {include file="%s/templates/_js.tpl"|args:$plugin_root} diff --git a/templates/_js.tpl b/templates/_js.tpl index 301ddae..bf382d3 100644 --- a/templates/_js.tpl +++ b/templates/_js.tpl @@ -19,8 +19,8 @@ function plus(){ var newdiv = document.createElement('tr'); newdiv.innerHTML = document.getElementById('Line1').innerHTML; - newdiv.getElementsByTagName('textarea')[0].setAttribute('name', 'designation[]'); - newdiv.getElementsByTagName('input')[0].setAttribute('name', 'prix[]'); + newdiv.getElementsByTagName('textarea')[0].setAttribute('name', 'designation[]'); + newdiv.getElementsByTagName('input')[0].setAttribute('name', 'prix[]'); newdiv.querySelector('.fact_rm_line button').onclick = function(){ this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode); updateSum(); @@ -33,12 +33,12 @@ $('#ajouter_ligne').onclick = plus; - a = document.querySelectorAll('[name="remove_line"]'); + a = document.querySelectorAll('[name="remove_line"]'); l = a.length; for(i = 0; i < l; i++) { a[i].onclick = function(){ this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode); - updateSum(); + updateSum(); }; } diff --git a/templates/aide.tpl b/templates/aide.tpl index 6f8c672..a66b7c2 100644 --- a/templates/aide.tpl +++ b/templates/aide.tpl @@ -17,8 +17,6 @@ -

Pensez à mettre une image en signature (cela sert pour les reçus fiscaux), cela se passe dans la {link href="!config/custom.php" label="configuration de Paheko, onglet personnalisation"}. Il est préférable d'avoir un fond transparent. -

  • Pour créer un reçu sur une cotisation, il vaut mieux utiliser le module {link href="!config/ext" label="Reçu de paiement"} intégré à Paheko.
  • Pour créer un reçu fiscal, il vaut mieux utiliser le module {link href="!config/ext" label="Reçus fiscaux"} intégré à Paheko.
  • diff --git a/templates/clients.tpl b/templates/clients.tpl index f0b037b..9c40f2c 100644 --- a/templates/clients.tpl +++ b/templates/clients.tpl @@ -14,7 +14,7 @@ {/if} {if $key == 'siret'} - diff --git a/templates/config.tpl b/templates/config.tpl index f2da195..eab9225 100644 --- a/templates/config.tpl +++ b/templates/config.tpl @@ -27,25 +27,6 @@ {input type="text" name="ville_asso" source=$conf label="Ville"} -
    - Objet -
    -
    obligatoire pour reçus fiscaux
    - {input type="text" name="objet_0" source=$conf label="Ligne 1" maxlength=95} - {input type="text" name="objet_1" source=$conf label="Ligne 2" maxlength=95} - {input type="text" name="objet_2" source=$conf label="Ligne 3" maxlength=95} -
    -
    - -
    - Droit à la réduction d'impôt -
    -
    obligatoire pour reçus fiscaux
    - {input type="checkbox" name="droit_art200" value="1" source=$conf label="Article 200"} - {input type="checkbox" name="droit_art238bis" value="1" source=$conf label="Article 238 bis"} - {input type="checkbox" name="droit_art885_0VbisA" value="1" source=$conf label="Article 885-0V bis A"} -
    -
    @@ -74,7 +55,7 @@ {input type="checkbox" name="unique_client_name" value="1" source=$conf label="Noms des clients uniques"} {input type="select" name="pattern" label="Format de numéro de document" required=false options=$patterns source=$conf}
    - F = Facture, D = Devis, RF = Reçu fiscal, RC = Reçu cotisation + F = Facture, D = Devis
    Pour personnaliser l'apparence de la facture, il faut pour l'instant se retrousser les manches et éditer soi-même le fichier www/admin/pdf.php du plugin !