'."\n";
+
+print '| | ';
+
+for ($annee = $year_start; $annee <= $year_end; $annee++)
+{
+ if ($modecompta == 'CREANCES-DETTES') print '';
+ else print ' | ';
+ if ($modecompta != 'BOOKKEEPING') print '';
+ print $annee;
+ if ($conf->global->SOCIETE_FISCAL_MONTH_START > 1) print '-'.($annee + 1);
+ if ($modecompta != 'BOOKKEEPING') print '';
+ print ' | ';
+ if ($annee != $year_end) print ' | ';
+}
+print '
';
+
+print '| '.$langs->trans("Month").' | ';
+for ($annee = $year_start; $annee <= $year_end; $annee++)
+{
+ if ($modecompta == 'CREANCES-DETTES') print ''.$langs->trans("AmountHT").' | ';
+ print ''.$langs->trans("AmountTTC").' | ';
+ print ''.$langs->trans("Delta").' | ';
+ if ($annee != $year_end) print ' | ';
+}
+print '
';
+
+$now_show_delta = 0;
+$minyear = substr($minyearmonth, 0, 4);
+$maxyear = substr($maxyearmonth, 0, 4);
+$nowyear = strftime("%Y", dol_now());
+$nowyearmonth = strftime("%Y-%m", dol_now());
+$maxyearmonth = max($maxyearmonth, $nowyearmonth);
+$now = dol_now();
+$casenow = dol_print_date($now, "%Y-%m");
+
+// Loop on each month
+$nb_mois_decalage = $conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START - 1) : 0;
+for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++)
+{
+ $mois_modulo = $mois; // ajout
+ if ($mois > 12) {$mois_modulo = $mois - 12; } // ajout
+
+ if ($year_start == $year_end) {
+ if ($mois > $date_endmonth && $year_end >= $date_endyear) {
+ break;
+ }
+ }
+
+ print '';
+
+ // Month
+ print "| ".dol_print_date(dol_mktime(12, 0, 0, $mois_modulo, 1, 2000), "%B")." | ";
+
+ for ($annee = $year_start - 1; $annee <= $year_end; $annee++) // We start one year before to have data to be able to make delta
+ {
+ $annee_decalage = $annee;
+ if ($mois > 12) {$annee_decalage = $annee + 1; }
+ $case = dol_print_date(dol_mktime(1, 1, 1, $mois_modulo, 1, $annee_decalage), "%Y-%m");
+ $caseprev = dol_print_date(dol_mktime(1, 1, 1, $mois_modulo, 1, $annee_decalage - 1), "%Y-%m");
+
+ if ($annee >= $year_start) // We ignore $annee < $year_start, we loop on it to be able to make delta, nothing is output.
+ {
+ if ($modecompta == 'CREANCES-DETTES') {
+ // Valeur CA du mois w/o VAT
+ print '';
+ if ($cum_ht[$case])
+ {
+ $now_show_delta = 1; // On a trouve le premier mois de la premiere annee generant du chiffre.
+ print ''.price($cum_ht[$case], 1).'';
+ }
+ else
+ {
+ if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; }
+ else { print ' '; }
+ }
+ print " | ";
+ }
+
+ // Valeur CA du mois
+ print '';
+ if ($cum[$case])
+ {
+ $now_show_delta = 1; // On a trouve le premier mois de la premiere annee generant du chiffre.
+ if ($modecompta != 'BOOKKEEPING') print '';
+ print price($cum[$case], 1);
+ if ($modecompta != 'BOOKKEEPING') print '';
+ }
+ else
+ {
+ if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; }
+ else { print ' '; }
+ }
+ print " | ";
+
+ // Pourcentage du mois
+ if ($annee_decalage > $minyear && $case <= $casenow)
+ {
+ if ($cum[$caseprev] && $cum[$case])
+ {
+ $percent = (round(($cum[$case] - $cum[$caseprev]) / $cum[$caseprev], 4) * 100);
+ //print "X $cum[$case] - $cum[$caseprev] - $cum[$caseprev] - $percent X";
+ print ''.($percent >= 0 ? "+$percent" : "$percent").'% | ';
+ }
+ if ($cum[$caseprev] && !$cum[$case])
+ {
+ print '-100% | ';
+ }
+ if (!$cum[$caseprev] && $cum[$case])
+ {
+ //print '+Inf% | ';
+ print '- | ';
+ }
+ if (isset($cum[$caseprev]) && !$cum[$caseprev] && !$cum[$case])
+ {
+ print '+0% | ';
+ }
+ if (!isset($cum[$caseprev]) && !$cum[$case])
+ {
+ print '- | ';
+ }
+ }
+ else
+ {
+ print '';
+ if ($minyearmonth <= $case && $case <= $maxyearmonth) { print '-'; }
+ else { print ' '; }
+ print ' | ';
+ }
+
+ if ($annee_decalage < $year_end || ($annee_decalage == $year_end && $mois > 12 && $annee < $year_end)) print ' | ';
+ }
+
+ $total_ht[$annee] += ((!empty($cum_ht[$case])) ? $cum_ht[$case] : 0);
+ $total[$annee] += $cum[$case];
+ }
+
+ print '
';
+}
+
+// Affiche total
+print '| '.$langs->trans("Total").' | ';
+for ($annee = $year_start; $annee <= $year_end; $annee++)
+{
+ if ($modecompta == 'CREANCES-DETTES') {
+ // Montant total HT
+ if ($total_ht[$annee] || ($annee >= $minyear && $annee <= max($nowyear, $maxyear)))
+ {
+ print ''.($total_ht[$annee] ?price($total_ht[$annee]) : "0")." | ";
+ }
+ else
+ {
+ print ' | ';
+ }
+ }
+
+ // Montant total
+ if ($total[$annee] || ($annee >= $minyear && $annee <= max($nowyear, $maxyear)))
+ {
+ print ''.($total[$annee] ?price($total[$annee]) : "0")." | ";
+ }
+ else
+ {
+ print ' | ';
+ }
+
+ // Pourcentage total
+ if ($annee > $minyear && $annee <= max($nowyear, $maxyear))
+ {
+ if ($total[$annee - 1] && $total[$annee]) {
+ $percent = (round(($total[$annee] - $total[$annee - 1]) / $total[$annee - 1], 4) * 100);
+ print ''.($percent >= 0 ? "+$percent" : "$percent").'% | ';
+ }
+ if ($total[$annee - 1] && !$total[$annee])
+ {
+ print '-100% | ';
+ }
+ if (!$total[$annee - 1] && $total[$annee])
+ {
+ print '+'.$langs->trans('Inf').'% | ';
+ }
+ if (!$total[$annee - 1] && !$total[$annee])
+ {
+ print '+0% | ';
+ }
+ }
+ else
+ {
+ print '';
+ if ($total[$annee] || ($minyear <= $annee && $annee <= max($nowyear, $maxyear))) { print '-'; }
+ else { print ' '; }
+ print ' | ';
+ }
+
+ if ($annee != $year_end) print ' | ';
+}
+print "
\n";
+print "