set_sql_filter(); // sum debit $sql="select m.po_id,sum(deb) as sum_deb,sum(cred) as sum_cred,"; $sql.=" po_name||' '||po_description as po_name"; $sql.=" from "; $sql.=" (select po_id,case when oa_debit='t' then oa_amount else 0 end as deb,"; $sql.="case when oa_debit='t' then oa_amount else 0 end as cred "; $sql.=" from operation_analytique join poste_analytique using(po_id)"; $sql.=(empty($filter) == false)?" where ".$filter:""; $sql.=" ) as m join poste_analytique using (po_id)"; $sql.=" where pa_id=".$this->pa_id; $sql.=" group by po_id,po_name,po_description"; $sql.=" order by po_id"; $res=ExecSql($this->db,$sql); if ( pg_NumRows($res) == 0 ) return null; $a=array(); $count=0; $array=pg_fetch_all($res); foreach ($array as $row) { $a[$count]['po_id']=$row['po_id']; $a[$count]['sum_deb']=$row['sum_deb']; $a[$count]['sum_cred']=$row['sum_cred']; $a[$count]['po_name']=$row['po_name']; $a[$count]['solde']=abs($row['sum_deb']-$row['sum_cred']); $a[$count]['debit']=($row['sum_deb']>$row['sum_cred'])?"debit":"credit"; $count++; } return $a; } function set_sql_filter() { $sql=""; $and=""; if ( $this->from != "" ){ $sql.=" oa_date >= to_date('".$this->from."','DD.MM.YYYY')"; $and=" and "; } if ( $this->to != "" ){ $sql.=" $and oa_date <= to_date('".$this->to."','DD.MM.YYYY')"; $and=" and "; } if ( $this->from_poste != "" ){ $sql.=" $and upper(po_name)>= upper('".$this->from_poste."')"; $and=" and "; } if ( $this->to_poste != "" ){ $sql.=" $and upper(po_name)<= upper('".$this->to_poste."')"; $and=" and "; } return $sql; } /*! * \brief * \param * \param * \param * * * \return string */ function display_html() { $r=""; $r.=""; $r.=""; $r.=""; $r.=""; $r.=""; $r.=""; $array=$this->get_data(); $odd=0; if ( is_array($array) == false ){ return $array; } foreach ( $array as $row) { $odd++; $r.=($odd%2==0)?'':''; // the name and po_id // $r.=sprintf("",$row['po_id']); $r.=sprintf("",$row['po_name']); $r.=sprintf("",$row['sum_deb']); $r.=sprintf("",$row['sum_cred']); $r.=sprintf("",$row['solde']); $r.=""; } $r.="
Poste comptable AnalytiqueDébitCréditSolde
%s%s%12.2f%12.2f%12.2f
"; return $r; } /*! * \brief * \param * \param * \param * * * \return */ function display_form($p_string="") { $r=parent::display_form($p_string); $r.= ''; return $r; } /*! * \brief Display the result in pdf * * \return none */ function display_pdf() { $array=$this->get_data(); $offset=0; $page=1; $pagesize=50; print_r($array); $count=ceil(count($array)/$pagesize); $pdf= new Cezpdf("A4"); $pdf->selectFont('./addon/fonts/Helvetica.afm'); $titre=sprintf("Balance simple poste %s %s date %s %s", $this->from_poste, $this->to_poste, $this->from, $this->to); for ($i_loop=0;$i_loop<=$count;$i_loop++) { $view=$array; $view=array_splice($view,$offset,$pagesize); header_pdf($this->db,$pdf); $pdf->ezTable($view, array("po_id"=>"id", "po_name"=>"Poste Comptable", "sum_deb"=>"Debit", "sum_cred"=>"Credit", "solde"=>"Solde", "debit"=>"Debit/Credit"), $titre, array('shaded'=>1,'showHeadings'=>1,'width'=>500, 'cols'=>array('sum_deb'=> array('justification'=>'right'), 'solde'=> array('justification'=>'right'), 'sum_cred'=> array('justification'=>'right')))); $page++; $pdf->ezNewPage(); if ( DEBUG) print_r($view); $offset+=$pagesize; } $pdf->ezStream(); } /*! * \brief * \param * \param * \param * * * \return */ function display_csv() { $array=$this->get_data(); if ( is_array($array) == false ){ return $array; } $r=""; foreach ( $array as $row) { // the name and po_id $solde=($row['sum_cred']>$row['sum_deb'])?'C':'D'; $solde=($row['sum_cred']==$row['sum_deb'])?'':$solde; $r.=sprintf("'%s',",$row['po_id']); $r.=sprintf("'%s',",$row['po_name']); $r.=sprintf("%12.2f,",$row['sum_deb']); $r.=sprintf("%12.2f,",$row['sum_cred']); $r.=sprintf("%12.2f,",$row['solde']); $r.=sprintf("'%s'",$row['debit']); $r.="\r\n"; } return $r; } /*! * \brief * \param * \param * \param * * * \return */ function show_button($url_csv,$url_pdf,$p_string="") { $r=""; $submit=new widget(); $submit->table=0; $hidden=new widget("hidden"); $r.= '
'; $r.= $p_string; $r.= dossier::hidden(); $r.= $hidden->IOValue("to",$this->to); $r.= $hidden->IOValue("from",$this->from); $r.= $hidden->IOValue("pa_id",$this->pa_id); $r.= $hidden->IOValue("from_poste",$this->from_poste); $r.= $hidden->IOValue("to_poste",$this->to_poste); $r.= $submit->Submit('bt_pdf',"Export en PDF"); $r.= '
'; $r.= '
'; $r.= $hidden->IOValue("to",$this->to); $r.= $hidden->IOValue("from",$this->from); $r.= $hidden->IOValue("pa_id",$this->pa_id); $r.= $hidden->IOValue("from_poste",$this->from_poste); $r.= $hidden->IOValue("to_poste",$this->to_poste); $r.= $p_string; $r.= dossier::hidden(); $r.= $submit->Submit('bt_csv',"Export en CSV"); $r.= '
'; return $r; } /*! * \brief for testing and debuggind the class * it must never be called from production system, it is * intended only for developpers * \param * \param * \param * * * \return none */ static function test_me () { // call the page with ?gDossier=14 $a=DbConnect(dossier::id()); $bal=new balance_ca_bs($a); $bal->get_request(); echo '
'; echo $bal->display_form(); echo '
'; if ( isset($_GET['result'])) { print_r($bal); echo $bal->show_button("",""); echo "

HTML

"; echo $bal->display_html(); echo "

CSV

"; echo $bal->display_csv(); /* echo "

pdf

"; */ /* echo $bal->display_pdf(); */ } } }