Added/modified stuff for adding, deleting and editing tasks.
This commit is contained in:
parent
89a3464e6f
commit
7e6637aace
1
TODO
1
TODO
|
@ -3,7 +3,6 @@ ToDo
|
||||||
|
|
||||||
* factuur vastleggen, met samenvatting commentaar
|
* factuur vastleggen, met samenvatting commentaar
|
||||||
* (configureerbare) factuurnummering (op jaarbasis)
|
* (configureerbare) factuurnummering (op jaarbasis)
|
||||||
* uurtarief per project (erg van klant)
|
|
||||||
|
|
||||||
* afronden op tijdresolutie
|
* afronden op tijdresolutie
|
||||||
* factuur-betaaldvlag
|
* factuur-betaaldvlag
|
||||||
|
|
108
stoptime.rb
108
stoptime.rb
|
@ -263,16 +263,81 @@ module StopTime::Controllers
|
||||||
|
|
||||||
class CustomersNTasks
|
class CustomersNTasks
|
||||||
def post(customer_id)
|
def post(customer_id)
|
||||||
if @input.has_key? "add"
|
if @input.has_key? "delete"
|
||||||
|
@task = Task.find(@input.task_id)
|
||||||
|
@task.delete
|
||||||
|
elsif @input.has_key? "edit"
|
||||||
|
return redirect R(CustomersNTasksN, customer_id, @input.task_id)
|
||||||
|
else
|
||||||
@task = Task.create(
|
@task = Task.create(
|
||||||
:customer_id => customer_id,
|
:customer_id => customer_id,
|
||||||
:name => @input.new_task)
|
:name => @input.name)
|
||||||
|
case @input.task_type
|
||||||
|
when "fixed_cost"
|
||||||
|
@task.fixed_cost = @input.fixed_cost
|
||||||
|
@task.hourly_rate = nil
|
||||||
|
when "hourly_rate"
|
||||||
|
@task.fixed_cost = nil
|
||||||
|
@task.hourly_rate = @input.hourly_rate
|
||||||
|
# FIXME: catch invalid task types!
|
||||||
|
end
|
||||||
@task.save
|
@task.save
|
||||||
if @task.invalid?
|
if @task.invalid?
|
||||||
@errors = @task.errors
|
@errors = @task.errors
|
||||||
|
@customer = Customer.find(customer_id)
|
||||||
|
@target = [CustomersNTasks, customer_id]
|
||||||
|
@method = "create"
|
||||||
|
return render :task_form
|
||||||
|
end
|
||||||
|
end
|
||||||
|
redirect R(CustomersN, customer_id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class CustomersNTasksNew
|
||||||
|
def get(customer_id)
|
||||||
|
@customer = Customer.find(customer_id)
|
||||||
|
@task = Task.create(:hourly_rate => @customer.hourly_rate)
|
||||||
|
@target = [CustomersNTasks, customer_id]
|
||||||
|
@method = "create"
|
||||||
|
@input = @task
|
||||||
|
render :task_form
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class CustomersNTasksN
|
||||||
|
def get(customer_id, task_id)
|
||||||
|
@customer = Customer.find(customer_id)
|
||||||
|
@task = Task.find(task_id)
|
||||||
|
@target = [CustomersNTasksN, customer_id, task_id]
|
||||||
|
@method = "update"
|
||||||
|
@input = @task
|
||||||
|
# FIXME: Check that task is of that customer.
|
||||||
|
render :task_form
|
||||||
|
end
|
||||||
|
|
||||||
|
def post(customer_id, task_id)
|
||||||
|
return redirect R(CustomersN, customer_id) if @input.cancel
|
||||||
|
@customer = Customer.find(customer_id)
|
||||||
|
@task = Task.find(task_id)
|
||||||
|
if @input.has_key? "update"
|
||||||
|
# FIXME: task should be cloned/dupped as to prevent rewriting history!
|
||||||
|
@task["name"] = @input["name"] unless @input["name"].blank?
|
||||||
|
case @input.task_type
|
||||||
|
when "fixed_cost"
|
||||||
|
@task["fixed_cost"] = @input.fixed_cost unless @input.fixed_cost.blank?
|
||||||
|
when "hourly_rate"
|
||||||
|
@task["hourly_rate"] = @input.fixed_cost unless @input.fixed_cost.blank?
|
||||||
|
end
|
||||||
|
@task["billed"] = @input.has_key? "billed"
|
||||||
|
@task.save
|
||||||
|
if @task.invalid?
|
||||||
|
@errors = @task.errors
|
||||||
|
@target = [CustomersNTasksN, customer_id, task_id]
|
||||||
|
@method = "update"
|
||||||
|
@input = @task
|
||||||
|
return render :task_form
|
||||||
end
|
end
|
||||||
elsif @input.has_key? "delete"
|
|
||||||
@input.tasks.each { |task_id| Task.find(task_id).delete }
|
|
||||||
end
|
end
|
||||||
redirect R(CustomersN, customer_id)
|
redirect R(CustomersN, customer_id)
|
||||||
end
|
end
|
||||||
|
@ -518,9 +583,10 @@ module StopTime::Views
|
||||||
input :type => "submit", :name => "cancel", :value => "Cancel"
|
input :type => "submit", :name => "cancel", :value => "Cancel"
|
||||||
end
|
end
|
||||||
if @edit_task
|
if @edit_task
|
||||||
|
# FXIME: the following is not very RESTful!
|
||||||
form :action => R(CustomersNTasks, @customer.id), :method => :post do
|
form :action => R(CustomersNTasks, @customer.id), :method => :post do
|
||||||
h2 "Projects & Tasks"
|
h2 "Projects & Tasks"
|
||||||
select :name => "tasks[]", :multiple => "multiple", :size => 6 do
|
select :name => "task_id", :size => 6 do
|
||||||
@customer.tasks.each do |task|
|
@customer.tasks.each do |task|
|
||||||
option(:value => task.id) { task.name }
|
option(:value => task.id) { task.name }
|
||||||
end
|
end
|
||||||
|
@ -528,6 +594,38 @@ module StopTime::Views
|
||||||
input :type => :submit, :name => "edit", :value => "Edit"
|
input :type => :submit, :name => "edit", :value => "Edit"
|
||||||
input :type => :submit, :name => "delete", :value => "Delete"
|
input :type => :submit, :name => "delete", :value => "Delete"
|
||||||
end
|
end
|
||||||
|
a "Add a new project/task", :href => R(CustomersNTasksNew, @customer.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def task_form
|
||||||
|
h2 "New task for #{@customer.name}"
|
||||||
|
form :action => R(*@target), :method => :post do
|
||||||
|
ul do
|
||||||
|
li { _form_input(@task, "Name", "name", :text) }
|
||||||
|
li do
|
||||||
|
ol.radio do
|
||||||
|
li do
|
||||||
|
_form_input_radio("task_type", "hourly_rate", default=true)
|
||||||
|
_form_input(@task, "Hourly rate", "hourly_rate", :text)
|
||||||
|
end
|
||||||
|
li do
|
||||||
|
_form_input_radio("task_type", "fixed_cost")
|
||||||
|
_form_input(@task, "Fixed cost", "fixed_cost", :text)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
li do
|
||||||
|
if @input.billed?
|
||||||
|
input :type => :checkbox, :name => "billed", :checked => true
|
||||||
|
else
|
||||||
|
input :type => :checkbox, :name => "billed"
|
||||||
|
end
|
||||||
|
span "Billed"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
input :type => "submit", :name => @method, :value => @method.capitalize
|
||||||
|
input :type => "submit", :name => "cancel", :value => "Cancel"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue