require_once NOALYSS_INCLUDE.'/lib/manage_table_sql.class.php';
require_once NOALYSS_INCLUDE.'/database/fiche_def_ref_sql.class.php';
/**
* @file
* @brief Manage the template of card category
*/
/**
* @class
* @brief Manage the template of card category
*/
class Template_Card_Category extends Manage_Table_SQL
{
function __construct(Fiche_def_ref_SQL $p_table)
{
$this->table=$p_table;
parent::__construct($p_table);
// Label of the columns
$this->set_col_label("frd_text", _("Nom"));
$this->set_col_label("frd_class_base", _("Poste comptable de base"));
$this->set_col_label("frd_id", _("ID"));
// Cannot update frd_id
$this->set_property_updatable("frd_id", FALSE);
$this->a_order=["frd_id", "frd_text", "frd_class_base"];
}
function delete()
{
$cn=Dossier::connect();
if ($cn->get_value("select count(*) from fiche_def where frd_id=$1",
[$this->table->frd_id])>0)
{
throw new Exception(_("Effacement impossible : catégorie utilisée"));
}
$cn->exec_sql("delete from attr_min where frd_id=$1",[$this->table->frd_id]);
$this->table->delete();
}
/**
* Check before inserting or updating, return TRUE if ok otherwise FALSE.
* @return boolean
*/
function check()
{
$cn=Dossier::connect();
$error=0;
if (trim($this->table->frd_text)=="")
{
$this->set_error("frd_text", _("Le nom ne peut pas être vide"));
$error++;
}
if (trim($this->table->frd_class_base)!="")
{
$cnt=$cn->get_value("select count(*) from tmp_pcmn where pcm_val=$1"
, [$this->table->frd_class_base]);
if ($cnt==0)
{
$this->set_error("frd_class_base",
_("Poste comptable n'existe pas"));
$error++;
}
}
if ($error!=0)
{
return false;
}
return true;
}
/**
* @brief display into a dialog box the datarow in order
* to be appended or modified. Can be override if you need
* a more complex form
*/
function input()
{
echo "
";
echo _("Attention, ne pas changer la signification de ce poste.");
echo hi(_("par exemple ne pas changer Client par fournisseur"))."
";
echo _("sinon le programme fonctionnera mal, ".
"utiliser uniquement des chiffres pour la classe de base ou rien")."";
parent::input();
/**
* Add / Remove attribut Minimum
*/
if ($this->table->frd_id!=-1)
{
echo h2(_("Attribut minimum pour les catégories de fiches"));
$cn=Dossier::connect();
$dossier_id=Dossier::id();
$objname=$this->get_object_name();
$a_attribut=$cn->get_array("select ad_id,ad_text,ad_type from attr_min join attr_def using (ad_id) where frd_id=$1 order by 2",
[$this->table->frd_id]);
$nb_attribut=count($a_attribut);
printf('