<?php

function gl_inquiry_controls() {

    global $payment_person_all_types;
    
    $dim = get_company_pref('use_dimension');

    start_table(TABLESTYLE_NOBORDER);
	start_row();
            gl_all_accounts_list_cells(_("Account:"), 'account', null, false, false, _("All Accounts"), true);
            date_cells(_("from:"), 'TransFromDate', '', null, -30, 0, 0, null, true);
            date_cells(_("to:"), 'TransToDate', '', null, 0, 0, 0, null, true);
        end_row();
    end_table();

        
    start_table(TABLESTYLE_NOBORDER);
    start_row();    
        project_list_cells(_("Project:"), 'project_id', null, _('Select a project'), true);    

        $gl_tr_tp_array = array("'GL_TRANS_TYPE_BANKPAYMENT'", "'GL_TRANS_TYPE_BANKDEPOSIT'", "'GL_TRANS_TYPE_CASH_PAYMENT'", 
                                "'GL_TRANS_TYPE_CASH_RECEIPT'", "'GL_TRANS_TYPE_GL_CREDIT'", "'GL_TRANS_TYPE_GL_DEBIT'", "'GL_TRANS_TYPE_JOURNAL'");
        $list_codes_in = implode(',', $gl_tr_tp_array);
        filtered_value_list_cells('GL Trans Type:', 'gl_trans_type_id', $list_codes_in, '', null, '', true); 
        
        $payment_person_all_types[-1] = '';
        ksort($payment_person_all_types);
        custom_values_list_cells('Person Type:', 'person_type_id', $payment_person_all_types, null, false, true);
    end_table();
    
    start_table(TABLESTYLE_NOBORDER);
	start_row();
            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);

            small_amount_cells(_("Amount min:"), 'amount_min', null, " ");
            small_amount_cells(_("Amount max:"), 'amount_max', null, " ");
            submit_cells('Show',_("Show"),'','', 'default');
	end_row();
    end_table(2);

    
    echo '<hr>';
}

