<?php
/**********************************************************************
***********************************************************************/

$page_security = 'SA_CUST_TRAN_INQ';
$path_to_root = "../..";
include_once($path_to_root . "/includes/db_pager.inc");
include_once($path_to_root . "/includes/session.inc");
include_once($path_to_root . "/sales/includes/sales_ui.inc");
include_once($path_to_root . "/sales/includes/sales_db.inc");
include_once($path_to_root . "/reporting/includes/reporting.inc");
include_once($path_to_root . "/sales/includes/db/sales_inquiry_db.inc");

$js = "";
$js .= get_js_open_window(900, 500);
$js .= get_js_date_picker();

    page(_($help_context = "Customer Transactions Inquiry"), isset($_GET['customer_id']), false, "", $js);

if(isset($_GET['customer_id'])){
    $_POST['customer_id'] = $_GET['customer_id'];
}

//------------------------------------------------------------------------------------------------

if(!@$_GET['popup'])
start_form();

if(!isset($_POST['customer_id']))
    $_POST['customer_id'] = get_global_customer();

    start_table(TABLESTYLE_NOBORDER);
        start_row();

                ref_cells(text_bold("Tran. #:"), 'TransNo', '',null, '', true);
                ref_cells(text_bold("Reference:"), 'Reference', '',null, '', true);

                customer_list_cells(_("Select a customer: "), 'customer_id', null, true, true, false, !@$_GET['popup']);

                date_cells(_("From:"), 'TransFromDate', '', null, -30, 0, 0, null, true);
                date_cells(_("To:"), 'TransToDate', '', null, 1, 0, 0, null, true);
                if(isset( $_POST['filterType']) &&  $_POST['filterType'] > 0){
                    $_POST['filterType'] = $_POST['filterType'];
                }else{
                    $_POST['filterType'] = -1;
                }
                customer_transaction_types_list_cells(_("Type:"), "filterType", $_POST['filterType'], true, array(), "All transaction types");

            submit_cells('RefreshInquiry', _("Search"),'',_('Refresh Inquiry'), 'default');
        end_row();
    end_table(1);

set_global_customer($_POST['customer_id']);

//------------------------------------------------------------------------------------------------

    function display_customer_summary($customer_record){
        $past1 = get_company_pref('past_due_days');
        $past2 = 2 * $past1;
            if($customer_record["dissallow_invoices"] != 0){
                echo "<center><font color=red size=4><b>" . _("CUSTOMER ACCOUNT IS ON HOLD") . "</font></b></center>";
            }

            $nowdue = "1-" . $past1 . " " . _('Days');
            $pastdue1 = $past1 + 1 . "-" . $past2 . " " . _('Days');
            $pastdue2 = _('Over') . " " . $past2 . " " . _('Days');

        start_table(TABLESTYLE, "width=95%");
            $th = array(_("Currency"), _("Terms"), _("Current"), $nowdue, $pastdue1, $pastdue2, _("Total Balance"));
            table_header($th);
                start_row();
                    label_cell($customer_record["curr_code"]);
                    label_cell($customer_record["terms"]);
                    amount_cell($customer_record["Balance"] - $customer_record["Due"]);
                    amount_cell($customer_record["Due"] - $customer_record["Overdue1"]);
                    amount_cell($customer_record["Overdue1"] - $customer_record["Overdue2"]);
                    amount_cell($customer_record["Overdue2"]);
                    amount_cell($customer_record["Balance"]);
                end_row();
        end_table(1);
    }
    
//------------------------------------------------------------------------------------------------

div_start('totals_tbl');
    if($_POST['customer_id'] != "" && $_POST['customer_id'] != ALL_TEXT){
        $customer_record = get_customer_details($_POST['customer_id'], $_POST['TransToDate']);
        display_customer_summary($customer_record);
        echo "<br>";
    }
div_end();

if(get_post('RefreshInquiry')){
    $Ajax->activate('totals_tbl');
}

//------------------------------------------------------------------------------------------------

