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"> </span><span class="boxTitleCorner"> </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> <td> <p>Now we are going to run a test of the import. Please press the Preview button below to start. The results will be displayed below.</p>
*/ 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!"); debug_message($task->getLastError()); } if($project->get($task->project_id) === FALSE){
require_once('includes/SI_Account.php'); require_once('includes/SI_Payment.php'); require_once('includes/SI_Invoice.php'); checkLogin(); if(!isset($_REQUEST['mode']) || empty($_REQUEST['mode'])){ fatal_error("Export mode must be specified!"); }elseif(strtolower($_REQUEST['mode']) == 'company'){ $company = new SI_Company(); $output = $company->exportQB(); if($output === FALSE){ fatal_error("Error getting company export data!\n".$company->getLastError()); } }elseif(strtolower($_REQUEST['mode']) == 'item_code'){ $code = new SI_ItemCode(); $output = $code->exportQB(); if($output === FALSE){ fatal_error("Error getting item code export data!\n".$code->getLastError()); } }elseif(strtolower($_REQUEST['mode']) == 'account'){ $account = new SI_Account(); $output = $account->exportQB(); if($output === FALSE){ fatal_error("Error getting account export data!\n".$account->getLastError()); } }elseif(strtolower($_REQUEST['mode']) == 'payment'){ $payment = new SI_Payment(); $output = $payment->exportQB(); if($output === FALSE){ fatal_error("Error getting payment export data!\n".$payment->getLastError());
</table> </div> </div> <?}else{?> <div class="tableContainer"> <a href="javascript:;" class="tCollapse" onclick="toggleGrid(this)"><img src="images/arrow_down.jpg" alt="Hide table" /><?php echo $title; ?> </a><div> <table border="0" cellspacing="0" cellpadding="0" class="form_table"> <tr> <td class="form_field_header_cell">Item Code:</td> <td class="form_field_cell"> <select name="item_code_id" id="item_code_id" class="input_text" onchange="updateTaxRate()"> <?php echo SI_ItemCode::getSelectTags($company_price->item_code_id); ?> </select> </td> </tr> <tr> <td class="form_field_header_cell">Price:</td> <td class="form_field_cell"><input name="price" class="input_text" size="10" type="text" value="<?php echo $company_price->price; ?> "></td> </tr> <tr id="tax_rate_row"> <td class="form_field_header_cell">Tax Rate:</td> <td class="form_field_cell"> <span id="tax_field" style="display: none;"><input name="tax_rate" id="tax_rate" class="input_text" size="10" type="text" value="<?php
* 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, 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_User.php'); checkLogin("admin"); require_once('includes/SI_ItemCode.php'); $item_code = new SI_ItemCode(); $item_codes = $item_code->retrieveSet("ORDER BY code"); if($item_codes === FALSE){ $error_msg .= "Error getting item_codes!\n"; debug_message($item_code->getLastError()); } $title = "Item Code Administration"; require('header.php') ?> <div class="tableContainer"> <a href="javascript:;" class="tCollapse" onclick="toggleGrid(this)"><img src="images/arrow_down.jpg" alt="Hide table" />Item Codes</a><div> <div class="gridToolbar"> <a href="item_code.php?mode=add" style="background-image:url(images/new_invoice.png);">New Item Code</a> </div> <table border="0" cellspacing="0" cellpadding="0">
function importGetItemCodes() { 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']; $item_codes = $importer->getItemCodes(); $html = ""; foreach ($item_codes 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_ItemCode::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'); 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]; // var_dump($task_activity);
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; } } else {
function getItemCode(){ if($this->item_code_id <= 0){ $this->error = "SI_TaskActivity::getItemCode(): Item Code id is not set"; return FALSE; } if($this->_item_code == FALSE){ $ic = new SI_ItemCode(); if($ic->get($this->item_code_id) === FALSE){ $this->error = "SI_TaskActivity::getItemCode(): Error getting item code {$this->item_code_id}: ".$ic->getLastError(); return FALSE; } $this->_item_code =& $ic; } return $this->_item_code; }
if(!move_uploaded_file($_FILES['iif_file']['tmp_name'], $dest_file)){ $error_msg .= "Could not move uploaded file!"; }else{ $data = $importer->import($dest_file); if($data === FALSE){ $error_msg .= "Error importing file!"; debug_message($importer->getLastError()); } $company = new SI_Company(); if($company->importQB($data) === FALSE){ $error_msg .= "Error importing company data!"; debug_message($company->getLastError()); } $code = new SI_ItemCode(); if($code->importQB($data) === FALSE){ $error_msg .= "Error importing item code data!"; debug_message($code->getLastError()); } $account = new SI_Account(); if($account->importQB($data) === FALSE){ $error_msg .= "Error importing account data!"; debug_message($account->getLastError()); } } } ?> <? require('header.php'); ?>
<td class="form_field_cell"> <select name="company_id" class="input_text"> <option value="0">None</option> <?php echo SI_Company::getSelectTags($project->company_id); ?> </select> </td> </tr> <tr> <td class="form_field_header_cell">Default Item Code:</td> <td class="form_field_cell"> <select name="default_item_code_id" class="input_text"> <option value="0">None</option> <?php echo SI_ItemCode::getSelectTags($project->default_item_code_id); ?> </select> </td> </tr> <tr> <td class="form_field_header_cell">Due:</td> <td class="form_field_cell"> <input type="text" class="input_text" name="due_ts" id="due_ts" SIZE="10" value="<?php echo $project->due_ts > 0 ? date("n/j/Y", $project->due_ts) : ''; ?> "> <a href="javascript:;" onclick="Uversa.SureInvoice.Calendar.show('due_ts')"><img width="16" height="16" border="0" src="images/dynCalendar.gif"/></a> </td> </tr> <tr>
echo $_SERVER['PHP_SELF']; ?> " METHOD="GET"> <div class="tableContainer"> <a href="javascript:;" class="tCollapse" onclick="toggleGrid(this)"><img src="images/arrow_down.jpg" alt="Hide table" /><?php echo $title; ?> </a><div> <table border="0" cellspacing="0" cellpadding="0" class="form_table"> <tr> <td class="form_field_header_cell">Item Code:</td> <td class="form_field_cell"> <select name="item_code_id" id="item_code_id" class="input_text"> <option value="0">All Item Codes</option> <?php echo SI_ItemCode::getSelectTags($item_code_id); ?> </select> </td> </tr> <tr> <td class="form_field_header_cell">Start:</td> <td class="form_field_cell"> <input type="text" class="input_text" name="start" id="start" SIZE="10" value="<?php echo date("n/j/Y", $start_ts); ?> "> <a href="javascript:;" onclick="Uversa.SureInvoice.Calendar.show('start')"><img width="16" height="16" border="0" src="images/dynCalendar.gif"/></a> </td> </tr> <tr>
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; }
<div id="SIAddTAPopup" style="visibility: hidden;"> <div class="box"> <div class="boxTitle"> <h3>Add Time</h3><span class="boxTitleRight"> </span><span class="boxTitleCorner"> </span> </div> <div class="boxContent"> <form action="json.php/addTaskActivity" method="POST"> <table border="0" cellspacing="10" cellpadding="0" class="form_table"> <tr> <td> <input type="hidden" name="ta_popup_task_id" id="ta_popup_task_id" value=""> <input type="text" class="siACInput" name="ta_popup_task_name" id="ta_popup_task_name" SIZE="50" value=""><br /> <div id="ta_popup_ac_container" class="siACContainer"></div> <select name="ta_popup_item_code_id" id="ta_popup_item_code_id" CLASS="input_text"> <?php echo SI_ItemCode::getSelectTags(); ?> </select><br> <input type="text" class="input_text" name="ta_popup_start_ts[date]" id="ta_popup_start_ts_date" SIZE="10" autocomplete="off"> <a href="javascript:;" onclick="Uversa.SureInvoice.Calendar.show('ta_popup_start_ts_date', 'SIAddTAPopup', 'ta_popup_end_ts_date')"><img width="16" height="16" border="0" src="images/dynCalendar.gif"/></a> <input type="text" class="input_text" name="ta_popup_start_ts[time]" id="ta_popup_start_ts_time" SIZE="7" autocomplete="off"> <a href="javascript:;" onclick="Uversa.SureInvoice.Calendar.currentTime('ta_popup_start_ts_date', 'ta_popup_start_ts_time', 'ta_popup_end_ts_date', 'ta_popup_end_ts_time')"><img width="16" height="16" border="0" src="images/set_time.gif"/></a> <br/> <input type="text" class="input_text" name="ta_popup_end_ts[date]" id="ta_popup_end_ts_date" SIZE="10" autocomplete="off"> <a href="javascript:;" onclick="Uversa.SureInvoice.Calendar.show('ta_popup_end_ts_date', 'SIAddTAPopup')"><img width="16" height="16" border="0" src="images/dynCalendar.gif"/></a> <input type="text" class="input_text" name="ta_popup_end_ts[time]" id="ta_popup_end_ts_time" SIZE="7" autocomplete="off"> <a href="javascript:;" onclick="Uversa.SureInvoice.Calendar.currentTime('ta_popup_end_ts_date', 'ta_popup_end_ts_time')"><img width="16" height="16" border="0" src="images/set_time.gif"/></a> <br/> </td> <td valign="top" class="form_field_cell"> <textarea name="ta_popup_text" id="ta_popup_text" CLASS="input_text" COLS="45" ROWS="5"></textarea> </td> </tr>
function soap_get_item_codes($username, $password) { $user = auth_user($username, $password); if ($user === FALSE) { return new soap_fault('Client', '', 'Access Denied'); } $ic = new SI_ItemCode(); $ics = $ic->retrieveSet(" ORDER BY code "); return object_to_data($ics, array('id', 'code', 'description')); }
function getCodeName($ic_id = null, $long = false){ if(is_null($ic_id)){ $ic_id = $this->id; } $ic = new SI_ItemCode(); $results = $ic->retrieveSet('WHERE id = '.$ic_id, true); if($results == false){ $this->error = "Error looking up item code: ".$ic->getLastError(); return FALSE; } $name = ''; foreach($results as $row){ $name = $row['code']; if($long){ $name .= ' - '.$row['description']; } } return $name; }
echo $_REQUEST['id']; ?> &item_code_id=<?php echo $item_codes[$i]->id; ?> "><img src="images/delete.gif" width="16" height="16" alt="Delete Item Code" title="Delete Item Code" border="0" /></a> </td> </tr> <? }?> </tbody> <tr> <td colspan="3" class="dg_data_cell_1"> <select name="new_item_code_id"> <option value="0">Select Item Code...</option> <?php echo SI_ItemCode::getSelectTags(NULL, $rate_structure->item_code_ids); ?> </select> <input type="submit" class="button" name="save" value="Add"> </td> </tr> </table> </div> </div> <div class="tableContainer"> <a href="javascript:;" class="tCollapse" onclick="toggleGrid(this)"><img src="images/arrow_down.jpg" alt="Hide table" />Structure Lines</a><div> <table border="0" cellspacing="0" cellpadding="0" class="dg_table"> <tr> <th class="dg_header_cell"><a class="link1" href="" onclick="return sortTable('bodyId', 0, 1, false)">Low</a></th> <th class="dg_header_cell"><a class="link1" href="" onclick="return sortTable('bodyId', 1, 0, false)">High</a></th> <th class="dg_header_cell"><a class="link1" href="" onclick="return sortTable('bodyId', 2, 0, false)">Discount/Hour</a></th>
* */ 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"); }
} if(isset($_POST['save2'])){ $output = ''; if(isset($_POST['export_companies']) && is_array($_POST['export_companies'])){ $company = new SI_Company(); $company_output = $company->exportQB("WHERE id IN (".join(',', $_POST['export_companies']).")"); if($company_output === FALSE){ fatal_error("Error getting company export data!\n".$company->getLastError()); }else{ $output .= $company_output; } } if(isset($_POST['export_item_codes']) && is_array($_POST['export_item_codes'])){ $item_code = new SI_ItemCode(); $item_code_output = $item_code->exportQB("WHERE id IN (".join(',', $_POST['export_item_codes']).")"); if($item_code_output === FALSE){ fatal_error("Error getting item_code export data!\n".$item_code->getLastError()); }else{ $output .= $item_code_output; } } if(isset($_POST['export_accounts']) && is_array($_POST['export_accounts'])){ $account = new SI_Account(); $account_output = $account->exportQB("WHERE id IN (".join(',', $_POST['export_accounts']).")"); if($account_output === FALSE){ fatal_error("Error getting account export data!\n".$account->getLastError()); }else{ $output .= $account_output;