altocompta/include/class_anc_grandlivre.php
Dany De Bontridder ac14ffab61 Merged revisions 4743-4748,4759-4784,4786-4791 via svnmerge from
svn+ssh://ns352270.ovh.net/svn/phpcompta/tags/rel600

........
  r4743 | danydb | 2012-02-04 16:18:09 +0100 (Sat, 04 Feb 2012) | 1 line
  
  update DBVersion
........
  r4744 | danydb | 2012-02-04 16:22:52 +0100 (Sat, 04 Feb 2012) | 1 line
  
  remove space
........
  r4745 | danydb | 2012-02-04 16:44:10 +0100 (Sat, 04 Feb 2012) | 3 lines
  
  Bug : clause from in report didn't work properly
........
  r4746 | danydb | 2012-02-04 18:39:58 +0100 (Sat, 04 Feb 2012) | 1 line
  
  sql improve : do not use comptaproc. function in select concerning lettering
........
  r4747 | danydb | 2012-02-04 18:45:55 +0100 (Sat, 04 Feb 2012) | 1 line
  
  put correct DBVERSION
........
  r4748 | danydb | 2012-02-04 18:47:00 +0100 (Sat, 04 Feb 2012) | 1 line
  
  remove useless patch
........
  r4759 | danydb | 2012-02-04 23:19:55 +0100 (Sat, 04 Feb 2012) | 2 lines
  
  Bug : remove double input in letter_deb, letter_cred
........
  r4760 | danydb | 2012-02-04 23:35:13 +0100 (Sat, 04 Feb 2012) | 2 lines
  
  Upgrade script
........
  r4761 | danydb | 2012-02-07 16:50:24 +0100 (Tue, 07 Feb 2012) | 1 line
  
  FIN : cosmetic show name of the card + align col.
........
  r4762 | danydb | 2012-02-07 18:50:55 +0100 (Tue, 07 Feb 2012) | 1 line
  
  FIN : add item , new column card name, change func for adding row
........
  r4763 | danydb | 2012-02-08 17:49:44 +0100 (Wed, 08 Feb 2012) | 1 line
  
  Improve : generate document : default argument is an array
........
  r4764 | danydb | 2012-02-08 19:15:50 +0100 (Wed, 08 Feb 2012) | 2 lines
  
  Correct probleme with date in calc
........
  r4765 | danydb | 2012-02-08 19:47:08 +0100 (Wed, 08 Feb 2012) | 3 lines
  
  Correct probleme with date in other document than CALC
  New tag : DATE_CALC
........
  r4766 | danydb | 2012-02-08 20:00:18 +0100 (Wed, 08 Feb 2012) | 2 lines
  
  Double click on accounting gives the history of the accounting
........
  r4767 | danydb | 2012-02-09 10:20:29 +0100 (Thu, 09 Feb 2012) | 1 line
  
  Improve : generate document :add DATE_LIMIT_CALC to allow date formatting in calc
........
  r4768 | danydb | 2012-02-09 13:47:45 +0100 (Thu, 09 Feb 2012) | 2 lines
  
  cosmetic : place of "Document generated
........
  r4769 | danydb | 2012-02-09 14:02:13 +0100 (Thu, 09 Feb 2012) | 2 lines
  
  cosmetic : ACH generated document use style instead of class
........
  r4770 | danydb | 2012-02-09 14:09:58 +0100 (Thu, 09 Feb 2012) | 1 line
  
  code indent
........
  r4771 | danydb | 2012-02-17 01:13:36 +0100 (Fri, 17 Feb 2012) | 1 line
  
  bug cannot update ANC (cause j_id and value from POST conflict)
........
  r4772 | danydb | 2012-02-17 01:16:34 +0100 (Fri, 17 Feb 2012) | 1 line
  
  do not clause popup if we save
........
  r4773 | danydb | 2012-02-17 01:26:16 +0100 (Fri, 17 Feb 2012) | 1 line
  
  ANC : great ledger oa_date problem (order by clause)
