[0005214] Stock Check Sheet: changed option name to less confusing for shortages...
[fa-stable.git] / reporting / rep701.php
index 63c90c39ede42b88b85206d4c4224389b1e33793..65211df69e36a05b8cb1c12b3a5ef23495efd6c3 100644 (file)
@@ -9,7 +9,7 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
-$page_security = 2;
+$page_security = 'SA_GLREP';
 // ----------------------------------------------------------------
 // $ Revision: 2.0 $
 // Creator:    Joe Hunt
@@ -25,6 +25,67 @@ include_once($path_to_root . "/gl/includes/gl_db.inc");
 
 //----------------------------------------------------------------------------------------------------
 
+function display_type ($type, $typename, &$dec, &$rep, $showbalance, $level)
+{
+       $printtitle = 0; //Flag for printing type name  
+
+       //Get Accounts directly under this group/type
+       $result = get_gl_accounts(null, null, $type);   
+       while ($account=db_fetch($result))
+       {
+               //Print Type Title if it has atleast one non-zero account       
+               if (!$printtitle)
+               {
+                       $prefix = '';
+                       for ($sp=1; $sp<=$level; $sp++)
+                       {
+                               $prefix .= '         ';
+                       }
+                       $printtitle = 1;
+                       $rep->row -= 4;
+                       $rep->TextCol(0, 1, $type);
+                       $rep->TextCol(1, 4, $prefix.$typename);
+                       $rep->row -= 4;
+                       $rep->Line($rep->row);
+                       $rep->NewLine();                
+               }                       
+               if ($showbalance == 1)
+               {
+                       $begin = begin_fiscalyear();
+                       if (is_account_balancesheet($account["account_code"]))
+                               $begin = "";
+                       $balance = get_gl_trans_from_to($begin, ToDay(), $account["account_code"], 0);
+               }
+               $rep->TextCol(0, 1,     $account['account_code']);
+               $rep->TextCol(1, 2,     $prefix.$account['account_name']);
+               $rep->TextCol(2, 3,     $account['account_code2']);
+               if ($showbalance == 1)  
+                       $rep->AmountCol(3, 4, $balance, $dec);
+               $rep->NewLine();
+       }
+
+       //Get Account groups/types under this group/type
+       $result = get_account_types(false, false, $type);
+       while ($accounttype=db_fetch($result))
+       {
+               //Print Type Title if has sub types and not previously printed
+               if (!$printtitle)
+               {
+                       $printtitle = 1;
+                       $rep->row -= 4;
+                       $rep->TextCol(0, 1, $type);
+                       $rep->TextCol(1, 4, $typename);
+                       $rep->row -= 4;
+                       $rep->Line($rep->row);
+                       $rep->NewLine();                
+               }
+               $nextlevel = $level + 1;
+               display_type($accounttype["id"], $accounttype["name"].' ('.$typename.')', $dec, $rep, $showbalance, $nextlevel);
+       }
+}
+
+//----------------------------------------------------------------------------------------------------
+
 print_Chart_of_Accounts();
 
 //----------------------------------------------------------------------------------------------------
@@ -35,15 +96,16 @@ function print_Chart_of_Accounts()
 
        $showbalance = $_POST['PARAM_0'];
        $comments = $_POST['PARAM_1'];
-       $destination = $_POST['PARAM_2'];
+       $orientation = $_POST['PARAM_2'];
+       $destination = $_POST['PARAM_3'];
        if ($destination)
                include_once($path_to_root . "/reporting/includes/excel_report.inc");
        else
                include_once($path_to_root . "/reporting/includes/pdf_report.inc");
 
-       $dec = 0;
+       $orientation = ($orientation ? 'L' : 'P');
 
-       $cols = array(0, 50, 300, 425, 500);
+       $cols = array(0, 60, 300, 425, 500);
 
        $headers = array(_('Account'), _('Account Name'), _('Account Code'), _('Balance'));
        
@@ -51,61 +113,32 @@ function print_Chart_of_Accounts()
        
        $params = array(0 => $comments);
 
-       $rep = new FrontReport(_('Chart of Accounts'), "ChartOfAccounts", user_pagesize());
+       $rep = new FrontReport(_('Chart of Accounts'), "ChartOfAccounts", user_pagesize(), 9, $orientation);
+    if ($orientation == 'L')
+       recalculate_cols($cols);
        
        $rep->Font();
        $rep->Info($params, $cols, $headers, $aligns);
-       $rep->Header();
+       $rep->NewPage();
 
-       $classname = '';
-       $group = '';
-
-       $accounts = get_gl_accounts_all();
-
-       while ($account=db_fetch($accounts))
+       $classresult = get_account_classes(false);
+       while ($class = db_fetch($classresult))
        {
-               if ($showbalance == 1)
-               {
-                       $begin = begin_fiscalyear();
-                       if (is_account_balancesheet($account["account_code"]))
-                               $begin = "";
-                       $balance = get_gl_trans_from_to($begin, ToDay(), $account["account_code"], 0);
-               }
-               if ($account['AccountTypeName'] != $group)
-               {
-                       if ($classname != '')
-                               $rep->row -= 4;
-                       if ($account['AccountClassName'] != $classname)
-                       {
-                               $rep->Font('bold');
-                               $rep->TextCol(0, 4, $account['AccountClassName']);
-                               $rep->Font();
-                               //$rep->row -= ($rep->lineHeight + 4);
-                               $rep->NewLine();
-                       }
-                       $group = $account['AccountTypeName'];
-                       $rep->TextCol(0, 4, $account['AccountTypeName']);
-                       //$rep->Line($rep->row - 4);
-                       //$rep->row -= ($rep->lineHeight + 4);
-                       $rep->NewLine();
-               }
-               $classname = $account['AccountClassName'];
-
-               $rep->TextCol(0, 1,     $account['account_code']);
-               $rep->TextCol(1, 2,     $account['account_name']);
-               $rep->TextCol(2, 3,     $account['account_code2']);
-               if ($showbalance == 1)  
-                       $rep->AmountCol(3, 4, $balance, $dec);
-
+               $rep->Font('bold');
+               $rep->TextCol(0, 1, $class['cid']);
+               $rep->TextCol(1, 4, $class['class_name']);
+               $rep->Font();
                $rep->NewLine();
-               if ($rep->row < $rep->bottomMargin + 3 * $rep->lineHeight)
+
+               //Get Account groups/types under this group/type with no parents
+               $typeresult = get_account_types(false, $class['cid'], -1);
+               while ($accounttype=db_fetch($typeresult))
                {
-                       $rep->Line($rep->row - 2);
-                       $rep->Header();
+                       display_type($accounttype["id"], $accounttype["name"], $dec, $rep, $showbalance, 0);
                }
+               $rep->NewLine();
        }
-       $rep->Line($rep->row);
+       $rep->Line($rep->row + 10);
        $rep->End();
 }
 
-?>
\ No newline at end of file