More work in progress on remote work plugin.
[timetracker.git] / WEB-INF / templates / expenses.tpl
index 3c42c6d..df0eb4d 100644 (file)
@@ -6,28 +6,36 @@
 // project_names[325] = "Time Tracker";   // Project name.
 
 // Prepare an array of project ids for clients.
-project_ids = new Array();
+var project_ids = new Array();
 {foreach $client_list as $client}
   project_ids[{$client.id}] = "{$client.projects}";
 {/foreach}
 // Prepare an array of project names.
-project_names = new Array();
+var project_names = new Array();
 {foreach $project_list as $project}
   project_names[{$project.id}] = "{$project.name|escape:'javascript'}";
 {/foreach}
 // We'll use this array to populate project dropdown when client is not selected.
 var idx = 0;
-projects = new Array();
+var projects = new Array();
 {foreach $project_list as $project}
   projects[idx] = new Array("{$project.id}", "{$project.name|escape:'javascript'}");
   idx++;
 {/foreach}
 
 // Mandatory top option for project dropdown.
-empty_label_project = '{$i18n.dropdown.select|escape:'javascript'}';
+var empty_label_project = "{$i18n.dropdown.select|escape:'javascript'}";
+
+// Prepare an array of predefined expenses.
+idx = 0;
+var defined_expenses = new Array();
+{foreach $predefined_expenses as $predefined_expense}
+  defined_expenses[idx] = new Array("{$predefined_expense.id}", "{$predefined_expense.name|escape:'javascript'}", "{$predefined_expense.cost}");
+  idx++;
+{/foreach}
 
 // The fillProjectDropdown function populates the project combo box with
