Changed next reference method to also include partly alpha characters in front, fi...
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Sat, 13 Jun 2009 09:44:15 +0000 (09:44 +0000)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Sat, 13 Jun 2009 09:44:15 +0000 (09:44 +0000)
CHANGELOG.txt
includes/references.inc

index 00d347d4b2e2cffbf74edc4d5e2d0e549af90e23..33e87ed70a4296a5a4c2d9122231c522ebca663d 100644 (file)
@@ -19,6 +19,10 @@ Legend:
 ! -> Note
 $ -> Affected files
 
+13-Jun-2009 Joe Hunt
+! Changed next reference method to also include partly alpha characters in front, fi. WA036 increments to WA037
+$ /includes/references.inc
+
 12-Jun-2009 Joe Hunt
 ! Code clean-up
 $ /gl/includes/db/gl_db_trans.inc
index 6f3bd8916ec9b61e5357a2e4312896bbd62f30eb..f4be86173bfb8fafe956854f7f33a2f2d8beea2b 100644 (file)
@@ -56,10 +56,20 @@ 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 is trailed by digits, and digits only,
+        // extract them and add 1, then put the alpha prefix back on
+        // 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+)$/', $reference, $result) == 1) 
+        {
+            $dig_count = strlen($result[2]); // How many digits? eg. 0003 = 4
+            $fmt = '%0' . $dig_count . 'd'; // Make a format string - leading zeroes
+            $nextval =  $result[1] . sprintf($fmt, intval($result[2] + 1)); // Add one on, and put prefix back on
+            return $nextval;
+        }
         else 
-               return $reference;
+            return $reference;
        }
        
        //------------------------------------