noalyss-commit
[Top][All Lists]
Advanced

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

[Noalyss-commit] [noalyss] 08/12: code cleaning and replace $_SERVER['SC


From: Dany De Bontridder
Subject: [Noalyss-commit] [noalyss] 08/12: code cleaning and replace $_SERVER['SCRIPT_FILENAME'] by $_SERVER['PHP_SELF'] SCRIPT_FILENAME in a FPM environment is the CGI script
Date: Fri, 15 Jan 2021 09:40:07 -0500 (EST)

sparkyx pushed a commit to branch master
in repository noalyss.

commit c7c518a19dee881f71307de837a1dec28b4c0146
Author: sparkyx <danydb@noalyss.eu>
AuthorDate: Tue Jan 12 11:11:11 2021 +0100

    code cleaning and replace $_SERVER['SCRIPT_FILENAME'] by 
$_SERVER['PHP_SELF']
    SCRIPT_FILENAME in a FPM environment is the CGI script
---
 include/action.common.inc.php          |    8 +-
 include/ajax/ajax_search_operation.php |    2 +-
 include/class/acc_ledger.class.php     |    3 +-
 include/class/document.class.php       | 2035 +++++++++++++++++---------------
 include/class/fiche.class.php          |   61 +-
 include/class/follow_up.class.php      |    8 +-
 include/class/user.class.php           |   71 +-
 include/company.inc.php                |    2 +-
 include/export/export_document.php     |    2 +-
 include/lib/sort_table.class.php       |    2 +-
 include/lib/user_common.php            |   34 +-
 include/template/menu.php              |  108 +-
 12 files changed, 1243 insertions(+), 1093 deletions(-)

diff --git a/include/action.common.inc.php b/include/action.common.inc.php
index ce874a8..4e568e5 100644
--- a/include/action.common.inc.php
+++ b/include/action.common.inc.php
@@ -96,7 +96,7 @@ if (isset($_POST['generate']))
        }
        else
        {
-               $act->Update();
+               $act->update();
        }
         $doc_mod=$http->post('doc_mod',"number");
        $act->generate_document($doc_mod, $_POST);
@@ -117,12 +117,12 @@ if (isset($_POST['corr']))
 // if this page is called from another menu (customer, supplier,...)
 // a button back is added
 //----------------------------------------------------------------------
