[#6714] Remove empty deliverable budget items on submissions
This commit is contained in:
@@ -14,6 +14,7 @@ class DeliverablesController < InheritedResources::Base
|
||||
end
|
||||
|
||||
def create
|
||||
remove_empty_budget_items(params)
|
||||
@deliverable = begin_of_association_chain.deliverables.build(params[:deliverable])
|
||||
if params[:deliverable] && params[:deliverable][:type] && Deliverable.valid_types.include?(params[:deliverable][:type])
|
||||
@deliverable.type = params[:deliverable][:type]
|
||||
@@ -24,6 +25,7 @@ class DeliverablesController < InheritedResources::Base
|
||||
def update
|
||||
@deliverable = begin_of_association_chain.deliverables.find_by_id(params[:id])
|
||||
params[:deliverable] = params[:fixed_deliverable] || params[:hourly_deliverable] || params[:retainer_deliverable]
|
||||
remove_empty_budget_items(params)
|
||||
update!(:notice => l(:text_flash_deliverable_updated, :name => @deliverable.title)) { contract_url(@project, @contract) }
|
||||
end
|
||||
|
||||
@@ -75,4 +77,27 @@ class DeliverablesController < InheritedResources::Base
|
||||
period
|
||||
end
|
||||
|
||||
# Remove empty budgets. Will prevent validation errors
|
||||
# from empty fields submitted from the bulk adding form.
|
||||
#
|
||||
# LSS Clients #6714
|
||||
def remove_empty_budget_items(params)
|
||||
params["deliverable"]["labor_budgets_attributes"].reject! {|key, b| budget_item_empty?(b) }
|
||||
params["deliverable"]["overhead_budgets_attributes"].reject! {|key, b| budget_item_empty?(b) }
|
||||
params["deliverable"]["fixed_budgets_attributes"].reject! {|key, b| fixed_budget_item_empty?(b) }
|
||||
end
|
||||
|
||||
def budget_item_empty?(item)
|
||||
(item["time_entry_activity_id"].blank?) &&
|
||||
(item["hours"].blank? || item["hours"].to_f == 0.0) &&
|
||||
(item["budget"].blank? || item["budget"].gsub('$','').to_f == 0.0)
|
||||
end
|
||||
|
||||
def fixed_budget_item_empty?(item)
|
||||
(item["title"].blank?) &&
|
||||
(item["budget"].blank? || item["budget"].gsub('$','').to_f == 0.0) &&
|
||||
(item["markup"].blank? || item["markup"].gsub('$','').to_d == 0.0)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user