-// projects associated with a selected client (client id is passed here as id).    
+// projects associated with a selected client (client id is passed here as id).
 function fillProjectDropdown(id) {
   var str_ids = project_ids[id];
   var dropdown = document.getElementById("project");
@@ -42,7 +50,7 @@ function fillProjectDropdown(id) {
   // Populate project dropdown.
   if (!id) {
     // If we are here, client is not selected.
-       var len = projects.length;
+    var len = projects.length;
     for (var i = 0; i < len; i++) {
       dropdown.options[i+1] = new Option(projects[i][1], projects[i][0]);
       if (dropdown.options[i+1].value == selected_item)
@@ -66,6 +74,42 @@ function get_date() {
   var date = new Date();
   return date.strftime("%Y-%m-%d");
 }
+
+// The recalculateCost function recalculates cost based on the current selection
+// of predefined expense and quantity and also changes the comment accordingly.
+function recalculateCost() {
+  var quantity_control = document.getElementById("quantity");
+  // Set quantity to 1 if it is not set already.
+  if (!quantity_control.value) {
+     quantity_control.value = "1";
+  }
+
+  var comment_control = document.getElementById("item_name");
+  var cost_control = document.getElementById("cost");
+  var replaceDecimalMark = ("." != "{$user->getDecimalMark()}");
+
+  // Calculate cost.
+  var dropdown = document.getElementById("predefined_expense");
+  if (dropdown.selectedIndex == 0) {
+    quantity_control.value = "";
+    comment_control.value = "";
+    cost_control.value = "";
+  } else {
+    comment_control.value = defined_expenses[dropdown.selectedIndex - 1][1] + " - " + quantity_control.value;
+    var quantity = quantity_control.value;
+    if (isNaN(quantity))
+      cost_control.value = "";
+    else {
+      var expenseCost = defined_expenses[dropdown.selectedIndex - 1][2];
+      if (replaceDecimalMark)
+        expenseCost = expenseCost.replace("{$user->getDecimalMark()}", ".");
+      var newCost = (quantity_control.value * expenseCost).toFixed(2);
+      if (replaceDecimalMark)
+        newCost = newCost.replace(".", "{$user->getDecimalMark()}");
+      cost_control.value = newCost;
+    }
+  }
+}
 </script>
 
 {$forms.expensesForm.open}
@@ -73,31 +117,41 @@ function get_date() {
   <tr>
     <td valign="top">
       <table>
-{if $on_behalf_control}
+{if $user_dropdown}
         <tr>
           <td align="right">{$i18n.label.user}:</td>
-          <td>{$forms.expensesForm.onBehalfUser.control}</td>
+          <td>{$forms.expensesForm.user.control}</td>
         </tr>
 {/if}
-{if in_array('cl', explode(',', $user->plugins))}
+{if $user->isPluginEnabled('cl')}
         <tr>
-          <td align="right">{$i18n.label.client}{if in_array('cm', explode(',', $user->plugins))} (*){/if}:</td>
+          <td align="right">{$i18n.label.client}{if $user->isPluginEnabled('cm')} (*){/if}:</td>
           <td>{$forms.expensesForm.client.control}</td>
         </tr>
 {/if}
-{if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
+{if $show_project}
         <tr>
           <td align="right">{$i18n.label.project} (*):</td>
           <td>{$forms.expensesForm.project.control}</td>
         </tr>
 {/if}
+{if $predefined_expenses}
+        <tr>
+          <td align="right">{$i18n.label.expense}:</td>
+          <td>{$forms.expensesForm.predefined_expense.control}</td>
+        </tr>
         <tr>
-          <td align="right">{$i18n.label.item} (*):</td>
+          <td align="right">{$i18n.label.quantity}:</td>
+          <td>{$forms.expensesForm.quantity.control}</td>
+        </tr>
+{/if}
+        <tr>
+          <td align="right">{$i18n.label.comment} (*):</td>
           <td>{$forms.expensesForm.item_name.control}</td>
         </tr>
         <tr>
           <td align="right">{$i18n.label.cost} (*):</td>
-          <td>{$forms.expensesForm.cost.control} {$user->currency|escape:'html'}</td>
+          <td>{$forms.expensesForm.cost.control} {$user->getCurrency()|escape}</td>
         </tr>
       </table>
     </td>
@@ -118,51 +172,54 @@ function get_date() {
 <table width="720">
 <tr>
   <td valign="top">
-    {if $expense_items}
+{if $expense_items}
       <table border="0" cellpadding="3" cellspacing="1" width="100%">
       <tr>
-{if in_array('cl', explode(',', $user->plugins))}
-        <td width="20%" class="tableHeader">{$i18n.label.client}</td>
-{/if}
-{if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
+  {if $user->isPluginEnabled('cl')}
+        <td class="tableHeader">{$i18n.label.client}</td>
+  {/if}
+  {if $show_project}
         <td class="tableHeader">{$i18n.label.project}</td>
-{/if}
+  {/if}
         <td class="tableHeader">{$i18n.label.item}</td>
         <td width="5%" class="tableHeaderCentered">{$i18n.label.cost}</td>
-        <td width="5%" class="tableHeader">{$i18n.label.edit}</td>
+        <td></td>
+        <td></td>
       </tr>
-      {foreach $expense_items as $item}
-      <tr bgcolor="{cycle values="#f5f5f5,#ccccce"}">
-{if in_array('cl', explode(',', $user->plugins))}
-        <td valign='top'>{$item.client|escape:'html'}</td>
-{/if}
-{if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
-        <td valign='top'>{$item.project|escape:'html'}</td>
-{/if}
-        <td valign='top'>{$item.item|escape:'html'}</td>
-        <td valign='top' align='right'>{$item.cost}</td>
-        <td valign='top' align='center'>
-        {if $item.invoice_id}
+  {foreach $expense_items as $item}
+      <tr bgcolor="{cycle values="#f5f5f5,#ffffff"}">
+    {if $user->isPluginEnabled('cl')}
+        <td valign="top">{$item.client|escape}</td>
+    {/if}
+    {if $show_project}
+        <td valign="top">{$item.project|escape}</td>
+    {/if}
+        <td valign="top">{$item.item|escape}</td>
+        <td valign="top" align="right">{$item.cost}</td>
+        <td valign="top" align="center">
+    {if $item.approved || $item.invoice_id}
           &nbsp;
-        {else}
-          <a href='expense_edit.php?id={$item.id}'>{$i18n.label.edit}</a>
-        {/if}
+    {else}
+          <a href='expense_edit.php?id={$item.id}'><img class="table_icon" alt="{$i18n.label.edit}" src="images/icon_edit.png"></a>
+    {/if}
         </td>
-      </tr>
-      {/foreach}
-         </table>
-         {if $expense_items}
-      <table border="0" cellpadding="3" cellspacing="1" width="100%">
-        <tr>
-          <td nowrap align="right">{$i18n.label.day_total}: {$user->currency|escape:'html'} {$day_total}</td>
-        </tr>
-      </table>
-      {/if}
-         
+        <td valign="top" align="center">
+    {if $item.approved || $item.invoice_id}
+          &nbsp;
+    {else}
+          <a href='expense_delete.php?id={$item.id}'><img class="table_icon" alt="{$i18n.label.delete}" src="images/icon_delete.png"></a>
     {/if}
+        </td>
+      </tr>
+  {/foreach}
+    </table>
+    <table border="0" cellpadding="3" cellspacing="1" width="100%">
+      <tr>
+        <td nowrap align="right">{$i18n.label.day_total}: {$user->getCurrency()|escape} {$day_total}</td>
+      </tr>
+    </table>
+{/if}
   </td>
 </tr>
 </table>
 {$forms.expensesForm.close}
-
-