-// Update the detail
+// update the detail
 // Add a new action related to this one or update
 //----------------------------------------------------------------------
 if ($sub_action == "update")
 {
-       // Update the modification
+       // update the modification
        if (isset($_POST['save']))
        {
                $act2 = new Follow_Up($cn);
@@ -138,7 +138,7 @@ if ($sub_action == "update")
                put_global(array(array('key' => "sa", "value" => "detail")));
                 try {
                     $act2->verify() ;
-                    $act2->Update() ;
+                    $act2->update() ;
                 }
                 catch (Exception $e)
                 {
diff --git a/include/ajax/ajax_search_operation.php 
b/include/ajax/ajax_search_operation.php
index f5a541a..4ab5312 100644
--- a/include/ajax/ajax_search_operation.php
+++ b/include/ajax/ajax_search_operation.php
@@ -38,7 +38,7 @@ require_once NOALYSS_INCLUDE.'/class/user.class.php';
 // display a search box
 
 
-$base=basename($_SERVER['SCRIPT_NAME']);
+$base=basename($_SERVER['PHP_SELF']);
 $inside=false;
 $tiers=$http->get("tiers", "string", "");
 // With the amount id, we find the amount in a html elt
diff --git a/include/class/acc_ledger.class.php 
b/include/class/acc_ledger.class.php
index 995423a..d7efb99 100644
--- a/include/class/acc_ledger.class.php
+++ b/include/class/acc_ledger.class.php
@@ -791,7 +791,6 @@ class Acc_Ledger  extends jrn_def_sql
         $op=new Pre_operation( $this->db);
         $op->set_p_jrn($this->id);
         $op->set_jrn_type("ODS");
-        $op->set_od_direct('t');
 
         $url=http_build_query(
                 array('action'=>'use_opd', 
@@ -1652,7 +1651,7 @@ class Acc_Ledger  extends jrn_def_sql
         $filename="";
         $doc->Generate($p_array, $p_array['e_pj']);
         // Move the document to the jrn
-        $doc->MoveDocumentPj($internal);
+        $doc->moveDocumentPj($internal);
         // Update the comment with invoice number, if the comment is empty
         if (!isset($e_comm)||strlen(trim($e_comm))==0)
         {
diff --git a/include/class/document.class.php b/include/class/document.class.php
index 7f4f1f8..9da8e48 100644
--- a/include/class/document.class.php
+++ b/include/class/document.class.php
@@ -1,4 +1,5 @@
 <?php
+
 /*
  *   This file is part of NOALYSS.
  *
@@ -15,7 +16,7 @@
  *   You should have received a copy of the GNU General Public License
  *   along with NOALYSS; if not, write to the Free Software
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
+ */
 // Copyright Author Dany De Bontridder danydb@aevalys.eu
 require_once NOALYSS_INCLUDE.'/class/noalyss_parameter_folder.class.php';
 require_once NOALYSS_INCLUDE.'/class/acc_account_ledger.class.php';
@@ -24,50 +25,56 @@ require_once NOALYSS_INCLUDE.'/class/acc_tva.class.php';
 require_once NOALYSS_INCLUDE.'/class/user.class.php';
 require_once NOALYSS_INCLUDE.'/lib/zip_extended.class.php';
 
-/*! \file
+/* ! \file
  * \brief Class Document corresponds to the table document
  */
-/*! \brief Class Document corresponds to the table document
+/* ! \brief Class Document corresponds to the table document
  */
+
 class Document
 {
-    var $db;          /*!< $db Database connexion*/
-    var $d_id;        /*!< $d_id Document id */
-    var $ag_id;       /*!< $ag_id action_gestion.ag_id (pk) */
-    var $d_mimetype;  /*!< $d_mimetype  */
-    var $d_filename;  /*!< $d_filename */
-    var $d_lob;       /*!< $d_lob the oid of the lob */
-    var $d_description;       /*!< Description of the file*/
-    var $d_number;    /*!< $d_number number of the document */
-    var $md_id;       /*!< $md_id document's template */
-    private $counter; /*!< counter for the items ( goods ) */
-   
+
+    var $db;          /* !< $db Database connexion */
+    var $d_id;        /* !< $d_id Document id */
+    var $ag_id;       /* !< $ag_id action_gestion.ag_id (pk) */
+    var $d_mimetype;  /* !< $d_mimetype  */
+    var $d_filename;  /* !< $d_filename */
+    var $d_lob;       /* !< $d_lob the oid of the lob */
+    var $d_description;       /* !< Description of the file */
+    var $d_number;    /* !< $d_number number of the document */
+    var $md_id;       /* !< $md_id document's template */
+    private $counter; /* !< counter for the items ( goods ) */
+
     /* Constructor
      * \param $p_cn Database connection
      */
-    function __construct($p_cn,$p_d_id=0)
+
+    function __construct($p_cn, $p_d_id=0)
     {
         $this->db=$p_cn;
         $this->d_id=$p_d_id;
-        
+
         // counter for MARCH_NEXT
         $this->counter=0;
     }
-    
-    /*!\brief insert a minimal document and set the d_id
+
+    /* !\brief insert a minimal document and set the d_id
      */
+
     function blank()
     {
         $this->d_id=$this->db->get_next_seq("document_d_id_seq");
         // affect a number
         
$this->d_number=$this->db->get_next_seq("seq_doc_type_".$this->md_type);
-        $sql=sprintf('insert into document(d_id,ag_id,d_number) 
values(%d,%d,%d)',
-                     $this->d_id,
-                     $this->ag_id,
-                     $this->d_number);
-        $this->db->exec_sql($sql);
+        $sql='insert into document(d_id,ag_id,d_number) values($1,$2,$3)';
 
+        $this->db->exec_sql($sql,
+                array
+            ($this->d_id,
+            $this->ag_id,
+            $this->d_number));
     }
+
     /**
      * Insert the receipt number into the filename , each generated file
      * will have the name of the template (model) + receipt number)
@@ -75,42 +82,46 @@ class Document
      * @param type $filename the name of the file
      * @return string
      */
-    function compute_filename($pj,$filename)
+    function compute_filename($pj, $filename)
     {
-            foreach (array('/','*','<','>',';',',','\\','.',':','(',')',' 
','[',']') as $i) {
-                    $pj= str_replace($i, "-",$pj);
-            }
-            // save the suffix
-            $pos_prefix=strrpos($filename,".");
-            if ($pos_prefix == 0) $pos_prefix=strlen($filename);
-            $filename_no=substr($filename,0,$pos_prefix);
-            $filename_suff=substr($filename,$pos_prefix,strlen($filename));
-            $new_filename=  strtolower($filename_no."-".$pj.$filename_suff);
-            return $new_filename;
+        foreach (array('/', '*', '<', '>', ';', ',', '\\', '.', ':', '(', ')', 
' ', '[', ']') as $i)
+        {
+            $pj=str_replace($i, "-", $pj);
+        }
+        // save the suffix
+        $pos_prefix=strrpos($filename, ".");
+        if ($pos_prefix==0)
+            $pos_prefix=strlen($filename);
+        $filename_no=substr($filename, 0, $pos_prefix);
+        $filename_suff=substr($filename, $pos_prefix, strlen($filename));
+        $new_filename=strtolower($filename_no."-".$pj.$filename_suff);
+        return $new_filename;
     }
-    /*!
-     * \brief Generate the document, Call $this-\>Replace to replace
+
+    /* !
+     * \brief Generate the document, Call $this-\>replace to replace
      *        tag by value
-     *@param p_array contains the data normally it is the $_POST
-     *@param $p_filename contains the new filename
+     * @param p_array contains the data normally it is the $_POST
+     * @param $p_filename contains the new filename
      * \return an string : the url where the generated doc can be found, the 
name
      * of the file and his mimetype
      */
-    function Generate($p_array,$p_filename="")
+
+    function generate($p_array, $p_filename="")
     {
         // create a temp directory in /tmp to unpack file and to parse it
-        $dirname=tempnam($_ENV['TMP'],'doc_');
+        $dirname=tempnam($_ENV['TMP'], 'doc_');
 
 
         unlink($dirname);
-        mkdir ($dirname);
+        mkdir($dirname);
         // Retrieve the lob and save it into $dirname
         $this->db->start();
         $dm_info="select md_name,md_type,md_lob,md_filename,md_mimetype
-                 from document_modele where md_id=".$this->md_id;
-        $Res=$this->db->exec_sql($dm_info);
+                 from document_modele where md_id=$1";
+        $Res=$this->db->exec_sql($dm_info, [$this->md_id]);
 
-        $row=Database::fetch_array($Res,0);
+        $row=Database::fetch_array($Res, 0);
         $this->d_lob=$row['md_lob'];
         $this->d_filename=$row['md_filename'];
         $this->d_mimetype=$row['md_mimetype'];
@@ -119,22 +130,30 @@ class Document
 
         chdir($dirname);
         $filename=$row['md_filename'];
-        
$exp=$this->db->lo_export($row['md_lob'],$dirname.DIRECTORY_SEPARATOR.$filename);
-        if ( $exp === false ) echo_warning( __FILE__.":".__LINE__."Export NOK 
$filename");
+        $exp=$this->db->lo_export($row['md_lob'], 
$dirname.DIRECTORY_SEPARATOR.$filename);
+        if ($exp===false)
+        {
+            record_log(sprintf('D1 ,  export failed %s', $filename));
+            throw new Exception(sprintf(_("Export a échoué pour %s", 
$filename)));
+        }
 
         $type="n";
         // if the doc is a OOo, we need to unzip it first
         // and the name of the file to change is always content.xml
-        if ( strpos($row['md_mimetype'],'vnd.oasis') != 0 )
+        if (strpos($row['md_mimetype'], 'vnd.oasis')!=0)
         {
             ob_start();
-           $zip = new Zip_Extended;
-           if ($zip->open($filename) === TRUE) {
-             $zip->extractTo($dirname.DIRECTORY_SEPARATOR);
-             $zip->close();
-           } else {
-             echo __FILE__.":".__LINE__."cannot unzip model ".$filename;
-           }
+            $zip=new Zip_Extended;
+            if ($zip->open($filename)===TRUE)
+            {
+                $zip->extractTo($dirname.DIRECTORY_SEPARATOR);
+                $zip->close();
+            }
+            else
+            {
+                record_log(sprintf('D2  unzip failed %s', $filename));
+                throw new Exception(sprintf(_("Décompression a échoué %s", 
$filename)));
+            }
 
             // Remove the file we do  not need anymore
             unlink($filename);
@@ -143,43 +162,47 @@ class Document
             $type="OOo";
         }
         else
+        {
             $file_to_parse=$filename;
+        }
         // affect a number
         
$this->d_number=$this->db->get_next_seq("seq_doc_type_".$row['md_type']);
 
         // parse the document - return the doc number ?
-        $this->ParseDocument($dirname,$file_to_parse,$type,$p_array);
+        $this->parseDocument($dirname, $file_to_parse, $type, $p_array);
 
         $this->db->commit();
         // if the doc is a OOo, we need to re-zip it
-        if ( strpos($row['md_mimetype'],'vnd.oasis') != 0 )
+        if (strpos($row['md_mimetype'], 'vnd.oasis')!=0)
         {
             ob_start();
-           $zip = new Zip_Extended;
-            $res = $zip->open($filename, ZipArchive::CREATE);
-            if($res !== TRUE)
-             {
-               throw new Exception ( __FILE__.":".__LINE__."cannot recreate 
zip");
-             }
-           $zip->add_recurse_folder($dirname.DIRECTORY_SEPARATOR);
-           $zip->close();
+            $zip=new Zip_Extended;
+            $res=$zip->open($filename, ZipArchive::CREATE);
+            if ($res!==TRUE)
+            {
+                record_log(sprintf('D3  zip failed %s', $filename));
+                throw new Exception(_('Echec compression'));
+            }
+            $zip->add_recurse_folder($dirname.DIRECTORY_SEPARATOR);
+            $zip->close();
 
             ob_end_clean();
 
             $file_to_parse=$filename;
         }
-       if ( $p_filename !="") {
-                       $this->d_filename=$this->compute_filename($p_filename, 
$this->d_filename);
-       }
-        $this->SaveGenerated($dirname.DIRECTORY_SEPARATOR.$file_to_parse);
+        if ($p_filename!="")
+        {
+            $this->d_filename=$this->compute_filename($p_filename, 
$this->d_filename);
+        }
+        $this->saveGenerated($dirname.DIRECTORY_SEPARATOR.$file_to_parse);
         // Invoice
-        
$href=http_build_query(array('gDossier'=>Dossier::id(),"d_id"=>$this->d_id,'act'=>'RAW:document'));
+        $href=http_build_query(array('gDossier'=>Dossier::id(), 
"d_id"=>$this->d_id, 'act'=>'RAW:document'));
         $ret='<A class="mtitle" 
HREF="export.php?'.$href.'">'._('Document').'</A>';
-        
+
         return $ret;
     }
 
-    /*! ParseDocument
+    /* ! parseDocument
      * \brief This function parse a document and replace all
      *        the predefined tags by a value. This functions
      *        generate diffent documents (invoice, order, letter)
@@ -190,10 +213,11 @@ class Document
      * \param $p_type For the OOo document the tag are &lt and &gt instead of 
< and >
      * \param $p_array variable from $_POST
      */
-    function ParseDocument($p_dir,$p_file,$p_type,$p_array)
+
+    function parseDocument($p_dir, $p_file, $p_type, $p_array)
     {
 
-        /*!\note Replace in the doc the tags by their values.
+        /* !\note replace in the doc the tags by their values.
          *  - MY_*   table parameter
          *  - ART_VEN* table quant_sold for invoice
          *  - CUST_* table quant_sold and fiche for invoice
@@ -201,36 +225,37 @@ class Document
          */
         // open the document
         $infile_name=$p_dir.DIRECTORY_SEPARATOR.$p_file;
-        $h=fopen($infile_name,"r");
+        $h=fopen($infile_name, "r");
 
         // check if tmpdir exist otherwise create it
         $temp_dir=$_ENV['TMP'];
-        if ( is_dir($temp_dir) == false )
+        if (is_dir($temp_dir)==false)
         {
-            if ( mkdir($temp_dir) == false )
+            if (mkdir($temp_dir)==false)
             {
-                $msg=_("Ne peut pas créer le répertoire ".$temp_dir); 
+                $msg=sprintf(_("Ne peut pas créer le répertoire %s", 
$temp_dir));
+                report_log("D221".$msg);
                 throw new Exception($msg);
             }
         }
         // Compute output_name
-        $output_name=tempnam($temp_dir,"gen_doc_");
-        $output_file=fopen($output_name,"w+");
+        $output_name=tempnam($temp_dir, "gen_doc_");
+        $output_file=fopen($output_name, "w+");
         // check if the opening is sucessfull
-        if (  $h === false )
+        if ($h===false)
         {
-            echo __FILE__.":".__LINE__."cannot open $p_dir $p_file ";
-            $msg=_("Ne peut pas ouvrir $p_dir $p_file"); 
+            $msg=sprintf(_("Ne peut pas ouvrir [%s] [%s]"), $p_dir, $p_file);
+            report_log("D232".$msg);
             throw new Exception($msg);
         }
-        if ( $output_file == false)
+        if ($output_file==false)
         {
-            $msg=_("Ne peut pas ouvrir $p_dir $p_file"); 
-            echo $msg;
+            $msg=sprintf(_("Ne peut pas ouvrir [%s] [%s]"), $p_dir, 
$output_name);
+            record_log($msg);
             throw new Exception($msg);
         }
         // compute the regex
-        if ( $p_type=='OOo')
+        if ($p_type=='OOo')
         {
             
$regex="/=*&lt;&lt;[A-Z]+_*[A-Z]*_*[A-Z]*_*[A-Z]*_*[0-9]*&gt;&gt;/i";
             $lt="&lt;";
@@ -243,69 +268,70 @@ class Document
             $gt=">";
         }
         //read the file
-        while(! feof($h))
-         {
+        while (!feof($h))
+        {
             // replace the tag
             $buffer=fgets($h);
             // search in the buffer the magic << and >>
             // while preg_match_all finds something to replace
-            while ( preg_match_all ($regex,$buffer,$f) >0  )
-             {
-
-
-                foreach ( $f as $apattern )
-                 {
+            while (preg_match_all($regex, $buffer, $f)>0)
+            {
 
+                foreach ($f as $apattern)
+                {
 
-                   foreach($apattern as $pattern)
-                     {
+                    foreach ($apattern as $pattern)
+                    {
 
 
-                       $to_remove=$pattern;
-                       // we remove the < and > from the pattern
-                       $tag=str_replace($lt,'',$pattern);
-                       $tag=str_replace($gt,'',$tag);
+                        $to_remove=$pattern;
+                        // we remove the < and > from the pattern
+                        $tag=str_replace($lt, '', $pattern);
+                        $tag=str_replace($gt, '', $tag);
 
 
-                       // if the pattern if found we replace it
-                       $value=$this->Replace($tag,$p_array);
-                       if ( strpos($value,'ERROR') != false )            
$value="";
+                        // if the pattern if found we replace it
+                        $value=$this->replace($tag, $p_array);
+                        if (strpos($value, 'ERROR')!=false)
+                            $value="";
                         /*
                          * Change type of cell to numeric
                          *  allow numeric cel in ODT for the formatting and 
formula
                          */
-                        
-                        $buffer=\Document::replace_value($buffer,$pattern, 
$value, 1,$p_type);
-                     }
-                 }
-             }
-            // write into the output_file
-            fwrite($output_file,$buffer);
 
-         }
+                        $buffer=\Document::replace_value($buffer, $pattern, 
$value, 1, $p_type);
+                    }
+                }
+            }
+            // write into the output_file
+            fwrite($output_file, $buffer);
+        }
         fclose($h);
         fclose($output_file);
-        if ( ($ret=copy ($output_name,$infile_name)) == FALSE )
+        if (($ret=copy($output_name, $infile_name))==FALSE)
         {
-            echo _('Ne peut pas sauver '.$output_name.' vers '.$infile_name.' 
code d\'erreur ='.$ret);
+            $msg="D299 ".sprintf(_('Ne peut pas sauver [%s] vers [%s] code 
erreur = [%s]'), $output_name, $infile_name,
+                            $ret);
+            record_log($msg);
+            throw new Exception($msg);
         }
-
-
     }
-    /*! SaveGenerated
+
+    /* ! saveGenerated
      * \brief Save the generated Document
      * \param $p_file is the generated file
      *
      *
      * \return 0 if no error otherwise 1
      */
-    function SaveGenerated($p_file)
+
+    function saveGenerated($p_file)
     {
         // We save the generated file
         $doc=new Document($this->db);
         $this->db->start();
         $this->d_lob=$this->db->lo_import($p_file);
-        if ( $this->d_lob == false )
+        if ($this->d_lob==false)
         {
             echo "ne peut pas importer [$p_file]";
             return 1;
@@ -314,46 +340,50 @@ class Document
         $sql="insert into document(ag_id,d_lob,d_number,d_filename,d_mimetype)
              values ($1,$2,$3,$4,$5)";
 
-        $this->db->exec_sql($sql,      array($this->ag_id,
-                                             $this->d_lob,
-                                             $this->d_number,
-                                             $this->d_filename,
-                                             $this->d_mimetype));
+        $this->db->exec_sql($sql,
+                array($this->ag_id,
+            $this->d_lob,
+            $this->d_number,
+            $this->d_filename,
+            $this->d_mimetype));
         $this->d_id=$this->db->get_current_seq("document_d_id_seq");
         // Clean the file
-        unlink ($p_file);
+        unlink($p_file);
         $this->db->commit();
         return 0;
     }
-    /*! Upload
-     * \brief Upload a file into document
+
+    /* ! upload
+     * \brief upload a file into document
      *  all the needed data are in $_FILES we don't increment the seq
      * \param $p_file : array containing by default $_FILES
      *
      * \return
      */
-    function Upload($p_ag_id)
+
+    function upload($p_ag_id)
     {
         // nothing to save
-        if ( sizeof($_FILES) == 0 ) return;
+        if (sizeof($_FILES)==0)
+            return;
 
         /* for several files  */
         /* $_FILES is now an array */
         // Start Transaction
         $this->db->start();
         $name=$_FILES['file_upload']['name'];
-        for ($i = 0; $i < sizeof($name);$i++)
+        for ($i=0; $i<sizeof($name); $i++)
         {
-            $new_name=tempnam($_ENV['TMP'],'doc_');
+            $new_name=tempnam($_ENV['TMP'], 'doc_');
             // check if a file is submitted
-            if ( strlen($_FILES['file_upload']['tmp_name'][$i]) != 0 )
+            if (strlen($_FILES['file_upload']['tmp_name'][$i])!=0)
             {
                 // upload the file and move it to temp directory
-                if ( 
move_uploaded_file($_FILES['file_upload']['tmp_name'][$i],$new_name))
+                if (move_uploaded_file($_FILES['file_upload']['tmp_name'][$i], 
$new_name))
                 {
                     $oid=$this->db->lo_import($new_name);
                     // check if the lob is in the database
-                    if ( $oid == false )
+                    if ($oid==false)
                     {
                         $this->db->rollback();
                         return 1;
@@ -363,15 +393,17 @@ class Document
                 $this->d_lob=$oid;
                 $this->d_filename=$_FILES['file_upload']['name'][$i];
                 $this->d_mimetype=$_FILES['file_upload']['type'][$i];
-                $this->d_description=  strip_tags($_POST['input_desc'][$i]);
+                $this->d_description=strip_tags($_POST['input_desc'][$i]);
                 // insert into  the table
-                $sql="insert into document (ag_id, 
d_lob,d_filename,d_mimetype,d_number,d_description) values ($1,$2,$3,$4,$5,$6)";
-                
$this->db->exec_sql($sql,array($p_ag_id,$this->d_lob,$this->d_filename,$this->d_mimetype,1,$this->d_description));
+                $sql="insert into document (ag_id, 
d_lob,d_filename,d_mimetype,d_number,d_description)"
+                        . " values ($1,$2,$3,$4,$5,$6)";
+                $this->db->exec_sql($sql,
+                        array($p_ag_id, $this->d_lob, $this->d_filename, 
$this->d_mimetype, 1, $this->d_description));
             }
         } /* end for */
         $this->db->commit();
-
     }
+
     /**
      * Copy a existing OID (LOB) into the table document
      * @note  use of global variable $cn which is the db connx to the current 
folder
@@ -381,79 +413,85 @@ class Document
      * @param type $p_mimetype mimetype of existing document
      * @param type $p_description Description of existing document (default 
empty)
      */
-    static function insert_existing_document($p_ag_id, $p_lob, $p_filename, 
$p_mimetype, $p_description = "")
+    static function insert_existing_document($p_ag_id, $p_lob, $p_filename, 
$p_mimetype, $p_description="")
     {
         global $cn;
         // insert into  the table
-        $sql = "insert into document (ag_id, 
d_lob,d_filename,d_mimetype,d_number,d_description) values ($1,$2,$3,$4,$5,$6)";
+        $sql="insert into document (ag_id, 
d_lob,d_filename,d_mimetype,d_number,d_description) "
+                . "values ($1,$2,$3,$4,$5,$6)";
         $cn->exec_sql($sql, array($p_ag_id, $p_lob, $p_filename, $p_mimetype, 
1, $p_description));
     }
 
-    /*! a_ref
+    /* ! 
      * \brief create and compute a string for reference the doc <A ...>
      *
      * \return a string
      */
+
     function anchor()
     {
-        if ( $this->d_id == 0 )
+        if ($this->d_id==0)
             return '';
         $image='<IMG SRC="image/insert_table.gif" 
title="'.$this->d_filename.'" border="0">';
         $r="";
-        
$href=http_build_query(array('gDossier'=>Dossier::id(),"d_id"=>$this->d_id,'act'=>'RAW:document'));
+        $href=http_build_query(array('gDossier'=>Dossier::id(), 
"d_id"=>$this->d_id, 'act'=>'RAW:document'));
 
         $r='<A class="mtitle" HREF="export.php?'.$href.'">'.$image.'</A>';
         return $r;
     }
+
     /** Get
-     * \brief Send the document
+     * \brief send the document
      */
-    function Send()
+    function send()
     {
         // retrieve the template and generate document
         $this->db->start();
         $ret=$this->db->exec_sql(
-                 "select d_id,d_lob,d_filename,d_mimetype from document where 
d_id=".$this->d_id );
-        if ( Database::num_row ($ret) == 0 )
+                "select d_id,d_lob,d_filename,d_mimetype from document where 
d_id=$1", [$this->d_id]);
+        if (Database::num_row($ret)==0)
+        {
             return;
-        $row=Database::fetch_array($ret,0);
+        }
+        $row=Database::fetch_array($ret, 0);
         //the document  is saved into file $tmp
-        $tmp=tempnam($_ENV['TMP'],'document_');
-        $this->db->lo_export($row['d_lob'],$tmp);
+        $tmp=tempnam($_ENV['TMP'], 'document_');
+        $this->db->lo_export($row['d_lob'], $tmp);
         $this->d_mimetype=$row['d_mimetype'];
         $this->d_filename=$row['d_filename'];
 
         // send it to stdout
-        ini_set('zlib.output_compression','Off');
+        ini_set('zlib.output_compression', 'Off');
         header("Pragma: public");
         header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
-        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
+        header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
         header("Cache-Control: must-revalidate");
         header('Content-type: '.$this->d_mimetype);
-        header('Content-Disposition: 
attachment;filename="'.$this->d_filename.'"',FALSE);
+        header('Content-Disposition: 
attachment;filename="'.$this->d_filename.'"', FALSE);
         header("Accept-Ranges: bytes");
-        $file=fopen($tmp,'r');
-        while ( !feof ($file) )
+        $file=fopen($tmp, 'r');
+        while (!feof($file))
         {
-            echo fread($file,8192);
+            echo fread($file, 8192);
         }
         fclose($file);
 
-        unlink ($tmp);
+        unlink($tmp);
 
         $this->db->commit();
-
     }
-    /*!\brief get all the document of a given action
-     *\param $ag_id the ag_id from action::ag_id (primary key)
-     *\return an array of objects document or an empty array if nothing found
+
+    /* !\brief get all the document of a given action
+     * \param $ag_id the ag_id from action::ag_id (primary key)
+     * \return an array of objects document or an empty array if nothing found
      */
+
     function get_all($ag_id)
     {
         $res=$this->db->get_array('select d_id, ag_id, d_lob, d_number, 
d_filename,'.
-                                  ' d_mimetype,d_description from document 
where ag_id=$1',array($ag_id));
+                ' d_mimetype,d_description from document where ag_id=$1', 
array($ag_id));
         $a=array();
-        for ($i=0;$i<sizeof($res); $i++ )
+        for ($i=0; $i<sizeof($res); $i++)
         {
             $doc=new Document($this->db);
             $doc->d_id=$res[$i]['d_id'];
@@ -468,24 +506,27 @@ class Document
         return $a;
     }
 
-    /*!\brief Get  complete all the data member thx info from the database
+    /* !\brief Get  complete all the data member thx info from the database
      */
+
     function get()
     {
         $sql="select * from document where d_id=".$this->d_id;
         $ret=$this->db->exec_sql($sql);
-        if ( Database::num_row($ret) == 0 )
+        if (Database::num_row($ret)==0)
+        {
             return;
-        $row=Database::fetch_array($ret,0);
+        }
+        $row=Database::fetch_array($ret, 0);
         $this->ag_id=$row['ag_id'];
         $this->d_mimetype=$row['d_mimetype'];
         $this->d_filename=$row['d_filename'];
         $this->d_lob=$row['d_lob'];
         $this->d_number=$row['d_number'];
         $this->d_description=$row['d_description'];
-
     }
-    /*!
+
+    /* !
      * \brief replace the TAG by the real value, this value can be into
      * the database or in $_POST
      * The possible tags are
@@ -547,290 +588,294 @@ class Document
      * \param $p_array data from $_POST
      * \return String which must replace the tag
      */
-    function Replace($p_tag,$p_array)
+
+    function replace($p_tag, $p_array)
     {
-               global $g_parameter;
+        global $g_parameter;
         $p_tag=strtoupper($p_tag);
-        $p_tag=str_replace('=','',$p_tag);
+        $p_tag=str_replace('=', '', $p_tag);
         $r="Tag inconnu";
         static $aComment=NULL;
-        static  $counter_comment =1  ; /*<! counter for the comment , skip the 
first one which is the descrition*/
-        
+        static $counter_comment=1; /* <! counter for the comment , skip the 
first one which is the descrition */
+
         static $aRelatedAction=NULL;
-        static  $counter_related_action =0 ; /*<! counter for the related 
action */
-        
+        static $counter_related_action=0; /* <! counter for the related action 
*/
+
         static $aRelatedOperation=NULL;
-        static  $counter_related_operation =0 ; /*<! counter for the related 
operation */
-        
+        static $counter_related_operation=0; /* <! counter for the related 
operation */
+
         static $aFileAttached=NULL;
-        static  $counter_file =0 ; /*<! counter for the file */
-        
-        static $aOtherCard = NULL;
-        static  $counter_other_card =0 ; /*<! counter for the other card */
-        
-        static $aTag = NULL;
-        static  $counter_tag =0 ; /*<! counter for the tags */   
-        
+        static $counter_file=0; /* <! counter for the file */
+
+        static $aOtherCard=NULL;
+        static $counter_other_card=0; /* <! counter for the other card */
+
+        static $aTag=NULL;
+        static $counter_tag=0; /* <! counter for the tags */
+
         switch ($p_tag)
         {
             case 'DATE':
-                    $r=(isset 
($p_array['ag_timestamp']))?$p_array['ag_timestamp']:$p_array['e_date'];
-                    break;
-        case 'DATE_CALC':
+                
$r=(isset($p_array['ag_timestamp']))?$p_array['ag_timestamp']:$p_array['e_date'];
+                break;
+            case 'DATE_CALC':
                 $r=' ';
-            // Date are in $p_array['ag_date']
-            // or $p_array['e_date']
-            if ( isset ($p_array['ag_timestamp'])) {
-                
$date=format_date($p_array['ag_timestamp'],'DD.MM.YYYY','YYYY-MM-DD');
-                $r=$date;
-            }
-            if ( isset ($p_array['e_date'])) {
-                
$date=format_date($p_array['e_date'],'DD.MM.YYYY','YYYY-MM-DD');
-                $r=$date;
-            }
-            return $r;
-            break;
+                // Date are in $p_array['ag_date']
+                // or $p_array['e_date']
+                if (isset($p_array['ag_timestamp']))
+                {
+                    $date=format_date($p_array['ag_timestamp'], 'DD.MM.YYYY', 
'YYYY-MM-DD');
+                    $r=$date;
+                }
+                if (isset($p_array['e_date']))
+                {
+                    $date=format_date($p_array['e_date'], 'DD.MM.YYYY', 
'YYYY-MM-DD');
+                    $r=$date;
+                }
+                return $r;
+                break;
             //
             //  the company priv
 
-        case 'MY_NAME':
-            $r=$g_parameter->MY_NAME;
-            break;
-        case 'MY_CP':
-            $r=$g_parameter->MY_CP;
-            break;
-        case 'MY_COMMUNE':
-            $r=$g_parameter->MY_COMMUNE;
-            break;
-        case 'MY_TVA':
-            $r=$g_parameter->MY_TVA;
-            break;
-        case 'MY_STREET':
-            $r=$g_parameter->MY_STREET;
-            break;
-        case 'MY_NUMBER':
-            $r=$g_parameter->MY_NUMBER;
-            break;
-        case 'MY_TEL':
-            $r=$g_parameter->MY_TEL;
-            break;
-        case 'MY_FAX':
-            $r=$g_parameter->MY_FAX;
-            break;
-        case 'MY_PAYS':
-            $r=$g_parameter->MY_PAYS;
-            break;
+            case 'MY_NAME':
+                $r=$g_parameter->MY_NAME;
+                break;
+            case 'MY_CP':
+                $r=$g_parameter->MY_CP;
+                break;
+            case 'MY_COMMUNE':
+                $r=$g_parameter->MY_COMMUNE;
+                break;
+            case 'MY_TVA':
+                $r=$g_parameter->MY_TVA;
+                break;
+            case 'MY_STREET':
+                $r=$g_parameter->MY_STREET;
+                break;
+            case 'MY_NUMBER':
+                $r=$g_parameter->MY_NUMBER;
+                break;
+            case 'MY_TEL':
+                $r=$g_parameter->MY_TEL;
+                break;
+            case 'MY_FAX':
+                $r=$g_parameter->MY_FAX;
+                break;
+            case 'MY_PAYS':
+                $r=$g_parameter->MY_PAYS;
+                break;
 
             // customer
-            /*\note The CUST_* are retrieved thx the $p_array['tiers']
+            /* \note The CUST_* are retrieved thx the $p_array['tiers']
              * which contains the quick_code
              */
-        case 'SOLDE':
-            $tiers=new Fiche($this->db);
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $p=$tiers->strAttribut(ATTR_DEF_ACCOUNT);
-            $poste=new Acc_Account_Ledger($this->db,$p);
-            $r=$poste->get_solde(' true' );
-            break;
-        case 'CUST_NAME':
-            $tiers=new Fiche($this->db);
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_NAME);
-            break;
-        case 'CUST_ADDR_1':
-            $tiers=new Fiche($this->db);
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_ADRESS);
-
-            break ;
-        case 'CUST_CP':
-            $tiers=new Fiche($this->db);
-
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_CP);
-
-            break;
-        case 'CUST_CITY':
-            $tiers=new Fiche($this->db);
-
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_CITY);
-
-            break;
-
-        case 'CUST_CO':
-            $tiers=new Fiche($this->db);
-
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_PAYS);
-
-            break;
+            case 'SOLDE':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $p=$tiers->strAttribut(ATTR_DEF_ACCOUNT);
+                $poste=new Acc_Account_Ledger($this->db, $p);
+                $r=$poste->get_solde(' true');
+                break;
+            case 'CUST_NAME':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_NAME);
+                break;
+            case 'CUST_ADDR_1':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_ADRESS);
+
+                break;
+            case 'CUST_CP':
+                $tiers=new Fiche($this->db);
+
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_CP);
+
+                break;
+            case 'CUST_CITY':
+                $tiers=new Fiche($this->db);
+
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_CITY);
+
+                break;
+
+            case 'CUST_CO':
+                $tiers=new Fiche($this->db);
+
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_PAYS);
+
+                break;
             // Marchandise in $p_array['e_march*']
             // \see user_form_achat.php or user_form_ven.php
-        case 'CUST_VAT':
-            $tiers=new Fiche($this->db);
-
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_NUMTVA);
-            break;
-        case 'CUST_NUM':
-            $tiers=new Fiche($this->db);
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_NUMBER_CUSTOMER);
-            break;
-        case 'CUST_BANQUE_NO':
-            $tiers=new Fiche($this->db);
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_BQ_NO);
-            break;
-        case 'CUST_BANQUE_NAME':
-            $tiers=new Fiche($this->db);
-            
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_BQ_NAME);
-            break;
+            case 'CUST_VAT':
+                $tiers=new Fiche($this->db);
+
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_NUMTVA);
+                break;
+            case 'CUST_NUM':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_NUMBER_CUSTOMER);
+                break;
+            case 'CUST_BANQUE_NO':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_BQ_NO);
+                break;
+            case 'CUST_BANQUE_NAME':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_dest'])?$p_array['qcode_dest']:$p_array['e_client'];
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_BQ_NAME);
+                break;
             /* 
--------------------------------------------------------------------------------
 */
             /* BENEFIT (fee notes */
