}
}
+ // The markApproved marks a set of records as either approved or unapproved.
+ static function markApproved($time_log_ids, $expense_item_ids, $approved = true) {
+ global $user;
+ $mdb2 = getConnection();
+
+ $group_id = $user->getGroup();
+ $org_id = $user->org_id;
+
+ $approved_val = (int) $approved;
+ if ($time_log_ids) {
+ $sql = "update tt_log set approved = $approved_val".
+ " where id in(".join(', ', $time_log_ids).") and group_id = $group_id and org_id = $org_id";
+ $affected = $mdb2->exec($sql);
+ if (is_a($affected, 'PEAR_Error')) die($affected->getMessage());
+ }
+ if ($expense_item_ids) {
+ $sql = "update tt_expense_items set approved = $approved_val".
+ " where id in(".join(', ', $expense_item_ids).") and group_id = $group_id and org_id = $org_id";
+ $affected = $mdb2->exec($sql);
+ if (is_a($affected, 'PEAR_Error')) die($affected->getMessage());
+ }
+ }
+
// The markPaid marks a set of records as either paid or unpaid.
static function markPaid($time_log_ids, $expense_item_ids, $paid = true) {
global $user;
$body .= '<td style="'.$tableHeader.'">'.$i18n->get('label.note').'</td>';
if ($options['show_cost'])
$body .= '<td style="'.$tableHeaderCentered.'" width="5%">'.$i18n->get('label.cost').'</td>';
+ if ($options['show_approved'])
+ $body .= '<td style="'.$tableHeaderCentered.'" width="5%">'.$i18n->get('label.approved').'</td>';
if ($options['show_paid'])
$body .= '<td style="'.$tableHeaderCentered.'" width="5%">'.$i18n->get('label.paid').'</td>';
if ($options['show_ip'])
$body .= '<td style="'.$tableHeaderCentered.'" width="5%">'.$i18n->get('label.ip').'</td>';
if ($options['show_invoice'])
$body .= '<td style="'.$tableHeader.'">'.$i18n->get('label.invoice').'</td>';
+ if ($options['show_timesheet'])
+ $body .= '<td style="'.$tableHeader.'">'.$i18n->get('label.timesheet').'</td>';
$body .= '</tr>';
// Initialize variables to print subtotals.
$body .= ($canViewReports || $isClient) ? $subtotals[$prev_grouped_by]['cost'] : $subtotals[$prev_grouped_by]['expenses'];
$body .= '</td>';
}
+ if ($options['show_approved']) $body .= '<td></td>';
if ($options['show_paid']) $body .= '<td></td>';
if ($options['show_ip']) $body .= '<td></td>';
if ($options['show_invoice']) $body .= '<td></td>';
+ if ($options['show_timesheet']) $body .= '<td></td>';
$body .= '</tr>';
$body .= '<tr><td> </td></tr>';
}
$body .= '<td style="'.$cellLeftAligned.'">'.htmlspecialchars($record['note']).'</td>';
if ($options['show_cost'])
$body .= '<td style="'.$cellRightAligned.'">'.$record['cost'].'</td>';
+ if ($options['show_approved']) {
+ $body .= '<td style="'.$cellRightAligned.'">';
+ $body .= $record['approved'] == 1 ? $i18n->get('label.yes') : $i18n->get('label.no');
+ $body .= '</td>';
+ }
if ($options['show_paid']) {
$body .= '<td style="'.$cellRightAligned.'">';
$body .= $record['paid'] == 1 ? $i18n->get('label.yes') : $i18n->get('label.no');
}
if ($options['show_invoice'])
$body .= '<td style="'.$cellRightAligned.'">'.htmlspecialchars($record['invoice']).'</td>';
+ if ($options['show_timesheet'])
+ $body .= '<td style="'.$cellRightAligned.'">'.htmlspecialchars($record['timesheet']).'</td>';
$body .= '</tr>';
$prev_date = $record['date'];
$body .= ($canViewReports || $isClient) ? $subtotals[$cur_grouped_by]['cost'] : $subtotals[$cur_grouped_by]['expenses'];
$body .= '</td>';
}
+ if ($options['show_approved']) $body .= '<td></td>';
if ($options['show_paid']) $body .= '<td></td>';
if ($options['show_ip']) $body .= '<td></td>';
if ($options['show_invoice']) $body .= '<td></td>';
+ if ($options['show_timesheet']) $body .= '<td></td>';
$body .= '</tr>';
}
$body .= ($canViewReports || $isClient) ? $totals['cost'] : $totals['expenses'];
$body .= '</td>';
}
+ if ($options['show_approved']) $body .= '<td></td>';
if ($options['show_paid']) $body .= '<td></td>';
if ($options['show_ip']) $body .= '<td></td>';
if ($options['show_invoice']) $body .= '<td></td>';
+ if ($options['show_timesheet']) $body .= '<td></td>';
$body .= '</tr>';
$body .= '</table>';
$options['invoice'] = $bean->getAttribute('invoice');
$options['paid_status'] = $bean->getAttribute('paid_status');
$options['approved'] = $bean->getAttribute('approved');
+ if ($user->isPluginEnabled('ap') && $user->isClient() && !$user->can('view_client_unapproved'))
+ $options['approved'] = 1; // Restrict clients to approved records only.
$options['timesheet'] = $bean->getAttribute('timesheet');
- if ($user->isPluginEnabled('ts') && $user->isClient() && !$user->can('view_client_unapproved'))
- $options['timesheet'] = TIMESHEET_APPROVED; // Restrict clients to approved timesheet records only.
if (is_array($bean->getAttribute('users'))) $options['users'] = join(',', $bean->getAttribute('users'));
$options['period'] = $bean->getAttribute('period');
$options['period_start'] = $bean->getAttribute('start_date');