A bit more refactoring in invoices.
authorNik Okuntseff <support@anuko.com>
Fri, 7 Dec 2018 14:02:20 +0000 (14:02 +0000)
committerNik Okuntseff <support@anuko.com>
Fri, 7 Dec 2018 14:02:20 +0000 (14:02 +0000)
WEB-INF/lib/ttInvoiceHelper.class.php
WEB-INF/templates/footer.tpl

index 78987b4..ff4a9f2 100644 (file)
@@ -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'));
   }
index fafccac..1168961 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.18.29.4603 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.18.29.4604 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>