diff --git a/include/ajax/ajax_history.php b/include/ajax/ajax_history.php
index e858501f9..1d9101e52 100644
--- a/include/ajax/ajax_history.php
+++ b/include/ajax/ajax_history.php
@@ -79,7 +79,7 @@ if ( isset($_GET['f_id']))
*/
if ($exercice->count() > 1 )
{
- $default=(isset($_GET['ex']))?$_GET['ex']:$year;
+ $default=$http->get("ex","number",$year);
$dossier=dossier::id();
if ( $div != 'popup')
{
@@ -150,8 +150,9 @@ if ( isset($_REQUEST['pcm_val']))
$array['to_periode']=$limit_periode[1]->last_day();
if (isset($_GET['ex']))
{
- $limit_periode=$per->get_limit($_GET['ex']);
- if ( $_GET['ex'] < $year)
+ $ex=$http->get("ex","number");
+ $limit_periode=$per->get_limit($ex);
+ if ( $ex < $year)
$array['from_periode']=$limit_periode[0]->first_day();
else
$array['to_periode']=$limit_periode[1]->last_day();
@@ -162,7 +163,7 @@ if ( isset($_REQUEST['pcm_val']))
*/
if ($exercice->count() > 1 )
{
- $default=(isset($_GET['ex']))?$_GET['ex']:$year;
+ $default=$http->get("ex","number",$year);
$dossier=dossier::id();
if ( $div != 'popup')
{
diff --git a/include/class/acc_account_ledger.class.php b/include/class/acc_account_ledger.class.php
index 77fb0e711..ac24d2d88 100644
--- a/include/class/acc_account_ledger.class.php
+++ b/include/class/acc_account_ledger.class.php
@@ -134,10 +134,10 @@ class Acc_Account_Ledger
case 0:
break;
case 1:
- $sql_let=' and j_id in (select j_id from letter_cred union select j_id from letter_deb)';
+ $sql_let=' and j_id in (select j_id from letter_cred union all select j_id from letter_deb)';
break;
case '2':
- $sql_let=' and j_id not in (select j_id from letter_cred union select j_id from letter_deb) ';
+ $sql_let=' and j_id not in (select j_id from letter_cred union all select j_id from letter_deb) ';
break;
}
if ( $solded == 1)
@@ -160,25 +160,33 @@ class Acc_Account_Ledger
if ( $this->db->count() == 0 ) return array();
if ($r[0]['s_deb']==$r[0]['s_cred']) return array();
}
- $this->row=$this->db->get_array("select j_id,jr_id,to_char(j_date,'DD.MM.YYYY') as j_date_fmt,j_date,
+ $this->row=$this->db->get_array("
+ with sqlletter as (select j_id,jl_id from letter_cred union all select j_id , jl_id from letter_deb )
+ select j_id,jr_id,to_char(j_date,'DD.MM.YYYY') as j_date_fmt,j_date,
j_qcode
,case when j_debit='t' then j_montant else 0 end as deb_montant,
case when j_debit='f' then j_montant else 0 end as cred_montant,
case when j_text is null or j_text = '' then jr_comment
else jr_comment||' '||j_text end
as description,jrn_def_name as jrn_name,
- j_debit, jr_internal,jr_pj_number,
- coalesce(comptaproc.get_letter_jnt(j_id),-1) as letter
+ j_debit, jr_internal,jr_pj_number
+ ,(select distinct jl_id from sqlletter where sqlletter.j_id=j1.j_id ) as letter
,pcm_lib
- ,jr_tech_per
+ ,jr_tech_per
,p_exercice
,jrn_def_name
,jrn_def_code
- from jrnx
+ ,(with cred as (select jl_id, sum(j_montant) as amount_cred from letter_cred left join jrnx using (j_id) group by jl_id ),
+ deb as (select jl_id, sum(j_montant) as amount_deb from letter_deb left join jrnx using (j_id) group by jl_id )
+ select amount_deb-amount_cred
+ from
+ cred
+ full join deb using (jl_id) where jl_id=(select distinct jl_id from sqlletter where sqlletter.j_id=j1.j_id )) as delta_letter
+ from jrnx as j1
join jrn_def on (jrn_def_id=j_jrn_def )
join jrn on (jr_grpt_id=j_grpt)
join tmp_pcmn on (j_poste=pcm_val)
- join parm_periode on (p_id=jr_tech_per)
+ join parm_periode on (p_id=jr_tech_per)
where j_poste=$1 and
( to_date($2,'DD.MM.YYYY') <= j_date and
to_date($3,'DD.MM.YYYY') >= j_date )
@@ -361,6 +369,7 @@ class Acc_Account_Ledger
*/
function HtmlTable($p_array=null,$let=0 , $from_div=0)
{
+
if ( $p_array==null)$p_array=$_REQUEST;
$this->get_name();
list($array,$tot_deb,$tot_cred)=$this->get_row_date( $p_array['from_periode'],
@@ -405,10 +414,11 @@ class Acc_Account_Ledger
$vw_operation = sprintf('%s', $op['jr_id'], dossier::id(), $op['jr_internal']);
$let = '';
$html_let = "";
- if ($op['letter'] != -1)
+ if ($op['letter'] != 0)
{
$let = strtoupper(base_convert($op['letter'], 10, 36));
$html_let = HtmlInput::show_reconcile($from_div, $let);
+ if ( $op['delta_letter'] != 0) $html_let='
'.$html_let;
}
$tmp_diff=bcsub($op['deb_montant'],$op['cred_montant']);
diff --git a/include/class/fiche.class.php b/include/class/fiche.class.php
index 23d60491e..ef1db2e97 100644
--- a/include/class/fiche.class.php
+++ b/include/class/fiche.class.php
@@ -1167,15 +1167,23 @@ class Fiche
}
$qcode=$this->strAttribut(ATTR_DEF_QUICKCODE);
- $this->row=$this->cn->get_array("select distinct substring(jr_pj_number,'[0-9]+$'),j_id,j_date,to_char(j_date,'DD.MM.YYYY') as j_date_fmt,j_qcode,".
+ $this->row=$this->cn->get_array("
+ with sqlletter as (select j_id,jl_id from letter_cred union all select j_id , jl_id from letter_deb )
+ select distinct substring(jr_pj_number,'[0-9]+$'),j_id,j_date,to_char(j_date,'DD.MM.YYYY') as j_date_fmt,j_qcode,".
"case when j_debit='t' then j_montant else 0 end as deb_montant,".
"case when j_debit='f' then j_montant else 0 end as cred_montant,".
" jr_comment as description,jrn_def_name as jrn_name,j_poste,".
" jr_pj_number,".
- "j_debit, jr_internal,jr_id,coalesce(comptaproc.get_letter_jnt(j_id),-1) as letter, ".
+ "j_debit, jr_internal,jr_id,(select distinct jl_id from sqlletter where sqlletter.j_id=j1.j_id ) as letter , ".
" jr_tech_per,p_exercice,jrn_def_name,
+ (with cred as (select jl_id, sum(j_montant) as amount_cred from letter_cred left join jrnx using (j_id) group by jl_id ),
+ deb as (select jl_id, sum(j_montant) as amount_deb from letter_deb left join jrnx using (j_id) group by jl_id )
+ select amount_deb-amount_cred
+ from
+ cred
+ full join deb using (jl_id) where jl_id=(select distinct jl_id from sqlletter where sqlletter.j_id=j1.j_id )) as delta_letter,
jrn_def_code".
- " from jrnx left join jrn_def on jrn_def_id=j_jrn_def ".
+ " from jrnx as j1 left join jrn_def on jrn_def_id=j_jrn_def ".
" left join jrn on jr_grpt_id=j_grpt".
" left join parm_periode on (p_id=jr_tech_per) ".
" where j_qcode=$1 and ".
@@ -1384,10 +1392,11 @@ class Fiche
$vw_operation = sprintf('%s', $op['jr_id'], dossier::id(), $op['jr_internal']);
$let = '';
$html_let = "";
- if ($op['letter'] != -1)
+ if ($op['letter'] != "")
{
$let = strtoupper(base_convert($op['letter'], 10, 36));
$html_let = HtmlInput::show_reconcile($from_div, $let);
+ if ( $op['delta_letter'] != 0) $html_let='
'.$html_let;
}
$tmp_diff=bcsub($op['deb_montant'],$op['cred_montant']);