2 /**********************************************************************
3 Copyright (C) FrontAccounting, LLC.
4 Released under the terms of the GNU General Public License, GPL,
5 as published by the Free Software Foundation, either version 3
6 of the License, or (at your option) any later version.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 //--------------------------------------------------------------------------------------------------
14 function get_reference($type, $id)
16 $sql = "SELECT * FROM ".TB_PREF."refs WHERE type=".db_escape($type)." AND id=".db_escape($id);
18 $result = db_query($sql, "could not query reference table");
19 $row = db_fetch($result);
20 return $row['reference'];
23 //--------------------------------------------------------------------------------------------------
25 function update_reference($type, $id, $reference)
27 $sql = "REPLACE ".TB_PREF."refs SET reference=".db_escape($reference)
28 .", type=".db_escape($type).", id=".db_escape($id);
29 db_query($sql, "could not update reference entry");
32 //--------------------------------------------------------------------------------------------------
34 function delete_reference($type, $id)
36 $sql = "DELETE FROM ".TB_PREF."refs WHERE type=".db_escape($type)." AND id=".db_escape($id);
38 return db_query($sql, "could not delete from reference table");
41 //--------------------------------------------------------------------------------------------------
43 function find_reference($type, $reference)
45 // ignore refs references for voided transactions
46 $sql = "SELECT r.id FROM ".TB_PREF."refs r LEFT JOIN ".TB_PREF."voided v ON"
47 ." r.type=v.type AND r.id=v.id"
48 ." WHERE r.type=".db_escape($type)
49 ." AND reference=".db_escape($reference)
50 ." AND ISNULL(`memo_`)";
52 $result = db_query($sql, "could not query reference table");
54 return (db_num_rows($result) > 0);
57 //--------------------------------------------------------------------------------------------------
59 function save_next_reference($type, $reference)
61 $sql = "UPDATE ".TB_PREF."sys_types SET next_reference=" . db_escape(trim($reference))
62 . " WHERE type_id = ".db_escape($type);
64 db_query($sql, "The next transaction ref for $type could not be updated");
67 //--------------------------------------------------------------------------------------------------
69 function get_next_reference($type)
71 $sql = "SELECT next_reference FROM ".TB_PREF."sys_types WHERE type_id = ".db_escape($type);
73 $result = db_query($sql,"The last transaction ref for $type could not be retreived");
75 $row = db_fetch_row($result);
79 //----------------------------------------------------------------------------
81 // Check if reference was not used so far (for other transaction than $trans_no)
83 function is_new_reference($ref, $type, $trans_no=0)
85 $db_info = get_systype_db_info($type);
86 $db_name = $db_info[0];
87 $db_type = $db_info[1];
88 $db_trans = $db_info[2];
89 $db_ref = $db_info[3];
91 $ref = db_escape(trim($ref));
92 $type = db_escape($type);
94 if ($db_ref == null) { // journal or bank trans store references in refs table
95 $db_name = TB_PREF."refs";
98 $db_ref = 'reference';
101 if ($db_type != null) {
102 $sql = "SELECT $db_ref FROM $db_name tbl
103 LEFT JOIN ".TB_PREF."voided v ON
104 tbl.$db_type=v.type AND tbl.$db_trans=v.id
105 WHERE $db_ref=$ref AND ISNULL(v.id)
106 AND tbl.$db_type=$type";
108 $sql = "SELECT $db_ref ref FROM $db_name tbl
109 LEFT JOIN ".TB_PREF."voided v ON
110 v.type=$type AND tbl.$db_trans=v.id
111 WHERE $db_ref=$ref AND ISNULL(v.id)";
114 $sql .= " AND tbl.`$db_trans` != ".db_escape($trans_no);
116 $result = db_query($sql, "could not test for unique reference");
118 return (db_num_rows($result) == 0);