phpcompta-dev
[Top][All Lists]
Advanced

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

[Phpcompta-dev] r4973 - in phpcompta/trunk: include sql


From: phpcompta-dev
Subject: [Phpcompta-dev] r4973 - in phpcompta/trunk: include sql
Date: Thu, 21 Jun 2012 20:42:07 +0200 (CEST)

Author: danydb
Date: 2012-06-21 20:42:07 +0200 (Thu, 21 Jun 2012)
New Revision: 4973

Modified:
   phpcompta/trunk/include/class_acc_ledger.php
   phpcompta/trunk/include/class_acc_ledger_purchase.php
   phpcompta/trunk/include/class_acc_ledger_sold.php
   phpcompta/trunk/sql/upgrade.sql
Log:
Fix bug in reversing writing

Modified: phpcompta/trunk/include/class_acc_ledger.php
===================================================================
--- phpcompta/trunk/include/class_acc_ledger.php        2012-06-21 17:14:48 UTC 
(rev 4972)
+++ phpcompta/trunk/include/class_acc_ledger.php        2012-06-21 18:42:07 UTC 
(rev 4973)
@@ -1,21 +1,22 @@
 <?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
-*/
+ *   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_iselect.php");
@@ -43,205 +44,195 @@
 require_once 'class_sort_table.php';
 require_once 'class_jrn_def_sql.php';
 require_once 'class_acc_payment.php';
-/*!\file
-* \brief Class for jrn,  class acc_ledger for manipulating the ledger
-*/
+/* !\file
+ * \brief Class for jrn,  class acc_ledger for manipulating the ledger
+ */
 
