projects
/
fa-stable.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Additional db driver fixes, mysqli api set as default regardless of php version.
[fa-stable.git]
/
includes
/
references.inc
diff --git
a/includes/references.inc
b/includes/references.inc
index 0c11ebee3defacaa1d96bcdfb61a25a862f08160..cd01ab6c67386032182dbda57e5a962390f1bea2 100644
(file)
--- a/
includes/references.inc
+++ b/
includes/references.inc
@@
-57,7
+57,7
@@
class references
function save($type, $id, $reference)
{
update_reference($type, $id, $reference); // store in refs table
function save($type, $id, $reference)
{
update_reference($type, $id, $reference); // store in refs table
- if ($reference == $this->get_next($type)) { // if reference was not changed from default
+ if ($reference == $this->get_next($type)) { // if reference was
bigger or
not changed from default
$next = $this->_increment($reference); // increment default
save_next_reference($type, $next);
}
$next = $this->_increment($reference); // increment default
save_next_reference($type, $next);
}
@@
-101,8
+101,10
@@
class references
}
//----------------------------------------------------------------------------
}
//----------------------------------------------------------------------------
-
-function is_new_reference($ref, $type)
+//
+// 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_info = get_systype_db_info($type);
$db_name = $db_info[0];
@@
-114,24
+116,26
@@
function is_new_reference($ref, $type)
$type = db_escape($type);
if ($db_ref == null) { // journal or bank trans store references in refs table
$type = db_escape($type);
if ($db_ref == null) { // journal or bank trans store references in refs table
- $db_
ref
= TB_PREF."refs";
+ $db_
name
= TB_PREF."refs";
$db_type = 'type';
$db_trans = 'id';
$db_type = 'type';
$db_trans = 'id';
- $
r
b_ref = 'reference';
+ $
d
b_ref = 'reference';
}
if ($db_type != null) {
}
if ($db_type != null) {
- $sql = "SELECT $db_ref FROM $db_name
+ $sql = "SELECT $db_ref FROM $db_name
tbl
LEFT JOIN ".TB_PREF."voided v ON
LEFT JOIN ".TB_PREF."voided v ON
-
$db_name.$db_type=v.type AND $db_name
.$db_trans=v.id
- WHERE $db_
name.$db_
ref=$ref AND ISNULL(v.id)
- AND
$db_name
.$db_type=$type";
+
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 {
} else {
- $sql = "SELECT $db_ref
FROM $db_name
+ $sql = "SELECT $db_ref
ref FROM $db_name tbl
LEFT JOIN ".TB_PREF."voided v ON
LEFT JOIN ".TB_PREF."voided v ON
- v.type=$type AND
$db_name
.$db_trans=v.id
+ v.type=$type AND
tbl
.$db_trans=v.id
WHERE $db_ref=$ref AND ISNULL(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");
$result = db_query($sql, "could not test for unique reference");