From 6f6512e1d85460b13910a3ce0e081750ae9a5642 Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Fri, 7 Dec 2018 14:02:20 +0000 Subject: [PATCH] A bit more refactoring in invoices. --- WEB-INF/lib/ttInvoiceHelper.class.php | 42 +++++++++++++++------------ WEB-INF/templates/footer.tpl | 2 +- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/WEB-INF/lib/ttInvoiceHelper.class.php b/WEB-INF/lib/ttInvoiceHelper.class.php index 78987b40..ff4a9f29 100644 --- a/WEB-INF/lib/ttInvoiceHelper.class.php +++ b/WEB-INF/lib/ttInvoiceHelper.class.php @@ -311,9 +311,11 @@ class ttInvoiceHelper { // createInvoice - marks items for invoice as belonging to it (with its reference number). static function createInvoice($fields) { - - $mdb2 = getConnection(); global $user; + $mdb2 = getConnection(); + + $group_id = $user->getGroup(); + $org_id = $user->org_id; $name = $fields['name']; if (!$name) return false; @@ -332,8 +334,8 @@ class ttInvoiceHelper { if (isset($fields['project_id'])) $project_id = (int) $fields['project_id']; // Create a new invoice record. - $sql = "insert into tt_invoices (group_id, org_id, name, date, client_id) values(". - $user->getGroup().", $user->org_id, ".$mdb2->quote($name).", ".$mdb2->quote($date).", $client_id)"; + $sql = "insert into tt_invoices (group_id, org_id, name, date, client_id)". + " values($group_id, $org_id, ".$mdb2->quote($name).", ".$mdb2->quote($date).", $client_id)"; $affected = $mdb2->exec($sql); if (is_a($affected, 'PEAR_Error')) return false; @@ -343,23 +345,25 @@ class ttInvoiceHelper { // Our update sql is different depending on tracking mode. if (MODE_TIME == $user->getTrackingMode()) { // In "time only" tracking mode there is a single user rate. - $sql = "update tt_log l - left join tt_users u on (u.id = l.user_id) - set l.invoice_id = $last_id - where l.status = 1 and l.client_id = $client_id and l.invoice_id is NULL - and l.date >= ".$mdb2->quote($start)." and l.date <= ".$mdb2->quote($end)." - and l.billable = 1"; // l.billable * u.rate * time_to_sec(l.duration)/3600 > 0"; // See explanation below. + $sql = "update tt_log l". + " left join tt_users u on (u.id = l.user_id)". + " set l.invoice_id = $last_id". + " where l.status = 1 and l.client_id = $client_id and l.invoice_id is null". + " and l.group_id = $group_id and l.org_id = $org_id". + " and l.date >= ".$mdb2->quote($start)." and l.date <= ".$mdb2->quote($end). + " and l.billable = 1"; // l.billable * u.rate * time_to_sec(l.duration)/3600 > 0"; // See explanation below. } else { // sql part for project id. if ($project_id) $project_part = " and l.project_id = $project_id"; // When we have projects, rates are defined for each project in tt_user_project_binds. - $sql = "update tt_log l - left join tt_user_project_binds upb on (upb.user_id = l.user_id and upb.project_id = l.project_id) - set l.invoice_id = $last_id - where l.status = 1 and l.client_id = $client_id $project_part and l.invoice_id is NULL - and l.date >= ".$mdb2->quote($start)." and l.date <= ".$mdb2->quote($end)." - and l.billable = 1"; // l.billable * upb.rate * time_to_sec(l.duration)/3600 > 0"; + $sql = "update tt_log l". + " left join tt_user_project_binds upb on (upb.user_id = l.user_id and upb.project_id = l.project_id)". + " set l.invoice_id = $last_id". + " where l.status = 1 and l.client_id = $client_id $project_part and l.invoice_id is null". + " and l.group_id = $group_id and l.org_id = $org_id". + " and l.date >= ".$mdb2->quote($start)." and l.date <= ".$mdb2->quote($end). + " and l.billable = 1"; // l.billable * upb.rate * time_to_sec(l.duration)/3600 > 0"; // Users with a lot of clients and projects (Jaro) may forget to set user rates properly. // Specifically, user rate may be set to 0 on a project, by mistake. This leads to error.no_invoiceable_items // and increased support cost. Commenting out allows us to include 0 cost items in invoices so that @@ -374,8 +378,10 @@ class ttInvoiceHelper { // sql part for project id. if ($project_id) $project_part = " and project_id = $project_id"; - $sql = "update tt_expense_items set invoice_id = $last_id where client_id = $client_id $project_part and invoice_id is NULL - and date >= ".$mdb2->quote($start)." and date <= ".$mdb2->quote($end)." and cost <> 0 and status = 1"; + $sql = "update tt_expense_items set invoice_id = $last_id". + " where client_id = $client_id $project_part and invoice_id is null". + " and group_id = $group_id and org_id = $org_id". + " and date >= ".$mdb2->quote($start)." and date <= ".$mdb2->quote($end)." and cost <> 0 and status = 1"; $affected = $mdb2->exec($sql); return (!is_a($affected, 'PEAR_Error')); } diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index fafccace..1168961f 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.18.29.4603 | Copyright © Anuko | +  Anuko Time Tracker 1.18.29.4604 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} -- 2.20.1