diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php
index d1b35259677..87d6a91d92f 100644
--- a/htdocs/core/lib/functions2.lib.php
+++ b/htdocs/core/lib/functions2.lib.php
@@ -589,14 +589,15 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$m
// Define $sqlwhere
$sqlwhere='';
- $yearoffset=0; // Use year of current $date by default
- $yearoffsettype=false;
+ $yearoffset=0; // Use year of current $date by default
+ $yearoffsettype=false; // false: no reset, 0,-,=,+: reset at offset SOCIETE_FISCAL_MONTH_START, x=reset at offset x
// If a restore to zero after a month is asked we check if there is already a value for this year.
if (! empty($reg[2]) && preg_match('/^@/',$reg[2])) $yearoffsettype = preg_replace('/^@/','',$reg[2]);
if (! empty($reg[3]) && preg_match('/^@/',$reg[3])) $yearoffsettype = preg_replace('/^@/','',$reg[3]);
- if (is_numeric($yearoffsettype) && $yearoffsettype > 1)
+ //print "yearoffset=".$yearoffset." yearoffsettype=".$yearoffsettype;
+ if (is_numeric($yearoffsettype) && $yearoffsettype >= 1)
$maskraz=$yearoffsettype; // For backward compatibility
else if ($yearoffsettype === '0' || (! empty($yearoffsettype) && ! is_numeric($yearoffsettype) && $conf->global->SOCIETE_FISCAL_MONTH_START > 1))
$maskraz = $conf->global->SOCIETE_FISCAL_MONTH_START;
@@ -627,7 +628,7 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$m
$monthcomp=$maskraz;
$yearcomp=0;
- if (! empty($yearoffsettype) && ! is_numeric($yearoffsettype))
+ if (! empty($yearoffsettype) && ! is_numeric($yearoffsettype) && $yearoffsettype != '=') // $yearoffsettype is - or +
{
$currentyear=date("Y", $date);
$fiscaldate=dol_mktime('0','0','0',$maskraz,'1',$currentyear);
@@ -809,9 +810,18 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$m
$numFinal = $mask;
// We replace special codes except refclient
- $numFinal = preg_replace('/\{yyyy\}/i',date("Y",$date)+$yearoffset, $numFinal);
- $numFinal = preg_replace('/\{yy\}/i', date("y",$date)+$yearoffset, $numFinal);
- $numFinal = preg_replace('/\{y\}/i', substr(date("y",$date),2,1)+$yearoffset, $numFinal);
+ if (! empty($yearoffsettype) && ! is_numeric($yearoffsettype) && $yearoffsettype != '=') // yearoffsettype is - or +, so we don't want current year
+ {
+ $numFinal = preg_replace('/\{yyyy\}/i',date("Y",$date)+$yearoffset, $numFinal);
+ $numFinal = preg_replace('/\{yy\}/i', date("y",$date)+$yearoffset, $numFinal);
+ $numFinal = preg_replace('/\{y\}/i', substr(date("y",$date),2,1)+$yearoffset, $numFinal);
+ }
+ else // we want yyyy to be current year
+ {
+ $numFinal = preg_replace('/\{yyyy\}/i',date("Y",$date), $numFinal);
+ $numFinal = preg_replace('/\{yy\}/i', date("y",$date), $numFinal);
+ $numFinal = preg_replace('/\{y\}/i', substr(date("y",$date),2,1), $numFinal);
+ }
$numFinal = preg_replace('/\{mm\}/i', date("m",$date), $numFinal);
$numFinal = preg_replace('/\{dd\}/i', date("d",$date), $numFinal);
diff --git a/test/phpunit/AllTests.php b/test/phpunit/AllTests.php
index dd22a14913c..2b254a5fc99 100644
--- a/test/phpunit/AllTests.php
+++ b/test/phpunit/AllTests.php
@@ -78,7 +78,7 @@ class AllTests
require_once dirname(__FILE__).'/SecurityTest.php';
$suite->addTestSuite('SecurityTest');
- require_once dirname(__FILE__).'/_NumberingModulesTest.php';
+ require_once dirname(__FILE__).'/NumberingModulesTest.php';
$suite->addTestSuite('NumberingModulesTest');
require_once dirname(__FILE__).'/PgsqlTest.php';
$suite->addTestSuite('PgsqlTest');
diff --git a/test/phpunit/NumberingModulesTest.php b/test/phpunit/NumberingModulesTest.php
new file mode 100644
index 00000000000..a0e66f4afea
--- /dev/null
+++ b/test/phpunit/NumberingModulesTest.php
@@ -0,0 +1,412 @@
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ * or see http://www.gnu.org/
+ */
+
+/**
+ * \file test/phpunit/_NumberingModulesTest.php
+ * \ingroup test
+ * \brief PHPUnit test
+ * \remarks To run this script as CLI: phpunit filename.php
+ */
+
+global $conf,$user,$langs,$db;
+//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver
+require_once 'PHPUnit/Autoload.php';
+require_once dirname(__FILE__).'/../../htdocs/master.inc.php';
+
+if (empty($user->id))
+{
+ print "Load permissions for admin user nb 1\n";
+ $user->fetch(1);
+ $user->getrights();
+}
+$conf->global->MAIN_DISABLE_ALL_MAILS=1;
+
+
+/**
+ * Class for PHPUnit tests
+ *
+ * @backupGlobals disabled
+ * @backupStaticAttributes enabled
+ * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased.
+ */
+class NumberingModulesTest extends PHPUnit_Framework_TestCase
+{
+ protected $savconf;
+ protected $savuser;
+ protected $savlangs;
+ protected $savdb;
+
+ /**
+ * Constructor
+ * We save global variables into local variables
+ *
+ * @return NumberingModulesTest
+ */
+ function __construct()
+ {
+ //$this->sharedFixture
+ global $conf,$user,$langs,$db;
+ $this->savconf=$conf;
+ $this->savuser=$user;
+ $this->savlangs=$langs;
+ $this->savdb=$db;
+
+ print __METHOD__." db->type=".$db->type." user->id=".$user->id;
+ //print " - db ".$db->db;
+ print "\n";
+ }
+
+ // Static methods
+ public static function setUpBeforeClass()
+ {
+ global $conf,$user,$langs,$db;
+ $db->begin(); // This is to have all actions inside a transaction even if test launched without suite.
+
+ print __METHOD__."\n";
+ }
+ public static function tearDownAfterClass()
+ {
+ global $conf,$user,$langs,$db;
+ $db->rollback();
+
+ print __METHOD__."\n";
+ }
+
+ /**
+ * Init phpunit tests
+ *
+ * @return void
+ */
+ protected function setUp()
+ {
+ global $conf,$user,$langs,$db;
+ $conf=$this->savconf;
+ $user=$this->savuser;
+ $langs=$this->savlangs;
+ $db=$this->savdb;
+
+ print __METHOD__."\n";
+ }
+
+ /**
+ * End phpunit tests
+ *
+ * @return void
+ */
+ protected function tearDown()
+ {
+ print __METHOD__."\n";
+ }
+
+ /**
+ * testFactureMercure
+ *
+ * @return int
+ */
+ public function testFactureMercure()
+ {
+ global $conf,$user,$langs,$db,$mysoc;
+ $conf=$this->savconf;
+ $user=$this->savuser;
+ $langs=$this->savlangs;
+ $db=$this->savdb;
+
+ require_once dirname(__FILE__).'/../../htdocs/compta/facture/class/facture.class.php';
+ require_once dirname(__FILE__).'/../../htdocs/core/modules/facture/mod_facture_mercure.php';
+
+
+ // First we try with a simple mask, with no reset
+ // and we test counter is still increase second year.
+ $conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}-{0000}';
+ $conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}-{0000}';
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1900); // we use year 1900 to be sure to not have existing invoice for this year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('1900-0001', $result); // counter must start to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1901); // we use following year for second invoice
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('1901-0002', $result); // counter must not be reset
+
+ // Now we try with a reset
+ $conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}-{0000@1}';
+ $conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}-{0000@1}';
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1910); // we use year 1910 to be sure to not have existing invoice for this year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('1910-0001', $result); // counter must start to 1
+
+ // Same mask but we add month
+ $conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}{mm}-{0000@1}';
+ $conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}{mm}-{0000@1}';
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1920); // we use year 1920 to be sure to not have existing invoice for this year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('192001-0001', $result); // counter must start to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1921); // we use following year for second invoice
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('192101-0001', $result); // counter must be resete to 1
+
+
+ // Now we try with a different fiscal month (forced by mask)
+ $conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}{mm}-{0000@6}';
+ $conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}{mm}-{0000@6}';
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1930); // we use year 1930 to be sure to not have existing invoice for this year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('193001-0001', $result); // counter must start to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1930); // we use same year but fiscal month after
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('193012-0001', $result); // counter must be reset to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1931); // we use same fiscal year but different year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('193101-0002', $result); // counter must be 2
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1931); // we use different discal year but same year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('193112-0001', $result); // counter must be reset to 1
+
+
+ // Now we try with a different fiscal month (defined by SOCIETE_FISCAL_MONTH_START)
+ $conf->global->SOCIETE_FISCAL_MONTH_START=6;
+ $conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}{mm}-{0000@0}';
+ $conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}{mm}-{0000@0}';
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1940); // we use year 1940 to be sure to not have existing invoice for this year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('194001-0001', $result); // counter must start to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1940); // we use same year but fiscal month after
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('194012-0001', $result); // counter must be reset to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1941); // we use same fiscal year but different year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('194101-0002', $result); // counter must be 2
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1941); // we use different discal year but same year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('194112-0001', $result); // counter must be reset to 1
+
+
+ // Now we try with a different fiscal month (defined by SOCIETE_FISCAL_MONTH_START) and we always want year of element
+ $conf->global->SOCIETE_FISCAL_MONTH_START=6;
+ $conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}{mm}-{0000@=}';
+ $conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}{mm}-{0000@=}';
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1950); // we use year 1950 to be sure to not have existing invoice for this year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('195001-0001', $result); // counter must start to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1950); // we use same year but fiscal month after
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('195012-0001', $result); // counter must be reset to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1951); // we use same fiscal year but different year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('195101-0002', $result); // counter must be 2
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1951); // we use different discal year but same year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('195112-0001', $result); // counter must be reset to 1
+
+
+ // Now we try with a different fiscal month (defined by SOCIETE_FISCAL_MONTH_START) and we always want start year
+ $conf->global->SOCIETE_FISCAL_MONTH_START=6;
+ $conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}{mm}-{0000@-}';
+ $conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}{mm}-{0000@-}';
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1960); // we use year 1960 to be sure to not have existing invoice for this year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('195901-0001', $result); // counter must start to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1960); // we use same year but fiscal month after
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('196012-0001', $result); // counter must be reset to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1961); // we use same fiscal year but different year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('196001-0002', $result); // counter must be 2
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1961); // we use different discal year but same year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('196112-0001', $result); // counter must be reset to 1
+
+
+ // Now we try with a different fiscal month (defined by SOCIETE_FISCAL_MONTH_START) and we always want end year
+ $conf->global->SOCIETE_FISCAL_MONTH_START=6;
+ $conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}{mm}-{0000@+}';
+ $conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}{mm}-{0000@+}';
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1970); // we use year 1970 to be sure to not have existing invoice for this year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('197001-0001', $result); // counter must start to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1970); // we use same year but fiscal month after
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('197112-0001', $result); // counter must be reset to 1
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 1, 1, 1971); // we use same fiscal year but different year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ $result2=$localobject->create($user,1);
+ $result3=$localobject->validate($user, $result);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('197101-0002', $result); // counter must be 2
+
+ $localobject=new Facture($this->savdb);
+ $localobject->initAsSpecimen();
+ $localobject->date=dol_mktime(12, 0, 0, 12, 1, 1971); // we use different discal year but same year
+ $numbering=new mod_facture_mercure();
+ $result=$numbering->getNextValue($mysoc, $localobject);
+ print __METHOD__." result=".$result."\n";
+ $this->assertEquals('197212-0001', $result); // counter must be reset to 1
+
+ return $result;
+ }
+
+}
+?>
\ No newline at end of file
diff --git a/test/phpunit/_NumberingModulesTest.php b/test/phpunit/_NumberingModulesTest.php
deleted file mode 100644
index 98c9c31bba3..00000000000
--- a/test/phpunit/_NumberingModulesTest.php
+++ /dev/null
@@ -1,156 +0,0 @@
-
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- * or see http://www.gnu.org/
- */
-
-/**
- * \file test/phpunit/_NumberingModulesTest.php
- * \ingroup test
- * \brief PHPUnit test
- * \remarks To run this script as CLI: phpunit filename.php
- */
-
-global $conf,$user,$langs,$db;
-//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver
-require_once 'PHPUnit/Autoload.php';
-require_once dirname(__FILE__).'/../../htdocs/master.inc.php';
-
-if (empty($user->id))
-{
- print "Load permissions for admin user nb 1\n";
- $user->fetch(1);
- $user->getrights();
-}
-$conf->global->MAIN_DISABLE_ALL_MAILS=1;
-
-
-/**
- * Class for PHPUnit tests
- *
- * @backupGlobals disabled
- * @backupStaticAttributes enabled
- * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased.
- */
-class NumberingModulesTest extends PHPUnit_Framework_TestCase
-{
- protected $savconf;
- protected $savuser;
- protected $savlangs;
- protected $savdb;
-
- /**
- * Constructor
- * We save global variables into local variables
- *
- * @return NumberingModulesTest
- */
- function __construct()
- {
- //$this->sharedFixture
- global $conf,$user,$langs,$db;
- $this->savconf=$conf;
- $this->savuser=$user;
- $this->savlangs=$langs;
- $this->savdb=$db;
-
- print __METHOD__." db->type=".$db->type." user->id=".$user->id;
- //print " - db ".$db->db;
- print "\n";
- }
-
- // Static methods
- public static function setUpBeforeClass()
- {
- global $conf,$user,$langs,$db;
- $db->begin(); // This is to have all actions inside a transaction even if test launched without suite.
-
- print __METHOD__."\n";
- }
- public static function tearDownAfterClass()
- {
- global $conf,$user,$langs,$db;
- $db->rollback();
-
- print __METHOD__."\n";
- }
-
- /**
- * Init phpunit tests
- *
- * @return void
- */
- protected function setUp()
- {
- global $conf,$user,$langs,$db;
- $conf=$this->savconf;
- $user=$this->savuser;
- $langs=$this->savlangs;
- $db=$this->savdb;
-
- print __METHOD__."\n";
- }
-
- /**
- * End phpunit tests
- *
- * @return void
- */
- protected function tearDown()
- {
- print __METHOD__."\n";
- }
-
- /**
- * testFactureCreate
- *
- * @return int
- */
- public function testFactureMercure()
- {
- global $conf,$user,$langs,$db,$mysoc;
- $conf=$this->savconf;
- $user=$this->savuser;
- $langs=$this->savlangs;
- $db=$this->savdb;
-
- require_once dirname(__FILE__).'/../../htdocs/compta/facture/class/facture.class.php';
- require_once dirname(__FILE__).'/../../htdocs/core/modules/facture/mod_facture_mercure.php';
-
- //$conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}{mm}-{0000@3}';
- //$conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}{mm}-{0000@3}';
- $conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}-{0000@1}';
- $conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}-{0000@1}';
-
- $localobject=new Facture($this->savdb);
- $localobject->initAsSpecimen();
- $localobject->date=dol_mktime(0, 0, 0, 1, 1, 2012);
- $numbering=new mod_facture_mercure();
- $result=$numbering->getNextValue($mysoc, $localobject);
- print __METHOD__." result=".$result."\n";
-
- $localobject=new Facture($this->savdb);
- $localobject->initAsSpecimen();
- $localobject->date=dol_mktime(0, 0, 0, 1, 1, 2011);
- $numbering=new mod_facture_mercure();
- $result=$numbering->getNextValue($mysoc, $localobject);
- print __METHOD__." result=".$result."\n";
-
- $this->assertLessThan($result, 0);
- return $result;
- }
-
-}
-?>
\ No newline at end of file