........
  r4774 | danydb | 2012-02-20 09:24:08 +0100 (Mon, 20 Feb 2012) | 2 lines
  
  0000525: Le contrôle des montants analytiques d'une écriture à plusieurs ligne (ex: salaires) en modification met tout en rouge
........
  r4775 | danydb | 2012-02-25 14:47:13 +0100 (Sat, 25 Feb 2012) | 1 line
  
  0000528: VEN_TVAC n'est pas correctement calculé
........
  r4776 | danydb | 2012-02-25 14:59:43 +0100 (Sat, 25 Feb 2012) | 1 line
  
  VEN_ART_PRICE = 0 alors return ""
........
  r4777 | danydb | 2012-02-25 15:14:55 +0100 (Sat, 25 Feb 2012) | 2 lines
  
  Order by document.dt_value
........
  r4778 | danydb | 2012-02-25 15:15:13 +0100 (Sat, 25 Feb 2012) | 2 lines
  
  Order by document.dt_value
........
  r4779 | danydb | 2012-02-25 15:18:12 +0100 (Sat, 25 Feb 2012) | 1 line
  
  constant.php for prod
........
  r4780 | danydb | 2012-02-25 15:42:00 +0100 (Sat, 25 Feb 2012) | 1 line
  
  Bug with calendar
........
  r4781 | danydb | 2012-02-25 15:48:43 +0100 (Sat, 25 Feb 2012) | 1 line
  
  0000531: Tableau de bord : pense-bête
........
  r4782 | danydb | 2012-03-14 17:16:38 +0100 (Wed, 14 Mar 2012) | 1 line
  
  548 banquaire -> bancaire
........
  r4783 | danydb | 2012-03-20 21:05:01 +0100 (Tue, 20 Mar 2012) | 1 line
  
  Warning if account used instead of a card in ACC_LEDGER
........
  r4784 | danydb | 2012-03-21 11:41:25 +0100 (Wed, 21 Mar 2012) | 1 line
  
  0000552: Pourcentage dans une fiche 4 décimales
........
  r4786 | danydb | 2012-03-22 20:17:37 +0100 (Thu, 22 Mar 2012) | 1 line
  
  0000557: Faire apparaître dans titre HTML le module courant
........
  r4787 | danydb | 2012-03-22 20:35:42 +0100 (Thu, 22 Mar 2012) | 1 line
  
  558 Agrandir zone document
........
  r4788 | danydb | 2012-03-22 20:40:22 +0100 (Thu, 22 Mar 2012) | 1 line
  
  558 Agrandir zone document : cosmetic background
........
  r4789 | danydb | 2012-03-22 20:51:52 +0100 (Thu, 22 Mar 2012) | 1 line
  
  558 Agrandir zone document : cosmetic background
........
  r4790 | danydb | 2012-03-22 20:54:18 +0100 (Thu, 22 Mar 2012) | 1 line
  
  Cosmetic ajout lien sous qcode client
........
  r4791 | danydb | 2012-03-22 21:12:17 +0100 (Thu, 22 Mar 2012) | 1 line
  
  Cosmetic : alignement et taille détail opérations
........
2012-03-23 20:12:57 +00:00

267 lines
No EOL
8.3 KiB
PHP

