X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Ftemplates%2Fexpenses.tpl;h=df0eb4d124652ff96571699671411d15c9e854e2;hb=45ca7d2258832cb0d2465eb16dd646d925458106;hp=3c42c6d9b2b85f5132c08252fdef03621b62fe71;hpb=9a23a8c0a51b7ec38a96f525484134f3cb85dc7e;p=timetracker.git diff --git a/WEB-INF/templates/expenses.tpl b/WEB-INF/templates/expenses.tpl index 3c42c6d9..df0eb4d1 100644 --- a/WEB-INF/templates/expenses.tpl +++ b/WEB-INF/templates/expenses.tpl @@ -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; + } + } +} {$forms.expensesForm.open} @@ -73,31 +117,41 @@ function get_date() { -{if $on_behalf_control} +{if $user_dropdown} - + {/if} -{if in_array('cl', explode(',', $user->plugins))} +{if $user->isPluginEnabled('cl')} - + {/if} -{if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)} +{if $show_project} {/if} +{if $predefined_expenses} + + + + - + + + +{/if} + + - +
{$i18n.label.user}:{$forms.expensesForm.onBehalfUser.control}{$forms.expensesForm.user.control}
{$i18n.label.client}{if in_array('cm', explode(',', $user->plugins))} (*){/if}:{$i18n.label.client}{if $user->isPluginEnabled('cm')} (*){/if}: {$forms.expensesForm.client.control}
{$i18n.label.project} (*): {$forms.expensesForm.project.control}
{$i18n.label.expense}:{$forms.expensesForm.predefined_expense.control}
{$i18n.label.item} (*):{$i18n.label.quantity}:{$forms.expensesForm.quantity.control}
{$i18n.label.comment} (*): {$forms.expensesForm.item_name.control}
{$i18n.label.cost} (*):{$forms.expensesForm.cost.control} {$user->currency|escape:'html'}{$forms.expensesForm.cost.control} {$user->getCurrency()|escape}
@@ -118,51 +172,54 @@ function get_date() { + + {/foreach} +
- {if $expense_items} +{if $expense_items} -{if in_array('cl', explode(',', $user->plugins))} - -{/if} -{if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)} + {if $user->isPluginEnabled('cl')} + + {/if} + {if $show_project} -{/if} + {/if} - + + - {foreach $expense_items as $item} - -{if in_array('cl', explode(',', $user->plugins))} - -{/if} -{if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)} - -{/if} - - - + {if $user->isPluginEnabled('cl')} + + {/if} + {if $show_project} + + {/if} + + + - - {/foreach} -
{$i18n.label.client}{$i18n.label.client}{$i18n.label.project}{$i18n.label.item} {$i18n.label.cost}{$i18n.label.edit}
{$item.client|escape:'html'}{$item.project|escape:'html'}{$item.item|escape:'html'}{$item.cost} - {if $item.invoice_id} + {foreach $expense_items as $item} +
{$item.client|escape}{$item.project|escape}{$item.item|escape}{$item.cost} + {if $item.approved || $item.invoice_id}   - {else} - {$i18n.label.edit} - {/if} + {else} + {$i18n.label.edit} + {/if}
- {if $expense_items} - - - - -
{$i18n.label.day_total}: {$user->currency|escape:'html'} {$day_total}
- {/if} - +
+ {if $item.approved || $item.invoice_id} +   + {else} + {$i18n.label.delete} {/if} +
+ + + + +
{$i18n.label.day_total}: {$user->getCurrency()|escape} {$day_total}
+{/if} {$forms.expensesForm.close} - -