. ***********************************************************************/ $page_security = 'SA_GLANALYTIC'; $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/ui.inc"); include_once($path_to_root . "/includes/data_checks.inc"); include_once($path_to_root . "/gl/includes/gl_db.inc"); $js = ""; if (user_use_date_picker()) $js = get_js_date_picker(); page(_($help_context = "Balance Sheet Drilldown"), false, false, "", $js); //---------------------------------------------------------------------------------------------------- // Ajax updates if (get_post('Show')) { $Ajax->activate('balance_tbl'); } if (isset($_GET["TransFromDate"])) $_POST["TransFromDate"] = $_GET["TransFromDate"]; if (isset($_GET["TransToDate"])) $_POST["TransToDate"] = $_GET["TransToDate"]; if (isset($_GET["Dimension"])) $_POST["Dimension"] = $_GET["Dimension"]; if (isset($_GET["Dimension2"])) $_POST["Dimension2"] = $_GET["Dimension2"]; if (isset($_GET["AccGrp"])) $_POST["AccGrp"] = $_GET["AccGrp"]; //---------------------------------------------------------------------------------------------------- function display_type ($type, $typename, $from, $to, $convert, $dimension, $dimension2, $drilldown) { global $path_to_root, $levelptr, $k; $acctstotal = 0; $typestotal = 0; //Get Accounts directly under this group/type $result = get_gl_accounts(null, null, $type); while ($account=db_fetch($result)) { $net_balance = get_gl_trans_from_to("", $to, $account["account_code"], $dimension, $dimension2); if (!$net_balance) continue; if ($drilldown && $levelptr == 0) { $url = "" . $account['account_code'] ." ". $account['account_name'] .""; start_row("class='stockmankobg'"); label_cell($url); amount_cell(($net_balance) * $convert); end_row(); } $acctstotal += $net_balance; } $levelptr = 1; //Get Account groups/types under this group/type $result = get_account_types(false, false, $type); while ($accounttype=db_fetch($result)) { $typestotal += display_type($accounttype["id"], $accounttype["name"], $from, $to, $convert, $dimension, $dimension2, $drilldown); } //Display Type Summary if total is != 0 if (($acctstotal + $typestotal) != 0) { if ($drilldown && $type == $_POST["AccGrp"]) { start_row("class='inquirybg' style='font-weight:bold'"); label_cell(_('Total') . " " . $typename); amount_cell(($acctstotal + $typestotal) * $convert); end_row(); } //START Patch#1 : Display only direct child types $acctype1 = get_account_type($type); $parent1 = $acctype1["parent"]; if ($drilldown && $parent1 == $_POST["AccGrp"]) //END Patch#2 { $url = "" . $type . " " . $typename .""; alt_table_row_color($k); label_cell($url); amount_cell(($acctstotal + $typestotal) * $convert); end_row(); } } return ($acctstotal + $typestotal); } function inquiry_controls() { $dim = get_company_pref('use_dimension'); start_table(TABLESTYLE_NOBORDER); date_cells(_("As at:"), 'TransToDate'); if ($dim >= 1) dimensions_list_cells(_("Dimension")." 1:", 'Dimension', null, true, " ", false, 1); if ($dim > 1) dimensions_list_cells(_("Dimension")." 2:", 'Dimension2', null, true, " ", false, 2); submit_cells('Show',_("Show"),'','', 'default'); end_table(); hidden('TransFromDate'); hidden('AccGrp'); } function display_balance_sheet() { global $path_to_root; $from = begin_fiscalyear(); $to = $_POST['TransToDate']; if (!isset($_POST['Dimension'])) $_POST['Dimension'] = 0; if (!isset($_POST['Dimension2'])) $_POST['Dimension2'] = 0; $dimension = $_POST['Dimension']; $dimension2 = $_POST['Dimension2']; $lconvert = $econvert = 1; if (isset($_POST["AccGrp"]) && (strlen($_POST['AccGrp']) > 0)) $drilldown = 1; // Deeper Level else $drilldown = 0; // Root level div_start('balance_tbl'); start_table(TABLESTYLE, "width='30%'"); if (!$drilldown) //Root Level { $equityclose = 0.0; $lclose = 0.0; $calculateclose = 0.0; //Get classes for BS $classresult = get_account_classes(false, 1); while ($class = db_fetch($classresult)) { $classclose = 0.0; $convert = get_class_type_convert($class["ctype"]); $ctype = $class["ctype"]; //Print Class Name table_section_title($class["class_name"]); //Get Account groups/types under this group/type $typeresult = get_account_types(false, $class['cid'], -1); $k = 0; while ($accounttype=db_fetch($typeresult)) { $TypeTotal = display_type($accounttype["id"], $accounttype["name"], $from, $to, $convert, $dimension, $dimension2, $drilldown); //Print Summary if ($TypeTotal != 0 ) { $url = "" . $accounttype['id']." ".$accounttype['name'] .""; alt_table_row_color($k); label_cell($url); amount_cell($TypeTotal * $convert); end_row(); } $classclose += $TypeTotal; } //Print Class Summary start_row("class='inquirybg' style='font-weight:bold'"); label_cell(_('Total') . " " . $class["class_name"]); amount_cell($classclose * $convert); end_row(); if ($ctype == CL_EQUITY) { $equityclose += $classclose; $econvert = $convert; } if ($ctype == CL_LIABILITIES) { $lclose += $classclose; $lconvert = $convert; } $calculateclose += $classclose; } if ($lconvert == 1) $calculateclose *= -1; //Final Report Summary $url = ""._('Calculated Return').""; start_row("class='inquirybg' style='font-weight:bold'"); label_cell($url); amount_cell($calculateclose); end_row(); start_row("class='inquirybg' style='font-weight:bold'"); label_cell(_('Total') . " " . _('Liabilities') . _(' and ') . _('Equities')); amount_cell($lclose * $lconvert + $equityclose * $econvert + $calculateclose); end_row(); } else //Drill Down { //Level Pointer : Global variable defined in order to control display of root global $levelptr; $levelptr = 0; $accounttype = get_account_type($_POST["AccGrp"]); $classid = $accounttype["class_id"]; $class = get_account_class($classid); $convert = get_class_type_convert($class["ctype"]); //Print Class Name table_section_title($_POST["AccGrp"]. " " . get_account_type_name($_POST["AccGrp"])); $classclose = display_type($accounttype["id"], $accounttype["name"], $from, $to, $convert, $dimension, $dimension2, $drilldown); } end_table(1); // outer table div_end(); } //---------------------------------------------------------------------------------------------------- start_form(); inquiry_controls(); display_balance_sheet(); end_form(); end_page();