Location: PHPKode > projects > TEMS -Time and Expense Management System > tems/times/PrintTimeReport.php
<?php

/*********************************************************************************
 * TES is a Time and Expense Management program developed by
 * Initechs, LLC. Copyright (C) 2009 - 2010 Initechs LLC.
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License version 3 as published by the
 * Free Software Foundation with the addition of the following permission added
 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
 * IN WHICH THE COPYRIGHT IS OWNED BY INITECHS, INITECHS DISCLAIMS THE WARRANTY
 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, see http://www.gnu.org/licenses or write to the Free
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA.
 *
 * You can contact Initechs headquarters at 1841 Piedmont Road, Suite 301,
 * Marietta, GA, USA. or at email address hide@address.com
 *
 * The interactive user interfaces in modified source and object code versions
 * of this program must display Appropriate Legal Notices, as required under
 * Section 5 of the GNU General Public License version 3.
 *
 * In accordance with Section 7(b) of the GNU General Public License version 3,
 * these Appropriate Legal Notices must retain the display od the "Initechs" logo.
 * If the display of the logo is not reasonably feasible for technical reasons,
 * the Appropriate Legal Notices must display the words "Powered by Initechs".

 ********************************************************************************/

$basedir = dirname(__FILE__) . '/..';

require_once("$basedir/initialize.php");
require_once("$basedir/baseclass/DBCommonFunctions.php");
require_once("$basedir/baseclass/PageSection.php");

class dbObj extends DBCommonFunctions {}

class Report extends PageSection
{
	public function printReport()
	{
		$dateFormat = getUserDateFormat();

		$user = $_GET['users_id'];
		$project = $_GET['projects_id'];
		$weekenddate = convertdate($_GET['weekenddate'], $dateFormat, 'ymd');

		$weekbegindate = tesAddDate($weekenddate, -6);

		$TH = array('users_id' => $user,
					'projects_id' => $project,
					'weekenddate' => $weekenddate,
					'weekbegindate' => $weekbegindate);

		$str = '';

		$str .= $this->makeHeaderBlock($TH);
		$str .= "\n<table id = 'report'>";
		$str .= $this->makeColHeading($TH);
		$str .= $this->makeDetailBlock($TH);
		$str .= "\n</table>";

		return $str;
	}

	protected function getHeaderRec($TH)
	{
		$DbObj = new dbObj();
		$query = "select users.fullname as UserName
					from users
					where users_id = '{$TH['users_id']}'";

		$dataset = $DbObj->getDatabyQuery($query);
		return $dataset[0];
	}


	protected function getDetailRecs($TH)
	{
		$DbObj = new dbObj();
		if ($TH['projects_id'] == '')
			$query = "select times.workdate as workdate,
							 projects.name as project, 
							 tasks.name as task, 
							 times.nonbillablehours as nonbillablehours, 
							 times.billablehours as billablehours,
							 times.nonbillablehours + times.billablehours as totalhours, 
							 times.description as description
						from times, projects, tasks 
						where times.projects_id = projects.projects_id
							and times.tasks_id = tasks.tasks_id
							and times.workdate >= '{$TH['weekbegindate']}'
							and times.workdate <= '{$TH['weekenddate']}'
						order by times.workdate, times.projects_id, times.tasks_id";
		else 
			$query = "select times.workdate as workdate,
							 projects.name as project, 
							 tasks.name as task, 
							 times.nonbillablehours as nonbillablehours, 
							 times.billablehours as billablehours,
							 times.nonbillablehours + times.billablehours as totalhours, 
							 times.description as description
						from times, projects, tasks 
						where times.projects_id = projects.projects_id
							and times.tasks_id = tasks.tasks_id
							and times.projects_id = '{$TH['projects_id']}'
							and times.workdate >= '{$TH['weekbegindate']}'
							and times.workdate <= '{$TH['weekenddate']}'
						order by times.workdate, times.projects_id, times.tasks_id";

		$dataset = $DbObj->getDatabyQuery($query);
		return $dataset;
	}


