cn=$p_cn; $this->bh_id=$p_bh_id; $this->po_id=$p_po_id; } /*!\brief Load Data from Database * * \return an array of Bud_Data objects */ function load() { if ( $this->po_id == -1) $sql_po_id="po_id is null"; else $sql_po_id="po_id = $this->po_id"; $sql=" select bd_id,bc_id,bc_code,bd.bh_id,bd.bh_name,". " tmp_pcmn.pcm_val as pcm_val,pcm_lib ". " from bud_detail ". " join bud_hypothese as bd using (bh_id) ". " join bud_card using (bc_id) ". " join tmp_pcmn using (pcm_val) ". " where bd.bh_id=".$this->bh_id. " and $sql_po_id ;"; echo_debug(__FILE__.':'.__LINE__.'- load',' SQL ',$sql); $res1=ExecSql($this->cn,$sql); $array=pg_fetch_all($res1); $sql_periode="select coalesce(bdp_amount,0) as bdp_amount,a.p_id as p_id ". " from bud_detail_periode left join parm_periode as a using (p_id) ". " where bd_id=$1 order by p_start,p_end "; $ret=array(); if ( ! empty($array)){ foreach ($array as $row) { $obj=new Bud_Data($this->cn,$this->bh_id,$this->po_id); $obj->load_from_array($row); echo_debug(__FILE__,__LINE__," load "); echo_debug(__FILE__,__LINE__,$obj); try { // get the the bud_detail_periode for this bud_detail $arg=array($obj->bd_id); $res2=ExecSqlParam($this->cn,$sql_periode,$arg); $per=pg_fetch_all($res2); } catch (Exception $e) { echo __FILE__.__LINE__."Erreur lors du chargement "; echo_debug(__FILE__,__LINE__,$arg); echo_debug(__FILE__,__LINE__,$e); echo $e->getMessage(); exit(); } foreach ($per as $row2) { echo_debug(__FILE__.':'.__LINE__.'- row','',$row2); $p_id=$row2['p_id']; $obj->amount[$p_id]=$row2['bdp_amount']; } $ret[]=clone $obj; } } echo_debug(__FILE__.':'.__LINE__,'Return load',$ret); return $ret; } /*!\brief create a empty row (subform) * * \return a Bud_Data object */ private function create_empty_row() { $ret=new Bud_Data($this->cn,$this->bh_id,$this->po_id); $ret->bd_id=0; $ret->pcm_lib=""; // populate the periode with 0 $res_empty=get_array($this->cn, "select 0,p_id from parm_periode order by p_start,p_end"); foreach ( $res_empty as $r) { $p_id=$r['p_id']; $ret->amount[$p_id]=0; } return $ret; } /*!\brief convert the array loaded from the database into data member * \param array * */ private function load_from_array($p_array) { foreach (array('bd_id','bh_id','bc_id','pcm_val','pcm_lib','bh_name','bc_code') as $key) { $this->{$key}=$p_array[$key]; } } /*!\brief create all the row of the form, MAX_BUD_DETAIL is the * maximum of sub form the form may contains (defined in constant.php) * * \return string with html code */ function form() { $r=""; $array=$this->load(); echo_debug(__FILE__.':'.__LINE__,'form : $array',$array); $a=0; if ( ! empty ($array) ) { foreach ($array as $row) { $a++; $style=($a%2==0)?"even":"odd"; echo_debug(__FILE__.':'.__LINE__,'function form :row ',$row); $r.=$row->create_row($style); } } for ($i=count($array);$i< MAX_BUD_DETAIL;$i++) { $a++; $style=($a%2==0)?"even":"odd"; $obj=$this->create_empty_row($style); $r.=$obj->create_row(); } return $r; } /*!\brief Create one form * \param the style * \return string */ private function create_row($p_style="odd") { static $p_number=0; echo_debug(__FILE__.':'.__LINE__.'- create_row','',$this); $p_number++; $tot=0; $wAmount=new widget('text'); $wAmount->size=8; $wAmount->extra="disabled"; $wAccount=new widget('js_bud_search_poste'); $wAccount->table=0; $wAccount->disabled=true; $wAccount->value=$this->pcm_val.' - '.$this->pcm_lib; $wAccount->extra=$this->pcm_val; $wBudCard=new widget('select'); $wBudCard->value=$this->load_bud_card(); $wBudCard->selected=$this->bc_id; $wBudCard->disabled=true; foreach ($this->amount as $p_id=>$amount) $tot+=$amount; $r='
"; $button_change=new widget('button','Change'); $button_change->javascript='bud_form_enable('.$p_number.')'; $r.=$button_change->IOValue('button_change'.$p_number); $button_save=new widget('button','Sauve'); $button_save->javascript='bud_form_save('.$p_number.')'; $button_save->extra='style="display:none"'; $r.=$button_save->IOValue('button_save'.$p_number); $button_delete=new widget('button','Efface'); $button_delete->javascript='bud_form_delete('.$p_number.')'; $button_delete->extra='style="display:none"'; $r.=$button_delete->IOValue('button_delete'.$p_number); $button_escape=new widget('button','Echapper'); $button_escape->javascript='bud_form_disable('.$p_number.')'; $button_escape->extra='style="display:none"'; $r.=$button_escape->IOValue('button_escape'.$p_number); $r.=''; $r.="| '.$row['d'].' | '; $r.="
|---|