Ajout du support des écritures ventilées.
[garradin.git] / include / class.compta_comptes.php
index 02021a2..0ec751e 100644 (file)
@@ -11,9 +11,9 @@ class Compta_Comptes
     const PRODUIT = 0x04;
     const CHARGE = 0x08;
 
-    public function importPlan()
+    public function importPlan($file = NULL)
     {
-        $plan = json_decode(file_get_contents(ROOT . '/include/data/plan_comptable.json'), true);
+        $plan = json_decode(file_get_contents($file ? $file : ROOT.'/include/data/plan_comptable.json'), true);
 
         $db = DB::getInstance();
         $db->exec('BEGIN;');
@@ -44,7 +44,7 @@ class Compta_Comptes
             }
         }
 
-        $db->exec('DELETE FROM compta_comptes WHERE id NOT IN(\''.implode('\', \'', $ids).'\') AND plan_comptable = 1;');
+        //$db->exec('DELETE FROM compta_comptes WHERE id NOT IN(\''.implode('\', \'', $ids).'\') AND plan_comptable = 1;');
 
         $db->exec('END;');
 
@@ -131,7 +131,7 @@ class Compta_Comptes
         $db = DB::getInstance();
 
         // Ne pas supprimer un compte qui est utilisé !
-        if ($db->simpleQuerySingle('SELECT 1 FROM compta_journal WHERE compte_debit = ? OR compte_debit = ? LIMIT 1;', false, $id, $id))
+        if ($db->simpleQuerySingle('SELECT 1 FROM compta_flux WHERE compte = ? LIMIT 1;', false, $id))
         {
             throw new UserException('Ce compte ne peut être supprimé car des opérations comptables y sont liées.');
         }
@@ -160,8 +160,8 @@ class Compta_Comptes
     {
         $db = DB::getInstance();
 
-        if ($db->simpleQuerySingle('SELECT 1 FROM compta_journal
-                WHERE compte_debit = ? OR compte_debit = ? LIMIT 1;', false, $id, $id))
+        if ($db->simpleQuerySingle('SELECT 1 FROM compta_flux
+                WHERE compte = ? LIMIT 1;', false, $id))
         {
             return false;
         }
@@ -184,8 +184,9 @@ class Compta_Comptes
         $db = DB::getInstance();
 
         if ($db->simpleQuerySingle('SELECT 1 FROM compta_journal
+                LEFT JOIN compta_flux ON compta_journal.id = compta_flux.id_journal
                 WHERE id_exercice = (SELECT id FROM compta_exercices WHERE cloture = 0 LIMIT 1) 
-                AND (compte_debit = ? OR compte_debit = ?) LIMIT 1;', false, $id, $id))
+                AND compte = ? LIMIT 1;', false, $id))
         {
             return false;
         }
@@ -211,8 +212,9 @@ class Compta_Comptes
         
         // Ne pas désactiver un compte utilisé dans l'exercice courant
         if ($db->simpleQuerySingle('SELECT 1 FROM compta_journal
+                LEFT JOIN compta_flux ON compta_journal.id = compta_flux.id_journal
                 WHERE id_exercice = (SELECT id FROM compta_exercices WHERE cloture = 0 LIMIT 1) 
-                AND (compte_debit = ? OR compte_debit = ?) LIMIT 1;', false, $id, $id))
+                AND compte = ? LIMIT 1;', false, $id))
         {
             throw new UserException('Ce compte ne peut être désactivé car des écritures y sont liées sur l\'exercice courant. '
                 . 'Il faut supprimer ou ré-attribuer ces écritures avant de pouvoir supprimer le compte.');
@@ -322,4 +324,4 @@ class Compta_Comptes
     }
 }
 
-?>
\ No newline at end of file
+?>