*/ class Acc_Other_Tax_MTable extends Manage_Table_SQL { /** * @brief Build and returns an object * @param int $p_id */ static public function build($p_id=-1) { $cn=Dossier::connect(); $object_sql=new Acc_Other_Tax_SQL($cn,$p_id); $object=new Acc_Other_Tax_MTable($object_sql); $object->set_object_name("other_tax_ctl"); $object->set_callback("ajax_misc.php"); $object->add_json_param("op","other_tax"); $object->set_order(["ac_label","ac_rate","ac_accounting","ajrn_def_id"]); $object->set_col_label("ac_label",_("Nom")); $object->set_col_label("ajrn_def_id",_("Journaux")); $object->set_col_label("ac_rate",_("Taux")); $object->set_col_tips("ac_rate",82); $object->set_col_label("ac_accounting",_("Poste comptable")); $object->set_col_tips("ac_accounting",81); $object->set_col_type("ac_accounting","custom"); $object->set_col_type("ajrn_def_id","custom"); $object->set_property_visible("ajrn_def_id",false); return $object; } function input_custom($p_key,$p_value) { switch ($p_key) { case "ac_accounting": $accounting=new IPoste("ac_accounting",$p_value); $accounting->set_attribute('gDossier',Dossier::id()); $accounting->set_attribute('jrn',0); $accounting->set_attribute('account','ac_accounting'); echo $accounting->input(); break; case "ajrn_def_id": $cn=Dossier::connect(); $a_ledger=$cn->get_array("select jrn_def_id,jrn_def_name , coalesce ( (select array_position(ajrn_def_id,jrn_def_id) from acc_other_tax where ac_id=$1 ),0) as in_array from jrn_def where jrn_enable=1 and jrn_def_type in ('ACH','VEN') order by jrn_def_name",[$this->get_table()->get("ac_id")]); if (empty($a_ledger) ) { echo _("Aucun journal disponible"); return; } $nb_ledger=count($a_ledger); echo ''; break; } } function display_row_custom($p_key, $p_value, $p_id = 0) { $cn=Dossier::connect(); switch ($p_key) { case 'ac_accounting': $label=$cn->get_value("select pcm_lib from tmp_pcmn where pcm_val=$1", [$p_value]); echo '', h($p_value), " ", h($label), ''; break; } } function check() { $row=$this->get_table(); $cn=$row->get_cn(); if ( trim($row->getp("ac_rate")) == "") { $row->setp("ac_rate",0); } if ( $row->getp("ac_rate")>100 || $row->getp("ac_rate")< 0 ) { $this->set_error("ac_rate",_("Valeur invalide")); } $accounting=$row->getp("ac_accounting"); $nb_accounting=$cn->get_value("select count(*) from tmp_pcmn where pcm_val =format_account($1)", [$accounting]); if (empty($accounting)||$nb_accounting == 0) { $this->set_error("ac_accounting",_("Poste comptable inexistant")); } $ledger=$row->get("ajrn_def_id"); if ( $ledger != "{}" && ! empty ($ledger)) { $ledger=trim($ledger,'{'); $ledger=trim($ledger,'}'); $a_ledger=explode(",",$ledger); $nb_ledger=count($a_ledger); $pk=$row->get("ac_id"); for ($i=0;$i<$nb_ledger;$i++) { if ($cn->get_value("select count(*) from acc_other_tax where array_position(ajrn_def_id,$1) is not null and ac_id != $2 ",[$a_ledger[$i],$pk]) > 0) { $this->set_error("ajrn_def_id",_("Journal déjà utilisé dans autre taxe")); } } } if ($this->count_error()>0) { return false; } return true; } function input() { $this->set_property_visible("ajrn_def_id",true); return parent::input(); } function from_request() { parent::from_request(); // TODO: Change the autogenerated stub $http=new HttpInput(); $this->table->set("ajrn_def_id","{".join(",",$http->post("check","array",array()))."}"); } }