* Copyright (C) 2016 Alexandre Spangaro * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 this program. If not, see . */ /** * \file htdocs/accountancy/report/result.php * \ingroup Advanced accountancy * \brief Page for accounting result */ require '../../main.inc.php'; // Class require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/core/lib/report.lib.php'; require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountancycategory.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php'; $error = 0; // Langs $langs->load("accountancy"); $langs->load("compta"); $mesg = ''; $action = GETPOST('action','aZ09'); $cat_id = GETPOST('account_category'); $selectcpt = GETPOST('cpt_bk'); $id = GETPOST('id', 'int'); $rowid = GETPOST('rowid', 'int'); $cancel = GETPOST('cancel'); $simple_report = GETPOST('simple_report'); // Filter $year = GETPOST('year','int'); if ($year == 0) { $year_current = strftime("%Y", time()); $year_start = $year_current; } else { $year_current = $year; $year_start = $year; } if($cat_id == 0){ $cat_id = null; } // Security check if ($user->societe_id > 0) accessforbidden(); if (! $user->rights->accounting->comptarapport->lire) accessforbidden(); $AccCat = new AccountancyCategory($db); /* * View */ llxheader('', $langs->trans('ReportInOut')); $formaccounting = new FormAccounting($db); $form = new Form($db); $textprevyear = '' . img_previous() . ''; $textnextyear = ' ' . img_next() . ''; $nom = $langs->trans("ReportInOut").', '.$langs->trans("ByAccounts"); $nomlink = ''; $periodlink = ''; $exportlink = ''; $builddate = time(); $description = ''; $period = $langs->trans("Detail").' '. $form->selectyesno('simple_report',$simple_report,0) . " " .$textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear ; report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => '')); $moreforfilter=''; print '
'; print ''."\n"; $months = array( $langs->trans("JanuaryMin"), $langs->trans("FebruaryMin"), $langs->trans("MarchMin"), $langs->trans("AprilMin"), $langs->trans("MayMin"), $langs->trans("JuneMin"), $langs->trans("JulyMin"), $langs->trans("AugustMin"), $langs->trans("SeptemberMin"), $langs->trans("OctoberMin"), $langs->trans("NovemberMin"), $langs->trans("DecemberMin"), ); print ''; print ''; print ''; print ''; print ''; foreach($months as $k => $v){ print ''; } print ''; //All categories $cats = $AccCat->getCats(); if ($catsCalcule < 0) dol_print_error($db, $AccCat->error, $AccCat->errors); $j=1; $sommes = array(); foreach($cats as $cat ){ if(!empty($cat['category_type'])){ // category calculed $formula = $cat['formula']; print ""; print ''; $vars = array(); // Previous Fiscal year (N-1) foreach($sommes as $code => $det){ $vars[$code] = $det['NP']; } $result = strtr($formula, $vars); $r = $AccCat->calculate($result); print ''; $code = $cat['code']; // code categorie de calcule $sommes[$code]['NP'] += $r; // Current fiscal year (N) if (is_array($sommes) && ! empty($sommes)){ foreach($sommes as $code => $det){ $vars[$code] = $det['N']; } } $result = strtr($formula, $vars); $r = $AccCat->calculate($result); print ''; $sommes[$code]['N'] += $r; // Detail by month foreach($months as $k => $v){ foreach($sommes as $code => $det){ $vars[$code] = $det['M'][$k]; } $result = strtr($formula, $vars); $r = $AccCat->calculate($result); print ''; $sommes[$code]['M'][$k] += $r; } print "\n"; }else{ // normal category $totCat = array(); $totCat['M'] = array(); // get cpts of category $cpts = $AccCat->getCptsCat($cat['rowid']); print ""; print ''; foreach($cpts as $i => $cpt){ $var = ! $var; $code = $cat['code']; // N-1 $return = $AccCat->getResult($cpt['account_number'], 0, $year_current -1, $cpt['dc']); if ($return < 0) { setEventMessages(null, $AccCat->errors, 'errors'); $resultNP=0; } else { $resultNP=$AccCat->sdc; } //N $return = $AccCat->getResult($cpt['account_number'], 0, $year_current, $cpt['dc']); if ($return < 0) { setEventMessages(null, $AccCat->errors, 'errors'); $resultN=0; } else { $resultN=$AccCat->sdc; } $totCat['NP'] += $resultNP; $totCat['N'] += $resultN; foreach($months as $k => $v){ $return = $AccCat->getResult($cpt['account_number'], $k+1, $year_current, $cpt['dc']); if ($return < 0) { setEventMessages(null, $AccCat->errors, 'errors'); $resultM=0; } else { $resultM=$AccCat->sdc; } $totCat['M'][$k] += $resultM; } } print ''; print ''; foreach($totCat['M'] as $k => $v){ print ''; } print "\n"; foreach($cpts as $i => $cpt){ $var = ! $var; $code = $cat['code']; // N-1 $return = $AccCat->getResult($cpt['account_number'], 0, $year_current -1, $cpt['dc']); if ($return < 0) { setEventMessages(null, $AccCat->errors, 'errors'); $resultNP=0; } else { $resultNP=$AccCat->sdc; } //N $return = $AccCat->getResult($cpt['account_number'], 0, $year_current, $cpt['dc']); if ($return < 0) { setEventMessages(null, $AccCat->errors, 'errors'); $resultN=0; } else { $resultN=$AccCat->sdc; } $sommes[$code]['NP'] += $resultNP; $sommes[$code]['N'] += $resultN; print ''; if ($simple_report == 'yes') { print ''; print ''; print ''; print ''; } foreach($months as $k => $v){ $return = $AccCat->getResult($cpt['account_number'], $k+1, $year_current, $cpt['dc']); if ($return < 0) { setEventMessages(null, $AccCat->errors, 'errors'); $resultM=0; } else { $resultM=$AccCat->sdc; } $sommes[$code]['M'][$k] += $resultM; if ($simple_report == 'yes') { print ''; } } print "\n"; } } } print "
'.$langs->trans("Account").''.$langs->trans("Description").'N-1'.$langs->trans("NReal").''.$langs->trans($v).'
' . $cat['label'] . '' . price($r) . '' . price($r) . '' . price($r) . '
' . $cat['label'] . '' . price($totCat['NP']) . '' . price($totCat['N']) . '' . price($v) . '
' . length_accountg($cpt['account_number']) . '' . $cpt['name_cpt'] . '' . price($resultNP) . '' . price($resultN) . '' . price($resultM) . '
"; print '
'; llxFooter(); $db->close();