<?php
/**********************************************************************
***********************************************************************/
/* Author Rob Mallon */
$page_security = 'SA_RECONCILE';
$path_to_root = "..";
include($path_to_root . "/includes/db_pager.inc");
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");
include_once($path_to_root . "/gl/includes/ui/bank_account_reconcile_ui.inc");
include_once($path_to_root . "/gl/includes/db/gl_bank_reconciliation_inquiry_db.inc");
include_once($path_to_root . "/includes/banking.inc");

$js = "";
if ($SysPrefs->use_popup_windows)
	$js .= get_js_open_window(800, 500);
if (user_use_date_picker())
	$js .= get_js_date_picker();

add_js_file('reconcile.js');

page(_($help_context = "Reconcile Bank Account"), false, false, "", $js);

check_db_has_bank_accounts(_("There are no bank accounts defined in the system."));

function check_date() {
	if (!is_date(get_post('reconcile_date'))) {
		display_error(_("Invalid reconcile date format"));
		set_focus('reconcile_date');
		return false;
	}
	return true;
}
//
//	This function can be used directly in table pager 
//	if we would like to change page layout.
//
function rec_checkbox($row)
{
	$name = "rec_" .$row['id'];
	$hidden = 'last['.$row['id'].']';
	$value = 1;
        
        if ($row['reconciled'] == INFINITE_START_DATE || $row['reconciled'] == '0000-00-00' || $row['reconciled'] == null) {
            $value = 0;
        }

// save also in hidden field for testing during 'Reconcile'
	return checkbox(null, $name, $value, true, _('Reconcile this transaction'))
		. hidden($hidden, $value, false);
}

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

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

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

function fmt_debit($row)
{
	$value = $row["amount"];
	return $value>=0 ? price_format($value) : '';
}

function fmt_credit($row)
{
	$value = -$row["amount"];
	return $value>0 ? price_format($value) : '';
}

function fmt_person($row)
{
	return payment_person_name($row["person_type_id"],$row["person_id"]);
}

$update_pager = false;
function update_data()
{
	global $Ajax, $update_pager;
	
	unset($_POST["beg_balance"]);
	unset($_POST["end_balance"]);
	$Ajax->activate('summary');
	$update_pager = true;
}
//---------------------------------------------------------------------------------------------

// Update db record if respective checkbox value has changed.
//

if (!isset($_POST['reconcile_date'])) { // init page
	$_POST['reconcile_date'] = new_doc_date();
//	$_POST['bank_date'] = date2sql(Today());
}

if (list_updated('bank_account')) {
    $Ajax->activate('bank_date');
	update_data();
}
if (list_updated('bank_date')) {
	$_POST['reconcile_date'] = 
		get_post('bank_date')=='' ? Today() : sql2date($_POST['bank_date']);
	update_data();
}
if (get_post('_reconcile_date_changed')) {
	$_POST['bank_date'] = check_date() ? date2sql(get_post('reconcile_date')) : '';
    $Ajax->activate('bank_date');
	update_data();
}

$id = find_submit('_rec_');
if ($id != -1){
	change_tpl_flag($id);
}

if (isset($_POST['Reconcile'])) {
	set_focus('bank_date');
	foreach($_POST['last'] as $id => $value)
		if ($value != check_value('rec_'.$id))
			if(!change_tpl_flag($id)) break;
    $Ajax->activate('_page_body');
}

$Ajax->activate('end_balance');

//------------------------------------------------------------------------------------------------
start_form();

display_bank_account_reconcile_header();

echo "<hr>";
//------------------------------------------------------------------------------------------------

if (!isset($_POST['bank_account']))
    $_POST['bank_account'] = "";

display_bank_account_reconciliation_details();

br(1);
submit_center('Reconcile', _("Reconcile"), true, '', null);

end_form();

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

end_page();

?>