-        case 'BENEF_NAME':
-            $tiers=new Fiche($this->db);
-            $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
-            if ( $qcode=='')
-            {
-                $r='';
+            case 'BENEF_NAME':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
+                if ($qcode=='')
+                {
+                    $r='';
+                    break;
+                }
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_NAME);
                 break;
-            }
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_NAME);
-            break;
-        case 'BENEF_ADDR_1':
-            $tiers=new Fiche($this->db);
-            $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
-            if ( $qcode=='')
-            {
-                $r='';
+            case 'BENEF_ADDR_1':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
+                if ($qcode=='')
+                {
+                    $r='';
+                    break;
+                }
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_ADRESS);
+
                 break;
-            }
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_ADRESS);
+            case 'BENEF_CP':
+                $tiers=new Fiche($this->db);
 
-            break ;
-        case 'BENEF_CP':
-            $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
+                if ($qcode=='')
+                {
+                    $r='';
+                    break;
+                }
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_CP);
 
-            $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
-            if ( $qcode=='')
-            {
-                $r='';
                 break;
-            }
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_CP);
+            case 'BENEF_CITY':
+                $tiers=new Fiche($this->db);
 
-            break;
-        case 'BENEF_CITY':
-            $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
+                if ($qcode=='')
+                {
+                    $r='';
+                    break;
+                }
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_CITY);
 
-            $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
-            if ( $qcode=='')
-            {
-                $r='';
                 break;
-            }
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_CITY);
 
-            break;
+            case 'BENEF_CO':
+                $tiers=new Fiche($this->db);
 
-        case 'BENEF_CO':
-            $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
+                if ($qcode=='')
+                {
+                    $r='';
+                    break;
+                }
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_PAYS);
 
-            $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
-            if ( $qcode=='')
-            {
-                $r='';
                 break;
-            }
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_PAYS);
-
-            break;
             // Marchandise in $p_array['e_march*']
             // \see user_form_achat.php or user_form_ven.php
-        case 'BENEF_VAT':
-            $tiers=new Fiche($this->db);
+            case 'BENEF_VAT':
+                $tiers=new Fiche($this->db);
 
-            $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
-            if ( $qcode=='')
-            {
-                $r='';
+                
$qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
+                if ($qcode=='')
+                {
+                    $r='';
+                    break;
+                }
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_NUMTVA);
                 break;
-            }
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_NUMTVA);
-            break;
-        case 'BENEF_NUM':
-            $tiers=new Fiche($this->db);
-            $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
-            if ( $qcode=='')
-            {
-                $r='';
+            case 'BENEF_NUM':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
+                if ($qcode=='')
+                {
+                    $r='';
+                    break;
+                }
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_NUMBER_CUSTOMER);
                 break;
-            }
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_NUMBER_CUSTOMER);
-            break;
-        case 'BENEF_BANQUE_NO':
-            $tiers=new Fiche($this->db);
-            $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
-            if ( $qcode=='')
-            {
-                $r='';
+            case 'BENEF_BANQUE_NO':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
+                if ($qcode=='')
+                {
+                    $r='';
+                    break;
+                }
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_BQ_NO);
                 break;
-            }
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_BQ_NO);
-            break;
-        case 'BENEF_BANQUE_NAME':
-            $tiers=new Fiche($this->db);
-            $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
-            if ( $qcode=='')
-            {
-                $r='';
+            case 'BENEF_BANQUE_NAME':
+                $tiers=new Fiche($this->db);
+                
$qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
+                if ($qcode=='')
+                {
+                    $r='';
+                    break;
+                }
+                $tiers->get_by_qcode($qcode, false);
+                $r=$tiers->strAttribut(ATTR_DEF_BQ_NAME);
                 break;
-            }
-            $tiers->get_by_qcode($qcode,false);
-            $r=$tiers->strAttribut(ATTR_DEF_BQ_NAME);
-            break;
 
             // Marchandise in $p_array['e_march*']
             // \see user_form_achat.php or user_form_ven.php
-        case 'NUMBER':
-            $r=$this->d_number;
-            break;
-        case "DOCUMENT_ID":
-            if (isset($p_array['ag_id'])) return $p_array['ag_id'];
-            return "";
-            break;
-
-        case 'USER' :
-            return $_SESSION[SESSION_KEY.'use_name'].', 
'.$_SESSION[SESSION_KEY.'use_first_name'];
-
-            break;
-        case 'REFERENCE':
-            $act=new Follow_Up($this->db);
-            $act->ag_id=$this->ag_id;
-            $act->get();
-            $r=$act->ag_ref;
-            break;
+            case 'NUMBER':
+                $r=$this->d_number;
+                break;
+            case "DOCUMENT_ID":
+                if (isset($p_array['ag_id']))
+                    return $p_array['ag_id'];
+                return "";
+                break;
+
+            case 'USER' :
+                return $_SESSION[SESSION_KEY.'use_name'].', 
'.$_SESSION[SESSION_KEY.'use_first_name'];
+
+                break;
+            case 'REFERENCE':
+                $act=new Follow_Up($this->db);
+                $act->ag_id=$this->ag_id;
+                $act->get();
+                $r=$act->ag_ref;
+                break;
 
             /*
              *  - [VEN_ART_NAME]
@@ -844,413 +889,453 @@ class Document
              *  - [TOTAL_VEN_HTVA]
              *  - [DATE_LIMIT]
              */
-        case 'DATE_LIMIT_CALC':
-            if ( isset ($p_array["e_ech"] )) 
-                    return 
format_date($p_array["e_ech"],'DD.MM.YYYY','YYYY-MM-DD');
-            if ( isset ($p_array["ech"] )) 
-                    return 
format_date($p_array["ech"],'DD.MM.YYYY','YYYY-MM-DD');
-            if ( isset ($p_array["ag_remind_date"] )) 
-                    return 
format_date($p_array["ag_remind_date"],'DD.MM.YYYY','YYYY-MM-DD');
-            return "";
-                break;
-      case 'DATE_LIMIT':
-              if ( isset ($p_array["ech"] )) 
+            case 'DATE_LIMIT_CALC':
+                if (isset($p_array["e_ech"]))
+                    return format_date($p_array["e_ech"], 'DD.MM.YYYY', 
'YYYY-MM-DD');
+                if (isset($p_array["ech"]))
+                    return format_date($p_array["ech"], 'DD.MM.YYYY', 
'YYYY-MM-DD');
+                if (isset($p_array["ag_remind_date"]))
+                    return format_date($p_array["ag_remind_date"], 
'DD.MM.YYYY', 'YYYY-MM-DD');
+                return "";
+                break;
+            case 'DATE_LIMIT':
+                if (isset($p_array["ech"]))
                     return $p_array["ech"];
-             if ( isset ($p_array["e_ech"] )) 
+                if (isset($p_array["e_ech"]))
                     return $p_array["e_ech"];
-            if ( isset ($p_array["ag_remind_date"] )) 
+                if (isset($p_array["ag_remind_date"]))
                     return $p_array["ag_remind_date"];
