* You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 * http://www.gnu.org/copyleft/gpl.html
 *
 */
require_once('includes/common.php');
require_once('includes/SI_Project.php');
require_once('includes/SI_Task.php');
require_once('includes/SI_TaskActivity.php');
require_once('includes/SI_PaymentSchedule.php');

checkLogin();

$project = new SI_Project();
$task = new SI_Task();
$ta = new SI_TaskActivity();
$activities = array();

if(!empty($_REQUEST['task_id'])){
	$task->get($_REQUEST['task_id']);
	$project->get($task->project_id);
	if(!$project->hasRights(PROJECT_RIGHT_VIEW)){
		fatal_error('Insufficent access rights for this project!');
	}
	$activities = $ta->retrieveSet("task_id = ".$task->id);
	if($activities === FALSE){
		$error_msg .= "Error getting list of task time!\n";
		debug_message($ta->getLastError());
	}
}else{
Exemple #2
0
             $output['error'] = 'Invalid parameters for findTasks action';
             break;
         }
     } else {
         $tasks = $task->findTasks($params[0]);
     }
     if ($tasks === false) {
         $output['error'] = $task->getLastError();
     } else {
         $output['tasks'] = $tasks;
     }
     break;
 case 'addTaskActivity':
     $project = new SI_Project();
     $company = new SI_Company();
     $task = new SI_Task();
     $item_code = new SI_ItemCode();
     $task_activity = new SI_TaskActivity();
     $task_activity->start_ts = getTSFromInput($_POST['ta_popup_start_ts']['date'], $_POST['ta_popup_start_ts']['time']);
     $task_activity->end_ts = getTSFromInput($_POST['ta_popup_end_ts']['date'], $_POST['ta_popup_end_ts']['time']);
     $task_activity->task_id = intval($_POST['ta_popup_task_id']);
     $task_activity->user_id = $loggedin_user->id;
     $task_activity->text = $_POST['ta_popup_text'];
     $task_activity->item_code_id = $_POST['ta_popup_item_code_id'];
     $debug_info = "\n\t\t\tPOST = " . print_r($_POST, true) . "\n\n\t\t\tstart_ts = {$task_activity->start_ts}\n\n\t\t\tend_ts = {$task_activity->end_ts}\n\n\t\t\ttask_id = {$task_activity->task_id}\n\n\t\t\tuser_id = {$task_activity->user_id}\n\n\t\t\titem_code_id = {$task_activity->item_code_id}\n\n\t\t\ttext = {$task_activity->text}\n\n\t\t";
     $output['debug'] = $debug_info;
     if ($task_activity->task_id > 0 || $task_activity->start_ts > 0 || $task_activity->end_ts > 0) {
         if ($task_activity->task_id <= 0 || $task_activity->start_ts <= 0 || $task_activity->end_ts <= 0) {
             $output['error'] = "Skipping incomplete entry\n";
             break;
         }
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 * http://www.gnu.org/copyleft/gpl.html
 *
 */
require_once('includes/common.php');
checkLogin();

require_once('includes/SI_Project.php');
require_once('includes/SI_Task.php');
require_once('includes/SI_TaskActivity.php');
require_once('includes/SI_Expense.php');
require_once('includes/SI_ItemCode.php');

$title = '';
$task_activity = new SI_TaskActivity();
$task = new SI_Task();
$project = new SI_Project();
$user = new SI_User();
$item_code = new SI_ItemCode();
$disabled = false;

if($_REQUEST['mode'] == 'add'){
	$title = "Add Time Entry";
	if(empty($_REQUEST['task_id'])){
		fatal_error("No Task ID specified!\n");
	}else{
		$task_activity->task_id = $_REQUEST['task_id'];
		$task_activity->completed_ts = time();
		$task_activity->user_id = $loggedin_user->id;
		if($task->get($task_activity->task_id) === FALSE){
			fatal_error("Could not retreive task!");
 * http://www.gnu.org/copyleft/gpl.html
 *
 */
require_once('includes/common.php');
checkLogin();

require_once('includes/SI_Project.php');
require_once('includes/SI_Task.php');
require_once('includes/SI_TaskStatus.php');
require_once('includes/SI_TaskItem.php');
require_once('includes/SI_TaskPriority.php');
require_once('includes/SI_SalesCommissionType.php');


$title = '';
$task = new SI_Task();
$project = new SI_Project();

if($_REQUEST['mode'] == 'add'){
	$title = "Add Task";
	$task->due_ts = '';
	if(empty($_REQUEST['project_id'])){
		fatal_error("Error: No Project ID specified!\n");
	}else{
		$task->project_id = $_REQUEST['project_id'];
		if($project->get($task->project_id) === FALSE){
			fatal_error("Could not retreive project!");
			debug_message($project->getLastError());
		}
		if(!$project->hasRights(PROJECT_RIGHT_EDIT)){
			fatal_error('Insufficent access rights for this project!');
require_once 'includes/common.php';
require_once 'includes/SI_Project.php';
require_once 'includes/SI_Company.php';
require_once 'includes/SI_Task.php';
checkLogin();
$company = new SI_Company();
$project = new SI_Project();
$title = "Create Project";
if ($_POST['save']) {
    $project->owner_id = $loggedin_user->id;
    $_POST['due_ts'] = getTSFromInput($_POST['due_ts']);
    $project->updateFromAssocArray($_POST);
    if ($project->add()) {
        foreach ($_POST['tasks'] as $task_data) {
            if (!empty($task_data['name'])) {
                $task = new SI_Task();
                $task->name = $task_data['name'];
                $task->billable = 'D';
                $task->task_status_id = $task_data['status'];
                $task->task_priority_id = $task_data['priority'];
                $task->project_id = $project->id;
                if (!$task->add()) {
                    $error_msg .= "Error adding task {$task_data['name']} to project\n";
                    debug_message($task->getLastError());
                }
            }
        }
        if (empty($error_msg)) {
            goBack();
        }
    } else {
if(isset($_POST['back'])){
	header("Location: ".getCurrentURL('time_import_4.php'));
	exit();
}

if(isset($_POST['save'])){
	header("Location: ".getCurrentURL('time_import_7.php'));
	exit();
}

if($_POST['preview']){
	$results = $importer->run();
}

//var_dump($importer);
$task = new SI_Task();
$user = new SI_User();
$ic = new SI_ItemCode();
?>
<? require('header.php'); ?>
<div class="box">
<div class="boxTitle"><h3><?php 
echo $title;
?>
</h3><span class="boxTitleRight">&nbsp;</span><span class="boxTitleCorner">&nbsp;</span></div><div class="boxContent">
<form name="time_import" action="<?php 
echo $_SERVER['PHP_SELF'];
?>
" METHOD="POST" ENCTYPE="multipart/form-data">
<table border="0" cellspacing="5" cellpadding="0" class="form_table">
<tr>
Exemple #7
0
function soap_get_tasks($username, $password)
{
    $user = auth_user($username, $password);
    if ($user === FALSE) {
        return new soap_fault('Client', '', 'Access Denied');
    }
    $task = new SI_Task();
    $tasks = $task->getTasks($user);
    if ($tasks == FALSE) {
        return new soap_fault('Server', '', $task->getLastError());
    }
    return object_to_data($tasks, array('id', 'project_id', 'name'));
}
$user = new SI_User();
if ($user->get($user_id) === FALSE) {
    $error_msg .= "Error getting user information!\n";
    debug_message($user->getLastError());
}
$balance = $user->getBalance();
if ($balance === FALSE) {
    $error_msg .= "Error getting your outstanding balance!";
    debug_message($loggedin_user->getLastError());
}
$transactions = $user->getTransactions(NULL, 5);
if ($transactions === FALSE) {
    $error_msg .= "Error getting your last 5 transactions!";
    debug_message($user->getLastError());
}
$task = new SI_Task();
$tasks = $task->getUpcoming($user->id, 0, 0, 10);
if ($tasks === FALSE) {
    $error_msg .= "Could not retrieve Upcoming Tasks!\n";
    debug_message($task->getLastError());
}
$title = "Home";
require 'header.php';
?>
<script>
function reloadPage(selObj){
	var user_id = selObj.options[selObj.selectedIndex].value;
	window.location.href = "<?php 
echo $_SERVER['PHP_SELF'];
?>
?filter=<?php 
Exemple #9
0
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 * http://www.gnu.org/copyleft/gpl.html
 *
 */
require_once('includes/common.php');
checkLogin();

require_once('includes/SI_Project.php');
require_once('includes/SI_Task.php');
require_once('includes/SI_TaskActivity.php');
require_once('includes/SI_ItemCode.php');

$title = '';
$task_activity = new SI_TaskActivity();
$task = new SI_Task();
$project = new SI_Project();
$item_code = new SI_ItemCode();
$num_entries = 5;

$title = "Add Time";
if($_POST['save']){

	for($i=0; $i<$num_entries; $i++){
		$task_activity = new si_taskactivity();
		$task_activity->start_ts = getTSFromInput($_POST[start_ts][$i]['date'], $_POST[start_ts][$i]['time']);
		$task_activity->end_ts = getTSFromInput($_POST[end_ts][$i]['date'], $_POST[end_ts][$i]['time']);
		$task_activity->task_id = intval($_POST['task_id'][$i]);
		$task_activity->user_id = $loggedin_user->id;
		$task_activity->text = $_POST['text'][$i];
		$task_activity->item_code_id = $_POST['item_code_id'][$i];
Exemple #10
0
if (!isset($_GET['d'])) {
    $_GET['d'] = date('d');
}
if ($loggedin_user->hasRight('admin') && isset($_REQUEST['user_id'])) {
    $user_id = $_REQUEST['user_id'];
} else {
    $user_id = $loggedin_user->id;
}
// Instantiate the Month class
$month = new Month($_GET['y'], $_GET['m'], "Sunday");
// Get the details of the months as timestamps
$last = $month->lastMonth(true);
$next = $month->nextMonth(true);
$thisMonth = $month->thisMonth(true);
// Get the task data
$task = new SI_Task();
$tasks = $task->getCalendarTasks($user_id, $thisMonth, $next, 'day');
if ($tasks === FALSE) {
    $error_msg .= "Could not retrieve Tasks!\n";
    debug_message($task->getLastError());
}
// Get the activity data
$ta = new SI_TaskActivity();
$activities = $ta->getCalendarActivities($user_id, $thisMonth, $next, 'day');
if ($activities === FALSE) {
    $error_msg .= "Could not retrieve activities!\n";
    debug_message($ta->getLastError());
}
// Make sure the current date is selected
$sDays = array(new Day(date('Y'), date('m'), date('d')));
// Build the days of the month
Exemple #11
0
	$user_id = $loggedin_user->id;
}

if($_REQUEST['filter'] == "all"){
	$projects = $project->getMyProjects($user_id, FALSE);
}else{
	$_REQUEST['filter'] = "pending";
	$projects = $project->getMyProjects($user_id, TRUE);
}

if($projects === FALSE){
	$error_msg .= "Could not retrieve your project list!\n";
	debug_message($project->getLastError());
}

$task = new SI_Task();
$tasks = $task->getUpcoming($user_id);
if($tasks === FALSE){
	$error_msg .= "Could not retrieve Upcoming Tasks!\n";
	debug_message($task->getLastError());
}

$company = new SI_Company();
$companies = $company->getCompanysWithBalance();
if($companies === FALSE){
	$error_msg .= "Could not retrieve Outstanding Hours list!\n";
	debug_message($company->getLastError());
}

$user = new SI_User();
$users = $user->getUnpaidUsers();
	function getTask(){
		if($this->task_id <= 0){
			$this->error = 	"SI_TaskActivity::getTask(): Task id is not set";
			return FALSE;
		}
		
		if($this->_task == FALSE){
			$task = new SI_Task();
			if($task->get($this->task_id) === FALSE){
				$this->error = "SI_TaskActivity::getTask(): Error getting task {$this->task_id}: ".$task->getLastError();
				return FALSE;
			}
			$this->_task =& $task;
		}

		return $this->_task;
	}
 function run($preview = true)
 {
     $results = array();
     if (is_readable($this->file)) {
         $handle = fopen($this->file, "r");
         $first_row = true;
         while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
             if ($first_row) {
                 $first_row = false;
                 continue;
             }
             // Process a row
             $result = array();
             $result['action'] = 'Import';
             $result['start_ts'] = strtotime($data[$this->column_mappings[SI_IMPORT_COLUMN_START]]);
             if (isset($this->column_mappings[SI_IMPORT_COLUMN_DURATION])) {
                 // Duration based import
                 $result['end_ts'] = $result['start_ts'] + floatval($data[$this->column_mappings[SI_IMPORT_COLUMN_DURATION]]) * 60 * 60;
             } else {
                 // Start and end time provided
                 $result['start_ts'] = strtotime($data[$this->column_mappings[SI_IMPORT_COLUMN_END]]);
             }
             if (isset($this->column_mappings[SI_IMPORT_COLUMN_COMMENTS])) {
                 $result['comments'] = $data[$this->column_mappings[SI_IMPORT_COLUMN_COMMENTS]];
             } else {
                 $results['comments'] = '';
             }
             $user = $data[$this->column_mappings[SI_IMPORT_COLUMN_USER]];
             $normalized_user = $this->normalize($user);
             if (empty($normalized_user)) {
                 $normalized_user = '******';
             }
             if ($this->users[$normalized_user]['action'] == SI_IMPORT_ACTION_SKIP) {
                 $result['user_id'] = 0;
                 $result['message'] = "Skipped because no user map for '{$user}' was configured";
                 $result['action'] = "Skip";
                 $results[] = $result;
                 continue;
             } else {
                 $result['user_id'] = $this->users[$normalized_user]['param'];
             }
             $task = $data[$this->column_mappings[SI_IMPORT_COLUMN_TASK]];
             $normalized_task = $this->normalize($task);
             if (empty($normalized_task)) {
                 $normalized_task = '_blank_';
             }
             if ($this->tasks[$normalized_task]['action'] == SI_IMPORT_ACTION_SKIP) {
                 $result['task_id'] = 0;
                 $result['message'] = "Skipped because no task map for '{$task}' was configured";
                 $result['action'] = "Skip";
                 $results[] = $result;
                 continue;
             } else {
                 $result['task_id'] = $this->tasks[$normalized_task]['param'];
             }
             $task = new SI_Task();
             $task->get($result['task_id']);
             $ic = $data[$this->column_mappings[SI_IMPORT_COLUMN_ITEMCODE]];
             $normalized_ic = $this->normalize($ic);
             if (empty($normalized_ic)) {
                 $normalized_ic = '_blank_';
             }
             if ($this->item_codes[$normalized_ic]['action'] == SI_IMPORT_ACTION_SKIP) {
                 $result['item_code_id'] = $task->getDefaultItemCode();
                 if ($result['item_code_id'] == 0) {
                     $result['message'] = "Skipped because no item code map for '{$ic}' was configured and no default item code exists for project";
                     $result['action'] = "Skip";
                     $results[] = $result;
                     continue;
                 } else {
                     $result['message'] = "Item Code retreived from project";
                 }
             } else {
                 $result['item_code_id'] = $this->item_codes[$normalized_ic]['param'];
             }
             if ($result['start_ts'] <= 0 || $result['end_ts'] <= 0) {
                 $result['message'] = "Invalid start or end time";
                 $result['action'] = "Skip";
                 $results[] = $result;
                 continue;
             }
             if ($result['start_ts'] > $result['end_ts']) {
                 $result['message'] = "Start Time is before end time";
                 $result['action'] = "Skip";
                 $results[] = $result;
                 continue;
             }
             if ($result['end_ts'] - $result['start_ts'] > 12 * 60 * 60) {
                 $result['message'] = "Length of time is too long, >12 hours";
                 $result['action'] = "Skip";
                 $results[] = $result;
                 continue;
             }
             $project = new SI_Project();
             $company = new SI_Company();
             $task = new SI_Task();
             $item_code = new SI_ItemCode();
             $task_activity = new SI_TaskActivity();
             $task_activity->start_ts = $result['start_ts'];
             $task_activity->end_ts = $result['end_ts'];
             $task_activity->task_id = $result['task_id'];
             $task_activity->user_id = $result['user_id'];
             $task_activity->text = $result['comments'];
             $task_activity->item_code_id = $result['item_code_id'];
             if ($task_activity->task_id > 0 || $task_activity->start_ts > 0 || $task_activity->end_ts > 0) {
                 if ($task_activity->task_id <= 0 || $task_activity->start_ts <= 0 || $task_activity->end_ts <= 0) {
                     $result['action'] = "Skip";
                     $result['message'] = "Skipping incomplete entry\n";
                     $results[] = $result;
                     continue;
                 }
             } else {
                 $result['action'] = "Skip";
                 $result['message'] = "Skipping incomplete entry\n";
                 $results[] = $result;
                 continue;
             }
             if ($task->get($task_activity->task_id) === FALSE) {
                 $result['action'] = "Skip";
                 $result['message'] = "Could not retreive task:\n" . $task->getLastError();
                 $results[] = $result;
                 continue;
             }
             if ($project->get($task->project_id) === FALSE) {
                 $result['action'] = "Skip";
                 $result['message'] = "Could not retreive project:\n" . $project->getLastError();
                 $results[] = $result;
                 continue;
             }
             $user = new SI_User();
             if ($user->get($task_activity->user_id) === FALSE) {
                 $result['action'] = "Skip";
                 $result['message'] = "Could not retreive user:\n" . $user->getLastError();
                 $results[] = $result;
                 continue;
             }
             $task_activity->hourly_cost = $user->hourly_rate;
             $company = $project->getCompany();
             if ($company === FALSE) {
                 $result['action'] = "Skip";
                 $result['message'] = "Could not get company information:\n" . $project->getLastError();
                 $results[] = $result;
                 continue;
             }
             $task_activity->hourly_rate = $item_code->getCompanyPrice($company->id, $task_activity->item_code_id);
             if ($task_activity->hourly_rate === FALSE) {
                 $result['action'] = "Skip";
                 $result['message'] = "Error getting price for this item code:\n" . $item_code->getLastError();
                 $results[] = $result;
                 continue;
             }
             $sct = $task->getSalesCommissionType();
             $task_activity->sales_com_type_id = $sct->id;
             if (!$preview) {
                 if (!$task_activity->add()) {
                     $result['action'] = "Skip";
                     $result['message'] = "Error adding Task Activity:\n" . $task_activity->getLastError();
                 }
             }
             $results[] = $result;
         }
     }
     return $results;
 }
Exemple #14
0
}
if (!isset($_GET['d'])) {
    $_GET['d'] = date('d');
}
if (!isset($_GET['h'])) {
    $_GET['h'] = date('H');
}
if ($loggedin_user->hasRight('admin') && isset($_REQUEST['user_id'])) {
    $user_id = $_REQUEST['user_id'];
} else {
    $user_id = $loggedin_user->id;
}
// Create a new day
$day = new Day($_GET['y'], $_GET['m'], $_GET['d']);
// Get the task data
$task = new SI_Task();
$tasks = $task->getCalendarTasks($user_id, $day->getTimestamp(), $day->getTimestamp() + 24 * 60 * 60, 'hour');
if ($tasks === FALSE) {
    $error_msg .= "Could not retrieve Tasks!\n";
    debug_message($task->getLastError());
}
// Get the activity data
$ta = new SI_TaskActivity();
$activities = $ta->getCalendarActivities($user_id, $day->getTimestamp(), $day->getTimestamp() + 24 * 60 * 60, 'hour');
if ($activities === FALSE) {
    $error_msg .= "Could not retrieve activities!\n";
    debug_message($ta->getLastError());
}
// Make sure the current date is selected
$sHours = array(new Hour(date('Y'), date('m'), date('d'), date('H')));
// Build the hour list for that day
Exemple #15
0
    function importGetTasks()
    {
        global $loggedin_user;
        if (!isLoggedIn()) {
            $this->error = "User not logged in.";
            return false;
        }
        if (!isset($_SESSION['SureInvoice']['TimeImport'])) {
            $this->error = "No import is currently in progress!";
            return false;
        }
        $importer = $_SESSION['SureInvoice']['TimeImport'];
        $tasks = $importer->getTasks();
        $html = "";
        foreach ($tasks as $normalized_name => $data) {
            $action_options = "\n\t<option value=" . SI_IMPORT_ACTION_SKIP . " " . selected(SI_IMPORT_ACTION_SKIP, intval($data['action'])) . ">Skip</option>\n\t<option value=" . SI_IMPORT_ACTION_MAP . " " . selected(SI_IMPORT_ACTION_MAP, intval($data['action'])) . ">Map</option>\n\t\t\t";
            $map_options = "<option value='0'>Unknown</option>" . SI_Task::getSelectTags($data['param']);
            $html .= <<<EOF
<tr>
\t<td>{$data['name']}</td>
\t<td><select name="actions[{$normalized_name}]">
\t\t{$action_options}
\t</select>
\t</td>
\t<td><select name="params[{$normalized_name}]">
\t\t{$map_options}
\t\t</select>
\t</td>
</tr>

EOF;
        }
        return $html;
    }
 * http://www.gnu.org/copyleft/gpl.html
 *
 */
require_once('includes/common.php');
require_once('includes/SI_PaymentSchedule.php');
require_once('includes/SI_CompanyTransaction.php');
require_once('includes/SI_Project.php');
require_once('includes/SI_Task.php');
require_once('includes/SI_ItemCode.php');

checkLogin('accounting');

$title = '';
$ps = new SI_PaymentSchedule();
$project = new SI_Project();
$task = new SI_Task();
$item_code = new SI_ItemCode();

// Clean up amount
if(!empty($_POST['amount'])){
	$_POST['amount'] = preg_replace('/[^0-9\.]/','', $_POST['amount']);
}

if($_REQUEST['mode'] == 'add'){
	$title = "Add Scheduled Billing";

	$project_id = intval($_REQUEST['project_id']);
	$task_id = intval($_REQUEST['task_id']);
	if($project_id == 0 && $task_id == 0){
		fatal_error("You must provide a task_id or project_id for this scheduled payment!\n");
	}
require_once('includes/SI_Project.php');
require_once('includes/SI_Task.php');
require_once('includes/SI_PaymentSchedule.php');

checkLogin();

$project = new SI_Project();
$tasks = array();

if(!empty($_REQUEST['id'])){
	$project->get($_REQUEST['id']);
	if(!$project->hasRights(PROJECT_RIGHT_VIEW)){
		fatal_error('Insufficent access rights for this project!');
	}

	$task = new SI_Task();
	if($_REQUEST['filter'] == "all"){
		$tasks = $task->retrieveSet("t.deleted = 'N' AND t.project_id = ".$project->id);
	}else{
		$tasks = $task->retrieveSet("t.deleted = 'N' AND t.project_id = ".$project->id." AND s.completed = 'N'");
	}
	if($tasks === FALSE){
		$error_msg .= "Error retrieving tasks for project!\n";
		debug_message($task->getLastError());
	}
}else{
	fatal_error("Project ID must be supplied!\n");
}

// Get this projects payment schedule
$ps = new SI_PaymentSchedule();