Changeset 80220 in spip-zone


Ignore:
Timestamp:
Jan 23, 2014, 3:32:53 PM (6 years ago)
Author:
marcimat@…
Message:

Composition n'est pas obligatoire (pour l'instant). On évite une requete SQL en erreur si pas là.
On ajoute une autre fonction de calcul de numéro de facture (un exemple parmi d'autre).

Location:
_plugins_/factures/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/factures/trunk/inc/facture_reference.php

    r71903 r80220  
    1616 * Calcul un numéro de référence d'une facture
    1717 *
    18  * Ici on ajoute 1 a la précédente facture si on en trouve une,
     18 * Ici on ajoute +1 au dernier numéro de la précédente facture si on en trouve une,
    1919 * sinon 'F-YYYY-1', soit F-2013-1
     20 *
     21 * @note
     22 *     Cette fonction est à surcharger selon ses choix de nommages.
    2023 *
    2124 * @param array $valeurs
     
    3134**/
    3235function inc_facture_reference_dist($valeurs) {
     36
     37        // composition n'est pas obligatoire ?
     38        // une composition peut indiquer un type de facture (devis, proforma, avoir)
     39        $trouver_table = charger_fonction('trouver_table', 'base');
     40        $desc = $trouver_table('spip_factures');
     41        $compo = isset($desc['field']['composition']) and $desc['field']['composition'];
     42
     43        $where = array();
     44        if ($compo) {
     45                $where[] = 'composition = '. sql_quote('');
     46        }
     47
    3348        // par défaut, on prend la dernière, et on ajoute 1 !
    34         $precedent = sql_getfetsel('num_facture', 'spip_factures',
    35                 // facture… de type facture
    36                 'composition = '. sql_quote(''),
    37                 '', 'date_facture DESC', '0,1');
     49        $precedent = sql_getfetsel('num_facture', 'spip_factures', $where, '', 'date_facture DESC', '0,1');
     50
    3851        if ($precedent) {
    3952                if (preg_match('/([0-9]+)$/', $precedent, $matches)) {
    4053                        $num = $matches[1] + 1;
    4154                        // des 0 avant, tel que 055 -> 056 ou 099 -> 100
    42                         while (strlen($matches[1]) > strlen($num)) {
    43                                 $num = '0' . $num;
    44                         }
     55                        str_pad($num, $matches[1], "0", STR_PAD_LEFT);
    4556                        return substr($precedent, 0, -strlen($matches[1])) . $num;
    4657                } else {
     
    5263        return 'F-' . date('Y', time()) . '-1';
    5364}
     65
     66
     67/**
     68 * Calcul un numéro de référence d'une facture, format F-YY-NJOUR-NN
     69 * tel que F-14-045-01
     70 *
     71 * On calcule la facture du jour, si une existe déjà on incrémente le NN
     72 *
     73 * @exemple
     74 *     ```
     75 *     // surcharge du calcul par défaut d'une référence de facture
     76 *     function inc_facture_reference($valeurs) {
     77 *         include_spip('inc/facture_reference');
     78 *         return inc_facture_reference_jours($valeurs);
     79 *     }
     80 *     ```
     81 *
     82 * @param array $valeurs
     83 *     Valeurs de chargement du formulaire CVT.
     84 *     Contient notamment les champs :
     85 *
     86 *     - date_facture : date de la facture
     87 *     - id_organisation : organisation facturée
     88 *     - id_organisation_emettrice : organisation qui facture
     89 *
     90 * @return string
     91 *     Numéro de référence de la nouvelle facture
     92**/
     93function inc_facture_reference_jours($valeurs) {
     94        $time = strtotime($valeurs['date_facture']);
     95        $NN = 1;
     96        $annee = date('y', $time);
     97        $jour  = str_pad(date('z', $time), 3, "0", STR_PAD_LEFT);
     98        do {
     99                $num_facture = "F-$annee-$jour-" . str_pad($NN, 2, "0", STR_PAD_LEFT);
     100                $NN++;
     101        } while (sql_getfetsel('num_facture', 'spip_factures', 'num_facture=' . sql_quote($num_facture)));
     102
     103        return $num_facture;
     104}
  • _plugins_/factures/trunk/lang/facture_fr.php

    r71839 r80220  
    1919        'explication_libelle_facture' => 'Saisissez un libellé explicite pour la facture ou le devis',
    2020        'explication_montant' => 'Indiquez le montant total de la facture ou corrigez celui calculé par SPIP à partir des lignes de factures',
    21         'explication_nota_bene' => 'Indiquez un nota-bene qui apparaitra à la fin de la facture ou du devis (équivalent des \"mentions manuscrites\")',
     21        'explication_nota_bene' => 'Indiquez un nota-bene qui apparaitra à la fin de la facture ou du devis (équivalent des « mentions manuscrites »)',
    2222        'explication_num_devis' => 'Indiquez une référence à un devis précédent (le cas échéant)',
    2323        'explication_num_facture' => 'Corrigez l\'identifiant de la facture ou corriges celui proposé par défaut',
Note: See TracChangeset for help on using the changeset viewer.