From ea385548200e23131770e96a2b245b777de10c74 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Tue, 21 Apr 2009 16:59:55 -0700 Subject: [PATCH] [#2281] Refactored the implementation of billable?. --- lib/overhead_time_entry_activity_patch.rb | 38 +++++++++++++++-------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/lib/overhead_time_entry_activity_patch.rb b/lib/overhead_time_entry_activity_patch.rb index 4bc4cba..2fa454d 100644 --- a/lib/overhead_time_entry_activity_patch.rb +++ b/lib/overhead_time_entry_activity_patch.rb @@ -19,24 +19,36 @@ module OverheadTimeEntryActivityPatch module InstanceMethods # Is the Activity Billable, based on it's custom data? def billable? - if Setting['plugin_redmine_overhead'] && Setting['plugin_redmine_overhead']['custom_field'] + if overhead_configured? billable_field = TimeEntryActivityCustomField.find_by_id(Setting['plugin_redmine_overhead']['custom_field']) - - if billable_field && field = self.custom_value_for(billable_field) - if billable_field.field_format == 'bool' - setting = (Setting['plugin_redmine_overhead']['billable_value'] == "true") ? true : false - activity_field = (field.value == "1") ? true : false - return activity_field == setting - else - return field.value == Setting['plugin_redmine_overhead']['billable_value'] - end - else - return false - end + return field_equals_the_configured_billable_field?(billable_field) else return false end end + + private + + def overhead_configured? + Setting['plugin_redmine_overhead'] && Setting['plugin_redmine_overhead']['custom_field'] + end + + # Checks if the field's value equals the configured billable + # value. + def field_equals_the_configured_billable_field?(field=nil) + return false unless field + + custom_value = self.custom_value_for(field) + + if field.field_format == 'bool' + # Map string values to proper booleans + setting = (Setting['plugin_redmine_overhead']['billable_value'] == "true") ? true : false + activity_field = (custom_value.value == "1") ? true : false + return activity_field == setting + else + return custom_value.value == Setting['plugin_redmine_overhead']['billable_value'] + end + end end end