-/*!\brief Class for jrn,  class acc_ledger for manipulating the ledger
-*
-*/
+/* !\brief Class for jrn,  class acc_ledger for manipulating the ledger
+ *
+ */
+
 class Acc_Ledger extends jrn_def_sql
 {
-    var $id;                   /*!< jrn_def.jrn_def_id */
-    var $name;                 /*!< jrn_def.jrn_def_name */
-    var $db;                   /*!< database connextion */
-    var $row;                  /*!< row of the ledger */
-    var $type;                 /*!< type of the ledger ACH ODS FIN
-                                         VEN or GL */
-    var $nb;                   /*!< default number of rows by
-                                         default 10 */
-    /**
-     address@hidden $p_cn database connexion
-     address@hidden $p_id jrn.jrn_def_id
-     */
-    function __construct ($p_cn,$p_id)
-    {
-        $this->id=$p_id;
-               $this->name=&$this->jrn_def_name;
-        $this->jrn_def_id=&$this->id;
-        $this->db=$p_cn;
-        $this->row=null;
-        $this->nb=10;
-    }
 
-    function get_last_pj()
-    {
-        if ( $this->db->exist_sequence("s_jrn_pj".$this->id) )
-        {
-            $ret= $this->db->get_array("select last_value,is_called from 
s_jrn_pj".$this->id);
-            $last=$ret[0]['last_value'];
-            /*!
-                 *\note  With PSQL sequence , the last_value column is 1 when 
before   AND after the first call, to make the difference between them
-                 * I have to check whether the sequence has been already 
called or not */
-            if ($ret[0]['is_called']=='f' ) $last--;
-            return $last;
-        }
-        else
-            $this->db->create_sequence("s_jrn_pj".$this->id);
-        return 0;
-    }
-    /*!
-     * \brief Return the type of a ledger (ACH,VEN,ODS or FIN) or GL
-     *
-     */
-    function get_type()
-    {
-        if ( $this->id==0 )
-        {
-            $this->name=" Tous les journaux";
-            $this->type="GL";
-            return "GL";
-        }
+       var $id;   /* !< jrn_def.jrn_def_id */
+       var $name;   /* !< jrn_def.jrn_def_name */
+       var $db;   /* !< database connextion */
+       var $row;   /* !< row of the ledger */
+       var $type;   /* !< type of the ledger ACH ODS FIN
+         VEN or GL */
+       var $nb;   /* !< default number of rows by
+         default 10 */
 
-        $Res=$this->db->exec_sql("select jrn_def_type from ".
-                                 " jrn_def where jrn_def_id=".
-                                 $this->id);
-        $Max=Database::num_row($Res);
-        if ($Max==0) return null;
-        $ret=Database::fetch_array($Res,0);
-        $this->type=$ret['jrn_def_type'];
-        return $ret['jrn_def_type'];
-    }
-    /**
-     *let you delete a operation
-     address@hidden by cascade it will delete also in
-     * - jrnx
-     * - stock
-     * - quant_purchase
-     * - quant_fin
-     * - quant_sold
-     * - operation_analytique
-     * - letter
-     * - reconciliation
-     address@hidden the attached document is not deleted
-     */
-    function delete()
-    {
-        if ( $this->id == 0 ) return;
-        $grpt_id=$this->db->get_value('select jr_grpt_id from jrn where 
jr_id=$1',
-                                      array($this->jr_id));
-        if ( $this->db->count()==0) return;
-        $this->db->exec_sql('delete from jrnx where j_grpt=$1',
-                            array($grpt_id));
-        $this->db->exec_sql('delete from jrn where jr_id=$1',
-                            array($this->jr_id));
-    }
        /**
-        *Display warning contained in an array
+        * @param $p_cn database connexion
+        * @param $p_id jrn.jrn_def_id
+        */
+       function __construct($p_cn, $p_id)
+       {
+               $this->id = $p_id;
+               $this->name = &$this->jrn_def_name;
+               $this->jrn_def_id = &$this->id;
+               $this->db = $p_cn;
+               $this->row = null;
+               $this->nb = 10;
+       }
+
+       function get_last_pj()
+       {
+               if ($this->db->exist_sequence("s_jrn_pj" . $this->id))
+               {
+                       $ret = $this->db->get_array("select 
last_value,is_called from s_jrn_pj" . $this->id);
+                       $last = $ret[0]['last_value'];
+                       /* !
+                        * \note  With PSQL sequence , the last_value column is 
1 when before   AND after the first call, to make the difference between them
+                        * I have to check whether the sequence has been 
already called or not */
+                       if ($ret[0]['is_called'] == 'f')
+                               $last--;
+                       return $last;
+               }
+               else
+                       $this->db->create_sequence("s_jrn_pj" . $this->id);
+               return 0;
+       }
+
+       /* !
+        * \brief Return the type of a ledger (ACH,VEN,ODS or FIN) or GL
+        *
+        */
+
+       function get_type()
+       {
+               if ($this->id == 0)
+               {
+                       $this->name = " Tous les journaux";
+                       $this->type = "GL";
+                       return "GL";
+               }
+
+               $Res = $this->db->exec_sql("select jrn_def_type from " .
+                               " jrn_def where jrn_def_id=" .
+                               $this->id);
+               $Max = Database::num_row($Res);
+               if ($Max == 0)
+                       return null;
+               $ret = Database::fetch_array($Res, 0);
+               $this->type = $ret['jrn_def_type'];
+               return $ret['jrn_def_type'];
+       }
+
+       /**
+        * let you delete a operation
+        * @note by cascade it will delete also in
+        * - jrnx
+        * - stock
+        * - quant_purchase
+        * - quant_fin
+        * - quant_sold
+        * - operation_analytique
+        * - letter
+        * - reconciliation
+        * @bug the attached document is not deleted
+        */
+       function delete()
+       {
+               if ($this->id == 0)
+                       return;
+               $grpt_id = $this->db->get_value('select jr_grpt_id from jrn 
where jr_id=$1', array($this->jr_id));
+               if ($this->db->count() == 0)
+                       return;
+               $this->db->exec_sql('delete from jrnx where j_grpt=$1', 
array($grpt_id));
+               $this->db->exec_sql('delete from jrn where jr_id=$1', 
array($this->jr_id));
+       }
+
+       /**
+        * Display warning contained in an array
         * @return string with error message
         */
-       function display_warning($pa_msg,$p_warning)
+       function display_warning($pa_msg, $p_warning)
        {
-               $str='<p class="notice"> '.$p_warning;
+               $str = '<p class="notice"> ' . $p_warning;
                $str.="<ol class=\"notice\">";
-               for ($i=0;$i<count($pa_msg);$i++)
+               for ($i = 0; $i < count($pa_msg); $i++)
                {
-                       $str.="<li>".$pa_msg[$i]."</li>";
+                       $str.="<li>" . $pa_msg[$i] . "</li>";
                }
                $str.='</ol>';
                $str.='</p>';
                return $str;
        }
-    /**
-     * reverse the operation by creating the opposite one,
-     * the result is to avoid it
-     * it must be done in
-     * - jrn
-     * - jrnx
-     * - quant_fin
-     * - quant_sold
-     * - quant_purchase
-     * - stock
-     * - ANC
-     address@hidden $p_date is the date of the reversed op
-     address@hidden if date is invalid or other prob
-     address@hidden automatically create a reconciliation between operation
-     *You must set the ledger_id $this->jrn_def_id
-     */
-    function reverse($p_date)
-    {
-        global $g_user;
-        if ( ! isset ($this->jr_id) || $this->jr_id=='')
-            throw new Exception ("this->jr_id is not set ou opération 
inconnue");
 
-        /* check if the date is valid */
-        if ( isDate($p_date) == null )
-            throw new Exception (_('Date invalide').$p_date);
+       /**
+        * reverse the operation by creating the opposite one,
+        * the result is to avoid it
+        * it must be done in
+        * - jrn
+        * - jrnx
+        * - quant_fin
+        * - quant_sold
+        * - quant_purchase
+        * - stock
+        * - ANC
+        * @param $p_date is the date of the reversed op
+        * @exception if date is invalid or other prob
+        * @note automatically create a reconciliation between operation
+        * You must set the ledger_id $this->jrn_def_id
+        */
+       function reverse($p_date)
+       {
+               global $g_user;
+               try
+               {
+                       $this->db->start();
+                       if (!isset($this->jr_id) || $this->jr_id == '')
+                               throw new Exception("this->jr_id is not set ou 
opération inconnue");
 
-        // if the operation is in a closed or centralized period
-        // the operation is voided thanks the opposite operation
-        $grp_new=$this->db->get_next_seq('s_grpt');
-        $seq=$this->db->get_next_seq("s_jrn");
-        $p_internal=$this->compute_internal_code($seq);
-        $this->jr_grpt_id=$this->db->get_value('select jr_grpt_id from jrn 
where jr_id=$1',
-                                               array($this->jr_id));
-        if ( $this->db->count()==0)
-            throw new Exception (_("Cette opération n'existe pas"));
-        $this->jr_internal=$this->db->get_value('select jr_internal from jrn 
where jr_id=$1',
-                                                array($this->jr_id));
-        if ( $this->db->count()==0 || trim($this->jr_internal)=='')
-            throw new Exception (_("Cette opération n'existe pas"));
+                       /* check if the date is valid */
+                       if (isDate($p_date) == null)
+                               throw new Exception(_('Date invalide') . 
$p_date);
 
-        /* find the periode thanks the date */
-        $per=new Periode($this->db);
-        $per->jrn_def_id=$this->id;
-        $per->find_periode($p_date);
+                       // if the operation is in a closed or centralized period
+                       // the operation is voided thanks the opposite operation
+                       $grp_new = $this->db->get_next_seq('s_grpt');
+                       $seq = $this->db->get_next_seq("s_jrn");
+                       $p_internal = $this->compute_internal_code($seq);
+                       $this->jr_grpt_id = $this->db->get_value('select 
jr_grpt_id from jrn where jr_id=$1', array($this->jr_id));
+                       if ($this->db->count() == 0)
+                               throw new Exception(_("Cette opération n'existe 
pas"));
+                       $this->jr_internal = $this->db->get_value('select 
jr_internal from jrn where jr_id=$1', array($this->jr_id));
+                       if ($this->db->count() == 0 || trim($this->jr_internal) 
== '')
+                               throw new Exception(_("Cette opération n'existe 
pas"));
 
-        if ( $per->is_open() == 0 )
-            throw new Exception (_('PERIODE FERMEE'));
+                       /* find the periode thanks the date */
+                       $per = new Periode($this->db);
+                       $per->jrn_def_id = $this->id;
+                       $per->find_periode($p_date);
 
-        $sql= "insert into jrn (
-              jr_id,
-              jr_def_id,
-              jr_montant,
-              jr_comment,
-              jr_date,
-              jr_grpt_id,
-              jr_internal
-              ,jr_tech_per, jr_valid
-              )
-              select $1,jr_def_id,jr_montant,'Annulation '||jr_comment,
-              to_date($2,'DD.MM.YYYY'),$3,$4,
-              $5, true
-              from
-              jrn
-              where   jr_id=$6";
-        
$Res=$this->db->exec_sql($sql,array($seq,$p_date,$grp_new,$p_internal,$per->p_id,$this->jr_id));
-        // Check return code
-        if ( $Res == false)
-            throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]"));
+                       if ($per->is_open() == 0)
+                               throw new Exception(_('PERIODE FERMEE'));
 
 
 
 
-        // Mark the operation invalid into the ledger
-        // to avoid to nullify twice the same op.
-        $sql="update jrn set jr_comment='Annule : '||jr_comment where 
jr_id=$1";
-        $Res=$this->db->exec_sql($sql,array($this->jr_id));
 
-        // Check return code
-        if ( $Res == false)
-            throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]"));
+                       // Mark the operation invalid into the ledger
+                       // to avoid to nullify twice the same op.
+                       $sql = "update jrn set jr_comment='Annule : 
'||jr_comment where jr_id=$1";
+                       $Res = $this->db->exec_sql($sql, array($this->jr_id));
 
-        //////////////////////////////////////////////////
-        // Reverse in jrnx* tables
-        //////////////////////////////////////////////////
-        $a_jid=$this->db->get_array("select j_id,j_debit from jrnx where 
j_grpt=$1",array($this->jr_grpt_id));
-        for ($l=0;$l<count($a_jid);$l++)
-        {
-            $row=$a_jid[$l]['j_id'];
-            // Make also the change into jrnx
-            $sql= "insert into jrnx (
+                       // Check return code
+                       if ($Res == false)
+                               throw (new Exception(__FILE__ . __LINE__ . "sql 
a echoue [ $sql ]"));
+
+                       //////////////////////////////////////////////////
+                       // Reverse in jrnx* tables
+                       //////////////////////////////////////////////////
+                       $a_jid = $this->db->get_array("select j_id,j_debit from 
jrnx where j_grpt=$1", array($this->jr_grpt_id));
+                       for ($l = 0; $l < count($a_jid); $l++)
+                       {
+                               $row = $a_jid[$l]['j_id'];
+                               // Make also the change into jrnx
+                               $sql = "insert into jrnx (
                   j_date,j_montant,j_poste,j_grpt,
                   
j_jrn_def,j_debit,j_text,j_internal,j_tech_user,j_tech_per,j_qcode
                   ) select to_date($1,'DD.MM.YYYY'),j_montant,j_poste,$2,
@@ -250,280 +241,301 @@
                   from
                   jrnx
                   where   j_id=$6 returning j_id";
-            
$Res=$this->db->exec_sql($sql,array($p_date,$grp_new,$p_internal,$g_user->id,$per->p_id,$row));
-            // Check return code
-            if ( $Res == false)
-                throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql 
]"));
-            $aj_id=$this->db->fetch(0);
-            $j_id=$aj_id['j_id'];
+                               $Res = $this->db->exec_sql($sql, array($p_date, 
$grp_new, $p_internal, $g_user->id, $per->p_id, $row));
+                               // Check return code
+                               if ($Res == false)
+                                       throw (new Exception(__FILE__ . 
__LINE__ . "sql a echoue [ $sql ]"));
+                               $aj_id = $this->db->fetch(0);
+                               $j_id = $aj_id['j_id'];
 
-            /* automatic lettering */
-            $let=new Lettering($this->db);
-            $let->insert_couple($j_id,$row);
+                               /* automatic lettering */
+                               $let = new Lettering($this->db);
+                               $let->insert_couple($j_id, $row);
 
-            // reverse in QUANT_SOLD
-            $Res=$this->db->exec_sql("INSERT INTO quant_sold(
+                               // reverse in QUANT_SOLD
+                               $Res = $this->db->exec_sql("INSERT INTO 
quant_sold(
                                      qs_internal, qs_fiche, qs_quantite, 
qs_price, qs_vat,
                                      qs_vat_code, qs_client, qs_valid, j_id)
                                      SELECT $1, qs_fiche, qs_quantite*(-1), 
qs_price*(-1), qs_vat*(-1),
                                      qs_vat_code, qs_client, qs_valid, $2
-                                     FROM quant_sold where j_id=$3",
-                                     array($p_internal,$j_id,$row));
+                                     FROM quant_sold where j_id=$3", 
array($p_internal, $j_id, $row));
 
-            if ( $Res == false)
-                throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql 
]"));
-            $Res=$this->db->exec_sql("INSERT INTO quant_purchase(
+                               if ($Res == false)
+                                       throw (new Exception(__FILE__ . 
__LINE__ . "sql a echoue [ $sql ]"));
+                               $Res = $this->db->exec_sql("INSERT INTO 
quant_purchase(
                                      qp_internal, j_id, qp_fiche, qp_quantite, 
qp_price, qp_vat,
                                      qp_vat_code, qp_nd_amount, qp_nd_tva, 
qp_nd_tva_recup, qp_supplier,
                                      qp_valid, qp_dep_priv)
                                      SELECT  $1, $2, qp_fiche, 
qp_quantite*(-1), qp_price*(-1), qp_vat*(-1),
                                      qp_vat_code, qp_nd_amount*(-1), 
qp_nd_tva*(-1), qp_nd_tva_recup*(-1), qp_supplier,
                                      qp_valid, qp_dep_priv*(-1)
-                                     FROM quant_purchase where j_id=$3",
-                                     array($p_internal,$j_id,$row));
+                                     FROM quant_purchase where j_id=$3", 
array($p_internal, $j_id, $row));
 
-            if ( $Res == false)
-                throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql 
]"));
-        }
-        // reverse in QUANT_FIN table
-        $Res=$this->db->exec_sql("  INSERT INTO quant_fin(
+                               if ($Res == false)
+                                       throw (new Exception(__FILE__ . 
__LINE__ . "sql a echoue [ $sql ]"));
+                       }
+                       $sql = "insert into jrn (
+              jr_id,
+              jr_def_id,
+              jr_montant,
+              jr_comment,
+              jr_date,
+              jr_grpt_id,
+              jr_internal
+              ,jr_tech_per, jr_valid
+              )
+              select $1,jr_def_id,jr_montant,'Annulation '||jr_comment,
+              to_date($2,'DD.MM.YYYY'),$3,$4,
+              $5, true
+              from
+              jrn
+              where   jr_id=$6";
+                               $Res = $this->db->exec_sql($sql, array($seq, 
$p_date, $grp_new, $p_internal, $per->p_id, $this->jr_id));
+                               // Check return code
+                               if ($Res == false)
+                                       throw (new Exception(__FILE__ . 
__LINE__ . "sql a echoue [ $sql ]"));
+                       // reverse in QUANT_FIN table
+                       $Res = $this->db->exec_sql("  INSERT INTO quant_fin(
                                  qf_bank,  qf_other, qf_amount,jr_id)
                                  SELECT  qf_bank,  qf_other, qf_amount*(-1),$1
-                                 FROM quant_fin where 
jr_id=$2",array($seq,$this->jr_id));
-        if ( $Res == false)
-            throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]"));
+                                 FROM quant_fin where jr_id=$2", array($seq, 
$this->jr_id));
+                       if ($Res == false)
+                               throw (new Exception(__FILE__ . __LINE__ . "sql 
a echoue [ $sql ]"));
 
-        // Add a "concerned operation to bound these op.together
-        //
-        $rec=new Acc_Reconciliation ($this->db);
-        $rec->set_jr_id($seq);
-        $rec->insert($this->jr_id);
+                       // Add a "concerned operation to bound these op.together
+                       //
+        $rec = new Acc_Reconciliation($this->db);
+                       $rec->set_jr_id($seq);
+                       $rec->insert($this->jr_id);
 
-        // Check return code
-        if ( $Res == false )
-        {
-            throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]"));
-        }
+                       // Check return code
+                       if ($Res == false)
+                       {
+                               throw (new Exception(__FILE__ . __LINE__ . "sql 
a echoue [ $sql ]"));
+                       }
 
 
-        // the table stock must updated
-        // also in the stock table
-        $sql="delete from stock_goods where sg_id = any ( select sg_id
-             from stock_goods natural join jrnx  where 
j_grpt=".$this->jr_grpt_id.")";
-        $Res=$this->db->exec_sql($sql);
-        /**
-         address@hidden
-         address@hidden  remove also from ANC */
 
-        // Check return code
-        if ( $Res == false)
-            throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]"));
+                       // the table stock must updated
+                       // also in the stock table
+                       $sql = "delete from stock_goods where sg_id = any ( 
select sg_id
+             from stock_goods natural join jrnx  where j_grpt=" . 
$this->jr_grpt_id . ")";
+                       $Res = $this->db->exec_sql($sql);
+                       /**
+                        * @function
+                        * @todo  remove also from ANC */
+                       // Check return code
+                       if ($Res == false)
+                               throw (new Exception(__FILE__ . __LINE__ . "sql 
a echoue [ $sql ]"));
+               }
+               catch (Exception $e)
+               {
+                       $this->db->rollback();
+                       throw $e;
+               }
+       }
 
-    }
-    /*!
-     * \brief Return the name of a ledger
-     *
-     */
-    function get_name()
-    {
-        if ( $this->id==0 )
-        {
-            $this->name=" Grand Livre ";
-            return $this->name;
-        }
+       /* !
+        * \brief Return the name of a ledger
+        *
+        */
 
-        $Res=$this->db->exec_sql("select jrn_def_name from ".
-                                 " jrn_def where jrn_def_id=$1",
-                                 array($this->id));
-        $Max=Database::num_row($Res);
-        if ($Max==0) return null;
-        $ret=Database::fetch_array($Res,0);
-        $this->name=$ret['jrn_def_name'];
-        return $ret['jrn_def_name'];
-    }
+       function get_name()
+       {
+               if ($this->id == 0)
+               {
+                       $this->name = " Grand Livre ";
+                       return $this->name;
+               }
 
+               $Res = $this->db->exec_sql("select jrn_def_name from " .
+                               " jrn_def where jrn_def_id=$1", 
array($this->id));
+               $Max = Database::num_row($Res);
+               if ($Max == 0)
+                       return null;
+               $ret = Database::fetch_array($Res, 0);
+               $this->name = $ret['jrn_def_name'];
+               return $ret['jrn_def_name'];
+       }
 
-    /*! \function  get_row
-     * \brief  Get The data
-     *
-     *
-     * \param p_from from periode
-     * \param p_to to periode
-     * \param p_limit starting line
-     * \param p_offset number of lines
-     * \return Array with the asked data
-     *
-     */
-    function get_row($p_from,$p_to,$p_limit=-1,$p_offset=-1)
-    {
-       global $g_user;
-        $periode=sql_filter_per($this->db,$p_from,$p_to,'p_id','jr_tech_per');
+       /* ! \function  get_row
+        * \brief  Get The data
+        *
+        *
+        * \param p_from from periode
+        * \param p_to to periode
+        * \param p_limit starting line
+        * \param p_offset number of lines
+        * \return Array with the asked data
+        *
+        */
 
-        $cond_limite=($p_limit!=-1)?" limit ".$p_limit." offset ".$p_offset:"";
-        // retrieve the type
-        $this->get_type();
-        // Grand livre == 0
-        if ( $this->id != 0 )
-        {
-            $Res=$this->db->exec_sql("select jr_id,j_id,j_id as 
int_j_id,to_char(j_date,'DD.MM.YYYY') as j_date,
+       function get_row($p_from, $p_to, $p_limit = -1, $p_offset = -1)
+       {
+               global $g_user;
+               $periode = sql_filter_per($this->db, $p_from, $p_to, 'p_id', 
'jr_tech_per');
+
+               $cond_limite = ($p_limit != -1) ? " limit " . $p_limit . " 
offset " . $p_offset : "";
+               // retrieve the type
+               $this->get_type();
+               // Grand livre == 0
+               if ($this->id != 0)
+               {
+                       $Res = $this->db->exec_sql("select jr_id,j_id,j_id as 
int_j_id,to_char(j_date,'DD.MM.YYYY') as j_date,
                                      jr_internal,
                                      case j_debit when 't' then 
j_montant::text else '   ' end as deb_montant,
                                      case j_debit when 'f' then 
j_montant::text else '   ' end as cred_montant,
-                                     j_debit as debit,j_poste as 
poste,jr_montant , ".
-                                     "case when j_text='' or j_text is null 
then pcm_lib else j_text end as description,j_grpt as grp,
+                                     j_debit as debit,j_poste as 
poste,jr_montant , " .
+                                       "case when j_text='' or j_text is null 
then pcm_lib else j_text end as description,j_grpt as grp,
                                      jr_comment||' ('||jr_internal||')'  as 
jr_comment,
                                     jr_pj_number,
                                      j_qcode,
                                      jr_rapt as oc, j_tech_per as periode
-                                     from jrnx left join jrn on ".
-                                     "jr_grpt_id=j_grpt ".
-                                     " left join tmp_pcmn on pcm_val=j_poste ".
-                                     " where j_jrn_def=".$this->id.
-                                     " and ".$periode." order by j_date::date 
asc,substring(jr_pj_number,'\\\\d+$')::numeric asc,j_grpt,j_debit desc ".
-                                     $cond_limite);
-
-        }
-        else
-        {
-            $Res=$this->db->exec_sql("select jr_id,j_id,j_id as 
int_j_id,to_char(j_date,'DD.MM.YYYY') as j_date,
+                                     from jrnx left join jrn on " .
+                                       "jr_grpt_id=j_grpt " .
+                                       " left join tmp_pcmn on pcm_val=j_poste 
" .
+                                       " where j_jrn_def=" . $this->id .
+                                       " and " . $periode . " order by 
j_date::date asc,substring(jr_pj_number,'\\\\d+$')::numeric asc,j_grpt,j_debit 
desc " .
+                                       $cond_limite);
+               }
+               else
+               {
+                       $Res = $this->db->exec_sql("select jr_id,j_id,j_id as 
int_j_id,to_char(j_date,'DD.MM.YYYY') as j_date,
                                      jr_internal,
                                      case j_debit when 't' then 
j_montant::text else '   ' end as deb_montant,
                                      case j_debit when 'f' then 
j_montant::text else '   ' end as cred_montant,
-                                     j_debit as debit,j_poste as poste,".
-                                     "case when j_text='' or j_text is null 
then pcm_lib else j_text end as description,j_grpt as grp,
+                                     j_debit as debit,j_poste as poste," .
+                                       "case when j_text='' or j_text is null 
then pcm_lib else j_text end as description,j_grpt as grp,
                                      jr_comment||' ('||jr_internal||')' as 
jr_comment,
                                     jr_pj_number,
                                      jr_montant,
                                      j_qcode,
-                                     jr_rapt as oc, j_tech_per as periode from 
jrnx left join jrn on ".
-                                     "jr_grpt_id=j_grpt left join tmp_pcmn on 
pcm_val=j_poste
+                                     jr_rapt as oc, j_tech_per as periode from 
jrnx left join jrn on " .
+                                       "jr_grpt_id=j_grpt left join tmp_pcmn 
on pcm_val=j_poste
                                                                                
 join jrn_def on (jr_def_id=jrn_def_id)
-                                                                               
 where ".
-                                                                        
$g_user->get_ledger_sql()." and ".
-                                     "  ".$periode." order by 
j_date::date,substring(jr_pj_number,'\\\\d+$') asc,j_grpt,j_debit desc   ".
-                                     $cond_limite);
+                                                                               
 where " .
+                                       $g_user->get_ledger_sql() . " and " .
+                                       "  " . $periode . " order by 
j_date::date,substring(jr_pj_number,'\\\\d+$') asc,j_grpt,j_debit desc   " .
+                                       $cond_limite);
+               }
 
-        }
 
+               $array = array();
+               $Max = Database::num_row($Res);
+               if ($Max == 0)
+                       return null;
+               $case = "";
+               $tot_deb = 0;
+               $tot_cred = 0;
+               $row = Database::fetch_all($Res);
+               for ($i = 0; $i < $Max; $i++)
+               {
+                       $fiche = new Fiche($this->db);
+                       $line = $row[$i];
+                       $mont_deb = ($line['deb_montant'] != 0) ? sprintf("% 
8.2f", $line['deb_montant']) : "";
+                       $mont_cred = ($line['cred_montant'] != 0) ? sprintf("% 
8.2f", $line['cred_montant']) : "";
+                       $jr_montant = ($line['jr_montant'] != 0) ? sprintf("% 
8.2f", $line['jr_montant']) : "";
+                       $tot_deb+=$line['deb_montant'];
+                       $tot_cred+=$line['cred_montant'];
+                       $tot_op = $line['jr_montant'];
 
-        $array=array();
-        $Max=Database::num_row($Res);
-        if ($Max==0) return null;
-        $case="";
-        $tot_deb=0;
-        $tot_cred=0;
-        $row=Database::fetch_all($Res);
-        for ($i=0;$i<$Max;$i++)
-        {
-            $fiche=new Fiche($this->db);
-            $line=$row[$i];
-            $mont_deb=($line['deb_montant']!=0)?sprintf("% 
8.2f",$line['deb_montant']):"";
-            $mont_cred=($line['cred_montant']!=0)?sprintf("% 
8.2f",$line['cred_montant']):"";
-            $jr_montant=($line['jr_montant']!=0)?sprintf("% 
8.2f",$line['jr_montant']):"";
-            $tot_deb+=$line['deb_montant'];
-            $tot_cred+=$line['cred_montant'];
-            $tot_op=$line['jr_montant'];
+                       /* Check first if there is a quickcode */
+                       if (strlen(trim($line['description'])) == 0 && 
strlen(trim($line['j_qcode'])) != 0)
+                       {
+                               if ($fiche->get_by_qcode($line['j_qcode'], 
false) == 0)
+                               {
+                                       $line['description'] = 
$fiche->strAttribut(ATTR_DEF_NAME);
+                               }
+                       }
+                       if ($case != $line['grp'])
+                       {
+                               $case = $line['grp'];
+                               // for financial, we show if the amount is or 
not in negative
+                               if ($this->type == 'FIN')
+                               {
+                                       $amount = $this->db->get_value('select 
qf_amount from quant_fin where jr_id=$1', array($line['jr_id']));
+                                       /*  if nothing is found */
+                                       if ($this->db->count() == 0)
+                                               $tot_op = $jr_montant;
+                                       else if ($amount < 0)
+                                       {
+                                               $tot_op = $amount;
+                                       }
+                               }
+                               $array[] = array(
+                                       'jr_id' => $line['jr_id'],
+                                       'int_j_id' => $line['int_j_id'],
+                                       'j_id' => $line['j_id'],
+                                       'j_date' => $line['j_date'],
+                                       'internal' => $line['jr_internal'],
+                                       'deb_montant' => '',
+                                       'cred_montant' => ' ',
+                                       'description' => '<b><i>' . 
h($line['jr_comment']) . ' [' . $tot_op . '] </i></b>',
+                                       'poste' => $line['oc'],
+                                       'qcode' => $line['j_qcode'],
+                                       'periode' => $line['periode'],
+                                       'jr_pj_number' => $line 
['jr_pj_number']);
 
-            /* Check first if there is a quickcode */
-            if (strlen(trim($line['description']))==0 &&  
strlen(trim($line['j_qcode'])) != 0 )
-            {
-                if ( $fiche->get_by_qcode($line['j_qcode'],false) == 0 )
-                {
-                    $line['description']=$fiche->strAttribut(ATTR_DEF_NAME);
-                }
-            }
-            if ( $case != $line['grp'] )
-            {
-                $case=$line['grp'];
-                // for financial, we show if the amount is or not in negative
-                if ( $this->type=='FIN')
-                {
-                    $amount=$this->db->get_value('select qf_amount from 
quant_fin where jr_id=$1',
-                                                 array($line['jr_id']));
-                    /*  if nothing is found */
-                    if ( $this->db->count()==0 )
-                        $tot_op=$jr_montant;
-                    else if ( $amount < 0 )
-                    {
-                        $tot_op=$amount;
-                    }
-                }
-                $array[]=array (
-                             'jr_id'=>$line['jr_id'],
-                             'int_j_id' => $line['int_j_id'],
-                             'j_id'=>$line['j_id'],
-                             'j_date' => $line['j_date'],
-                             'internal'=>$line['jr_internal'],
-                             'deb_montant'=>'',
-                             'cred_montant'=>' ',
-                             'description'=>'<b><i>'.h($line['jr_comment']).' 
['.$tot_op.'] </i></b>',
-                             'poste' => $line['oc'],
-                             'qcode' => $line['j_qcode'],
-                             'periode' =>$line['periode'],
-                            'jr_pj_number' => $line ['jr_pj_number']);
+                               $array[] = array(
+                                       'jr_id' => '',
+                                       'int_j_id' => $line['int_j_id'],
+                                       'j_id' => '',
+                                       'j_date' => '',
+                                       'internal' => '',
+                                       'deb_montant' => $mont_deb,
+                                       'cred_montant' => $mont_cred,
+                                       'description' => $line['description'],
+                                       'poste' => $line['poste'],
+                                       'qcode' => $line['j_qcode'],
+                                       'periode' => $line['periode'],
+                                       'jr_pj_number' => ''
+                               );
+                       }
+                       else
+                       {
+                               $array[] = array(
+                                       'jr_id' => $line['jr_id'],
+                                       'int_j_id' => $line['int_j_id'],
+                                       'j_id' => '',
+                                       'j_date' => '',
+                                       'internal' => '',
+                                       'deb_montant' => $mont_deb,
+                                       'cred_montant' => $mont_cred,
+                                       'description' => $line['description'],
+                                       'poste' => $line['poste'],
+                                       'qcode' => $line['j_qcode'],
+                                       'periode' => $line['periode'],
+                                       'jr_pj_number' => '');
+                       }
+               }
+               $this->row = $array;
+               $a = array($array, $tot_deb, $tot_cred);
+               return $a;
+       }
 
-                $array[]=array (
-                             'jr_id'=>'',
-                             'int_j_id' => $line['int_j_id'],
-                             'j_id'=>'',
-                             'j_date' => '',
-                             'internal'=>'',
-                             'deb_montant'=>$mont_deb,
-                             'cred_montant'=>$mont_cred,
-                             'description'=>$line['description'],
-                             'poste' => $line['poste'],
-                             'qcode' => $line['j_qcode'],
-                             'periode' => $line['periode'],
-                            'jr_pj_number' => ''
-                         );
+       /* ! \brief  Get simplified row from ledger
+        *
+        * \param from periode
+        * \param to periode
+        * \param p_limit starting line
+        * \param p_offset number of lines
+        * \param trunc if data must be truncated (pdf export)
+        *
+        * \return an Array with the asked data
+        */
 
-            }
-            else
-            {
-                $array[]=array (
-                             'jr_id'=>$line['jr_id'],
-                             'int_j_id' => $line['int_j_id'],
-                             'j_id'=>'',
-                             'j_date' => '',
-                             'internal'=>'',
-                             'deb_montant'=>$mont_deb,
-                             'cred_montant'=>$mont_cred,
-                             'description'=>$line['description'],
-                             'poste' => $line['poste'],
-                             'qcode' => $line['j_qcode'],
-                             'periode' => $line['periode'],
-                            'jr_pj_number' => '');
+       function get_rowSimple($p_from, $p_to, $trunc = 0, $p_limit = -1, 
$p_offset = -1)
+       {
+               global $g_user;
+               // Grand-livre : id= 0
+               //---
+               $jrn = ($this->id == 0 ) ? "and " . $g_user->get_ledger_sql() : 
"and jrn_def_id = " . $this->id;
 
-            }
+               $periode = sql_filter_per($this->db, $p_from, $p_to, 'p_id', 
'jr_tech_per');
 
-
-        }
-        $this->row=$array;
-        $a=array($array,$tot_deb,$tot_cred);
-        return $a;
-    }
-    /*! \brief  Get simplified row from ledger
-     *
-     * \param from periode
-     * \param to periode
-     * \param p_limit starting line
-     * \param p_offset number of lines
-     * \param trunc if data must be truncated (pdf export)
-     *
-     * \return an Array with the asked data
-     */
-    function get_rowSimple($p_from,$p_to,$trunc=0,$p_limit=-1,$p_offset=-1)
-    {
-       global $g_user;
-        // Grand-livre : id= 0
-        //---
-        $jrn=($this->id == 0 )?"and ".$g_user->get_ledger_sql():"and 
jrn_def_id = ".$this->id;
-
-        $periode=sql_filter_per($this->db,$p_from,$p_to,'p_id','jr_tech_per');
-
-        $cond_limite=($p_limit!=-1)?" limit ".$p_limit." offset ".$p_offset:"";
-        //---
-        $sql="
+               $cond_limite = ($p_limit != -1) ? " limit " . $p_limit . " 
offset " . $p_offset : "";
+               //---
+               $sql = "
              SELECT jrn.jr_id as jr_id ,
              jrn.jr_id as num ,
              jrn.jr_def_id as jr_def_id,
@@ -539,1642 +551,1668 @@
              FROM jrn join jrn_def on (jrn_def_id=jr_def_id)
              WHERE $periode $jrn order by jr_date $cond_limite";
 
-        $Res=$this->db->exec_sql($sql);
-        $Max=Database::num_row($Res);
-        if ( $Max == 0 )
-        {
-            return null;
-        }
-        $type=$this->get_type();
-        // for type ACH and Ven we take more info
-        if (  $type == 'ACH' ||          $type == 'VEN')
-        {
-            $a_ParmCode=$this->db->get_array('select p_code,p_value from 
parm_code');
-            $a_TVA=$this->db->get_array('select tva_id,tva_label,tva_poste
+               $Res = $this->db->exec_sql($sql);
+               $Max = Database::num_row($Res);
+               if ($Max == 0)
+               {
+                       return null;
+               }
+               $type = $this->get_type();
+               // for type ACH and Ven we take more info
+               if ($type == 'ACH' || $type == 'VEN')
+               {
+                       $a_ParmCode = $this->db->get_array('select 
p_code,p_value from parm_code');
+                       $a_TVA = $this->db->get_array('select 
tva_id,tva_label,tva_poste
                                         from tva_rate where tva_rate != 0 
order by tva_id');
-            for ( $i=0;$i<$Max;$i++)
-            {
-                $array[$i]=Database::fetch_array($Res,$i);
-                
$p=$this->get_detail($array[$i],$type,$trunc,$a_TVA,$a_ParmCode);
-                if ( $array[$i]['dep_priv'] != 0.0)
-                {
-                    $array[$i]['comment'].="(priv. 
".$array[$i]['dep_priv'].")";
-                }
-            }
+                       for ($i = 0; $i < $Max; $i++)
+                       {
+                               $array[$i] = Database::fetch_array($Res, $i);
+                               $p = $this->get_detail($array[$i], $type, 
$trunc, $a_TVA, $a_ParmCode);
+                               if ($array[$i]['dep_priv'] != 0.0)
+                               {
+                                       $array[$i]['comment'].="(priv. " . 
$array[$i]['dep_priv'] . ")";
+                               }
+                       }
+               }
+               else
+               {
+                       $array = Database::fetch_all($Res);
+               }
 
-        }
-        else
-        {
-            $array=Database::fetch_all($Res);
+               return $array;
+       }
 
-        }
+// end function get_rowSimple
 
-        return $array;
-    }// end function get_rowSimple
+       /* !\brief guess what  the next pj should be
+        */
 
-    /*!\brief guess what  the next pj should be
-     */
-    function guess_pj()
-    {
-        $prop=$this->get_propertie();
-        $pj_pref=$prop["jrn_def_pj_pref"];
-        $pj_seq=$this->get_last_pj()+1;
-        return $pj_pref.$pj_seq;
-    }
-/*!\brief Show all the operation
-     *\param $sql is the sql stmt, normally created by build_search_sql
-     *\param $offset the offset
-     *\param $p_paid if we want to see info about payment
-    \code
-    // Example
-    // Build the sql
-    list($sql,$where)=$Ledger->build_search_sql($_GET);
-    // Count nb of line
-    $max_line=$this->db->count_sql($sql);
+       function guess_pj()
+       {
+               $prop = $this->get_propertie();
+               $pj_pref = $prop["jrn_def_pj_pref"];
+               $pj_seq = $this->get_last_pj() + 1;
+               return $pj_pref . $pj_seq;
+       }
 
-    $step=$_SESSION['g_pagesize'];
-    $page=(isset($_GET['offset']))?$_GET['page']:1;
-    $offset=(isset($_GET['offset']))?$_GET['offset']:0;
-    // create the nav. bar
-    $bar=navigation_bar($offset,$max_line,$step,$page);
-    // show a part
-    list($count,$html)= $Ledger->list_operation($sql,$offset,0);
-    echo $html;
-    // show nav bar
-    echo $bar;
+       /* !\brief Show all the operation
+        * \param $sql is the sql stmt, normally created by build_search_sql
+        * \param $offset the offset
+        * \param $p_paid if we want to see info about payment
+         \code
+         // Example
+         // Build the sql
+         list($sql,$where)=$Ledger->build_search_sql($_GET);
+         // Count nb of line
+         $max_line=$this->db->count_sql($sql);
 
-    \endcode
-     *\see build_search_sql
-     *\see display_search_form
-     *\see search_form
+         $step=$_SESSION['g_pagesize'];
+         $page=(isset($_GET['offset']))?$_GET['page']:1;
+         $offset=(isset($_GET['offset']))?$_GET['offset']:0;
+         // create the nav. bar
+         $bar=navigation_bar($offset,$max_line,$step,$page);
+         // show a part
+         list($count,$html)= $Ledger->list_operation($sql,$offset,0);
+         echo $html;
+         // show nav bar
+         echo $bar;
 
-     *\return HTML string
-     */
-    public function list_operation_to_reconcile($sql)
-    {
-        global $g_parameter,$g_user;
-        $gDossier=dossier::id();
-        $limit=" LIMIT 25";
-        // Sort
+         \endcode
+        * \see build_search_sql
+        * \see display_search_form
+        * \see search_form
 
+        * \return HTML string
+        */
+
+       public function list_operation_to_reconcile($sql)
+       {
+               global $g_parameter, $g_user;
+               $gDossier = dossier::id();
+               $limit = " LIMIT 25";
+               // Sort
                // Count
-        $count=$this->db->count_sql($sql);
-        // Add the limit
-        $sql.=" order by jr_date asc ".$limit;
+               $count = $this->db->count_sql($sql);
+               // Add the limit
+               $sql.=" order by jr_date asc " . $limit;
 
-        // Execute SQL stmt
-        $Res=$this->db->exec_sql($sql);
+               // Execute SQL stmt
+               $Res = $this->db->exec_sql($sql);
 
-        //starting from here we can refactor, so that instead of returning the 
generated HTML,
-        //this function returns a tree structure.
+               //starting from here we can refactor, so that instead of 
returning the generated HTML,
+               //this function returns a tree structure.
 
-        $r="";
+               $r = "";
 
 
-        $Max=Database::num_row($Res);
+               $Max = Database::num_row($Res);
 
-        if ($Max==0) return array(0,_("Aucun enregistrement trouvé"));
+               if ($Max == 0)
+                       return array(0, _("Aucun enregistrement trouvé"));
 
-        $r.='<table class="result">';
+               $r.='<table class="result">';
 
 
-        $r.="<tr >";
-       $r.="<th>Selection</th>";
-        $r.="<th>Internal</th>";
+               $r.="<tr >";
+               $r.="<th>Selection</th>";
+               $r.="<th>Internal</th>";
 
-        if ( $this->type=='ALL')
-        {
-            $r.=th('Journal');
-        }
+               if ($this->type == 'ALL')
+               {
+                       $r.=th('Journal');
+               }
 
-        $r.='<th>Date</th>';
-        $r.='<th>Pièce</td>';
+               $r.='<th>Date</th>';
+               $r.='<th>Pièce</td>';
                $r.=th('tiers');
-        $r.='<th>Description</th>';
-               $r.=th('Notes',' style="width:15%"');
-        $r.='<th>Montant</th>';
-        $r.="<th>"._('Op. Concernée')."</th>";
-        $r.="</tr>";
-        // Total Amount
-        $tot=0.0;
-        $gDossier=dossier::id();
-               $str_dossier=Dossier::id();
-        for ($i=0; $i < $Max;$i++)
-        {
+               $r.='<th>Description</th>';
+               $r.=th('Notes', ' style="width:15%"');
+               $r.='<th>Montant</th>';
+               $r.="<th>" . _('Op. Concernée') . "</th>";
+               $r.="</tr>";
+               // Total Amount
+               $tot = 0.0;
+               $gDossier = dossier::id();
+               $str_dossier = Dossier::id();
+               for ($i = 0; $i < $Max; $i++)
+               {
 
 
-            $row=Database::fetch_array($Res,$i);
+                       $row = Database::fetch_array($Res, $i);
 
-            if ( $i % 2 == 0 ) $tr='<TR class="odd">';
-            else $tr='<TR class="even">';
-            $r.=$tr;
+                       if ($i % 2 == 0)
+                               $tr = '<TR class="odd">';
+                       else
+                               $tr = '<TR class="even">';
+                       $r.=$tr;
                        // Radiobox
                        //
 
-                       $r.='<td><INPUT TYPE="CHECKBOX" 
name="jr_concerned'.$row['jr_id'].'" ID="jr_concerned'.$row['jr_id'].'"> </td>';
-            //internal code
-            // button  modify
-            $r.="<TD>";
-            // If url contains
-            //
+                       $r.='<td><INPUT TYPE="CHECKBOX" name="jr_concerned' . 
$row['jr_id'] . '" ID="jr_concerned' . $row['jr_id'] . '"> </td>';
+                       //internal code
+                       // button  modify
+                       $r.="<TD>";
+                       // If url contains
+                       //
 
-            $href=basename($_SERVER['PHP_SELF']);
+            $href = basename($_SERVER['PHP_SELF']);
 
 
-            $r.=sprintf('<A class="detail" style="text-decoration:underline" 
HREF="javascript:modifyOperation(\'%s\',\'%s\')" >%s </A>',
-                        $row['jr_id'], $gDossier, $row['jr_internal']);
-            $r.="</TD>";
-            if ( $this->type=='ALL') $r.=td($row['jrn_def_name']);
-            // date
-            $r.="<TD>";
-            $r.=$row['str_jr_date'];
-            $r.="</TD>";
+                       $r.=sprintf('<A class="detail" 
style="text-decoration:underline" 
HREF="javascript:modifyOperation(\'%s\',\'%s\')" >%s </A>', $row['jr_id'], 
$gDossier, $row['jr_internal']);
+                       $r.="</TD>";
+                       if ($this->type == 'ALL')
+                               $r.=td($row['jrn_def_name']);
+                       // date
+                       $r.="<TD>";
+                       $r.=$row['str_jr_date'];
+                       $r.="</TD>";
 
-            // pj
-            $r.="<TD>";
-            $r.=$row['jr_pj_number'];
-            $r.="</TD>";
+                       // pj
+                       $r.="<TD>";
+                       $r.=$row['jr_pj_number'];
+                       $r.="</TD>";
 
-           // Tiers
-           $other=($row['quick_code']!='')?'['.$row['quick_code'].'] 
'.$row['name'].' '.$row['first_name']:'';
-           $r.=td($other);
-            // comment
-            $r.="<TD>";
-            $tmp_jr_comment=h($row['jr_comment']);
-            $r.=$tmp_jr_comment;
-            $r.="</TD>";
-           $r.=td(h($row['n_text']),' style="font-size:6"');
-            // Amount
-            // If the ledger is financial :
-            // the credit must be negative and written in red
-            $positive=0;
+                       // Tiers
+                       $other = ($row['quick_code'] != '') ? '[' . 
$row['quick_code'] . '] ' . $row['name'] . ' ' . $row['first_name'] : '';
+                       $r.=td($other);
+                       // comment
+                       $r.="<TD>";
+                       $tmp_jr_comment = h($row['jr_comment']);
+                       $r.=$tmp_jr_comment;
+                       $r.="</TD>";
+                       $r.=td(h($row['n_text']), ' style="font-size:6"');
+                       // Amount
+                       // If the ledger is financial :
+                       // the credit must be negative and written in red
+                       $positive = 0;
 
-            // Check ledger type :
-            if (  $row['jrn_def_type'] == 'FIN' )
-            {
-                $positive = $this->db->get_value("select qf_amount from 
quant_fin where jr_id=$1",
-                                                 array($row['jr_id']));
-               if ( $this->db->count() != 0)
-                 $positive=($positive < 0)?1:0;
-            }
-            $r.="<TD align=\"right\">";
+                       // Check ledger type :
+                       if ($row['jrn_def_type'] == 'FIN')
+                       {
+                               $positive = $this->db->get_value("select 
qf_amount from quant_fin where jr_id=$1", array($row['jr_id']));
+                               if ($this->db->count() != 0)
+                                       $positive = ($positive < 0) ? 1 : 0;
+                       }
+                       $r.="<TD align=\"right\">";
 
-            $r.=( $positive != 0 )?"<font color=\"red\">  - 
".nbm($row['jr_montant'])."</font>":nbm($row['jr_montant']);
-            $r.="</TD>";
+                       $r.=( $positive != 0 ) ? "<font color=\"red\">  - " . 
nbm($row['jr_montant']) . "</font>" : nbm($row['jr_montant']);
+                       $r.="</TD>";
 
 
 
-            // Rapprochement
-            $rec=new Acc_Reconciliation($this->db);
-            $rec->set_jr_id($row['jr_id']);
-            $a=$rec->get();
-            $r.="<TD>";
-            if ( $a != null )
-            {
+                       // Rapprochement
+                       $rec = new Acc_Reconciliation($this->db);
+                       $rec->set_jr_id($row['jr_id']);
+                       $a = $rec->get();
+                       $r.="<TD>";
+                       if ($a != null)
+                       {
 
-                foreach ($a as $key => $element)
-                {
-                    $operation=new Acc_Operation($this->db);
-                    $operation->jr_id=$element;
-                    $l_amount=$this->db->get_value("select jr_montant from jrn 
".
-                                                   " where jr_id=$element");
-                    $r.= "<A class=\"detail\" 
HREF=\"javascript:modifyOperation('".$element."',".$gDossier.")\" > 
".$operation->get_internal()."[".nbm($l_amount)."]</A>";
-                }//for
-            }// if ( $a != null ) {
-            $r.="</TD>";
+                               foreach ($a as $key => $element)
+                               {
+                                       $operation = new 
Acc_Operation($this->db);
+                                       $operation->jr_id = $element;
+                                       $l_amount = 
$this->db->get_value("select jr_montant from jrn " .
+                                                       " where 
jr_id=$element");
+                                       $r.= "<A class=\"detail\" 
HREF=\"javascript:modifyOperation('" . $element . "'," . $gDossier . ")\" > " . 
$operation->get_internal() . "[" . nbm($l_amount) . "]</A>";
+                               }//for
+                       }// if ( $a != null ) {
+                       $r.="</TD>";
 
-            if ( $row['jr_valid'] == 'f'  )
-            {
-                $r.="<TD> Op&eacute;ration annul&eacute;e</TD>";
-            }
-            // end row
-            $r.="</tr>";
+                       if ($row['jr_valid'] == 'f')
+                       {
+                               $r.="<TD> Op&eacute;ration annul&eacute;e</TD>";
+                       }
+                       // end row
+                       $r.="</tr>";
+               }
+               $r.='</table>';
+               return array($count, $r);
+       }
 
-        }
-       $r.='</table>';
-        return array ($count,$r);
-    }
-    /*!\brief Show all the operation
-     *\param $sql is the sql stmt, normally created by build_search_sql
-     *\param $offset the offset
-     *\param $p_paid if we want to see info about payment
-    \code
-    // Example
-    // Build the sql
-    list($sql,$where)=$Ledger->build_search_sql($_GET);
-    // Count nb of line
-    $max_line=$cn->count_sql($sql);
+       /* !\brief Show all the operation
+        * \param $sql is the sql stmt, normally created by build_search_sql
+        * \param $offset the offset
+        * \param $p_paid if we want to see info about payment
+         \code
+         // Example
+         // Build the sql
+         list($sql,$where)=$Ledger->build_search_sql($_GET);
+         // Count nb of line
+         $max_line=$cn->count_sql($sql);
 
-    $step=$_SESSION['g_pagesize'];
-    $page=(isset($_GET['offset']))?$_GET['page']:1;
-    $offset=(isset($_GET['offset']))?$_GET['offset']:0;
-    // create the nav. bar
-    $bar=navigation_bar($offset,$max_line,$step,$page);
-    // show a part
-    list($count,$html)= $Ledger->list_operation($sql,$offset,0);
-    echo $html;
-    // show nav bar
-    echo $bar;
+         $step=$_SESSION['g_pagesize'];
+         $page=(isset($_GET['offset']))?$_GET['page']:1;
+         $offset=(isset($_GET['offset']))?$_GET['offset']:0;
+         // create the nav. bar
+         $bar=navigation_bar($offset,$max_line,$step,$page);
+         // show a part
+         list($count,$html)= $Ledger->list_operation($sql,$offset,0);
+         echo $html;
+         // show nav bar
+         echo $bar;
 
-    \endcode
-     *\see build_search_sql
-     *\see display_search_form
-     *\see search_form
+         \endcode
+        * \see build_search_sql
+        * \see display_search_form
+        * \see search_form
 
-     *\return HTML string
-     */
-    public function list_operation($sql,$offset,$p_paid=0)
-    {
-        global $g_parameter,$g_user;
-               $table=new Sort_Table();
-        $gDossier=dossier::id();
-        $amount_paid=0.0;
-        $amount_unpaid=0.0;
-        $limit=($_SESSION['g_pagesize']!=-1)?" LIMIT 
".$_SESSION['g_pagesize']:"";
-        $offset=($_SESSION['g_pagesize']!=-1)?" OFFSET 
".Database::escape_string($offset):"";
-        $order="  order by jr_date_order asc,jr_internal asc";
-        // Sort
-        $url="?".CleanUrl();
-        $str_dossier=dossier::get();
-               $table->add("Date",$url, 'order by jr_date 
asc,substring(jr_pj_number,\'\\\d+$\')::numeric asc',
-                               'order by  jr_date 
desc,substring(jr_pj_number,\'\\\d+$\')::numeric desc', "da", "dd");
-               $table->add('Echeance',$url," order by  jr_ech asc"," order by  
jr_ech desc",'ea','ed');
-               $table->add('PJ',$url,' order by  
substring(jr_pj_number,\'\\\d+$\')::numeric asc ',
-                               ' order by  
substring(jr_pj_number,\'\\\d+$\')::numeric desc ' ,
-                               "pja","pjd");
-               $table->add('Tiers',$url," order by  name asc"," order by  name 
desc",'na','nd');
-               $table->add('Montant',$url," order by jr_montant asc"," order 
by jr_montant desc",
-                               "ma","md");
-               $table->add("Description",$url,"order by jr_comment asc",
-                               "order by jr_comment desc","ca","cd");
+        * \return HTML string
+        */
 
-               $ord= ( ! isset ($_GET['ord']))?'da':$_GET['ord'];
-               $order=$table->get_sql_order($ord);
+       public function list_operation($sql, $offset, $p_paid = 0)
+       {
+               global $g_parameter, $g_user;
+               $table = new Sort_Table();
+               $gDossier = dossier::id();
+               $amount_paid = 0.0;
+               $amount_unpaid = 0.0;
+               $limit = ($_SESSION['g_pagesize'] != -1) ? " LIMIT " . 
$_SESSION['g_pagesize'] : "";
+               $offset = ($_SESSION['g_pagesize'] != -1) ? " OFFSET " . 
Database::escape_string($offset) : "";
+               $order = "  order by jr_date_order asc,jr_internal asc";
+               // Sort
+               $url = "?" . CleanUrl();
+               $str_dossier = dossier::get();
+               $table->add("Date", $url, 'order by jr_date 
asc,substring(jr_pj_number,\'\\\d+$\')::numeric asc', 'order by  jr_date 
desc,substring(jr_pj_number,\'\\\d+$\')::numeric desc', "da", "dd");
+               $table->add('Echeance', $url, " order by  jr_ech asc", " order 
by  jr_ech desc", 'ea', 'ed');
+               $table->add('PJ', $url, ' order by  
substring(jr_pj_number,\'\\\d+$\')::numeric asc ', ' order by  
substring(jr_pj_number,\'\\\d+$\')::numeric desc ', "pja", "pjd");
+               $table->add('Tiers', $url, " order by  name asc", " order by  
name desc", 'na', 'nd');
+               $table->add('Montant', $url, " order by jr_montant asc", " 
order by jr_montant desc", "ma", "md");
+               $table->add("Description", $url, "order by jr_comment asc", 
"order by jr_comment desc", "ca", "cd");
 
+               $ord = (!isset($_GET['ord'])) ? 'da' : $_GET['ord'];
+               $order = $table->get_sql_order($ord);
+
                // Count
-        $count=$this->db->count_sql($sql);
-        // Add the limit
-        $sql.=$order.$limit.$offset;
-        // Execute SQL stmt
-        $Res=$this->db->exec_sql($sql);
+               $count = $this->db->count_sql($sql);
+               // Add the limit
+               $sql.=$order . $limit . $offset;
+               // Execute SQL stmt
+               $Res = $this->db->exec_sql($sql);
 
-        //starting from here we can refactor, so that instead of returning the 
generated HTML,
-        //this function returns a tree structure.
+               //starting from here we can refactor, so that instead of 
returning the generated HTML,
+               //this function returns a tree structure.
 
-        $r="";
+               $r = "";
 
 
-        $Max=Database::num_row($Res);
+               $Max = Database::num_row($Res);
 
-        if ($Max==0) return array(0,_("Aucun enregistrement trouvé"));
+               if ($Max == 0)
+                       return array(0, _("Aucun enregistrement trouvé"));
 
-        $r.='<table class="result">';
+               $r.='<table class="result">';
 
 
-        $r.="<tr >";
-        $r.="<th>Internal</th>";
-        if ( $this->type=='ALL')
-        {
-            $r.=th('Journal');
-        }
-        $r.='<th>'.$table->get_header(0).'</th>';
-        $r.='<th>'.$table->get_header(1).'</td>';
-        $r.='<th>'.$table->get_header(2).'</th>';
-        $r.='<th>'.$table->get_header(3).'</th>';
-        $r.='<th>'.$table->get_header(5).'</th>';
-       $r.=th('Notes',' style="width:15%"');
-        $r.='<th>'.$table->get_header(4).'</th>';
-        // if $p_paid is not equal to 0 then we have a paid column
-        if ( $p_paid != 0 )
-        {
-            $r.="<th> "._('Payé')."</th>";
-        }
-        $r.="<th>"._('Op. Concernée')."</th>";
-        $r.="<th>"._('Document')."</th>";
-        $r.="</tr>";
-        // Total Amount
-        $tot=0.0;
-        $gDossier=dossier::id();
-        for ($i=0; $i < $Max;$i++)
-        {
+               $r.="<tr >";
+               $r.="<th>Internal</th>";
+               if ($this->type == 'ALL')
+               {
+                       $r.=th('Journal');
+               }
+               $r.='<th>' . $table->get_header(0) . '</th>';
+               $r.='<th>' . $table->get_header(1) . '</td>';
+               $r.='<th>' . $table->get_header(2) . '</th>';
+               $r.='<th>' . $table->get_header(3) . '</th>';
+               $r.='<th>' . $table->get_header(5) . '</th>';
+               $r.=th('Notes', ' style="width:15%"');
+               $r.='<th>' . $table->get_header(4) . '</th>';
+               // if $p_paid is not equal to 0 then we have a paid column
+               if ($p_paid != 0)
+               {
+                       $r.="<th> " . _('Payé') . "</th>";
+               }
+               $r.="<th>" . _('Op. Concernée') . "</th>";
+               $r.="<th>" . _('Document') . "</th>";
+               $r.="</tr>";
+               // Total Amount
+               $tot = 0.0;
+               $gDossier = dossier::id();
+               for ($i = 0; $i < $Max; $i++)
+               {
 
 
-            $row=Database::fetch_array($Res,$i);
+                       $row = Database::fetch_array($Res, $i);
 
-            if ( $i % 2 == 0 ) $tr='<TR class="odd">';
-            else $tr='<TR class="even">';
-            $r.=$tr;
-            //internal code
-            // button  modify
-            $r.="<TD>";
-            // If url contains
-            //
+                       if ($i % 2 == 0)
+                               $tr = '<TR class="odd">';
+                       else
+                               $tr = '<TR class="even">';
+                       $r.=$tr;
+                       //internal code
+                       // button  modify
+                       $r.="<TD>";
+                       // If url contains
+                       //
 
-            $href=basename($_SERVER['PHP_SELF']);
+            $href = basename($_SERVER['PHP_SELF']);
 
 
-            $r.=sprintf('<A class="detail" style="text-decoration:underline" 
HREF="javascript:modifyOperation(\'%s\',\'%s\')" >%s </A>',
-                        $row['jr_id'], $gDossier, $row['jr_internal']);
-            $r.="</TD>";
-            if ( $this->type=='ALL') $r.=td($row['jrn_def_name']);
-            // date
-            $r.="<TD>";
-            $r.=smaller_date($row['str_jr_date']);
-            $r.="</TD>";
-            // echeance
-            $r.="<TD>";
-            $r.=smaller_date($row['str_jr_ech']);
-            $r.="</TD>";
+                       $r.=sprintf('<A class="detail" 
style="text-decoration:underline" 
HREF="javascript:modifyOperation(\'%s\',\'%s\')" >%s </A>', $row['jr_id'], 
$gDossier, $row['jr_internal']);
+                       $r.="</TD>";
+                       if ($this->type == 'ALL')
+                               $r.=td($row['jrn_def_name']);
+                       // date
+                       $r.="<TD>";
+                       $r.=smaller_date($row['str_jr_date']);
+                       $r.="</TD>";
+                       // echeance
+                       $r.="<TD>";
+                       $r.=smaller_date($row['str_jr_ech']);
+                       $r.="</TD>";
 
-            // pj
-            $r.="<TD>";
-            $r.=$row['jr_pj_number'];
-            $r.="</TD>";
+                       // pj
+                       $r.="<TD>";
+                       $r.=$row['jr_pj_number'];
+                       $r.="</TD>";
 
-           // Tiers
-           $other=($row['quick_code']!='')?'['.$row['quick_code'].'] 
'.$row['name'].' '.$row['first_name']:'';
-           $r.=td($other);
-            // comment
-            $r.="<TD>";
-            $tmp_jr_comment=h($row['jr_comment']);
-            $r.=$tmp_jr_comment;
-            $r.="</TD>";
-           $r.=td(h($row['n_text']),' style="font-size:6"');
-            // Amount
-            // If the ledger is financial :
-            // the credit must be negative and written in red
-            $positive=0;
+                       // Tiers
+                       $other = ($row['quick_code'] != '') ? '[' . 
$row['quick_code'] . '] ' . $row['name'] . ' ' . $row['first_name'] : '';
+                       $r.=td($other);
+                       // comment
+                       $r.="<TD>";
+                       $tmp_jr_comment = h($row['jr_comment']);
+                       $r.=$tmp_jr_comment;
+                       $r.="</TD>";
+                       $r.=td(h($row['n_text']), ' style="font-size:6"');
+                       // Amount
+                       // If the ledger is financial :
+                       // the credit must be negative and written in red
+                       $positive = 0;
 
-            // Check ledger type :
-            if (  $row['jrn_def_type'] == 'FIN' )
-            {
-                $positive = $this->db->get_value("select qf_amount from 
quant_fin where jr_id=$1",
-                                                 array($row['jr_id']));
-               if ( $this->db->count() != 0)
-                 $positive=($positive < 0)?1:0;
-            }
-            $r.="<TD align=\"right\">";
+                       // Check ledger type :
+                       if ($row['jrn_def_type'] == 'FIN')
+                       {
+                               $positive = $this->db->get_value("select 
qf_amount from quant_fin where jr_id=$1", array($row['jr_id']));
+                               if ($this->db->count() != 0)
+                                       $positive = ($positive < 0) ? 1 : 0;
+                       }
+                       $r.="<TD align=\"right\">";
 
-            $tot=($positive != 
0)?$tot-$row['jr_montant']:$tot+$row['jr_montant'];
-            //STAN $positive always == 0
-            $r.=( $positive != 0 )?"<font color=\"red\">  - 
".nbm($row['jr_montant'])."</font>":nbm($row['jr_montant']);
-            $r.="</TD>";
+                       $tot = ($positive != 0) ? $tot - $row['jr_montant'] : 
$tot + $row['jr_montant'];
+                       //STAN $positive always == 0
+                       $r.=( $positive != 0 ) ? "<font color=\"red\">  - " . 
nbm($row['jr_montant']) . "</font>" : nbm($row['jr_montant']);
+                       $r.="</TD>";
 
 
-            // Show the paid column if p_paid is not null
-            if ( $p_paid !=0 )
-            {
-                $w=new ICheckBox();
-                $w->name="rd_paid".$row['jr_id'];
-                $w->selected=($row['jr_rapt']=='paid')?true:false;
-                // if p_paid == 2 then readonly
-                $w->readonly=( $p_paid == 2)?true:false;
-                $h=new IHidden();
-                $h->name="set_jr_id".$row['jr_id'];
-                $r.='<TD>'.$w->input().$h->input().'</TD>';
-                if ( $row['jr_rapt']=='paid')
-                    $amount_paid+=$row['jr_montant'];
-                else
-                    $amount_unpaid+=$row['jr_montant'];
-            }
+                       // Show the paid column if p_paid is not null
+                       if ($p_paid != 0)
+                       {
+                               $w = new ICheckBox();
+                               $w->name = "rd_paid" . $row['jr_id'];
+                               $w->selected = ($row['jr_rapt'] == 'paid') ? 
true : false;
+                               // if p_paid == 2 then readonly
+                               $w->readonly = ( $p_paid == 2) ? true : false;
+                               $h = new IHidden();
+                               $h->name = "set_jr_id" . $row['jr_id'];
+                               $r.='<TD>' . $w->input() . $h->input() . 
'</TD>';
+                               if ($row['jr_rapt'] == 'paid')
+                                       $amount_paid+=$row['jr_montant'];
+                               else
+                                       $amount_unpaid+=$row['jr_montant'];
+                       }
 
-            // Rapprochement
-            $rec=new Acc_Reconciliation($this->db);
-            $rec->set_jr_id($row['jr_id']);
-            $a=$rec->get();
-            $r.="<TD>";
-            if ( $a != null )
-            {
+                       // Rapprochement
+                       $rec = new Acc_Reconciliation($this->db);
+                       $rec->set_jr_id($row['jr_id']);
+                       $a = $rec->get();
+                       $r.="<TD>";
+                       if ($a != null)
+                       {
 
-                foreach ($a as $key => $element)
-                {
-                    $operation=new Acc_Operation($this->db);
-                    $operation->jr_id=$element;
-                    $l_amount=$this->db->get_value("select jr_montant from jrn 
".
-                                                   " where jr_id=$element");
-                    $r.= "<A class=\"detail\" 
HREF=\"javascript:modifyOperation('".$element."',".$gDossier.")\" > 
".$operation->get_internal()."[".nbm($l_amount)."]</A>";
-                }//for
-            }// if ( $a != null ) {
-            $r.="</TD>";
+                               foreach ($a as $key => $element)
+                               {
+                                       $operation = new 
Acc_Operation($this->db);
+                                       $operation->jr_id = $element;
+                                       $l_amount = 
$this->db->get_value("select jr_montant from jrn " .
+                                                       " where 
jr_id=$element");
+                                       $r.= "<A class=\"detail\" 
HREF=\"javascript:modifyOperation('" . $element . "'," . $gDossier . ")\" > " . 
$operation->get_internal() . "[" . nbm($l_amount) . "]</A>";
+                               }//for
+                       }// if ( $a != null ) {
+                       $r.="</TD>";
 
-            if ( $row['jr_valid'] == 'f'  )
-            {
-                $r.="<TD> Op&eacute;ration annul&eacute;e</TD>";
-            }
-            else
-            {} // else
-            //document
-            if ( $row['jr_pj_name'] != "")
-            {
-                $image='<IMG SRC="image/insert_table.gif" 
title="'.$row['jr_pj_name'].'" border="0">';
-                $r.="<TD>".sprintf('<A class="detail" 
HREF="show_pj.php?jrn=%s&jr_grpt_id=%s&%s">%s</A>',
-                                   $row['jrn_def_id'],
-                                   $row['jr_grpt_id'],
-                                   $str_dossier,
-                                   $image)
-                    ."</TD>";
-            }
-            else
-                $r.="<TD></TD>";
+                       if ($row['jr_valid'] == 'f')
+                       {
+                               $r.="<TD> Op&eacute;ration annul&eacute;e</TD>";
+                       }
+                       else
+                       {
 
-            // end row
-            $r.="</tr>";
+                       } // else
+                       //document
+                       if ($row['jr_pj_name'] != "")
+                       {
+                               $image = '<IMG SRC="image/insert_table.gif" 
title="' . $row['jr_pj_name'] . '" border="0">';
+                               $r.="<TD>" . sprintf('<A class="detail" 
HREF="show_pj.php?jrn=%s&jr_grpt_id=%s&%s">%s</A>', $row['jrn_def_id'], 
$row['jr_grpt_id'], $str_dossier, $image)
+                                               . "</TD>";
+                       }
+                       else
+                               $r.="<TD></TD>";
 
-        }
-        $amount_paid=round($amount_paid,4);
-        $amount_unpaid=round($amount_unpaid,4);
-        $tot=round($tot,4);
-        $r.="<TR>";
-        $r.='<TD COLSPAN="5">Total</TD>';
-        $r.='<TD ALIGN="RIGHT">'.nbm($tot)."</TD>";
-        $r.="</tr>";
-        if ( $p_paid != 0 )
-        {
-            $r.="<TR>";
-            $r.='<TD COLSPAN="5">Pay&eacute;</TD>';
-            $r.='<TD ALIGN="RIGHT">'.nbm($amount_paid)."</TD>";
-            $r.="</tr>";
-            $r.="<TR>";
-            $r.='<TD COLSPAN="5">Non pay&eacute;</TD>';
-            $r.='<TD ALIGN="RIGHT">'.nbm($amount_unpaid)."</TD>";
-            $r.="</tr>";
-        }
-        $r.="</table>";
+                       // end row
+                       $r.="</tr>";
+               }
+               $amount_paid = round($amount_paid, 4);
+               $amount_unpaid = round($amount_unpaid, 4);
+               $tot = round($tot, 4);
+               $r.="<TR>";
+               $r.='<TD COLSPAN="5">Total</TD>';
+               $r.='<TD ALIGN="RIGHT">' . nbm($tot) . "</TD>";
+               $r.="</tr>";
+               if ($p_paid != 0)
+               {
+                       $r.="<TR>";
+                       $r.='<TD COLSPAN="5">Pay&eacute;</TD>';
+                       $r.='<TD ALIGN="RIGHT">' . nbm($amount_paid) . "</TD>";
+                       $r.="</tr>";
+                       $r.="<TR>";
+                       $r.='<TD COLSPAN="5">Non pay&eacute;</TD>';
+                       $r.='<TD ALIGN="RIGHT">' . nbm($amount_unpaid) . 
"</TD>";
+                       $r.="</tr>";
+               }
+               $r.="</table>";
 
-        return array ($count,$r);
-    }
+               return array($count, $r);
+       }
 
-    /*!
-     * \brief get_detail gives the detail of row
-     * this array must contains at least the field
-     *       <ul>
-     *       <li> montant</li>
-     *       <li> grpt_id
-     *       </ul>
-     * the following field will be added
-     *       <ul>
-     *       <li> HTVA
-     *       <li> TVAC
-     *       <li> TVA array with
-     *          <ul>
-     *          <li> field 0 idx
-     *          <li> array containing tva_id,tva_label and tva_amount
-     *          </ul>
-     *       </ul>
-     *
-     * \param p_array the structure is set in get_rowSimple, this array is
-     *        modified,
-     * \param $trunc if the data must be truncated, usefull for pdf export
-     * \param p_jrn_type is the type of the ledger (ACH or VEN)
-     * \param $a_TVA TVA Array (default null)
-     * \param $a_ParmCode Array (default null)
-     * \return p_array
-     */
-    function 
get_detail(&$p_array,$p_jrn_type,$trunc=0,$a_TVA=null,$a_ParmCode=null)
-    {
-        if ( $a_TVA == null )
-        {
-            //Load TVA array
-            $a_TVA=$this->db->get_array('select tva_id,tva_label,tva_poste
+       /* !
+        * \brief get_detail gives the detail of row
+        * this array must contains at least the field
+        *       <ul>
+        *       <li> montant</li>
+        *       <li> grpt_id
+        *       </ul>
+        * the following field will be added
+        *       <ul>
+        *       <li> HTVA
+        *       <li> TVAC
+        *       <li> TVA array with
+        *          <ul>
+        *          <li> field 0 idx
+        *          <li> array containing tva_id,tva_label and tva_amount
+        *          </ul>
+        *       </ul>
+        *
+        * \param p_array the structure is set in get_rowSimple, this array is
+        *        modified,
+        * \param $trunc if the data must be truncated, usefull for pdf export
+        * \param p_jrn_type is the type of the ledger (ACH or VEN)
+        * \param $a_TVA TVA Array (default null)
+        * \param $a_ParmCode Array (default null)
+        * \return p_array
+        */
+
+       function get_detail(&$p_array, $p_jrn_type, $trunc = 0, $a_TVA = null, 
$a_ParmCode = null)
+       {
+               if ($a_TVA == null)
+               {
+                       //Load TVA array
+                       $a_TVA = $this->db->get_array('select 
tva_id,tva_label,tva_poste
                                         from tva_rate where tva_rate != 0 
order by tva_id');
-        }
-        if ( $a_ParmCode == null )
-        {
-            //Load Parm_code
-            $a_ParmCode=$this->db->get_array('select p_code,p_value from 
parm_code');
-        }
-        // init
-        $p_array['client']="";
-        $p_array['TVAC']=0;
-        $p_array['TVA']=array();
-        $p_array['AMOUNT_TVA']=0.0;
-        $p_array['dep_priv']=0;
-        $dep_priv=0.0;
-        //
-        // Retrieve data from jrnx
-        $sql="select j_id,j_poste,j_montant, j_debit,j_qcode from jrnx where ".
-             " j_grpt=".$p_array['grpt_id'];
-        $Res2=$this->db->exec_sql($sql);
-        $data_jrnx=Database::fetch_all($Res2);
-        $c=0;
+               }
+               if ($a_ParmCode == null)
+               {
+                       //Load Parm_code
+                       $a_ParmCode = $this->db->get_array('select 
p_code,p_value from parm_code');
+               }
+               // init
+               $p_array['client'] = "";
+               $p_array['TVAC'] = 0;
+               $p_array['TVA'] = array();
+               $p_array['AMOUNT_TVA'] = 0.0;
+               $p_array['dep_priv'] = 0;
+               $dep_priv = 0.0;
+               //
+               // Retrieve data from jrnx
+               $sql = "select j_id,j_poste,j_montant, j_debit,j_qcode from 
jrnx where " .
+                               " j_grpt=" . $p_array['grpt_id'];
+               $Res2 = $this->db->exec_sql($sql);
+               $data_jrnx = Database::fetch_all($Res2);
+               $c = 0;
 
-        // Parse data from jrnx and fill diff. field
-        foreach ( $data_jrnx as $code )
-        {
-            $idx_tva=0;
-            $poste=new Acc_Account_Ledger($this->db,$code['j_poste']);
+               // Parse data from jrnx and fill diff. field
+               foreach ($data_jrnx as $code)
+               {
+                       $idx_tva = 0;
+                       $poste = new Acc_Account_Ledger($this->db, 
$code['j_poste']);
 
-            // if card retrieve name if the account is not a VAT account
-            if ( strlen(trim($code['j_qcode'] )) != 0 && $poste->isTva() == 0 )
-            {
-                $fiche=new Fiche($this->db);
-                $fiche->get_by_qcode(trim($code['j_qcode']),false);
-                $fiche_def_id=$fiche->get_fiche_def_ref_id();
-                // Customer or supplier
-                if ( $fiche_def_id == FICHE_TYPE_CLIENT ||
-                        $fiche_def_id == FICHE_TYPE_FOURNISSEUR )
-                {
-                    $p_array['TVAC']=$code['j_montant'];
+                       // if card retrieve name if the account is not a VAT 
account
+                       if (strlen(trim($code['j_qcode'])) != 0 && 
$poste->isTva() == 0)
+                       {
+                               $fiche = new Fiche($this->db);
+                               $fiche->get_by_qcode(trim($code['j_qcode']), 
false);
+                               $fiche_def_id = $fiche->get_fiche_def_ref_id();
+                               // Customer or supplier
+                               if ($fiche_def_id == FICHE_TYPE_CLIENT ||
+                                               $fiche_def_id == 
FICHE_TYPE_FOURNISSEUR)
+                               {
+                                       $p_array['TVAC'] = $code['j_montant'];
 
-                    
$p_array['client']=($trunc==0)?$fiche->getName():mb_substr($fiche->getName(),0,20);
-                    $p_array['reversed']=false;
-                    if (       $fiche_def_id == FICHE_TYPE_CLIENT && 
$code['j_debit']=='f')
-                    {
-                        $p_array['reversed']=true;
-                        $p_array['TVAC']*=-1;
+                                       $p_array['client'] = ($trunc == 0) ? 
$fiche->getName() : mb_substr($fiche->getName(), 0, 20);
+                                       $p_array['reversed'] = false;
+                                       if ($fiche_def_id == FICHE_TYPE_CLIENT 
&& $code['j_debit'] == 'f')
+                                       {
+                                               $p_array['reversed'] = true;
+                                               $p_array['TVAC']*=-1;
+                                       }
+                                       if ($fiche_def_id == 
FICHE_TYPE_FOURNISSEUR && $code['j_debit'] == 't')
+                                       {
+                                               $p_array['reversed'] = true;
+                                               $p_array['TVAC']*=-1;
+                                       }
+                               }
+                               else
+                               {
+                                       // if we use the ledger ven / ach for 
others card than supplier and customer
+                                       if ($fiche_def_id != FICHE_TYPE_VENTE &&
+                                                       $fiche_def_id != 
FICHE_TYPE_ACH_MAR &&
+                                                       $fiche_def_id != 
FICHE_TYPE_ACH_SER)
+                                       {
+                                               $p_array['TVAC'] = 
$code['j_montant'];
 
-                    }
-                    if (       $fiche_def_id == FICHE_TYPE_FOURNISSEUR && 
$code['j_debit']=='t')
-                    {
-                        $p_array['reversed']=true;
-                        $p_array['TVAC']*=-1;
-                    }
+                                               $p_array['client'] = ($trunc == 
0) ? $fiche->getName() : mb_substr($fiche->getName(), 0, 20);
+                                               $p_array['reversed'] = false;
+                                               if ($p_jrn_type == 'ACH' && 
$code['j_debit'] == 't')
+                                               {
+                                                       $p_array['reversed'] = 
true;
+                                                       $p_array['TVAC']*=-1;
+                                               }
+                                               if ($p_jrn_type == 'VEN' && 
$code['j_debit'] == 'f')
+                                               {
+                                                       $p_array['reversed'] = 
true;
+                                                       $p_array['TVAC']*=-1;
+                                               }
+                                       }
+                               }
+                       }
+                       // if TVA, load amount, tva id and rate in array
+                       foreach ($a_TVA as $line_tva)
+                       {
+                               list($tva_deb, $tva_cred) = explode(',', 
$line_tva['tva_poste']);
+                               if ($code['j_poste'] == $tva_deb ||
+                                               $code['j_poste'] == $tva_cred)
+                               {
 
+                                       // For the reversed operation
+                                       if ($p_jrn_type == 'ACH' && 
$code['j_debit'] == 'f')
+                                       {
+                                               $code['j_montant'] = -1 * 
$code['j_montant'];
+                                       }
+                                       if ($p_jrn_type == 'VEN' && 
$code['j_debit'] == 't')
+                                       {
+                                               $code['j_montant'] = -1 * 
$code['j_montant'];
+                                       }
 
-                }
-                else
-                {
-                    // if we use the ledger ven / ach for others card than 
supplier and customer
-                    if ( $fiche_def_id != FICHE_TYPE_VENTE &&
-                            $fiche_def_id != FICHE_TYPE_ACH_MAR &&
-                            $fiche_def_id != FICHE_TYPE_ACH_SER )
-                    {
-                        $p_array['TVAC']=$code['j_montant'];
+                                       
$p_array['AMOUNT_TVA']+=$code['j_montant'];
 
-                        $p_array['client']=    
($trunc==0)?$fiche->getName():mb_substr($fiche->getName(),0,20);
-                        $p_array['reversed']=false;
-                        if ($p_jrn_type == 'ACH' && $code['j_debit']=='t')
-                        {
-                            $p_array['reversed']=true;
-                            $p_array['TVAC']*=-1;
+                                       $p_array['TVA'][$c] = array($idx_tva, 
array($line_tva['tva_id'], $line_tva['tva_label'], $code['j_montant']));
+                                       $c++;
 
-                        }
-                        if ($p_jrn_type == 'VEN'  && $code['j_debit']=='f')
-                        {
-                            $p_array['reversed']=true;
-                            $p_array['TVAC']*=-1;
-                        }
+                                       $idx_tva++;
+                               }
+                       }
 
+                       // isDNA
+                       // If operation is reversed then  amount are negatif
+                       /* if ND */
+                       if ($p_array['jrn_def_type'] == 'ACH')
+                       {
+                               $purchase = new Gestion_Purchase($this->db);
+                               $purchase->search_by_jid($code['j_id']);
+                               $purchase->load();
+                               $dep_priv+=$purchase->qp_dep_priv;
+                               $p_array['dep_priv'] = $dep_priv;
+                       }
+               }
+               $p_array['TVAC'] = sprintf('% 10.2f', $p_array['TVAC'] - 
$dep_priv);
+               $p_array['HTVA'] = sprintf('% 10.2f', $p_array['TVAC'] - 
$p_array['AMOUNT_TVA']);
+               $r = "";
+               $a_tva_amount = array();
+               // inline TVA (used for the PDF)
+               foreach ($p_array['TVA'] as $linetva)
+               {
+                       foreach ($a_TVA as $tva)
+                       {
+                               if ($tva['tva_id'] == $linetva[1][0])
+                               {
+                                       $a = $tva['tva_id'];
+                                       $a_tva_amount[$a] = $linetva[1][2];
+                               }
+                       }
+               }
+               foreach ($a_TVA as $line_tva)
+               {
+                       $a = $line_tva['tva_id'];
+                       if (isset($a_tva_amount[$a]))
+                       {
+                               $tmp = sprintf("% 10.2f", $a_tva_amount[$a]);
+                               $r.="$tmp";
+                       }
+                       else
+                               $r.=sprintf("% 10.2f", 0);
+               }
+               $p_array['TVA_INLINE'] = $r;
 
+               return $p_array;
+       }
 
+// retrieve data from jrnx
+       /* !
+        * \brief  Get the properties of a journal
+        *
+        * \return an array containing properties
+        *
+        */
 
-                    }
-                }
-            }
-            // if TVA, load amount, tva id and rate in array
-            foreach ( $a_TVA as $line_tva)
-            {
-                list($tva_deb,$tva_cred)=explode(',',$line_tva['tva_poste']);
-                if ( $code['j_poste'] == $tva_deb ||
-                        $code['j_poste'] == $tva_cred )
-                {
+       function get_propertie()
+       {
+               if ($this->id == 0)
+                       return;
 
-                    // For the reversed operation
-                    if ( $p_jrn_type == 'ACH' && $code['j_debit'] == 'f')
-                    {
-                        $code['j_montant']=-1*$code['j_montant'];
-                    }
-                    if ( $p_jrn_type == 'VEN' && $code['j_debit'] == 't')
-                    {
-                        $code['j_montant']=-1*$code['j_montant'];
-                    }
+               $Res = $this->db->exec_sql("select 
jrn_Def_id,jrn_def_name,jrn_def_class_deb,jrn_def_class_cred,jrn_def_type,
+                                 
jrn_deb_max_line,jrn_cred_max_line,jrn_def_ech,jrn_def_ech_lib,jrn_def_code,
+                                 
jrn_def_fiche_deb,jrn_def_fiche_cred,jrn_def_pj_pref
+                                 from jrn_Def
+                                 where jrn_def_id=$1", array($this->id));
+               $Count = Database::num_row($Res);
+               if ($Count == 0)
+               {
+                       echo '<DIV="redcontent"><H2 class="error">' . 
_('Parametres journaux non trouves') . '</H2> </DIV>';
+                       return null;
+               }
+               return Database::fetch_array($Res, 0);
+       }
 
-                    $p_array['AMOUNT_TVA']+=$code['j_montant'];
+       /* ! \function GetDefLine
+        * \brief Get the number of lines of a journal
+        * \param $p_cred deb or cred
+        *
+        * \return an integer
+        */
 
-                    
$p_array['TVA'][$c]=array($idx_tva,array($line_tva['tva_id'],$line_tva['tva_label'],$code['j_montant']));
-                    $c++;
+       function GetDefLine()
+       {
+               $sql_cred = 'jrn_deb_max_line';
+               $sql = "select jrn_deb_max_line as value from jrn_def where 
jrn_def_id=$1";
+               $r = $this->db->exec_sql($sql, array($this->id));
+               $Res = Database::fetch_all($r);
+               if (sizeof($Res) == 0)
+                       return 1;
+               return $Res[0]['value'];
+       }
 
-                    $idx_tva++;
-                }
-            }
+       /* !\brief get the saldo of a ledger for a specific period
+        * \param $p_from start period
+        * \param $p_to end period
+        */
 
-            // isDNA
-            // If operation is reversed then  amount are negatif
-            /* if ND */
-            if ( $p_array['jrn_def_type'] == 'ACH')
-            {
-                $purchase=new Gestion_Purchase($this->db);
-                $purchase->search_by_jid($code['j_id']);
-                $purchase->load();
-                $dep_priv+=$purchase->qp_dep_priv;
-                $p_array['dep_priv']=$dep_priv;
-            }
+       function get_solde($p_from, $p_to)
+       {
+               $ledger = "";
+               if ($this->id != 0)
+               {
+                       $ledger = " and j_jrn_def = " . $this->id;
+               }
 
-        }
-        $p_array['TVAC']=sprintf('% 10.2f',$p_array['TVAC']-$dep_priv);
-        $p_array['HTVA']=sprintf('% 
10.2f',$p_array['TVAC']-$p_array['AMOUNT_TVA']);
-        $r="";
-        $a_tva_amount=array();
-        // inline TVA (used for the PDF)
-        foreach ($p_array['TVA'] as $linetva)
-        {
-            foreach ($a_TVA as $tva)
-            {
-                if ( $tva['tva_id'] == $linetva[1][0] )
-                {
-                    $a=$tva['tva_id'];
-                    $a_tva_amount[$a]=$linetva[1][2];
-                }
-            }
-        }
-        foreach ($a_TVA as $line_tva)
-        {
-            $a=$line_tva['tva_id'];
-            if ( isset($a_tva_amount[$a]))
-            {
-                $tmp=sprintf("% 10.2f",$a_tva_amount[$a]);
-                $r.="$tmp";
-            }
-            else
-                $r.=sprintf("% 10.2f",0);
-        }
-        $p_array['TVA_INLINE']=$r;
+               $periode = sql_filter_per($this->db, $p_from, $p_to, 'p_id', 
'j_tech_per');
+               $sql = 'select j_montant as montant,j_debit as deb from jrnx 
where '
+                               . $periode . $ledger;
 
-        return $p_array;
-    }  // retrieve data from jrnx
-    /*!
-     * \brief  Get the properties of a journal
-     *
-     * \return an array containing properties
-     *
-     */
-    function get_propertie()
-    {
-        if ( $this->id == 0 ) return;
+               $ret = $this->db->exec_sql($sql);
+               $array = Database::fetch_all($ret);
+               $deb = 0.0;
+               $cred = 0.0;
+               foreach ($array as $line)
+               {
 
-        $Res=$this->db->exec_sql("select 
jrn_Def_id,jrn_def_name,jrn_def_class_deb,jrn_def_class_cred,jrn_def_type,
-                                 
jrn_deb_max_line,jrn_cred_max_line,jrn_def_ech,jrn_def_ech_lib,jrn_def_code,
-                                 
jrn_def_fiche_deb,jrn_def_fiche_cred,jrn_def_pj_pref
-                                 from jrn_Def
-                                 where jrn_def_id=$1",array($this->id));
-        $Count=Database::num_row($Res);
-        if ( $Count == 0 )
-        {
-            echo '<DIV="redcontent"><H2 class="error">'._('Parametres journaux 
non trouves').'</H2> </DIV>';
-            return null;
-        }
-        return Database::fetch_array($Res,0);
-    }
+                       if ($line['deb'] == 't')
+                               $deb+=$line['montant'];
+                       else
+                               $cred+=$line['montant'];
+               }
+               $response = array($deb, $cred);
+               return $response;
+       }
 
-    /*! \function GetDefLine
-     * \brief Get the number of lines of a journal
-     * \param $p_cred deb or cred
-     *
-     * \return an integer
-     */
-    function GetDefLine()
-    {
-        $sql_cred='jrn_deb_max_line';
-        $sql="select jrn_deb_max_line as value from jrn_def where 
jrn_def_id=$1";
-        $r=$this->db->exec_sql($sql,array($this->id));
-        $Res=Database::fetch_all($r);
-        if ( sizeof($Res) == 0 ) return 1;
-        return $Res[0]['value'];
-    }
-    /*!\brief get the saldo of a ledger for a specific period
-     * \param $p_from start period
-     * \param $p_to end period
-     */
-    function get_solde($p_from,$p_to)
-    {
-        $ledger="";
-        if ( $this->id != 0 )
-        {
-            $ledger=" and j_jrn_def = ".$this->id;
-        }
+       /* !
+        * \brief Show a select list   of the ledgers you can access in
+        * writing, reading or simply accessing.
+        * \param $p_type = ALL or the type of the ledger (ACH,VEN,FIN,ODS)
+        * \param $p_access =3 for READ and WRITE, 2 for write and 1 for 
readonly
+        * \return     object HtmlInput select
+        */
 
-        $periode=sql_filter_per($this->db,$p_from,$p_to,'p_id','j_tech_per');
-        $sql='select j_montant as montant,j_debit as deb from jrnx where '
-             .$periode.$ledger;
+       function select_ledger($p_type = "ALL", $p_access = 3)
+       {
+               global $g_user;
+               $array = $g_user->get_ledger($p_type, $p_access);
 
-        $ret=$this->db->exec_sql($sql);
-        $array=Database::fetch_all($ret);
-        $deb=0.0;
-        $cred=0.0;
-        foreach ($array as $line)
-        {
+               if ($array == null)
+                       return null;
+               $idx = 0;
+               $ret = array();
 
-            if ( $line['deb']=='t' )
-                $deb+=$line['montant'];
-            else
-                $cred+=$line['montant'];
-        }
-        $response=array($deb,$cred);
-        return $response;
-    }
-    /*!
-     * \brief Show a select list   of the ledgers you can access in
-     * writing, reading or simply accessing.
-     * \param $p_type = ALL or the type of the ledger (ACH,VEN,FIN,ODS)
-     * \param $p_access =3 for READ and WRITE, 2 for write and 1 for readonly
-     * \return     object HtmlInput select
-     */
-    function select_ledger($p_type="ALL",$p_access=3)
-    {
-        global $g_user;
-        $array=$g_user->get_ledger($p_type,$p_access);
+               foreach ($array as $value)
+               {
+                       $ret[$idx]['value'] = $value['jrn_def_id'];
+                       $ret[$idx]['label'] = h($value['jrn_def_name']);
+                       $idx++;
+               }
 
-        if ( $array == null ) return null;
-        $idx=0;
-        $ret=array();
+               $select = new ISelect();
+               $select->name = 'p_jrn';
+               $select->value = $ret;
+               $select->selected = $this->id;
+               return $select;
+       }
 
-        foreach ( $array as $value)
-        {
-            $ret[$idx]['value']=$value['jrn_def_id'];
-            $ret[$idx]['label']=h($value['jrn_def_name']);
-            $idx++;
-        }
+       /* !
+        * \brief retrieve the jrn_def_fiche and return them into a array
+        *        index deb, cred
+        * \param
+        * \param
+        * \param
+        *
+        *
+        * \return return an array ('deb'=> ,'cred'=>)
+        */
 
-        $select=new ISelect();
-        $select->name='p_jrn';
-        $select->value=$ret;
-        $select->selected=$this->id;
-        return $select;
-    }
-    /*!
-     * \brief retrieve the jrn_def_fiche and return them into a array
-     *        index deb, cred
-     * \param
-     * \param
-     * \param
-     *
-     *
-     * \return return an array ('deb'=> ,'cred'=>)
-     */
-    function get_fiche_def()
-    {
-        $sql="select jrn_def_fiche_deb as deb,jrn_def_fiche_cred as cred ".
-             " from jrn_def where ".
-             " jrn_def_id = $1 ";
+       function get_fiche_def()
+       {
+               $sql = "select jrn_def_fiche_deb as deb,jrn_def_fiche_cred as 
cred " .
+                               " from jrn_def where " .
+                               " jrn_def_id = $1 ";
 
-        $r=$this->db->exec_sql($sql,array($this->id));
+               $r = $this->db->exec_sql($sql, array($this->id));
 
-        $res=Database::fetch_all($r);
-        if ( empty($res) ) return null;
+               $res = Database::fetch_all($r);
+               if (empty($res))
+                       return null;
 
-        return $res[0];
-    }
-    /*!
-     * \brief retrieve the jrn_def_class_deb and return it
-     *
-     *
-     * \return return an string
-     */
-    function get_class_def()
-    {
-        $sql="select jrn_def_class_deb  ".
-             " from jrn_def where ".
-             " jrn_def_id = $1";
+               return $res[0];
+       }
 
-        $r=$this->db->exec_sql($sql,array($this->id));
+       /* !
+        * \brief retrieve the jrn_def_class_deb and return it
+        *
+        *
+        * \return return an string
+        */
 
-        $res=Database::fetch_all($r);
+       function get_class_def()
+       {
+               $sql = "select jrn_def_class_deb  " .
+                               " from jrn_def where " .
+                               " jrn_def_id = $1";
 
-        if ( empty($res) ) return null;
+               $r = $this->db->exec_sql($sql, array($this->id));
 
-        return $res[0];
-    }
+               $res = Database::fetch_all($r);
 
-    /*!
-     * \brief show the result of the array to confirm
-     * before inserting
-     * \param $p_array array from the form
-     * \return string
-     */
-    function confirm($p_array,$p_readonly=false)
-    {
-        global $g_parameter;
-               $msg=array();
-               if (! $p_readonly ) $msg=$this->verify($p_array);
-               $this->id=$p_array['p_jrn'];
-        if ( empty($p_array)) return 'Aucun r&eacute;sultat';
-        $anc=null;
-        extract($p_array);
-        $lPeriode=new Periode($this->db);
-        if ($this->check_periode() == true)
-        {
-            $lPeriode->p_id=$period;
-        }
-        else
-        {
-            $lPeriode->find_periode($e_date);
-        }
-       $total_deb=0;$total_cred=0;
-       bcscale(2);
+               if (empty($res))
+                       return null;
 
-        $ret="";
-               if ( ! empty ($msg))
+               return $res[0];
+       }
+
+       /* !
+        * \brief show the result of the array to confirm
+        * before inserting
+        * \param $p_array array from the form
+        * \return string
+        */
+
+       function confirm($p_array, $p_readonly = false)
+       {
+               global $g_parameter;
+               $msg = array();
+               if (!$p_readonly)
+                       $msg = $this->verify($p_array);
+               $this->id = $p_array['p_jrn'];
+               if (empty($p_array))
+                       return 'Aucun r&eacute;sultat';
+               $anc = null;
+               extract($p_array);
+               $lPeriode = new Periode($this->db);
+               if ($this->check_periode() == true)
                {
-                       $ret.=$this->display_warning($msg,"Attention : il vaut 
mieux utiliser les fiches que les postes comptables pour");
+                       $lPeriode->p_id = $period;
                }
-        $ret.="<table >";
-        $ret.="<tr><td>"._('Date')." : </td><td>$e_date</td></tr>";
-        /* display periode */
-        $date_limit=$lPeriode->get_date_limit();
-        $ret.='<tr> '.td(_('Période 
Comptable')).td($date_limit['p_start'].'-'.$date_limit['p_end']).'</tr>';
-        $ret.="<tr><td>"._('Libellé')." </td><td>".h($desc)."</td></tr>";
-        $ret.="<tr><td>"._('PJ Num')." </td><td>".h($e_pj)."</td></tr>";
-        $ret.='</table>';
-        $ret.="<table class=\"result\">";
-        $ret.="<tr>";
-        $ret.="<th>"._('Quick Code ou ');
-        $ret.=_("Poste")." </th>";
-        $ret.="<th style=\"text-align:left\"> "._("Libellé")." </th>";
-        $ret.="<th style=\"text-align:right\">"._("Débit")."</th>";
-        $ret.="<th style=\"text-align:right\">"._("Crédit")."</th>";
-        /* if we use the AC */
-        if ($g_parameter->MY_ANALYTIC!='nu')
-        {
-            $anc=new Anc_Plan($this->db);
-            $a_anc=$anc->get_list();
-            $x=count($a_anc);
-            /* set the width of the col */
-            $ret.='<th colspan="'.$x.'" style="width:auto;text-align:center" 
>'._('Compt. Analytique').'</th>';
+               else
+               {
+                       $lPeriode->find_periode($e_date);
+               }
+               $total_deb = 0;
+               $total_cred = 0;
+               bcscale(2);
 
-            /* add hidden variables pa[] to hold the value of pa_id */
-            $ret.=Anc_Plan::hidden($a_anc);
-        }
-        $ret.="</tr>";
+               $ret = "";
+               if (!empty($msg))
+               {
+                       $ret.=$this->display_warning($msg, "Attention : il vaut 
mieux utiliser les fiches que les postes comptables pour");
+               }
+               $ret.="<table >";
+               $ret.="<tr><td>" . _('Date') . " : </td><td>$e_date</td></tr>";
+               /* display periode */
+               $date_limit = $lPeriode->get_date_limit();
+               $ret.='<tr> ' . td(_('Période Comptable')) . 
td($date_limit['p_start'] . '-' . $date_limit['p_end']) . '</tr>';
+               $ret.="<tr><td>" . _('Libellé') . " </td><td>" . h($desc) . 
"</td></tr>";
+               $ret.="<tr><td>" . _('PJ Num') . " </td><td>" . h($e_pj) . 
"</td></tr>";
+               $ret.='</table>';
+               $ret.="<table class=\"result\">";
+               $ret.="<tr>";
+               $ret.="<th>" . _('Quick Code ou ');
+               $ret.=_("Poste") . " </th>";
+               $ret.="<th style=\"text-align:left\"> " . _("Libellé") . " 
</th>";
+               $ret.="<th style=\"text-align:right\">" . _("Débit") . "</th>";
+               $ret.="<th style=\"text-align:right\">" . _("Crédit") . "</th>";
+               /* if we use the AC */
+               if ($g_parameter->MY_ANALYTIC != 'nu')
+               {
+                       $anc = new Anc_Plan($this->db);
+                       $a_anc = $anc->get_list();
+                       $x = count($a_anc);
+                       /* set the width of the col */
+                       $ret.='<th colspan="' . $x . '" 
style="width:auto;text-align:center" >' . _('Compt. Analytique') . '</th>';
 
-        $ret.=HtmlInput::hidden('e_date',$e_date);
-        $ret.=HtmlInput::hidden('desc',$desc);
-        $ret.=HtmlInput::hidden('period',$lPeriode->p_id);
-        $ret.=HtmlInput::hidden('e_pj',$e_pj);
-        $ret.=HtmlInput::hidden('e_pj_suggest',$e_pj_suggest);
-        $mt=microtime(true);
-        $ret.=HtmlInput::hidden('mt',$mt);
-        // For predefined operation
-        $ret.=HtmlInput::hidden('e_comm',$desc);
-        $ret.=HtmlInput::hidden('jrn_type',$this->get_type());
-        $ret.=HtmlInput::hidden('p_jrn',$this->id);
-        $ret.=HtmlInput::hidden('nb_item',$nb_item);
-        if ( $this->with_concerned==true)
-        {
-            $ret.=HtmlInput::hidden('jrn_concerned',$jrn_concerned);
-        }
-        $ret.=dossier::hidden();
-        $count=0;
-        for ($i=0;$i<$nb_item;$i++)
-        {
-                       if ( $p_readonly == true )
+                       /* add hidden variables pa[] to hold the value of pa_id 
*/
+                       $ret.=Anc_Plan::hidden($a_anc);
+               }
+               $ret.="</tr>";
+
+               $ret.=HtmlInput::hidden('e_date', $e_date);
+               $ret.=HtmlInput::hidden('desc', $desc);
+               $ret.=HtmlInput::hidden('period', $lPeriode->p_id);
+               $ret.=HtmlInput::hidden('e_pj', $e_pj);
+               $ret.=HtmlInput::hidden('e_pj_suggest', $e_pj_suggest);
+               $mt = microtime(true);
+               $ret.=HtmlInput::hidden('mt', $mt);
+               // For predefined operation
+               $ret.=HtmlInput::hidden('e_comm', $desc);
+               $ret.=HtmlInput::hidden('jrn_type', $this->get_type());
+               $ret.=HtmlInput::hidden('p_jrn', $this->id);
+               $ret.=HtmlInput::hidden('nb_item', $nb_item);
+               if ($this->with_concerned == true)
+               {
+                       $ret.=HtmlInput::hidden('jrn_concerned', 
$jrn_concerned);
+               }
+               $ret.=dossier::hidden();
+               $count = 0;
+               for ($i = 0; $i < $nb_item; $i++)
+               {
+                       if ($p_readonly == true)
                        {
-                               if ( ! isset (${'qc_'.$i})) ${'qc_'.$i}='';
-                               if ( ! isset (${'poste'.$i})) ${'poste'.$i}='';
-                               if ( ! isset (${'amount'.$i})) 
${'amount'.$i}='';
+                               if (!isset(${'qc_' . $i}))
+                                       ${'qc_' . $i} = '';
+                               if (!isset(${'poste' . $i}))
+                                       ${'poste' . $i} = '';
+                               if (!isset(${'amount' . $i}))
+                                       ${'amount' . $i} = '';
                        }
-            $ret.="<tr>";
-            if ( trim(${'qc_'.$i})!="")
-            {
-                $oqc=new Fiche($this->db);
-                $oqc->get_by_qcode(${'qc_'.$i},false);
-                $strPoste=$oqc->strAttribut(ATTR_DEF_ACCOUNT);
-                $ret.="<td>".
-                      ${'qc_'.$i}.' - '.
-                      
$oqc->strAttribut(ATTR_DEF_NAME).HtmlInput::hidden('qc_'.$i,${'qc_'.$i}).
-                      '</td>';
+                       $ret.="<tr>";
+                       if (trim(${'qc_' . $i}) != "")
+                       {
+                               $oqc = new Fiche($this->db);
+                               $oqc->get_by_qcode(${'qc_' . $i}, false);
+                               $strPoste = $oqc->strAttribut(ATTR_DEF_ACCOUNT);
+                               $ret.="<td>" .
+                                               ${'qc_' . $i} . ' - ' .
+                                               
$oqc->strAttribut(ATTR_DEF_NAME) . HtmlInput::hidden('qc_' . $i, ${'qc_' . $i}) 
.
+                                               '</td>';
+                       }
 
-            }
+                       if (trim(${'qc_' . $i}) == "" && trim(${'poste' . $i}) 
!= "")
+                       {
+                               $oposte = new Acc_Account_Ledger($this->db, 
${'poste' . $i});
+                               $strPoste = $oposte->id;
+                               $ret.="<td>" . h(${"poste" . $i} . " - " .
+                                                               
$oposte->get_name()) . HtmlInput::hidden('poste' . $i, ${'poste' . $i}) .
+                                               '</td>';
+                       }
 
-            if ( trim(${'qc_'.$i})=="" && trim(${'poste'.$i}) != "")
-            {
-                $oposte=new Acc_Account_Ledger($this->db,${'poste'.$i});
-                $strPoste=$oposte->id;
-                $ret.="<td>".h(${"poste".$i}." - ".
-                               
$oposte->get_name()).HtmlInput::hidden('poste'.$i,${'poste'.$i}).
-                      '</td>';
-            }
+                       if (trim(${'qc_' . $i}) == "" && trim(${'poste' . $i}) 
== "")
+                               continue;
+                       $ret.="<td>" . h(${"ld" . $i}) . HtmlInput::hidden('ld' 
. $i, ${'ld' . $i}) . "</td>";
+                       if (isset(${"ck$i"}))
+                       {
+                               $ret.="<td class=\"num\">" . nbm(${"amount" . 
$i}) . HtmlInput::hidden('amount' . $i, ${'amount' . $i}) . "</td>" . td("");
+                               $total_deb = bcadd($total_deb, ${'amount' . 
$i});
+                       }
+                       else
+                       {
+                               $ret.=td("") . "<td class=\"num\">" . 
nbm(${"amount" . $i}) . HtmlInput::hidden('amount' . $i, ${'amount' . $i}) . 
"</td>";
+                               $total_cred = bcadd($total_cred, ${"amount" . 
$i});
+                       }
+                       $ret.="<td>";
+                       $ret.=(isset(${"ck$i"})) ? HtmlInput::hidden('ck' . $i, 
${'ck' . $i}) : "";
+                       $ret.="</td>";
+                       // CA
 
-            if ( trim(${'qc_'.$i})=="" && trim(${'poste'.$i}) == "")
-                continue;
-            
$ret.="<td>".h(${"ld".$i}).HtmlInput::hidden('ld'.$i,${'ld'.$i})."</td>";
-            if ( isset(${"ck$i"}))
-             {
-               $ret.="<td 
class=\"num\">".nbm(${"amount".$i}).HtmlInput::hidden('amount'.$i,${'amount'.$i})."</td>".td("");
-               $total_deb=bcadd($total_deb,${'amount'.$i});
-             }
-           else
-             {
-               $ret.=td("")."<td 
class=\"num\">".nbm(${"amount".$i}).HtmlInput::hidden('amount'.$i,${'amount'.$i})."</td>";
-               $total_cred=bcadd($total_cred,${"amount".$i});
-             }
-            $ret.="<td>";
-            $ret.=(isset(${"ck$i"}))?HtmlInput::hidden('ck'.$i,${'ck'.$i}):"";
-            $ret.="</td>";
-            // CA
+                       if ($g_parameter->MY_ANALYTIC != 'nu') // use of AA
+                       {
+                               if (preg_match("/^[6,7]+/", $strPoste) == 1)
+                               {
+                                       // show form
+                                       $op = new Anc_Operation($this->db);
+                                       $null = ($g_parameter->MY_ANALYTIC == 
'op') ? 1 : 0;
+                                       $p_array['pa_id'] = $a_anc;
+                                       /* op is the operation it contains 
either a sequence or a jrnx.j_id */
+                                       $ret.=HtmlInput::hidden('op[]=', $i);
 
-            if (  $g_parameter->MY_ANALYTIC!='nu') // use of AA
-            {
-                if ( preg_match("/^[6,7]+/",$strPoste)==1)
-                {
-                    // show form
-                    $op=new Anc_Operation($this->db);
-                    $null=($g_parameter->MY_ANALYTIC=='op')?1:0;
-                    $p_array['pa_id']=$a_anc;
-                    /* op is the operation it contains either a sequence or a 
jrnx.j_id */
-                    $ret.=HtmlInput::hidden('op[]=',$i);
+                                       $ret.='<td style="text-align:center">';
+                                       $read = ($p_readonly == true) ? 0 : 1;
+                                       $ret.=$op->display_form_plan($p_array, 
$null, $read, $count, round(${'amount' . $i}, 2));
+                                       $ret.='</td>';
+                                       $count++;
+                               }
+                       }
 
-                    $ret.='<td style="text-align:center">';
-                                       $read=($p_readonly==true)?0:1;
-                    
$ret.=$op->display_form_plan($p_array,$null,$read,$count,round(${'amount'.$i},2));
-                    $ret.='</td>';
-                    $count++;
-                }
 
 
-            }
+                       $ret.="</tr>";
+               }
+               $ret.=tr(td('') . td(_('Totaux')) . td($total_deb, 
'class="num"') . td($total_cred, 'class="num"'), 'class="footer"');
+               $ret.="</table>";
+               if ($g_parameter->MY_ANALYTIC != 'nu' && $p_readonly == false)
+                       $ret.='<input type="button" class="button" value="' . 
_('verifie Imputation Analytique') . '" onClick="verify_ca(\'\');">';
+               return $ret;
+       }
 
+       /* !
+        * \brief Show the form to encode your operation
+        * \param $p_array if you correct or use a predef operation (default = 
null)
+        * \param $p_readonly 1 for readonly 0 for writable (default 0)
+        *
+        * \return a string containing the form
+        */
 
+       function input($p_array = null, $p_readonly = 0)
+       {
+               global $g_parameter, $g_user;
 
-            $ret.="</tr>";
-        }
-               
$ret.=tr(td('').td(_('Totaux')).td($total_deb,'class="num"').td($total_cred,'class="num"'),'class="footer"');
-        $ret.="</table>";
-               if ( $g_parameter->MY_ANALYTIC!='nu'  && $p_readonly==false)
-                       $ret.='<input type="button" class="button" 
value="'._('verifie Imputation Analytique').'" onClick="verify_ca(\'\');">';
-        return $ret;
-    }
+               if ($p_readonly == 1)
+                       return $this->confirm($p_array);
 
-    /*!
-     * \brief Show the form to encode your operation
-     * \param $p_array if you correct or use a predef operation (default = 
null)
-     * \param $p_readonly 1 for readonly 0 for writable (default 0)
-     *
-     * \return a string containing the form
-     */
-    function input($p_array=null,$p_readonly=0)
-    {
-        global $g_parameter,$g_user;
+               if ($p_array != null)
+                       extract($p_array);
+               $add_js = "";
+               if ($g_parameter->MY_PJ_SUGGEST == 'Y')
+               {
+                       $add_js = "update_pj();";
+               }
+               $add_js.='get_last_date();';
 
-        if ( $p_readonly == 1 )
-            return $this->confirm($p_array);
-
-        if ( $p_array != null )
-            extract($p_array);
-        $add_js="";
-        if ( $g_parameter->MY_PJ_SUGGEST=='Y')
-        {
-            $add_js="update_pj();";
-        }
-        $add_js.='get_last_date();';
-
-        $ret="";
-               if ( $g_user->check_action(FICADD) == 1)
+               $ret = "";
+               if ($g_user->check_action(FICADD) == 1)
                {
                        /* Add button */
-                       $f_add_button=new IButton('add_card');
-                       $f_add_button->label=_('Créer une nouvelle fiche');
-                       $f_add_button->set_attribute('ipopup','ipop_newcard');
-                       $f_add_button->set_attribute('jrn',$this->id);
-                       $f_add_button->javascript=" 
this.jrn=\$('p_jrn').value;select_card_type(this);";
+                       $f_add_button = new IButton('add_card');
+                       $f_add_button->label = _('Créer une nouvelle fiche');
+                       $f_add_button->set_attribute('ipopup', 'ipop_newcard');
+                       $f_add_button->set_attribute('jrn', $this->id);
+                       $f_add_button->javascript = " 
this.jrn=\$('p_jrn').value;select_card_type(this);";
                        $f_add_button->input();
                }
-               $wLedger=$this->select_ledger('ODS',2);
-        if ($wLedger == null) exit (_('Pas de journal disponible'));
-        
$wLedger->javascript="onChange='update_name();update_predef(\"ods\",\"t\");$add_js'";
-        $label=" Journal ".HtmlInput::infobulle(2) ;
+               $wLedger = $this->select_ledger('ODS', 2);
+               if ($wLedger == null)
+                       exit(_('Pas de journal disponible'));
+               $wLedger->javascript = 
"onChange='update_name();update_predef(\"ods\",\"t\");$add_js'";
+               $label = " Journal " . HtmlInput::infobulle(2);
 
-        $ret.=$label.$wLedger->input();
+               $ret.=$label . $wLedger->input();
 
 
-        // Load the javascript
-        //
+               // Load the javascript
+               //
         $ret.="<table>";
-        $ret.= '<tr ><td colspan="2" style="width:auto">';
-        $wDate=new IDate('e_date');
-        $wDate->readonly=$p_readonly;
-        $e_date=(isset($e_date)&&trim($e_date)!='')?$e_date:'';
-        $wDate->value=$e_date;
+               $ret.= '<tr ><td colspan="2" style="width:auto">';
+               $wDate = new IDate('e_date');
+               $wDate->readonly = $p_readonly;
+               $e_date = (isset($e_date) && trim($e_date) != '') ? $e_date : 
'';
+               $wDate->value = $e_date;
 
-        $ret.=_("Date").' : '.$wDate->input();
-        $ret.= '</td>';
-        /* insert periode if needed */
-        // Periode
-        //--
-        if ($this->check_periode() == true)
-        {
-            $l_user_per=$g_user->get_periode();
-            $def=(isset($periode))?$periode:$l_user_per;
+               $ret.=_("Date") . ' : ' . $wDate->input();
+               $ret.= '</td>';
+               /* insert periode if needed */
+               // Periode
+               //--
+               if ($this->check_periode() == true)
+               {
+                       $l_user_per = $g_user->get_periode();
+                       $def = (isset($periode)) ? $periode : $l_user_per;
 
-            $period=new IPeriod("period");
-            $period->user=$g_user;
-            $period->cn=$this->db;
-            $period->value=$def;
-            $period->type=OPEN;
-            try
-            {
-                $l_form_per=$period->input();
-            }
-            catch (Exception $e)
-            {
-                if ($e->getCode() == 1 )
-                {
-                    echo _("Aucune période ouverte");
-                    exit();
-                }
-            }
-            $label=HtmlInput::infobulle(3);
-            $f_periode=_("Période comptable")." $label ".$l_form_per;
-            $ret.=td($f_periode);
-        }
-        $wPJ=new IText('e_pj');
-        $wPJ->readonly=false;
-        $wPJ->size=10;
+                       $period = new IPeriod("period");
+                       $period->user = $g_user;
+                       $period->cn = $this->db;
+                       $period->value = $def;
+                       $period->type = OPEN;
+                       try
+                       {
+                               $l_form_per = $period->input();
+                       }
+                       catch (Exception $e)
+                       {
+                               if ($e->getCode() == 1)
+                               {
+                                       echo _("Aucune période ouverte");
+                                       exit();
+                               }
+                       }
+                       $label = HtmlInput::infobulle(3);
+                       $f_periode = _("Période comptable") . " $label " . 
$l_form_per;
+                       $ret.=td($f_periode);
+               }
+               $wPJ = new IText('e_pj');
+               $wPJ->readonly = false;
+               $wPJ->size = 10;
 
-        /* suggest PJ ? */
-        $default_pj='';
-        if ( $g_parameter->MY_PJ_SUGGEST=='Y')
-        {
-            $default_pj=$this->guess_pj();
-        }
-        $wPJ->value=(isset($e_pj))?$e_pj:$default_pj;
-        $ret.= '</tr>';
+               /* suggest PJ ? */
+               $default_pj = '';
+               if ($g_parameter->MY_PJ_SUGGEST == 'Y')
+               {
+                       $default_pj = $this->guess_pj();
+               }
+               $wPJ->value = (isset($e_pj)) ? $e_pj : $default_pj;
+               $ret.= '</tr>';
                $ret.='<tr >';
-        $ret.='<td colspan="2" style="width:auto"> '._('Pièce').' : 
'.$wPJ->input();
-        $ret.=HtmlInput::hidden('e_pj_suggest',$default_pj);
-        $ret.= '</tr>';
-        $ret.= '</td>';
+               $ret.='<td colspan="2" style="width:auto"> ' . _('Pièce') . ' : 
' . $wPJ->input();
+               $ret.=HtmlInput::hidden('e_pj_suggest', $default_pj);
+               $ret.= '</tr>';
+               $ret.= '</td>';
 
-        $ret.= '<tr>';
-        $ret.='<td colspan="2" style="width:auto">';
-       $ret.=_('Libellé');
-        $wDescription=new IText('desc');
-        $wDescription->readonly=$p_readonly;
-        $wDescription->size="50";
-        $wDescription->value=(isset($desc))?$desc:'';
+               $ret.= '<tr>';
+               $ret.='<td colspan="2" style="width:auto">';
+               $ret.=_('Libellé');
+               $wDescription = new IText('desc');
+               $wDescription->readonly = $p_readonly;
+               $wDescription->size = "50";
+               $wDescription->value = (isset($desc)) ? $desc : '';
 
-        $ret.=$wDescription->input();
-        $ret.= '</td>';
-        $ret.='</tr>';
+               $ret.=$wDescription->input();
+               $ret.= '</td>';
+               $ret.='</tr>';
 
-        $ret.= '</table>';
-        $nb_row=(isset($nb_item) )?$nb_item:$this->nb;
+               $ret.= '</table>';
+               $nb_row = (isset($nb_item) ) ? $nb_item : $this->nb;
 
-        $ret.=HtmlInput::hidden('nb_item',$nb_row);
-        $ret.=dossier::hidden();
+               $ret.=HtmlInput::hidden('nb_item', $nb_row);
+               $ret.=dossier::hidden();
 
-        $ret.=dossier::hidden();
+               $ret.=dossier::hidden();
 
-        $ret.=HtmlInput::hidden('jrn_type',$this->get_type());
-        $info= HtmlInput::infobulle(0);
-        $info_poste=HtmlInput::infobulle(9);
-       if  ($g_user->check_action(FICADD)==1)  $ret.=$f_add_button->input();
-        $ret.='<table id="quick_item" style="width:100%">';
-        $ret.='<tr>'.
-              '<th style="text-align:left">Quickcode'.$info.'</th>'.
-              '<th style="text-align:left">'._('Poste').$info_poste.'</th>'.
-              '<th style="text-align:left">'._('Libellé').'</th>'.
-              '<th style="text-align:left">'._('Montant').'</th>'.
-              '<th style="text-align:left">'._('Débit').'</th>'.
-              '</tr>';
+               $ret.=HtmlInput::hidden('jrn_type', $this->get_type());
+               $info = HtmlInput::infobulle(0);
+               $info_poste = HtmlInput::infobulle(9);
+               if ($g_user->check_action(FICADD) == 1)
+                       $ret.=$f_add_button->input();
+               $ret.='<table id="quick_item" style="width:100%">';
+               $ret.='<tr>' .
+                               '<th style="text-align:left">Quickcode' . $info 
. '</th>' .
+                               '<th style="text-align:left">' . _('Poste') . 
$info_poste . '</th>' .
+                               '<th style="text-align:left">' . _('Libellé') . 
'</th>' .
+                               '<th style="text-align:left">' . _('Montant') . 
'</th>' .
+                               '<th style="text-align:left">' . _('Débit') . 
'</th>' .
+                               '</tr>';
 
 
-        for ($i = 0 ;$i<$nb_row;$i++)
-        {
-            // Quick Code
-            $quick_code=new ICard('qc_'.$i);
-            $quick_code->set_dblclick("fill_ipopcard(this);");
-            $quick_code->set_attribute('ipopup','ipopcard');
+               for ($i = 0; $i < $nb_row; $i++)
+               {
+                       // Quick Code
+                       $quick_code = new ICard('qc_' . $i);
+                       $quick_code->set_dblclick("fill_ipopcard(this);");
+                       $quick_code->set_attribute('ipopup', 'ipopcard');
 
-            // name of the field to update with the name of the card
-            $quick_code->set_attribute('label',"ld".$i);
-            $quick_code->set_attribute('jrn',$this->id);
+                       // name of the field to update with the name of the card
+                       $quick_code->set_attribute('label', "ld" . $i);
+                       $quick_code->set_attribute('jrn', $this->id);
 
-            // name of the field to update with the name of the card
-            $quick_code->set_attribute('typecard','filter');
+                       // name of the field to update with the name of the card
+                       $quick_code->set_attribute('typecard', 'filter');
 
-            // Add the callback function to filter the card on the jrn
-            $quick_code->set_callback('filter_card');
-            $quick_code->set_function('fill_data');
-            $quick_code->javascript=sprintf(' 
onchange="fill_data_onchange(\'%s\');" ',
-                                            $quick_code->name);
+                       // Add the callback function to filter the card on the 
jrn
+                       $quick_code->set_callback('filter_card');
+                       $quick_code->set_function('fill_data');
+                       $quick_code->javascript = sprintf(' 
onchange="fill_data_onchange(\'%s\');" ', $quick_code->name);
 
-            $quick_code->jrn=$this->id;
-            $quick_code->value=(isset(${'qc_'.$i}))?${'qc_'.$i}:"";
-            $quick_code->readonly=$p_readonly;
+                       $quick_code->jrn = $this->id;
+                       $quick_code->value = (isset(${'qc_' . $i})) ? ${'qc_' . 
$i} : "";
+                       $quick_code->readonly = $p_readonly;
 
-            $label='';
-            if ( $quick_code->value != '' )
-            {
-                $Fiche=new Fiche($this->db);
-                $Fiche->get_by_qcode($quick_code->value);
-                $label=$Fiche->strAttribut(ATTR_DEF_NAME);
-            }
+                       $label = '';
+                       if ($quick_code->value != '')
+                       {
+                               $Fiche = new Fiche($this->db);
+                               $Fiche->get_by_qcode($quick_code->value);
+                               $label = $Fiche->strAttribut(ATTR_DEF_NAME);
+                       }
 
 
-            // Account
-            $poste=new IPoste();
-            $poste->name='poste'.$i;
-            $poste->set_attribute('jrn',$this->id);
-            $poste->set_attribute('ipopup','ipop_account');
-            $poste->set_attribute('label','ld'.$i);
-            $poste->set_attribute('account','poste'.$i);
-            $poste->set_attribute('dossier',  Dossier::id());
+                       // Account
+                       $poste = new IPoste();
+                       $poste->name = 'poste' . $i;
+                       $poste->set_attribute('jrn', $this->id);
+                       $poste->set_attribute('ipopup', 'ipop_account');
+                       $poste->set_attribute('label', 'ld' . $i);
+                       $poste->set_attribute('account', 'poste' . $i);
+                       $poste->set_attribute('dossier', Dossier::id());
 
-            $poste->value=(isset(${'poste'.$i}))?${"poste".$i}:''
-                                                    ;
+                       $poste->value = (isset(${'poste' . $i})) ? ${"poste" . 
$i} : ''
+                       ;
                        $poste->dbl_click_history();
 
-            $poste->readonly=$p_readonly;
+                       $poste->readonly = $p_readonly;
 
-            if ( $poste->value != '' )
-            {
-                $Poste=new Acc_Account($this->db);
-                $Poste->set_parameter('value',$poste->value);
-                $label=$Poste->get_lib();
-            }
+                       if ($poste->value != '')
+                       {
+                               $Poste = new Acc_Account($this->db);
+                               $Poste->set_parameter('value', $poste->value);
+                               $label = $Poste->get_lib();
+                       }
 
-            // Description of the line
-            $line_desc=new IText();
-            $line_desc->name='ld'.$i;
-            $line_desc->size=30;
-            $line_desc->value=(isset(${"ld".$i}))?${"ld".$i}:
-                              $label;
+                       // Description of the line
+                       $line_desc = new IText();
+                       $line_desc->name = 'ld' . $i;
+                       $line_desc->size = 30;
+                       $line_desc->value = (isset(${"ld" . $i})) ? ${"ld" . 
$i} :
+                                       $label;
 
-            // Amount
-            $amount=new INum();
-            $amount->size=10;
-            $amount->name='amount'.$i;
-            $amount->value=(isset(${'amount'.$i}))?${"amount".$i}:''
-                           ;
-            $amount->readonly=$p_readonly;
-            $amount->javascript=' 
onChange="format_number(this);checkTotalDirect()"';
-            // D/C
-            $deb=new ICheckBox();
-            $deb->name='ck'.$i;
-            $deb->selected=(isset(${'ck'.$i}))?true:false;
-            $deb->readonly=$p_readonly;
-            $deb->javascript=' onChange="checkTotalDirect()"';
+                       // Amount
+                       $amount = new INum();
+                       $amount->size = 10;
+                       $amount->name = 'amount' . $i;
+                       $amount->value = (isset(${'amount' . $i})) ? ${"amount" 
. $i} : ''
+                       ;
+                       $amount->readonly = $p_readonly;
+                       $amount->javascript = ' 
onChange="format_number(this);checkTotalDirect()"';
+                       // D/C
+                       $deb = new ICheckBox();
+                       $deb->name = 'ck' . $i;
+                       $deb->selected = (isset(${'ck' . $i})) ? true : false;
+                       $deb->readonly = $p_readonly;
+                       $deb->javascript = ' onChange="checkTotalDirect()"';
 
-            $ret.='<tr>';
-            $ret.='<td>'.$quick_code->input().$quick_code->search().'</td>';
-            $ret.='<td>'.$poste->input().
-                  '<script> 
document.getElementById(\'poste'.$i.'\').onblur=function(){ if 
(trim(this.value) !=\'\') 
{document.getElementById(\'qc_'.$i.'\').value="";}}</script>'.
-                  '</td>';
-            $ret.='<td>'.$line_desc->input().'</td>';
-            $ret.='<td>'.$amount->input().'</td>';
-            $ret.='<td>'.$deb->input().'</td>';
-            $ret.='</tr>';
-            // If readonly == 1 then show CA
-        }
-        $ret.='</table>';
-        if ( isset ($this->with_concerned) && $this->with_concerned==true)
-        {
-            $oRapt=new Acc_Reconciliation($this->db);
-            $w=$oRapt->widget();
-            $w->name='jrn_concerned';
-            $w->value=(isset($jrn_concerned))?$jrn_concerned:"";
-            $ret.="R&eacute;conciliation/rapprochements : ".$w->input();
-        }
-        return $ret;
-    }
+                       $ret.='<tr>';
+                       $ret.='<td>' . $quick_code->input() . 
$quick_code->search() . '</td>';
+                       $ret.='<td>' . $poste->input() .
+                                       '<script> 
document.getElementById(\'poste' . $i . '\').onblur=function(){ if 
(trim(this.value) !=\'\') {document.getElementById(\'qc_' . $i . 
'\').value="";}}</script>' .
+                                       '</td>';
+                       $ret.='<td>' . $line_desc->input() . '</td>';
+                       $ret.='<td>' . $amount->input() . '</td>';
+                       $ret.='<td>' . $deb->input() . '</td>';
+                       $ret.='</tr>';
+                       // If readonly == 1 then show CA
+               }
+               $ret.='</table>';
+               if (isset($this->with_concerned) && $this->with_concerned == 
true)
+               {
+                       $oRapt = new Acc_Reconciliation($this->db);
+                       $w = $oRapt->widget();
+                       $w->name = 'jrn_concerned';
+                       $w->value = (isset($jrn_concerned)) ? $jrn_concerned : 
"";
+                       $ret.="R&eacute;conciliation/rapprochements : " . 
$w->input();
+               }
+               return $ret;
+       }
 
-    /*!\brief
-     * check if the current ledger is closed
-     *\return 1 for yes, otherwise 0
-     *\see Periode::is_closed
-     */
-    function is_closed($p_periode)
-    {
-        $per=new Periode($this->db);
-        $per->set_jrn($this->id);
-        $per->set_periode($p_periode);
-        $ret=$per->is_closed();
-        return $ret;
+       /* !\brief
+        * check if the current ledger is closed
+        * \return 1 for yes, otherwise 0
+        * \see Periode::is_closed
+        */
 
-    }
-    /*!
-     * \brief verify that the operation can be saved
-     * \param $p_array array of data same layout that the $_POST from show_form
-     *
-     *
-     * \throw  the getcode  value is 1 incorrect balance,  2 date
-     * invalid, 3 invalid amount,  4 the card is not in the range of
-     * permitted card, 5 not in the user's period, 6 closed period
-     *
-     */
-    function verify($p_array)
-    {
-        extract ($p_array);
-        global $g_user;
-        $tot_cred=0;
-        $tot_deb=0;
-               $msg=array();
+       function is_closed($p_periode)
+       {
+               $per = new Periode($this->db);
+               $per->set_jrn($this->id);
+               $per->set_periode($p_periode);
+               $ret = $per->is_closed();
+               return $ret;
+       }
 
-        /* check if we can write into this ledger */
-        if ( $g_user->check_jrn($p_jrn) != 'W' )
-            throw new Exception (_('Accès interdit'),20);
+       /* !
+        * \brief verify that the operation can be saved
+        * \param $p_array array of data same layout that the $_POST from 
show_form
+        *
+        *
+        * \throw  the getcode  value is 1 incorrect balance,  2 date
+        * invalid, 3 invalid amount,  4 the card is not in the range of
+        * permitted card, 5 not in the user's period, 6 closed period
+        *
+        */
 
-        /* check for a double reload */
-        if ( isset($mt) && $this->db->count_sql('select jr_mt from jrn where 
jr_mt=$1',array($mt)) != 0 )
-            throw new Exception ('Double Encodage',5);
+       function verify($p_array)
+       {
+               extract($p_array);
+               global $g_user;
+               $tot_cred = 0;
+               $tot_deb = 0;
+               $msg = array();
 
-        // Check the periode and the date
-        if ( isDate($e_date) == null )
-        {
-            throw new Exception('Date invalide', 2);
-        }
-        $periode=new Periode($this->db);
-        /* find the periode  if we have enabled the check_periode*/
-        if ($this->check_periode()==false)
-        {
-            $periode->find_periode($e_date);
-        }
-        else
-        {
-            $periode->p_id=$period;
-            list ($min,$max)=$periode->get_date_limit();
-            if ( cmpDate($e_date,$min) < 0 ||
-                    cmpDate($e_date,$max) > 0)
-                throw new Exception(_('Date et periode ne correspondent 
pas'),6);
+               /* check if we can write into this ledger */
+               if ($g_user->check_jrn($p_jrn) != 'W')
+                       throw new Exception(_('Accès interdit'), 20);
 
-        }
+               /* check for a double reload */
+               if (isset($mt) && $this->db->count_sql('select jr_mt from jrn 
where jr_mt=$1', array($mt)) != 0)
+                       throw new Exception('Double Encodage', 5);
 
+               // Check the periode and the date
+               if (isDate($e_date) == null)
+               {
+                       throw new Exception('Date invalide', 2);
+               }
+               $periode = new Periode($this->db);
+               /* find the periode  if we have enabled the check_periode */
+               if ($this->check_periode() == false)
+               {
+                       $periode->find_periode($e_date);
+               }
+               else
+               {
+                       $periode->p_id = $period;
+                       list ($min, $max) = $periode->get_date_limit();
+                       if (cmpDate($e_date, $min) < 0 ||
+                                       cmpDate($e_date, $max) > 0)
+                               throw new Exception(_('Date et periode ne 
correspondent pas'), 6);
+               }
 
 
-        // Periode ferme
-        if ( $this->is_closed($periode->p_id)==1 )
-        {
-            throw new Exception('Periode fermee',6);
-        }
-        /* check if we are using the strict mode */
-        if( $this->check_strict() == true)
-        {
-            /* if we use the strict mode, we get the date of the last
-            operation */
-            $last_date=$this->get_last_date();
-            if ( $last_date !=null && cmpDate($e_date,$last_date) < 0 )
-                throw new Exception(_('Vous utilisez le mode strict la 
dernière operation est la date du ')
-                                    .$last_date.' '._('vous ne pouvez pas 
encoder à une date antérieure'),15);
 
-        }
+               // Periode ferme
+               if ($this->is_closed($periode->p_id) == 1)
+               {
+                       throw new Exception('Periode fermee', 6);
+               }
+               /* check if we are using the strict mode */
+               if ($this->check_strict() == true)
+               {
+                       /* if we use the strict mode, we get the date of the 
last
+                         operation */
+                       $last_date = $this->get_last_date();
+                       if ($last_date != null && cmpDate($e_date, $last_date) 
< 0)
+                               throw new Exception(_('Vous utilisez le mode 
strict la dernière operation est la date du ')
+                                               . $last_date . ' ' . _('vous ne 
pouvez pas encoder à une date antérieure'), 15);
+               }
 
-        for ($i=0;$i<$nb_item;$i++)
-        {
-            $err=0;
+               for ($i = 0; $i < $nb_item; $i++)
+               {
+                       $err = 0;
 
-            // Check the balance
-            if ( ! isset (${'amount'.$i}))
-                continue;
+                       // Check the balance
+                       if (!isset(${'amount' . $i}))
+                               continue;
 
-            $amount=round(${'amount'.$i},2);
-            $tot_deb+=(isset(${'ck'.$i}))?$amount:0;
-            $tot_cred+=(! isset(${'ck'.$i}))?$amount:0;
+                       $amount = round(${'amount' . $i}, 2);
+                       $tot_deb+=(isset(${'ck' . $i})) ? $amount : 0;
+                       $tot_cred+=(!isset(${'ck' . $i})) ? $amount : 0;
 
-            // Check if the card is permitted
-            if ( isset (${'qc_'.$i}) && trim(${'qc_'.$i}) !="")
-            {
-                $f=new Fiche($this->db);
-                $f->quick_code=${'qc_'.$i};
-                if ( $f->belong_ledger($p_jrn) < 0 )
-                    throw new Exception("La fiche quick_code = ".
-                                        $f->quick_code." n\'est pas dans ce 
journal",4);
-                if ( strlen(trim(${'qc_'.$i}))!=0 &&  isNumber(${'amount'.$i} 
) == 0 )
-                    throw new Exception('Montant invalide',3);
+                       // Check if the card is permitted
+                       if (isset(${'qc_' . $i}) && trim(${'qc_' . $i}) != "")
+                       {
+                               $f = new Fiche($this->db);
+                               $f->quick_code = ${'qc_' . $i};
+                               if ($f->belong_ledger($p_jrn) < 0)
+                                       throw new Exception("La fiche 
quick_code = " .
+                                                       $f->quick_code . " 
n\'est pas dans ce journal", 4);
+                               if (strlen(trim(${'qc_' . $i})) != 0 && 
isNumber(${'amount' . $i}) == 0)
+                                       throw new Exception('Montant invalide', 
3);
 
-               $strPoste=$f->strAttribut(ATTR_DEF_ACCOUNT);
-               if ($strPoste=='') throw new Exception(sprintf(_("La fiche %s 
n'a pas de poste comptable"),${"qc_".$i}));
+                               $strPoste = $f->strAttribut(ATTR_DEF_ACCOUNT);
+                               if ($strPoste == '')
+                                       throw new Exception(sprintf(_("La fiche 
%s n'a pas de poste comptable"), ${"qc_" . $i}));
 
-               $p=new Acc_Account_Ledger($this->db,$strPoste);
-               if ($p->do_exist() == 0 )
-                 throw new Exception(_('Poste Inexistant pour la fiche 
['.${'qc_'.$i}.']'),4);
-            }
+                               $p = new Acc_Account_Ledger($this->db, 
$strPoste);
+                               if ($p->do_exist() == 0)
+                                       throw new Exception(_('Poste Inexistant 
pour la fiche [' . ${'qc_' . $i} . ']'), 4);
+                       }
 
-            // Check if the account is permitted
-            if ( isset (${'poste'.$i}) && strlen (trim(${'poste'.$i})) != 0 )
-            {
-                $p=new Acc_Account_Ledger($this->db,${'poste'.$i});
-                if ( $p->belong_ledger ($p_jrn) < 0 )
-                    throw new Exception(_("Le poste")." ".$p->id." "._("n'est 
pas dans ce journal"),5);
-                if ( strlen(trim(${'poste'.$i}))!=0 &&  
isNumber(${'amount'.$i} ) == 0 )
-                    throw new Exception(_('Poste invalide 
['.${'poste'.$i}.']'),3);
-                if ( $p->do_exist() == 0 )
-                    throw new Exception(_('Poste Inexistant 
['.${'poste'.$i}.']'),4);
-                               $card_id=$p->find_card() ;
-                               if (! empty($card_id) )
+                       // Check if the account is permitted
+                       if (isset(${'poste' . $i}) && strlen(trim(${'poste' . 
$i})) != 0)
+                       {
+                               $p = new Acc_Account_Ledger($this->db, 
${'poste' . $i});
+                               if ($p->belong_ledger($p_jrn) < 0)
+                                       throw new Exception(_("Le poste") . " " 
. $p->id . " " . _("n'est pas dans ce journal"), 5);
+                               if (strlen(trim(${'poste' . $i})) != 0 && 
isNumber(${'amount' . $i}) == 0)
+                                       throw new Exception(_('Poste invalide 
[' . ${'poste' . $i} . ']'), 3);
+                               if ($p->do_exist() == 0)
+                                       throw new Exception(_('Poste Inexistant 
[' . ${'poste' . $i} . ']'), 4);
+                               $card_id = $p->find_card();
+                               if (!empty($card_id))
                                {
-                                       $str_msg=" Le poste ".$p->id." 
appartient à ".count($card_id)." fiche(s) dont :";
-                                       
$max=(count($card_id)>MAX_COMPTE_CARD)?MAX_COMPTE_CARD:count($card_id);
-                                       for ($x=0;$x < $max;$x++)
+                                       $str_msg = " Le poste " . $p->id . " 
appartient à " . count($card_id) . " fiche(s) dont :";
+                                       $max = (count($card_id) > 
MAX_COMPTE_CARD) ? MAX_COMPTE_CARD : count($card_id);
+                                       for ($x = 0; $x < $max; $x++)
                                        {
-                                               $card=new 
Fiche($this->db,$card_id[$x]['f_id']);
-                                               
$str_msg.=HtmlInput::card_detail($card->strAttribut(ATTR_DEF_QUICKCODE),$card->strAttribut(ATTR_DEF_NAME),'style="color:red;display:inline;text-decoration:underline"');
+                                               $card = new Fiche($this->db, 
$card_id[$x]['f_id']);
+                                               
$str_msg.=HtmlInput::card_detail($card->strAttribut(ATTR_DEF_QUICKCODE), 
$card->strAttribut(ATTR_DEF_NAME), 
'style="color:red;display:inline;text-decoration:underline"');
                                                $str_msg.=" ";
                                        }
-                                       $msg[]=$str_msg;
+                                       $msg[] = $str_msg;
                                }
-            }
+                       }
+               }
+               $tot_deb = round($tot_deb, 4);
+               $tot_cred = round($tot_cred, 4);
+               if ($tot_deb != $tot_cred)
+               {
+                       throw new Exception(_("Balance incorrecte ") . " debit 
= $tot_deb credit=$tot_cred ", 1);
+               }
 
+               return $msg;
+       }
 
-        }
-        $tot_deb=round($tot_deb,4);
-        $tot_cred=round($tot_cred,4);
-        if ( $tot_deb != $tot_cred )
-        {
-            throw new Exception(_("Balance incorrecte ")." debit = $tot_deb 
credit=$tot_cred ",1);
-        }
+       /* !
+        * \brief compute the internal code of the saved operation and set the 
$this->jr_internal to
+        *  the computed value
+        *
+        * \param $p_grpt id in jr_grpt_
+        *
+        * \return string internal_code
+        *      -
+        *
+        */
 
-               return $msg;
-    }
-    /*!
-     * \brief compute the internal code of the saved operation and set the 
$this->jr_internal to
-     *  the computed value
-     *
-     * \param $p_grpt id in jr_grpt_
-     *
-     * \return string internal_code
-     *      -
-     *
-     */
-    function compute_internal_code($p_grpt)
-    {
-        if ( $this->id==0) return;
-        $num =$this->db->get_next_seq('s_internal');
-        $atype=$this->get_propertie();
-        $type=substr($atype['jrn_def_code'],0,1);
-        $internal_code=sprintf("%s%06X",$type,$num);
-        $this->jr_internal=$internal_code;
-        return $internal_code;
-    }
+       function compute_internal_code($p_grpt)
+       {
+               if ($this->id == 0)
+                       return;
+               $num = $this->db->get_next_seq('s_internal');
+               $atype = $this->get_propertie();
+               $type = substr($atype['jrn_def_code'], 0, 1);
+               $internal_code = sprintf("%s%06X", $type, $num);
+               $this->jr_internal = $internal_code;
+               return $internal_code;
+       }
 
-    /*!
-     * \brief save the operation into the jrnx,jrn, ,
-     *  CA and pre_def
-     * \param $p_array
-     *
-     * \return array with [0] = false if failed otherwise true, [1] error
-     * code
-     */
-    function save ($p_array=null)
-    {
-      if ($p_array == null) throw new Exception ('save cannot use a empty 
array');
-        global $g_parameter;
-        extract ($p_array);
-        try
-        {
-            $msg=$this->verify($p_array);
-                       if ( ! empty ($msg))
+       /* !
+        * \brief save the operation into the jrnx,jrn, ,
+        *  CA and pre_def
+        * \param $p_array
+        *
+        * \return array with [0] = false if failed otherwise true, [1] error
+        * code
+        */
+
+       function save($p_array = null)
+       {
+               if ($p_array == null)
+                       throw new Exception('save cannot use a empty array');
+               global $g_parameter;
+               extract($p_array);
+               try
+               {
+                       $msg = $this->verify($p_array);
+                       if (!empty($msg))
                        {
-                               echo $this->display_warning($msg,"Attention : 
il vaut mieux utiliser les fiches que les postes comptables pour");
+                               echo $this->display_warning($msg, "Attention : 
il vaut mieux utiliser les fiches que les postes comptables pour");
                        }
-            $this->db->start() ;
+                       $this->db->start();
 
-            $seq=$this->db->get_next_seq('s_grpt');
-            $internal=$this->compute_internal_code($seq);
+                       $seq = $this->db->get_next_seq('s_grpt');
+                       $internal = $this->compute_internal_code($seq);
 
-            $group=$this->db->get_next_seq("s_oa_group");
-            $tot_amount=0;
-            $tot_deb=0;
-            $tot_cred=0;
-            $oPeriode=new Periode($this->db);
-            $check_periode=$this->check_periode();
-            if ( $check_periode == false)
-            {
-                $oPeriode->find_periode($e_date);
-            }
-            else
-            {
-                $oPeriode->id=$period;
-            }
+                       $group = $this->db->get_next_seq("s_oa_group");
+                       $tot_amount = 0;
+                       $tot_deb = 0;
+                       $tot_cred = 0;
+                       $oPeriode = new Periode($this->db);
+                       $check_periode = $this->check_periode();
+                       if ($check_periode == false)
+                       {
+                               $oPeriode->find_periode($e_date);
+                       }
+                       else
+                       {
+                               $oPeriode->id = $period;
+                       }
 
-            $count=0;
-            for ($i=0;$i<$nb_item;$i++)
-            {
-                if ( ! isset (${'qc_'.$i}) && ! isset(${'poste'.$i}))
-                    continue;
-                $acc_op=new Acc_Operation($this->db);
-                $quick_code="";
-                // First we save the jrnx
-                if ( isset(${'qc_'.$i}))
-                {
-                    $qc=new Fiche($this->db);
-                    $qc->get_by_qcode(${'qc_'.$i},false);
-                    $sposte=$qc->strAttribut(ATTR_DEF_ACCOUNT);
-                    /*  if there are 2 accounts take following the deb or cred 
*/
-                    if (strpos($sposte,',') != 0 )
-                    {
-                        $array=explode(",",$sposte);
-                        $poste=(isset(${'ck'.$i}))?$array[0]:$array[1];
-                    }
-                    else
-                    {
-                        $poste=$sposte;
-                       if ($poste=='') throw new Exception(sprintf(_("La fiche 
%s n'a pas de poste comptable"),${"qc_".$i}));
-                    }
-                    $quick_code=${'qc_'.$i};
-                }
-                else
-                {
-                    $poste=${'poste'.$i};
-                }
+                       $count = 0;
+                       for ($i = 0; $i < $nb_item; $i++)
+                       {
+                               if (!isset(${'qc_' . $i}) && !isset(${'poste' . 
$i}))
+                                       continue;
+                               $acc_op = new Acc_Operation($this->db);
+                               $quick_code = "";
+                               // First we save the jrnx
+                               if (isset(${'qc_' . $i}))
+                               {
+                                       $qc = new Fiche($this->db);
+                                       $qc->get_by_qcode(${'qc_' . $i}, false);
+                                       $sposte = 
$qc->strAttribut(ATTR_DEF_ACCOUNT);
+                                       /*  if there are 2 accounts take 
following the deb or cred */
+                                       if (strpos($sposte, ',') != 0)
+                                       {
+                                               $array = explode(",", $sposte);
+                                               $poste = (isset(${'ck' . $i})) 
? $array[0] : $array[1];
+                                       }
+                                       else
+                                       {
+                                               $poste = $sposte;
+                                               if ($poste == '')
+                                                       throw new 
Exception(sprintf(_("La fiche %s n'a pas de poste comptable"), ${"qc_" . $i}));
+                                       }
+                                       $quick_code = ${'qc_' . $i};
+                               }
+                               else
+                               {
+                                       $poste = ${'poste' . $i};
+                               }
 
-                $acc_op->date=$e_date;
-                // compute the periode is do not check it
-                if ($check_periode == false ) $acc_op->periode=$oPeriode->p_id;
-                $acc_op->desc=null;
-                if ( strlen(trim(${'ld'.$i})) != 0 )
-                    $acc_op->desc=${'ld'.$i};
-                $acc_op->amount=round(${'amount'.$i},2);
-                $acc_op->grpt=$seq;
-                $acc_op->poste=$poste;
-                $acc_op->jrn=$this->id;
-                $acc_op->type=(isset (${'ck'.$i}))?'d':'c';
-                $acc_op->qcode=$quick_code;
-                $j_id=$acc_op->insert_jrnx();
-                $tot_amount+=round($acc_op->amount,2);
-                $tot_deb+=($acc_op->type=='d')?$acc_op->amount:0;
-                $tot_cred+=($acc_op->type=='c')?$acc_op->amount:0;
-                if ( $g_parameter->MY_ANALYTIC != "nu" )
-                {
-                    if ( preg_match("/^[6,7]+/",$poste)==1)
-                    {
+                               $acc_op->date = $e_date;
+                               // compute the periode is do not check it
+                               if ($check_periode == false)
+                                       $acc_op->periode = $oPeriode->p_id;
+                               $acc_op->desc = null;
+                               if (strlen(trim(${'ld' . $i})) != 0)
+                                       $acc_op->desc = ${'ld' . $i};
+                               $acc_op->amount = round(${'amount' . $i}, 2);
+                               $acc_op->grpt = $seq;
+                               $acc_op->poste = $poste;
+                               $acc_op->jrn = $this->id;
+                               $acc_op->type = (isset(${'ck' . $i})) ? 'd' : 
'c';
+                               $acc_op->qcode = $quick_code;
+                               $j_id = $acc_op->insert_jrnx();
+                               $tot_amount+=round($acc_op->amount, 2);
+                               $tot_deb+=($acc_op->type == 'd') ? 
$acc_op->amount : 0;
+                               $tot_cred+=($acc_op->type == 'c') ? 
$acc_op->amount : 0;
+                               if ($g_parameter->MY_ANALYTIC != "nu")
+                               {
+                                       if (preg_match("/^[6,7]+/", $poste) == 
1)
+                                       {
 
-                        // for each item, insert into operation_analytique */
-                        $op=new Anc_Operation($this->db);
-                        $op->oa_group=$group;
-                        $op->j_id=$j_id;
-                        $op->oa_date=$e_date;
-                        $op->oa_debit=($acc_op->type=='d' )?'t':'f';
-                        $op->oa_description=$desc;
-                        $op->save_form_plan($p_array,$count,$j_id);
-                        $count++;
-                    }
-                }
-            }// loop for each item
-            $acc_end=new Acc_Operation($this->db);
-            $acc_end->amount=$tot_deb;
-            if ($check_periode == false ) $acc_end->periode=$oPeriode->p_id;
-            $acc_end->date=$e_date;
-            $acc_end->desc=$desc;
-            $acc_end->grpt=$seq;
-            $acc_end->jrn=$this->id;
-            $acc_end->mt=$mt;
-            $jr_id= $acc_end->insert_jrn();
-            $this->jr_id=$jr_id;
-            if ($jr_id == false )
-                throw new Exception('Balance incorrecte');
-            $acc_end->pj=$e_pj;
+                                               // for each item, insert into 
operation_analytique */
+                                               $op = new 
Anc_Operation($this->db);
+                                               $op->oa_group = $group;
+                                               $op->j_id = $j_id;
+                                               $op->oa_date = $e_date;
+                                               $op->oa_debit = ($acc_op->type 
== 'd' ) ? 't' : 'f';
+                                               $op->oa_description = $desc;
+                                               $op->save_form_plan($p_array, 
$count, $j_id);
+                                               $count++;
+                                       }
+                               }
+                       }// loop for each item
+                       $acc_end = new Acc_Operation($this->db);
+                       $acc_end->amount = $tot_deb;
+                       if ($check_periode == false)
+                               $acc_end->periode = $oPeriode->p_id;
+                       $acc_end->date = $e_date;
+                       $acc_end->desc = $desc;
+                       $acc_end->grpt = $seq;
+                       $acc_end->jrn = $this->id;
+                       $acc_end->mt = $mt;
+                       $jr_id = $acc_end->insert_jrn();
+                       $this->jr_id = $jr_id;
+                       if ($jr_id == false)
+                               throw new Exception('Balance incorrecte');
+                       $acc_end->pj = $e_pj;
 
-            /* if e_suggest != e_pj then do not increment sequence */
-            if ( strcmp($e_pj,$e_pj_suggest) == 0 && strlen(trim($e_pj)) !=0)
-            {
-                $this->inc_seq_pj();
-            }
+                       /* if e_suggest != e_pj then do not increment sequence 
*/
+                       if (strcmp($e_pj, $e_pj_suggest) == 0 && 
strlen(trim($e_pj)) != 0)
+                       {
+                               $this->inc_seq_pj();
+                       }
 
-            $this->pj=$acc_end->set_pj();
+                       $this->pj = $acc_end->set_pj();
 
-            $this->db->exec_sql("update jrn set jr_internal='".$internal."' 
where ".
-                                " jr_grpt_id = ".$seq);
-            $this->internal=$internal;
-            // Save now the predef op
-            //------------------------
-            if ( isset($opd_save))
-            {
-                $opd=new Pre_Op_Advanced($this->db);
-                $opd->get_post();
-                $opd->save();
-            }
+                       $this->db->exec_sql("update jrn set jr_internal='" . 
$internal . "' where " .
+                                       " jr_grpt_id = " . $seq);
+                       $this->internal = $internal;
+                       // Save now the predef op
+                       //------------------------
+                       if (isset($opd_save))
+                       {
+                               $opd = new Pre_Op_Advanced($this->db);
+                               $opd->get_post();
+                               $opd->save();
+                       }
 
-            if ( isset($this->with_concerned) && $this->with_concerned==true)
-            {
-                $orap=new acc_reconciliation($this->db);
-                $orap->jr_id=$jr_id;
+                       if (isset($this->with_concerned) && 
$this->with_concerned == true)
+                       {
+                               $orap = new acc_reconciliation($this->db);
+                               $orap->jr_id = $jr_id;
 
-                $orap->insert($jrn_concerned);
-            }
+                               $orap->insert($jrn_concerned);
+                       }
+               }
+               catch (Exception $a)
+               {
+                       throw $a;
+               }
+               catch (Exception $e)
+               {
+                       $this->db->rollback();
+                       echo 'OPERATION ANNULEE ';
+                       echo '<hr>';
+                       echo __FILE__ . __LINE__ . $e->getMessage();
+                       exit();
+               }
+               $this->db->commit();
+               return true;
+       }
 
-        }
+       /* !
+        * \brief get all the data from request and build the object
+        */
 
-        catch (Exception $a)
-        {
-            throw $a;
-        }
-        catch (Exception $e)
-        {
-            $this->db->rollback();
-            echo 'OPERATION ANNULEE ';
-            echo '<hr>';
-            echo __FILE__.__LINE__.$e->getMessage();
-            exit();
-        }
-        $this->db->commit();
-        return true;
-    }
+       function get_request()
+       {
+               $this->id = $_REQUEST['p_jrn'];
+       }
 
-    /*!
-     * \brief get all the data from request and build the object
-     */
-    function get_request()
-    {
-        $this->id=$_REQUEST['p_jrn'];
+       /* !
+        * \brief retrieve the next number for this type of ledger
+        * \param p_cn connx
+        * \param p_type ledger type
+        *
+        * \return the number
+        *
+        *
+        */
 
-    }
+       static function next_number($p_cn, $p_type)
+       {
 
-    /*!
-     * \brief retrieve the next number for this type of ledger
-     * \param p_cn connx
-     * \param p_type ledger type
-     *
-     * \return the number
-     *
-     *
-     */
-    static function next_number($p_cn,$p_type)
-    {
+               $Ret = $p_cn->count_sql("select * from jrn_def where 
jrn_def_type='" . $p_type . "'");
+               return $Ret + 1;
+       }
 
-        $Ret=$p_cn->count_sql("select * from jrn_def where 
jrn_def_type='".$p_type."'");
-        return $Ret+1;
-    }
-    /*!\brief get the first ledger
-     *\param the type
-     *\return the j_id
-     */
-    public function get_first($p_type,$p_access=3)
-    {
-        global $g_user;
-        $all=$g_user->get_ledger($p_type,$p_access);
-        return $all[0];
-    }
+       /* !\brief get the first ledger
+        * \param the type
+        * \return the j_id
+        */
 
+       public function get_first($p_type, $p_access = 3)
+       {
+               global $g_user;
+               $all = $g_user->get_ledger($p_type, $p_access);
+               return $all[0];
+       }
 
-    /*!\brief Update the paiment  in the list of operation
-     *\param $p_array is normally $_GET
-     */
-    function update_paid($p_array)
-    {
-        // reset all the paid flag because the checkbox is post only
-        // when checked
-        foreach ($p_array as $name=>$paid)
-        {
-            list($ad) = sscanf($name,"set_jr_id%d");
-            if ( $ad == null ) continue;
-            $sql="update jrn set jr_rapt='' where jr_id=$ad";
-            $Res=$this->db->exec_sql($sql);
+       /* !\brief Update the paiment  in the list of operation
+        * \param $p_array is normally $_GET
+        */
 
-        }
-        // set a paid flag for the checked box
-        foreach ($p_array as $name=>$paid)
-        {
-            list ($id) = sscanf ($name,"rd_paid%d");
-            if ( $id == null ) continue;
+       function update_paid($p_array)
+       {
+               // reset all the paid flag because the checkbox is post only
+               // when checked
+               foreach ($p_array as $name => $paid)
+               {
+                       list($ad) = sscanf($name, "set_jr_id%d");
+                       if ($ad == null)
+                               continue;
+                       $sql = "update jrn set jr_rapt='' where jr_id=$ad";
+                       $Res = $this->db->exec_sql($sql);
+               }
+               // set a paid flag for the checked box
+               foreach ($p_array as $name => $paid)
+               {
+                       list ($id) = sscanf($name, "rd_paid%d");
+                       if ($id == null)
+                               continue;
 
-            $sql="update jrn set jr_rapt='paid' where jr_id=$id";
-            $Res=$this->db->exec_sql($sql);
-        }
+                       $sql = "update jrn set jr_rapt='paid' where jr_id=$id";
+                       $Res = $this->db->exec_sql($sql);
+               }
+       }
 
-    }
-    function update_internal_code($p_internal)
-    {
-        if ( ! isset($this->grpt_id) )
-            exit( 'ERREUR '.__FILE__.":".__LINE__);
-        $Res=$this->db->exec_sql("update jrn set jr_internal='".$p_internal."' 
where ".
-                                 " jr_grpt_id = ".$this->grpt_id);
+       function update_internal_code($p_internal)
+       {
+               if (!isset($this->grpt_id))
+                       exit('ERREUR ' . __FILE__ . ":" . __LINE__);
+               $Res = $this->db->exec_sql("update jrn set jr_internal='" . 
$p_internal . "' where " .
+                               " jr_grpt_id = " . $this->grpt_id);
+       }
 
-    }
-    /*!\brief retrieve all the card for this type of ledger, make them
-     *into a string separated by comma
-     *\param none
-     *\return all the card or null is nothing is found
-     */
-    function get_all_fiche_def()
-    {
-        $sql="select jrn_def_fiche_deb as deb,jrn_def_fiche_cred as cred ".
-             " from jrn_def where ".
-             " jrn_def_id = $1 ";
+       /* !\brief retrieve all the card for this type of ledger, make them
+        * into a string separated by comma
+        * \param none
+        * \return all the card or null is nothing is found
+        */
 
-        $r=$this->db->exec_sql($sql,array($this->id));
+       function get_all_fiche_def()
+       {
+               $sql = "select jrn_def_fiche_deb as deb,jrn_def_fiche_cred as 
cred " .
+                               " from jrn_def where " .
+                               " jrn_def_id = $1 ";
 
-        $res=Database::fetch_all($r);
-        if ( empty($res) ) return null;
-        $card="";
-        $comma='';
-        foreach ($res as $item )
-        {
-            if ( strlen(trim($item['deb'])) != 0 )
-            {
-                $card.=$comma.$item['deb'];
-                $comma=',';
-            }
-            if ( strlen(trim($item['cred'])) != '')
-            {
-                $card.=$comma.$item['cred'];
-                $comma=',';
-            }
+               $r = $this->db->exec_sql($sql, array($this->id));
 
-        }
+               $res = Database::fetch_all($r);
+               if (empty($res))
+                       return null;
+               $card = "";
+               $comma = '';
+               foreach ($res as $item)
+               {
+                       if (strlen(trim($item['deb'])) != 0)
+                       {
+                               $card.=$comma . $item['deb'];
+                               $comma = ',';
+                       }
+                       if (strlen(trim($item['cred'])) != '')
+                       {
+                               $card.=$comma . $item['cred'];
+                               $comma = ',';
+                       }
+               }
 
-        return $card;
-    }
-    /*!\brief get the saldo of an exercice, used for the opening of a folder
-     *\param $p_exercice is the exercice we want
-     *\return an array
-     * index =
-     * - solde (debit > 0 ; credit < 0)
-     * - j_poste
-     * - j_qcode
-     */
-    function get_saldo_exercice($p_exercice)
-    {
-        $sql="select sum(a.montant) as solde, j_poste, j_qcode
+               return $card;
+       }
+
+       /* !\brief get the saldo of an exercice, used for the opening of a 
folder
+        * \param $p_exercice is the exercice we want
+        * \return an array
+        * index =
+        * - solde (debit > 0 ; credit < 0)
+        * - j_poste
+        * - j_qcode
+        */
+
+       function get_saldo_exercice($p_exercice)
+       {
+               $sql = "select sum(a.montant) as solde, j_poste, j_qcode
              from
              (select j_id, case when j_debit='t' then j_montant
              else j_montant * (-1) end  as montant
@@ -2187,262 +2225,281 @@
              and j_poste::text not like '6%'
              group by j_poste,j_qcode
              having (sum(a.montant) != 0 )";
-        $res=$this->db->get_array($sql,array($p_exercice));
-        return $res;
-    }
-    /*!
-     *\brief Check if a Dossier is using the strict mode or not
-     * \return true if we are using the strict_mode
-     */
-    function check_strict()
-    {
-        global $g_parameter;
-        if ( $g_parameter->MY_STRICT=='Y') return true;
-        if ( $g_parameter->MY_STRICT=='N') return false;
-        exit("Valeur invalid ".__FILE__.':'.__LINE__);
-    }
-    /*!
-     *\brief Check if a Dossier is using the check on the periode, if true 
than the user has to enter the date
-     * and the periode, it is a security check
-     * \return true if we are using the double encoding (date+periode)
-     */
-    function check_periode()
-    {
-        global $g_parameter;
-        if ( $g_parameter->MY_CHECK_PERIODE=='Y') return true;
-        if ( $g_parameter->MY_CHECK_PERIODE=='N') return false;
-        exit("Valeur invalid ".__FILE__.':'.__LINE__);
-    }
+               $res = $this->db->get_array($sql, array($p_exercice));
+               return $res;
+       }
 
-    /*!\brief get the date of the last operation
-    */
-    function get_last_date()
-    {
-        if ( $this->id==0) throw new Exception (__FILE__.":".__LINE__."Journal 
incorrect ");
-        $sql="select to_char(max(jr_date),'DD.MM.YYYY') from jrn where 
jr_def_id=$1";
-        $date=$this->db->get_value($sql,array($this->id));
-        return $date;
-    }
-    /*!\brief retrieve the jr_id thanks the internal code, do not change
-     *anything to the current object
-     *\param the internal code
-     *\return the jr_id or 0 if not found
-     */
-    function get_id($p_internal)
-    {
-        $sql='select jr_id from jrn where jr_internal=$1';
-        $value=$this->db->get_value($sql,array($p_internal));
-        if ($value=='') $value=0;
-        return $value;
-    }
-    /*!\brief create the invoice and saved it as attachment to the
-     *operation,
-     *\param $internal is the internal code
-     *\param $p_array is normally the $_POST
-     *\return a string
-     */
-    function create_document($internal,$p_array)
-    {
-        extract ($p_array);
-        $doc=new Document($this->db);
-        $doc->f_id=$e_client;
-        $doc->md_id=$gen_doc;
-        $doc->ag_id=0;
-        $doc->Generate($p_array);
-        // Move the document to the jrn
-        $doc->MoveDocumentPj($internal);
-        // Update the comment with invoice number, if the comment is empty
-        if ( ! isset ($e_comm) || strlen(trim($e_comm))== 0 )
-        {
-            $sql="update jrn set jr_comment=' document ".$doc->d_number."' 
where jr_internal='$internal'";
-            $this->db->exec_sql($sql);
-        }
-        return h($doc->d_name.' ('.$doc->d_filename.')');
+       /* !
+        * \brief Check if a Dossier is using the strict mode or not
+        * \return true if we are using the strict_mode
+        */
 
-    }
-    /*!\brief check if the payment method is valid
-     *\param $e_mp is the value and $e_mp_qcode is the quickcode
-     *\return nothing throw an Exception
-     */
-    public function check_payment($e_mp,$e_mp_qcode)
-    {
-        /*   Check if the "paid by" is empty, */
-        if (  $e_mp != 0)
-        {
-            /* the paid by is not empty then check if valid */
-            $empl=new Fiche($this->db);
-            $empl->get_by_qcode($e_mp_qcode);
-            if ( $empl->empty_attribute(ATTR_DEF_ACCOUNT)== true)
-            {
-                throw new Exception('Celui qui paie n\' a pas de poste 
comptable',20);
-            }
-            /* get the account and explode if necessary */
-            $sposte=$empl->strAttribut(ATTR_DEF_ACCOUNT);
-            // if 2 accounts, take only the debit one for customer
-            if ( strpos($sposte,',') != 0 )
-            {
-                $array=explode(',',$sposte);
-                $poste_val=$array[0];
-            }
-            else
-            {
-                $poste_val=$sposte;
-            }
-            $poste=new Acc_Account_Ledger($this->db,$poste_val);
-            if ( $poste->load() == false )
-            {
-                throw new Exception('Pour la fiche'.$empl->quick_code.'  le 
poste comptable ['.$poste->id.'n\'existe pas',9);
+       function check_strict()
+       {
+               global $g_parameter;
+               if ($g_parameter->MY_STRICT == 'Y')
+                       return true;
+               if ($g_parameter->MY_STRICT == 'N')
+                       return false;
+               exit("Valeur invalid " . __FILE__ . ':' . __LINE__);
+       }
 
-            }
-        }
-    }
+       /* !
+        * \brief Check if a Dossier is using the check on the periode, if true 
than the user has to enter the date
+        * and the periode, it is a security check
+        * \return true if we are using the double encoding (date+periode)
+        */
 
+       function check_periode()
+       {
+               global $g_parameter;
+               if ($g_parameter->MY_CHECK_PERIODE == 'Y')
+                       return true;
+               if ($g_parameter->MY_CHECK_PERIODE == 'N')
+                       return false;
+               exit("Valeur invalid " . __FILE__ . ':' . __LINE__);
+       }
 
-    /*!\brief increment the sequence for the pj */
-    function inc_seq_pj()
-    {
-        $sql="select nextval('s_jrn_pj".$this->id."')";
-        $this->db->exec_sql($sql);
-    }
-    /address@hidden return a HTML string with the form for the search
-     address@hidden $p_type if the type of ledger possible 
values=ALL,VEN,ACH,ODS,FIN
-     address@hidden $all_type_ledger
-     *       values :
-     *         - 1 means all the ledger of this type
-     *         - 0 No have the "Tous les journaux" availables
-        address@hidden $div is the div (for reconciliation)
-     address@hidden a HTML String without the tag FORM or DIV
+       /* !\brief get the date of the last operation
+        */
+
+       function get_last_date()
+       {
+               if ($this->id == 0)
+                       throw new Exception(__FILE__ . ":" . __LINE__ . 
"Journal incorrect ");
+               $sql = "select to_char(max(jr_date),'DD.MM.YYYY') from jrn 
where jr_def_id=$1";
+               $date = $this->db->get_value($sql, array($this->id));
+               return $date;
+       }
+
+       /* !\brief retrieve the jr_id thanks the internal code, do not change
+        * anything to the current object
+        * \param the internal code
+        * \return the jr_id or 0 if not found
+        */
+
+       function get_id($p_internal)
+       {
+               $sql = 'select jr_id from jrn where jr_internal=$1';
+               $value = $this->db->get_value($sql, array($p_internal));
+               if ($value == '')
+                       $value = 0;
+               return $value;
+       }
+
+       /* !\brief create the invoice and saved it as attachment to the
+        * operation,
+        * \param $internal is the internal code
+        * \param $p_array is normally the $_POST
+        * \return a string
+        */
+
+       function create_document($internal, $p_array)
+       {
+               extract($p_array);
+               $doc = new Document($this->db);
+               $doc->f_id = $e_client;
+               $doc->md_id = $gen_doc;
+               $doc->ag_id = 0;
+               $doc->Generate($p_array);
+               // Move the document to the jrn
+               $doc->MoveDocumentPj($internal);
+               // Update the comment with invoice number, if the comment is 
empty
+               if (!isset($e_comm) || strlen(trim($e_comm)) == 0)
+               {
+                       $sql = "update jrn set jr_comment=' document " . 
$doc->d_number . "' where jr_internal='$internal'";
+                       $this->db->exec_sql($sql);
+               }
+               return h($doc->d_name . ' (' . $doc->d_filename . ')');
+       }
+
+       /* !\brief check if the payment method is valid
+        * \param $e_mp is the value and $e_mp_qcode is the quickcode
+        * \return nothing throw an Exception
+        */
+
+       public function check_payment($e_mp, $e_mp_qcode)
+       {
+               /*   Check if the "paid by" is empty, */
+               if ($e_mp != 0)
+               {
+                       /* the paid by is not empty then check if valid */
+                       $empl = new Fiche($this->db);
+                       $empl->get_by_qcode($e_mp_qcode);
+                       if ($empl->empty_attribute(ATTR_DEF_ACCOUNT) == true)
+                       {
+                               throw new Exception('Celui qui paie n\' a pas 
de poste comptable', 20);
+                       }
+                       /* get the account and explode if necessary */
+                       $sposte = $empl->strAttribut(ATTR_DEF_ACCOUNT);
+                       // if 2 accounts, take only the debit one for customer
+                       if (strpos($sposte, ',') != 0)
+                       {
+                               $array = explode(',', $sposte);
+                               $poste_val = $array[0];
+                       }
+                       else
+                       {
+                               $poste_val = $sposte;
+                       }
+                       $poste = new Acc_Account_Ledger($this->db, $poste_val);
+                       if ($poste->load() == false)
+                       {
+                               throw new Exception('Pour la fiche' . 
$empl->quick_code . '  le poste comptable [' . $poste->id . 'n\'existe pas', 9);
+                       }
+               }
+       }
+
+       /* !\brief increment the sequence for the pj */
+
+       function inc_seq_pj()
+       {
+               $sql = "select nextval('s_jrn_pj" . $this->id . "')";
+               $this->db->exec_sql($sql);
+       }
+
+       /* address@hidden return a HTML string with the form for the search
+        * @param $p_type if the type of ledger possible 
values=ALL,VEN,ACH,ODS,FIN
+        * @param $all_type_ledger
+        *       values :
+        *         - 1 means all the ledger of this type
+        *         - 0 No have the "Tous les journaux" availables
+        * @param $div is the div (for reconciliation)
+        * @return a HTML String without the tag FORM or DIV
         *
-     address@hidden build_search_sql
-     address@hidden display_search_form
-     address@hidden list_operation
-     */
-    function  search_form($p_type,$all_type_ledger=1,$div="")
-    {
-        global $g_user;
-        $r='';
-        /* security : filter ledger on user */
-        $filter_ledger=$g_user->get_ledger($p_type,3);
+        * @see build_search_sql
+        * @see display_search_form
+        * @see list_operation
+        */
 
-        
$selected=(isset($_REQUEST['r_jrn'.$div]))?$_REQUEST['r_jrn'.$div]:null;
-        $f_ledger=HtmlInput::select_ledger($filter_ledger,$selected,$div);
+       function search_form($p_type, $all_type_ledger = 1, $div = "")
+       {
+               global $g_user;
+               $r = '';
+               /* security : filter ledger on user */
+               $filter_ledger = $g_user->get_ledger($p_type, 3);
 
-        /* widget for date_start */
-        $f_date_start=new IDate('date_start');
-        /* all periode or only the selected one */
-        if ( isset($_REQUEST['date_start']))
-        {
-            $f_date_start->value=$_REQUEST['date_start'];
-        }
-        else
-        {
-            $period=$g_user->get_periode();
-            $per=new Periode($this->db,$period);
-            $exercice=$per->get_exercice();
-            list($per_start,$per_end)=$per->get_limit($exercice);
-            $f_date_start->value=$per_start->first_day();
-            $date_end=$per_end->last_day();
-        }
+               $selected = (isset($_REQUEST['r_jrn' . $div])) ? 
$_REQUEST['r_jrn' . $div] : null;
+               $f_ledger = HtmlInput::select_ledger($filter_ledger, $selected, 
$div);
 
-        /* widget for date_end */
-        $f_date_end=new IDate('date_end');
-        /* all date or only the selected one */
-        if ( isset($_REQUEST['date_end']))
-        {
-            $f_date_end->value=$_REQUEST['date_end'];
-        }
-        else
-        {
-            $f_date_end->value=$date_end;
-        }
+               /* widget for date_start */
+               $f_date_start = new IDate('date_start');
+               /* all periode or only the selected one */
+               if (isset($_REQUEST['date_start']))
+               {
+                       $f_date_start->value = $_REQUEST['date_start'];
+               }
+               else
+               {
+                       $period = $g_user->get_periode();
+                       $per = new Periode($this->db, $period);
+                       $exercice = $per->get_exercice();
+                       list($per_start, $per_end) = $per->get_limit($exercice);
+                       $f_date_start->value = $per_start->first_day();
+                       $date_end = $per_end->last_day();
+               }
 
-        /* widget for desc */
-        $f_descript=new IText('desc');
-        $f_descript->size=40;
-        if ( isset($_REQUEST['desc']))
-        {
-            $f_descript->value=$_REQUEST['desc'];
-        }
+               /* widget for date_end */
+               $f_date_end = new IDate('date_end');
+               /* all date or only the selected one */
+               if (isset($_REQUEST['date_end']))
+               {
+                       $f_date_end->value = $_REQUEST['date_end'];
+               }
+               else
+               {
+                       $f_date_end->value = $date_end;
+               }
 
-        /* widget for amount */
-        $f_amount_min=new INum('amount_min');
-        
$f_amount_min->value=(isset($_REQUEST['amount_min']))?abs($_REQUEST['amount_min']):0;
-        $f_amount_max=new INum('amount_max');
-        
$f_amount_max->value=(isset($_REQUEST['amount_max']))?abs($_REQUEST['amount_max']):0;
+               /* widget for desc */
+               $f_descript = new IText('desc');
+               $f_descript->size = 40;
+               if (isset($_REQUEST['desc']))
+               {
+                       $f_descript->value = $_REQUEST['desc'];
+               }
 
-        /* input quick code */
-        $f_qcode=new ICard('qcode'.$div);
+               /* widget for amount */
+               $f_amount_min = new INum('amount_min');
+               $f_amount_min->value = (isset($_REQUEST['amount_min'])) ? 
abs($_REQUEST['amount_min']) : 0;
+               $f_amount_max = new INum('amount_max');
+               $f_amount_max->value = (isset($_REQUEST['amount_max'])) ? 
abs($_REQUEST['amount_max']) : 0;
 
-        $f_qcode->set_attribute('typecard','all');
-       /*        $f_qcode->set_attribute('p_jrn','0');
+               /* input quick code */
+               $f_qcode = new ICard('qcode' . $div);
 
-        $f_qcode->set_callback('filter_card');
-       */
-       $f_qcode->set_dblclick("fill_ipopcard(this);");
-       // Add the callback function to filter the card on the jrn
-       //$f_qcode->set_callback('filter_card');
-       $f_qcode->set_function('fill_data');
-       $f_qcode->javascript=sprintf(' onchange="fill_data_onchange(%s);" ',
-                                               $f_qcode->name);
-       
$f_qcode->value=(isset($_REQUEST['qcode'.$div]))?$_REQUEST['qcode'.$div]:'';
+               $f_qcode->set_attribute('typecard', 'all');
+               /*        $f_qcode->set_attribute('p_jrn','0');
 
-       /*        $f_txt_qcode=new IText('qcode');
-        $f_txt_qcode->value=(isset($_REQUEST['qcode']))?$_REQUEST['qcode']:'';
-       */
+                 $f_qcode->set_callback('filter_card');
+                */
+               $f_qcode->set_dblclick("fill_ipopcard(this);");
+               // Add the callback function to filter the card on the jrn
+               //$f_qcode->set_callback('filter_card');
+               $f_qcode->set_function('fill_data');
+               $f_qcode->javascript = sprintf(' 
onchange="fill_data_onchange(%s);" ', $f_qcode->name);
+               $f_qcode->value = (isset($_REQUEST['qcode' . $div])) ? 
$_REQUEST['qcode' . $div] : '';
 
-        /* input poste comptable */
-        $f_accounting=new IPoste('accounting');
-        
$f_accounting->value=(isset($_REQUEST['accounting']))?$_REQUEST['accounting']:'';
-        if ( $this->id==-1) $jrn=0;
-        else $jrn=$this->id;
-        $f_accounting->set_attribute('jrn',$jrn);
-        $f_accounting->set_attribute('ipopup','ipop_account');
-        $f_accounting->set_attribute('label','ld');
-        $f_accounting->set_attribute('account','accounting');
-        $info=HtmlInput::infobulle(13);
+               /*        $f_txt_qcode=new IText('qcode');
+                 
$f_txt_qcode->value=(isset($_REQUEST['qcode']))?$_REQUEST['qcode']:'';
+                */
 
-        $f_paid=new ICheckbox('unpaid');
-        $f_paid->selected=(isset($_REQUEST['unpaid']))?true:false;
+               /* input poste comptable */
+               $f_accounting = new IPoste('accounting');
+               $f_accounting->value = (isset($_REQUEST['accounting'])) ? 
$_REQUEST['accounting'] : '';
+               if ($this->id == -1)
+                       $jrn = 0;
+               else
+                       $jrn = $this->id;
+               $f_accounting->set_attribute('jrn', $jrn);
+               $f_accounting->set_attribute('ipopup', 'ipop_account');
+               $f_accounting->set_attribute('label', 'ld');
+               $f_accounting->set_attribute('account', 'accounting');
+               $info = HtmlInput::infobulle(13);
 
-        $r.=dossier::hidden();
-        $r.=HtmlInput::hidden('ledger_type',$this->type);
-        $r.=HtmlInput::hidden('ac',$_REQUEST['ac']);
-        ob_start();
-        require_once('template/ledger_search.php');
-        $r.=ob_get_contents();
-        ob_clean();
-        return $r;
+               $f_paid = new ICheckbox('unpaid');
+               $f_paid->selected = (isset($_REQUEST['unpaid'])) ? true : false;
 
-    }
-    /*!\brief this function will create a sql stmt to use to create the list 
for
-     * the ledger,
-     *\param $p_array is usually the $_GET,
-     *\param $p_order the order of the row
-     *\param $p_where is the sql condition if not null then the $p_array will 
not be used
-     *\note the p_action will be used to filter the ledger but gl means ALL
-     * struct array $p_array
-    \verbatim
-    (
-      [gDossier] => 13
-      [p_jrn] => -1
-      [date_start] =>
-      [date_end] =>
-      [amount_min] => 0
-      [amount_max] => 0
-      [desc] =>
-      [search] => Rechercher
-      [p_action] => ven
-      [sa] => l
-    )
-    \endverbatim
-     *\return an array with a valid sql statement, an the where clause => 
array[sql] array[where]
-     *\see list_operation
-     *\see display_search_form
-     *\see search_form
-     */
-    public function build_search_sql($p_array,$p_order="",$p_where="")
-    {
-        $sql="select jr_id     ,
+               $r.=dossier::hidden();
+               $r.=HtmlInput::hidden('ledger_type', $this->type);
+               $r.=HtmlInput::hidden('ac', $_REQUEST['ac']);
+               ob_start();
+               require_once('template/ledger_search.php');
+               $r.=ob_get_contents();
+               ob_clean();
+               return $r;
+       }
+
+       /* !\brief this function will create a sql stmt to use to create the 
list for
+        * the ledger,
+        * \param $p_array is usually the $_GET,
+        * \param $p_order the order of the row
+        * \param $p_where is the sql condition if not null then the $p_array 
will not be used
+        * \note the p_action will be used to filter the ledger but gl means ALL
+        * struct array $p_array
+         \verbatim
+         (
+         [gDossier] => 13
+         [p_jrn] => -1
+         [date_start] =>
+         [date_end] =>
+         [amount_min] => 0
+         [amount_max] => 0
+         [desc] =>
+         [search] => Rechercher
+         [p_action] => ven
+         [sa] => l
+         )
+         \endverbatim
+        * \return an array with a valid sql statement, an the where clause => 
array[sql] array[where]
+        * \see list_operation
+        * \see display_search_form
+        * \see search_form
+        */
+
+       public function build_search_sql($p_array, $p_order = "", $p_where = "")
+       {
+               $sql = "select jr_id    ,
              jr_montant,
              substr(jr_comment,1,60) as jr_comment,
              to_char(jr_ech,'DD.MM.YYYY') as str_jr_ech,
@@ -2489,608 +2546,617 @@
              join jrn_def on jrn_def_id=jr_def_id
              join parm_periode on p_id=jr_tech_per";
 
-        if ( ! empty($p_array))            extract($p_array);
+               if (!empty($p_array))
+                       extract($p_array);
 
-        $r_jrn=(isset($r_jrn))?$r_jrn:-1;
+               $r_jrn = (isset($r_jrn)) ? $r_jrn : -1;
 
-        /* if no variable are set then give them a default
-         * value */
-        if ( $p_array == null || empty($p_array) || ! isset($amount_min) )
-        {
-            $amount_min=0;
-            $amount_max=0;
+               /* if no variable are set then give them a default
+                * value */
+               if ($p_array == null || empty($p_array) || !isset($amount_min))
+               {
+                       $amount_min = 0;
+                       $amount_max = 0;
 
-            $desc='';
-            $qcode=(isset($qcode))?$qcode:"";
-                       if ( isset($qcodesearch_op)) $qcode=$qcodesearch_op;
-            $accounting=(isset($accounting))?$accounting:"";
-                       $periode=new Periode($this->db);
-                       $g_user=new User($this->db);
-                       $p_id=$g_user->get_periode();
-                       if ( $p_id != null )
+                       $desc = '';
+                       $qcode = (isset($qcode)) ? $qcode : "";
+                       if (isset($qcodesearch_op))
+                               $qcode = $qcodesearch_op;
+                       $accounting = (isset($accounting)) ? $accounting : "";
+                       $periode = new Periode($this->db);
+                       $g_user = new User($this->db);
+                       $p_id = $g_user->get_periode();
+                       if ($p_id != null)
                        {
-                               
list($date_start,$date_end)=$periode->get_date_limit($p_id);
+                               list($date_start, $date_end) = 
$periode->get_date_limit($p_id);
                        }
-        }
+               }
 
-        /* if p_jrn : 0 if means all ledgers, if -1 means all ledger of this
-         *  type otherwise only one ledger*/
-        $fil_ledger='';
-        $fil_amount='';
-        $fil_date='';
-        $fil_desc='';
-        $fil_sec='';
-        $fil_qcode='';
-        $fil_account='';
-        $fil_paid='';
+               /* if p_jrn : 0 if means all ledgers, if -1 means all ledger of 
this
+                *  type otherwise only one ledger */
+               $fil_ledger = '';
+               $fil_amount = '';
+               $fil_date = '';
+               $fil_desc = '';
+               $fil_sec = '';
+               $fil_qcode = '';
+               $fil_account = '';
+               $fil_paid = '';
 
-        $and='';
-        $g_user=new User($this->db);
-       $p_action=$ledger_type;
-       if ( $p_action == '') $p_action='ALL';
-        if ( $r_jrn == -1 )
-        {
+               $and = '';
+               $g_user = new User($this->db);
+               $p_action = $ledger_type;
+               if ($p_action == '')
+                       $p_action = 'ALL';
+               if ($r_jrn == -1)
+               {
 
-            /* from compta.php the p_action is quick_writing instead of ODS  */
-            if ( $p_action == 'quick_writing') $p_action='ODS';
+                       /* from compta.php the p_action is quick_writing 
instead of ODS  */
+                       if ($p_action == 'quick_writing')
+                               $p_action = 'ODS';
 
 
-            $fil_ledger=$g_user->get_ledger_sql($p_action,3);
-            $and=' and ';
-        }
-        else
-        {
+                       $fil_ledger = $g_user->get_ledger_sql($p_action, 3);
+                       $and = ' and ';
+               }
+               else
+               {
 
-            if ( $p_action == 'quick_writing') $p_action='ODS';
+                       if ($p_action == 'quick_writing')
+                               $p_action = 'ODS';
 
-            $aLedger=$g_user->get_ledger($p_action,3);
-            $fil_ledger='';
-            $sp='';
-            for ($i=0;$i < count($aLedger) ;$i ++)
-            {
-                if ( isset($r_jrn[$i]))
-                {
-                    $fil_ledger.=$sp.$aLedger[$i]['jrn_def_id'];
-                    $sp=',';
-                }
+                       $aLedger = $g_user->get_ledger($p_action, 3);
+                       $fil_ledger = '';
+                       $sp = '';
+                       for ($i = 0; $i < count($aLedger); $i++)
+                       {
+                               if (isset($r_jrn[$i]))
+                               {
+                                       $fil_ledger.=$sp . 
$aLedger[$i]['jrn_def_id'];
+                                       $sp = ',';
+                               }
+                       }
+                       $fil_ledger = ' jrn_def_id in (' . $fil_ledger . ')';
+                       $and = ' and ';
 
-            }
-            $fil_ledger=' jrn_def_id in ('.$fil_ledger.')';
-            $and=' and ';
+                       /* no ledger selected */
+                       if ($sp == '')
+                       {
+                               $fil_ledger = '';
+                               $and = '';
+                       }
+               }
 
-            /* no ledger selected */
-            if ( $sp == '' )
-            {
-                $fil_ledger='';
-                $and='';
-            }
-        }
+               /* format the number */
+               $amount_min = abs(toNumber($amount_min));
+               $amount_max = abs(toNumber($amount_max));
+               if ($amount_min > 0 && isNumber($amount_min))
+               {
+                       $fil_amount = $and . ' jr_montant >=' . $amount_min;
+                       $and = ' and ';
+               }
+               if ($amount_max > 0 && isNumber($amount_max))
+               {
+                       $fil_amount.=$and . ' jr_montant <=' . $amount_max;
+                       $and = ' and ';
+               }
+               /* 
-------------------------------------------------------------------------- *
+                * if both amount are the same then we need to search into the 
detail
+                * and we reset the fil_amount
+                * 
-------------------------------------------------------------------------- */
+               if (isNumber($amount_min) &&
+                               isNumber($amount_max) &&
+                               $amount_min > 0 &&
+                               bccomp($amount_min, $amount_max, 2) == 0)
+               {
+                       $fil_amount = $and . 'jr_grpt_id in  ( select distinct 
j_grpt from jrnx where j_montant = ' . $amount_min . ')';
+                       $and = " and ";
+               }
+               // date
+               if (isset($date_start) && isDate($date_start) != null)
+               {
+                       $fil_date = $and . " jr_date >= to_date('" . 
$date_start . "','DD.MM.YYYY')";
+                       $and = " and ";
+               }
+               if (isset($date_end) && isDate($date_end) != null)
+               {
+                       $fil_date.=$and . " jr_date <= to_date('" . $date_end . 
"','DD.MM.YYYY')";
+                       $and = " and ";
+               }
+               // comment
+               if (isset($desc) && $desc != null)
+               {
+                       $desc = sql_string($desc);
+                       $fil_desc = $and . " ( upper(jr_comment) like upper('%" 
. $desc . "%') or upper(jr_pj_number) like upper('%" . $desc . "%') " .
+                                       " or upper(jr_internal)  like upper('%" 
. $desc . "%')
+                          or jr_grpt_id in (select j_grpt from jrnx where 
j_text ~* '" . $desc . "'))";
+                       $and = " and ";
+               }
+               //    Poste
+               if (isset($accounting) && $accounting != null)
+               {
+                       $fil_account = $and . "  jr_grpt_id in (select j_grpt
+                         from jrnx where j_poste::text like '" . 
sql_string($accounting) . "%' )  ";
+                       $and = " and ";
+               }
+               // Quick Code
+               if (isset($qcodesearch_op))
+                       $qcode = $qcodesearch_op;
+               if (isset($qcode) && $qcode != null)
+               {
+                       $fil_qcode = $and . "  jr_grpt_id in ( select j_grpt 
from
+                       jrnx where trim(j_qcode) = upper(trim('" . 
sql_string($qcode) . "')))";
+                       $and = " and ";
+               }
 
-        /* format the number */
-        $amount_min=abs(toNumber($amount_min));
-        $amount_max=abs(toNumber($amount_max));
-        if ( $amount_min > 0 && isNumber($amount_min) )
-        {
-            $fil_amount=$and.' jr_montant >=' .$amount_min;
-            $and=' and ';
-        }
-        if ( $amount_max > 0 && isNumber($amount_max)  )
-        {
-            $fil_amount.=$and.' jr_montant <=' .$amount_max;
-            $and=' and ';
-        }
-        /* 
-------------------------------------------------------------------------- *
-         * if both amount are the same then we need to search into the detail
-         * and we reset the fil_amount
-         * 
-------------------------------------------------------------------------- */
-        if ( isNumber($amount_min) &&
-                isNumber($amount_max) &&
-                $amount_min > 0 &&
-                bccomp($amount_min, $amount_max,2)==0 )
-        {
-            $fil_amount= $and. 'jr_grpt_id in  ( select distinct j_grpt from 
jrnx where j_montant = '.$amount_min.')';
-            $and=" and ";
-        }
-        // date
-        if (isset ($date_start) && isDate($date_start) != null )
-        {
-            $fil_date=$and." jr_date >= 
to_date('".$date_start."','DD.MM.YYYY')";
-            $and=" and ";
-        }
-        if (isset ($date_end) &&  isDate($date_end) != null )
-        {
-            $fil_date.=$and." jr_date <= 
to_date('".$date_end."','DD.MM.YYYY')";
-            $and=" and ";
-        }
-        // comment
-        if (isset ($desc) &&  $desc != null )
-        {
-                       $desc=sql_string($desc);
-            $fil_desc=$and." ( upper(jr_comment) like upper('%".$desc."%') or 
upper(jr_pj_number) like upper('%".$desc."%') ".
-                      " or upper(jr_internal)  like upper('%".$desc."%')
-                          or jr_grpt_id in (select j_grpt from jrnx where 
j_text ~* '".$desc."'))";
-            $and=" and ";
-        }
-        //    Poste
-        if ( isset ($accounting) && $accounting != null )
-        {
-            $fil_account=$and."  jr_grpt_id in (select j_grpt
-                         from jrnx where j_poste::text like 
'".sql_string($accounting)."%' )  ";
-            $and=" and ";
-        }
-        // Quick Code
-               if ( isset ($qcodesearch_op)) $qcode=$qcodesearch_op;
-        if ( isset ($qcode)  && $qcode != null )
-        {
-            $fil_qcode=$and."  jr_grpt_id in ( select j_grpt from
-                       jrnx where trim(j_qcode) = 
upper(trim('".sql_string($qcode)."')))";
-            $and=" and ";
-        }
+               // Only the unpaid
+               if (isset($unpaid))
+               {
+                       $fil_paid = $and . SQL_LIST_UNPAID_INVOICE;
+                       $and = " and ";
+               }
 
-        // Only the unpaid
-        if ( isset($unpaid) )
-        {
-            $fil_paid=$and.SQL_LIST_UNPAID_INVOICE;
-            $and =" and ";
-        }
+               $g_user = new User(new Database());
+               $g_user->Check();
+               $g_user->check_dossier(dossier::id());
 
-        $g_user=new User(new Database());
-        $g_user->Check();
-        $g_user->check_dossier(dossier::id());
+               if ($g_user->admin == 0 && $g_user->is_local_admin() == 0)
+               {
+                       $fil_sec = $and . " jr_def_id in ( select uj_jrn_id " .
+                                       " from user_sec_jrn where " .
+                                       " uj_login='" . $_SESSION['g_user'] . 
"'" .
+                                       " and uj_priv in ('R','W'))";
+               }
+               $where = $fil_ledger . $fil_amount . $fil_date . $fil_desc . 
$fil_sec . $fil_amount . $fil_qcode . $fil_paid . $fil_account;
+               $sql.=" where " . $where;
+               return array($sql, $where);
+       }
 
-        if ( $g_user->admin == 0 && $g_user->is_local_admin()==0 )
-        {
-            $fil_sec=$and." jr_def_id in ( select uj_jrn_id ".
-                     " from user_sec_jrn where ".
-                     " uj_login='".$_SESSION['g_user']."'".
-                     " and uj_priv in ('R','W'))";
-        }
-        
$where=$fil_ledger.$fil_amount.$fil_date.$fil_desc.$fil_sec.$fil_amount.$fil_qcode.$fil_paid.$fil_account;
-        $sql.=" where ".$where;
-        return array($sql,$where);
-    }
-    /*!\brief return a html string with the search_form
-     *\return a HTML string with the FORM
-     *\see build_search_sql
-     *\see search_form
-     *\see list_operation
-     */
-    function display_search_form()
-    {
-        $r='';
-        $type=$this->type;
+       /* !\brief return a html string with the search_form
+        * \return a HTML string with the FORM
+        * \see build_search_sql
+        * \see search_form
+        * \see list_operation
+        */
 
-        if ( $type=="") $type='ALL';
-        $r.='<div id="search_form" style="display:none">';
-       
$r.=HtmlInput::anchor_hide('Fermer','$(\'search_form\').style.display=\'none\';');
-       $r.=h2info('Recherche');
-        $r.='<FORM METHOD="GET">';
-        $r.=$this->search_form($type);
-        $r.=HtmlInput::submit('search',_('Rechercher'));
-        $r.=HtmlInput::hidden('ac',$_REQUEST['ac']);
+       function display_search_form()
+       {
+               $r = '';
+               $type = $this->type;
 
-        /*  when called from commercial.php some hidden values are needed */
-        if (isset($_REQUEST['sa'])) $r.= 
HtmlInput::hidden("sa",$_REQUEST['sa']);
-        if (isset($_REQUEST['sb'])) $r.= 
HtmlInput::hidden("sb",$_REQUEST['sb']);
-        if (isset($_REQUEST['sc'])) $r.= 
HtmlInput::hidden("sc",$_REQUEST['sc']);
-        if (isset($_REQUEST['f_id'])) 
$r.=HtmlInput::hidden("f_id",$_REQUEST['f_id']);
-       
$r.=HtmlInput::button_anchor('Fermer','javascript:void(0)','fsearch_form','onclick="$(\'search_form\').style.display=\'none\';"');
+               if ($type == "")
+                       $type = 'ALL';
+               $r.='<div id="search_form" style="display:none">';
+               $r.=HtmlInput::anchor_hide('Fermer', 
'$(\'search_form\').style.display=\'none\';');
+               $r.=h2info('Recherche');
+               $r.='<FORM METHOD="GET">';
+               $r.=$this->search_form($type);
+               $r.=HtmlInput::submit('search', _('Rechercher'));
+               $r.=HtmlInput::hidden('ac', $_REQUEST['ac']);
 
-        $r.='</FORM>';
+               /*  when called from commercial.php some hidden values are 
needed */
+               if (isset($_REQUEST['sa']))
+                       $r.= HtmlInput::hidden("sa", $_REQUEST['sa']);
+               if (isset($_REQUEST['sb']))
+                       $r.= HtmlInput::hidden("sb", $_REQUEST['sb']);
+               if (isset($_REQUEST['sc']))
+                       $r.= HtmlInput::hidden("sc", $_REQUEST['sc']);
+               if (isset($_REQUEST['f_id']))
+                       $r.=HtmlInput::hidden("f_id", $_REQUEST['f_id']);
+               $r.=HtmlInput::button_anchor('Fermer', 'javascript:void(0)', 
'fsearch_form', 'onclick="$(\'search_form\').style.display=\'none\';"');
 
-        $r.='</div>';
-        $button=new IButton('tfs');
-        $button->label=_("Filtrer");
-        $button->javascript="toggleHideShow('search_form','tfs');";
+               $r.='</FORM>';
 
-        $r.=$button->input();
-       $r.='<hr>';
-        return $r;
-    }
+               $r.='</div>';
+               $button = new IButton('tfs');
+               $button->label = _("Filtrer");
+               $button->javascript = "toggleHideShow('search_form','tfs');";
 
-    /*!\brief return the last p_limit operation into an array
-     *\param $p_limit is the max of operation to return
-     *\return $p_array of Follow_Up object
-     */
-    function get_last($p_limit)
-    {
-        global $g_user;
-        $filter_ledger=$g_user->get_ledger_sql('ALL',3);
-        $filter_ledger=str_replace('jrn_def_id','jr_def_id',$filter_ledger);
-        $sql="
+               $r.=$button->input();
+               $r.='<hr>';
+               return $r;
+       }
+
+       /* !\brief return the last p_limit operation into an array
+        * \param $p_limit is the max of operation to return
+        * \return $p_array of Follow_Up object
+        */
+
+       function get_last($p_limit)
+       {
+               global $g_user;
+               $filter_ledger = $g_user->get_ledger_sql('ALL', 3);
+               $filter_ledger = str_replace('jrn_def_id', 'jr_def_id', 
$filter_ledger);
+               $sql = "
                        select 
jr_id,jr_pj_number,jr_date,to_char(jr_date,'DD.MM.YYYY') as 
jr_date_fmt,jr_montant, jr_comment,jr_internal,jrn_def_code
                        from jrn
                        join jrn_def on (jrn_def_id=jr_def_id)
                         where $filter_ledger
                        order by jr_date desc limit $p_limit";
-        $array=$this->db->get_array($sql);
-        return $array;
-    }
-    /**
-     address@hidden retreive the jr_grpt_id from a ledger
-     address@hidden $p_what the column to seek
-     *    possible values are
-     *   - internal
-     address@hidden $p_value the value of the col.
-     */
-    function search_group($p_what,$p_value)
-    {
-        switch($p_what)
-        {
-        case 'internal':
-            return $this->db->get_value('select jr_grpt_id from jrn where 
jr_internal=$1',
-                                        array($p_value));
+               $array = $this->db->get_array($sql);
+               return $array;
+       }
 
-        }
-    }
-    /**
-     address@hidden retrieve operation from  jrn
-     address@hidden $p_from periode (id)
-     address@hidden $p_to periode (id)
-     address@hidden an array
-     */
-    function get_operation($p_from,$p_to)
-    {
+       /**
+        * @brief retreive the jr_grpt_id from a ledger
+        * @param $p_what the column to seek
+        *    possible values are
+        *   - internal
+        * @param $p_value the value of the col.
+        */
+       function search_group($p_what, $p_value)
+       {
+               switch ($p_what)
+               {
+                       case 'internal':
+                               return $this->db->get_value('select jr_grpt_id 
from jrn where jr_internal=$1', array($p_value));
+               }
+       }
+
+       /**
+        * @brief retrieve operation from  jrn
+        * @param $p_from periode (id)
+        * @param $p_to periode (id)
+        * @return an array
+        */
+       function get_operation($p_from, $p_to)
+       {
                global $g_user;
-        $jrn=($this->id==0)?'and '.$g_user->get_ledger_sql():' and jr_def_id = 
'.$this->id;
-        $sql="select jr_id as id ,jr_internal as internal, ".
-             "jr_pj_number as pj,jr_grpt_id,".
-             " to_char(jr_date,'DDMMYY') as date_fmt, ".
-             " jr_comment as comment, jr_montant as montant ,".
-             " jr_grpt_id,jr_def_id".
-             " from jrn join jrn_def on (jr_def_id=jrn_def_id) where  ".
-                        " jr_date >= (select p_start from parm_periode where 
p_id = $1)
+               $jrn = ($this->id == 0) ? 'and ' . $g_user->get_ledger_sql() : 
' and jr_def_id = ' . $this->id;
+               $sql = "select jr_id as id ,jr_internal as internal, " .
+                               "jr_pj_number as pj,jr_grpt_id," .
+                               " to_char(jr_date,'DDMMYY') as date_fmt, " .
+                               " jr_comment as comment, jr_montant as montant 
," .
+                               " jr_grpt_id,jr_def_id" .
+                               " from jrn join jrn_def on 
(jr_def_id=jrn_def_id) where  " .
+                               " jr_date >= (select p_start from parm_periode 
where p_id = $1)
                                 and  jr_date <= (select p_end from 
parm_periode where p_id  = $2)" .
-             '  '.$jrn.' order by 
jr_date,substring(jr_pj_number,\'\\\d+$\')::numeric asc';
-        $ret=$this->db->get_array($sql,array($p_from,$p_to));
-        return $ret;
-    }
-    /**
-     address@hidden return the used VAT code with a rate > 0
-     address@hidden an array of tva_id,tva_label,tva_poste
-     */
-    public function existing_vat()
-    {
-        if ( $this->type=='ACH')
-        {
-            $array=$this->db->get_array("select tva_id,tva_label,tva_poste 
from tva_rate where tva_rate != 0.0000 ".
-                                        " and  exists (select qp_vat_code from 
quant_purchase
-                                        where  qp_vat_code=tva_id and  exists 
(select j_id from jrnx where j_jrn_def = $1)) order by tva_id",
-                                        array($this->id));
-        }
-        if ( $this->type=='VEN')
-        {
-            $array=$this->db->get_array("select tva_id,tva_label,tva_poste 
from tva_rate where tva_rate != 0.0000 ".
-                                        " and  exists (select qs_vat_code from 
quant_sold
-                                        where  qs_vat_code=tva_id and  exists 
(select j_id from jrnx where j_jrn_def = $1)) order by tva_id",
-                                        array($this->id));
+                               '  ' . $jrn . ' order by 
jr_date,substring(jr_pj_number,\'\\\d+$\')::numeric asc';
+               $ret = $this->db->get_array($sql, array($p_from, $p_to));
+               return $ret;
+       }
 
-        }
-        return $array;
-    }
-    /**
-     address@hidden get the amount of vat for a given jr_grpt_id from the table
-     * quant_purchase
-     address@hidden the jr_grpt_id
-     address@hidden array price=htva, [1] =  vat,
-     address@hidden
-     address@hidden
-    @code
-    array
-    'price' => string '91.3500' (length=7)
-    'vat' => string '0.0000' (length=6)
-    'priv' => string '0.0000' (length=6)
-    'tva_nd_recup' => string '0.0000' (length=6)
+       /**
+        * @brief return the used VAT code with a rate > 0
+        * @return an array of tva_id,tva_label,tva_poste
+        */
+       public function existing_vat()
+       {
+               if ($this->type == 'ACH')
+               {
+                       $array = $this->db->get_array("select 
tva_id,tva_label,tva_poste from tva_rate where tva_rate != 0.0000 " .
+                                       " and  exists (select qp_vat_code from 
quant_purchase
+                                        where  qp_vat_code=tva_id and  exists 
(select j_id from jrnx where j_jrn_def = $1)) order by tva_id", 
array($this->id));
+               }
+               if ($this->type == 'VEN')
+               {
+                       $array = $this->db->get_array("select 
tva_id,tva_label,tva_poste from tva_rate where tva_rate != 0.0000 " .
+                                       " and  exists (select qs_vat_code from 
quant_sold
+                                        where  qs_vat_code=tva_id and  exists 
(select j_id from jrnx where j_jrn_def = $1)) order by tva_id", 
array($this->id));
+               }
+               return $array;
+       }
 
-    @endcode
-     */
-    function get_other_amount($p_jr_id)
-    {
-        if ( $this->type=='ACH')
-        {
-            $array=$this->db->get_array('select sum(qp_price) as 
price,sum(qp_vat) as vat '.
-                                        ',sum(qp_dep_priv) as priv'.
-                                        ',sum(qp_nd_tva_recup)+sum(qp_nd_tva) 
as tva_nd'.
-                                        '  from quant_purchase join jrnx 
using(j_id)
-                                        where  j_grpt=$1 ',
-                                        array($p_jr_id));
-            $ret=$array[0];
-        }
-        if ( $this->type=='VEN')
-        {
-            $array=$this->db->get_array('select sum(qs_price) as 
price,sum(qs_vat) as vat '.
-                                        ',0 as priv'.
-                                        ',0 as tva_nd'.
-                                        '  from quant_sold join jrnx 
using(j_id)
-                                        where  j_grpt=$1 ',
-                                        array($p_jr_id));
-            $ret=$array[0];
+       /**
+        * @brief get the amount of vat for a given jr_grpt_id from the table
+        * quant_purchase
+        * @param the jr_grpt_id
+        * @return array price=htva, [1] =  vat,
+        * @note
+        * @see
+         @code
+         array
+         'price' => string '91.3500' (length=7)
+         'vat' => string '0.0000' (length=6)
+         'priv' => string '0.0000' (length=6)
+         'tva_nd_recup' => string '0.0000' (length=6)
 
-        }
-        return $ret;
-    }
+         @endcode
+        */
+       function get_other_amount($p_jr_id)
+       {
+               if ($this->type == 'ACH')
+               {
+                       $array = $this->db->get_array('select sum(qp_price) as 
price,sum(qp_vat) as vat ' .
+                                       ',sum(qp_dep_priv) as priv' .
+                                       ',sum(qp_nd_tva_recup)+sum(qp_nd_tva) 
as tva_nd' .
+                                       '  from quant_purchase join jrnx 
using(j_id)
+                                        where  j_grpt=$1 ', array($p_jr_id));
+                       $ret = $array[0];
+               }
+               if ($this->type == 'VEN')
+               {
+                       $array = $this->db->get_array('select sum(qs_price) as 
price,sum(qs_vat) as vat ' .
+                                       ',0 as priv' .
+                                       ',0 as tva_nd' .
+                                       '  from quant_sold join jrnx using(j_id)
+                                        where  j_grpt=$1 ', array($p_jr_id));
+                       $ret = $array[0];
+               }
+               return $ret;
+       }
 
-    /**
-     address@hidden get the amount of vat for a given jr_grpt_id from the table
-     * quant_purchase
-     address@hidden the jr_grpt_id
-     address@hidden array of sum_vat, tva_label
-     address@hidden
-     address@hidden
-    @code
+       /**
+        * @brief get the amount of vat for a given jr_grpt_id from the table
+        * quant_purchase
+        * @param the jr_grpt_id
+        * @return array of sum_vat, tva_label
+        * @note
+        * @see
+         @code
 
-    @endcode
-     */
-    function vat_operation($p_jr_id)
-    {
-        if ( $this->type=='ACH')
-        {
-            $array=$this->db->get_array('select coalesce(sum(qp_vat),0) as 
sum_vat,tva_id
+         @endcode
+        */
+       function vat_operation($p_jr_id)
+       {
+               if ($this->type == 'ACH')
+               {
+                       $array = $this->db->get_array('select 
coalesce(sum(qp_vat),0) as sum_vat,tva_id
                                         from quant_purchase as p right join 
tva_rate on (qp_vat_code=tva_id)  join jrnx using(j_id)
-                                        where tva_rate !=0.0 and j_grpt=$1 
group by tva_id',
-                                        array($p_jr_id));
-        }
-        if ( $this->type=='VEN')
-        {
-            $array=$this->db->get_array('select coalesce(sum(qs_vat),0) as 
sum_vat,tva_id
+                                        where tva_rate !=0.0 and j_grpt=$1 
group by tva_id', array($p_jr_id));
+               }
+               if ($this->type == 'VEN')
+               {
+                       $array = $this->db->get_array('select 
coalesce(sum(qs_vat),0) as sum_vat,tva_id
                                         from quant_sold as p right join 
tva_rate on (qs_vat_code=tva_id)  join jrnx using(j_id)
-                                        where tva_rate !=0.0 and j_grpt=$1 
group by tva_id',
-                                        array($p_jr_id));
-        }
-        return $array;
-    }
-    /**
-     address@hidden retrieve amount of previous periode
-     address@hidden $p_to frmo the start of the exercise until $p_to
-     address@hidden $array with vat, price,other_amount
-     address@hidden
-     address@hidden
-    @code
-    array
-    'price' => string '446.1900' (length=8)
-    'vat' => string '21.7600' (length=7)
-    'priv' => string '0.0000' (length=6)
-    'tva_nd_recup' => string '0.0000' (length=6)
-    'tva' =>
-      array
-        0 =>
-          array
-            'sum_vat' => string '13.7200' (length=7)
-            'tva_id' => string '1' (length=1)
-        1 =>
-          array
-            'sum_vat' => string '8.0400' (length=6)
-            'tva_id' => string '3' (length=1)
-        2 =>
-          array
-            'sum_vat' => string '0.0000' (length=6)
-            'tva_id' => string '4' (length=1)
+                                        where tva_rate !=0.0 and j_grpt=$1 
group by tva_id', array($p_jr_id));
+               }
+               return $array;
+       }
 
-    @endcode
-     */
-    function previous_amount($p_to)
-    {
-        /* get the first periode of exercise */
-        $periode=new Periode($this->db,$p_to);
-        $exercise=$periode->get_exercice();
-        list ($min,$max)=$periode->get_limit($exercise);
-        // min periode
-        if ($this->type=='ACH')
-        {
-            /*  get all amount exclude vat */
-            $sql="select coalesce(sum(qp_price),0) as price".
-                 " ,coalesce(sum(qp_vat),0) as vat ".
-                 ',coalesce(sum(qp_dep_priv),0) as priv'.
-                 ',coalesce(sum(qp_nd_tva_recup),0)+coalesce(sum(qp_nd_tva),0) 
as tva_nd'.
-                 '  from quant_purchase join jrnx using(j_id) '.
-                 ' where j_tech_per >= $1 and j_tech_per < $2';
-            $array=$this->db->get_array($sql,array($min->p_id,$p_to));
+       /**
+        * @brief retrieve amount of previous periode
+        * @param $p_to frmo the start of the exercise until $p_to
+        * @return $array with vat, price,other_amount
+        * @note
+        * @see
+         @code
+         array
+         'price' => string '446.1900' (length=8)
+         'vat' => string '21.7600' (length=7)
+         'priv' => string '0.0000' (length=6)
+         'tva_nd_recup' => string '0.0000' (length=6)
+         'tva' =>
+         array
+         0 =>
+         array
+         'sum_vat' => string '13.7200' (length=7)
+         'tva_id' => string '1' (length=1)
+         1 =>
+         array
+         'sum_vat' => string '8.0400' (length=6)
+         'tva_id' => string '3' (length=1)
+         2 =>
+         array
+         'sum_vat' => string '0.0000' (length=6)
+         'tva_id' => string '4' (length=1)
 
-            $ret=$array[0];
-            /* retrieve all vat code */
-            $array=$this->db->get_array('select coalesce(sum(qp_vat),0) as 
sum_vat,tva_id
+         @endcode
+        */
+       function previous_amount($p_to)
+       {
+               /* get the first periode of exercise */
+               $periode = new Periode($this->db, $p_to);
+               $exercise = $periode->get_exercice();
+               list ($min, $max) = $periode->get_limit($exercise);
+               // min periode
+               if ($this->type == 'ACH')
+               {
+                       /*  get all amount exclude vat */
+                       $sql = "select coalesce(sum(qp_price),0) as price" .
+                                       " ,coalesce(sum(qp_vat),0) as vat " .
+                                       ',coalesce(sum(qp_dep_priv),0) as priv' 
.
+                                       
',coalesce(sum(qp_nd_tva_recup),0)+coalesce(sum(qp_nd_tva),0) as tva_nd' .
+                                       '  from quant_purchase join jrnx 
using(j_id) ' .
+                                       ' where j_tech_per >= $1 and j_tech_per 
< $2';
+                       $array = $this->db->get_array($sql, array($min->p_id, 
$p_to));
+
+                       $ret = $array[0];
+                       /* retrieve all vat code */
+                       $array = $this->db->get_array('select 
coalesce(sum(qp_vat),0) as sum_vat,tva_id
                                         from quant_purchase as p right join 
tva_rate on (qp_vat_code=tva_id)  join jrnx using(j_id)
-                                        where tva_rate !=0 and j_tech_per >= 
$1 and j_tech_per < $2 group by tva_id',
-                                        array($min->p_id,$p_to));
-            $ret['tva']=$array;
-        }
-        if ($this->type=='VEN')
-        {
-            /*  get all amount exclude vat */
-            $sql="select coalesce(sum(qs_price),0) as price".
-                 " ,coalesce(sum(qs_vat),0) as vat ".
-                 ',0 as priv'.
-                 ',0 as tva_nd'.
-                 '  from quant_sold join jrnx using(j_id) '.
-                 ' where j_tech_per >= $1 and j_tech_per < $2';
-            $array=$this->db->get_array($sql,array($min->p_id,$p_to));
-            $ret=$array[0];
-            /* retrieve all vat code */
-            $array=$this->db->get_array('select coalesce(sum(qs_vat),0) as 
sum_vat,tva_id
+                                        where tva_rate !=0 and j_tech_per >= 
$1 and j_tech_per < $2 group by tva_id', array($min->p_id, $p_to));
+                       $ret['tva'] = $array;
+               }
+               if ($this->type == 'VEN')
+               {
+                       /*  get all amount exclude vat */
+                       $sql = "select coalesce(sum(qs_price),0) as price" .
+                                       " ,coalesce(sum(qs_vat),0) as vat " .
+                                       ',0 as priv' .
+                                       ',0 as tva_nd' .
+                                       '  from quant_sold join jrnx 
using(j_id) ' .
+                                       ' where j_tech_per >= $1 and j_tech_per 
< $2';
+                       $array = $this->db->get_array($sql, array($min->p_id, 
$p_to));
+                       $ret = $array[0];
+                       /* retrieve all vat code */
+                       $array = $this->db->get_array('select 
coalesce(sum(qs_vat),0) as sum_vat,tva_id
                                         from quant_sold as p right join 
tva_rate on (qs_vat_code=tva_id)  join jrnx using(j_id)
-                                        where tva_rate !=0 and j_tech_per >= 
$1 and j_tech_per < $2 group by tva_id',
-                                        array($min->p_id,$p_to));
-            $ret['tva']=$array;
-        }
-        return $ret;
-    }
-    
////////////////////////////////////////////////////////////////////////////////
-    // TEST MODULE
-    
////////////////////////////////////////////////////////////////////////////////
-    /*!
-    * \brief this function is intended to test this class
-    */
-    static function test_me($pCase='')
-    {
-        if ( $pCase=='')
-        {
-            echo Acc_Reconciliation::$javascript;
-            html_page_start();
-            $cn=new Database(dossier::id());
-            $_SESSION['g_user']='phpcompta';
-            $_SESSION['g_pass']='phpcompta';
+                                        where tva_rate !=0 and j_tech_per >= 
$1 and j_tech_per < $2 group by tva_id', array($min->p_id, $p_to));
+                       $ret['tva'] = $array;
+               }
+               return $ret;
+       }
 
-            $id=(isset ($_REQUEST['p_jrn']))?$_REQUEST['p_jrn']:-1;
-            $a=new Acc_Ledger($cn,$id);
-            $a->with_concerned=true;
-            // Vide
-            echo '<FORM method="post">';
-            echo $a->select_ledger()->input();
-            echo HtmlInput::submit('go','Test it');
-            echo '</form>';
-            if ( isset($_POST['go']))
-            {
-                echo "Ok ";
-                echo '<form method="post">';
-                echo $a->show_form();
-                echo HtmlInput::submit('post_id','Try me');
-                echo '</form>';
-                // Show the predef operation
-                // Don't forget the p_jrn
-                echo '<form>';
-                echo dossier::hidden();
-                echo '<input type="hidden" value="'.$id.'" name="p_jrn">';
-                $op=new Pre_operation($cn);
-                $op->p_jrn=$id;
-                $op->od_direct='t';
-                if ($op->count() != 0 )
-                {
-                    echo HtmlInput::submit('use_opd','Utilisez une opération 
pr&eacute;d&eacute;finie');
-                    echo $op->show_button();
-                }
-                echo '</form>';
-                exit();
-            }
+       
////////////////////////////////////////////////////////////////////////////////
+       // TEST MODULE
+       
////////////////////////////////////////////////////////////////////////////////
+       /* !
+        * \brief this function is intended to test this class
+        */
+       static function test_me($pCase = '')
+       {
+               if ($pCase == '')
+               {
+                       echo Acc_Reconciliation::$javascript;
+                       html_page_start();
+                       $cn = new Database(dossier::id());
+                       $_SESSION['g_user'] = 'phpcompta';
+                       $_SESSION['g_pass'] = 'phpcompta';
 
-            if ( isset($_POST['post_id' ]))
-            {
+                       $id = (isset($_REQUEST['p_jrn'])) ? $_REQUEST['p_jrn'] 
: -1;
+                       $a = new Acc_Ledger($cn, $id);
+                       $a->with_concerned = true;
+                       // Vide
+                       echo '<FORM method="post">';
+                       echo $a->select_ledger()->input();
+                       echo HtmlInput::submit('go', 'Test it');
+                       echo '</form>';
+                       if (isset($_POST['go']))
+                       {
+                               echo "Ok ";
+                               echo '<form method="post">';
+                               echo $a->show_form();
+                               echo HtmlInput::submit('post_id', 'Try me');
+                               echo '</form>';
+                               // Show the predef operation
+                               // Don't forget the p_jrn
+                               echo '<form>';
+                               echo dossier::hidden();
+                               echo '<input type="hidden" value="' . $id . '" 
name="p_jrn">';
+                               $op = new Pre_operation($cn);
+                               $op->p_jrn = $id;
+                               $op->od_direct = 't';
+                               if ($op->count() != 0)
+                               {
+                                       echo HtmlInput::submit('use_opd', 
'Utilisez une opération pr&eacute;d&eacute;finie');
+                                       echo $op->show_button();
+                               }
+                               echo '</form>';
+                               exit();
+                       }
 
-                echo '<form method="post">';
-                echo $a->show_form($_POST,1);
-                echo HtmlInput::button('add','Ajout d\'une 
ligne','onClick="quick_writing_add_row()"');
-                echo HtmlInput::submit('save_it',"Sauver");
-                echo '</form>';
-                exit();
-            }
-            if ( isset($_POST['save_it' ]))
-            {
-                print 'saving';
-                $array=$_POST;
-                $array['save_opd']=1;
-                try
-                {
-                    $a->save($array);
-                }
-                catch (Exception $e)
-                {
-                    alert($e->getMessage());
-                    echo '<form method="post">';
+                       if (isset($_POST['post_id']))
+                       {
 
-                    echo $a->show_form($_POST);
-                    echo HtmlInput::submit('post_id','Try me');
-                    echo '</form>';
+                               echo '<form method="post">';
+                               echo $a->show_form($_POST, 1);
+                               echo HtmlInput::button('add', 'Ajout d\'une 
ligne', 'onClick="quick_writing_add_row()"');
+                               echo HtmlInput::submit('save_it', "Sauver");
+                               echo '</form>';
+                               exit();
+                       }
+                       if (isset($_POST['save_it']))
+                       {
+                               print 'saving';
+                               $array = $_POST;
+                               $array['save_opd'] = 1;
+                               try
+                               {
+                                       $a->save($array);
+                               }
+                               catch (Exception $e)
+                               {
+                                       alert($e->getMessage());
+                                       echo '<form method="post">';
 
-                }
-                exit();
-            }
-            // The GET at the end because automatically repost when you don't
-            // specify the url in the METHOD field
-            if ( isset ($_GET['use_opd']))
-            {
-                $op=new Pre_op_advanced($cn);
-                $op->set_od_id($_REQUEST['pre_def']);
-                //$op->p_jrn=$id;
+                                       echo $a->show_form($_POST);
+                                       echo HtmlInput::submit('post_id', 'Try 
me');
+                                       echo '</form>';
+                               }
+                               exit();
+                       }
+                       // The GET at the end because automatically repost when 
you don't
+                       // specify the url in the METHOD field
+                       if (isset($_GET['use_opd']))
+                       {
+                               $op = new Pre_op_advanced($cn);
+                               $op->set_od_id($_REQUEST['pre_def']);
+                               //$op->p_jrn=$id;
 
-                $p_post=$op->compute_array();
+                               $p_post = $op->compute_array();
 
-                echo '<FORM method="post">';
+                               echo '<FORM method="post">';
 
-                echo $a->show_form($p_post);
-                echo HtmlInput::submit('post_id','Use predefined operation');
-                echo '</form>';
-                exit();
+                               echo $a->show_form($p_post);
+                               echo HtmlInput::submit('post_id', 'Use 
predefined operation');
+                               echo '</form>';
+                               exit();
+                       }
+               }// if case = ''
+               
///////////////////////////////////////////////////////////////////////////
+               // search
+               if ($pCase == 'search')
+               {
+                       html_page_start();
+                       $cn = new Database(dossier::id());
+                       $ledger = new Acc_Ledger($cn, 0);
+                       $_SESSION['g_user'] = 'phpcompta';
+                       $_SESSION['g_pass'] = 'phpcompta';
+                       echo $ledger->search_form('ALL');
+               }
+               
///////////////////////////////////////////////////////////////////////////
+               // reverse
+               // Give yourself the var and check in your tables
+               
///////////////////////////////////////////////////////////////////////////
+               if ($pCase == 'reverse')
+               {
+                       $cn = new Database(dossier::id());
+                       $jr_internal = 'OD-01-272';
+                       try
+                       {
+                               $cn->start();
+                               $jrn_def_id = $cn->get_value('select jr_def_id 
from jrn where jr_internal=$1', array($jr_internal));
+                               $ledger = new Acc_Ledger($cn, $jrn_def_id);
+                               $ledger->jr_id = $cn->get_value('select jr_id 
from jrn where jr_internal=$1', array($jr_internal));
 
-            }
-        }// if case = ''
-        
///////////////////////////////////////////////////////////////////////////
-        // search
-        if ( $pCase  == 'search')
-        {
-            html_page_start();
-            $cn=new Database(dossier::id());
-            $ledger=new Acc_Ledger($cn,0);
-            $_SESSION['g_user']='phpcompta';
-            $_SESSION['g_pass']='phpcompta';
-            echo $ledger->search_form('ALL');
-        }
-        
///////////////////////////////////////////////////////////////////////////
-        // reverse
-        // Give yourself the var and check in your tables
-        
///////////////////////////////////////////////////////////////////////////
-        if ( $pCase=='reverse')
-        {
-            $cn=new Database (dossier::id());
-            $jr_internal='OD-01-272';
-            try
-            {
-                $cn->start();
-                $jrn_def_id=$cn->get_value('select jr_def_id from jrn where 
jr_internal=$1',array($jr_internal));
-                $ledger=new Acc_Ledger($cn,$jrn_def_id);
-                $ledger->jr_id=$cn->get_value('select jr_id from jrn where 
jr_internal=$1',array($jr_internal));
+                               echo "Ouvrez le fichier " . __FILE__ . " à la 
ligne " . __LINE__ . " pour changer jr_internal et vérifier le résultat de 
l'extourne";
 
-                echo "Ouvrez le fichier ".__FILE__." à la ligne ".__LINE__." 
pour changer jr_internal et vérifier le résultat de l'extourne";
+                               $ledger->reverse('01.07.2010');
+                       }
+                       catch (Exception $e)
+                       {
+                               $cn->rollback();
+                               var_dump($e);
+                       }
+                       $cn->commit();
+               }
+       }
 
-                $ledger->reverse('01.07.2010');
-            }
-            catch (Exception $e)
-            {
-                $cn->rollback();
-                var_dump($e);
-            }
-            $cn->commit();
-        }
-    }
-    /**
-     * create an array of the existing cat, to be used in a checkbox form
-     *
-     */
-    static function array_cat()
-    {
-        $r= array(
-                array('cat'=>'VEN','name'=>'Journaux de vente'),
-                array('cat'=>'ACH','name'=>'Journaux d\'achat'),
-                array('cat'=>'FIN','name'=>'Journaux Financier'),
-                array('cat'=>'ODS','name'=>'Journaux d\'Opérations diverses')
-            );
-        return $r;
-    }
-    /**
-     *Retrieve the third : supplier for purchase, customer for sale, bank for 
fin,
-     address@hidden $p_jrn_type type of the ledger FIN, VEN ACH or ODS
-     */
-    function get_tiers($p_jrn_type,$jr_id)
-    {
-      if ( $p_jrn_type == 'ODS') return ' ';
-      $tiers='';
-      switch ($p_jrn_type)
+       /**
+        * create an array of the existing cat, to be used in a checkbox form
+        *
+        */
+       static function array_cat()
        {
-       case 'VEN':
-         $tiers=$this->db->get_value('select max(qs_client) from quant_sold 
join jrnx using (j_id) join jrn on (jr_grpt_id=j_grpt) where 
jrn.jr_id=$1',array($jr_id));
-         break ;
-       case 'ACH':
-         $tiers=$this->db->get_value('select max(qp_supplier) from 
quant_purchase join jrnx using (j_id) join jrn on (jr_grpt_id=j_grpt) where 
jrn.jr_id=$1',array($jr_id));
+               $r = array(
+                       array('cat' => 'VEN', 'name' => 'Journaux de vente'),
+                       array('cat' => 'ACH', 'name' => 'Journaux d\'achat'),
+                       array('cat' => 'FIN', 'name' => 'Journaux Financier'),
+                       array('cat' => 'ODS', 'name' => 'Journaux d\'Opérations 
diverses')
+               );
+               return $r;
+       }
 
-         break ;
-       case 'FIN':
-         $tiers=$this->db->get_value('select qf_other from quant_fin where 
jr_id=$1',array($jr_id));
-         break ;
+       /**
+        * Retrieve the third : supplier for purchase, customer for sale, bank 
for fin,
+        * @param $p_jrn_type type of the ledger FIN, VEN ACH or ODS
+        */
+       function get_tiers($p_jrn_type, $jr_id)
+       {
+               if ($p_jrn_type == 'ODS')
+                       return ' ';
+               $tiers = '';
+               switch ($p_jrn_type)
+               {
+                       case 'VEN':
+                               $tiers = $this->db->get_value('select 
max(qs_client) from quant_sold join jrnx using (j_id) join jrn on 
(jr_grpt_id=j_grpt) where jrn.jr_id=$1', array($jr_id));
+                               break;
+                       case 'ACH':
+                               $tiers = $this->db->get_value('select 
max(qp_supplier) from quant_purchase join jrnx using (j_id) join jrn on 
(jr_grpt_id=j_grpt) where jrn.jr_id=$1', array($jr_id));
 
+                               break;
+                       case 'FIN':
+                               $tiers = $this->db->get_value('select qf_other 
from quant_fin where jr_id=$1', array($jr_id));
+                               break;
+               }
+               if ($this->db->count() == 0)
+                       return '';
+               $name = $this->db->get_value('select ad_value from fiche_detail 
where ad_id=1 and f_id=$1', array($tiers));
+               $first_name = $this->db->get_value('select ad_value from 
fiche_detail where ad_id=32 and f_id=$1', array($tiers));
+               return $name . ' ' . $first_name;
        }
-      if ($this->db->count()==0) return '';
-      $name=$this->db->get_value('select ad_value from fiche_detail where 
ad_id=1 and f_id=$1',array($tiers));
-      $first_name=$this->db->get_value('select ad_value from fiche_detail 
where ad_id=32 and f_id=$1',array($tiers));
-      return $name.' '.$first_name;
-    }
+
        /**
         * @brief listing of all ledgers
         * @return HTML string
@@ -3098,11 +3164,11 @@
        function listing()
        {
                $str_dossier = dossier::get();
-               $base_url="?".dossier::get()."&ac=".$_REQUEST['ac'];
+               $base_url = "?" . dossier::get() . "&ac=" . $_REQUEST['ac'];
 
-               $r="";
+               $r = "";
                $r.='<TABLE>';
-               $r.='<TR><TD class="mtitle"><A class="mtitle" 
HREF="'.$base_url.'&sa=add">' . _('Création') . ' </A></TD></TR>';
+               $r.='<TR><TD class="mtitle"><A class="mtitle" HREF="' . 
$base_url . '&sa=add">' . _('Création') . ' </A></TD></TR>';
                $ret = $this->db->exec_sql("select jrn_def_id,jrn_def_name,
                        
jrn_def_class_deb,jrn_def_class_cred,jrn_type_id,jrn_desc
                        from jrn_def join jrn_type on jrn_def_type=jrn_type_id 
order by jrn_def_name");
@@ -3112,159 +3178,169 @@
                for ($i = 0; $i < $Max; $i++)
                {
                        $l_line = Database::fetch_array($ret, $i);
-                       
$url=$base_url."&sa=detail&p_jrn=".$l_line['jrn_def_id'];
+                       $url = $base_url . "&sa=detail&p_jrn=" . 
$l_line['jrn_def_id'];
                        $r.=sprintf('<TR><TD class="mtitle"><A class="mtitle" 
HREF="%s">%s</A></TD></TR>', $url, h($l_line['jrn_def_name']));
                }
                $r.= "</TABLE>";
                return $r;
        }
+
        /**
         * display detail of a ledger
         *
         */
        function display_ledger()
        {
-               if ( $this->load() == -1 ) {
-                       throw new Exception(_("Journal n'existe pas"),-1);
+               if ($this->load() == -1)
+               {
+                       throw new Exception(_("Journal n'existe pas"), -1);
                }
-               $type=$this->jrn_def_type;
-               $name=$this->jrn_def_name;
-               $code=$this->jrn_def_code;
+               $type = $this->jrn_def_type;
+               $name = $this->jrn_def_name;
+               $code = $this->jrn_def_code;
 
-                               /* widget for searching an account */
-               $wSearch=new IPoste();
-               $wSearch->set_attribute('ipopup','ipop_account');
-               $wSearch->set_attribute('account','p_jrn_class_deb');
-               $wSearch->set_attribute('no_overwrite','1');
-               $wSearch->set_attribute('noquery','1');
-               $wSearch->table=3;
-               $wSearch->name="p_jrn_class_deb";
-               $wSearch->size=20;
-               $wSearch->value=$this->jrn_def_class_deb;
-               $search=$wSearch->input();
+               /* widget for searching an account */
+               $wSearch = new IPoste();
+               $wSearch->set_attribute('ipopup', 'ipop_account');
+               $wSearch->set_attribute('account', 'p_jrn_class_deb');
+               $wSearch->set_attribute('no_overwrite', '1');
+               $wSearch->set_attribute('noquery', '1');
+               $wSearch->table = 3;
+               $wSearch->name = "p_jrn_class_deb";
+               $wSearch->size = 20;
+               $wSearch->value = $this->jrn_def_class_deb;
+               $search = $wSearch->input();
 
-               $wPjPref=new IText();
-               $wPjPref->name='jrn_def_pj_pref';
-               $wPjPref->value=$this->jrn_def_pj_pref;
-               $pj_pref=$wPjPref->input();
+               $wPjPref = new IText();
+               $wPjPref->name = 'jrn_def_pj_pref';
+               $wPjPref->value = $this->jrn_def_pj_pref;
+               $pj_pref = $wPjPref->input();
 
-               $wPjSeq=new INum();
-               $wPjSeq->value=0;
-               $wPjSeq->name='jrn_def_pj_seq';
-               $pj_seq=$wPjSeq->input();
-               $last_seq=$this->get_last_pj();
-               $name=$this->jrn_def_name;
+               $wPjSeq = new INum();
+               $wPjSeq->value = 0;
+               $wPjSeq->name = 'jrn_def_pj_seq';
+               $pj_seq = $wPjSeq->input();
+               $last_seq = $this->get_last_pj();
+               $name = $this->jrn_def_name;
 
-               $hidden= HtmlInput::hidden('p_jrn',$this->id);
-               $hidden.= HtmlInput::hidden('sa','detail');
+               $hidden = HtmlInput::hidden('p_jrn', $this->id);
+               $hidden.= HtmlInput::hidden('sa', 'detail');
                $hidden.= dossier::hidden();
-               $hidden.=HtmlInput::hidden('p_jrn_deb_max_line',10);
-               $hidden.=HtmlInput::hidden('p_ech_lib','echeance');
-               $hidden.=HtmlInput::hidden('p_jrn_type',$type);
+               $hidden.=HtmlInput::hidden('p_jrn_deb_max_line', 10);
+               $hidden.=HtmlInput::hidden('p_ech_lib', 'echeance');
+               $hidden.=HtmlInput::hidden('p_jrn_type', $type);
 
-                               /* Load the card */
-               $card=$this->get_fiche_def();
-               $rdeb=explode(',',$card['deb']);
-               $rcred=explode(',',$card['cred']);
+               /* Load the card */
+               $card = $this->get_fiche_def();
+               $rdeb = explode(',', $card['deb']);
+               $rcred = explode(',', $card['cred']);
                /* Numbering (only FIN) */
-               $num_op=new ICheckBox('numb_operation');
-               if ( $this->jrn_def_num_op==1) $num_op->selected=true;
+               $num_op = new ICheckBox('numb_operation');
+               if ($this->jrn_def_num_op == 1)
+                       $num_op->selected = true;
                /* bank card */
-               $qcode_bank='';
-               if ( $type=='FIN')
+               $qcode_bank = '';
+               if ($type == 'FIN')
                {
-                       $f_id=$this->jrn_def_bank;
-                       if ( isNumber($f_id)==1)
+                       $f_id = $this->jrn_def_bank;
+                       if (isNumber($f_id) == 1)
                        {
-                               $fBank=new Fiche($this->db,$f_id);
-                               $qcode_bank=$fBank->get_quick_code();
+                               $fBank = new Fiche($this->db, $f_id);
+                               $qcode_bank = $fBank->get_quick_code();
                        }
                }
-               $new=false;
-               $cn=$this->db;
+               $new = false;
+               $cn = $this->db;
                echo $hidden;
                require_once('template/param_jrn.php');
+       }
 
-       }
        /**
         * Verify before update
         *
         * @param type $array
         *   'p_jrn' => string '3' (length=1)
-                 'sa' => string 'detail' (length=6)
-                 'gDossier' => string '82' (length=2)
-                 'p_jrn_deb_max_line' => string '10' (length=2)
-                 'p_ech_lib' => string 'echeance' (length=8)
-                 'p_jrn_type' => string 'ACH' (length=3)
-                 'p_jrn_name' => string 'Achat' (length=5)
-                 'jrn_def_pj_pref' => string 'ACH' (length=3)
-                 'jrn_def_pj_seq' => string '0' (length=1)
-                 'FICHECRED' =>
-                       array
-                         0 => string '4' (length=1)
-                 'FICHEDEB' =>
-                       array
-                         0 => string '7' (length=1)
-                         1 => string '5' (length=1)
-                         2 => string '13' (length=2)
-                 'update' => string 'Sauve' (length=5
-        address@hidden is throw is test are not valid
+         'sa' => string 'detail' (length=6)
+         'gDossier' => string '82' (length=2)
+         'p_jrn_deb_max_line' => string '10' (length=2)
+         'p_ech_lib' => string 'echeance' (length=8)
+         'p_jrn_type' => string 'ACH' (length=3)
+         'p_jrn_name' => string 'Achat' (length=5)
+         'jrn_def_pj_pref' => string 'ACH' (length=3)
+         'jrn_def_pj_seq' => string '0' (length=1)
+         'FICHECRED' =>
+         array
+         0 => string '4' (length=1)
+         'FICHEDEB' =>
+         array
+         0 => string '7' (length=1)
+         1 => string '5' (length=1)
+         2 => string '13' (length=2)
+         'update' => string 'Sauve' (length=5
+        * @exception is throw is test are not valid
         */
        function verify_ledger($array)
        {
-               extract ($array);
+               extract($array);
                try
                {
-                       if (isNumber($p_jrn ) == 0)                     throw 
new Exception("Id invalide");
-                       if (isNumber($p_jrn_deb_max_line) == 0) throw new 
Exception ("Nombre de ligne incorrect");
-                       if (trim($p_jrn_name) == "") throw new Exception ("Nom 
de journal invalide");
-                       if ($this->db->get_value("select count(*) from jrn_def 
where jrn_def_name=$1 and jrn_Def_id<>$2",
-                                       array($p_jrn_name,$p_jrn)) > 0) throw 
new Exception ("Un journal avec ce nom existe déjà");
-                       if ($p_jrn_type=='FIN')
+                       if (isNumber($p_jrn) == 0)
+                               throw new Exception("Id invalide");
+                       if (isNumber($p_jrn_deb_max_line) == 0)
+                               throw new Exception("Nombre de ligne 
incorrect");
+                       if (trim($p_jrn_name) == "")
+                               throw new Exception("Nom de journal invalide");
+                       if ($this->db->get_value("select count(*) from jrn_def 
where jrn_def_name=$1 and jrn_Def_id<>$2", array($p_jrn_name, $p_jrn)) > 0)
+                               throw new Exception("Un journal avec ce nom 
existe déjà");
+                       if ($p_jrn_type == 'FIN')
                        {
-                               $a=new Fiche($this->db);
-                               
$result=$a->get_by_qcode(trim(strtoupper($_POST['bank'])),false);
-                               if       ( $result==1)throw new Exception 
("Aucun compte en banque n'est donné");
+                               $a = new Fiche($this->db);
+                               $result = 
$a->get_by_qcode(trim(strtoupper($_POST['bank'])), false);
+                               if ($result == 1)
+                                       throw new Exception("Aucun compte en 
banque n'est donné");
                        }
-
-               } catch(Exception $e)
+               }
+               catch (Exception $e)
                {
                        throw $e;
                }
        }
+
        /**
         * update a ledger
         * @param type $array  normally post
         * @see verify_ledger
         */
-       function update($array='')
+       function update($array = '')
        {
-               if ($array == null) throw new Exception ('save cannot use a 
empty array');
+               if ($array == null)
+                       throw new Exception('save cannot use a empty array');
 
-               extract ($array);
-               $this->jrn_def_id=$p_jrn;
-               $this->jrn_def_name=$p_jrn_name;
-               $this->jrn_def_ech_lib=$p_ech_lib;
-               $this->jrn_def_max_line_deb=$p_jrn_deb_max_line;
-               $this->jrn_def_type=$p_jrn_type;
-               $this->jrn_def_pj_pref=$jrn_def_pj_pref;
-               
$this->jrn_def_fiche_deb=(isset($FICHEDEB))?join($FICHEDEB,','):"";
-               switch($this->jrn_def_type)
+               extract($array);
+               $this->jrn_def_id = $p_jrn;
+               $this->jrn_def_name = $p_jrn_name;
+               $this->jrn_def_ech_lib = $p_ech_lib;
+               $this->jrn_def_max_line_deb = $p_jrn_deb_max_line;
+               $this->jrn_def_type = $p_jrn_type;
+               $this->jrn_def_pj_pref = $jrn_def_pj_pref;
+               $this->jrn_def_fiche_deb = (isset($FICHEDEB)) ? join($FICHEDEB, 
',') : "";
+               switch ($this->jrn_def_type)
                {
                        case 'ACH':
                        case 'VEN':
-                               
$this->jrn_def_fiche_cred=(isset($FICHECRED))?join($FICHECRED,','):'';
+                               $this->jrn_def_fiche_cred = (isset($FICHECRED)) 
? join($FICHECRED, ',') : '';
                                break;
                        case 'ODS':
-                               $this->jrn_def_class_deb=$p_jrn_class_deb;
+                               $this->jrn_def_class_deb = $p_jrn_class_deb;
                                break;
                        case 'FIN':
-                               $a=new Fiche($this->db);
-                               
$result=$a->get_by_qcode(trim(strtoupper($_POST['bank'])),false);
-                               $bank=$a->id;
-                               $this->jrn_def_bank=$bank;
-                               if ( $result==-1)throw new Exception ("Aucun 
compte en banque n'est donné");
-                               
$this->jrn_def_num_op=(isset($numb_operation))?1:0;
+                               $a = new Fiche($this->db);
+                               $result = 
$a->get_by_qcode(trim(strtoupper($_POST['bank'])), false);
+                               $bank = $a->id;
+                               $this->jrn_def_bank = $bank;
+                               if ($result == -1)
+                                       throw new Exception("Aucun compte en 
banque n'est donné");
+                               $this->jrn_def_num_op = 
(isset($numb_operation)) ? 1 : 0;
                                break;
                }
 
@@ -3272,78 +3348,79 @@
                //Reset sequence if needed
                if ($jrn_def_pj_seq != 0)
                {
-                       
$Res=$this->db->alter_seq("s_jrn_pj".$p_jrn,$jrn_def_pj_seq);
+                       $Res = $this->db->alter_seq("s_jrn_pj" . $p_jrn, 
$jrn_def_pj_seq);
                }
        }
-       function input_paid($nofieldset=0)
-    {
-        $r='';
-               if ( $nofieldset==0)
+
+       function input_paid($nofieldset = 0)
+       {
+               $r = '';
+               if ($nofieldset == 0)
                {
                        $r.='<fieldset id="payment"> ';
                }
-        $r.='<legend> '._('Payé par').' </legend>';
-        $mp=new Acc_Payment($this->db);
-        $mp->set_parameter('ledger_source',$this->id);
-        $r.=$mp->select();
-        if ( $nofieldset==0)
+               $r.='<legend> ' . _('Payé par') . ' </legend>';
+               $mp = new Acc_Payment($this->db);
+               $mp->set_parameter('ledger_source', $this->id);
+               $r.=$mp->select();
+               if ($nofieldset == 0)
                        $r.='</fieldset>';
-        return $r;
-    }
+               return $r;
+       }
 
        /**
         * display screen to enter a new ledger
         */
        function input_new()
        {
-                       $wSearch=new IPoste();
-                       $wSearch->table=3;
-                       $wSearch->set_attribute('ipopup','ipop_account');
-                       $wSearch->set_attribute('account','p_jrn_class_deb');
-                       $wSearch->set_attribute('no_overwrite','1');
-                       $wSearch->set_attribute('noquery','1');
+               $wSearch = new IPoste();
+               $wSearch->table = 3;
+               $wSearch->set_attribute('ipopup', 'ipop_account');
+               $wSearch->set_attribute('account', 'p_jrn_class_deb');
+               $wSearch->set_attribute('no_overwrite', '1');
+               $wSearch->set_attribute('noquery', '1');
 
-                       $wSearch->name="p_jrn_class_deb";
-                       $wSearch->size=20;
+               $wSearch->name = "p_jrn_class_deb";
+               $wSearch->size = 20;
 
-                       $search=$wSearch->input();
+               $search = $wSearch->input();
 
-                       /* construct all the hidden */
-                       $hidden= HtmlInput::hidden('p_jrn',-1);
-                       $hidden.= HtmlInput::hidden('p_action','jrn');
-                       $hidden.= HtmlInput::hidden('sa','add');
-                       $hidden.= dossier::hidden();
-                       $hidden.=HtmlInput::hidden('p_jrn_deb_max_line',10);
-                       $hidden.=HtmlInput::hidden('p_ech_lib','echeance');
+               /* construct all the hidden */
+               $hidden = HtmlInput::hidden('p_jrn', -1);
+               $hidden.= HtmlInput::hidden('p_action', 'jrn');
+               $hidden.= HtmlInput::hidden('sa', 'add');
+               $hidden.= dossier::hidden();
+               $hidden.=HtmlInput::hidden('p_jrn_deb_max_line', 10);
+               $hidden.=HtmlInput::hidden('p_ech_lib', 'echeance');
 
-                       /* properties of the ledger */
-                       $name="";
-                       $code="";
-                       $wType=new ISelect();
-                       $wType->value=$this->db->make_array('select 
jrn_type_id,jrn_desc from jrn_type');
-                       $wType->name="p_jrn_type";
-                       $type=$wType->input();
-                       $rcred=$rdeb=array();
-                       $wPjPref=new IText();
-                       $wPjPref->name='jrn_def_pj_pref';
-                       $pj_pref=$wPjPref->input();
-                       $pj_seq='';
-                       $last_seq=0;
-                       $new=true;
-                       /* bank card */
-                       $qcode_bank='';
-                       /* Numbering (only FIN) */
-                       $num_op=new ICheckBox('numb_operation');
-                       echo dossier::hidden();
-                       echo HtmlInput::hidden('ac',$_REQUEST['ac']);
-                       echo HtmlInput::hidden('p_jrn',-1);
-                       echo HtmlInput::hidden('sa','add');
+               /* properties of the ledger */
+               $name = "";
+               $code = "";
+               $wType = new ISelect();
+               $wType->value = $this->db->make_array('select 
jrn_type_id,jrn_desc from jrn_type');
+               $wType->name = "p_jrn_type";
+               $type = $wType->input();
+               $rcred = $rdeb = array();
+               $wPjPref = new IText();
+               $wPjPref->name = 'jrn_def_pj_pref';
+               $pj_pref = $wPjPref->input();
+               $pj_seq = '';
+               $last_seq = 0;
+               $new = true;
+               /* bank card */
+               $qcode_bank = '';
+               /* Numbering (only FIN) */
+               $num_op = new ICheckBox('numb_operation');
+               echo dossier::hidden();
+               echo HtmlInput::hidden('ac', $_REQUEST['ac']);
+               echo HtmlInput::hidden('p_jrn', -1);
+               echo HtmlInput::hidden('sa', 'add');
 
-                       $cn=$this->db;
+               $cn = $this->db;
 
-                       require_once('template/param_jrn.php');
+               require_once('template/param_jrn.php');
+       }
 
-       }
        /**
         * Insert a new ledger
         * @param type $array normally $_POST
@@ -3352,38 +3429,40 @@
        function save_new($array)
        {
                $this->load();
-               extract ($array);
-               $this->jrn_def_id=-1;
-               $this->jrn_def_name=$p_jrn_name;
-               $this->jrn_def_ech_lib=$p_ech_lib;
-               $this->jrn_def_max_line_deb=$p_jrn_deb_max_line;
-               $this->jrn_def_type=$p_jrn_type;
-               $this->jrn_def_pj_pref=$jrn_def_pj_pref;
-               
$this->jrn_def_fiche_deb=(isset($FICHEDEB))?join($FICHEDEB,','):"";
-               
$this->jrn_def_code=sprintf("%s%02d",trim(substr($this->jrn_def_type,0,1)),Acc_Ledger::next_number($this->db,$this->jrn_def_type));
+               extract($array);
+               $this->jrn_def_id = -1;
+               $this->jrn_def_name = $p_jrn_name;
+               $this->jrn_def_ech_lib = $p_ech_lib;
+               $this->jrn_def_max_line_deb = $p_jrn_deb_max_line;
+               $this->jrn_def_type = $p_jrn_type;
+               $this->jrn_def_pj_pref = $jrn_def_pj_pref;
+               $this->jrn_def_fiche_deb = (isset($FICHEDEB)) ? join($FICHEDEB, 
',') : "";
+               $this->jrn_def_code = sprintf("%s%02d", 
trim(substr($this->jrn_def_type, 0, 1)), Acc_Ledger::next_number($this->db, 
$this->jrn_def_type));
 
-               switch($this->jrn_def_type)
+               switch ($this->jrn_def_type)
                {
                        case 'ACH':
                        case 'VEN':
-                               
$this->jrn_def_fiche_cred=(isset($FICHECRED))?join($FICHECRED,','):'';
+                               $this->jrn_def_fiche_cred = (isset($FICHECRED)) 
? join($FICHECRED, ',') : '';
 
                                break;
                        case 'ODS':
-                               $this->jrn_def_class_deb=$p_jrn_class_deb;
+                               $this->jrn_def_class_deb = $p_jrn_class_deb;
                                break;
                        case 'FIN':
-                               $a=new Fiche($this->db);
-                               
$result=$a->get_by_qcode(trim(strtoupper($_POST['bank'])),false);
-                               $bank=$a->id;
-                               $this->jrn_def_bank=$bank;
-                               if ( $result==-1)throw new Exception ("Aucun 
compte en banque n'est donné");
-                               
$this->jrn_def_num_op=(isset($numb_operation))?1:0;
+                               $a = new Fiche($this->db);
+                               $result = 
$a->get_by_qcode(trim(strtoupper($_POST['bank'])), false);
+                               $bank = $a->id;
+                               $this->jrn_def_bank = $bank;
+                               if ($result == -1)
+                                       throw new Exception("Aucun compte en 
banque n'est donné");
+                               $this->jrn_def_num_op = 
(isset($numb_operation)) ? 1 : 0;
                                break;
                }
 
                parent::insert();
        }
+
        /**
         * delete a ledger IF is not already used
         * @exeption : cannot delete
@@ -3392,14 +3471,14 @@
        {
                try
                {
-                       if ( $this->db->get_value("select count(jr_id) from jrn 
where jr_def_id=$1",array($this->jrn_def_id))>0)
-                                       throw new Exception("Impossible 
d'effacer un journal qui contient des opérations");
+                       if ($this->db->get_value("select count(jr_id) from jrn 
where jr_def_id=$1", array($this->jrn_def_id)) > 0)
+                               throw new Exception("Impossible d'effacer un 
journal qui contient des opérations");
                        parent::delete();
                }
-               catch(Exception $e)
+               catch (Exception $e)
                {
                        throw $e;
                }
        }
 
-       }
+}

Modified: phpcompta/trunk/include/class_acc_ledger_purchase.php
===================================================================
--- phpcompta/trunk/include/class_acc_ledger_purchase.php       2012-06-21 
17:14:48 UTC (rev 4972)
+++ phpcompta/trunk/include/class_acc_ledger_purchase.php       2012-06-21 
18:42:07 UTC (rev 4973)
@@ -472,7 +472,7 @@
 
                 // always save quantity but in withStock we can find
                 // what card need a stock management
-                if ( $g_parameter->MY_STOCK='Y')
+                if ( $g_parameter->MY_STOCK='Y'&& isset ($repo))
                     
Stock_Goods::insert_goods(array('db'=>$this->db,'j_id'=>$j_id,'goods'=>${'e_march'.$i},'quant'=>$nNeg*${'e_quant'.$i},'dir'=>'d','repo'=>$repo))
 ;
 
                 if ( $g_parameter->MY_ANALYTIC != "nu" )

Modified: phpcompta/trunk/include/class_acc_ledger_sold.php
===================================================================
--- phpcompta/trunk/include/class_acc_ledger_sold.php   2012-06-21 17:14:48 UTC 
(rev 4972)
+++ phpcompta/trunk/include/class_acc_ledger_sold.php   2012-06-21 18:42:07 UTC 
(rev 4973)
@@ -350,13 +350,13 @@
                        {"e_quant".$i
                        }
                        <0)?-1:1;
-                
+
                 // always save quantity but in withStock we can find
                 // what card need a stock management
-                if ( $g_parameter->MY_STOCK='Y')
+                if ( $g_parameter->MY_STOCK='Y' && isset ($repo))
                     
Stock_Goods::insert_goods(array('db'=>$this->db,'j_id'=>$j_id,'goods'=>${'e_march'.$i},'quant'=>$nNeg*${'e_quant'.$i},'dir'=>'c','repo'=>$repo))
 ;
-                    
 
+
                 if ( $g_parameter->MY_ANALYTIC != "nu" )
                 {
                     // for each item, insert into operation_analytique */

Modified: phpcompta/trunk/sql/upgrade.sql
===================================================================
--- phpcompta/trunk/sql/upgrade.sql     2012-06-21 17:14:48 UTC (rev 4972)
+++ phpcompta/trunk/sql/upgrade.sql     2012-06-21 18:42:07 UTC (rev 4973)
@@ -439,4 +439,31 @@
              me_code, me_code_dep, p_id, p_order, p_type_display, pm_default)
     VALUES ('CFGDOCST', 'DIVPARM', 2,9, 'E', 0);
 
-alter sequence document_state_s_id_seq restart with 100;
\ No newline at end of file
+alter sequence document_state_s_id_seq restart with 100;
+
+CREATE INDEX quant_purchase_jrn_fki
+  ON quant_purchase
+  USING btree
+  (qp_internal );
+
+
+
+ALTER TABLE quant_purchase DROP CONSTRAINT quant_purchase_qp_internal_fkey;
+
+
+ALTER TABLE quant_purchase
+  ADD CONSTRAINT quant_purchase_qp_internal_fkey FOREIGN KEY (qp_internal)
+      REFERENCES jrn (jr_internal) MATCH SIMPLE
+      ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+
+ALTER TABLE quant_sold DROP CONSTRAINT quant_sold_qs_internal_fkey;
+
+ALTER TABLE quant_sold
+  ADD CONSTRAINT quant_sold_qs_internal_fkey FOREIGN KEY (qs_internal)
+      REFERENCES jrn (jr_internal) MATCH SIMPLE
+      ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+CREATE INDEX quant_sold_jrn_fki
+  ON quant_sold
+  USING btree
+  (qs_internal );
\ No newline at end of file



---
PhpCompta est un logiciel de comptabilité libre en ligne (full web)
Projet opensource http://www.phpcompta.eu



reply via email to

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