Bonjour,
Tout est dit dans le titre.
J'ai installé la version 3.2 et j'ai constaté que les données de la table product_extrafield ne sont pas effacées quand on supprime un produit.
C'est évidemment a vérifier par d'autres personnes mais je n'ai pas de vu de suppression des données des tables extrafields dans le code...
Je vois 2 corrections a faire :
1/ dans l'objet commonobject.class.php, il faut ajouter une fonction du style
/**
* Delete all extra fields values for the current object.
*
* @return void
*/
function DeleteExtraFields()
{
$error=0;
$this->db->begin();
$sql_del = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element."_extrafields WHERE fk_object = ".$this->id;
dol_syslog(get_class($this)."::delete sql=".$sql_del);
$resql = $this->db->query($sql_del);
if (! $resql)
{
$this->error=$this->db->lasterror();
dol_syslog(get_class($this)."::delete ".$this->error,LOG_ERR);
$this->db->rollback();
return -1;
}
else
{
$this->db->commit();
return 1;
}
}
2/ dans la classe product.class.php et dans la fonction function delete($id)
// Delete Extrafields
if (! $error)
{
$this->DeleteExtraFields();
}
Juste avant : // Delete product ...
Tout est dit dans le titre.
J'ai installé la version 3.2 et j'ai constaté que les données de la table product_extrafield ne sont pas effacées quand on supprime un produit.
C'est évidemment a vérifier par d'autres personnes mais je n'ai pas de vu de suppression des données des tables extrafields dans le code...
Je vois 2 corrections a faire :
1/ dans l'objet commonobject.class.php, il faut ajouter une fonction du style
/**
* Delete all extra fields values for the current object.
*
* @return void
*/
function DeleteExtraFields()
{
$error=0;
$this->db->begin();

$sql_del = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element."_extrafields WHERE fk_object = ".$this->id;
dol_syslog(get_class($this)."::delete sql=".$sql_del);
$resql = $this->db->query($sql_del);
if (! $resql)
{
$this->error=$this->db->lasterror();
dol_syslog(get_class($this)."::delete ".$this->error,LOG_ERR);
$this->db->rollback();
return -1;
}
else
{
$this->db->commit();
return 1;
}
}
2/ dans la classe product.class.php et dans la fonction function delete($id)
// Delete Extrafields
if (! $error)
{
$this->DeleteExtraFields();
}
Juste avant : // Delete product ...