-            return "";
-            break;
-        case 'MARCH_NEXT':
-            $this->counter++;
-            $r='';
-            break;
-
-        case 'VEN_ART_NAME':
-            // check if the march exists
-            if ( ! isset ($p_array["e_march".$this->counter])) return "";
-            // check that something is sold
-            if ( $p_array['e_march'.$this->counter.'_price'] != 0 && 
$p_array['e_quant'.$this->counter] != 0 )
-            {
-                $f=new Fiche($this->db);
-                $f->get_by_qcode($p_array["e_march".$this->counter],false);
-                $r=$f->strAttribut(ATTR_DEF_NAME);
-            }
-            else $r = "";
-            break;
-       case 'VEN_ART_LABEL':
-            $id='e_march'.$this->counter."_label";
-            // check if the march exists
+                return "";
+                break;
+            case 'MARCH_NEXT':
+                $this->counter++;
+                $r='';
+                break;
+
+            case 'VEN_ART_NAME':
+                // check if the march exists
+                if (!isset($p_array["e_march".$this->counter]))
+                    return "";
+                // check that something is sold
+                if 
($p_array['e_march'.$this->counter.'_price']!=0&&$p_array['e_quant'.$this->counter]!=0)
+                {
+                    $f=new Fiche($this->db);
+                    $f->get_by_qcode($p_array["e_march".$this->counter], 
false);
+                    $r=$f->strAttribut(ATTR_DEF_NAME);
+                }
+                else
+                    $r="";
+                break;
+            case 'VEN_ART_LABEL':
+                $id='e_march'.$this->counter."_label";
+                // check if the march exists
 
-            if (! isset ($p_array[$id]) || (isset ($p_array[$id]) && 
strlen(trim($p_array[$id])) == 0))
+                if 
(!isset($p_array[$id])||(isset($p_array[$id])&&strlen(trim($p_array[$id]))==0))
                 {
-                    $id = 'e_march' . $this->counter;
+                    $id='e_march'.$this->counter;
                     // check if the march exists
                     if (!isset($p_array[$id]))
-                        $r= "";
-                    else 
+                        $r="";
+                    else
                     {
-                    // check that something is sold
-                        if ($p_array['e_march'.$this->counter. '_price'] != 0 
-                                && $p_array['e_quant' . $this->counter] != 0)
+                        // check that something is sold
+                        if 
($p_array['e_march'.$this->counter.'_price']!=0&&$p_array['e_quant'.$this->counter]!=0)
                         {
-                            $f = new Fiche($this->db);
+                            $f=new Fiche($this->db);
                             $f->get_by_qcode($p_array[$id], false);
-                            $r = $f->strAttribut(ATTR_DEF_NAME);
-                        } else
-                            $r = "";
+                            $r=$f->strAttribut(ATTR_DEF_NAME);
+                        }
+                        else
+                            $r="";
                     }
                 }
                 else
                     $r=$p_array[$id];