function systype_name($dummy, $type){
    global $systypes_array;
    return $systypes_array[$type];
}

function order_view($row){
    if(!($row['order_']>0)){
        return null;
    }
    
    switch($row["type"]){
        case ST_SALESINVOICE:
            return get_customer_trans_view_str(ST_SALESORDER, $row['order_']);
        case ST_CUSTDELIVERY:
            return get_customer_trans_view_str(ST_SALESINVOICE, $row['order_']);
        case ST_CUSTCREDIT:
            return get_customer_trans_view_str(ST_CUSTDELIVERY, $row['order_']);
        case ST_CUSTOMER_PAYMENT_RETURN:
            return get_customer_trans_view_str(ST_SALESINVOICE, $row['order_']);
        default:
            break;
    }
}

function trans_view($trans){
    return get_trans_view_str($trans["type"], $trans["trans_no"]);
}

function due_date($row){
    return $row["type"] == ST_SALESINVOICE	? $row["due_date"] : '';
}

function gl_view($row){
    return get_gl_view_str($row["type"], $row["trans_no"]);   
}

function fmt_debit($row){
    if(in_array($row['type'], array(ST_CUSTDELIVERY, ST_CUSTOMER_PAYMENT_RETURN, ST_BANKPAYMENT, ST_PROJECT_INVOICE, ST_SALESINVOICE, ST_CASH_PAYMENT, ST_GL_DEBIT))){
        $value = $row["TotalAmount"];
    }elseif(in_array($row['type'], array(ST_CUSTCREDIT, ST_CUSTPAYMENT, ST_BANKDEPOSIT, ST_PROJECT_CREDIT_NOTE, ST_CASH_RECEIPT, ST_GL_CREDIT))){
        $value = -$row["TotalAmount"];
    }else{
        $value = 0;
    }

    return $value>=0 ? price_format($value) : '';
}

function fmt_credit($row){
    if(in_array($row['type'], array(ST_CUSTCREDIT, ST_CUSTPAYMENT, ST_BANKDEPOSIT, ST_PROJECT_CREDIT_NOTE, ST_CASH_RECEIPT, ST_GL_CREDIT))){
        $value = $row["TotalAmount"];
    }elseif(in_array($row['type'], array(ST_CUSTDELIVERY, ST_CUSTOMER_PAYMENT_RETURN, ST_BANKPAYMENT, ST_PROJECT_INVOICE, ST_SALESINVOICE, ST_CASH_PAYMENT, ST_GL_DEBIT))){
        $value = -$row["TotalAmount"];
    }else{
        $value = 0;
    }
    return $value>0 ? price_format($value) : '';
}

if(!(isset($_SESSION['RB_TOTAL_INQUIRY']))){
    set_session_variable("RB_TOTAL_INQUIRY", 0);
}

function _rb_total($row){
    return $row['rb_total'];
}

function credit_link($row){
    if(@$_GET['popup'])
        return '';
    return $row['type'] == ST_CUSTDELIVERY && $row["Outstanding"] > 0 ? pager_link(_("Credit This") , "/sales/customer_credit_invoice.php?DeliveryNoteNo=". $row['trans_no'], ICON_CREDIT):'';
}

function edit_link($row){
    if(@$_GET['popup'] || get_voided_entry($row['type'], $row["trans_no"]) || is_closed_trans($row['type'], $row["trans_no"]))
        return '';

    $str = '';
    switch($row['type']){
        case ST_SALESINVOICE:
                $str = "/sales/customer_invoice.php?ModifyInvoice=".$row['trans_no'];
        break;
        case ST_CUSTCREDIT:
                if($row['order_']==0) // free-hand credit note
                    $str = "/sales/credit_note_entry.php?ModifyCredit=".$row['trans_no'];
                else	// credit invoice
                    $str = "/sales/customer_credit_invoice.php?ModifyCredit=".$row['trans_no'];
        break;
        case ST_CUSTDELIVERY:
                $str = "/sales/customer_delivery.php?ModifyDelivery=".$row['trans_no'];
        break;
        case ST_CUSTPAYMENT:
                $str = "/sales/customer_payments.php?trans_no=".$row['trans_no'];
        break;
    }

    return $str ? pager_link(_('Edit'), $str, ICON_EDIT) : '';
}

