diff --git a/htdocs/compta/resultat/result.php b/htdocs/compta/resultat/result.php
index bd9f25bb0b8..59984ee444c 100644
--- a/htdocs/compta/resultat/result.php
+++ b/htdocs/compta/resultat/result.php
@@ -288,262 +288,251 @@ elseif ($modecompta=="BOOKKEEPING")
$j=1;
$sommes = array();
$totPerAccount = array();
-
- foreach ($cats as $cat) // Loop on each group
- {
- if (!empty($cat['category_type'])) // category calculed
+ if (!is_array($cats) && $cats<0) {
+ setEventMessages(null,$AccCat->errors,'errors');
+ } elseif (is_array($cats) && count($cats)>0) {
+ foreach ($cats as $cat) // Loop on each group
{
- // When we enter here, $sommes was filled by group of accounts
+ if (!empty($cat['category_type'])) // category calculed
+ {
+ // When we enter here, $sommes was filled by group of accounts
- $formula = $cat['formula'];
+ $formula = $cat['formula'];
- print '
';
+ print '
';
- // Year NP
- print '| ';
- print $cat['code'];
- print ' | ';
- print $cat['label'];
- print ' | ';
+ // Year NP
+ print '';
+ print $cat['code'];
+ print ' | ';
+ print $cat['label'];
+ print ' | ';
- $vars = array();
+ $vars = array();
- // Previous Fiscal year (N-1)
- foreach($sommes as $code => $det){
- $vars[$code] = $det['NP'];
- }
-
-
- $result = strtr($formula, $vars);
-
- //var_dump($result);
- //$r = $AccCat->calculate($result);
- $r = dol_eval($result, 1);
- //var_dump($r);
-
- print '' . price($r) . ' | ';
-
- // Year N
- $code = $cat['code']; // code of categorie ('VTE', 'MAR', ...)
- $sommes[$code]['NP'] += $r;
-
- // Current fiscal year (N)
- if (is_array($sommes) && ! empty($sommes)){
- foreach($sommes as $code => $det){
- $vars[$code] = $det['N'];
+ // Previous Fiscal year (N-1)
+ foreach ($sommes as $code => $det) {
+ $vars[$code] = $det['NP'];
}
- }
- $result = strtr($formula, $vars);
- //$r = $AccCat->calculate($result);
- $r = dol_eval($result, 1);
+ $result = strtr($formula, $vars);
- print '' . price($r) . ' | ';
- $sommes[$code]['N'] += $r;
+ //var_dump($result);
+ //$r = $AccCat->calculate($result);
+ $r = dol_eval($result, 1);
+ //var_dump($r);
- // Detail by month
- foreach($months as $k => $v)
- {
- if (($k+1) >= $date_startmonth)
- {
- foreach($sommes as $code => $det){
- $vars[$code] = $det['M'][$k];
- }
- $result = strtr($formula, $vars);
+ print '' . price($r) . ' | ';
- //$r = $AccCat->calculate($result);
- $r = dol_eval($result, 1);
+ // Year N
+ $code = $cat['code']; // code of categorie ('VTE', 'MAR', ...)
+ $sommes[$code]['NP'] += $r;
- print '' . price($r) . ' | ';
- $sommes[$code]['M'][$k] += $r;
- }
- }
- foreach($months as $k => $v)
- {
- if (($k+1) < $date_startmonth)
- {
- foreach($sommes as $code => $det){
- $vars[$code] = $det['M'][$k];
- }
- $result = strtr($formula, $vars);
-
- //$r = $AccCat->calculate($result);
- $r = dol_eval($result, 1);
-
- print '' . price($r) . ' | ';
- $sommes[$code]['M'][$k] += $r;
- }
- }
-
- print "
\n";
-
- //var_dump($sommes);
- }
- else // normal category
- {
- $code = $cat['code']; // Category code we process
-
- $totCat = array();
- $totCat['NP'] = 0;
- $totCat['N'] = 0;
- $totCat['M'] = array();
- foreach($months as $k => $v)
- {
- $totCat['M'][$k] = 0;
- }
-
- // Set $cpts with array of accounts in the category/group
- $cpts = $AccCat->getCptsCat($cat['rowid']);
-
- $arrayofaccountforfilter=array();
- foreach($cpts as $i => $cpt) // Loop on each account.
- {
- $arrayofaccountforfilter[]=$cpt['account_number'];
- }
-
- // N-1
- if (! empty($arrayofaccountforfilter))
- {
- $return = $AccCat->getSumDebitCredit($arrayofaccountforfilter, $date_start_previous, $date_end_previous, $cat['dc']?$cat['dc']:0);
-
- if ($return < 0) {
- setEventMessages(null, $AccCat->errors, 'errors');
- $resultNP=0;
- } else {
- foreach($cpts as $i => $cpt) // Loop on each account.
- {
- $resultNP = empty($AccCat->sdcperaccount[$cpt['account_number']])?0:$AccCat->sdcperaccount[$cpt['account_number']];
-
- $totCat['NP'] += $resultNP;
- $sommes[$code]['NP'] += $resultNP;
- $totPerAccount[$cpt['account_number']]['NP'] = $resultNP;
+ // Current fiscal year (N)
+ if (is_array($sommes) && !empty($sommes)) {
+ foreach ($sommes as $code => $det) {
+ $vars[$code] = $det['N'];
}
}
- }
- // Set value into column N and month M ($totCat)
- // This make 12 calls for each accountancy account (12 monthes M)
- foreach($cpts as $i => $cpt) // Loop on each account.
+ $result = strtr($formula, $vars);
+
+ //$r = $AccCat->calculate($result);
+ $r = dol_eval($result, 1);
+
+ print '' . price($r) . ' | ';
+ $sommes[$code]['N'] += $r;
+
+ // Detail by month
+ foreach ($months as $k => $v) {
+ if (($k + 1) >= $date_startmonth) {
+ foreach ($sommes as $code => $det) {
+ $vars[$code] = $det['M'][$k];
+ }
+ $result = strtr($formula, $vars);
+
+ //$r = $AccCat->calculate($result);
+ $r = dol_eval($result, 1);
+
+ print '' . price($r) . ' | ';
+ $sommes[$code]['M'][$k] += $r;
+ }
+ }
+ foreach ($months as $k => $v) {
+ if (($k + 1) < $date_startmonth) {
+ foreach ($sommes as $code => $det) {
+ $vars[$code] = $det['M'][$k];
+ }
+ $result = strtr($formula, $vars);
+
+ //$r = $AccCat->calculate($result);
+ $r = dol_eval($result, 1);
+
+ print '' . price($r) . ' | ';
+ $sommes[$code]['M'][$k] += $r;
+ }
+ }
+
+ print "\n";
+
+ //var_dump($sommes);
+ } else // normal category
{
- // We make 1 loop for each account because we may want detail per account.
- // @TODO Optimize to ask a 'group by' account and a filter with account in (..., ...) in request
+ $code = $cat['code']; // Category code we process
- // Each month
- $resultN = 0;
- foreach($months as $k => $v)
+ $totCat = array();
+ $totCat['NP'] = 0;
+ $totCat['N'] = 0;
+ $totCat['M'] = array();
+ foreach ($months as $k => $v) {
+ $totCat['M'][$k] = 0;
+ }
+
+ // Set $cpts with array of accounts in the category/group
+ $cpts = $AccCat->getCptsCat($cat['rowid']);
+
+ $arrayofaccountforfilter = array();
+ foreach ($cpts as $i => $cpt) // Loop on each account.
{
- $monthtoprocess = $k+1; // ($k+1) is month 1, 2, ..., 12
- $yeartoprocess = $start_year;
- if (($k+1) < $start_month) $yeartoprocess++;
+ $arrayofaccountforfilter[] = $cpt['account_number'];
+ }
+
+ // N-1
+ if (!empty($arrayofaccountforfilter)) {
+ $return = $AccCat->getSumDebitCredit($arrayofaccountforfilter, $date_start_previous, $date_end_previous, $cat['dc'] ? $cat['dc'] : 0);
- //var_dump($monthtoprocess.'_'.$yeartoprocess);
- $return = $AccCat->getSumDebitCredit($cpt['account_number'], $date_start, $date_end, $cat['dc']?$cat['dc']:0, 'nofilter', $monthtoprocess, $yeartoprocess);
if ($return < 0) {
setEventMessages(null, $AccCat->errors, 'errors');
- $resultM=0;
+ $resultNP = 0;
} else {
- $resultM=$AccCat->sdc;
- }
- $totCat['M'][$k] += $resultM;
- $sommes[$code]['M'][$k] += $resultM;
- $totPerAccount[$cpt['account_number']]['M'][$k] = $resultM;
+ foreach ($cpts as $i => $cpt) // Loop on each account.
+ {
+ $resultNP = empty($AccCat->sdcperaccount[$cpt['account_number']]) ? 0 : $AccCat->sdcperaccount[$cpt['account_number']];
- $resultN += $resultM;
+ $totCat['NP'] += $resultNP;
+ $sommes[$code]['NP'] += $resultNP;
+ $totPerAccount[$cpt['account_number']]['NP'] = $resultNP;
+ }
+ }
}
- $totCat['N'] += $resultN;
- $sommes[$code]['N'] += $resultN;
- $totPerAccount[$cpt['account_number']]['N'] = $resultN;
- }
-
-
- // Now output columns for row $code ('VTE', 'MAR', ...)
-
- print "";
-
- // Column group
- print '| ';
- print $cat['code'];
- print ' | ';
-
- // Label of group
- print '';
- print $cat['label'];
- if (count($cpts) > 0) // Show example of 5 first accounting accounts
- {
- $i=0;
- foreach($cpts as $cpt)
+ // Set value into column N and month M ($totCat)
+ // This make 12 calls for each accountancy account (12 monthes M)
+ foreach ($cpts as $i => $cpt) // Loop on each account.
{
- if ($i > 5)
- {
- print '...)';
- break;
+ // We make 1 loop for each account because we may want detail per account.
+ // @TODO Optimize to ask a 'group by' account and a filter with account in (..., ...) in request
+
+ // Each month
+ $resultN = 0;
+ foreach ($months as $k => $v) {
+ $monthtoprocess = $k + 1; // ($k+1) is month 1, 2, ..., 12
+ $yeartoprocess = $start_year;
+ if (($k + 1) < $start_month)
+ $yeartoprocess++;
+
+ //var_dump($monthtoprocess.'_'.$yeartoprocess);
+ $return = $AccCat->getSumDebitCredit($cpt['account_number'], $date_start, $date_end, $cat['dc'] ? $cat['dc'] : 0, 'nofilter', $monthtoprocess, $yeartoprocess);
+ if ($return < 0) {
+ setEventMessages(null, $AccCat->errors, 'errors');
+ $resultM = 0;
+ } else {
+ $resultM = $AccCat->sdc;
+ }
+ $totCat['M'][$k] += $resultM;
+ $sommes[$code]['M'][$k] += $resultM;
+ $totPerAccount[$cpt['account_number']]['M'][$k] = $resultM;
+
+ $resultN += $resultM;
}
- if ($i > 0) print ', ';
- else print ' (';
- print $cpt['account_number'];
- $i++;
+
+ $totCat['N'] += $resultN;
+ $sommes[$code]['N'] += $resultN;
+ $totPerAccount[$cpt['account_number']]['N'] = $resultN;
}
- if ($i <= 5) print ')';
- }
- else
- {
- print ' - '.$langs->trans("GroupIsEmptyCheckSetup").'';
- }
- print ' | ';
- print '' . price($totCat['NP']) . ' | ';
- print '' . price($totCat['N']) . ' | ';
- // Each month
- foreach($totCat['M'] as $k => $v){
- if (($k+1) >= $date_startmonth) print '' . price($v) . ' | ';
- }
- foreach($totCat['M'] as $k => $v){
- if (($k+1) < $date_startmonth) print '' . price($v) . ' | ';
- }
+ // Now output columns for row $code ('VTE', 'MAR', ...)
- print "
\n";
+ print "";
- // Loop on detail of all accounts to output the detail
- if ($showaccountdetail != 'no')
- {
- foreach($cpts as $i => $cpt)
+ // Column group
+ print '| ';
+ print $cat['code'];
+ print ' | ';
+
+ // Label of group
+ print '';
+ print $cat['label'];
+ if (count($cpts) > 0) // Show example of 5 first accounting accounts
{
- $resultNP=$totPerAccount[$cpt['account_number']]['NP'];
- $resultN=$totPerAccount[$cpt['account_number']]['N'];
-
- if ($showaccountdetail == 'all' || $resultN > 0)
- {
- print ' |
';
- print ' | ';
- print '';
- print ' ' . length_accountg($cpt['account_number']);
- print ' - ';
- print $cpt['account_label'];
- print ' | ';
- print '' . price($resultNP) . ' | ';
- print '' . price($resultN) . ' | ';
-
- // Make one call for each month
- foreach($months as $k => $v)
- {
- if (($k+1) >= $date_startmonth)
- {
- $resultM=$totPerAccount[$cpt['account_number']]['M'][$k];
- print '' . price($resultM) . ' | ';
- }
+ $i = 0;
+ foreach ($cpts as $cpt) {
+ if ($i > 5) {
+ print '...)';
+ break;
}
- foreach($months as $k => $v)
- {
- if (($k+1) < $date_startmonth)
- {
- $resultM=$totPerAccount[$cpt['account_number']]['M'][$k];
- print '' . price($resultM) . ' | ';
+ if ($i > 0)
+ print ', ';
+ else print ' (';
+ print $cpt['account_number'];
+ $i++;
+ }
+ if ($i <= 5)
+ print ')';
+ } else {
+ print ' - ' . $langs->trans("GroupIsEmptyCheckSetup") . '';
+ }
+ print '';
+
+ print '' . price($totCat['NP']) . ' | ';
+ print '' . price($totCat['N']) . ' | ';
+
+ // Each month
+ foreach ($totCat['M'] as $k => $v) {
+ if (($k + 1) >= $date_startmonth)
+ print '' . price($v) . ' | ';
+ }
+ foreach ($totCat['M'] as $k => $v) {
+ if (($k + 1) < $date_startmonth)
+ print '' . price($v) . ' | ';
+ }
+
+ print "
\n";
+
+ // Loop on detail of all accounts to output the detail
+ if ($showaccountdetail != 'no') {
+ foreach ($cpts as $i => $cpt) {
+ $resultNP = $totPerAccount[$cpt['account_number']]['NP'];
+ $resultN = $totPerAccount[$cpt['account_number']]['N'];
+
+ if ($showaccountdetail == 'all' || $resultN > 0) {
+ print '';
+ print ' | ';
+ print '';
+ print ' ' . length_accountg($cpt['account_number']);
+ print ' - ';
+ print $cpt['account_label'];
+ print ' | ';
+ print '' . price($resultNP) . ' | ';
+ print '' . price($resultN) . ' | ';
+
+ // Make one call for each month
+ foreach ($months as $k => $v) {
+ if (($k + 1) >= $date_startmonth) {
+ $resultM = $totPerAccount[$cpt['account_number']]['M'][$k];
+ print '' . price($resultM) . ' | ';
+ }
}
+ foreach ($months as $k => $v) {
+ if (($k + 1) < $date_startmonth) {
+ $resultM = $totPerAccount[$cpt['account_number']]['M'][$k];
+ print '' . price($resultM) . ' | ';
+ }
+ }
+ print "
\n";
}
- print "\n";
}
}
}