-            break;
-        case 'VEN_ART_STOCK_CODE':
-                    $id = 'e_march' . $this->counter;
-                    // check if the march exists
-                    if (!isset($p_array[$id]))
-                        $r= "";
-                    else 
-                    {
+                break;
+            case 'VEN_ART_STOCK_CODE':
+                $id='e_march'.$this->counter;
+                // check if the march exists
+                if (!isset($p_array[$id]))
+                    $r="";
+                else
+                {
                     // check that something is sold
-                        if ($p_array['e_march' . $this->counter . '_price'] != 
0 
-                                && $p_array['e_quant' . $this->counter] != 0)
-                        {
-                            $f = new Fiche($this->db);
-                            $f->get_by_qcode($p_array[$id], false);
-                            $r = $f->strAttribut(ATTR_DEF_STOCK);
-                            $r=($r == NOTFOUND)?'':$r;
-                        } 
+                    if 
($p_array['e_march'.$this->counter.'_price']!=0&&$p_array['e_quant'.$this->counter]!=0)
+                    {
+                        $f=new Fiche($this->db);
+                        $f->get_by_qcode($p_array[$id], false);
+                        $r=$f->strAttribut(ATTR_DEF_STOCK);
+                        $r=($r==NOTFOUND)?'':$r;
                     }
-            break;
-        case 'VEN_QCODE':
-            $id='e_march'.$this->counter ;
-            if ( !isset ($p_array[$id]) ) return "";
-            return $p_array[$id];
-            break;
-        case 'VEN_ART_PRICE':
-            $id='e_march'.$this->counter.'_price' ;
-            if ( !isset ($p_array[$id]) ) return "";
-                       if ( $p_array[$id]  == 0 ) return "";
-            $r=$p_array[$id];
-            break;
-
-        case 'TVA_RATE':
-        case 'VEN_ART_TVA_RATE':
-            $id='e_march'.$this->counter.'_tva_id';
-            if ( !isset ($p_array[$id]) ) return "";
-            if ( $p_array[$id] == -1 || $p_array[$id]=='' ) return "";
-            $march_id='e_march'.$this->counter.'_price' ;
-            if ( ! isset ($p_array[$march_id])) return '';
-            $tva=new Acc_Tva($this->db);
-            $tva->set_parameter("id",$p_array[$id]);
-            if ( $tva->load() == -1) return '';
-            return $tva->get_parameter("rate");
-            break;
-
-        case 'TVA_CODE':
-        case 'VEN_ART_TVA_CODE':
-            $id='e_march'.$this->counter.'_tva_id';
-            if ( !isset ($p_array[$id]) ) return "";
-            if ( $p_array[$id] == -1 ) return "";
-            $qt='e_quant'.$this->counter;
-            $price='e_march'.$this->counter.'_price' ;
-            if ( $p_array[$price] == 0 || $p_array[$qt] == 0
-                    || strlen(trim( $p_array[$price] )) ==0
-                    || strlen(trim($p_array[$qt])) ==0)
-                return "";
+                }
+                break;
+            case 'VEN_QCODE':
+                $id='e_march'.$this->counter;
+                if (!isset($p_array[$id]))
+                    return "";
+                return $p_array[$id];
+                break;
+            case 'VEN_ART_PRICE':
+                $id='e_march'.$this->counter.'_price';
+                if (!isset($p_array[$id]))
+                    return "";
+                if ($p_array[$id]==0)
+                    return "";
+                $r=$p_array[$id];
+                break;
+
+            case 'TVA_RATE':
+            case 'VEN_ART_TVA_RATE':
+                $id='e_march'.$this->counter.'_tva_id';
+                if (!isset($p_array[$id]))
+                    return "";
+                if ($p_array[$id]==-1||$p_array[$id]=='')
+                    return "";
+                $march_id='e_march'.$this->counter.'_price';
+                if (!isset($p_array[$march_id]))
+                    return '';
+                $tva=new Acc_Tva($this->db);
+                $tva->set_parameter("id", $p_array[$id]);
+                if ($tva->load()==-1)
+                    return '';
+                return $tva->get_parameter("rate");
+                break;
 
-            $r=$p_array[$id];
-            break;
+            case 'TVA_CODE':
+            case 'VEN_ART_TVA_CODE':
+                $id='e_march'.$this->counter.'_tva_id';
+                if (!isset($p_array[$id]))
+                    return "";
+                if ($p_array[$id]==-1)
+                    return "";
+                $qt='e_quant'.$this->counter;
+                $price='e_march'.$this->counter.'_price';
+                if 
($p_array[$price]==0||$p_array[$qt]==0||strlen(trim($p_array[$price]))==0||strlen(trim($p_array[$qt]))==0)
+                    return "";
+
+                $r=$p_array[$id];
+                break;
 
-        case 'TVA_LABEL':
-            $id='e_march'.$this->counter.'_tva_id';
-            if ( !isset ($p_array[$id]) ) return "";
-            $march_id='e_march'.$this->counter.'_price' ;
-            if ( ! isset ($p_array[$march_id])) return '';
-            if ( $p_array[$march_id] == 0) return '';
-            $tva=new Acc_Tva($this->db,$p_array[$id]);
-            if ($tva->load() == -1 ) return "";
-            $r=$tva->get_parameter('label');
+            case 'TVA_LABEL':
+                $id='e_march'.$this->counter.'_tva_id';
+                if (!isset($p_array[$id]))
+                    return "";
+                $march_id='e_march'.$this->counter.'_price';
+                if (!isset($p_array[$march_id]))
+                    return '';
+                if ($p_array[$march_id]==0)
+                    return '';
+                $tva=new Acc_Tva($this->db, $p_array[$id]);
+                if ($tva->load()==-1)
+                    return "";
+                $r=$tva->get_parameter('label');
 
-            break;
+                break;
 
             /* total VAT for one sold */
-        case 'TVA_AMOUNT':
-        case 'VEN_TVA':
-            $qt='e_quant'.$this->counter;
-            $price='e_march'.$this->counter.'_price' ;
-            $tva='e_march'.$this->counter.'_tva_id';
-            /* if we do not use vat this var. is not set */
-            if ( !isset($p_array[$tva]) ) return '';
-            if ( !isset ($p_array [ 'e_march'.$this->counter ]) ) return "";
-             if ( !isset ($p_array[$tva]) ) return "";
-            // check that something is sold
-            if ( $p_array[$price] == 0 || $p_array[$qt] == 0
-                    || strlen(trim( $p_array[$price] )) ==0
-                    || strlen(trim($p_array[$qt])) ==0)
-                return "";
-            $r=$p_array['e_march'.$this->counter.'_tva_amount'];
-            break;
+            case 'TVA_AMOUNT':
+            case 'VEN_TVA':
+                $qt='e_quant'.$this->counter;
+                $price='e_march'.$this->counter.'_price';
+                $tva='e_march'.$this->counter.'_tva_id';
+                /* if we do not use vat this var. is not set */
+                if (!isset($p_array[$tva]))
+                    return '';
+                if (!isset($p_array ['e_march'.$this->counter]))
+                    return "";
+                if (!isset($p_array[$tva]))
+                    return "";
+                // check that something is sold
+                if 
($p_array[$price]==0||$p_array[$qt]==0||strlen(trim($p_array[$price]))==0||strlen(trim($p_array[$qt]))==0)
+                    return "";
+                $r=$p_array['e_march'.$this->counter.'_tva_amount'];
+                break;
             /* TVA automatically computed */
-        case 'VEN_ART_TVA':
-        
-            $qt='e_quant'.$this->counter;
-            $price='e_march'.$this->counter.'_price' ;
-            $tva='e_march'.$this->counter.'_tva_id';
-            if ( !isset ($p_array['e_march'.$this->counter]) ) return "";
-            if ( !isset ($p_array[$tva]) ) return "";
-            // check that something is sold
-            if ( $p_array[$price] == 0 || $p_array[$qt] == 0
-                    || strlen(trim( $p_array[$price] )) ==0
-                    || strlen(trim($p_array[$qt])) ==0)
-                return "";
-            $oTva=new Acc_Tva($this->db,$p_array[$tva]);
-            if ($oTva->load() == -1 ) return "";
-            $r=round($p_array[$price],2)*$oTva->get_parameter('rate');
-            $r=round($r,2);
-            break;
-
-        case 'VEN_ART_TVAC':
-            $qt='e_quant'.$this->counter;
-            $price='e_march'.$this->counter.'_price' ;
-            if ( !isset ($p_array['e_march'.$this->counter]) ) return "";
-             if ( !isset ($p_array['e_march'.$this->counter.'_tva_id']) ) 
return "";
-            // check that something is sold
-            if ( $p_array[$price] == 0 || $p_array[$qt] == 0
-                    || strlen(trim( $p_array[$price] )) ==0
-                    || strlen(trim($p_array[$qt])) ==0)
-                return "";
-            if ( ! isset ($p_array['e_march'.$this->counter.'_tva_id']) ) 
return '';
-            $tva=new 
Acc_Tva($this->db,$p_array['e_march'.$this->counter.'_tva_id'] );
-            if ($tva->load() == -1 )
-            {
-                $r=round($p_array[$price],2);
-            }
-            else
-            {
-                
$r=round($p_array[$price]*$tva->get_parameter('rate')+$p_array[$price],2);
-            }
+            case 'VEN_ART_TVA':
+
+                $qt='e_quant'.$this->counter;
+                $price='e_march'.$this->counter.'_price';
+                $tva='e_march'.$this->counter.'_tva_id';
+                if (!isset($p_array['e_march'.$this->counter]))
+                    return "";
+                if (!isset($p_array[$tva]))
+                    return "";
+                // check that something is sold
+                if 
($p_array[$price]==0||$p_array[$qt]==0||strlen(trim($p_array[$price]))==0||strlen(trim($p_array[$qt]))==0)
+                    return "";
+                $oTva=new Acc_Tva($this->db, $p_array[$tva]);
+                if ($oTva->load()==-1)
+                    return "";
+                $r=round($p_array[$price], 2)*$oTva->get_parameter('rate');
+                $r=round($r, 2);
+                break;
 
-            break;
+            case 'VEN_ART_TVAC':
+                $qt='e_quant'.$this->counter;
+                $price='e_march'.$this->counter.'_price';
+                if (!isset($p_array['e_march'.$this->counter]))
+                    return "";
+                if (!isset($p_array['e_march'.$this->counter.'_tva_id']))
+                    return "";
+                // check that something is sold
+                if 
($p_array[$price]==0||$p_array[$qt]==0||strlen(trim($p_array[$price]))==0||strlen(trim($p_array[$qt]))==0)
+                    return "";
+                if (!isset($p_array['e_march'.$this->counter.'_tva_id']))
+                    return '';
+                $tva=new Acc_Tva($this->db, 
$p_array['e_march'.$this->counter.'_tva_id']);
+                if ($tva->load()==-1)
+                {
+                    $r=round($p_array[$price], 2);
+                }
+                else
+                {
+                    
$r=round($p_array[$price]*$tva->get_parameter('rate')+$p_array[$price], 2);
+                }
 
-        case 'VEN_ART_QUANT':
-            $id='e_quant'.$this->counter;
-            if ( !isset ($p_array[$id]) ) return "";
-            // check that something is sold
-            if ( $p_array['e_march'.$this->counter.'_price'] == 0
-                    || $p_array['e_quant'.$this->counter] == 0
-                    || strlen(trim( 
$p_array['e_march'.$this->counter.'_price'] )) ==0
-                    || strlen(trim($p_array['e_quant'.$this->counter])) ==0 )
-                return "";
-            $r=$p_array[$id];
-            break;
-
-        case 'VEN_HTVA':
-            $id='e_march'.$this->counter.'_price' ;
-            $quant='e_quant'.$this->counter;
-            if ( !isset ($p_array[$id]) ) return "";
-
-            // check that something is sold
-            if ( $p_array['e_march'.$this->counter.'_price'] == 0 || 
$p_array['e_quant'.$this->counter] == 0
-                    || strlen(trim( 
$p_array['e_march'.$this->counter.'_price'] )) ==0
-                    || strlen(trim($p_array['e_quant'.$this->counter])) ==0)
-                return "";
-                       bcscale(4);
-            $r=bcmul($p_array[$id],$p_array[$quant]);
-                       $r=round($r,2);
-            break;
-
-        case 'VEN_TVAC':
-            $id='e_march'.$this->counter.'_tva_amount' ;
-            $price='e_march'.$this->counter.'_price' ;
-            $quant='e_quant'.$this->counter;
-            if ( ! isset($p_array['e_march'.$this->counter.'_price'])|| 
!isset($p_array['e_quant'.$this->counter])) {
-                return "";
-            }
-            // check that something is sold
-            if ( $p_array['e_march'.$this->counter.'_price'] == 0 || 
$p_array['e_quant'.$this->counter] == 0 ) { return "";}
-                       bcscale(4);
-            // if TVA not exist
-            if ( ! isset($p_array[$id]))
-                $r=  bcmul($p_array[$price],$p_array[$quant]);
-            else{
-                $r=  bcmul($p_array[$price],$p_array[$quant]);
-                $r=bcadd($r,$p_array[$id]);
-                       }
-                       $r=round($r,2);
-                       return $r;
-            break;
-
-        case 'TOTAL_VEN_HTVA':
-            bcscale(4);
-            $sum=0.0;
-            if ( !isset($p_array["nb_item"]) ) return "";
-            for ($i=0;$i<$p_array["nb_item"];$i++)
-            {
-                $sell='e_march'.$i.'_price';
-                $qt='e_quant'.$i;
+                break;
 
-                if ( ! isset ($p_array[$sell]) ) break;
+            case 'VEN_ART_QUANT':
+                $id='e_quant'.$this->counter;
+                if (!isset($p_array[$id]))
+                    return "";
+                // check that something is sold
+                if 
($p_array['e_march'.$this->counter.'_price']==0||$p_array['e_quant'.$this->counter]==0||strlen(trim($p_array['e_march'.$this->counter.'_price']))==0||strlen(trim($p_array['e_quant'.$this->counter]))==0)
+                    return "";
+                $r=$p_array[$id];
+                break;
 
-                if ( strlen(trim($p_array[$sell])) == 0 ||
-                        strlen(trim($p_array[$qt])) == 0 ||
-                        $p_array[$qt]==0 || $p_array[$sell]==0)
-                    continue;
-                $tmp1=bcmul($p_array[$sell],$p_array[$qt]);
-                $sum=bcadd($sum,$tmp1);
+            case 'VEN_HTVA':
+                $id='e_march'.$this->counter.'_price';
+                $quant='e_quant'.$this->counter;
+                if (!isset($p_array[$id]))
+                    return "";
+
+                // check that something is sold
+                if 
($p_array['e_march'.$this->counter.'_price']==0||$p_array['e_quant'.$this->counter]==0||strlen(trim($p_array['e_march'.$this->counter.'_price']))==0||strlen(trim($p_array['e_quant'.$this->counter]))==0)
+                    return "";
+                bcscale(4);
+                $r=bcmul($p_array[$id], $p_array[$quant]);
+                $r=round($r, 2);
+                break;
 
+            case 'VEN_TVAC':
+                $id='e_march'.$this->counter.'_tva_amount';
+                $price='e_march'.$this->counter.'_price';
+                $quant='e_quant'.$this->counter;
+                if 
(!isset($p_array['e_march'.$this->counter.'_price'])||!isset($p_array['e_quant'.$this->counter]))
+                {
+                    return "";
+                }
+                // check that something is sold
+                if 
($p_array['e_march'.$this->counter.'_price']==0||$p_array['e_quant'.$this->counter]==0)
+                {
+                    return "";
+                }
+                bcscale(4);
+                // if TVA not exist
+                if (!isset($p_array[$id]))
+                    $r=bcmul($p_array[$price], $p_array[$quant]);
+                else
+                {
+                    $r=bcmul($p_array[$price], $p_array[$quant]);
+                    $r=bcadd($r, $p_array[$id]);
+                }
+                $r=round($r, 2);
+                return $r;
+                break;
 
-            }
-            $r=round($sum,2);
-            break;
-        case 'TOTAL_VEN_TVAC':
-            if ( !isset($p_array["nb_item"]) ) return "";
-            $sum=0.0;
-            bcscale(4);
-            for ($i=0;$i<$p_array["nb_item"];$i++)
-            {
-                $tva='e_march'.$i.'_tva_amount';
-                $tva_amount=0;
-                /* if we do not use vat this var. is not set */
-                if ( isset($p_array[$tva]) )
+            case 'TOTAL_VEN_HTVA':
+                bcscale(4);
+                $sum=0.0;
+                if (!isset($p_array["nb_item"]))
+                    return "";
+                for ($i=0; $i<$p_array["nb_item"]; $i++)
                 {
-                    $tva_amount=$p_array[$tva];
+                    $sell='e_march'.$i.'_price';
+                    $qt='e_quant'.$i;
+
+                    if (!isset($p_array[$sell]))
+                        break;
+
+                    if (strlen(trim($p_array[$sell]))==0||
+                            strlen(trim($p_array[$qt]))==0||
+                            $p_array[$qt]==0||$p_array[$sell]==0)
+                        continue;
+                    $tmp1=bcmul($p_array[$sell], $p_array[$qt]);
+                    $sum=bcadd($sum, $tmp1);
                 }
-                $sell=$p_array['e_march'.$i.'_price'];
-                $qt=$p_array['e_quant'.$i];
-                $tot=bcmul($sell,$qt);
-                $tot=bcadd($tot,$tva_amount);
-                $sum=bcadd($sum,$tot);
-            }
-            $r=round($sum,2);
+                $r=round($sum, 2);
+                break;
+            case 'TOTAL_VEN_TVAC':
+                if (!isset($p_array["nb_item"]))
+                    return "";
+                $sum=0.0;
+                bcscale(4);
+                for ($i=0; $i<$p_array["nb_item"]; $i++)
+                {
+                    $tva='e_march'.$i.'_tva_amount';
+                    $tva_amount=0;
+                    /* if we do not use vat this var. is not set */
+                    if (isset($p_array[$tva]))
+                    {
+                        $tva_amount=$p_array[$tva];
+                    }
+                    $sell=$p_array['e_march'.$i.'_price'];
+                    $qt=$p_array['e_quant'.$i];
+                    $tot=bcmul($sell, $qt);
+                    $tot=bcadd($tot, $tva_amount);
+                    $sum=bcadd($sum, $tot);
+                }
+                $r=round($sum, 2);
 
-            break;
-        case 'TOTAL_TVA':
-            if ( !isset($p_array["nb_item"]) ) return "";
-            $sum=0.0;
-            for ($i=0;$i<$p_array["nb_item"];$i++)
-            {
-                $tva='e_march'.$i.'_tva_amount';
-                if (! isset($p_array[$tva])) $tva_amount=0.0;
-                else {
-                    $tva_amount=$p_array[$tva];
-                    $tva_amount=($tva_amount=="")?0:$tva_amount;
+                break;
+            case 'TOTAL_TVA':
+                if (!isset($p_array["nb_item"]))
+                    return "";
+                $sum=0.0;
+                for ($i=0; $i<$p_array["nb_item"]; $i++)
+                {
+                    $tva='e_march'.$i.'_tva_amount';
+                    if (!isset($p_array[$tva]))
+                        $tva_amount=0.0;
+                    else
+                    {
+                        $tva_amount=$p_array[$tva];
+                        $tva_amount=($tva_amount=="")?0:$tva_amount;
+                    }
+                    $sum+=$tva_amount;
+                    $sum=round($sum, 2);
                 }
-                $sum+=$tva_amount;
-                $sum=round($sum,2);
-            }
-            $r=$sum;
+                $r=$sum;
 
-            break;
-        case 'BON_COMMANDE':
-            if ( isset($p_array['bon_comm']))
-                return $p_array['bon_comm'];
-            else
-                return "";
-            break;
-        case 'PJ':
-            if ( isset($p_array['e_pj']))
-                return $p_array['e_pj'];
-            else
-                return "";
+                break;
+            case 'BON_COMMANDE':
+                if (isset($p_array['bon_comm']))
+                    return $p_array['bon_comm'];
+                else
+                    return "";
+                break;
+            case 'PJ':
+                if (isset($p_array['e_pj']))
+                    return $p_array['e_pj'];
+                else
+                    return "";
 
-        case 'OTHER_INFO':
-            if ( isset($p_array['other_info']))
-                return $p_array['other_info'];
-            else
-                return "";
-            break;
-        case 'LABELOP':
-            if ( isset($p_array['e_comm']))
-                return $p_array['e_comm'];
-            break;
-        case 'ACOMPTE':
-            if ( isset($p_array['acompte']))
-                return $p_array['acompte'];
-                       return "0";
-            break;
-        case 'STOCK_NAME':
-                if ( ! isset ($p_array['repo'])) return "";
-                $ret=$this->db->get_value('select r_name from 
public.stock_repository where r_id=$1',array($p_array['repo']));
+            case 'OTHER_INFO':
+                if (isset($p_array['other_info']))
+                    return $p_array['other_info'];
+                else
+                    return "";
+                break;
+            case 'LABELOP':
+                if (isset($p_array['e_comm']))
+                    return $p_array['e_comm'];
+                break;
+            case 'ACOMPTE':
+                if (isset($p_array['acompte']))
+                    return $p_array['acompte'];
+                return "0";
+                break;
+            case 'STOCK_NAME':
+                if (!isset($p_array['repo']))
+                    return "";
+                $ret=$this->db->get_value('select r_name from 
public.stock_repository where r_id=$1',
+                        array($p_array['repo']));
                 return $ret;
-        case 'STOCK_ADRESS':
-                if ( ! isset ($p_array['repo'])) return "";
-                $ret=$this->db->get_value('select r_adress from 
public.stock_repository where r_id=$1',array($p_array['repo']));
+            case 'STOCK_ADRESS':
+                if (!isset($p_array['repo']))
+                    return "";
+                $ret=$this->db->get_value('select r_adress from 
public.stock_repository where r_id=$1',
+                        array($p_array['repo']));
                 return $ret;
-        case 'STOCK_COUNTRY':
-                if ( ! isset ($p_array['repo'])) return "";
-                $ret=$this->db->get_value('select r_country from 
public.stock_repository where r_id=$1',array($p_array['repo']));
+            case 'STOCK_COUNTRY':
+                if (!isset($p_array['repo']))
+                    return "";
+                $ret=$this->db->get_value('select r_country from 
public.stock_repository where r_id=$1',
+                        array($p_array['repo']));
                 return $ret;
-        case 'STOCK_CITY':
-                if ( ! isset ($p_array['repo'])) return "";
-                $ret=$this->db->get_value('select r_city from 
public.stock_repository where r_id=$1',array($p_array['repo']));
+            case 'STOCK_CITY':
+                if (!isset($p_array['repo']))
+                    return "";
+                $ret=$this->db->get_value('select r_city from 
public.stock_repository where r_id=$1',
+                        array($p_array['repo']));
                 return $ret;
-        case 'STOCK_PHONE':
-                if ( ! isset ($p_array['repo'])) return "";
-                $ret=$this->db->get_value('select r_phone from 
public.stock_repository where r_id=$1',array($p_array['repo']));
+            case 'STOCK_PHONE':
+                if (!isset($p_array['repo']))
+                    return "";
+                $ret=$this->db->get_value('select r_phone from 
public.stock_repository where r_id=$1',
+                        array($p_array['repo']));
                 return $ret;
-        // Follow up
-        //Title
-        case 'TITLE':
-            if ( isset($p_array['ag_title']))                 return 
$p_array['ag_title'];
-            return "";
-            break;
-        // Description is the first comment
-        case 'DESCRIPTION':
-            if ( isset($p_array['ag_id'])) {
-                // retrieve first comment
-                $description=$this->db->get_value("select agc_comment "
-                        . "  from action_gestion_comment "
-                        . "where ag_id=$1 order by AGC_ID asc limit 1"
-                        ,[$p_array['ag_id']]);
-                return $description;
-            }
-            if ( isset($p_array['e_comm'])) {return $p_array['e_comm'] ; }
-            
-            return "";
-            break;
-      
-        // Comments, use a counter to move to the next comment, only for 
Follow-Up
-        //
-        case 'COMMENT':
-            if ( isset($p_array['ag_id'])) {
-                // Static value, if null the retrieve all of them
-                if ( $aComment == NULL ) {
-                    // retrieve comments
-                    $aComment=$this->db->get_array("select AGC_ID,agc_comment 
,"
-                            ." to_char(agc_date,'DD-MM-YY HH24:MI') as 
str_date ,"
-                            . " tech_user "
-                            . "  from action_gestion_comment "
-                            . "where ag_id=$1 order by 1"
-                            ,[$p_array['ag_id']]);
+            // Follow up
+            //Title
+            case 'TITLE':
+                if (isset($p_array['ag_title']))
+                    return $p_array['ag_title'];
+                return "";
+                break;
+            // Description is the first comment
+            case 'DESCRIPTION':
+                if (isset($p_array['ag_id']))
+                {
+                    // retrieve first comment
+                    $description=$this->db->get_value("select agc_comment "
+                            ."  from action_gestion_comment "
+                            ."where ag_id=$1 order by AGC_ID asc limit 1"
+                            , [$p_array['ag_id']]);
+                    return $description;
                 }
-                $nb_comment=count($aComment);
-                $description="";
-                if (count ($aComment) >  $counter_comment) {
-                    $description.= sprintf(_('le %s , %s écrit %s'),
-                            $aComment[$counter_comment]['str_date'],
-                            $aComment[$counter_comment]['tech_user'],
-                            $aComment[$counter_comment]['agc_comment']);
-                    $counter_comment++;
+                if (isset($p_array['e_comm']))
+                {
+                    return $p_array['e_comm'];
                 }
-                return $description;
-            }
-            return "";
-            break;
-        // Related Action, use a counter to move to the next related action, 
only for Follow-Up
-        //
-        case 'RELATED_ACTION':
-            if ( isset($p_array['ag_id'])) {
-                // Static value, if null the retrieve all of them
-                if ( $aRelatedAction == NULL ) {
-                    // retrieve parent
-                    $followup=new Follow_Up($this->db,$p_array["ag_id"]);
-                    $aRelatedAction=array();
-                    $aParent=$followup->get_parent();
-                    if ($aParent == -1 )return "";
-                    $nb_parent=count($aParent);
-                    $sql_related_action = "
+
+                return "";
+                break;
+
+            // Comments, use a counter to move to the next comment, only for 
Follow-Up
+            //
+            case 'COMMENT':
+                if (isset($p_array['ag_id']))
+                {
+                    // Static value, if null the retrieve all of them
+                    if ($aComment==NULL)
+                    {
+                        // retrieve comments
+                        $aComment=$this->db->get_array("select 
AGC_ID,agc_comment ,"
+                                ." to_char(agc_date,'DD-MM-YY HH24:MI') as 
str_date ,"
+                                ." tech_user "
+                                ."  from action_gestion_comment "
+                                ."where ag_id=$1 order by 1"
+                                , [$p_array['ag_id']]);
+                    }
+                    $nb_comment=count($aComment);
+                    $description="";
+                    if (count($aComment)>$counter_comment)
+                    {
+                        $description.=sprintf(_('le %s , %s écrit %s'), 
$aComment[$counter_comment]['str_date'],
+                                $aComment[$counter_comment]['tech_user'], 
$aComment[$counter_comment]['agc_comment']);
+                        $counter_comment++;
+                    }
+                    return $description;
+                }
+                return "";
+                break;
+            // Related Action, use a counter to move to the next related 
action, only for Follow-Up
+            //
+            case 'RELATED_ACTION':
+                if (isset($p_array['ag_id']))
+                {
+                    // Static value, if null the retrieve all of them
+                    if ($aRelatedAction==NULL)
+                    {
+                        // retrieve parent
+                        $followup=new Follow_Up($this->db, $p_array["ag_id"]);
+                        $aRelatedAction=array();
+                        $aParent=$followup->get_parent();
+                        if ($aParent==-1)
+                            return "";
+                        $nb_parent=count($aParent);
+                        $sql_related_action="
                  select ag_id,
                     f_id_dest,
                     (select ad_value from fiche_detail fd1 where fd1.ad_id=23 
and fd1.f_id=f_id_dest) as qcode,
@@ -1260,46 +1345,49 @@ class Document
                     to_char(ag_timestamp,'DD.MM.YYYY') as strdate,
                     ag_ref
                     from action_gestion ag where ag_id=$1 ";
-                    
-                    for ($x = 0 ; $x < $nb_parent ; $x++ )
-                    {
-                        
$aRelatedAction[]=$this->db->get_row($sql_related_action,[$aParent[$x]['aga_least']]);
-                        
$aChild=$followup->get_children($aParent[$x]['aga_least']);
-                        $nb_child=count($aChild);
-                        for ($y=0;$y < $nb_child;$y++) {
-                            
$aRelatedAction[]=$this->db->get_row($sql_related_action,[ 
$aChild[$y]['aga_greatest'] ]);
+
+                        for ($x=0; $x<$nb_parent; $x++)
+                        {
+                            
$aRelatedAction[]=$this->db->get_row($sql_related_action, 
[$aParent[$x]['aga_least']]);
+                            
$aChild=$followup->get_children($aParent[$x]['aga_least']);
+                            $nb_child=count($aChild);
+                            for ($y=0; $y<$nb_child; $y++)
+                            {
+                                
$aRelatedAction[]=$this->db->get_row($sql_related_action,
+                                        [$aChild[$y]['aga_greatest']]);
+                            }
                         }
-                        
                     }
-                    
-                }
-                $description="";
-                if (count ($aRelatedAction) >  $counter_related_action ) {
-                    $description = sprintf("docid %s %s %s %s %s %s %s",
-                            $aRelatedAction[$counter_related_action]['ag_id'],
-                            $aRelatedAction[$counter_related_action]['ag_ref'],
-                            
$aRelatedAction[$counter_related_action]['strdate'],
-                            $aRelatedAction[$counter_related_action]['qcode'],
-                            
$aRelatedAction[$counter_related_action]['card_fname'],
-                            
$aRelatedAction[$counter_related_action]['card_name'],
-                            
$aRelatedAction[$counter_related_action]['ag_title']
-                            );
-                    
-                    $counter_related_action++;
+                    $description="";
+                    if (count($aRelatedAction)>$counter_related_action)
+                    {
+                        $description=sprintf("docid %s %s %s %s %s %s %s",
+                                
$aRelatedAction[$counter_related_action]['ag_id'],
+                                
$aRelatedAction[$counter_related_action]['ag_ref'],
+                                
$aRelatedAction[$counter_related_action]['strdate'],
+                                
$aRelatedAction[$counter_related_action]['qcode'],
+                                
$aRelatedAction[$counter_related_action]['card_fname'],
+                                
$aRelatedAction[$counter_related_action]['card_name'],
+                                
$aRelatedAction[$counter_related_action]['ag_title']
+                        );
+
+                        $counter_related_action++;
+                    }
+                    return $description;
                 }
-                return $description;
-            }
-            return "";
-            break;
-            
-        // Concerned operation, use a counter to move to the next one, only 
for Follow-Up
-        //
-        case 'CONCERNED_OPERATION':
-            if ( isset($p_array['ag_id'])) {
-                // Static value, if null the retrieve all of them
-                if ( $aRelatedOperation == NULL ) {
-                    // retrieve comments
-                    $aRelatedOperation=$this->db->get_array("select ago_id,
+                return "";
+                break;
+
+            // Concerned operation, use a counter to move to the next one, 
only for Follow-Up
+            //
+            case 'CONCERNED_OPERATION':
+                if (isset($p_array['ag_id']))
+                {
+                    // Static value, if null the retrieve all of them
+                    if ($aRelatedOperation==NULL)
+                    {
+                        // retrieve comments
+                        $aRelatedOperation=$this->db->get_array("select ago_id,
                         j.jr_id,
                         j.jr_internal,
                         j.jr_comment,
@@ -1308,30 +1396,33 @@ class Document
                        from jrn as j 
                         join action_gestion_operation as ago on 
(j.jr_id=ago.jr_id)
                        where ag_id=$1 order by jr_date,jr_id"
-                            ,[$p_array['ag_id']]);
-                }
-                $description="";
-                if (count ($aRelatedOperation) >  $counter_related_operation) {
-                    $description.= sprintf('%s %s %s %s ',
-                            
$aRelatedOperation[$counter_related_operation]['str_date'],
-                            
$aRelatedOperation[$counter_related_operation]['jr_internal'],
-                            
$aRelatedOperation[$counter_related_operation]['jr_comment'],
-                            
$aRelatedOperation[$counter_related_operation]['jr_pj_number']
-                            );
-                    $counter_related_operation++;
+                                , [$p_array['ag_id']]);
+                    }
+                    $description="";
+                    if (count($aRelatedOperation)>$counter_related_operation)
+                    {
+                        $description.=sprintf('%s %s %s %s ',
+                                
$aRelatedOperation[$counter_related_operation]['str_date'],
+                                
$aRelatedOperation[$counter_related_operation]['jr_internal'],
+                                
$aRelatedOperation[$counter_related_operation]['jr_comment'],
+                                
$aRelatedOperation[$counter_related_operation]['jr_pj_number']
+                        );
+                        $counter_related_operation++;
+                    }
+                    return $description;
                 }
-                return $description;
-            }
-            return "";
-            break;
-        // Other card, use a counter to move to the next one, only for 
Follow-Up
-        //
-        case 'OTHER_CARDS':
-            if ( isset($p_array['ag_id'])) {
-                // Static value, if null the retrieve all of them
-                if ( $aOtherCard == NULL ) {
-                    // retrieve comments
-                    $aOtherCard=$this->db->get_array("
+                return "";
+                break;
+            // Other card, use a counter to move to the next one, only for 
Follow-Up
+            //
+            case 'OTHER_CARDS':
+                if (isset($p_array['ag_id']))
+                {
+                    // Static value, if null the retrieve all of them
+                    if ($aOtherCard==NULL)
+                    {
+                        // retrieve comments
+                        $aOtherCard=$this->db->get_array("
                         select 
                         (select ad_value from fiche_detail where f_id = 
ap.f_id and ad_id = 1) as cname,
                         (select ad_value from fiche_detail where f_id = 
ap.f_id and ad_id = 32) as cfname,
@@ -1342,179 +1433,192 @@ class Document
                          from action_person ap  
                          where ag_id=$1
                             "
-                            ,[$p_array['ag_id']]);
-                }
-                $description="";
-                if (count ($aOtherCard) >  $counter_other_card ) {
-                    $description.= sprintf('%s %s %s %s %s %s ',
-                            $aOtherCard[$counter_other_card]['cname'],
-                            $aOtherCard[$counter_other_card]['cfname'],
-                            $aOtherCard[$counter_other_card]['qcode'],
-                            $aOtherCard[$counter_other_card]['email'],
-                            $aOtherCard[$counter_other_card]['phone'],
-                            $aOtherCard[$counter_other_card]['mobile']);
-                    $counter_other_card++;
+                                , [$p_array['ag_id']]);
+                    }
+                    $description="";
+                    if (count($aOtherCard)>$counter_other_card)
+                    {
+                        $description.=sprintf('%s %s %s %s %s %s ', 
$aOtherCard[$counter_other_card]['cname'],
+                                $aOtherCard[$counter_other_card]['cfname'], 
$aOtherCard[$counter_other_card]['qcode'],
+                                $aOtherCard[$counter_other_card]['email'], 
$aOtherCard[$counter_other_card]['phone'],
+                                $aOtherCard[$counter_other_card]['mobile']);
+                        $counter_other_card++;
+                    }
+                    return $description;
                 }
-                return $description;
-            }
-            return "";
-            break;    
-        // Attachment , use a counter to move to the next one, only for 
Follow-Up
-        //
-        case 'ATTACHED_FILES':
-            if ( isset($p_array['ag_id'])) {
-                // Static value, if null the retrieve all of them
-                if ( $aFileAttached == NULL ) {
-                    // retrieve comments
-                    $aFileAttached=$this->db->get_array("
+                return "";
+                break;
+            // Attachment , use a counter to move to the next one, only for 
Follow-Up
+            //
+            case 'ATTACHED_FILES':
+                if (isset($p_array['ag_id']))
+                {
+                    // Static value, if null the retrieve all of them
+                    if ($aFileAttached==NULL)
+                    {
+                        // retrieve comments
+                        $aFileAttached=$this->db->get_array("
                         select d_filename,d_description from document d  where 
ag_id=$1
                             "
-                            ,[$p_array['ag_id']]);
-                }
-                $nb_comment=count($aFileAttached);
-                $description="";
-                if (count ($aFileAttached) >  $counter_file) {
-                    $description.= sprintf("%s %s ",
-                           $aFileAttached[$counter_file]['d_filename'],
-                           $aFileAttached [$counter_file]['d_description']);
-                    $counter_file++;
+                                , [$p_array['ag_id']]);
+                    }
+                    $nb_comment=count($aFileAttached);
+                    $description="";
+                    if (count($aFileAttached)>$counter_file)
+                    {
+                        $description.=sprintf("%s %s ", 
$aFileAttached[$counter_file]['d_filename'],
+                                $aFileAttached 
[$counter_file]['d_description']);
+                        $counter_file++;
+                    }
+                    return $description;
                 }
-                return $description;
-            }
-            return "";
-            break;    
-        // Tag , use a counter to move to the next one
-        case 'TAGS':
-            if ( isset($p_array['ag_id'])) {
-                // Static value, if null the retrieve all of them
-                if ( $aTag == NULL ) {
-                    // retrieve comments
-                    $aTag=$this->db->get_array("
+                return "";
+                break;
+            // Tag , use a counter to move to the next one
+            case 'TAGS':
+                if (isset($p_array['ag_id']))
+                {
+                    // Static value, if null the retrieve all of them
+                    if ($aTag==NULL)
+                    {
+                        // retrieve comments
+                        $aTag=$this->db->get_array("
                        select t_tag from action_tags at2 join tags t 
using(t_id)  where ag_id=$1 order by upper(t_tag)
                             "
-                            ,[$p_array['ag_id']]);
+                                , [$p_array['ag_id']]);
+                    }
+                    $description="";
+                    if (count($aTag)>$counter_tag)
+                    {
+                        $description.=sprintf("%s ", $aTag 
[$counter_tag]['t_tag']);
+                        $counter_tag++;
+                    }
+                    return $description;
                 }
-                $description="";
-                if (count ($aTag) > $counter_tag) {
-                    $description.= sprintf("%s ",
-                           $aTag [$counter_tag]['t_tag']);
-                    $counter_tag++;
+                
+                return "";
+                break;
+            case 'COMM_PAYMENT':
+                if (isset($p_array["e_comm_paiement"]))
+                {
+                    return $p_array["e_comm_paiement"];
                 }
-                return $description;
-            }
-            return "";
-            break;    
-        case 'COMM_PAYMENT':
-            if ( isset($p_array["e_comm_paiement"])) {
-            return $p_array["e_comm_paiement"];
-             } else return "";
-             
-        // priority of the follow up  document
+                else
+                {
+                    return "";
+                }
+
+            // priority of the follow up  document
             case 'PRIORITY':
-                if ( isset($p_array['ag_priority'])) {
-                    
$aPriority=array(1=>_("Haute"),2=>_("Normale"),3=>_("Basse"));
+                if (isset($p_array['ag_priority']))
+                {
+                    $aPriority=array(1=>_("Haute"), 2=>_("Normale"), 
3=>_("Basse"));
                     return $aPriority[$p_array["ag_priority"]];
                 }
                 return "";
-        // Priority of the follow up  document
+            // Priority of the follow up  document
             case 'GROUPMGT':
-                if ( isset($p_array['ag_dest'])) {
-                   $profile=$this->db->get_value("select p_name from profile 
where p_id=$1",array($p_array['ag_dest']));
-                   return $profile;
+                if (isset($p_array['ag_dest']))
+                {
+                    $profile=$this->db->get_value("select p_name from profile 
where p_id=$1", array($p_array['ag_dest']));
+                    return $profile;
                 }
                 return "";
-        // Hour in the follow up document
+            // Hour in the follow up document
             case 'HOUR':
-                if ( isset($p_array['ag_hour'])) {
+                if (isset($p_array['ag_hour']))
+                {
                     return $p_array["ag_hour"];
                 }
                 return "";
-        // State in the follow up document
+            // State in the follow up document
             case 'STATUS':
-                if ( isset($p_array['ag_state'])) {
+                if (isset($p_array['ag_state']))
+                {
                     $status=$this->db->get_value("
-                            select s_value from document_state where 
s_id=$1",array($p_array['ag_state']));
-                   return $status;
+                            select s_value from document_state where s_id=$1", 
array($p_array['ag_state']));
+                    return $status;
                 }
                 return "";
-         // type of document
+            // type of document
             case 'DOCUMENT_TYPE':
                 $ret="";
-                if ( isset($p_array['ag_id'])){
+                if (isset($p_array['ag_id']))
+                {
                     $ret=$this->db->get_value("select dt_value 
                                              from action_gestion 
                                              join document_type dt  on 
(ag_type=dt.dt_id) 
-                            where ag_id=$1",array($p_array["ag_id"]));
+                            where ag_id=$1", array($p_array["ag_id"]));
                 }
                 return $ret;
-                
-        
-    } // end switch 
+        } // end switch 
         /*
          * retrieve the value of ATTR for e_march
          */
-        if (preg_match('/^ATTR/', $p_tag) == 1)
+        if (preg_match('/^ATTR/', $p_tag)==1)
         {
             $r="";
             // Retrieve f_id
-            if ( isset ($p_array['e_march'.$this->counter]))
+            if (isset($p_array['e_march'.$this->counter]))
             {
-                $id = $p_array['e_march' . $this->counter];
-                $r=$this->replace_special_tag($id,$p_tag);
+                $id=$p_array['e_march'.$this->counter];
+                $r=$this->replace_special_tag($id, $p_tag);
             }
         }
         /*
          * retrieve the value of ATTR for e_march
          */
-        if (preg_match('/^BENEFATTR/', $p_tag) == 1)
+        if (preg_match('/^BENEFATTR/', $p_tag)==1)
         {
             $r="";
             $qcode=isset($p_array['qcode_benef'])?$p_array['qcode_benef']:'';
             // Retrieve f_id
-             $r=$this->replace_special_tag($qcode,$p_tag);
+            $r=$this->replace_special_tag($qcode, $p_tag);
         }
-        if (preg_match('/^CUSTATTR/', $p_tag) == 1)
+        if (preg_match('/^CUSTATTR/', $p_tag)==1)
         {
             $r="";
-            if ( isset($p_array['qcode_dest']) || isset($p_array['e_client']) )
+            if (isset($p_array['qcode_dest'])||isset($p_array['e_client']))
             {
                 
$qcode=(isset($p_array['qcode_dest']))?$p_array['qcode_dest']:$p_array['e_client'];
-                $r=$this->replace_special_tag($qcode,$p_tag);
+                $r=$this->replace_special_tag($qcode, $p_tag);
             }
         }
         return $r;
     }
-    /*!\brief remove a row from the table document, the lob object is not 
deleted
+
+    /* !\brief remove a row from the table document, the lob object is not 
deleted
      *        because can be linked elsewhere
      */
+
     function remove()
     {
-      $d_lob=$this->db->get_value('select d_lob from document where d_id=$1',
-                                 array($this->d_id));
+        $d_lob=$this->db->get_value('select d_lob from document where 
d_id=$1', array($this->d_id));
         $sql='delete from document where d_id='.$this->d_id;
         $this->db->exec_sql($sql);
-        if ( $d_lob != 0 )
+        if ($d_lob!=0)
             $this->db->lo_unlink($d_lob);
     }
-    /*!\brief Move a document from the table document into the concerned row
+
+    /* !\brief Move a document from the table document into the concerned row
      *        the document is not copied : it is only a link
      *
      * \param $p_internal internal code
      *
      */
-    function MoveDocumentPj($p_internal)
+
+    function moveDocumentPj($p_internal)
     {
         $sql="update jrn set jr_pj=$1,jr_pj_name=$2,jr_pj_type=$3 where 
jr_internal=$4";
 
-        
$this->db->exec_sql($sql,array($this->d_lob,$this->d_filename,$this->d_mimetype,$p_internal));
+        $this->db->exec_sql($sql, array($this->d_lob, $this->d_filename, 
$this->d_mimetype, $p_internal));
         // clean the table document
         $sql='delete from document where d_id='.$this->d_id;
         $this->db->exec_sql($sql);
-
-
     }
+
     /**
-     *Replace a special tag *TAGxxxx with the value from fiche_detail, the xxxx
+     * replace a special tag *TAGxxxx with the value from fiche_detail, the 
xxxx
      * is the ad_value
      * @param $p_qcode qcode of the card
      * @param $p_tag tag to parse
@@ -1524,84 +1628,85 @@ class Document
     function replace_special_tag($p_qcode, $p_tag)
     {
         // check if the march exists
-        if ($p_qcode == "")
-            return "";
+        if ($p_qcode=="")             return "";
 
-        $f = new Fiche($this->db);
-        $found = $f->get_by_qcode($p_qcode, false);
+        $f=new Fiche($this->db);
+        $found=$f->get_by_qcode($p_qcode, false);
         // if not found exit
-        if ($found == 1)
-            return "";
+        if ($found==1)             return "";
 
         // get the ad_id
-        $attr=preg_replace("/^.*ATTR/","",$p_tag);
+        $attr=preg_replace("/^.*ATTR/", "", $p_tag);
 
-        if (isNumber($attr) == 0) return "";
-        $ad_type=$this->db->get_value("select ad_type from attr_def where 
ad_id=$1",array($attr));
+        if (isNumber($attr)==0)             return "";
+        
+        $ad_type=$this->db->get_value("select ad_type from attr_def where 
ad_id=$1", array($attr));
 
         // get ad_value
-        $ad_value=$this->db->get_value("select ad_value from fiche_detail 
where f_id=$1 and ad_id=$2",array($f->id,$attr));
+        $ad_value=$this->db->get_value("select ad_value from fiche_detail 
where f_id=$1 and ad_id=$2",
+                array($f->id, $attr));
 
         // if ad_id is type select execute select and get value
-        if ( $ad_type=="select")
+        if ($ad_type=="select")
         {
-            $sql=$this->db->get_value("select ad_extra from attr_def where 
ad_id=$1",array($attr));
-            $array= $this->db->make_array($sql);
-            for ($a=0;$a<count ($array);$a++)
+            $sql=$this->db->get_value("select ad_extra from attr_def where 
ad_id=$1", array($attr));
+            $array=$this->db->make_array($sql);
+            for ($a=0; $a<count($array); $a++)
             {
                 if ($array[$a]['value']==$ad_value)
                     return $array[$a]['label'];
             }
-            
         }
         // if ad_id is not type select get value
         return $ad_value;
     }
-    function update_description ($p_desc)
+
+    function update_description($p_desc)
     {
-        $this->db->exec_sql('update document set d_description = $1 where 
d_id=$2',
-                array($p_desc,$this->d_id));
+        $this->db->exec_sql('update document set d_description = $1 where 
d_id=$2', array($p_desc, $this->d_id));
     }
+
     /**
-     * Replace a pattern with a value in the buffer , handle the change for 
OOo type file and amount
+     * replace a pattern with a value in the buffer , handle the change for 
OOo type file and amount
      * 
      * @param string $p_buffer
      * @param string $_pattern
      * @param mixed $p_value
      */
-    static function replace_value($p_buffer, $p_pattern, 
$p_value,$p_limit=-1,$p_type='OOo')
+    static function replace_value($p_buffer, $p_pattern, $p_value, 
$p_limit=-1, $p_type='OOo')
     {
         $check=$p_pattern;
-        $check=str_replace(['&lt;','&gt;','<','>','='], "", $check);
-        if ( preg_replace('/[^[:alnum:]^_]/', '', $check) != $check)
+        $check=str_replace(['&lt;', '&gt;', '<', '>', '='], "", $check);
+        if (preg_replace('/[^[:alnum:]^_]/', '', $check)!=$check)
         {
             throw new Exception(sprintf(_("chaine à remplacer [%s] contient un 
caractère interdit"), $p_pattern));
         }
         $count=0;
-        if (is_numeric($p_value) && $p_type == 'OOo')
+        if (is_numeric($p_value)&&$p_type=='OOo')
         {
             /* -- works only with OOo Calc -- */
             $searched='/office:value-type="string"><text:p>'.$p_pattern.'/i';
             $replaced='office:value-type="float" 
office:value="'.$p_value.'"><text:p>'.$p_value;
-            $p_buffer=preg_replace($searched, $replaced, 
$p_buffer,$p_limit,$count);
-            if ( $count == 0) {
-            /* -- work with libreOffice > 5 -- */
+            $p_buffer=preg_replace($searched, $replaced, $p_buffer, $p_limit, 
$count);
+            if ($count==0)
+            {
+                /* -- work with libreOffice > 5 -- */
                 $searched='/office:value-type="string" 
calcext:value-type="string"><text:p>(<text:s\/>)*'.$p_pattern.'/i';
                 $replaced='office:value-type="float" 
office:value="'.$p_value.'"  calcext:value-type="float"><text:p>'.$p_value;
-                $p_buffer=preg_replace($searched, $replaced, 
$p_buffer,$p_limit,$count);
+                $p_buffer=preg_replace($searched, $replaced, $p_buffer, 
$p_limit, $count);
             }
         }
-        if ($count == 0)
+        if ($count==0)
         {
-            if ( $p_type=='OOo' )
+            if ($p_type=='OOo')
             {
-              $p_value=str_replace('&','&amp;',$p_value);
-              $p_value=str_replace('<','&lt;',$p_value);
-              $p_value=str_replace('>','&gt;',$p_value);
-              $p_value=str_replace('"','&quot;',$p_value);
-              $p_value=str_replace("'",'&apos;',$p_value);
+                $p_value=str_replace('&', '&amp;', $p_value);
+                $p_value=str_replace('<', '&lt;', $p_value);
+                $p_value=str_replace('>', '&gt;', $p_value);
+                $p_value=str_replace('"', '&quot;', $p_value);
+                $p_value=str_replace("'", '&apos;', $p_value);
             }
-            $p_buffer=preg_replace('/'.$p_pattern.'/i', $p_value, 
$p_buffer,$p_limit);
+            $p_buffer=preg_replace('/'.$p_pattern.'/i', $p_value, $p_buffer, 
$p_limit);
         }
         return $p_buffer;
     }
diff --git a/include/class/fiche.class.php b/include/class/fiche.class.php
index 631e24c..f2f8a01 100644
--- a/include/class/fiche.class.php
+++ b/include/class/fiche.class.php
@@ -53,14 +53,49 @@ class Fiche
     var $fiche_def_ref; /*!< $fiche_def_ref Type */
     var $row;           /*! < All the row from the ledgers */
     var $quick_code;           /*!< quick_code of the card */
+    private $f_enable;  /*!< if card is enable (fiche.f_enable) */
     function __construct($p_cn,$p_id=0)
     {
         $this->cn=$p_cn;
         $this->id=$p_id;
         $this->quick_code='';
         $this->attribut=array();
+        $f_enable='1';
     }
-    /**
+    public function get_id()
+    {
+        return $this->id;
+    }
+
+    public function get_fiche_def_ref()
+    {
+        return $this->fiche_def_ref;
+    }
+
+    public function get_f_enable()
+    {
+        return $this->f_enable;
+    }
+
+    public function set_id($id)
+    {
+        $this->id=$id;
+        return $this;
+    }
+
+    public function set_fiche_def_ref($fiche_def_ref)
+    {
+        $this->fiche_def_ref=$fiche_def_ref;
+        return $this;
+    }
+
+    public function set_f_enable($f_enable)
+    {
+        $this->f_enable=$f_enable;
+        return $this;
+    }
+
+        /**
      *@brief used with a usort function, to sort an array of Fiche on the name
      */
     static function cmp_name(Fiche $o1,Fiche $o2)
@@ -168,6 +203,7 @@ class Fiche
         {
             $row=Database::fetch_array($Ret,$i);
             $this->fiche_def=$row['fd_id'];
+            $this->f_enable=$row['f_enable'];
             $t=new Fiche_Attr ($this->cn);
             $t->ad_id=$row['ad_id'];
             $t->ad_text=$row['ad_text'];
@@ -581,7 +617,7 @@ class Fiche
         {
             return 'FNT';
         }
-
+        
         /* for each attribute */
         foreach ($attr as $r)
         {
@@ -749,7 +785,16 @@ class Fiche
             }
             
$ret.="<TR>".td(_($r->ad_text).$bulle,'class="'.$class.'"').td($w->input()." 
".$msg)." </TR>";
         }
-
+        // Display if the card is enable or not
+        $enable_is=new InputSwitch("f_enable");
+        $enable_is->value=$this->f_enable;
+        $enable_is->readOnly=$p_readonly;
+                
+        $ret.=tr( 
+                td(_("Actif")).td($enable_is->input())
+                );
+        
+        
         $ret.="</table>";
 
         return $ret;
@@ -801,9 +846,10 @@ class Fiche
         try
         {
             $this->cn->start();
-            $sql=sprintf("insert into fiche(f_id,fd_id)".
-                    " values (%d,%d)", $fiche_id, $p_fiche_def);
-            $Ret=$this->cn->exec_sql($sql);
+            
+            $Ret=$this->cn->exec_sql("insert into fiche(f_id,f_enable,fd_id) 
value ($1,$2,$3)",
+                    array($fiche_id, $p_array['f_enable'],$p_fiche_def));
+            
             // parse the $p_array array
             foreach ($p_array as $name=> $value)
             {
@@ -961,6 +1007,9 @@ class Fiche
         try
         {
             $this->cn->start();
+            
+            $this->cn->exec_sql("update fiche set f_enable=$1 where 
f_id=$2",array($p_array['f_enable'],$this->id));
+            
             // parse the $p_array array
             foreach ($p_array as $name=> $value)
             {
diff --git a/include/class/follow_up.class.php 
b/include/class/follow_up.class.php
index 7a57316..1be5941 100644
--- a/include/class/follow_up.class.php
+++ b/include/class/follow_up.class.php
@@ -596,9 +596,9 @@ class Follow_Up
             $act->save();
         }
 
-        /* Upload the documents */
+        /* upload the documents */
         $doc=new Document($this->db);
-        $doc->Upload($this->ag_id);
+        $doc->upload($this->ag_id);
         if (trim($this->ag_comment)!='' && 
Document_Option::can_add_comment($this->ag_id))
         {
             $this->db->exec_sql("insert into action_gestion_comment 
(ag_id,tech_user,agc_comment) values ($1,$2,$3)"
@@ -905,9 +905,9 @@ class Follow_Up
                 $this->ag_ref /* 11 */
             ));
         }
-        // Upload  documents
+        // upload  documents
         $doc=new Document($this->db);
-        $doc->Upload($this->ag_id);
+        $doc->upload($this->ag_id);
 
         /* save action details */
         $http=new HttpInput();
diff --git a/include/class/user.class.php b/include/class/user.class.php
index 2190bb0..3ad5bfe 100644
--- a/include/class/user.class.php
+++ b/include/class/user.class.php
@@ -190,7 +190,8 @@ class User
 
                if ($res == 0)
                {
-                       $cn->exec_sql($sql, 
array($_SESSION[SESSION_KEY.'g_user'], $_SERVER["REMOTE_ADDR"], $from, 
$_SERVER['REQUEST_URI'], 'FAIL'));
+                       $cn->exec_sql($sql, 
array($_SESSION[SESSION_KEY.'g_user'], $_SERVER["REMOTE_ADDR"], 
+                            $from, $_SERVER['REQUEST_URI'], 'FAIL'));
                        if (!$silent)
                        {
                                echo '<script> alert(\''._('Utilisateur ou mot 
de passe incorrect').'\')</script>';
@@ -203,7 +204,8 @@ class User
                else
                {
                        if ($from == 'LOGIN')
-                               $cn->exec_sql($sql, 
array($_SESSION[SESSION_KEY.'g_user'], $_SERVER["REMOTE_ADDR"], $from, 
$_SERVER['REQUEST_URI'], 'SUCCESS'));
+                               $cn->exec_sql($sql, 
array($_SESSION[SESSION_KEY.'g_user'], $_SERVER["REMOTE_ADDR"], $from, 
+                                    $_SERVER['REQUEST_URI'], 'SUCCESS'));
                        $this->valid = 1;
                }
 
@@ -249,7 +251,8 @@ class User
             if ($priv)
             {
                 // the access is granted
-                $jnt=$cn->get_value("select jnt_id from jnt_use_dos where 
dos_id=$1 and use_id=$2", array($db_id, $this->id));
+                $jnt=$cn->get_value("select jnt_id from jnt_use_dos where 
dos_id=$1 and use_id=$2",
+                        array($db_id, $this->id));
 
                 if ($cn->size()==0)
                 {
@@ -312,6 +315,11 @@ class User
 
        function get_ledger($p_type = 'ALL', $p_access = 3,$disable=TRUE)
        {
+            $p_type=strtoupper($p_type);
+            if (! in_array($p_type, ["FIN","ALL","ODS","VEN",'ACH'])) {
+                record_log(sprintf("UGL1, p_type %s",$p_type));
+                throw new Exception("UGL1"._("Type incorrecte"));
+            }
             if ($disable==TRUE) {
                 $sql_enable="";
             } else {
@@ -419,22 +427,26 @@ class User
 
        function set_periode($p_periode)
        {
-               $sql = "update user_local_pref set parameter_value='$p_periode' 
where user_id='$this->id' and parameter_type='PERIODE'";
-               $Res = $this->db->exec_sql($sql);
+               $sql = "update user_local_pref set parameter_value=$1 where 
user_id=$2 and parameter_type='PERIODE'";
+               $Res = $this->db->exec_sql($sql,[$p_periode,$this->id]);
        }
 
        private function set_default_periode()
        {
 
                /* get the first periode */
-               $sql = 'select min(p_id) as pid from parm_periode where 
p_closed = false and p_start = (select min(p_start) from parm_periode)';
+               $sql = 'select min(p_id) as pid '
+                        . ' from parm_periode '
+                        . ' where p_closed = false and p_start = (select 
min(p_start) from parm_periode)';
                $Res = $this->db->exec_sql($sql);
 
                $pid = Database::fetch_result($Res, 0, 0);
                /* if all the periode are closed, then we use the last closed 
period */
                if ($pid == null)
                {
-                       $sql = 'select min(p_id) as pid from parm_periode where 
p_start = (select max(p_start) from parm_periode)';
+                       $sql = 'select min(p_id) as pid '
+                                . 'from parm_periode '
+                                . 'where p_start = (select max(p_start) from 
parm_periode)';
                        $Res2 = $this->db->exec_sql($sql);
                        $pid = Database::fetch_result($Res2, 0, 0);
                        if ($pid == null)
@@ -532,7 +544,6 @@ class User
         * \brief  Get the default user's preferences
         * \return array of (parameter_type => parameter_value)
         */
-
        function get_preference()
        {
                $sql = "select parameter_type,parameter_value from 
user_local_pref where user_id=$1";
@@ -544,7 +555,16 @@ class User
                        $type = $row['parameter_type'];
                        $l_array[$type] = $row['parameter_value'];
                }
-
+                $repo=new Database();
+                $a_global_pref=$repo->get_array("select 
parameter_type,parameter_value from user_global_pref 
+                                            where 
+                                            upper(user_id) = 
upper($1)",[$this->login]);
+                $nb_global=count($a_global_pref);
+                for ( $i = 0 ;$i< $nb_global ; $i++) {
+                    $idx=$a_global_pref[$i]['parameter_type'];
+                    $value=$a_global_pref[$i]['parameter_value'];
+                    $l_array[$idx]=$value;
+                }
 
                return $l_array;
        }
@@ -601,9 +621,9 @@ class User
                        }
                        return 0;
                }
-               if ($Count == 1)
-                       return 1;
-               echo "<H2 class=\"error\"> Action Invalide !!! $Count select * 
from user_sec_act where ua_login='$p_login' and ua_act_id=$p_action_id </H2>";
+               if ($Count == 1)                        return 1;
+                echo_error(_("Action invalide"));
+                record_log("User:check_action".sprintf("login %s ua_act_id 
%s",$this->login,$p_action_id));
                exit();
        }
 
@@ -620,7 +640,7 @@ class User
                // Load everything in an array
                $Res = $cn->exec_sql("select parameter_type,parameter_value from
                             user_global_pref
-                            where user_id='" . $this->login . "'");
+                            where user_id=$1",[$this->login]);
                $Max = Database::num_row($Res);
                if ($Max == 0)
                {
@@ -635,7 +655,6 @@ class User
                        $row = Database::fetch_array($Res, $i);
                        $type = $row['parameter_type'];
                        $line[$type] = $row['parameter_value'];
-                       ;
                }
                // save array into g_ variable
                $array_pref = array('g_theme' => 'THEME', 
@@ -756,18 +775,17 @@ class User
                        $this->audit('FAIL');
                        if ($p_js == 1)
                        {
-                               echo "<script>";
-                               echo "alert ('Cette action ne vous est pas 
autorisée. Contactez votre responsable');";
-                               echo "</script>";
+                            echo create_script("alert_box(content[59])");
                        }
                        elseif ($p_js == 2) {
                                record_log(_("Access invalid").$p_action);
                        }
                        else
                        {
-                               echo '<div class="redcontent">';
-                               echo '<h2 class="error"> Cette action ne vous 
est pas autorisée Contactez votre responsable</h2>';
-                               echo '</div>';
+                            echo '<h2 class="error">',
+                            htmlspecialchars(_("Cette action ne vous est pas 
autorisée Contactez votre responsable")),
+                                    '</h2>';
+                            echo '</div>';
                        }
                        exit(-1);
                }
@@ -797,7 +815,6 @@ class User
         * \param $p_action requested action
         * \return nothing the program exits automatically
         */
-
        function can_print($p_action, $p_js = 0)
        {
                if ($this->check_print($p_action) == 0)
@@ -805,15 +822,15 @@ class User
                        $this->audit('FAIL');
                        if ($p_js == 1)
                        {
-                               echo "<script>";
-                               echo "alert ('Cette action ne vous est pas 
autorisée. Contactez votre responsable');";
-                               echo "</script>";
+                            echo create_script("alert_box(content[59])");
                        }
                        else
                        {
-                               echo '<div class="redcontent">';
-                               echo '<h2 class="error"> Cette action ne vous 
est pas autorisée Contactez votre responsable</h2>';
-                               echo '</div>';
+                            echo '<div class="redcontent">';
+                            echo '<h2 class="error">',
+                            htmlspecialchars(_("Cette action ne vous est pas 
autorisée Contactez votre responsable")),
+                                    '</h2>';
+                            echo '</div>';
                        }
                        exit(-1);
                }
diff --git a/include/company.inc.php b/include/company.inc.php
index 2bd6ae2..0f585a4 100644
--- a/include/company.inc.php
+++ b/include/company.inc.php
@@ -50,7 +50,7 @@ if (isset($_POST['record_company']))
        $m->MY_STOCK =$http->post("p_stock");
        $m->MY_ANC_FILTER=$http->post("p_anc_filter");
         try {
-            $m->Update();
+            $m->update();
         } catch (Exception $e) {
             alert($e->getMessage());
         }
diff --git a/include/export/export_document.php 
b/include/export/export_document.php
index fcc6ecb..1fd7d71 100644
--- a/include/export/export_document.php
+++ b/include/export/export_document.php
@@ -45,7 +45,7 @@ if ($action == 'sh')
             $d_id=$http->request('d_id',"number");
                // retrieve the document
                $doc = new Document($cn, $d_id);
-               $doc->Send();
+               $doc->send();
        }
 }
 /* remove the document */
diff --git a/include/lib/sort_table.class.php b/include/lib/sort_table.class.php
index 6cbfcaa..f981284 100644
--- a/include/lib/sort_table.class.php
+++ b/include/lib/sort_table.class.php
@@ -68,7 +68,7 @@ class Sort_Table
     {
        if ($p_ind < 0 || $p_ind > $this->nb)
            return 'ERREUR TRI';
-       $file = str_replace('extension.php', '', $_SERVER['SCRIPT_FILENAME']);
+       $file = str_replace('extension.php', '', $_SERVER['PHP_SELF']);
 
        $base = $this->array[$p_ind]['url'];
        $str = '';
diff --git a/include/lib/user_common.php b/include/lib/user_common.php
index 5a2be36..9b05639 100644
--- a/include/lib/user_common.php
+++ b/include/lib/user_common.php
@@ -115,7 +115,7 @@ function 
navigation_bar($p_offset,$p_line,$p_size=0,$p_page=1,$p_javascript="")
         $step=$p_size;
         $offset=($e-1)*$step;
 
-        $r='<A class="mtitle" 
href="'.basename($_SERVER['SCRIPT_FILENAME'])."?".$url."&offset=$offset&step=$step&page=$e&size=$step".'"
 '.$p_javascript.'>';
+        $r='<A class="mtitle" 
href="'.basename($_SERVER['PHP_SELF'])."?".$url."&offset=$offset&step=$step&page=$e&size=$step".'"
 '.$p_javascript.'>';
         $r.="  &larr;";
         // $r.='<INPUT TYPE="IMAGE" width="12" SRC="image/go-previous.png">';
         $r.="</A>&nbsp;&nbsp;";
@@ -181,35 +181,6 @@ function CleanUrl()
 {
     // Compute the url
     $url=http_build_query($_GET);
-   /* $get=$_GET;
-    if ( isset ($get) )
-    {
-        foreach ($get as $name=>$value )
-        {
-            // we clean the parameter offset, step, page and size
-            if (  ! 
in_array($name,array('offset','step','page','size','s','o','r_jrn')))
-            {
-                if (is_array($name)) {
-                    
-                } else {
-                    $url.=$and.$name."=".$value;
-                }
-                $and="&";
-            }// if
-        }//foreach
-        if ( isset($_GET['r_jrn']))
-        {
-            $r_jrn=$_GET['r_jrn'];
-            if (count($r_jrn) > 0 )
-            {
-                foreach ($r_jrn as $key=>$value)
-                {
-                    $url.=$and."r_jrn[$key]=".$value;
-                    $and="&";
-                }
-            }
-        }
-    }// if*/
     return $url;
 }
 function redirect($p_string,$p_time=0)
@@ -219,7 +190,8 @@ function redirect($p_string,$p_time=0)
     }
     echo '<HTML><head><META HTTP-EQUIV="REFRESH" content="'.$p_time.'; 
url='.$p_string.'"></head><body> Connecting... </body></html>';
 }
-/*!\brief remove the useless space, change comma by period and try to return
+/*!
+ * \brief remove the useless space, change comma by period and try to return
  * a number
  *\param $p_num number to format
  *\return the formatted number
diff --git a/include/template/menu.php b/include/template/menu.php
index 5c46026..ab2c2b8 100644
--- a/include/template/menu.php
+++ b/include/template/menu.php
@@ -1,25 +1,31 @@
 <?php
 //This file is part of NOALYSS and is under GPL 
 //see licence.txt
+
 ?><div class="<?php echo $style_menu; ?>">
-    <?php if ( count($amenu) > 4 && $level == 0) :
+    <?php if ( count($amenu) > 4 && $level == 0) {
        $style ='style= "width:100%"';
-     elseif ($level==0):
-switch (count($amenu))
-{
-case 4:
-case 3:
-   $width=count($amenu)*20;
-   $left=round((100-$width)/2);
-$style="style=\"width:$width%;margin-left:$left%\"";
-break;
-default:
-$style="";
+    }
+     elseif ($level==0){
+        $http=new HttpInput();
+        $access_code=$http->request("ac");
+        switch (count($amenu))
+        {
+            case 4:
+            case 3:
+               $width=count($amenu)*20;
+               $left=round((100-$width)/2);
+            $style="style=\"width:$width%;margin-left:$left%\"";
+            break;
+            default:
+            $style="";
+        }   
+
 }
-       else:
+     else {
                $style=" class=\"mtitle\"";
 
-       endif;?>
+        }?>
 <table  <?php echo $style?> >
 
 
@@ -28,55 +34,57 @@ $style="";
        global $g_user;
        // Display the menu
        for($i=0;$i < count($amenu);$i++):
-           if ( (count($amenu)==1)):
+           if ( (count($amenu)==1)) {
                $class="selectedcell";
 ?>
        <td class="<?php echo $class?>">
-            <a class="mtitle" href="do.php?gDossier=<?php echo 
Dossier::id()?>&ac=<?php echo $_REQUEST['ac']?>" title="<?php echo 
h(gettext($amenu[$i]['me_description']))?>" >
+            <a class="mtitle" href="do.php?gDossier=<?php echo 
Dossier::id()?>&ac=<?php echo $access_code?>" title="<?php echo 
h(gettext($amenu[$i]['me_description']))?>" >
            <?php echo gettext($amenu[$i]['me_menu'])?>
            </a>
        </td>
 <?php 
-           else:
-               $class="mtitle";
-               $js="";
-                
-               if ( $amenu[$i]['me_url']!='')
-               {
-                       $url=$amenu[$i]['me_url'];
-               }
-               elseif ($amenu[$i]['me_javascript'] != '')
-               {
-                       $url="javascript:void(0)";
-                       $js=sprintf(' 
onclick="%s"',$amenu[$i]['me_javascript']);
-               }
-               else
-               {
-                    $a_request=explode('/', $_REQUEST['ac']);
-                    if ( $level == 0) {
-                        $url=$a_request[0];
-                        
-                        if (count($a_request) > 1 &&
-                            $url.'/'.$amenu[$i]['me_code'] == 
$a_request[0].'/'.$a_request[1]) 
-                                $class="selectedcell";
-                    } elseif ($level == 1)
+            }
+           else {
+                    $class="mtitle";
+                    $js="";
+
+                    if ( $amenu[$i]['me_url']!='')
                     {
-                        $url=$a_request[0].'/'.$a_request[1];
+                            $url=$amenu[$i]['me_url'];
                     }
-                    $url.='/'.$amenu[$i]['me_code'];
-                    if ($url == $_REQUEST['ac']) $class="selectedcell";
-                    $url="do.php?gDossier=".Dossier::id()."&ac=".$url;
-               }
+                    elseif ($amenu[$i]['me_javascript'] != '')
+                    {
+                            $url="javascript:void(0)";
+                            $js=sprintf(' 
onclick="%s"',$amenu[$i]['me_javascript']);
+                    }
+                    else
+                    {
+                        $a_request=explode('/', $access_code);
+                        if ( $level == 0) {
+                            $url=$a_request[0];
 
-?>     <td class="<?php echo $class?>">
-           <a class="mtitle" href="<?php echo $url;?>" <?php echo $js?> 
title="<?php echo h(gettext($amenu[$i]['me_description']))?>">
-           <?php echo gettext($amenu[$i]['me_menu'])?>
-           </a>
-       </td>
+                            if (count($a_request) > 1 &&
+                                $url.'/'.$amenu[$i]['me_code'] == 
$a_request[0].'/'.$a_request[1]) 
+                                    $class="selectedcell";
+                        } elseif ($level == 1)
+                        {
+                            $url=$a_request[0].'/'.$a_request[1];
+                        }
+                        $url.='/'.$amenu[$i]['me_code'];
+                        if ($url == $access_code ) $class="selectedcell";
+                        $url="do.php?gDossier=".Dossier::id()."&ac=".$url;
+                    }
+
+?>     
+<td class="<?php echo $class?>">
+    <a class="mtitle" href="<?php echo $url;?>" <?php echo $js?> title="<?php 
echo h(gettext($amenu[$i]['me_description']))?>">
+    <?php echo gettext($amenu[$i]['me_menu'])?>
+    </a>
+</td>
 
 
 <?php 
-endif;
+     } // end  elseif ($level==0) 
 
        ?>
        <?php 



reply via email to

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