From 3102981b88774490d4b61b9ad8c9d167f10f9082 Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 11:04:04 +0200 Subject: [PATCH 1/5] maj source --- test/phpunit/CompanyLibTest.php | 171 ++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 test/phpunit/CompanyLibTest.php diff --git a/test/phpunit/CompanyLibTest.php b/test/phpunit/CompanyLibTest.php new file mode 100644 index 00000000000..3dde3f6983d --- /dev/null +++ b/test/phpunit/CompanyLibTest.php @@ -0,0 +1,171 @@ + + * 2014 Jean Heimburger + * +* 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 3 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/SocieteTest.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'; +require_once dirname(__FILE__).'/../../htdocs/societe/class/societe.class.php'; +require_once dirname(__FILE__).'/../../htdocs/core/lib/company.lib.php'; + +$langs->load("dict"); + +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 CompanyLibTest extends PHPUnit_Framework_TestCase +{ + protected $savconf; + protected $savuser; + protected $savlangs; + protected $savdb; + + /** + * Constructor + * We save global variables into local variables + * + * @return SocieteTest + */ + 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; + + if ($conf->global->SOCIETE_CODECLIENT_ADDON != 'mod_codeclient_monkey') { print "\n".__METHOD__." third party ref checker must be setup to 'mod_codeclient_monkey' not to '".$conf->global->SOCIETE_CODECLIENT_ADDON."'.\n"; die(); } + + if (! empty($conf->global->MAIN_DISABLEPROFIDRULES)) { print "\n".__METHOD__." constant MAIN_DISABLEPROFIDRULE must be empty (if a module set it, disable module).\n"; die(); } + + $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"; + } + + /** + * testSocieteCreate + * + * @return int + */ + public function testCompanyLibSocieteCreate() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $localobject=new Societe($this->savdb); + $localobject->initAsSpecimen(); + $localobject-> + $result=$localobject->create($user); + + print __METHOD__." result=".$result."\n"; + $this->assertLessThanOrEqual($result, 0); + + return $result; + } + + /*** + * + */ + public function testCompanyLibgetState() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $localobject=new Societe($this->savdb); + $localobject->initAsSpecimen(); + $result=$localobject->create($user); + + print __METHOD__." result=".$result."\n"; + $this->assertLessThanOrEqual($result, 0); + + return $result; + } + +} +?> \ No newline at end of file From b3504977b0cf4acb4e4090c483db662714302f70 Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 11:28:37 +0200 Subject: [PATCH 2/5] #5224 Adding "Copyof" before invoice label to remind user to change it and avoid label to be the label of cloned invoice --- htdocs/fourn/class/fournisseur.facture.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 728ff9ac674..c85da60dd13 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1806,6 +1806,7 @@ class FactureFournisseur extends CommonInvoice $object->date = ''; $object->date_echeance = ''; $object->ref_client = ''; + $object->libelle = $langs->trans("CopyOf").' '.$object->libelle; $object->close_code = ''; $object->close_note = ''; From 0f14f5a86fb450cc4432de204d35e764064b0ec4 Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 11:39:05 +0200 Subject: [PATCH 3/5] supp --- test/phpunit/CompanyLibTest.php | 171 -------------------------------- 1 file changed, 171 deletions(-) delete mode 100644 test/phpunit/CompanyLibTest.php diff --git a/test/phpunit/CompanyLibTest.php b/test/phpunit/CompanyLibTest.php deleted file mode 100644 index 3dde3f6983d..00000000000 --- a/test/phpunit/CompanyLibTest.php +++ /dev/null @@ -1,171 +0,0 @@ - - * 2014 Jean Heimburger - * -* 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 3 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/SocieteTest.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'; -require_once dirname(__FILE__).'/../../htdocs/societe/class/societe.class.php'; -require_once dirname(__FILE__).'/../../htdocs/core/lib/company.lib.php'; - -$langs->load("dict"); - -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 CompanyLibTest extends PHPUnit_Framework_TestCase -{ - protected $savconf; - protected $savuser; - protected $savlangs; - protected $savdb; - - /** - * Constructor - * We save global variables into local variables - * - * @return SocieteTest - */ - 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; - - if ($conf->global->SOCIETE_CODECLIENT_ADDON != 'mod_codeclient_monkey') { print "\n".__METHOD__." third party ref checker must be setup to 'mod_codeclient_monkey' not to '".$conf->global->SOCIETE_CODECLIENT_ADDON."'.\n"; die(); } - - if (! empty($conf->global->MAIN_DISABLEPROFIDRULES)) { print "\n".__METHOD__." constant MAIN_DISABLEPROFIDRULE must be empty (if a module set it, disable module).\n"; die(); } - - $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"; - } - - /** - * testSocieteCreate - * - * @return int - */ - public function testCompanyLibSocieteCreate() - { - global $conf,$user,$langs,$db; - $conf=$this->savconf; - $user=$this->savuser; - $langs=$this->savlangs; - $db=$this->savdb; - - $localobject=new Societe($this->savdb); - $localobject->initAsSpecimen(); - $localobject-> - $result=$localobject->create($user); - - print __METHOD__." result=".$result."\n"; - $this->assertLessThanOrEqual($result, 0); - - return $result; - } - - /*** - * - */ - public function testCompanyLibgetState() - { - global $conf,$user,$langs,$db; - $conf=$this->savconf; - $user=$this->savuser; - $langs=$this->savlangs; - $db=$this->savdb; - - $localobject=new Societe($this->savdb); - $localobject->initAsSpecimen(); - $result=$localobject->create($user); - - print __METHOD__." result=".$result."\n"; - $this->assertLessThanOrEqual($result, 0); - - return $result; - } - -} -?> \ No newline at end of file From 6873e7afecc1d4452615516737b03cf0feb6d4f6 Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 12:10:38 +0200 Subject: [PATCH 4/5] Revert "#5224 Adding "Copyof" before invoice label to remind user to change it and avoid label to be the label of cloned invoice " This reverts commit b3504977b0cf4acb4e4090c483db662714302f70. --- htdocs/fourn/class/fournisseur.facture.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index c85da60dd13..728ff9ac674 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1806,7 +1806,6 @@ class FactureFournisseur extends CommonInvoice $object->date = ''; $object->date_echeance = ''; $object->ref_client = ''; - $object->libelle = $langs->trans("CopyOf").' '.$object->libelle; $object->close_code = ''; $object->close_note = ''; From 918ba71e7f7ea0b11b1672cc3ccda64b790c0227 Mon Sep 17 00:00:00 2001 From: jean Date: Sat, 4 Jun 2016 14:59:43 +0200 Subject: [PATCH 5/5] FIX #5014 if $user is admin and different from $object then nbadmin >=1 is ok when not in multicompany --- htdocs/user/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index acfe1c85cd7..4792e9dff4d 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1914,7 +1914,7 @@ else if ($user->admin // Need to be admin to allow downgrade of an admin && ($user->id != $object->id) // Don't downgrade ourself && ( - (empty($conf->multicompany->enabled) && $nbAdmin > 1) + (empty($conf->multicompany->enabled) && $nbAdmin >= 1) || (! empty($conf->multicompany->enabled) && ($object->entity > 0 || $nbSuperAdmin > 1)) // Don't downgrade a superadmin if alone ) )