Fix into categorie functions
This commit is contained in:
parent
e53ae6eea2
commit
816e317dd2
@ -139,11 +139,13 @@ class Categorie
|
|||||||
{
|
{
|
||||||
$this->error=$langs->trans("ImpossibleAddCat");
|
$this->error=$langs->trans("ImpossibleAddCat");
|
||||||
$this->error.=" : ".$langs->trans("CategoryExistsAtSameLevel");
|
$this->error.=" : ".$langs->trans("CategoryExistsAtSameLevel");
|
||||||
|
dol_syslog($this->error, LOG_ERR);
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
|
dol_syslog(get_class($this).'::create sql='.$sql);
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie (label, description,";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie (label, description,";
|
||||||
if ($conf->global->CATEGORY_ASSIGNED_TO_A_CUSTOMER)
|
if ($conf->global->CATEGORY_ASSIGNED_TO_A_CUSTOMER)
|
||||||
{
|
{
|
||||||
@ -163,7 +165,8 @@ class Categorie
|
|||||||
//$sql.= ",".$this->parentId;
|
//$sql.= ",".$this->parentId;
|
||||||
$sql.= ")";
|
$sql.= ")";
|
||||||
|
|
||||||
$res = $this->db->query($sql);
|
dol_syslog(get_class($this).'::create sql='.$sql);
|
||||||
|
$res = $this->db->query($sql);
|
||||||
if ($res)
|
if ($res)
|
||||||
{
|
{
|
||||||
$id = $this->db->last_insert_id(MAIN_DB_PREFIX."categorie");
|
$id = $this->db->last_insert_id(MAIN_DB_PREFIX."categorie");
|
||||||
@ -867,6 +870,8 @@ class Categorie
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if no category with same label already exists for this cat's parent or root and for this cat's type
|
* Check if no category with same label already exists for this cat's parent or root and for this cat's type
|
||||||
|
* TODO For the moment, the unique key is on the type, label, entity. We must remove table llx_categorie_association
|
||||||
|
* to replace with a field fk_parent. This will allow to extend unique key with the level.
|
||||||
*
|
*
|
||||||
* @return boolean 1 if already exist, 0 otherwise, -1 if error
|
* @return boolean 1 if already exist, 0 otherwise, -1 if error
|
||||||
*/
|
*/
|
||||||
@ -887,17 +892,14 @@ class Categorie
|
|||||||
}
|
}
|
||||||
else // mother_id undefined (so it's root)
|
else // mother_id undefined (so it's root)
|
||||||
{
|
{
|
||||||
/* We have to select any rowid from llx_categorie which which category's type and label
|
/* We have to select any rowid from llx_categorie that is not at root level
|
||||||
* 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 = "SELECT c.rowid";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."categorie as c ";
|
$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.= " WHERE c.type=".$this->type;
|
||||||
$sql.= " AND c.label='".$this->db->escape($this->label)."'";
|
$sql.= " AND c.label='".$this->db->escape($this->label)."'";
|
||||||
$sql.= " AND c.entity IN (".getEntity('category',1).")";
|
$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);
|
dol_syslog(get_class($this)."::already_exists sql=".$sql, LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
|
|||||||
@ -131,7 +131,14 @@ class CategorieTest extends PHPUnit_Framework_TestCase
|
|||||||
// We create a category
|
// We create a category
|
||||||
$localobject=new Categorie($this->savdb);
|
$localobject=new Categorie($this->savdb);
|
||||||
$localobject->initAsSpecimen();
|
$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";
|
print __METHOD__." resultFirstCreate=".$resultFirstCreate."\n";
|
||||||
$this->assertGreaterThan(0, $resultFirstCreate);
|
$this->assertGreaterThan(0, $resultFirstCreate);
|
||||||
|
|
||||||
@ -139,6 +146,7 @@ class CategorieTest extends PHPUnit_Framework_TestCase
|
|||||||
$localobject2=new Categorie($this->savdb);
|
$localobject2=new Categorie($this->savdb);
|
||||||
$localobject2->initAsSpecimen();
|
$localobject2->initAsSpecimen();
|
||||||
|
|
||||||
|
// Check it does exist (return 1)
|
||||||
$resultCheck=$localobject2->already_exists();
|
$resultCheck=$localobject2->already_exists();
|
||||||
print __METHOD__." resultCheck=".$resultCheck."\n";
|
print __METHOD__." resultCheck=".$resultCheck."\n";
|
||||||
$this->assertGreaterThan(0, $resultCheck);
|
$this->assertGreaterThan(0, $resultCheck);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user