	protected function makeHeaderBlock($TH)
	{
		$dateFormat = getUserDateFormat();

		$satdate = cvtDateIso2Dsp($TH['weekenddate'], $dateFormat);
		$sundate = cvtDateIso2Dsp($TH['weekbegindate'], $dateFormat);
		
		$DbObj = new dbObj();
		$headerRec = $this->getHeaderRec($TH);
		$companyRec = $DbObj->getCompanyRec();
		$ReportFunc = new ReportFunctions();
		$CA = $ReportFunc->ProjectCompanyAddress($TH['projects_id']);

		$str = '';
		$str .= "<h1>{$CA['name']}</h1>";
		$str .= "<h2>{$CA['address1']}";
		if ($CA['address2'] <> '')
			$str .= ", {$CA['address2']}";
		$str .= "<br />{$CA['city']}, {$CA['state']}-{$CA['postalcode']}</h2>";
		
		$str .= "<h1>".changeLiteral('Weekly Personal Time Report')."</h1>";
		$str .= "\n<table id = 'report'>";

		$str .= "<tr>";
		$str .= "<td class='noborder'>".changeLiteral('Consultant').":</td><td class='noborder'><strong>{$headerRec['UserName']}</strong></td>";
		$str .= "</tr>";

		$str .= "<tr>";
		$str .= "<td class='noborder'>".changeLiteral('Period').":</td><td class='noborder'>".changeLiteral('From')." <strong>$sundate</strong> ".changeLiteral('to')." <strong>$satdate</strong></td>";
		$str .= "</tr>";

		$str .= "</table>";

		return $str;
	}


	protected function makeColHeading($EH)
	{
		return
			"\n<tr>
				<td style='text-align: left;'>".changeLiteral('Date')."</td>
				<td style='text-align: center;'>".changeLiteral('Project')."</td>
				<td style='text-align: center;'>".changeLiteral('Task')."</td>
				<td style='text-align: center;'>".changeLiteral('Billable Hours')."</td>
				<td style='text-align: center;'>".changeLiteral('Non-billable Hours')."</td>
				<td style='text-align: center;'>".changeLiteral('Total Hours')."</td>
				<td style='text-align: center;'>".changeLiteral('Description')."</td>
			</tr>";
	}


	protected function makeDetailBlock($TH)
	{
		$Total_nonbillablehours = 0;
		$Total_billablehours = 0;
		$Total_totalhours = 0;

		$str = '';
		$dataset = $this->getDetailRecs($TH);

		foreach ($dataset as $row)
		{
			$str .= $this->makeDetailLine($row['workdate'], $row['project'], $row['task'], $row['nonbillablehours'], $row['billablehours'], $row['totalhours'], $row['description']);

			$Total_nonbillablehours += $row['nonbillablehours'];
			$Total_billablehours += $row['billablehours'];
			$Total_totalhours += $row['totalhours'];

		}

		$str .= $this->makeDetailLine('', changeLiteral('Weekly Total'), '', $Total_nonbillablehours, $Total_billablehours, $Total_totalhours, '');

		return $str;
	}


	protected function makeDetailLine($workdate, $project, $task, $nonbillablehours, $billablehours, $totalhours, $description)
	{
		$dateFormat = getUserDateFormat();

		if ($workdate <>'')
		$workdate = cvtDateIso2Dsp($workdate, $dateFormat);

		$nonbillablehours = sprintf("%01.2f", $nonbillablehours);
		$billablehours = sprintf("%01.2f", $billablehours);
		$totalhours = sprintf("%01.2f", $totalhours);

		if ($nonbillablehours == 0) $nonbillablehours = '';
		if ($billablehours == 0) $billablehours = '';
		if ($totalhours == 0) $totalhours = '';
		
		
		return
			"<tr>
			{$this->printField($workdate, 'text-align: left;', 'textField')}
			{$this->printField($project, 'text-align: left;', 'textField')}
			{$this->printField($task, 'text-align: left;', 'textField')}
			{$this->printField($billablehours, 'text-align: right;', 'textField')}
			{$this->printField($nonbillablehours, 'text-align: right;', 'textField')}
			{$this->printField($totalhours, 'text-align: right;', 'textField')}
			{$this->printField($description, 'text-align: left;', 'textField')}
			</tr>";
	}



}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" media="all"
	href="../css/tesglobal.css">
<title>Time and Expense Management System</title>

</head>

<body>
<?php
$report = new Report();
echo $report->printReport();
?>

<input type='button' value='Print' onclick='window.print()'>
<input type='button' value='Go Back' onclick='window.history.go(-1)'>

</body>

</html>
Return current item: TEMS -Time and Expense Management System