diff --git a/admin/_facture_common.php b/admin/_facture_common.php index e0ac6e5..09d2e1a 100644 --- a/admin/_facture_common.php +++ b/admin/_facture_common.php @@ -89,6 +89,7 @@ $form->runIf(f('save') && !$form->hasErrors(), 'reglee' => f('reglee') == 1?1:0, 'archivee' => f('archivee') == 1?1:0, 'moyen_paiement' => f('moyen_paiement'), + 'nom_contact' => f('nom_contact'), 'toto' => 0 ]; $data['type_facture'] = f('type'); @@ -113,8 +114,12 @@ $form->runIf(f('save') && !$form->hasErrors(), unset($data['toto']); if (! isset($data['contenu'])) { throw new UserException("Aucune désignation ni aucun prix saisi !!"); - } - } + } + if (f('type') == FACT) { + $data['numero_commande'] = f('numero_commande'); + $data['reference_acheteur'] = f('reference_acheteur'); + } + } elseif ( f('type') == CERFA ) { $data['moyen_paiement'] = f('moyen_paiement_cerfa'); @@ -276,6 +281,9 @@ 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:--- + $doc['nom_contact'] = $f->nom_contact; + $doc['numero_commande'] = $f->numero_commande; + $doc['reference_acheteur'] = $f->reference_acheteur; /* modif DD -- CERFA -------------------------------------- */ if ( $f->type_facture == CERFA ) { $doc['total'] = $f->total; diff --git a/admin/pdf.php b/admin/pdf.php index 926c543..d953414 100644 --- a/admin/pdf.php +++ b/admin/pdf.php @@ -128,12 +128,17 @@ if ($f->type_facture != CERFA) $receveur = $txtdest.'
'. ''.$nom_client.'
'. + (($t = $f->nom_contact)?"Contact : $t
":''). $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
":''); - + if ($f->type_facture == FACT) { + $receveur .= + (($t = $f->numero_commande)?"Commande N° : $t
":''). + (($t = $f->reference_acheteur)?"Référence : $t
":''); + } $total = Utils::money_format($f->total, ',', ' '); // Devis et facture @@ -203,11 +208,11 @@ EOF; EOF; - if ($f->type_facture == DEVIS) { - echo <<type_facture == DEVIS) { + echo <<Bon pour accord, date et signature

EOF; - } + } $content = ob_get_clean(); diff --git a/data/schema.sql b/data/schema.sql index f3119bc..3263c43 100644 --- a/data/schema.sql +++ b/data/schema.sql @@ -10,7 +10,10 @@ CREATE TABLE IF NOT EXISTS plugin_facturation_factures ( archivee INTEGER DEFAULT 0, -- bool moyen_paiement TEXT NOT NULL, contenu TEXT NOT NULL, - total INTEGER DEFAULT 0 + total INTEGER DEFAULT 0, + nom_contact TEXT, + numero_commande TEXT, + reference_acheteur TEXT -- FOREIGN KEY(moyen_paiement) REFERENCES compta_moyens_paiement(code) ); diff --git a/lib/Facture.php b/lib/Facture.php index 6ffcd0d..1e0dd2f 100644 --- a/lib/Facture.php +++ b/lib/Facture.php @@ -30,7 +30,10 @@ class Facture 'archivee', 'moyen_paiement', 'contenu', - 'total' + 'total', + 'nom_contact', + 'numero_commande', + 'reference_acheteur' ]; public $types = [ @@ -65,7 +68,7 @@ class Facture if(!is_array($data) && null !== $data){ $datas[$k] = trim($data); } - if ($datas[$k] === '' && $k != 'numero') + if ($datas[$k] === '' && ! in_array($k, ['numero', 'nom_contact', 'numero_commande', 'reference_acheteur'])) { throw new UserException("La valeur de $k est vide"); } diff --git a/plugin.ini b/plugin.ini index 7f5766c..dc6f8e1 100644 --- a/plugin.ini +++ b/plugin.ini @@ -1,8 +1,8 @@ name="Facturation" -description="Permet d'éditer des factures, devis et reçus à ses membres ainsi qu'à une base de clients supplémentaire." +description="Permet d'éditer des factures et devis à ses membres ainsi qu'à une base de clients supplémentaire." author="zou ; adapté par jce" url="https://git.roflcopter.fr/lesanges/paheko-plugin-facturation" -version="0.12" +version="0.14" menu=true restrict_section="accounting" restrict_level="read" diff --git a/templates/_form.tpl b/templates/_form.tpl index 21142ec..6410a2b 100644 --- a/templates/_form.tpl +++ b/templates/_form.tpl @@ -30,7 +30,7 @@
{if $require_number} - Chaque document doit comporter un numéro unique délivré chronologiquement et de façon continue. Il faut que le système adopté par l'association garantisse que deux factures émises la même année ne peuvent pas porter le même numéro. + Chaque document doit comporter un numéro unique délivré chronologiquement et de façon continue. Il faut que le système adopté par l'association garantisse que deux factures émises la même année ne puissent pas porter le même numéro. {else} Laisser vide pour qu'un numéro soit automatiquement affecté au format {$number_pattern}. {/if} @@ -57,7 +57,7 @@
- Client + Destinataire
@@ -82,6 +82,15 @@ {/if}
+
+ Autres informations + {input type="text" name="nom_contact" label="Nom du contact" source=$doc} +
+ {input type="text" name="numero_commande" label="Numéro de commande" source=$doc} + {input type="text" name="reference_acheteur" label="Référence acheteur" source=$doc} +
+
+
Contenu diff --git a/upgrade.php b/upgrade.php index 385f171..309d569 100644 --- a/upgrade.php +++ b/upgrade.php @@ -6,7 +6,7 @@ use Paheko\Entities\Files\File; $db = DB::getInstance(); $old_version = $plugin->oldVersion(); -error_log("upgrade::version = " . $old_version); +error_log("upgrade:: à partir de la version = " . $old_version); // 0.2.0 - Stock le contenu en json plutôt qu'en serialized if (version_compare($old_version, '0.2.0', '<')) @@ -74,7 +74,7 @@ if (version_compare($old_version, '0.4.0', '<')) ALTER TABLE plugin_facturation_factures_tmp RENAME TO plugin_facturation_factures; EOT -); + ); } @@ -111,7 +111,7 @@ if (version_compare($old_version, '0.6.0', '<')) DROP TABLE plugin_facturation_factures; ALTER TABLE plugin_facturation_factures_tmp RENAME TO plugin_facturation_factures; EOT - ); + ); $factures = $facture->listAll(); foreach($factures as $k=>$f) @@ -119,13 +119,13 @@ EOT foreach($f->contenu as $line => $content) { // Petit bug qui peut arriver avec des contenus mal enregistrés en db - if (is_int($content)) - { - continue; - } + if (is_int($content)) + { + continue; + } $contenu[] = ['designation' => $content['designation'], - 'prix' => (int) ($content['prix'] * 100) ]; + 'prix' => (int) ($content['prix'] * 100) ]; } $f->contenu = $contenu; @@ -252,8 +252,10 @@ EOT ); } -// version 0.15 (?) Ajout champ note à la table client -if (version_compare($old_version, '0.15', '<')) +// version 0.14 +// Ajout champ note à la table clients +// Ajout divers champs à la table factures +if (version_compare($old_version, '0.14', '<')) { $db->exec(<<iterate($sql) as $client) @@ -279,8 +281,43 @@ if (version_compare($old_version, '0.15', '<')) } // remplacer l'ancienne table par la nouvelle $db->exec(<<exec(<<iterate($sql) as $facture) + { + $db->insert('plugin_facturation_factures_tmp', $facture); + } + // remplacer l'ancienne table par la nouvelle + $db->exec(<<