Fix into categorie functions

This commit is contained in:
Laurent Destailleur 2012-08-05 23:59:13 +02:00
parent 8b2f1eee13
commit 92624d650f
2 changed files with 18 additions and 13 deletions

View File

@ -889,17 +889,14 @@ class Categorie
}
else // mother_id undefined (so it's root)
{
/* We have to select any rowid from llx_categorie which which category's type and label
* are equals to those of the calling category, AND which doesn't exist in categorie association
* as children (rowid != fk_categorie_fille)
*/
$sql = "SELECT c.rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."categorie as c ";
$sql.= " JOIN ".MAIN_DB_PREFIX."categorie_association as ca";
$sql.= " ON c.rowid!=ca.fk_categorie_fille";
$sql.= " WHERE c.type=".$this->type;
$sql.= " AND c.label='".$this->db->escape($this->label)."'";
$sql.= " AND c.entity IN (".getEntity('category',1).")";
/* We have to select any rowid from llx_categorie that is not at root level
*/
$sql = "SELECT c.rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."categorie as c ";
$sql.= " WHERE c.type=".$this->type;
$sql.= " AND c.label='".$this->db->escape($this->label)."'";
$sql.= " AND c.entity IN (".getEntity('category',1).")";
$sql.= " AND c.rowid NOT IN (SELECT ca.fk_categorie_fille FROM ".MAIN_DB_PREFIX."categorie_association as ca)";
}
dol_syslog(get_class($this)."::already_exists sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql);

View File

@ -131,7 +131,14 @@ class CategorieTest extends PHPUnit_Framework_TestCase
// We create a category
$localobject=new Categorie($this->savdb);
$localobject->initAsSpecimen();
$resultFirstCreate=$localobject->create($user);
// Check it does not exist (return 0)
$resultCheck=$localobject->already_exists();
print __METHOD__." resultCheck=".$resultCheck."\n";
$this->assertEquals(0, $resultCheck);
// Create
$resultFirstCreate=$localobject->create($user);
print __METHOD__." resultFirstCreate=".$resultFirstCreate."\n";
$this->assertGreaterThan(0, $resultFirstCreate);
@ -139,8 +146,9 @@ class CategorieTest extends PHPUnit_Framework_TestCase
$localobject2=new Categorie($this->savdb);
$localobject2->initAsSpecimen();
// Check it does exist (return 1)
$resultCheck=$localobject2->already_exists();
print __METHOD__." resultCheck=".$resultCheck."\n";
print __METHOD__." resultCheck=".$resultCheck."\n";
$this->assertGreaterThan(0, $resultCheck);
$resultSecondCreate=$localobject2->create($user);