X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Freferences.inc;h=420e960e805d0169280c8d8dafd73dcd25656398;hb=71ec023b51178bf39c73d6c33fd3b186c66d1992;hp=07f397b6967174e972adeceb906072b6c3190491;hpb=da8311619dd73feae101d246a1957b972e00cbd2;p=fa-stable.git diff --git a/includes/references.inc b/includes/references.inc index 07f397b6..420e960e 100644 --- a/includes/references.inc +++ b/includes/references.inc @@ -1,5 +1,14 @@ . +***********************************************************************/ include_once($path_to_root . "/includes/db/references_db.inc"); class references @@ -8,8 +17,8 @@ class references function save($type, $id, $reference) { add_reference($type, $id, $reference); - - references::save_last($reference, $type); + if ($reference != 'auto') + $this->save_last($reference, $type); } function get($type, $id) @@ -22,6 +31,13 @@ class references delete_reference($type, $id); } + function update($type, $id, $reference) + { + update_reference($type, $id, $reference); + if ($reference != 'auto') + $this->save_last($reference, $type); + } + function exists($type, $reference) { return (find_reference($type, $reference) != null); @@ -29,7 +45,7 @@ class references function save_last($reference, $type) { - $next = references::increment($reference); + $next = $this->increment($reference); save_next_reference($type, $next); } @@ -47,10 +63,23 @@ class references function increment($reference) { - if (is_numeric($reference)) - return $reference + 1; + // New method done by Pete. So f.i. WA036 will increment to WA037 and so on. + // If $reference contains at least one group of digits, + // extract first didgits group and add 1, then put all together. + // NB. preg_match returns 1 if the regex matches completely + // also $result[0] holds entire string, 1 the first captured, 2 the 2nd etc. + // + if (preg_match('/^(\D*?)(\d+)(.*)/', $reference, $result) == 1) + { + list($all, $prefix, $number, $postfix) = $result; + $dig_count = strlen($number); // How many digits? eg. 0003 = 4 + $fmt = '%0' . $dig_count . 'd'; // Make a format string - leading zeroes + $nextval = sprintf($fmt, intval($number + 1)); // Add one on, and put prefix back on + + return $prefix.$nextval.$postfix; + } else - return $reference; + return $reference; } //------------------------------------