X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Freferences.inc;h=cd01ab6c67386032182dbda57e5a962390f1bea2;hb=3df0648d1513215ea28378e679d4291d3e609ba6;hp=0c11ebee3defacaa1d96bcdfb61a25a862f08160;hpb=46c5f7a65a7659a44ae8254c63152074363d3987;p=fa-stable.git diff --git a/includes/references.inc b/includes/references.inc index 0c11ebee..cd01ab6c 100644 --- 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 - 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); } @@ -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]; @@ -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 - $db_ref = TB_PREF."refs"; + $db_name = TB_PREF."refs"; $db_type = 'type'; $db_trans = 'id'; - $rb_ref = 'reference'; + $db_ref = 'reference'; } 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 - $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 { - $sql = "SELECT $db_ref FROM $db_name + $sql = "SELECT $db_ref ref FROM $db_name tbl 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)"; } + if ($trans_no) + $sql .= " AND tbl.`$db_trans` != ".db_escape($trans_no); $result = db_query($sql, "could not test for unique reference");