X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=reporting%2Frep707.php;h=e19c29fee14db86c90259da0cd401424eea9bb68;hb=e29ab37ef51f39c200c3772e07eeceef0ce39214;hp=9d2f0d2c9f2e44c8090dcd4430b657abdc5c61e9;hpb=c09be0dad6b05131e240349a375af7a4b7bf3444;p=fa-stable.git diff --git a/reporting/rep707.php b/reporting/rep707.php index 9d2f0d2c..e19c29fe 100644 --- a/reporting/rep707.php +++ b/reporting/rep707.php @@ -1,5 +1,14 @@ . +***********************************************************************/ $page_security = 2; // ---------------------------------------------------------------- // $ Revision: 2.0 $ @@ -7,16 +16,15 @@ $page_security = 2; // date_: 2005-05-19 // Title: Profit and Loss Statement // ---------------------------------------------------------------- -$path_to_root="../"; +$path_to_root=".."; -include_once($path_to_root . "includes/session.inc"); -include_once($path_to_root . "includes/date_functions.inc"); -include_once($path_to_root . "includes/data_checks.inc"); -include_once($path_to_root . "gl/includes/gl_db.inc"); +include_once($path_to_root . "/includes/session.inc"); +include_once($path_to_root . "/includes/date_functions.inc"); +include_once($path_to_root . "/includes/data_checks.inc"); +include_once($path_to_root . "/gl/includes/gl_db.inc"); //---------------------------------------------------------------------------------------------------- -// trial_inquiry_controls(); print_profit_and_loss_statement(); //---------------------------------------------------------------------------------------------------- @@ -39,7 +47,6 @@ function print_profit_and_loss_statement() { global $comp_path, $path_to_root; - include_once($path_to_root . "reporting/includes/pdf_report.inc"); $dim = get_company_pref('use_dimension'); $dimension = $dimension2 = 0; @@ -52,21 +59,28 @@ function print_profit_and_loss_statement() $dimension2 = $_POST['PARAM_4']; $graphics = $_POST['PARAM_5']; $comments = $_POST['PARAM_6']; + $destination = $_POST['PARAM_7']; } else if ($dim == 1) { $dimension = $_POST['PARAM_3']; $graphics = $_POST['PARAM_4']; $comments = $_POST['PARAM_5']; + $destination = $_POST['PARAM_6']; } else { $graphics = $_POST['PARAM_3']; $comments = $_POST['PARAM_4']; + $destination = $_POST['PARAM_5']; } + if ($destination) + include_once($path_to_root . "/reporting/includes/excel_report.inc"); + else + include_once($path_to_root . "/reporting/includes/pdf_report.inc"); if ($graphics) { - include_once($path_to_root . "reporting/includes/class.graphic.inc"); + include_once($path_to_root . "/reporting/includes/class.graphic.inc"); $pg = new graph(); } $dec = 0; @@ -120,34 +134,49 @@ function print_profit_and_loss_statement() $headers[3] = _('Period Y-1'); } - $rep = new FrontReport(_('Profit and Loss Statement'), "ProfitAndLoss.pdf", user_pagesize()); + $rep = new FrontReport(_('Profit and Loss Statement'), "ProfitAndLoss", user_pagesize()); $rep->Font(); $rep->Info($params, $cols, $headers, $aligns); $rep->Header(); $classname = ''; - $group = ''; - $totalper = 0.0; - $totalacc = 0.0; + + $typeper = array(0,0,0,0,0,0,0,0,0,0); + $typeacc = array(0,0,0,0,0,0,0,0,0,0); + $typename = array('','','','','','','','','',''); + $closing = array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1); + $level = 0; + $classper = 0.0; $classacc = 0.0; $salesper = 0.0; $salesacc = 0.0; + $last = -1; + + $closeclass = false; + $convert = 1; + $ctype = 0; $accounts = get_gl_accounts_all(0); while ($account=db_fetch($accounts)) { - $per_balance = get_gl_trans_from_to($from, $to, $account["account_code"], $dimension, $dimension2); - - if ($compare == 2) - $acc_balance = get_budget_trans_from_to($begin, $end, $account["account_code"], $dimension, $dimension2); - else - $acc_balance = get_gl_trans_from_to($begin, $end, $account["account_code"], $dimension, $dimension2); - if (!$per_balance && !$acc_balance) + if ($account['account_code'] == null && $account['parent'] > 0) continue; + if ($account['account_code'] != null) + { + $per_balance = get_gl_trans_from_to($from, $to, $account["account_code"], $dimension, $dimension2); + + if ($compare == 2) + $acc_balance = get_budget_trans_from_to($begin, $end, $account["account_code"], $dimension, $dimension2); + else + $acc_balance = get_gl_trans_from_to($begin, $end, $account["account_code"], $dimension, $dimension2); + if (!$per_balance && !$acc_balance) + continue; + } + if ($account['AccountClassName'] != $classname) { if ($classname != '') @@ -156,38 +185,49 @@ function print_profit_and_loss_statement() } } - if ($account['AccountTypeName'] != $group) + if ($account['AccountTypeName'] != $typename[$level]) { - if ($group != '') + if ($typename[$level] != '') { - $rep->Line($rep->row + 6); - $rep->row -= 6; - $rep->TextCol(0, 2, _('Total') . " " . $group); - $rep->TextCol(2, 3, number_format2($totalper, $dec)); - $rep->TextCol(3, 4, number_format2($totalacc, $dec)); - $rep->TextCol(4, 5, number_format2(Achieve($totalper, $totalacc), $pdec)); - if ($graphics) + for ( ; $level >= 0, $typename[$level] != ''; $level--) { - $pg->x[] = $group; - $pg->y[] = abs($totalper); - $pg->z[] = abs($totalacc); + if ($account['parent'] == $closing[$level] || $account['parent'] < $last || $account['parent'] <= 0) + { + $rep->row += 6; + $rep->Line($rep->row); + $rep->NewLine(); + $rep->TextCol(0, 2, _('Total') . " " . $typename[$level]); + $rep->AmountCol(2, 3, $typeper[$level] * $convert, $dec); + $rep->AmountCol(3, 4, $typeacc[$level] * $convert, $dec); + $rep->AmountCol(4, 5, Achieve($typeper[$level], $typeacc[$level]), $pdec); + if ($graphics) + { + $pg->x[] = $typename[$level]; + $pg->y[] = abs($typeper[$level]); + $pg->z[] = abs($typeacc[$level]); + } + $typeper[$level] = $typeacc[$level] = 0.0; + } + else + break; + $rep->NewLine(); } - $totalper = $totalacc = 0.0; - $rep->row -= ($rep->lineHeight + 4); + //$rep->NewLine(); if ($closeclass) { - $rep->Line($rep->row + 6); - $rep->row -= 6; + $rep->row += 6; + $rep->Line($rep->row); + $rep->NewLine(); $rep->Font('bold'); $rep->TextCol(0, 2, _('Total') . " " . $classname); - $rep->TextCol(2, 3, number_format2($classper, $dec)); - $rep->TextCol(3, 4, number_format2($classacc, $dec)); - $rep->TextCol(4, 5, number_format2(Achieve($classper, $classacc), $pdec)); + $rep->AmountCol(2, 3, $classper * $convert, $dec); + $rep->AmountCol(3, 4, $classacc * $convert, $dec); + $rep->AmountCol(4, 5, Achieve($classper, $classacc), $pdec); $rep->Font(); $salesper += $classper; $salesacc += $classacc; $classper = $classacc = 0.0; - $rep->NewLine(3); + $rep->NewLine(2); $closeclass = false; } } @@ -196,35 +236,50 @@ function print_profit_and_loss_statement() $rep->Font('bold'); $rep->TextCol(0, 5, $account['AccountClassName']); $rep->Font(); - $rep->row -= ($rep->lineHeight + 4); + $rep->NewLine(); } - $group = $account['AccountTypeName']; + $level++; + if ($account['parent'] != $last) + $last = $account['parent']; + $typename[$level] = $account['AccountTypeName']; + $closing[$level] = $account['parent']; + $rep->row -= 4; $rep->TextCol(0, 5, $account['AccountTypeName']); - $rep->Line($rep->row - 4); - $rep->row -= ($rep->lineHeight + 4); + $rep->row -= 4; + $rep->Line($rep->row); + $rep->NewLine(); } $classname = $account['AccountClassName']; + $ctype = $account['ClassType']; + $convert = get_class_type_convert($ctype); + + if ($account['account_code'] != null) + { + //$per_balance *= -1; + //$acc_balance *= -1; + + for ($i = 0; $i <= $level; $i++) + { + $typeper[$i] += $per_balance; + $typeacc[$i] += $acc_balance; + } + $classper += $per_balance; + $classacc += $acc_balance; + $rep->TextCol(0, 1, $account['account_code']); + $rep->TextCol(1, 2, $account['account_name']); - $per_balance *= -1; - $acc_balance *= -1; - $totalper += $per_balance; - $totalacc += $acc_balance; - $classper += $per_balance; - $classacc += $acc_balance; - $rep->TextCol(0, 1, $account['account_code']); - $rep->TextCol(1, 2, $account['account_name']); - - $rep->TextCol(2, 3, number_format2($per_balance, $dec)); - $rep->TextCol(3, 4, number_format2($acc_balance, $dec)); - $rep->TextCol(4, 5, number_format2(Achieve($per_balance, $acc_balance), $pdec)); + $rep->AmountCol(2, 3, $per_balance * $convert, $dec); + $rep->AmountCol(3, 4, $acc_balance * $convert, $dec); + $rep->AmountCol(4, 5, Achieve($per_balance, $acc_balance), $pdec); - $rep->NewLine(); + $rep->NewLine(); - if ($rep->row < $rep->bottomMargin + 3 * $rep->lineHeight) - { - $rep->Line($rep->row - 2); - $rep->Header(); - } + if ($rep->row < $rep->bottomMargin + 3 * $rep->lineHeight) + { + $rep->Line($rep->row - 2); + $rep->Header(); + } + } } if ($account['AccountClassName'] != $classname) { @@ -233,41 +288,54 @@ function print_profit_and_loss_statement() $closeclass = true; } } - if ($account['AccountTypeName'] != $group) + if ($account['AccountTypeName'] != $typename[$level]) { - if ($group != '') + if ($typename[$level] != '') { - $rep->Line($rep->row + 6); - $rep->row -= 6; - $rep->TextCol(0, 2, _('Total') . " " . $group); - $rep->TextCol(2, 3, number_format2($totalper, $dec)); - $rep->TextCol(3, 4, number_format2($totalacc, $dec)); - $rep->TextCol(4, 5, number_format2(Achieve($totalper, $totalacc), $pdec)); - if ($graphics) + for ( ; $level >= 0, $typename[$level] != ''; $level--) { - $pg->x[] = $group; - $pg->y[] = abs($totalper); - $pg->z[] = abs($totalacc); + if ($account['parent'] == $closing[$level] || $account['parent'] < $last || $account['parent'] <= 0) + { + $rep->row += 6; + $rep->Line($rep->row); + $rep->NewLine(); + $rep->TextCol(0, 2, _('Total') . " " . $typename[$level]); + $rep->AmountCol(2, 3, $typeper[$level] * $convert, $dec); + $rep->AmountCol(3, 4, $typeacc[$level] * $convert, $dec); + $rep->AmountCol(4, 5, Achieve($typeper[$level], $typeacc[$level]), $pdec); + if ($graphics) + { + $pg->x[] = $typename[$level]; + $pg->y[] = abs($typeper[$level]); + $pg->z[] = abs($typeacc[$level]); + } + $typeper[$level] = $typeacc[$level] = 0.0; + } + else + break; + $rep->NewLine(); } - $rep->row -= ($rep->lineHeight + 4); + //$rep->NewLine(); if ($closeclass) { $rep->Line($rep->row + 6); $calculateper = $salesper + $classper; $calculateacc = $salesacc + $classacc; - $rep->row -= 6; + $rep->row += 6; + $rep->Line($rep->row); + $rep->NewLine(); $rep->Font('bold'); $rep->TextCol(0, 2, _('Total') . " " . $classname); - $rep->TextCol(2, 3, number_format2($classper, $dec)); - $rep->TextCol(3, 4, number_format2($classacc, $dec)); - $rep->TextCol(4, 5, number_format2(Achieve($classper, $classacc), $pdec)); + $rep->AmountCol(2, 3, $classper * $convert, $dec); + $rep->AmountCol(3, 4, $classacc * $convert, $dec); + $rep->AmountCol(4, 5, Achieve($classper, $classacc), $pdec); - $rep->row -= ($rep->lineHeight + 8); + $rep->NewLine(2); $rep->TextCol(0, 2, _('Calculated Return')); - $rep->TextCol(2, 3, number_format2($calculateper, $dec)); - $rep->TextCol(3, 4, number_format2($calculateacc, $dec)); - $rep->TextCol(4, 5, number_format2(Achieve($calculateper, $calculateacc), $pdec)); + $rep->AmountCol(2, 3, $calculateper *-1, $dec); // always convert + $rep->AmountCol(3, 4, $calculateacc * -1, $dec); + $rep->AmountCol(4, 5, Achieve($calculateper, $calculateacc), $pdec); if ($graphics) { $pg->x[] = _('Calculated Return'); @@ -293,7 +361,7 @@ function print_profit_and_loss_statement() $pg->type = $graphics; $pg->skin = $graph_skin; $pg->built_in = false; - $pg->fontfile = $path_to_root . "reporting/fonts/Vera.ttf"; + $pg->fontfile = $path_to_root . "/reporting/fonts/Vera.ttf"; $pg->latin_notation = ($decseps[$_SESSION["wa_current_user"]->prefs->dec_sep()] != "."); $filename = $comp_path.'/'.user_company(). "/pdf_files/test.png"; $pg->display($filename, true);