function show_results() {
    global $path_to_root, $systypes_array;

    if (!isset($_POST["account"]))
        $_POST["account"] = null;

    $act_name = $_POST["account"] ? get_gl_account_name($_POST["account"]) : "";
	$dim = get_company_pref('use_dimension');

    /*Now get the transactions  */
    if (!isset($_POST['Dimension']))
    	$_POST['Dimension'] = 0;
    if (!isset($_POST['Dimension2']))
    	$_POST['Dimension2'] = 0;
    
    if (! isset($_POST['person_type_id'])) {
        $_POST['person_type_id'] = -1;
    }
    if (! isset($_POST['gl_trans_type_id'])) {
        $_POST['gl_trans_type_id'] = 0;
    }
    if (! isset($_POST['project_id'])) {
        $_POST['project_id'] = 0;
    }
    
    $result = get_gl_transactions($_POST['TransFromDate'], $_POST['TransToDate'], -1, $_POST["account"], $_POST['Dimension'], $_POST['Dimension2'], 
                                      null, input_num('amount_min'), input_num('amount_max'), 
                                        $_POST['person_type_id'], $_POST['gl_trans_type_id'], $_POST['project_id']);

	$colspan = ($dim == 2 ? "6" : ($dim == 1 ? "5" : "5"));
        $colspan =6;

	if ($_POST["account"] != null){
            display_heading($_POST["account"]. "&nbsp;&nbsp;&nbsp;".$act_name);
        }

	// Only show balances if an account is specified AND we're not filtering by amounts
	$show_balances = $_POST["account"] != null && input_num("amount_min") == 0 && input_num("amount_max") == 0;
		
	start_table(TABLESTYLE);
	
            $first_cols = array(_("Type"), _("#"), _("Date"));
	
            if ($_POST["account"] == null)
                $account_col = array(_("Project"),_("Account"));
            else
                $account_col = array();

            if ($dim == 2)
                $dim_cols = array(_("Dimension")." 1", _("Dimension")." 2");
            else if ($dim == 1)
                $dim_cols = array(_("Dimension"));
            else
                $dim_cols = array();

            if ($show_balances)
                $remaining_cols = array(_("Person/Item"), _("Debit"), _("Credit"), _("Balance"), _("Memo"), _("Project"));
            else
                $remaining_cols = array(_("Person/Item"), _("Debit"), _("Credit"), _("Memo"), _("Project"));

            $th = array_merge($first_cols, $account_col, $dim_cols, $remaining_cols);

            table_header($th);
            if ($_POST["account"] != null && is_account_balancesheet($_POST["account"]))
                    $begin = "";
            else
            {
                $begin = get_fiscalyear_begin_for_date($_POST['TransFromDate']);
                if (date1_greater_date2($begin, $_POST['TransFromDate']))
                    $begin = $_POST['TransFromDate'];
                $begin = add_days($begin, -1);
            }

            $bfw = 0;

            if ($show_balances) {
                $bfw = get_gl_balance_from_to($begin, $_POST['TransFromDate'], $_POST["account"], $_POST['Dimension'], $_POST['Dimension2']);
                start_row("class='inquirybg'");
                    label_cell("<b>"._("Opening Balance")." - ".$_POST['TransFromDate']."</b>", "colspan=$colspan");
                    display_debit_or_credit_cells($bfw, true); 
                    label_cell('', "colspan=1");
                end_row();
            }

            $running_total = $bfw;
            $j = 1;
            $k = 0; //row colour counter
            $debits = $credits = 0;

                while ($myrow = db_fetch($result)) {

                    alt_table_row_color($k);

                        $running_total += $myrow["amount"];
                        
                        if($myrow["amount"] > 0){
                            $debits += $myrow["amount"];
                        }
                        if($myrow["amount"] < 0){
                            $credits += $myrow["amount"];
                        }

                        $trandate = sql2date($myrow["tran_date"]);

                        label_cell($systypes_array[$myrow["type"]]);
                        label_cell(get_gl_view_str($myrow["type"], $myrow["type_no"], $myrow["type_no"], true));
                        label_cell($trandate);
                        
                        if ($_POST['project_id'] > 0) {
                            $project_formatted_code = get_project_formatted_code($myrow["dimension_id"], $myrow["project_code"]);
                            label_cell($project_formatted_code, "align=center");
                        }

                        if ($_POST["account"] == null)
                            label_cell($myrow["account"] . ' ' . get_gl_account_name($myrow["account"]));

                            if ($dim >= 1)
                                    label_cell(get_dimension_string($myrow['dimension_id'], true));
                            if ($dim > 1)
                                label_cell(get_dimension_string($myrow['dimension2_id'], true));
                            
//                            label_cell(payment_person_name($myrow["person_type_id"],$myrow["person_id"]));
                            if(in_array($myrow["type"], array(ST_GL_CREDIT, ST_GL_DEBIT, ST_CASH_PAYMENT, ST_CASH_RECEIPT))){
                                $pre_journal = get_pre_journal($myrow["type"], $myrow["type_no"]);
                                $person_detail_id  = $pre_journal['person_detail_id'];
                                label_cell(payment_person_name($myrow["person_type_id"],$myrow["person_id"], true, $person_detail_id));
                            }else{
                                label_cell(payment_person_name($myrow["person_type_id"],$myrow["person_id"]));
                            }
                
                            display_debit_or_credit_cells($myrow["amount"]);
                            if ($show_balances)
                                amount_cell($running_total);
                            if ($myrow['memo_'] == "")
                                    $myrow['memo_'] = get_comments_string($myrow['type'], $myrow['type_no']);
                            label_cell($myrow['memo_']);
                            label_cell($myrow['project_code']);
                    end_row();

                    $j++;
                    if ($j == 12) {
                        $j = 1;
                        table_header($th);
                    }
                }
            //end of while loop

            if ($show_balances) {
                start_row("class='inquirybg'");
                    label_cell("<b>" . _("Total") . "</b>", "colspan=4");
                    amount_cell($debits, true);
                    amount_cell(abs($credits), true); 
                    label_cell('', "colspan=3");
                end_row();
                start_row("class='inquirybg'");
                    label_cell("<b>" . _("Summary")."</b>", "colspan=4");
                    $summary_value = $debits + $credits;
                    display_debit_or_credit_cells($summary_value, true); 
                    label_cell('', "colspan=3");
                end_row();
                start_row("class='inquirybg'");
                    label_cell("<b>" . _("Ending Balance") ." - ".$_POST['TransToDate']. "</b>", "colspan=$colspan");
//                    display_debit_or_credit_cells($running_total, true); 
                    amount_cell($running_total, true);
                    label_cell('', "colspan=2");
                end_row();
            }

	end_table(2);
        
	if (db_num_rows($result) == 0)
            display_note(_("No general ledger transactions have been created for the specified criteria."), 0, 1);

}

?>