Added record selector to assign to invoice feature.
authorNik Okuntseff <support@anuko.com>
Thu, 25 Jan 2018 18:49:48 +0000 (18:49 +0000)
committerNik Okuntseff <support@anuko.com>
Thu, 25 Jan 2018 18:49:48 +0000 (18:49 +0000)
WEB-INF/templates/footer.tpl
WEB-INF/templates/report.tpl
report.php

index 1f11602..e03bbcc 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.17.4.3783 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.17.4.3784 | 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>
index e98e14c..4eac607 100644 (file)
   <tr>
     <td align="right">
       <table>
-        <tr><td>{$i18n.form.report.assign_to_invoice}: {$forms.reportForm.recent_invoice.control} {$forms.reportForm.btn_assign.control}</td></tr>
+        <tr><td>{$i18n.form.report.assign_to_invoice}: {$forms.reportForm.assign_invoice_select_options.control} {$forms.reportForm.recent_invoice.control} {$forms.reportForm.btn_assign.control}</td></tr>
       </table>
     </td>
   </tr>
index f1bca31..7bf0e2a 100644 (file)
@@ -44,6 +44,10 @@ if ($user->isPluginEnabled('ps')) {
   $cl_mark_paid_action_option = $request->getParameter('mark_paid_action_options', ($request->isPost() ? null : @$_SESSION['mark_paid_action_option']));
   $_SESSION['mark_paid_action_option'] = $cl_mark_paid_action_option;
 }
+if ($user->isPluginEnabled('iv')) {
+  $cl_assign_invoice_select_option = $request->getParameter('assign_invoice_select_options', ($request->isPost() ? null : @$_SESSION['assign_invoice_select_option']));
+  $_SESSION['assign_invoice_select_option'] = $cl_assign_invoice_select_option;
+}
 
 // Use custom fields plugin if it is enabled.
 if ($user->isPluginEnabled('cf')) {
@@ -85,6 +89,11 @@ if ($client_id && $bean->getAttribute('chinvoice') && ('no_grouping' == $bean->g
   // Client is selected and we are displaying the invoice column.
   $recent_invoices = ttTeamHelper::getRecentInvoices($user->team_id, $client_id);
   if ($recent_invoices) {
+    $assign_invoice_select_options = array('1'=>$i18n->getKey('dropdown.all'),'2'=>$i18n->getKey('dropdown.select'));
+    $form->addInput(array('type'=>'combobox',
+      'name'=>'assign_invoice_select_options',
+      'data'=>$assign_invoice_select_options,
+      'value'=>$cl_assign_invoice_select_option));
     $form->addInput(array('type'=>'combobox',
       'name'=>'recent_invoice',
       'data'=>$recent_invoices,
@@ -128,17 +137,28 @@ if ($request->isPost()) {
   }
 
   if ($request->getParameter('btn_assign')) {
-    // User clicked the Submit button to assign some items to a recent invoice.
-    foreach($_POST as $key => $val) {
-      if ('log_id_' == substr($key, 0, 7))
-        $time_log_ids[] = substr($key, 7);
-      if ('item_id_' == substr($key, 0, 8))
-        $expense_item_ids[] = substr($key, 8);
-      if ('recent_invoice' == $key)
-        $invoice_id = $val;
+    // User clicked the Submit button to assign all or some items to a recent invoice.
+
+    // Determine invoice id.
+    $invoice_id = $request->getParameter('recent_invoice');
+
+    // Obtain 2 arrays or record ids, one for log, another for expense items.
+    if (1 == $request->getParameter('assign_invoice_select_options')) {
+      // We are assigning all report items. Get the arrays from session.
+      $item_ids = ttReportHelper::getFromSession();
+      $time_log_ids = $item_ids['report_item_ids'];
+      $expense_item_ids = $item_ids['report_item_expense_ids'];
+    } else if (2 == $request->getParameter('assign_invoice_select_options')) {
+      // We are marking only selected items. Get the arrays from $_POST.
+      foreach($_POST as $key => $val) {
+        if ('log_id_' == substr($key, 0, 7))
+          $time_log_ids[] = substr($key, 7);
+        if ('item_id_' == substr($key, 0, 8))
+          $expense_item_ids[] = substr($key, 8);
+      }
     }
+    // Assign as requested.
     if ($time_log_ids || $expense_item_ids) {
-      // Some records are checked for invoice editing. Adjust their invoice accordingly.
       ttReportHelper::assignToInvoice($invoice_id, $time_log_ids, $expense_item_ids);
     }
     // Re-display this form.