<?php
/*
* This file is part of PhpCompta.
*
* PhpCompta is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* PhpCompta is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PhpCompta; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* $Revision$ */
// Copyright Author Dany De Bontridder ddebontridder@yahoo.fr
/*!\file
* \brief show the Grand Livre for analytic
*/
require_once('class_anc_print.php');
require_once 'class_impress.php';
class Anc_GrandLivre extends Anc_Print
{
function set_sql_filter()
{
$sql="";
$and=" and ";
if ( $this->from != "" )
{
$sql.="$and oa_date >= to_date('".$this->from."','DD.MM.YYYY')";
}
if ( $this->to != "" )
{
$sql.=" $and oa_date <= to_date('".$this->to."','DD.MM.YYYY')";
}
return $sql;
}
/*!
* \brief load the data from the database
*
* \return array
*/
function load()
{
$filter_date=$this->set_sql_filter();
$cond_poste='';
if ($this->from_poste != "" )
$cond_poste=" and upper(po_name) >= upper('".$this->from_poste."')";
if ($this->to_poste != "" )
$cond_poste.=" and upper(po_name) <= upper('".$this->to_poste."')";
$pa_id_cond="";
if ( isset ( $this->pa_id) && $this->pa_id !='')
$pa_id_cond= "pa_id=".$this->pa_id." and";
$array=$this->db->get_array(" select oa_id,
po_name,
oa_description,
po_description,
oa_debit,
to_char(oa_date,'DD.MM.YYYY') as oa_date,
oa_amount,
oa_group,
j_id ,
jr_internal,
jr_id,
jr_comment,
j_poste,
jrnx.f_id,
( select ad_value from fiche_Detail where f_id=jrnx.f_id and ad_id=23) as qcode
from operation_analytique as B join poste_analytique using(po_id)
left join jrnx using (j_id)
left join jrn on (j_grpt=jr_grpt_id)
where $pa_id_cond oa_amount <> 0.0 $cond_poste $filter_date
order by po_name,oa_date::date,qcode,j_poste");
return $array;
}
function load_csv()
{
$filter_date=$this->set_sql_filter();
$cond_poste='';
if ($this->from_poste != "" )
$cond_poste=" and upper(po_name) >= upper('".$this->from_poste."')";
if ($this->to_poste != "" )
$cond_poste.=" and upper(po_name) <= upper('".$this->to_poste."')";
$pa_id_cond="";
if ( isset ( $this->pa_id) && $this->pa_id !='')
$pa_id_cond= "pa_id=".$this->pa_id." and";
$array=$this->db->get_array(" select
po_name,
to_char(oa_date,'DD.MM.YYYY') as oa_date,
j_poste,
( select ad_value from fiche_Detail where f_id=jrnx.f_id and ad_id=23) as qcode,
jr_comment,
jr_internal,
case when oa_debit='t' then 'D' else 'C' end,
oa_amount
from operation_analytique as B join poste_analytique using(po_id)
left join jrnx using (j_id)
left join jrn on (j_grpt=jr_grpt_id)
where $pa_id_cond oa_amount <> 0.0 $cond_poste $filter_date
order by po_name,oa_date::date,qcode,j_poste");
return $array;
}
/*!
* \brief compute the html display
*
*
* \return string
*/
function display_html()
{
$r="";
//---Html
$array=$this->load();
if ( is_array($array) == false )
{
return $array;
}
if ( empty($array) )
{
$r.= _("aucune donnée");
return $r;
}
$r.= '<table class="result" style="width=100%">';
$ix=0;$prev='xx';
$tot_deb=$tot_cred=0;
foreach ( $array as $row )
{
if ($prev != $row['po_name'])
{
if ( $ix>0)
{
$r.='<tr>';
$tot_solde=bcsub($tot_cred,$tot_deb);
$sign=($tot_solde>0)?'C':'D';
$r.=td('').td('').td('').td('').td('').td(nbm($tot_deb),' class="num"').td(nbm($tot_cred),' class="num"').td(nbm($tot_solde).$sign,' class="num"');
}
$r.='<tr>'.'<td colspan="7" style="width:auto">'.'<h2>'.h($row['po_name'].' '.$row['po_description']).'</td></tr>';
$r.= '<tr>'.
'<th>'._('Date').'</th>'.
'<th>'._('Poste').'</th>'.
'<th>'._('Quick_code').'</th>'.
'<th>'._('libelle').'</th>'.
'<th>'._('Num.interne').'</th>'.
'<th style="text-align:right">'._('Debit').'</th>'.
'<th style="text-align:right">'._('Credit').'</th>'.
'</tr>';
$tot_deb=$tot_cred=0;
$prev=$row['po_name'];
$ix++;
}
$r.= '<tr>';
$detail=($row['jr_id'] != null)?HtmlInput::detail_op($row['jr_id'],$row['jr_internal']):'';
$post_detail=($row['j_poste'] != null)?HtmlInput::history_account($row['j_poste'],$row['j_poste']):'';
$card_detail=($row['f_id'] != null)?HtmlInput::history_card($row['f_id'],$row['qcode']):'';
$amount_deb=($row['oa_debit']=='t')?$row['oa_amount']:0;
$amount_cred=($row['oa_debit']=='f')?$row['oa_amount']:0;
$tot_deb=bcadd($tot_deb,$amount_deb);
$tot_cred=bcadd($tot_cred,$amount_cred);
$r.=
'<td>'.$row['oa_date'].'</td>'.
td($post_detail).
td($card_detail).
// '<td>'.h($row['oa_description']).'</td>'.
td($row['jr_comment']).
'<td>'.$detail.'</td>'.
'<td class="num">'.nbm($amount_deb).'</td>'.
'<td class="num">'.nbm($amount_cred)
.'</td>';
$r.= '</tr>';
}
$r.='<tr>';
$tot_solde=bcsub($tot_cred,$tot_deb);
$sign=($tot_solde>0)?'C':'D';
$r.=td('').td('').td('').td('').td('').td(nbm($tot_deb),' class="num"').td(nbm($tot_cred),' class="num"').td(nbm($tot_solde).$sign,' class="num"');
$r.= '</table>';
return $r;
}
/*!
* \brief Show the button to export in PDF or CSV
* \param $url_csv url of the csv
* \param $url_pdf url of the pdf
* \param $p_string hidden data to include in the form
*
*
* \return string with the button
*/
function show_button($p_string="")
{
$r="";
/* $r.= '<form method="GET" action="export.php" style="display:inline">';
$r.= $p_string;
$r.= dossier::hidden();
$r.= HtmlInput::hidden("to",$this->to);
$r.= HtmlInput::hidden("act","PDF:AncGrandLivre");
$r.= HtmlInput::hidden("from",$this->from);
$r.= HtmlInput::hidden("pa_id",$this->pa_id);
$r.= HtmlInput::hidden("from_poste",$this->from_poste);
$r.= HtmlInput::hidden("to_poste",$this->to_poste);
$r.=HtmlInput::submit('bt_pdf',"Export en PDF");
$r.= '</form>';
*/
$r.= '<form method="GET" action="export.php" style="display:inline">';
$r.= HtmlInput::hidden("act","CSV:AncGrandLivre");
$r.= HtmlInput::hidden("to",$this->to);
$r.= HtmlInput::hidden("from",$this->from);
$r.= HtmlInput::hidden("pa_id",$this->pa_id);
$r.= HtmlInput::hidden("from_poste",$this->from_poste);
$r.= HtmlInput::hidden("to_poste",$this->to_poste);
$r.= $p_string;
$r.= dossier::hidden();
$r.=HtmlInput::submit('bt_csv',"Export en CSV");
$r.= '</form>';
return $r;
}
function display_csv()
{
$r="";
//---Html
$array=$this->load_csv();
if ( is_array($array) == false )
{
return $array;
}
if ( empty($array) )
{
$r.= _("aucune donnée");
return $r;
}
$ix=0;$prev='xx';
$tot_deb=$tot_cred=0;
$aheader=array();
$aheader[]=array("title"=>'Imp. Analytique','type'=>'string');
$aheader[]=array("title"=>'Date','type'=>'string');
$aheader[]=array("title"=>'Poste','type'=>'string');
$aheader[]=array("title"=>'Quick_Code','type'=>'string');
$aheader[]=array("title"=>'libelle','type'=>'string');
$aheader[]=array("title"=>'Num.interne','type'=>'string');
$aheader[]=array("title"=>'Debit','type'=>'string');
$aheader[]=array("title"=>'Credit','type'=>'num');
Impress::array_to_csv($array, $aheader);
}
}