function display_form_plan($p_array, $p_null, $p_mode, $p_seq, $p_amount, $p_id = '', $p_add_button = true) { if ($p_array != null) { extract($p_array); } $result = ""; $plan = new Anc_Plan($this->db); $a_plan = $plan->get_list(" order by pa_id "); if (empty($a_plan)) { return ""; } $table_id = "t" . $p_seq; $hidden = new IHidden(); $readonly = $p_mode == 1 ? false : true; $result .= $hidden->input('amount_' . $table_id, $p_amount); if ($p_mode == 1) { $result .= '<table id="' . $p_id . $table_id . '">'; } else { $result .= '<table>'; } $result .= "<tr>" . $plan->header() . "<th>montant</th></tr>"; /* compute the number of rows */ $nb_row = isset($val[$p_seq]) ? count($val[$p_seq]) : 1; $count = 0; $remain = abs($p_amount); $ctrl_remain = "remain" . $this->in_div . $table_id; for ($i = 0; $i < $nb_row; $i++) { $result .= '<tr>'; foreach ($a_plan as $r_plan) { $array = $this->db->make_array("select po_id as value," . " html_quote(po_name) as label from poste_analytique " . " where pa_id = " . $r_plan['id'] . " order by po_name", $p_null); $select = new ISelect("hplan[" . $p_seq . "][]", $array); $select->table = 0; // view only or editables if ($p_mode == 1) { // editable $select->readonly = false; if (isset($hplan) && isset($hplan[$p_seq][$count])) { $select->selected = $hplan[$p_seq][$count]; } } else { if (isset($hplan) && isset($hplan[$p_seq][$count])) { $select->selected = $hplan[$p_seq][$count]; } // view only $select->readOnly = true; } if ($p_mode == 1) { $result .= '<td>' . $select->input() . '</td>'; } else { $result .= '<td>' . $select->display() . '</td>'; } $count++; } $value = new INum(); $value->javascript = 'onchange="format_number(this);anc_refresh_remain(\'' . $this->in_div . $table_id . '\',\'' . $p_seq . '\')"'; $value->name = "val[" . $p_seq . "][]"; $value->size = 6; $value->value = isset($val[$p_seq][$i]) ? $val[$p_seq][$i] : abs($p_amount); $value->readOnly = $p_mode == 1 ? false : true; $remain = bcsub($remain, $value->value); $result .= '<td>' . $value->input() . '</td>'; $result .= "</tr>"; } $result .= "</table>"; if ($p_add_button && $p_mode == 1) { $style_remain = $remain == 0 ? 'style="color:green"' : ' style="color:red"'; $result .= " Reste à imputer = " . '<span class="remain" ' . $style_remain . ' id="' . $ctrl_remain . '">' . $remain . '</span>'; // add a button to add a row $button = new IButton(); $button->javascript = "add_row('" . $p_id . "{$table_id}',{$p_seq});"; $button->name = "js" . $p_id . $p_seq; $button->label = _("Nouvelle ligne"); $result .= "<br>" . $button->input(); /** * Add a button for distribution key * */ $ledger = HtmlInput::default_value_post("p_jrn", 0); if ($ledger == 0) { $ledger = $this->db->get_value('select j_jrn_def from jrnx where j_id=$1', array($this->j_id)); } $gDossier = Dossier::id(); $button_key = new IButton(); $button_key->javascript = "anc_key_choice(" . $gDossier . ",'" . $p_id . "{$table_id}',{$p_amount},'" . $ledger . "');"; $button_key->name = "js" . $p_id . $p_seq; $button_key->label = _("Clef"); $result .= $button_key->input(); } return $result; }