Extended account id's to 15 chars. Changed account type to varchar(10)
[fa-stable.git] / gl / includes / db / gl_db_account_types.inc
index 1c25db71a5a7e8fc140ee655fac052f72c84aae6..0ea366ecd7fd16a93dbc8594849648c8dcf14c4c 100644 (file)
@@ -17,13 +17,39 @@ function add_account_type($id, $name, $class_id, $parent)
        return db_query($sql);
 }
 
-function update_account_type($id, $name, $class_id, $parent)
+function update_account_type($id, $name, $class_id, $parent, $old_id)
 {
-    $sql = "UPDATE ".TB_PREF."chart_types SET name=".db_escape($name).",
+       begin_transaction();
+       if ($old_id != $id)
+       {
+               $sql = "SELECT id FROM ".TB_PREF."chart_types WHERE parent = ".db_escape($old_id);
+
+               $result = db_query($sql, "could not get account type");
+
+               while ($myrow = db_fetch($result))
+               {
+               $sql = "UPDATE ".TB_PREF."chart_types SET parent=".db_escape($id)
+                               ." WHERE id = '".$myrow['id']."'";
+                       db_query($sql, "could not update account type");
+               }
+               $sql = "SELECT account_code FROM ".TB_PREF."chart_master WHERE account_type = ".db_escape($old_id);
+
+               $result = db_query($sql, "could not get account");
+
+               while ($myrow = db_fetch($result))
+               {
+               $sql = "UPDATE ".TB_PREF."chart_master SET account_type=".db_escape($id)
+                               ." WHERE account_code = '".$myrow['account_code']."'";
+                       db_query($sql, "could not update account");
+               }
+       }
+    $sql = "UPDATE ".TB_PREF."chart_types SET id=".db_escape($id) .", name=".db_escape($name).",
                class_id=".db_escape($class_id).", parent=".db_escape($parent)
-               ." WHERE id = ".db_escape($id);
+               ." WHERE id = ".db_escape($old_id);
 
-       return db_query($sql, "could not update account type");
+       $ret = db_query($sql, "could not update account type");
+       commit_transaction();
+       return $ret;
 }
 
 function get_account_types($all=false)