* 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 . '/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'); $cat_id = GETPOST('account_category'); $selectcpt = GETPOST('cpt_bk'); $id = GETPOST('id', 'int'); $rowid = GETPOST('rowid', 'int'); $cancel = GETPOST('cancel'); // 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() . ''; print load_fiche_titre($langs->trans('ReportInOut'), $textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear, 'title_accountancy'); $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 ''; $cats = $AccCat->getCatsCpts(); if ($cats < 0) dol_print_error($db, $AccCat->error, $AccCat->errors); $catsCalcule = $AccCat->getCatsCal(); if ($catsCalcule < 0) dol_print_error($db, $AccCat->error, $AccCat->errors); $j=1; $sommes = array(); if (!empty($cats)) { foreach ($cats as $name_cat => $cpts) { print ""; print ''; print "\n"; $position = -1; $code = -1; foreach($cpts as $i => $cpt){ $var = ! $var; $position = $cpt['position']; $code = $cpt['code']; $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; } $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 ''; 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; print ''; } print "\n"; } // If it's a calculated catgory $p = $position + 1; if(array_key_exists($p, $catsCalcule)){ $formula = $catsCalcule[$p]['formula']; print ""; print ''; $vars = array(); // Previous Fiscal year (N-1) foreach($sommes as $code => $det){ $vars[$code] = $det['NP']; } $result = strtr($formula, $vars); eval( '$result = (' . $result . ');' ); print ''; $code = $catsCalcule[$p]['code']; // code categorie de calcule $sommes[$code]['NP'] += $result; // Current fiscal year (N) foreach($sommes as $code => $det){ $vars[$code] = $det['N']; } $result = strtr($formula, $vars); eval( '$result = (' . $result . ');' ); print ''; $sommes[$code]['N'] += $result; // Detail by month foreach($months as $k => $v){ foreach($sommes as $code => $det){ $vars[$code] = $det['M'][$k]; } $result = strtr($formula, $vars); eval( '$result = (' . $result . ');' ); print ''; $sommes[$code]['M'][$k] += $result; } //print ''; print "\n"; unset($catsCalcule[$p]); // j'élimine la catégorie calculée après affichage } $j++; } // Others calculed category foreach($catsCalcule as $p => $catc) { $formula = $catsCalcule[$p]['formula']; print ""; print ''; $vars = array(); // Previous Fiscal year (N-1) foreach($sommes as $code => $det){ $vars[$code] = $det['NP']; } $result = strtr($formula, $vars); eval( '$result = (' . $result . ');' ); print ''; $code = $catsCalcule[$p]['code']; // code categorie de calcule $sommes[$code]['NP'] += $result; // Current fiscal year (N) foreach($sommes as $code => $det){ $vars[$code] = $det['N']; } $result = strtr($formula, $vars); eval( '$result = (' . $result . ');' ); print ''; $sommes[$code]['N'] += $result; // Detail by month foreach($months as $k => $v){ foreach($sommes as $code => $det){ $vars[$code] = $det['M'][$k]; } $result = strtr($formula, $vars); eval( '$result = (' . $result . ');' ); print ''; $sommes[$code]['M'][$k] += $result; } //print ''; print "\n"; } } print "
'.$langs->trans("Account").''.$langs->trans("Description").'N-1'.$langs->trans("NReal").''.$langs->trans($v).'
' . $name_cat . '
' . $cpt['account_number'] . '' . $cpt['name_cpt'] . '' . price($resultNP) . '' . price($resultN) . '' . price($resultM) . '
' . $catsCalcule[$p]['label'] . '' . price($result) . '' . price($result) . '' . price($result) . '' . $catsCalcule[$p]['formula'] . '
' . $catsCalcule[$p]['label'] . '' . price($result) . '' . price($result) . '' . price($result) . '' . $catsCalcule[$p]['formula'] . '
"; print '
'; llxFooter(); $db->close();