return $row['reference'];
}
-//--------------------------------------------------------------------------------------------------
-
-function add_reference($type, $id, $reference)
-{
- $sql = "INSERT INTO ".TB_PREF."refs (type, id, reference)
- VALUES (".db_escape($type).", ".db_escape($id).", "
- . db_escape(trim($reference)) . ")";
-
- db_query($sql, "could not add reference entry");
-}
-
//--------------------------------------------------------------------------------------------------
function update_reference($type, $id, $reference)
{
- $sql = "UPDATE ".TB_PREF."refs SET reference=".db_escape($reference)
- ." WHERE type=".db_escape($type)." AND id=".db_escape($id);
+ $sql = "REPLACE ".TB_PREF."refs SET reference=".db_escape($reference)
+ .", type=".db_escape($type).", id=".db_escape($id);
db_query($sql, "could not update reference entry");
}
function delete_reference($type, $id)
{
- $sql = "DELETE FROM ".TB_PREF."refs WHERE type=$type AND id=".db_escape($id);
+ $sql = "DELETE FROM ".TB_PREF."refs WHERE type=".db_escape($type)." AND id=".db_escape($id);
return db_query($sql, "could not delete from reference table");
}
return $row[0];
}
-?>
\ No newline at end of file
+//----------------------------------------------------------------------------
+//
+// Check if reference was not used so far (for other transaction than $trans_no)
+//
+function is_new_reference($ref, $type, $trans_no=0)
+{
+ $db_info = get_systype_db_info($type);
+ $db_name = $db_info[0];
+ $db_type = $db_info[1];
+ $db_trans = $db_info[2];
+ $db_ref = $db_info[3];
+
+ $ref = db_escape(trim($ref));
+ $type = db_escape($type);
+
+ if ($db_ref == null) { // journal or bank trans store references in refs table
+ $db_name = TB_PREF."refs";
+ $db_type = 'type';
+ $db_trans = 'id';
+ $db_ref = 'reference';
+ }
+
+ if ($db_type != null) {
+ $sql = "SELECT $db_ref FROM $db_name tbl
+ LEFT JOIN ".TB_PREF."voided v ON
+ tbl.$db_type=v.type AND tbl.$db_trans=v.id
+ WHERE $db_ref=$ref AND ISNULL(v.id)
+ AND tbl.$db_type=$type";
+ } else {
+ $sql = "SELECT $db_ref ref FROM $db_name tbl
+ LEFT JOIN ".TB_PREF."voided v ON
+ v.type=$type AND tbl.$db_trans=v.id
+ WHERE $db_ref=$ref AND ISNULL(v.id)";
+ }
+ if ($trans_no)
+ $sql .= " AND tbl.`$db_trans` != ".db_escape($trans_no);
+
+ $result = db_query($sql, "could not test for unique reference");
+
+ return (db_num_rows($result) == 0);
+
+}
+
+