diff --git a/lib/Facture.php b/lib/Facture.php
index 5f68f78..43fc626 100644
--- a/lib/Facture.php
+++ b/lib/Facture.php
@@ -12,8 +12,8 @@ class Facture
'numero',
'receveur_membre',
'receveur_id',
- 'date_emission',
- 'date_echeance',
+ 'date_emission', // Reçus : date du don
+ 'date_echeance', // Reçus : date d'édition du reçu
'reglee',
'archivee',
'moyen_paiement',
@@ -21,11 +21,19 @@ class Facture
'total'
];
+ public $type = [
+ 0 => 'devis',
+ 1 => 'facture',
+ 2 => 'cerfa',
+ 3 => 'cotis',
+ ];
+
public function __construct()
{
}
+ // Wsh je sais que data c invariable, laissez-moi tranquille jsp comment faire sinon
public function _checkFields(&$datas)
{
foreach($datas as $k=>$data)
@@ -46,13 +54,18 @@ class Facture
switch($k)
{
- case 'type_facture':
- case 'receveur_membre':
- case 'reglee':
- case 'archivee':
- if ($datas[$k] != 1 && $datas[$k] != 0)
- {
- throw new UserException("$k est de valeur non-attendue ($data).");
+ case 'type_facture':
+ if (!array_key_exists($datas[$k], $this->type))
+ {
+ throw new UserException("$k est de type non-attendue ($data).");
+ }
+ break;
+ case 'receveur_membre':
+ case 'reglee':
+ case 'archivee':
+ if ($datas[$k] != 1 && $datas[$k] != 0)
+ {
+ throw new UserException("$k est de valeur non-attendue ($data).");
}
break;
case 'receveur_id':
@@ -69,8 +82,8 @@ class Facture
if (!strtotime($datas[$k])) {
throw new UserException("La date d'émission est non-attendue ($data).");
}
- if (isset($datas['date_emission']) && (strtotime($datas[$k]) <= strtotime($datas['date_emission']))) {
- throw new UserException("La date d'échéance est antérieure ou égale à la date d'émission ($data).");
+ if (isset($datas['date_emission']) && (strtotime($datas[$k]) < strtotime($datas['date_emission']))) {
+ throw new UserException("La date d'échéance est antérieure à la date d'émission ($data).");
}
break;
case 'moyen_paiement':
@@ -81,7 +94,13 @@ class Facture
unset($cats);
break;
case 'contenu':
- if (!is_array($datas[$k]) || empty($datas[$k])) {
+ $tmp = false;
+ if ($datas['type_facture'] > 1) {
+ // $datas[$k] = null;
+ // break;
+ $tmp = true;
+ }
+ if (!$tmp && !is_array($datas[$k]) || empty($datas[$k])) {
throw new UserException("Le contenu du document est vide ($data).");
}
$total = 0;
@@ -105,6 +124,10 @@ class Facture
$datas[$k] = json_encode($datas[$k]);
break;
case 'total':
+ if ($datas['type_facture'] > 1) {
+ // $datas[$k] = null;
+ break;
+ }
if (!isset($datas['contenu'])) {
throw new UserException("Pas de contenu fourni pour vérifier le total.");
}
@@ -125,7 +148,7 @@ class Facture
if(isset($data['numero']) && $db->test('plugin_facturation_factures', 'numero = ? COLLATE NOCASE', $data['numero']))
{
- throw new UserException('Une facture avec ce numéro existe déjà, hors le numéro doit être unique.');
+ throw new UserException('Un document avec ce numéro existe déjà, hors le numéro doit être unique.');
}
$db->insert('plugin_facturation_factures', $data);
return $db->lastInsertRowId();
@@ -141,10 +164,13 @@ class Facture
if(!$r)
{
- throw new UserException("Pas de facture retournée avec cet id.");
+ throw new UserException("Pas de document retournée avec cet id.");
}
- $r->contenu = json_decode($r->contenu, true);
+ if ($r->contenu)
+ {
+ $r->contenu = json_decode($r->contenu, true);
+ }
return $r;
}
@@ -157,7 +183,10 @@ class Facture
foreach ($r as $e)
{
- $e->contenu = json_decode((string)$e->contenu, true);
+ if($e->contenu)
+ {
+ $e->contenu = json_decode((string)$e->contenu, true);
+ }
}
return $r;
@@ -171,7 +200,7 @@ class Facture
if(isset($data['numero']) && $db->test('plugin_facturation_factures', 'numero = ? COLLATE NOCASE AND id != ?', $data['numero'], (int)$id))
{
- throw new UserException('Une facture avec ce numéro existe déjà, hors le numéro doit être unique.');
+ throw new UserException('Un document avec ce numéro existe déjà, hors le numéro doit être unique.');
}
return $db->update('plugin_facturation_factures', $data, $db->where('id', (int)$id));
}
@@ -180,14 +209,14 @@ class Facture
{
$client = new Client;
- if ($base == 0)
+ if ($base == 0) // Si c'est un client
{
if(!$client->get($id))
{
throw new UserException("Ce client n'existe pas.");
}
}
- else
+ else // Si c'est un membre de l'asso
{
throw new UserException("Woopsie, g pô encore implémenté l'usage des membres de l'asso comme clients");
}
@@ -199,7 +228,10 @@ class Facture
foreach ($r as $e)
{
- $e->contenu = json_decode((string)$e->contenu, true);
+ if ($e->contenu)
+ {
+ $e->contenu = json_decode((string)$e->contenu, true);
+ }
}
return empty($r)?false:$r;
@@ -209,14 +241,14 @@ class Facture
{
$client = new Client;
- if ($base == 0)
+ if ($base == 0) // Si c'est un client
{
if(!$client->get($id))
{
throw new UserException("Ce client n'existe pas.");
}
}
- else
+ else // Si c'est un membre de l'asso
{
throw new UserException("Woopsie, g pô encore implémenté l'usage des membres de l'asso comme clients");
}
diff --git a/lib/GenDon.php b/lib/GenDon.php
deleted file mode 100644
index 83e8119..0000000
--- a/lib/GenDon.php
+++ /dev/null
@@ -1,56 +0,0 @@
-_checkData($data);
-
- /*if (!isset($data['numero']) == !trim($data['numero'])) {
- throw new UserException('Le numéro d ordre existe déjà sur un autre reçu.');
- }*/
-
- $db = DB::getInstance();
- $db->insert('plugin_recudon', $data);
-
- return $db->lastInsertRowID();
- }
-
- public function edit($id, $data)
- {
- //$this->_checkData($data);
-
- $db = DB::getInstance();
- return $db->simpleUpdate('plugin_recudon', $data, 'id = ' . (int) $id);
- }
-
- public function get($id)
- {
- $db = DB::getInstance();
-
- return $db->first('SELECT * FROM plugin_recudon WHERE id = ?;', (int) $id);
- }
-
- public function remove($id)
- {
- $db = DB::getInstance();
-
- return $db->simpleExec('DELETE FROM plugin_recudon WHERE id = ?;', (int) $id);
- }
-
- public function listSimple()
- {
- $db = DB::getInstance();
- return $db->get('SELECT id, nom, prenom, ville, "date", gen_ordre, montant FROM plugin_recudon ORDER BY id;');
- }
-}
\ No newline at end of file
diff --git a/templates/facture.tpl b/templates/facture.tpl
index 8981705..23c495f 100644
--- a/templates/facture.tpl
+++ b/templates/facture.tpl
@@ -12,6 +12,10 @@