forecast_id = -1; } static function build($p_id = -1) { $cn = Dossier::connect(); $forecast_sql = new Forecast_Item_SQL($cn, $p_id); $forecast_item = new Forecast_Item_MTable($forecast_sql); $forecast_item->add_json_param('ac', 'FORECAST'); $forecast_item->add_json_param("op", "forecast_item"); $forecast_item->set_callback("ajax_misc.php"); if ( $p_id != -1 ) { $forecast_id=$cn->get_value("select f_id from forecast_item fi join forecast_category fc on (fi.fc_id=fc.fc_id) where fi_id=$1",array($p_id)); $forecast_item->set_forecast_id($forecast_id); } return $forecast_item; } /** * @return int */ public function get_forecast_id(): int { return $this->forecast_id; } /** * @param int $forecast_id */ public function set_forecast_id(int $forecast_id) { $this->forecast_id = $forecast_id; $this->add_json_param("forecast_id", $forecast_id); } function count_category() { $object=$this->get_table(); $nCategory = $object->cn->get_value("select count(*) from forecast_category where f_id=$1",[$this->forecast_id]); return $nCategory; } /** * Display list of items, if there is no category the list is empty and you cannot add new ones * @param type $p_string * @param type $p_array */ public function display_table($p_string = "", $p_array = NULL) { $sql = "select fi_id,fi_text,fi_account, fi_account str_account_card, fc_desc, fi.fi_amount , (select p_start from parm_periode pp where pp.p_id=fi.fi_pid) as str_periode from forecast_item fi join forecast_category fc on (fi.fc_id=fc.fc_id) where fc.f_id =$1 order by fc_desc,fi_text "; $a_row = $this->get_table()->cn->get_array($sql, array($this->forecast_id)); require_once NOALYSS_TEMPLATE . "/forecast_item_mtable-display_table.php"; } public function display_row($p_row) { if ( ! isset($p_row['fc_desc'])) { $cn=$this->get_table()->cn; $sql= "select fi_id,fi_text,fi_account, fi_account str_account_card, fc_desc, fi.fi_amount , (select p_start from parm_periode pp where pp.p_id=fi.fi_pid) as str_periode from forecast_item fi join forecast_category fc on (fi.fc_id=fc.fc_id) where fi_id=$1"; $p_row=$cn->get_row($sql,[$p_row['fi_id']]); } if ( ! isset ($p_row['str_account_card'])) { $p_row['str_account_card']=""; } if ( !isset ($p_row['str_periode'])){ $p_row['str_periode']=""; } printf('', $this->object_name, $p_row['fi_id']); print td($p_row['fc_desc']); print td($p_row['fi_text']); print td($p_row['str_account_card']); print td(nbm($p_row['fi_amount'])); print td($p_row['str_periode']); $jsdel = sprintf("%s.remove('%s','%s');", $this->object_name, $p_row['fi_id'], $this->object_name ); $jsupd = sprintf("%s.input('%s','%s');", $this->object_name, $p_row['fi_id'], $this->object_name ); echo '' . Icon_Action::modify(uniqid(), $jsupd); echo ''; echo ''; echo Icon_Action::trash(uniqid(), $jsdel); echo ''; echo ''; } public function input() { $object=$this->get_table(); if ( $this->count_category() == 0 ) { echo span(_("Sans catégorie il n'est pas possible d'ajouter de nouveaux éléments"),'class="notice"'); return false; } require_once NOALYSS_TEMPLATE."/forecast_item_mtable-input.php"; return true; } /** * forecast_id: 14 p_id: 143 action: save ctl: tbl6058da883ded6 fc_id: 88 fi_text: Gérant fi_account: [4160%]-[4890%] fi_amount: 3000.0000 fi_pid: 0 */ public function from_request() { $http=new HttpInput(); $this->set_forecast_id($http->post("forecast_id","number")); $object_sql=$this->get_table(); $object_sql->setp("fi_text",$http->post("fi_text")); $object_sql->setp("fc_id",$http->post('fc_id',"number")); $object_sql->setp("fi_account",$http->post('fi_account')); $object_sql->setp("fi_amount",$http->post('fi_amount',"number")); $object_sql->setp("fi_pid",$http->post('fi_pid',"number")); $object_sql->setp("fi_amount_initial",$http->post("fi_amount_initial","number")); } function check() { $object=$this->get_table(); if ( trim($object->getp("fi_text") ) == "") { $this->set_error("fi_text", _("Intitulé est vide")); } if ( trim ($object->getp("fi_account"))=="") { $this->set_error("fi_account", _("Formule est vide")); } if ( trim ($object->getp("fi_account"))=="") { $this->set_error("fi_account", _("Formule est vide")); } if ( ! Impress::check_formula($object->getp("fi_account"))) { $this->set_error("fi_account", _("Formule invalide")); } if ( $this->count_error()==0) return true; return false; } }