phpcompta-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpcompta-dev] r4130 - in phpcompta/branches: . rel560/include


From: phpcompta-dev
Subject: [Phpcompta-dev] r4130 - in phpcompta/branches: . rel560/include
Date: Wed, 25 May 2011 22:16:38 +0200 (CEST)

Author: danydb
Date: 2011-05-25 22:16:37 +0200 (Wed, 25 May 2011)
New Revision: 4130

Added:
   phpcompta/branches/rel560/
   phpcompta/branches/rel560/include/class_acc_account_ledger.php
   phpcompta/branches/rel560/include/export_gl_csv.php
   phpcompta/branches/rel560/include/export_gl_pdf.php
   phpcompta/branches/rel560/include/impress_gl_comptes.inc.php
Removed:
   phpcompta/branches/rel560/include/class_acc_account_ledger.php
   phpcompta/branches/rel560/include/export_gl_csv.php
   phpcompta/branches/rel560/include/export_gl_pdf.php
   phpcompta/branches/rel560/include/impress_gl_comptes.inc.php
Log:
New Version 5.6



Copied: phpcompta/branches/rel560 (from rev 4127, phpcompta/trunk)

Deleted: phpcompta/branches/rel560/include/class_acc_account_ledger.php
===================================================================
--- phpcompta/trunk/include/class_acc_account_ledger.php        2011-05-24 
20:24:49 UTC (rev 4127)
+++ phpcompta/branches/rel560/include/class_acc_account_ledger.php      
2011-05-25 20:16:37 UTC (rev 4130)
@@ -1,581 +0,0 @@
-<?php
-/*
- *   This file is part of PhpCompta.
- *
- *   PhpCompta is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   PhpCompta is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with PhpCompta; if not, write to the Free Software
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-/* $Revision$ */
-// Copyright Author Dany De Bontridder address@hidden
-/*! \file
- * \brief Manage the account
- */
-/*!
- * \brief Manage the account from the table jrn, jrnx or tmp_pcmn
- */
-require_once("class_ihidden.php");
-require_once ('class_database.php');
-require_once ('class_dossier.php');
-
-class Acc_Account_Ledger
-{
-    var $db;          /*!< $db database connection */
-    var $id;          /*!< $id poste_id (pcm_val)*/
-    var $label;       /*!< $label label of the poste */
-    var $parent;      /*!< $parent parent account */
-    var $row;         /*!< $row double array see get_row */
-    var $tot_deb;    /*!< value set by  get_row */
-    var $tot_cred;    /*!< value by  get_row */
-    function __construct ($p_cn,$p_id)
-    {
-        $this->db=$p_cn;
-        $this->id=$p_id;
-    }
-    /**
-     address@hidden get the row thanks the resource
-     address@hidden double array 
(j_date,deb_montant,cred_montant,description,jrn_name,j_debit,jr_internal)
-     *         (tot_deb,tot_credit)
-     */
-    private function get_row_sql($Res)
-    {
-        $array=array();
-        $tot_cred=0.0;
-        $tot_deb=0.0;
-        $Max=Database::num_row($Res);
-        if ( $Max == 0 ) return null;
-        for ($i=0;$i<$Max;$i++)
-        {
-            $array[]=Database::fetch_array($Res,$i);
-            if ($array[$i]['j_debit']=='t')
-            {
-                $tot_deb+=$array[$i]['deb_montant'] ;
-            }
-            else
-            {
-                $tot_cred+=$array[$i]['cred_montant'] ;
-            }
-        }
-        $this->row=$array;
-        $this->tot_deb=$tot_deb;
-        $this->tot_cred=$tot_cred;
-        return array($array,$tot_deb,$tot_cred);
-
-    }
-    /*!
-     * \brief  Get data for accounting entry between 2 periode
-     *
-     * \param  $p_from periode from
-     * \param  $p_to   end periode
-     * \return double array 
(j_date,deb_montant,cred_montant,description,jrn_name,j_debit,jr_internal)
-     *         (tot_deb,tot_credit
-     *
-     */
-    function get_row($p_from,$p_to)
-    {
-        $periode=sql_filter_per($this->db,$p_from,$p_to,'p_id','jr_tech_per');
-
-        $Res=$this->db->exec_sql("select distinct 
j_id,jr_id,to_char(j_date,'DD.MM.YYYY') as j_date_fmt,j_date,".
-                                 "case when j_debit='t' then j_montant else 0 
end as deb_montant,".
-                                 "case when j_debit='f' then j_montant else 0 
end as cred_montant,".
-                                 " jr_comment as description,jrn_def_name as 
jrn_name,".
-                                 "j_debit, jr_internal,jr_pj_number ".
-                                 " from jrnx left join jrn_def on 
jrn_def_id=j_jrn_def ".
-                                 " left join jrn on jr_grpt_id=j_grpt".
-                                 " where j_poste=".$this->id." and ".$periode.
-                                 " order by j_date");
-        return $this->get_row_sql($Res);
-    }
-    /*!
-     * \brief  Get data for accounting entry between 2 date
-     *
-     * \param  $p_from date from
-     * \param  $p_to   end date
-     *\note the data are filtered by the access of the current user
-     * \return double array 
(j_date,deb_montant,cred_montant,description,jrn_name,j_debit,jr_internal)
-     *         (tot_deb,tot_credit
-     *
-     */
-    function get_row_date($p_from,$p_to,$let=0)
-    {
-        $user=new User($this->db);
-        $filter_sql=$user->get_ledger_sql('ALL',3);
-        $sql_let='';
-        switch ($let)
-        {
-        case 0:
-                break;
-        case 1:
-            $sql_let=' and j_id in (select j_id from letter_cred union select 
j_id from letter_deb)';
-            break;
-        case '2':
-            $sql_let=' and j_id not in (select j_id from letter_cred union 
select j_id from letter_deb) ';
-            break;
-        }
-        $Res=$this->db->exec_sql("select  jr_id,to_char(j_date,'DD.MM.YYYY') 
as j_date_fmt,j_date,".
-                                 "case when j_debit='t' then j_montant else 0 
end as deb_montant,".
-                                 "case when j_debit='f' then j_montant else 0 
end as cred_montant,".
-                                 " jr_comment as description,jrn_def_name as 
jrn_name,".
-                                 "j_debit, 
jr_internal,jr_pj_number,coalesce(comptaproc.get_letter_jnt(j_id),-1) as letter 
".
-                                 ",pcm_lib ".
-                                ",jr_tech_per,p_exercice ".
-                                 " from jrnx left join jrn_def on 
(jrn_def_id=j_jrn_def )".
-                                 " left join jrn on (jr_grpt_id=j_grpt)".
-                                 " left join tmp_pcmn on (j_poste=pcm_val)".
-                                " left join parm_periode on (p_id=jr_tech_per) 
".
-                                 " where j_poste=$1 and ".
-                                 " ( to_date($2,'DD.MM.YYYY') <= j_date and ".
-                                 "   to_date($3,'DD.MM.YYYY') >= j_date )".
-                                 " and $filter_sql  $sql_let ".
-                                 " order by 
j_date,substring(jr_pj_number,'\\\\d+$') asc",array($this->id,$p_from,$p_to));
-        return $this->get_row_sql($Res);
-    }
-
-
-    /*!\brief Return the name of a account
-     *        it doesn't change any data member
-     * \return string with the pcm_lib
-     */
-    function get_name()
-    {
-        $ret=$this->db->exec_sql(
-                 "select pcm_lib from tmp_pcmn where
-                 pcm_val=$1",array($this->id));
-        if ( Database::num_row($ret) != 0)
-        {
-            $r=Database::fetch_array($ret);
-            $this->name=$r['pcm_lib'];
-        }
-        else
-        {
-            $this->name="Poste inconnu";
-        }
-        return $this->name;
-    }
-    /*!\brief check if the poste exist in the tmp_pcmn
-     *\return the number of line (normally 1 or 0)
-     */
-    function do_exist()
-    {
-        $sql="select pcm_val from tmp_pcmn where pcm_val= $1";
-        $ret=$this->db->exec_sql($sql,array($this->id));
-        return Database::num_row($ret) ;
-    }
-    /*!\brief Get all the value for this object from the database
-     *        the data member are set
-     * \return false if this account doesn't exist otherwise true
-     */
-    function load()
-    {
-        $ret=$this->db->exec_sql("select pcm_lib,pcm_val_parent from
-                                 tmp_pcmn where pcm_val=$1",array($this->id));
-        $r=Database::fetch_all($ret);
-
-        if ( ! $r ) return false;
-        $this->label=$r[0]['pcm_lib'];
-        $this->parent=$r[0]['pcm_val_parent'];
-        return true;
-
-    }
-    /*!\brief Get all the value for this object from the database
-     *        the data member are set
-     * \return false if this account doesn't exist otherwise true
-     */
-    function get()
-    {
-        echo "OBSOLETE Acc_Account_Ledger->get(), a remplacer par 
Acc_Account_Ledger->load()";
-        return $this->load();
-    }
-
-    /*!
-     * \brief  give the balance of an account
-     *
-     * \return
-     *      balance of the account
-     *
-     */
-    function get_solde($p_cond=" true ")
-    {
-        $Res=$this->db->exec_sql("select sum(deb) as sum_deb, sum(cred) as 
sum_cred from
-                                 ( select j_poste,
-                                 case when j_debit='t' then j_montant else 0 
end as deb,
-                                 case when j_debit='f' then j_montant else 0 
end as cred
-                                 from jrnx join tmp_pcmn on j_poste=pcm_val
-                                 where
-                                 j_poste::text like ('$this->id'::text) and
-                                 $p_cond
-                                 ) as m  ");
-        $Max=Database::num_row($Res);
-        if ($Max==0) return 0;
-        $r=Database::fetch_array($Res,0);
-
-        return abs($r['sum_deb']-$r['sum_cred']);
-    }
-    /*!
-     * \brief   give the balance of an account
-     * \return
-     *      balance of the account
-     *
-     */
-    function get_solde_detail($p_cond="")
-    {
-
-        if ( $p_cond != "") $p_cond=" and ".$p_cond;
-        $sql="select sum(deb) as sum_deb, sum(cred) as sum_cred from
-             ( select j_poste,
-             case when j_debit='t' then j_montant else 0 end as deb,
-             case when j_debit='f' then j_montant else 0 end as cred
-             from jrnx
-             where
-             j_poste::text like ('$this->id'::text)
-             $p_cond
-             ) as m  ";
-
-        $Res=$this->db->exec_sql($sql);
-        $Max=Database::num_row($Res);
-
-        if ($Max==0)
-        {
-            return array('debit'=>0,
-                         'credit'=>0,
-                         'solde'=>0)     ;
-        }
-        $r=Database::fetch_array($Res,0);
-// if p_start is < p_end the query returns null to avoid any problem
-// we set it to 0
-        if ($r['sum_deb']=='')
-            $r['sum_deb']=0.0;
-        if ($r['sum_cred']=='')
-            $r['sum_cred']=0.0;
-
-        return array('debit'=>$r['sum_deb'],
-                     'credit'=>$r['sum_cred'],
-                     'solde'=>abs($r['sum_deb']-$r['sum_cred']));
-    }
-    /*!
-     * \brief isTva tell is a poste is used for VAT
-     * \param none
-     *
-     *
-     * \return 1 is Yes otherwise 0
-     */
-    function isTVA()
-    {
-        // Load TVA array
-        $a_TVA=$this->db->get_array('select tva_poste
-                                    from tva_rate');
-        foreach ( $a_TVA as $line_tva)
-        {
-            if ( $line_tva['tva_poste']  == '' )
-                continue;
-            list($tva_deb,$tva_cred)=explode(',',$line_tva['tva_poste']);
-            if ( $this->id == $tva_deb ||
-                    $this->id == $tva_cred )
-            {
-                return 1;
-            }
-        }
-        return 0;
-
-    }
-    /*!
-     * \brief HtmlTable, display a HTML of a poste for the asked period
-     * \param $p_array array for filter 
-     * \param $let lettering of operation 0
-     * \return -1 if nothing is found otherwise 0
-     */
-    function HtmlTable($p_array=null,$let=0 )
-    {
-        if ( $p_array==null)$p_array=$_REQUEST;
-        $this->get_name();
-        list($array,$tot_deb,$tot_cred)=$this->get_row_date( 
$p_array['from_periode'],
-                                                            
$p_array['to_periode'],$let
-                                                           );
-
-        if ( count($this->row ) == 0 )
-            return -1;
-
-        $rep="";
-
-        echo '<h2 class="info">'.$this->id." ".$this->name.'</h2>';
-        echo "<TABLE class=\"resultfooter\" 
style=\"border-collapse:separate;width:100%;border-spacing:5px\">";
-        echo '<tbody>';
-        echo "<TR>".
-        "<TH> Date</TH>".
-        "<TH> n° de pièce </TH>".
-        "<TH> Code interne </TH>".
-        "<TH> Description </TH>".
-        "<TH style=\"text-align:right\"> D&eacute;bit  </TH>".
-        "<TH style=\"text-align:right\"> Cr&eacute;dit </TH>".
-        th('Prog.','style="text-align:right"').
-        th('Let.','style="text-align:right"');
-        "</TR>"
-        ;
-        $progress=0;$sum_deb=0;$sum_cred=0;
-       bcscale(2);
-       $old_exercice="";
-        foreach ( $this->row as $op )
-        {
-            $vw_operation=sprintf('<A class="detail" 
style="text-decoration:underline" 
HREF="javascript:modifyOperation(\'%s\',\'%s\')" >%s</A>',
-                                  $op['jr_id'], dossier::id(), 
$op['jr_internal']);
-            $let='';
-            if ( $op['letter'] !=-1) $let=$op['letter'];
-           $tmp_diff=bcsub($op['deb_montant'],$op['cred_montant']);
-
-           /*
-            * reset prog. balance to zero if we change of exercice
-            */
-           if ( $old_exercice != $op['p_exercice'])
-             {
-               if ( $old_exercice != '')
-                 {
-                   $progress=bcsub($sum_deb,$sum_cred);
-
-                   echo "<TR style=\"font-weight:bold\">".
-                     "<TD></TD>".
-                     td('').
-                     "<TD></TD>".
-                     "<TD>Totaux</TD>".
-                     "<TD style=\"text-align:right\">".nbm($sum_deb)."</TD>".
-                     "<TD style=\"text-align:right\">".nbm($sum_cred)."</TD>".
-                     td(nbm(abs($progress)),'style="text-align:right"').
-                     td('').
-                     "</TR>";
-                   $sum_cred=0;
-                   $sum_deb=0;
-                   $progress=0;
-
-                 }
-             }
-           $progress=bcadd($progress,$tmp_diff);
-           $sum_cred=bcadd($sum_cred,$op['cred_montant']);
-           $sum_deb=bcadd($sum_deb,$op['deb_montant']);
-           
-           echo "<TR>".
-             "<TD>".format_date($op['j_date'])."</TD>".
-             td(h($op['jr_pj_number'])).
-             "<TD>".$vw_operation."</TD>".
-             "<TD>".h($op['description'])."</TD>".
-             "<TD style=\"text-align:right\">".nbm($op['deb_montant'])."</TD>".
-             "<TD 
style=\"text-align:right\">".nbm($op['cred_montant'])."</TD>".
-             td(nbm(abs($progress)),'style="text-align:right"').
-             
-             td($let,' style="color:red;text-align:right"').
-             "</TR>";
-           $old_exercice=$op['p_exercice'];
-        }
-        echo '<tfoot>';
-        $solde_type=($sum_deb>$sum_cred)?"solde débiteur":"solde créditeur";
-        $diff=abs(bcsub($sum_deb,$sum_cred));
-
-        echo "<TR style=\"font-weight:bold\">".
-        "<TD >Totaux</TD><td></td>".
-        "<TD ></TD>".
-        "<TD></TD>".
-         "<TD  style=\"text-align:right\">".nbm($sum_deb)."</TD>".
-         "<TD  style=\"text-align:right\">".nbm($sum_cred)."</TD>".
-         "<TD style=\"text-align:right\">".nbm($diff)."</TD>".
-
-        "</TR>";
-       echo   "<tr><TD>$solde_type</TD><td></td>".
-         "<TD style=\"text-align:right\">".nbm($diff)."</TD>".
-        "</TR>";
-        echo '</tfoot>';
-        echo '</tbody>';
-
-        echo "</table>";
-
-        return;
-    }
-
-    /*!
-     * \brief Display HTML Table Header (button)
-     *
-     * \return none
-     */
-    static function HtmlTableHeader($actiontarget="poste")
-    {
-      switch($actiontarget)
-       {
-       case 'poste':
-         $action_csv='CSV/postedetail';
-         $action_pdf='PDF/postedetail';
-         break;
-       case 'gl_comptes':
-         $action_csv='CSV/glcompte';
-         $action_pdf='PDF/glcompte';
-         break;
-       default:
-         throw new Exception(" Fonction HtmlTableHeader argument actiontarget 
invalid");
-         exit;
-       }         
-        $hid=new IHidden();
-        echo '<div class="noprint">';
-        echo "<table >";
-        echo '<TR>';
-        
$str_ople=(isset($_REQUEST['ople']))?HtmlInput::hidden('ople',$_REQUEST['ople']):'';
-       if ($actiontarget=='poste')
-         {
-           echo '<TD><form method="GET" ACTION="">'.
-             dossier::hidden().
-             HtmlInput::submit('bt_other',"Autre poste").
-             
$hid->input("type","poste").$hid->input('p_action','impress')."</form></TD>";
-         }
-
-       $letter=HtmlInput::default_value('letter',0,$_REQUEST);
-
-        echo '<TD><form method="GET" ACTION="export.php">'.
-        dossier::hidden().
-        HtmlInput::submit('bt_pdf',"Export PDF").
-        HtmlInput::hidden('act',$action_pdf).
-        $hid->input("type","poste").$str_ople.
-        $hid->input('p_action','impress').
-        $hid->input("from_periode",$_REQUEST['from_periode']).
-        $hid->input("to_periode",$_REQUEST['to_periode']).
-         $hid->input('from_poste',$_REQUEST['from_poste']).
-         $hid->input('to_poste',$_REQUEST['to_poste']).
-         $hid->input('letter',$letter);
-
-
-
-
-        if (isset($_REQUEST['poste_id'])) echo 
$hid->input("poste_id",$_REQUEST['poste_id']);
-
-        if (isset($_REQUEST['poste_fille']))
-            echo $hid->input('poste_fille','on');
-        if (isset($_REQUEST['oper_detail']))
-            echo $hid->input('oper_detail','on');
-
-        echo "</form></TD>";
-
-        echo '<TD><form method="GET" ACTION="export.php">'.
-        dossier::hidden().
-        HtmlInput::submit('bt_csv',"Export CSV").
-       HtmlInput::hidden('act',$action_csv).
-        $hid->input("type","poste").$str_ople.
-        $hid->input('p_action','impress').
-        $hid->input("from_periode",$_REQUEST['from_periode']).
-        $hid->input("to_periode",$_REQUEST['to_periode']).
-         $hid->input('from_poste',$_REQUEST['from_poste']).
-         $hid->input('to_poste',$_REQUEST['to_poste']).
-         $hid->input('letter',$letter);
-
-        if (isset($_REQUEST['poste_fille']))
-            echo $hid->input('poste_fille','on');
-        if (isset($_REQUEST['oper_detail']))
-            echo $hid->input('oper_detail','on');
-        if (isset($_REQUEST['poste_id'])) echo 
$hid->input("poste_id",$_REQUEST['poste_id']);
-
-        echo "</form></TD>";
-        echo "</table>";
-        echo '</div>';
-
-    }
-    /*!
-     * \brief verify that the poste belong to a ledger
-     *
-     * \return 0 ok,  -1 no
-     */
-    function belong_ledger($p_jrn)
-    {
-        $filter=$this->db->get_value("select jrn_def_class_cred from jrn_def 
where jrn_def_id=$p_jrn");
-        if ( trim ($filter) == '')
-            return 0;
-
-        $valid_cred=explode(" ",$filter);
-        $sql="select count(*) as poste from tmp_pcmn where ";
-        // Creation query
-        $or="";
-        $SqlFilter="";
-        foreach ( $valid_cred as $item_cred)
-        {
-            if ( strlen (trim($item_cred)))
-            {
-                if ( strstr($item_cred,"*") == true )
-                {
-                    $item_cred=strtr($item_cred,"*","%");
-                    $SqlItem="$or pcm_val::text like '$item_cred'";
-                    $or="  or ";
-                }
-                else
-                {
-                    $SqlItem="$or pcm_val::text = '$item_cred' ";
-                    $or="  or ";
-                }
-                $SqlFilter=$SqlFilter.$SqlItem;
-            }
-        }//foreach
-        $sql.=$SqlFilter.' and pcm_val='.$this->id;
-        $max=$this->db->get_value($sql);
-        if ($max > 0 )
-            return 0;
-        else
-            return -1;
-    }
-    /*!\brief With the id of the ledger, get the col jrn_def_class_deb
-     *\param $p_jrn jrn_id
-     *\return array of value, or an empty array if nothing is found
-     *\note
-     *\see
-     */
-    function get_account_ledger($p_jrn)
-    {
-        $l=new Acc_Ledger($this->db,$p_jrn);
-        $row=$l->get_propertie();
-        if ( strlen(trim($row['jrn_def_class_deb'])) == 0 ) return array();
-        $valid_account=explode(" ",$row['jrn_def_class_deb']);
-        return $valid_account;
-    }
-    /*!\brief build a sql statement thanks a array found with 
get_account_ledger
-     *
-     *\param $p_jrn jrn_id
-     *\return an emty string if nothing is found or a valid SQL statement like
-    \code
-    pcm_val like ... or pcm_val like ...
-    \endcode
-     *\note
-     *\see get_account_ledger
-     */
-    function build_sql_account($p_jrn)
-    {
-        $array=$this->get_account_ledger($p_jrn);
-        if ( empty($array) ) return "";
-        $sql="";
-        foreach ( $array as $item_cred)
-        {
-            if ( strlen (trim($item_cred))>0 )
-            {
-                if ( strstr($item_cred,"*") == true )
-                {
-                    $item_cred=strtr($item_cred,"*","%");
-                    $sql_tmp=" pcm_val::text like '$item_cred' or";
-                }
-                else
-                {
-                    $sql_tmp=" pcm_val::text = '$item_cred' or";
-                }
-                $sql.=$sql_tmp;
-            }
-        }//foreach
-        /* remove the last or */
-        $sql=substr($sql,0,strlen($sql)-2);
-        return $sql;
-    }
-    static function test_me()
-    {
-        $cn=new Database(dossier::id());
-        $a=new Acc_Account_Ledger($cn,550);
-        echo ' Journal 4 '.$a->belong_ledger(4);
-
-    }
-}

Copied: phpcompta/branches/rel560/include/class_acc_account_ledger.php (from 
rev 4129, phpcompta/trunk/include/class_acc_account_ledger.php)
===================================================================
--- phpcompta/branches/rel560/include/class_acc_account_ledger.php              
                (rev 0)
+++ phpcompta/branches/rel560/include/class_acc_account_ledger.php      
2011-05-25 20:16:37 UTC (rev 4130)
@@ -0,0 +1,614 @@
+<?php
+/*
+ *   This file is part of PhpCompta.
+ *
+ *   PhpCompta is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   PhpCompta is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with PhpCompta; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+/* $Revision$ */
+// Copyright Author Dany De Bontridder address@hidden
+/*! \file
+ * \brief Manage the account
+ */
+/*!
+ * \brief Manage the account from the table jrn, jrnx or tmp_pcmn
+ */
+require_once("class_ihidden.php");
+require_once ('class_database.php');
+require_once ('class_dossier.php');
+
+class Acc_Account_Ledger
+{
+    var $db;          /*!< $db database connection */
+    var $id;          /*!< $id poste_id (pcm_val)*/
+    var $label;       /*!< $label label of the poste */
+    var $parent;      /*!< $parent parent account */
+    var $row;         /*!< $row double array see get_row */
+    var $tot_deb;    /*!< value set by  get_row */
+    var $tot_cred;    /*!< value by  get_row */
+    function __construct ($p_cn,$p_id)
+    {
+        $this->db=$p_cn;
+        $this->id=$p_id;
+    }
+    /**
+     address@hidden get the row thanks the resource
+     address@hidden double array 
(j_date,deb_montant,cred_montant,description,jrn_name,j_debit,jr_internal)
+     *         (tot_deb,tot_credit)
+     */
+    private function get_row_sql($Res)
+    {
+        $array=array();
+        $tot_cred=0.0;
+        $tot_deb=0.0;
+        $Max=Database::num_row($Res);
+        if ( $Max == 0 ) return null;
+        for ($i=0;$i<$Max;$i++)
+        {
+            $array[]=Database::fetch_array($Res,$i);
+            if ($array[$i]['j_debit']=='t')
+            {
+                $tot_deb+=$array[$i]['deb_montant'] ;
+            }
+            else
+            {
+                $tot_cred+=$array[$i]['cred_montant'] ;
+            }
+        }
+        $this->row=$array;
+        $this->tot_deb=$tot_deb;
+        $this->tot_cred=$tot_cred;
+        return array($array,$tot_deb,$tot_cred);
+
+    }
+    /*!
+     * \brief  Get data for accounting entry between 2 periode
+     *
+     * \param  $p_from periode from
+     * \param  $p_to   end periode
+     * \return double array 
(j_date,deb_montant,cred_montant,description,jrn_name,j_debit,jr_internal)
+     *         (tot_deb,tot_credit
+     *
+     */
+    function get_row($p_from,$p_to)
+    {
+        $periode=sql_filter_per($this->db,$p_from,$p_to,'p_id','jr_tech_per');
+
+        $Res=$this->db->exec_sql("select distinct 
j_id,jr_id,to_char(j_date,'DD.MM.YYYY') as j_date_fmt,j_date,".
+                                 "case when j_debit='t' then j_montant else 0 
end as deb_montant,".
+                                 "case when j_debit='f' then j_montant else 0 
end as cred_montant,".
+                                 " jr_comment as description,jrn_def_name as 
jrn_name,".
+                                 "j_debit, jr_internal,jr_pj_number ".
+                                 " from jrnx left join jrn_def on 
jrn_def_id=j_jrn_def ".
+                                 " left join jrn on jr_grpt_id=j_grpt".
+                                 " where j_poste=".$this->id." and ".$periode.
+                                 " order by j_date");
+        return $this->get_row_sql($Res);
+    }
+    /*!
+     * \brief  Get data for accounting entry between 2 date
+     *
+     * \param  $p_from date from
+     * \param  $p_to   end date
+     *\param $let 0 means all rows, 1 only lettered, 2 only unlettered
+        * \param $solded 0 means all account, 1 means only accounts with a 
saldo <> 0
+     *\note the data are filtered by the access of the current user
+     * \return double array 
(j_date,deb_montant,cred_montant,description,jrn_name,j_debit,jr_internal)
+     *         (tot_deb,tot_credit
+     *
+     */
+    function get_row_date($p_from,$p_to,$let=0,$solded=0)
+    {
+        $user=new User($this->db);
+        $filter_sql=$user->get_ledger_sql('ALL',3);
+        $sql_let='';
+        switch ($let)
+        {
+        case 0:
+                break;
+        case 1:
+            $sql_let=' and j_id in (select j_id from letter_cred union select 
j_id from letter_deb)';
+            break;
+        case '2':
+            $sql_let=' and j_id not in (select j_id from letter_cred union 
select j_id from letter_deb) ';
+            break;
+        }
+       if ( $solded == 1)
+         {
+           $filter=str_replace('jrn_def_id','jr_def_id',$filter_sql);
+           $bal_sql="with signed_amount as 
+                                               (select case when j_debit='t' 
then j_montant else 0 end as amount_deb,
+                                                               case when 
j_debit='f' then j_montant else 0 end as amount_cred,
+                                                               j_poste 
+                                                               from jrnx join 
jrn on (j_grpt = jr_grpt_id)
+                                                               where 
+                                                               j_poste=$1 and
+                                                               $filter and
+                                                               ( 
to_date($2,'DD.MM.YYYY') <= j_date and 
+                                  to_date($3,'DD.MM.YYYY') >= j_date  ))
+                                               select sum(amount_deb) as 
s_deb,sum(amount_cred) as s_cred, j_poste from signed_amount
+                                               group by j_poste
+                                               ";
+           $r=$this->db->get_array($bal_sql,array($this->id,$p_from,$p_to));
+           if ( $this->db->count() == 0 ) return array();
+           if ($r[0]['s_deb']==$r[0]['s_cred']) return array(); 
+         }
+        $Res=$this->db->exec_sql("select  jr_id,to_char(j_date,'DD.MM.YYYY') 
as j_date_fmt,j_date,".
+                                 "case when j_debit='t' then j_montant else 0 
end as deb_montant,".
+                                 "case when j_debit='f' then j_montant else 0 
end as cred_montant,".
+                                 " jr_comment as description,jrn_def_name as 
jrn_name,".
+                                 "j_debit, jr_internal,jr_pj_number,
+                                                                
coalesce(comptaproc.get_letter_jnt(j_id),-1) as letter ".
+                                 ",pcm_lib ".
+                                ",jr_tech_per,p_exercice ".
+                                 " from jrnx left join jrn_def on 
(jrn_def_id=j_jrn_def )".
+                                 " left join jrn on (jr_grpt_id=j_grpt)".
+                                 " left join tmp_pcmn on (j_poste=pcm_val)".
+                                " left join parm_periode on (p_id=jr_tech_per) 
".
+                                 " where j_poste=$1 and ".
+                                 " ( to_date($2,'DD.MM.YYYY') <= j_date and ".
+                                 "   to_date($3,'DD.MM.YYYY') >= j_date )".
+                                 " and $filter_sql  $sql_let ".
+                                 " order by 
j_date,substring(jr_pj_number,'\\\\d+$') asc",array($this->id,$p_from,$p_to));
+        return $this->get_row_sql($Res);
+    }
+
+
+    /*!\brief Return the name of a account
+     *        it doesn't change any data member
+     * \return string with the pcm_lib
+     */
+    function get_name()
+    {
+        $ret=$this->db->exec_sql(
+                 "select pcm_lib from tmp_pcmn where
+                 pcm_val=$1",array($this->id));
+        if ( Database::num_row($ret) != 0)
+        {
+            $r=Database::fetch_array($ret);
+            $this->name=$r['pcm_lib'];
+        }
+        else
+        {
+            $this->name="Poste inconnu";
+        }
+        return $this->name;
+    }
+    /*!\brief check if the poste exist in the tmp_pcmn
+     *\return the number of line (normally 1 or 0)
+     */
+    function do_exist()
+    {
+        $sql="select pcm_val from tmp_pcmn where pcm_val= $1";
+        $ret=$this->db->exec_sql($sql,array($this->id));
+        return Database::num_row($ret) ;
+    }
+    /*!\brief Get all the value for this object from the database
+     *        the data member are set
+     * \return false if this account doesn't exist otherwise true
+     */
+    function load()
+    {
+        $ret=$this->db->exec_sql("select pcm_lib,pcm_val_parent from
+                                 tmp_pcmn where pcm_val=$1",array($this->id));
+        $r=Database::fetch_all($ret);
+
+        if ( ! $r ) return false;
+        $this->label=$r[0]['pcm_lib'];
+        $this->parent=$r[0]['pcm_val_parent'];
+        return true;
+
+    }
+    /*!\brief Get all the value for this object from the database
+     *        the data member are set
+     * \return false if this account doesn't exist otherwise true
+     */
+    function get()
+    {
+        echo "OBSOLETE Acc_Account_Ledger->get(), a remplacer par 
Acc_Account_Ledger->load()";
+        return $this->load();
+    }
+
+    /*!
+     * \brief  give the balance of an account
+     *
+     * \return
+     *      balance of the account
+     *
+     */
+    function get_solde($p_cond=" true ")
+    {
+        $Res=$this->db->exec_sql("select sum(deb) as sum_deb, sum(cred) as 
sum_cred from
+                                 ( select j_poste,
+                                 case when j_debit='t' then j_montant else 0 
end as deb,
+                                 case when j_debit='f' then j_montant else 0 
end as cred
+                                 from jrnx join tmp_pcmn on j_poste=pcm_val
+                                 where
+                                 j_poste::text like ('$this->id'::text) and
+                                 $p_cond
+                                 ) as m  ");
+        $Max=Database::num_row($Res);
+        if ($Max==0) return 0;
+        $r=Database::fetch_array($Res,0);
+
+        return abs($r['sum_deb']-$r['sum_cred']);
+    }
+    /*!
+     * \brief   give the balance of an account
+     * \return
+     *      balance of the account
+     *
+     */
+    function get_solde_detail($p_cond="")
+    {
+
+        if ( $p_cond != "") $p_cond=" and ".$p_cond;
+        $sql="select sum(deb) as sum_deb, sum(cred) as sum_cred from
+             ( select j_poste,
+             case when j_debit='t' then j_montant else 0 end as deb,
+             case when j_debit='f' then j_montant else 0 end as cred
+             from jrnx
+             where
+             j_poste::text like ('$this->id'::text)
+             $p_cond
+             ) as m  ";
+
+        $Res=$this->db->exec_sql($sql);
+        $Max=Database::num_row($Res);
+
+        if ($Max==0)
+        {
+            return array('debit'=>0,
+                         'credit'=>0,
+                         'solde'=>0)     ;
+        }
+        $r=Database::fetch_array($Res,0);
+// if p_start is < p_end the query returns null to avoid any problem
+// we set it to 0
+        if ($r['sum_deb']=='')
+            $r['sum_deb']=0.0;
+        if ($r['sum_cred']=='')
+            $r['sum_cred']=0.0;
+
+        return array('debit'=>$r['sum_deb'],
+                     'credit'=>$r['sum_cred'],
+                     'solde'=>abs($r['sum_deb']-$r['sum_cred']));
+    }
+    /*!
+     * \brief isTva tell is a poste is used for VAT
+     * \param none
+     *
+     *
+     * \return 1 is Yes otherwise 0
+     */
+    function isTVA()
+    {
+        // Load TVA array
+        $a_TVA=$this->db->get_array('select tva_poste
+                                    from tva_rate');
+        foreach ( $a_TVA as $line_tva)
+        {
+            if ( $line_tva['tva_poste']  == '' )
+                continue;
+            list($tva_deb,$tva_cred)=explode(',',$line_tva['tva_poste']);
+            if ( $this->id == $tva_deb ||
+                    $this->id == $tva_cred )
+            {
+                return 1;
+            }
+        }
+        return 0;
+
+    }
+    /*!
+     * \brief HtmlTable, display a HTML of a poste for the asked period
+     * \param $p_array array for filter 
+     * \param $let lettering of operation 0
+     * \return -1 if nothing is found otherwise 0
+     */
+    function HtmlTable($p_array=null,$let=0 )
+    {
+        if ( $p_array==null)$p_array=$_REQUEST;
+        $this->get_name();
+        list($array,$tot_deb,$tot_cred)=$this->get_row_date( 
$p_array['from_periode'],
+                                                            
$p_array['to_periode'],$let
+                                                           );
+
+        if ( count($this->row ) == 0 )
+            return -1;
+
+        $rep="";
+
+        echo '<h2 class="info">'.$this->id." ".$this->name.'</h2>';
+        echo "<TABLE class=\"resultfooter\" 
style=\"border-collapse:separate;width:100%;border-spacing:5px\">";
+        echo '<tbody>';
+        echo "<TR>".
+        "<TH> Date</TH>".
+        "<TH> n° de pièce </TH>".
+        "<TH> Code interne </TH>".
+        "<TH> Description </TH>".
+        "<TH style=\"text-align:right\"> D&eacute;bit  </TH>".
+        "<TH style=\"text-align:right\"> Cr&eacute;dit </TH>".
+        th('Prog.','style="text-align:right"').
+        th('Let.','style="text-align:right"');
+        "</TR>"
+        ;
+        $progress=0;$sum_deb=0;$sum_cred=0;
+       bcscale(2);
+       $old_exercice="";
+        foreach ( $this->row as $op )
+        {
+            $vw_operation=sprintf('<A class="detail" 
style="text-decoration:underline" 
HREF="javascript:modifyOperation(\'%s\',\'%s\')" >%s</A>',
+                                  $op['jr_id'], dossier::id(), 
$op['jr_internal']);
+            $let='';
+            if ( $op['letter'] !=-1) $let=$op['letter'];
+           $tmp_diff=bcsub($op['deb_montant'],$op['cred_montant']);
+
+           /*
+            * reset prog. balance to zero if we change of exercice
+            */
+           if ( $old_exercice != $op['p_exercice'])
+             {
+               if ( $old_exercice != '')
+                 {
+                   $progress=bcsub($sum_deb,$sum_cred);
+
+                   echo "<TR style=\"font-weight:bold\">".
+                     "<TD></TD>".
+                     td('').
+                     "<TD></TD>".
+                     "<TD>Totaux</TD>".
+                     "<TD style=\"text-align:right\">".nbm($sum_deb)."</TD>".
+                     "<TD style=\"text-align:right\">".nbm($sum_cred)."</TD>".
+                     td(nbm(abs($progress)),'style="text-align:right"').
+                     td('').
+                     "</TR>";
+                   $sum_cred=0;
+                   $sum_deb=0;
+                   $progress=0;
+
+                 }
+             }
+           $progress=bcadd($progress,$tmp_diff);
+           $sum_cred=bcadd($sum_cred,$op['cred_montant']);
+           $sum_deb=bcadd($sum_deb,$op['deb_montant']);
+           
+           echo "<TR>".
+             "<TD>".format_date($op['j_date'])."</TD>".
+             td(h($op['jr_pj_number'])).
+             "<TD>".$vw_operation."</TD>".
+             "<TD>".h($op['description'])."</TD>".
+             "<TD style=\"text-align:right\">".nbm($op['deb_montant'])."</TD>".
+             "<TD 
style=\"text-align:right\">".nbm($op['cred_montant'])."</TD>".
+             td(nbm(abs($progress)),'style="text-align:right"').
+             
+             td($let,' style="color:red;text-align:right"').
+             "</TR>";
+           $old_exercice=$op['p_exercice'];
+        }
+        echo '<tfoot>';
+        $solde_type=($sum_deb>$sum_cred)?"solde débiteur":"solde créditeur";
+        $diff=abs(bcsub($sum_deb,$sum_cred));
+
+        echo "<TR style=\"font-weight:bold\">".
+        "<TD >Totaux</TD><td></td>".
+        "<TD ></TD>".
+        "<TD></TD>".
+         "<TD  style=\"text-align:right\">".nbm($sum_deb)."</TD>".
+         "<TD  style=\"text-align:right\">".nbm($sum_cred)."</TD>".
+         "<TD style=\"text-align:right\">".nbm($diff)."</TD>".
+
+        "</TR>";
+       echo   "<tr><TD>$solde_type</TD><td></td>".
+         "<TD style=\"text-align:right\">".nbm($diff)."</TD>".
+        "</TR>";
+        echo '</tfoot>';
+        echo '</tbody>';
+
+        echo "</table>";
+
+        return;
+    }
+
+    /*!
+     * \brief Display HTML Table Header (button)
+     *
+     * \return none
+     */
+    static function HtmlTableHeader($actiontarget="poste")
+    {
+      switch($actiontarget)
+       {
+       case 'poste':
+         $action_csv='CSV/postedetail';
+         $action_pdf='PDF/postedetail';
+         break;
+       case 'gl_comptes':
+         $action_csv='CSV/glcompte';
+         $action_pdf='PDF/glcompte';
+         break;
+       default:
+         throw new Exception(" Fonction HtmlTableHeader argument actiontarget 
invalid");
+         exit;
+       }         
+        $hid=new IHidden();
+        echo '<div class="noprint">';
+        echo "<table >";
+        echo '<TR>';
+        
$str_ople=(isset($_REQUEST['ople']))?HtmlInput::hidden('ople',$_REQUEST['ople']):'';
+       if ($actiontarget=='poste')
+         {
+           echo '<TD><form method="GET" ACTION="">'.
+             dossier::hidden().
+             HtmlInput::submit('bt_other',"Autre poste").
+             
$hid->input("type","poste").$hid->input('p_action','impress')."</form></TD>";
+         }
+
+
+        echo '<TD><form method="GET" ACTION="export.php">'.
+        dossier::hidden().
+        HtmlInput::submit('bt_pdf',"Export PDF").
+        HtmlInput::hidden('act',$action_pdf).
+        $hid->input("type","poste").$str_ople.
+        $hid->input('p_action','impress').
+        $hid->input("from_periode",$_REQUEST['from_periode']).
+        $hid->input("to_periode",$_REQUEST['to_periode'])
+         ;
+
+       if ( isset($_REQUEST['letter'] )) echo HtmlInput::hidden('letter','2');
+       if ( isset($_REQUEST['solded'] )) echo HtmlInput::hidden('solded','1');
+
+       if (isset($_REQUEST['from_poste'])) 
+         echo $hid->input('from_poste',$_REQUEST['from_poste']);
+
+       if (isset($_REQUEST['to_poste'])) 
+         echo $hid->input('to_poste',$_REQUEST['to_poste']);
+
+        if (isset($_REQUEST['poste_id'])) 
+         echo $hid->input("poste_id",$_REQUEST['poste_id']);
+
+        if (isset($_REQUEST['poste_fille']))
+            echo $hid->input('poste_fille','on');
+        if (isset($_REQUEST['oper_detail']))
+            echo $hid->input('oper_detail','on');
+
+        echo "</form></TD>";
+
+        echo '<TD><form method="GET" ACTION="export.php">'.
+        dossier::hidden().
+        HtmlInput::submit('bt_csv',"Export CSV").
+       HtmlInput::hidden('act',$action_csv).
+        $hid->input("type","poste").$str_ople.
+        $hid->input('p_action','impress').
+        $hid->input("from_periode",$_REQUEST['from_periode']).
+         $hid->input("to_periode",$_REQUEST['to_periode']);
+
+       if (isset($_REQUEST['from_poste'])) 
+         echo $hid->input('from_poste',$_REQUEST['from_poste']);
+
+       if (isset($_REQUEST['to_poste'])) 
+         echo $hid->input('to_poste',$_REQUEST['to_poste']);
+
+       if ( isset($_REQUEST['letter'] )) echo HtmlInput::hidden('letter','2');
+       if ( isset($_REQUEST['solded'] )) echo HtmlInput::hidden('solded','1');
+
+        if (isset($_REQUEST['poste_fille']))
+            echo $hid->input('poste_fille','on');
+        if (isset($_REQUEST['oper_detail']))
+            echo $hid->input('oper_detail','on');
+        if (isset($_REQUEST['poste_id'])) echo 
$hid->input("poste_id",$_REQUEST['poste_id']);
+
+        echo "</form></TD>";
+        echo "</table>";
+        echo '</div>';
+
+    }
+    /*!
+     * \brief verify that the poste belong to a ledger
+     *
+     * \return 0 ok,  -1 no
+     */
+    function belong_ledger($p_jrn)
+    {
+        $filter=$this->db->get_value("select jrn_def_class_cred from jrn_def 
where jrn_def_id=$p_jrn");
+        if ( trim ($filter) == '')
+            return 0;
+
+        $valid_cred=explode(" ",$filter);
+        $sql="select count(*) as poste from tmp_pcmn where ";
+        // Creation query
+        $or="";
+        $SqlFilter="";
+        foreach ( $valid_cred as $item_cred)
+        {
+            if ( strlen (trim($item_cred)))
+            {
+                if ( strstr($item_cred,"*") == true )
+                {
+                    $item_cred=strtr($item_cred,"*","%");
+                    $SqlItem="$or pcm_val::text like '$item_cred'";
+                    $or="  or ";
+                }
+                else
+                {
+                    $SqlItem="$or pcm_val::text = '$item_cred' ";
+                    $or="  or ";
+                }
+                $SqlFilter=$SqlFilter.$SqlItem;
+            }
+        }//foreach
+        $sql.=$SqlFilter.' and pcm_val='.$this->id;
+        $max=$this->db->get_value($sql);
+        if ($max > 0 )
+            return 0;
+        else
+            return -1;
+    }
+    /*!\brief With the id of the ledger, get the col jrn_def_class_deb
+     *\param $p_jrn jrn_id
+     *\return array of value, or an empty array if nothing is found
+     *\note
+     *\see
+     */
+    function get_account_ledger($p_jrn)
+    {
+        $l=new Acc_Ledger($this->db,$p_jrn);
+        $row=$l->get_propertie();
+        if ( strlen(trim($row['jrn_def_class_deb'])) == 0 ) return array();
+        $valid_account=explode(" ",$row['jrn_def_class_deb']);
+        return $valid_account;
+    }
+    /*!\brief build a sql statement thanks a array found with 
get_account_ledger
+     *
+     *\param $p_jrn jrn_id
+     *\return an emty string if nothing is found or a valid SQL statement like
+    \code
+    pcm_val like ... or pcm_val like ...
+    \endcode
+     *\note
+     *\see get_account_ledger
+     */
+    function build_sql_account($p_jrn)
+    {
+        $array=$this->get_account_ledger($p_jrn);
+        if ( empty($array) ) return "";
+        $sql="";
+        foreach ( $array as $item_cred)
+        {
+            if ( strlen (trim($item_cred))>0 )
+            {
+                if ( strstr($item_cred,"*") == true )
+                {
+                    $item_cred=strtr($item_cred,"*","%");
+                    $sql_tmp=" pcm_val::text like '$item_cred' or";
+                }
+                else
+                {
+                    $sql_tmp=" pcm_val::text = '$item_cred' or";
+                }
+                $sql.=$sql_tmp;
+            }
+        }//foreach
+        /* remove the last or */
+        $sql=substr($sql,0,strlen($sql)-2);
+        return $sql;
+    }
+    static function test_me()
+    {
+        $cn=new Database(dossier::id());
+        $a=new Acc_Account_Ledger($cn,550);
+        echo ' Journal 4 '.$a->belong_ledger(4);
+
+    }
+}

Deleted: phpcompta/branches/rel560/include/export_gl_csv.php
===================================================================
--- phpcompta/trunk/include/export_gl_csv.php   2011-05-24 20:24:49 UTC (rev 
4127)
+++ phpcompta/branches/rel560/include/export_gl_csv.php 2011-05-25 20:16:37 UTC 
(rev 4130)
@@ -1,171 +0,0 @@
-<?php
-/*
- *   This file is part of PhpCompta.
- *
- *   PhpCompta is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   PhpCompta is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with PhpCompta; if not, write to the Free Software
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-
-// Copyright Author Dany De Bontridder address@hidden
-// $Revision$
-
-/*! \file
- * \brief create GL comptes as PDF
- */
-
-include_once('class_acc_account_ledger.php');
-include_once('ac_common.php');
-require_once('class_database.php');
-include_once('impress_inc.php');
-require_once('class_own.php');
-require_once('class_dossier.php');
-require_once('class_user.php');
-
-header('Content-type: application/csv');
-header('Content-Disposition: attachment;filename="gl_comptes.csv"',FALSE);
-header('Pragma: public');
-
-
-$gDossier=dossier::id();
-
-/* Security */
-$cn=new Database($gDossier);
-
-
-extract($_GET);
-
-if ( isset($poste_id) && strlen(trim($poste_id)) != 0 && isNumber($poste_id) )
-{
-    if ( isset ($poste_fille) )
-    {
-        $parent=$poste_id;
-        $a_poste=$cn->get_array("select pcm_val from tmp_pcmn where 
pcm_val::text like '$parent%' order by pcm_val::text");
-    }
-    elseif ( $cn->count_sql('select * from tmp_pcmn where 
pcm_val='.FormatString($poste_id)) != 0 )
-    {
-        $a_poste=array('pcm_val' => $poste_id);
-    }
-}
-else
-{
-    if ($from_poste != '') 
-      {
-       $cond_poste = '  where ';
-       $cond_poste .=' pcm_val >= upper 
(\''.Database::escape_string($from_poste).'\')';
-      }
-
-    if ( $to_poste != '')
-      {
-       if  ( $cond_poste == '') 
-         {
-           $cond_poste =  ' where pcm_val <= upper 
(\''.Database::escape_string($from_poste).'\')';
-         }
-       else
-         {
-           $cond_poste.=' and pcm_val <= upper 
(\''.Database::escape_string($from_poste).'\')';
-         }
-      }
-
-    $sql=$sql.$cond_poste.'  order by pcm_val::text';
-    $a_poste=$cn->get_array($sql);
-
-}
-
-if ( count($a_poste) == 0 )
-{
-    echo 'Rien à rapporter.';
-    printf("\n");
-    exit;
-}
-
-// Header
-$header = array( "Date", "Référence", "Libellé", "Pièce", "Débit", "Crédit", 
"Solde" );
-
-foreach ($a_poste as $poste)
-{
-
-    $Poste=new Acc_Account_Ledger($cn,$poste['pcm_val']);
-    
list($array,$tot_deb,$tot_cred)=$Poste->get_row_date($from_periode,$to_periode);
-
-    // don't print empty account
-    if ( count($array) == 0 )
-    {
-        continue;
-    }
-
-    echo sprintf("%s - %s ",$Poste->id,$Poste->get_name());
-    printf("\n");
-
-    for($i=0;$i<count($header);$i++)
-        echo $header[$i].";";
-    printf("\n");
-
-    $solde = 0.0;
-    $solde_d = 0.0;
-    $solde_c = 0.0;
-
-    foreach ($Poste->row as $detail)
-    {
-
-        /*
-               [0] => 1 [jr_id] => 1
-               [1] => 01.02.2009 [j_date_fmt] => 01.02.2009
-               [2] => 2009-02-01 [j_date] => 2009-02-01
-               [3] => 0 [deb_montant] => 0
-               [4] => 12211.9100 [cred_montant] => 12211.9100
-               [5] => Ecriture douverture [description] => Ecriture douverture
-               [6] => Opération Diverses [jrn_name] => Opération Diverses
-               [7] => f [j_debit] => f
-               [8] => 17OD-01-1 [jr_internal] => 17OD-01-1
-               [9] => ODS1 [jr_pj_number] => ODS1 ) 1
-         */
-
-        if ($detail['cred_montant'] > 0)
-        {
-            $solde   += $detail['cred_montant'];
-            $solde_c += $detail['cred_montant'];
-        }
-        if ($detail['deb_montant'] > 0)
-        {
-            $solde   -= $detail['deb_montant'];
-            $solde_d += $detail['deb_montant'];
-        }
-
-        echo $detail['j_date_fmt'].";";
-        echo $detail['jr_internal'].";";
-        echo $detail['description'].";";
-        echo $detail['jr_pj_number'].";";
-        echo ($detail['deb_montant']  > 0 ? sprintf("%.2f", 
$detail['deb_montant'])  : '').";";
-        echo ($detail['cred_montant'] > 0 ? sprintf("%.2f", 
$detail['cred_montant']) : '').";";
-        echo sprintf("%.2f", $solde).";";
-        printf("\n");
-
-    }
-
-
-    echo ";";
-    echo ";";
-    echo ";";
-    echo 'Total du compte '.$Poste->id.";";
-    echo ($solde_d  > 0 ? sprintf("%.2f", $solde_d)  : '').";";
-    echo ($solde_c  > 0 ? sprintf("%.2f", $solde_c)  : '').";";
-    echo sprintf("%.2f", abs($solde_c-$solde_d)).";";
-    echo ($solde_c > $solde_d ? 'C' : 'D').";";
-    printf("\n");
-    printf("\n");
-}
-
-exit;
-
-?>

Copied: phpcompta/branches/rel560/include/export_gl_csv.php (from rev 4129, 
phpcompta/trunk/include/export_gl_csv.php)
===================================================================
--- phpcompta/branches/rel560/include/export_gl_csv.php                         
(rev 0)
+++ phpcompta/branches/rel560/include/export_gl_csv.php 2011-05-25 20:16:37 UTC 
(rev 4130)
@@ -0,0 +1,185 @@
+<?php
+/*
+ *   This file is part of PhpCompta.
+ *
+ *   PhpCompta is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   PhpCompta is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with PhpCompta; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+// Copyright Author Dany De Bontridder address@hidden
+// $Revision$
+
+/*! \file
+ * \brief create GL comptes as PDF
+ */
+
+include_once('class_acc_account_ledger.php');
+include_once('ac_common.php');
+require_once('class_database.php');
+include_once('impress_inc.php');
+require_once('class_own.php');
+require_once('class_dossier.php');
+require_once('class_user.php');
+
+header('Content-type: application/csv');
+header('Content-Disposition: attachment;filename="gl_comptes.csv"',FALSE);
+header('Pragma: public');
+
+
+$gDossier=dossier::id();
+
+/* Security */
+$cn=new Database($gDossier);
+
+
+extract($_GET);
+
+if ( isset($poste_id) && strlen(trim($poste_id)) != 0 && isNumber($poste_id) )
+{
+    if ( isset ($poste_fille) )
+    {
+        $parent=$poste_id;
+        $a_poste=$cn->get_array("select pcm_val from tmp_pcmn where 
pcm_val::text like '$parent%' order by pcm_val::text");
+    }
+    elseif ( $cn->count_sql('select * from tmp_pcmn where 
pcm_val='.FormatString($poste_id)) != 0 )
+    {
+        $a_poste=array('pcm_val' => $poste_id);
+    }
+}
+else
+{
+  $sql="select pcm_val from tmp_pcmn ";
+    if ($from_poste != '') 
+      {
+       $cond_poste = '  where ';
+       $cond_poste .=' pcm_val >= upper 
(\''.Database::escape_string($from_poste).'\')';
+      }
+
+    if ( $to_poste != '')
+      {
+       if  ( $cond_poste == '') 
+         {
+           $cond_poste =  ' where pcm_val <= upper 
(\''.Database::escape_string($to_poste).'\')';
+         }
+       else
+         {
+           $cond_poste.=' and pcm_val <= upper 
(\''.Database::escape_string($to_poste).'\')';
+         }
+      }
+
+    $sql=$sql.$cond_poste.'  order by pcm_val::text';
+    $a_poste=$cn->get_array($sql);
+
+}
+
+if ( count($a_poste) == 0 )
+{
+    echo 'Rien à rapporter.';
+    printf("\n");
+    exit;
+}
+
+// Header
+$header = array( "Date", "Référence", "Libellé", "Pièce", "Débit", "Crédit", 
"Solde" );
+
+$l=(isset($_GET['letter']))?2:0;
+$s=(isset($_REQUEST['solded']))?1:0;
+
+foreach ($a_poste as $poste)
+{
+ 
+
+  $Poste=new Acc_Account_Ledger($cn,$poste['pcm_val']);
+  
+  $array1=$Poste->get_row_date($from_periode,$to_periode,$l,$s);
+  // don't print empty account
+  if ( count($array1) == 0 )
+    {
+      continue;
+    }
+  $array=$array1[0];
+  $tot_deb=$array1[1];
+  $tot_cred=$array1[2];
+
+    // don't print empty account
+    if ( count($array) == 0 )
+    {
+        continue;
+    }
+
+    echo sprintf("%s - %s ",$Poste->id,$Poste->get_name());
+    printf("\n");
+
+    for($i=0;$i<count($header);$i++)
+        echo $header[$i].";";
+    printf("\n");
+
+    $solde = 0.0;
+    $solde_d = 0.0;
+    $solde_c = 0.0;
+
+    foreach ($Poste->row as $detail)
+    {
+
+        /*
+               [0] => 1 [jr_id] => 1
+               [1] => 01.02.2009 [j_date_fmt] => 01.02.2009
+               [2] => 2009-02-01 [j_date] => 2009-02-01
+               [3] => 0 [deb_montant] => 0
+               [4] => 12211.9100 [cred_montant] => 12211.9100
+               [5] => Ecriture douverture [description] => Ecriture douverture
+               [6] => Opération Diverses [jrn_name] => Opération Diverses
+               [7] => f [j_debit] => f
+               [8] => 17OD-01-1 [jr_internal] => 17OD-01-1
+               [9] => ODS1 [jr_pj_number] => ODS1 ) 1
+         */
+
+        if ($detail['cred_montant'] > 0)
+        {
+            $solde   += $detail['cred_montant'];
+            $solde_c += $detail['cred_montant'];
+        }
+        if ($detail['deb_montant'] > 0)
+        {
+            $solde   -= $detail['deb_montant'];
+            $solde_d += $detail['deb_montant'];
+        }
+
+        echo $detail['j_date_fmt'].";";
+        echo $detail['jr_internal'].";";
+        echo $detail['description'].";";
+        echo $detail['jr_pj_number'].";";
+        echo ($detail['deb_montant']  > 0 ? nb($detail['deb_montant'])  : 
'').";";
+        echo ($detail['cred_montant'] > 0 ? nb($detail['cred_montant']) : 
'').";";
+        echo nb($solde).";";
+        printf("\n");
+
+    }
+
+
+    echo ";";
+    echo ";";
+    echo ";";
+    echo 'Total du compte '.$Poste->id.";";
+    echo ($solde_d  > 0 ? nb($solde_d)  : '').";";
+    echo ($solde_c  > 0 ? nb( $solde_c)  : '').";";
+    echo nb(abs($solde_c-$solde_d)).";";
+    echo ($solde_c > $solde_d ? 'C' : 'D').";";
+    printf("\n");
+    printf("\n");
+}
+
+exit;
+
+?>

Deleted: phpcompta/branches/rel560/include/export_gl_pdf.php
===================================================================
--- phpcompta/trunk/include/export_gl_pdf.php   2011-05-24 20:24:49 UTC (rev 
4127)
+++ phpcompta/branches/rel560/include/export_gl_pdf.php 2011-05-25 20:16:37 UTC 
(rev 4130)
@@ -1,196 +0,0 @@
-<?php
-/*
- *   This file is part of PhpCompta.
- *
- *   PhpCompta is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   PhpCompta is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with PhpCompta; if not, write to the Free Software
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-
-// Copyright Author Dany De Bontridder address@hidden
-// $Revision$
-
-/*! \file
- * \brief create GL comptes as PDF
- */
-
-include_once('class_acc_account_ledger.php');
-include_once('ac_common.php');
-require_once('class_database.php');
-include_once('impress_inc.php');
-require_once('class_own.php');
-require_once('class_dossier.php');
-require_once('class_user.php');
-require_once('class_pdf.php');
-
-
-$gDossier=dossier::id();
-
-/* Security */
-$cn=new Database($gDossier);
-$User=new User($cn);
-$User->Check();
-$User->check_dossier($gDossier);
-$User->can_request(IMPBIL,0);
-
-extract($_GET);
-if ($from_poste != '') 
-  {
-    $cond_poste = '  where ';
-    $cond_poste .=' pcm_val >= upper 
(\''.Database::escape_string($from_poste).'\')';
-  }
-
-if ( $to_poste->value != '')
-  {
-    if  ( $cond_poste == '') 
-      {
-       $cond_poste =  ' where pcm_val <= upper 
(\''.Database::escape_string($from_poste).'\')';
-      }
-    else
-      {
-       $cond_poste.=' and pcm_val <= upper 
(\''.Database::escape_string($from_poste).'\')';
-      }
-  }
-
-$sql=$sql.$cond_poste.'  order by pcm_val::text';
-$a_poste=$cn->get_array($sql);
-
-$pdf = new PDF($cn);
-$pdf->setDossierInfo("  Periode : ".$from_periode." - ".$to_periode);
-$pdf->AliasNbPages();
-$pdf->AddPage();
-
-
-if ( count($a_poste) == 0 )
-{
-    $pdf->Output();
-    return;
-}
-
-// Header
-$header = array( "Date", "Référence", "Libellé", "Pièce","Let", "Débit", 
"Crédit", "Solde" );
-// Left or Right aligned
-$lor    = array( "L"   , "L"        , "L"      , "L"    , "R",   "R"    , "R"  
   , "R"     );
-// Column widths (in mm)
-$width  = array( 13    , 20         , 60       , 15     ,  12     , 20     , 
20      , 20      );
-$l=(isset($_REQUEST['letter']))?1:0;
-
-foreach ($a_poste as $poste)
-{
-
-    $Poste=new Acc_Account_Ledger($cn,$poste['pcm_val']);
-
-    
list($array,$tot_deb,$tot_cred)=$Poste->get_row_date($from_periode,$to_periode,$l);
-
-    // don't print empty account
-    if ( count($array) == 0 )
-    {
-        continue;
-    }
-
-    $pdf->SetFont('DejaVuCond','',10);
-    $Libelle=sprintf("%s - %s ",$Poste->id,$Poste->get_name());
-    $pdf->Cell(0, 7, $Libelle, 1, 1, 'C');
-
-    $pdf->SetFont('DejaVuCond','',6);
-    for($i=0;$i<count($header);$i++)
-        $pdf->Cell($width[$i], 4, $header[$i], 0, 0, $lor[$i]);
-    $pdf->Ln();
-
-    $pdf->SetFont('DejaVuCond','',7);
-
-
-    $solde = 0.0;
-    $solde_d = 0.0;
-    $solde_c = 0.0;
-
-    foreach ($Poste->row as $detail)
-    {
-
-        /*
-               [0] => 1 [jr_id] => 1
-               [1] => 01.02.2009 [j_date_fmt] => 01.02.2009
-               [2] => 2009-02-01 [j_date] => 2009-02-01
-               [3] => 0 [deb_montant] => 0
-               [4] => 12211.9100 [cred_montant] => 12211.9100
-               [5] => Ecriture douverture [description] => Ecriture douverture
-               [6] => Opération Diverses [jrn_name] => Opération Diverses
-               [7] => f [j_debit] => f
-               [8] => 17OD-01-1 [jr_internal] => 17OD-01-1
-               [9] => ODS1 [jr_pj_number] => ODS1 ) 1
-         */
-
-        if ($detail['cred_montant'] > 0)
-        {
-            $solde   += $detail['cred_montant'];
-            $solde_c += $detail['cred_montant'];
-        }
-        if ($detail['deb_montant'] > 0)
-        {
-            $solde   -= $detail['deb_montant'];
-            $solde_d += $detail['deb_montant'];
-        }
-
-        $i = 0;
-
-        $pdf->Cell($width[$i], 6, shrink_date($detail['j_date_fmt']), 0, 0, 
$lor[$i]);
-        $i++;
-        $pdf->Cell($width[$i], 6, $detail['jr_internal'], 0, 0, $lor[$i]);
-        $i++;
-        /* limit set to 20 for the substring */
-        $pdf->Cell($width[$i], 6, substr($detail['description'],0,42), 0, 0, 
$lor[$i]);
-        $i++;
-        $pdf->Cell($width[$i], 6, $detail['jr_pj_number'], 0, 0, $lor[$i]);
-        $i++;
-        $pdf->Cell($width[$i], 6, 
($detail['letter']!=-1)?$detail['letter']:'', 0, 0, $lor[$i]);
-        $i++;
-        $pdf->Cell($width[$i], 6, ($detail['deb_montant']  > 0 ? nbm( 
$detail['deb_montant'])  : ''), 0, 0, $lor[$i]);
-        $i++;
-        $pdf->Cell($width[$i], 6, ($detail['cred_montant'] > 0 ? nbm( 
$detail['cred_montant']) : ''), 0, 0, $lor[$i]);
-        $i++;
-        $pdf->Cell($width[$i], 6, nbm( $solde), 0, 0, $lor[$i]);
-        $i++;
-        $pdf->Ln();
-
-    }
-
-
-    $pdf->SetFont('DejaVuCond','B',8);
-
-    $i = 0;
-    $pdf->Cell($width[$i], 6, '', 0, 0, $lor[$i]);
-    $i++;
-    $pdf->Cell($width[$i], 6, '', 0, 0, $lor[$i]);
-    $i++;
-    $pdf->Cell($width[$i], 6, '', 0, 0, $lor[$i]);
-    $i++;
-    $pdf->Cell($width[$i], 6, '', 0, 0, $lor[$i]);
-    $i++;
-    $pdf->Cell($width[$i], 6, 'Total du compte '.$Poste->id, 0, 0, 'R');
-    $i++;
-    $pdf->Cell($width[$i], 6, ($solde_d  > 0 ? nbm($solde_d)  : ''), 0, 0, 
$lor[$i]);
-    $i++;
-    $pdf->Cell($width[$i], 6, ($solde_c  > 0 ? nbm( $solde_c)  : ''), 0, 0, 
$lor[$i]);
-    $i++;
-    $pdf->Cell($width[$i], 6, nbm(abs($solde_c-$solde_d)), 0, 0, $lor[$i]);
-    $i++;
-    $pdf->Cell(5, 6, ($solde_c > $solde_d ? 'C' : 'D'), 0, 0, 'L');
-
-    $pdf->Ln();
-    $pdf->Ln();
-
-}
-//Save PDF to file
-$pdf->Output("gl_comptes.pdf", 'I');
-exit;
-?>

Copied: phpcompta/branches/rel560/include/export_gl_pdf.php (from rev 4129, 
phpcompta/trunk/include/export_gl_pdf.php)
===================================================================
--- phpcompta/branches/rel560/include/export_gl_pdf.php                         
(rev 0)
+++ phpcompta/branches/rel560/include/export_gl_pdf.php 2011-05-25 20:16:37 UTC 
(rev 4130)
@@ -0,0 +1,202 @@
+<?php
+/*
+ *   This file is part of PhpCompta.
+ *
+ *   PhpCompta is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   PhpCompta is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with PhpCompta; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+// Copyright Author Dany De Bontridder address@hidden
+// $Revision$
+
+/*! \file
+ * \brief create GL comptes as PDF
+ */
+
+include_once('class_acc_account_ledger.php');
+include_once('ac_common.php');
+require_once('class_database.php');
+include_once('impress_inc.php');
+require_once('class_own.php');
+require_once('class_dossier.php');
+require_once('class_user.php');
+require_once('class_pdf.php');
+
+
+$gDossier=dossier::id();
+
+/* Security */
+$cn=new Database($gDossier);
+$User=new User($cn);
+$User->Check();
+$User->check_dossier($gDossier);
+$User->can_request(IMPBIL,0);
+
+$sql="select pcm_val from tmp_pcmn ";
+
+extract($_GET);
+if ($from_poste != '') 
+  {
+    $cond_poste = '  where ';
+    $cond_poste .=' pcm_val >= upper 
(\''.Database::escape_string($from_poste).'\')';
+  }
+
+if ( $to_poste != '')
+  {
+    if  ( $cond_poste == '') 
+      {
+       $cond_poste =  ' where pcm_val <= upper 
(\''.Database::escape_string($to_poste).'\')';
+      }
+    else
+      {
+       $cond_poste.=' and pcm_val <= upper 
(\''.Database::escape_string($to_poste).'\')';
+      }
+  }
+
+$sql=$sql.$cond_poste.'  order by pcm_val::text';
+$a_poste=$cn->get_array($sql);
+
+$pdf = new PDF($cn);
+$pdf->setDossierInfo("  Periode : ".$from_periode." - ".$to_periode);
+$pdf->AliasNbPages();
+$pdf->AddPage();
+
+
+if ( count($a_poste) == 0 )
+{
+    $pdf->Output();
+    return;
+}
+
+// Header
+$header = array( "Date", "Référence", "Libellé", "Pièce","Let", "Débit", 
"Crédit", "Solde" );
+// Left or Right aligned
+$lor    = array( "L"   , "L"        , "L"      , "L"    , "R",   "R"    , "R"  
   , "R"     );
+// Column widths (in mm)
+$width  = array( 13    , 20         , 60       , 15     ,  12     , 20     , 
20      , 20      );
+$l=(isset($_REQUEST['letter']))?2:0;
+$s=(isset($_REQUEST['solded']))?1:0;
+
+foreach ($a_poste as $poste)
+{
+
+  $Poste=new Acc_Account_Ledger($cn,$poste['pcm_val']);
+
+
+  $array1=$Poste->get_row_date($from_periode,$to_periode,$l,$s);
+  // don't print empty account
+  if ( count($array1) == 0 )
+    {
+        continue;
+    }
+  $array=$array1[0];
+  $tot_deb=$array1[1];
+  $tot_cred=$array1[2];
+
+    $pdf->SetFont('DejaVuCond','',10);
+    $Libelle=sprintf("%s - %s ",$Poste->id,$Poste->get_name());
+    $pdf->Cell(0, 7, $Libelle, 1, 1, 'C');
+
+    $pdf->SetFont('DejaVuCond','',6);
+    for($i=0;$i<count($header);$i++)
+        $pdf->Cell($width[$i], 4, $header[$i], 0, 0, $lor[$i]);
+    $pdf->Ln();
+
+    $pdf->SetFont('DejaVuCond','',7);
+
+
+    $solde = 0.0;
+    $solde_d = 0.0;
+    $solde_c = 0.0;
+
+    foreach ($Poste->row as $detail)
+    {
+
+        /*
+               [0] => 1 [jr_id] => 1
+               [1] => 01.02.2009 [j_date_fmt] => 01.02.2009
+               [2] => 2009-02-01 [j_date] => 2009-02-01
+               [3] => 0 [deb_montant] => 0
+               [4] => 12211.9100 [cred_montant] => 12211.9100
+               [5] => Ecriture douverture [description] => Ecriture douverture
+               [6] => Opération Diverses [jrn_name] => Opération Diverses
+               [7] => f [j_debit] => f
+               [8] => 17OD-01-1 [jr_internal] => 17OD-01-1
+               [9] => ODS1 [jr_pj_number] => ODS1 ) 1
+         */
+
+        if ($detail['cred_montant'] > 0)
+        {
+            $solde   += $detail['cred_montant'];
+            $solde_c += $detail['cred_montant'];
+        }
+        if ($detail['deb_montant'] > 0)
+        {
+            $solde   -= $detail['deb_montant'];
+            $solde_d += $detail['deb_montant'];
+        }
+
+        $i = 0;
+
+        $pdf->Cell($width[$i], 6, shrink_date($detail['j_date_fmt']), 0, 0, 
$lor[$i]);
+        $i++;
+        $pdf->Cell($width[$i], 6, $detail['jr_internal'], 0, 0, $lor[$i]);
+        $i++;
+        /* limit set to 20 for the substring */
+        $pdf->Cell($width[$i], 6, substr($detail['description'],0,42), 0, 0, 
$lor[$i]);
+        $i++;
+        $pdf->Cell($width[$i], 6, $detail['jr_pj_number'], 0, 0, $lor[$i]);
+        $i++;
+        $pdf->Cell($width[$i], 6, 
($detail['letter']!=-1)?$detail['letter']:'', 0, 0, $lor[$i]);
+        $i++;
+        $pdf->Cell($width[$i], 6, ($detail['deb_montant']  > 0 ? nbm( 
$detail['deb_montant'])  : ''), 0, 0, $lor[$i]);
+        $i++;
+        $pdf->Cell($width[$i], 6, ($detail['cred_montant'] > 0 ? nbm( 
$detail['cred_montant']) : ''), 0, 0, $lor[$i]);
+        $i++;
+        $pdf->Cell($width[$i], 6, nbm( $solde), 0, 0, $lor[$i]);
+        $i++;
+        $pdf->Ln();
+
+    }
+
+
+    $pdf->SetFont('DejaVuCond','B',8);
+
+    $i = 0;
+    $pdf->Cell($width[$i], 6, '', 0, 0, $lor[$i]);
+    $i++;
+    $pdf->Cell($width[$i], 6, '', 0, 0, $lor[$i]);
+    $i++;
+    $pdf->Cell($width[$i], 6, '', 0, 0, $lor[$i]);
+    $i++;
+    $pdf->Cell($width[$i], 6, '', 0, 0, $lor[$i]);
+    $i++;
+    $pdf->Cell($width[$i], 6, 'Total du compte '.$Poste->id, 0, 0, 'R');
+    $i++;
+    $pdf->Cell($width[$i], 6, ($solde_d  > 0 ? nbm($solde_d)  : ''), 0, 0, 
$lor[$i]);
+    $i++;
+    $pdf->Cell($width[$i], 6, ($solde_c  > 0 ? nbm( $solde_c)  : ''), 0, 0, 
$lor[$i]);
+    $i++;
+    $pdf->Cell($width[$i], 6, nbm(abs($solde_c-$solde_d)), 0, 0, $lor[$i]);
+    $i++;
+    $pdf->Cell(5, 6, ($solde_c > $solde_d ? 'C' : 'D'), 0, 0, 'L');
+
+    $pdf->Ln();
+    $pdf->Ln();
+
+}
+//Save PDF to file
+$pdf->Output("gl_comptes.pdf", 'I');
+exit;
+?>

Deleted: phpcompta/branches/rel560/include/impress_gl_comptes.inc.php
===================================================================
--- phpcompta/trunk/include/impress_gl_comptes.inc.php  2011-05-24 20:24:49 UTC 
(rev 4127)
+++ phpcompta/branches/rel560/include/impress_gl_comptes.inc.php        
2011-05-25 20:16:37 UTC (rev 4130)
@@ -1,233 +0,0 @@
-<?php
-/*
- *   This file is part of PhpCompta.
- *
- *   PhpCompta is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   PhpCompta is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with PhpCompta; if not, write to the Free Software
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-/* $Revision$ */
-// Copyright Author Dany De Bontridder address@hidden
-require_once("class_ispan.php");
-require_once("class_icard.php");
-require_once("class_iselect.php");
-require_once("class_icheckbox.php");
-require_once('class_acc_operation.php');
-/*! \file
- * \brief Print account (html or pdf)
- *        file included from user_impress
- *
- * some variable are already defined $cn, $User ...
- *
- */
-//-----------------------------------------------------
-// Show the jrn and date
-//-----------------------------------------------------
-require_once('class_database.php');
-
-//-----------------------------------------------------
-// Form
-//-----------------------------------------------------
-echo '<div class="content">';
-
-echo '<FORM action="?" METHOD="GET">';
-echo HtmlInput::hidden('p_action','impress');
-echo HtmlInput::hidden('type','gl_comptes');
-echo dossier::hidden();
-echo '<TABLE><TR>';
-
-$cn=new Database(dossier::id());
-$periode=new Periode($cn);
-$a=$periode->get_limit($User->get_exercice());
-// $a is an array
-$first_day=$a[0]->first_day();
-$last_day=$a[1]->last_day();
-
-// filter on period
-$date_from=new IDate('from_periode');
-$date_to=new IDate('to_periode');
-$year=$User->get_exercice();
-$date_from->value=(isset($_REQUEST['from_periode']))?$_REQUEST['from_periode']:$first_day;
-$date_to->value=(isset($_REQUEST['to_periode']))?$_REQUEST['to_periode']:$last_day;
-echo td(_('Depuis').$date_from->input());
-echo td(_('Jusque ').$date_to->input());
-
-$letter=new ICheck('letter');
-$letter->selected=(isset($_REQUEST['letter']))?true:false;
-
-$from_poste=new IPoste('from_poste');
-$from_poste->value=HtmlInput::default_value('from_poste','',$_REQUEST);
-
-$to_poste=new IPoste('to_poste');
-$to_poste->value=HtmlInput::default_value('to_poste','',$_REQUEST);
-
-echo '<tr>';
-echo td.(_('Depuis le 
poste')).td($from_poste->input()).td($from_poste->dsp_button());
-echo '</tr>';
-
-echo '<tr>';
-echo td.(_("Jusqu'au 
poste")).td($to_poste->input()).td($to_poste->dsp_button());
-echo '</tr>';
-
-echo '<tr>';
-echo td('Uniquement les comptes non lettrés');
-echo td($letter->input());
-echo '</tr>';
-//
-echo '</TABLE>';
-print HtmlInput::submit('bt_html','Visualisation');
-
-echo '</FORM>';
-echo '<hr>';
-echo '</div>';
-
-//-----------------------------------------------------
-// If print is asked
-// First time in html
-// after in pdf or cvs
-//-----------------------------------------------------
-if ( isset( $_REQUEST['bt_html'] ) )
-{
-    require_once("class_acc_account_ledger.php");
-    echo Acc_Account_Ledger::HtmlTableHeader("gl_comptes");
-    $sql='select pcm_val from tmp_pcmn ';
-    $cond_poste='';
-
-    if ($from_poste->value != '') 
-      {
-       $cond_poste = '  where ';
-       $cond_poste .=' pcm_val >= upper 
(\''.Database::escape_string($from_poste->value).'\')';
-      }
-
-    if ( $to_poste->value != '')
-      {
-       if  ( $cond_poste == '') 
-         {
-           $cond_poste =  ' where pcm_val <= upper 
(\''.Database::escape_string($from_poste->value).'\')';
-         }
-       else
-         {
-           $cond_poste.=' and pcm_val <= upper 
(\''.Database::escape_string($from_poste->value).'\')';
-         }
-      }
-
-    $sql=$sql.$cond_poste.'  order by pcm_val::text';
-    $a_poste=$cn->get_array($sql);
-
-    if ( sizeof($a_poste) == 0 )
-    {
-        die("Nothing here. Strange.");
-        exit;
-    }
-    if ( isDate($_REQUEST['from_periode'])==null || 
isDate($_REQUEST['to_periode'])==null)
-    {
-        echo alert('Date malformée, désolée');
-        exit();
-    }
-    echo '<div class="content">';
-
-
-    echo '<table class="result">';
-
-    foreach ($a_poste as $poste_id )
-    {
-        $Poste=new Acc_Account_Ledger ($cn, $poste_id['pcm_val']);
-        $Poste->load();
-       $l=(isset($_REQUEST['letter']))?1:0;
-        $Poste->get_row_date( $_GET['from_periode'], $_GET['to_periode'],$l);
-        if ( empty($Poste->row))
-        {
-            continue;
-        }
-
-        echo '<tr>
-        <td colspan="8">
-        <h2 class="info">'. $poste_id['pcm_val'].' '.h($Poste->label).'</h2>
-        </td>
-        </tr>';
-
-        echo '<tr>
-        <td>Date</td>
-        <td>R&eacute;f&eacute;rence</td>
-        <td>Libell&eacute;</td>
-        <td>Pi&egrave;ce</td>
-        <td align="right">D&eacute;bit</td>
-        <td align="right">Cr&eacute;dit</td>
-        <td align="right">Solde</td>
-        <td align="right">Let.</td>
-        </tr>';
-
-        $solde = 0.0;
-        $solde_d = 0.0;
-        $solde_c = 0.0;
-       bcscale(2);
-        foreach ($Poste->row as $detail)
-        {
-         if ($a==0) {var_dump($detail);$a=1;}
-            /*
-                   [0] => 1 [jr_id] => 1
-                   [1] => 01.02.2009 [j_date_fmt] => 01.02.2009
-                   [2] => 2009-02-01 [j_date] => 2009-02-01
-                   [3] => 0 [deb_montant] => 0
-                   [4] => 12211.9100 [cred_montant] => 12211.9100
-                   [5] => Ecriture douverture [description] => Ecriture 
douverture
-                   [6] => Opération Diverses [jrn_name] => Opération Diverses
-                   [7] => f [j_debit] => f
-                   [8] => 17OD-01-1 [jr_internal] => 17OD-01-1
-                   [9] => ODS1 [jr_pj_number] => ODS1 ) 1
-             */
-
-            if ($detail['cred_montant'] > 0)
-            {
-             $solde=bcadd($solde, $detail['cred_montant']);
-             $solde_c=bcadd($solde_c,$detail['cred_montant']);
-            }
-            if ($detail['deb_montant'] > 0)
-            {
-             $solde   = bcsub($solde,$detail['deb_montant']);
-             $solde_d = bcadd($solde_d,$detail['deb_montant']);
-            }
-           $letter=($detail['letter']!=-1)?hi($detail['letter']):'';
-            echo '<tr>
-            <td>'.$detail['j_date_fmt'].'</td>
-            
<td>'.HtmlInput::detail_op($detail['jr_id'],$detail['jr_internal']).'</td>
-            <td>'.$detail['description'].'</td>
-            <td>'.$detail['jr_pj_number'].'</td>
-            <td align="right">'.($detail['deb_montant']  > 0 ? 
nbm($detail['deb_montant'])  : '').'</td>
-            <td align="right">'.($detail['cred_montant'] > 0 ? 
nbm($detail['cred_montant']) : '').'</td>
-            <td align="right">'.nbm($solde).'</td>
-            <td  style="text-align:right;color:red">'.$letter.'</td>
-            </tr>';
-        }
-        echo '<tr>
-        <td>'.''.'</td>
-        <td>'.''.'</td>
-        <td>'.'<b>'.'Total du compte '.$poste_id['pcm_val'].'</b>'.'</td>
-        <td>'.''.'</td>
-        <td align="right">'.'<b>'.($solde_d  > 0 ? nbm( $solde_d)  : 
'').'</b>'.'</td>
-        <td align="right">'.'<b>'.($solde_c  > 0 ? nbm( $solde_c)  : 
'').'</b>'.'</td>
-        <td align="right">'.'<b>'.nbm( abs($solde_c-$solde_d)).'</b>'.'</td>
-        <td>';
-       if ($solde_c > $solde_d ) echo "Crédit";
-       if ($solde_c < $solde_d )  echo "Débit";
-       if ($solde_c == $solde_d )  echo "=";
-
-      echo '</td>'.
-        '</tr>';
-    }
-    echo '</table>';
-    echo Acc_Account_Ledger::HtmlTableHeader("gl_comptes");
-    echo "</div>";
-    exit;
-}
-?>

Copied: phpcompta/branches/rel560/include/impress_gl_comptes.inc.php (from rev 
4129, phpcompta/trunk/include/impress_gl_comptes.inc.php)
===================================================================
--- phpcompta/branches/rel560/include/impress_gl_comptes.inc.php                
                (rev 0)
+++ phpcompta/branches/rel560/include/impress_gl_comptes.inc.php        
2011-05-25 20:16:37 UTC (rev 4130)
@@ -0,0 +1,249 @@
+<?php
+/*
+ *   This file is part of PhpCompta.
+ *
+ *   PhpCompta is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   PhpCompta is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with PhpCompta; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+/* $Revision$ */
+// Copyright Author Dany De Bontridder address@hidden
+require_once("class_ispan.php");
+require_once("class_icard.php");
+require_once("class_iselect.php");
+require_once("class_icheckbox.php");
+require_once('class_acc_operation.php');
+/*! \file
+ * \brief Print account (html or pdf)
+ *        file included from user_impress
+ *
+ * some variable are already defined $cn, $User ...
+ *
+ */
+//-----------------------------------------------------
+// Show the jrn and date
+//-----------------------------------------------------
+require_once('class_database.php');
+
+//-----------------------------------------------------
+// Form
+//-----------------------------------------------------
+echo '<div class="content">';
+
+echo '<FORM action="?" METHOD="GET">';
+echo HtmlInput::hidden('p_action','impress');
+echo HtmlInput::hidden('type','gl_comptes');
+echo dossier::hidden();
+echo '<TABLE><TR>';
+
+$cn=new Database(dossier::id());
+$periode=new Periode($cn);
+$a=$periode->get_limit($User->get_exercice());
+// $a is an array
+$first_day=$a[0]->first_day();
+$last_day=$a[1]->last_day();
+
+// filter on period
+$date_from=new IDate('from_periode');
+$date_to=new IDate('to_periode');
+$year=$User->get_exercice();
+$date_from->value=(isset($_REQUEST['from_periode'])&& 
isDate($_REQUEST['from_periode'])!=0)?$_REQUEST['from_periode']:$first_day;
+$date_to->value=(isset($_REQUEST['to_periode']) && 
isDate($_REQUEST['to_periode']) !=0  )?$_REQUEST['to_periode']:$last_day;
+echo td(_('Depuis').$date_from->input());
+echo td(_('Jusque ').$date_to->input());
+
+$letter=new ICheckbox('letter');
+$letter->selected=(isset($_REQUEST['letter']))?true:false;
+
+$from_poste=new IPoste('from_poste');
+$from_poste->value=HtmlInput::default_value('from_poste','',$_REQUEST);
+$from_poste->set_attribute('account','from_poste');
+
+$to_poste=new IPoste('to_poste');
+$to_poste->value=HtmlInput::default_value('to_poste','',$_REQUEST);
+$to_poste->set_attribute('account','to_poste');
+
+$solded=new ICheckbox('solded');
+$solded->selected=(isset($_REQUEST['solded']))?true:false;
+
+echo '<tr>';
+echo td(_('Depuis le poste')).td($from_poste->input());
+echo '</tr>';
+
+echo '<tr>';
+echo td(_("Jusqu'au poste")).td($to_poste->input());
+echo '</tr>';
+
+echo '<tr>';
+echo td('Uniquement les opérations non lettrées');
+echo td($letter->input());
+echo '</tr>';
+
+echo '<tr>';
+echo td('Uniquement les comptes non soldés');
+echo td($solded->input());
+echo '</tr>';
+
+
+//
+echo '</TABLE>';
+print HtmlInput::submit('bt_html','Visualisation');
+
+echo '</FORM>';
+echo '<hr>';
+echo '</div>';
+
+//-----------------------------------------------------
+// If print is asked
+// First time in html
+// after in pdf or cvs
+//-----------------------------------------------------
+if ( isset( $_REQUEST['bt_html'] ) )
+{
+    require_once("class_acc_account_ledger.php");
+    echo Acc_Account_Ledger::HtmlTableHeader("gl_comptes");
+    $sql='select pcm_val from tmp_pcmn ';
+    $cond_poste='';
+
+    if ($from_poste->value != '') 
+      {
+               $cond_poste = '  where ';
+               $cond_poste .=' pcm_val >= upper 
(\''.Database::escape_string($from_poste->value).'\')';
+      }
+
+    if ( $to_poste->value != '')
+      {
+       if  ( $cond_poste == '') 
+         {
+           $cond_poste =  ' where pcm_val <= upper 
(\''.Database::escape_string($to_poste->value).'\')';
+         }
+       else
+         {
+           $cond_poste.=' and pcm_val <= upper 
(\''.Database::escape_string($to_poste->value).'\')';
+         }
+      }
+
+    $sql=$sql.$cond_poste.'  order by pcm_val::text';
+
+    $a_poste=$cn->get_array($sql);
+
+    if ( sizeof($a_poste) == 0 )
+    {
+        die("Nothing here. Strange.");
+        exit;
+    }
+    if ( isDate($_REQUEST['from_periode'])==null || 
isDate($_REQUEST['to_periode'])==null)
+    {
+        echo alert('Date malformée, désolée');
+        exit();
+    }
+    echo '<div class="content">';
+
+
+    echo '<table class="result">';
+       $l=(isset($_REQUEST['letter']))?2:0;
+       $s=(isset($_REQUEST['solded']))?1:0;
+       
+    foreach ($a_poste as $poste_id )
+    {
+        $Poste=new Acc_Account_Ledger ($cn, $poste_id['pcm_val']);
+        $Poste->load();
+       
+
+        $Poste->get_row_date( $_GET['from_periode'], 
$_GET['to_periode'],$l,$s);
+        if ( empty($Poste->row))
+        {
+            continue;
+        }
+
+        echo '<tr>
+        <td colspan="8">
+        <h2 class="info">'. $poste_id['pcm_val'].' '.h($Poste->label).'</h2>
+        </td>
+        </tr>';
+
+        echo '<tr>
+        <td>Date</td>
+        <td>R&eacute;f&eacute;rence</td>
+        <td>Libell&eacute;</td>
+        <td>Pi&egrave;ce</td>
+        <td align="right">D&eacute;bit</td>
+        <td align="right">Cr&eacute;dit</td>
+        <td align="right">Solde</td>
+        <td align="right">Let.</td>
+        </tr>';
+
+        $solde = 0.0;
+        $solde_d = 0.0;
+        $solde_c = 0.0;
+       bcscale(2);
+        foreach ($Poste->row as $detail)
+        {
+         if ($a==0) {var_dump($detail);$a=1;}
+            /*
+                   [0] => 1 [jr_id] => 1
+                   [1] => 01.02.2009 [j_date_fmt] => 01.02.2009
+                   [2] => 2009-02-01 [j_date] => 2009-02-01
+                   [3] => 0 [deb_montant] => 0
+                   [4] => 12211.9100 [cred_montant] => 12211.9100
+                   [5] => Ecriture douverture [description] => Ecriture 
douverture
+                   [6] => Opération Diverses [jrn_name] => Opération Diverses
+                   [7] => f [j_debit] => f
+                   [8] => 17OD-01-1 [jr_internal] => 17OD-01-1
+                   [9] => ODS1 [jr_pj_number] => ODS1 ) 1
+             */
+
+            if ($detail['cred_montant'] > 0)
+            {
+             $solde=bcadd($solde, $detail['cred_montant']);
+             $solde_c=bcadd($solde_c,$detail['cred_montant']);
+            }
+            if ($detail['deb_montant'] > 0)
+            {
+             $solde   = bcsub($solde,$detail['deb_montant']);
+             $solde_d = bcadd($solde_d,$detail['deb_montant']);
+            }
+           $letter=($detail['letter']!=-1)?hi($detail['letter']):'';
+            echo '<tr>
+            <td>'.$detail['j_date_fmt'].'</td>
+            
<td>'.HtmlInput::detail_op($detail['jr_id'],$detail['jr_internal']).'</td>
+            <td>'.$detail['description'].'</td>
+            <td>'.$detail['jr_pj_number'].'</td>
+            <td align="right">'.($detail['deb_montant']  > 0 ? 
nbm($detail['deb_montant'])  : '').'</td>
+            <td align="right">'.($detail['cred_montant'] > 0 ? 
nbm($detail['cred_montant']) : '').'</td>
+            <td align="right">'.nbm($solde).'</td>
+            <td  style="text-align:right;color:red">'.$letter.'</td>
+            </tr>';
+        }
+        echo '<tr>
+        <td>'.''.'</td>
+        <td>'.''.'</td>
+        <td>'.'<b>'.'Total du compte '.$poste_id['pcm_val'].'</b>'.'</td>
+        <td>'.''.'</td>
+        <td align="right">'.'<b>'.($solde_d  > 0 ? nbm( $solde_d)  : 
'').'</b>'.'</td>
+        <td align="right">'.'<b>'.($solde_c  > 0 ? nbm( $solde_c)  : 
'').'</b>'.'</td>
+        <td align="right">'.'<b>'.nbm( abs($solde_c-$solde_d)).'</b>'.'</td>
+        <td>';
+       if ($solde_c > $solde_d ) echo "Crédit";
+       if ($solde_c < $solde_d )  echo "Débit";
+       if ($solde_c == $solde_d )  echo "=";
+
+      echo '</td>'.
+        '</tr>';
+    }
+    echo '</table>';
+    echo Acc_Account_Ledger::HtmlTableHeader("gl_comptes");
+    echo "</div>";
+    exit;
+}
+?>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]