function prt_link($row){
    if($row['type'] == ST_CUSTPAYMENT || $row['type'] == ST_BANKDEPOSIT) 
        return print_document_link($row['trans_no']."-".$row['type'], _("Print Receipt"), true, ST_CUSTPAYMENT, ICON_PRINT);
    elseif($row['type'] == ST_BANKPAYMENT) // bank payment printout not defined yet.
        return '';
    else	
        return print_document_link($row['trans_no']."-".$row['type'], _("Print"), true, $row['type'], ICON_PRINT);
}

function check_overdue($row){
    return $row['OverDue'] == 1 && floatcmp($row["TotalAmount"], $row["Allocated"]) != 0;
}

//------------------------------------------------------------------------------------------------

$tran_no = -1;
if(isset($_POST['TransNo']) && $_POST['TransNo'] > 0){
    $tran_no = $_POST['TransNo'];
}
$reference = "";
if(isset($_POST['Reference']) && strlen($_POST['Reference']) > 0){
    $reference = $_POST['Reference'];
}
$customer_id = -1;
if(isset($_POST['customer_id']) && $_POST['customer_id'] > 0){
    $customer_id = $_POST['customer_id'];
}
$TransFromDate = "";
if(isset($_POST['TransFromDate']) && $_POST['TransFromDate'] > 0){
    $TransFromDate = $_POST['TransFromDate'];
}
$TransToDate = "";
if(isset($_POST['TransToDate']) && $_POST['TransToDate'] > 0){
    $TransToDate = $_POST['TransToDate'];
}
$filterType = 0;
if(isset($_POST['filterType']) && $_POST['filterType'] > 0){
    $filterType = $_POST['filterType'];
}

$sql = get_sql_for_customer_transaction_inquiry($tran_no, $reference, $customer_id, $TransFromDate, $TransToDate, $filterType);

db_query("set @bal:=0");

$cols = array(
	_("Type") => array('fun'=>'systype_name', 'ord'=>''),
	_("#") => array('fun'=>'trans_view', 'ord'=>'', 'align'=>'center'),
        _("Reference"), 
	_("Source") => array('fun'=>'order_view', 'align'=>'center'), 	
        _("Cat. Ref."), 
	_("Date") => array('name'=>'tran_date', 'type'=>'date', 'ord'=>'desc'),
	_("Due Date") => array('type'=>'date', 'fun'=>'due_date'),
	_("Customer") => array('ord'=>''), 
	_("Branch") => array('ord'=>''), 
	_("Currency") => array('align'=>'center'),
	_("Debit") => array('align'=>'right', 'fun'=>'fmt_debit'), 
	_("Credit") => array('align'=>'right','insert'=>true, 'fun'=>'fmt_credit'), 
	_("RB") => array('align'=>'right', 'type'=>'amount'),
                   array('insert'=>true, 'fun'=>'gl_view', 'align'=>'center'),
                   array('insert'=>true, 'fun'=>'credit_link', 'align'=>'center')
//                   array('insert'=>true, 'fun'=>'prt_link', 'align'=>'center')
	);

if($_POST['customer_id'] != ALL_TEXT) {
    $cols[_("Customer")] = 'skip';
    $cols[_("Currency")] = 'skip';
}

if($_POST['filterType'] == ALL_TEXT)
    $cols[_("RB")] = 'skip';

$table =& new_db_pager('trans_tbl', $sql, $cols);
$table->set_marker('check_overdue', _("Marked items are overdue."));

$table->width = "98%";

display_db_pager($table);

if(!@$_GET['popup']){
    end_form();
    end_page(@$_GET['popup'], false, false);
}

?>