From 14d5724acdbe349eb5a34a1bd6cfdc3a781fff51 Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Sat, 3 Dec 2016 21:03:49 +0100 Subject: [PATCH] Performance : improve VERIF , Affiche uniquement journaux incorrects --- include/verif_bilan.inc.php | 80 +++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 21 deletions(-) diff --git a/include/verif_bilan.inc.php b/include/verif_bilan.inc.php index ee2248760..3a1777f91 100644 --- a/include/verif_bilan.inc.php +++ b/include/verif_bilan.inc.php @@ -28,42 +28,71 @@ require_once NOALYSS_INCLUDE.'/class/class_user.php'; require_once NOALYSS_INCLUDE.'/class/class_acc_bilan.php'; global $g_captcha,$g_failed,$g_succeed; - +$t1=microtime(true); $cn=Dossier::connect(); $exercice=$g_user->get_exercice(); echo '
'; -$sql_year=" and j_tech_per in (select p_id from parm_periode where p_exercice='".$g_user->get_exercice()."')"; +$sql_year=" j_tech_per in (select p_id from parm_periode where p_exercice='".$g_user->get_exercice()."')"; echo '

'._('Vérification des journaux').'

'; -$sql="select jrn_def_id,jrn_def_name from jrn_def"; +$sql=" + with jdebit as ( + select sum (j_montant) as amount,j_debit , jr_def_id + from jrnx join jrn on (j_grpt=jr_grpt_id) + where + $sql_year + and + j_debit='t' + group by jr_def_id,j_debit + ), +jcredit as ( + select sum (j_montant) as amount,j_debit , jr_def_id + from jrnx join jrn on (j_grpt=jr_grpt_id) + where + $sql_year + and + j_debit='f' + group by jr_def_id,j_debit + ) +select jrn_def_id, + jrn_def_name, + jdebit.amount as deb, + jcredit.amount as cred + from jrn_def +join jdebit on (Jdebit.jr_def_id=jrn_def.jrn_def_id) +join jcredit on (jcredit.jr_def_id=jrn_def.jrn_def_id) +where jcredit.amount<>jdebit.amount +order by jrn_def_name + "; $res=$cn->exec_sql($sql); $jrn=Database::fetch_all($res); + +$nb_jrn= count($jrn); +if ( $jrn ===false ) { + echo $g_succeed." "._("Aucune anomalie dans les montants des journaux"); +} echo ''; echo tr(th(_('Journal')).th(_('Débit'),' style="display:right"').th(_("Crédit"),' style="display:right"').th(_("Différence"),' style="display:right"').th('')); + +$nb_jrn=count($jrn); +if ( $jrn === false) $nb_jrn=0; $ix=0; -foreach ($jrn as $l) +for ($i=0;$i<$nb_jrn;$i++) { + $l=$jrn[$i]; $id=$l['jrn_def_id']; $name=$l['jrn_def_name']; - $deb=$cn->get_value("select sum (j_montant) from jrnx where j_debit='t' and j_jrn_def=$id $sql_year "); - $cred=$cn->get_value("select sum (j_montant) from jrnx where j_debit='f' and j_jrn_def=$id $sql_year "); - - if ( $cred == $deb ) - { - $result =$g_succeed; -} -else -{ + $deb=$l['deb']; + $cred=$l['cred']; $result = $g_failed; -} $class=($ix%2==0)?'odd':"even"; print tr(td($name).td(nbm($deb),'class="num"').td(nbm($cred),'class="num"').td(nbm($result),'class="num"').td($result),"class=\"$class\""); $ix++; } -$deb=$cn->get_value("select sum (j_montant) from jrnx where j_debit='t' $sql_year "); -$cred=$cn->get_value("select sum (j_montant) from jrnx where j_debit='f' $sql_year "); +$deb=$cn->get_value("select sum (j_montant) from jrnx where j_debit='t' and $sql_year "); +$cred=$cn->get_value("select sum (j_montant) from jrnx where j_debit='f' and $sql_year "); if ( $cred == $deb ) { @@ -78,9 +107,11 @@ print tr(td(_('Grand livre')).td(nbm($deb),' class="num"').td(nbm($cred),' class .td($result),"class=\"$class\""); echo '
'; +$t1_end=microtime(true); echo '
'; echo '
'; echo '

'._('Vérification des comptes').'

'; +$t2=microtime(true); $bilan=new Acc_Bilan($cn); $periode=new Periode($cn); list ($start_periode,$end_periode)=$periode->get_limit($exercice); @@ -88,7 +119,7 @@ $bilan->from=$start_periode->p_id; $bilan->to=$end_periode->p_id; $bilan->verify(); echo '
'; - +$t2_end=microtime(true); ?>
@@ -99,6 +130,7 @@ echo '
'; get_exercice()."')"; $sql_fiche_id=" @@ -115,7 +147,7 @@ having count(*) > 1 $a_fiche_id=$cn->get_array($sql_fiche_id); - $sql_poste="select distinct j_poste,pcm_lib from jrnx join tmp_pcmn on (pcm_val=j_poste) where f_id =$1 $sql_year"; + $sql_poste="select distinct j_poste,pcm_lib from jrnx join tmp_pcmn on (pcm_val=j_poste) where f_id =$1 and $sql_year"; $sql_qcode="select ad_value as qcode from fiche_detail where f_id=$1 and ad_id=".ATTR_DEF_QUICKCODE; $res=$cn->prepare('get_poste',$sql_poste); $resQcode=$cn->prepare('get_qcode',$sql_qcode); @@ -153,6 +185,7 @@ having count(*) > 1 @@ -171,7 +204,7 @@ $sql_account_used=" join vw_fiche_attr as v_attr on (vw.f_id=v_attr.f_id) join jrn on (jrnx.j_grpt=jrn.jr_grpt_id) where - jrnx.f_id is null $sql_year order by 1 + jrnx.f_id is null and $sql_year order by 1 "; $sql_concerned_operation="select vw.f_id,jrnx.j_date,jrnx.j_id,jrn.jr_id,jrnx.j_poste,jr_internal ,jr_comment @@ -179,7 +212,7 @@ $sql_concerned_operation="select vw.f_id,jrnx.j_date,jrnx.j_id,jrn.jr_id,jrnx.j_ join jrnx using (j_poste) join jrn on (jrnx.j_grpt=jrn.jr_grpt_id) where - jrnx.f_id is null and vw.f_id= $1 $sql_year"; + jrnx.f_id is null and vw.f_id= $1 and $sql_year"; $a_account_used=$cn->get_array($sql_account_used); $nb_account_used=count ($a_account_used); if ( $nb_account_used == 0 ) @@ -220,4 +253,9 @@ $nb_account_used=count ($a_account_used); -
\ No newline at end of file + +