Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class LeadsController < ApplicationController
- hobo_model_controller
- auto_actions :all, :except => [:new, :create]
- auto_actions_for :contact, [:new, :create]
- index_action :pipeline
- index_action :results
- index_action :approvals
- index_action :weekly
- index_action :quarter
- index_action :quarter_graph
- def index
- hobo_index Lead.active.apply_scopes(:search => [params[:search], :name, :state],
- :order_by => parse_sort_param(:name, :probability, :teamsize, :duration, :state),
- :user_is => params[:user] || current_user)
- end
- def pipeline
- hobo_index Lead.hot.apply_scopes(:search => [params[:search], :name, :state],
- :order_by => parse_sort_param(:name, :probability, :value, :created_at, :decision_date, :state),
- :user_is => params[:user])
- end
- def results
- @result = ["won","final_approval","lost","dead","no_bid"]
- if params[:result] == "All"
- hobo_index Lead.inactive.apply_scopes(:search => [params[:search], :name, :state],
- :order_by => parse_sort_param(:name, :teamsize, :duration, :decision_date, :state, :created_at, :user),
- :user_is => params[:user])
- else
- hobo_index Lead.inactive.apply_scopes(:search => [params[:search], :name, :state],
- :order_by => parse_sort_param(:name, :teamsize, :duration, :decision_date, :state, :created_at, :user),
- :user_is => params[:user],
- :state_is => params[:result])
- end
- end
- def approvals
- hobo_index Lead.forapproval.apply_scopes(:search => [params[:search], :name, :state],
- :order_by => parse_sort_param(:name, :probability, :teamsize, :duration, :decision_date, :state, :created_at),
- :user_is => params[:user])
- end
- def weekly
- last_monday = Date.commercial(Date.today.year, Date.today.cweek, 1)
- if last_monday == Date.today
- last_monday = last_monday - 7
- end
- hobo_index Lead.apply_scopes(:search => [params[:search], :name, :state],
- :order_by => parse_sort_param(:name, :teamsize, :duration, :decision_date, :state, :created_at, :user),
- :user_is => params[:user],
- :state_is => params[:result], :created_between => [last_monday, Date.tomorrow], :state_is_not => "suspect" )
- end
- def show
- @lead = find_instance
- @offers = @lead.offers.apply_scopes(:search => [params[:search], :name],
- :order_by => parse_sort_param(:name))
- end
- def do_win_extension
- do_transition_action :win_extension do
- if valid?
- signoff = Signoff.new
- signoff.detail = "WON EXTENSION"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- UserMailer.deliver_extension_notice(@lead.user, @lead)
- end
- end
- end
- def do_win
- do_transition_action :win do
- if valid?
- @lead = find_instance
- @lead.decision_date = Date.today
- @lead.save
- signoff = Signoff.new
- signoff.detail = "LEAD READY TO FINAL APPROVAL"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- if @lead.contract_signed == 'request_start_at_risk'
- end
- UserMailer.deliver_final_approval_request(@lead.user, @lead)
- end
- end
- end
- def do_advance
- @lead = find_instance
- @lead.created_at = Time.now # reset the time this lead was found, because it's now a REAL lead :-)
- @lead.save
- do_transition_action :advance do
- signoff = Signoff.new
- signoff.detail = "ADVANCED from SUSPECT => TO_BID"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- UserMailer.deliver_authrequest_bid_effort(@lead.user, @lead)
- if @lead.bidforms.first == nil
- bidform = Bidform.new
- bidform.lead = @lead
- bidform.save
- end
- end
- end
- def do_kill
- do_transition_action :kill
- @lead = find_instance
- @lead.decision_date = Date.today
- @lead.save
- signoff = Signoff.new
- signoff.detail = "LEAD KILLED"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- end
- def do_kill
- do_transition_action :kill
- @lead = find_instance
- @lead.decision_date = Date.today
- @lead.save
- signoff = Signoff.new
- signoff.detail = "LEAD KILLED"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- end
- def do_withdraw
- do_transition_action :withdraw
- @lead = find_instance
- @lead.save
- signoff = Signoff.new
- signoff.detail = "NO BID"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- end
- def do_reset
- do_transition_action :reset
- @lead = find_instance
- @lead.save
- signoff = Signoff.new
- signoff.detail = "RESET to SUSPECT"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- end
- def do_get_approval
- do_transition_action :get_approval
- @lead = find_instance
- @lead.save
- signoff = Signoff.new
- signoff.detail = "READY FOR APPROVAL"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- UserMailer.deliver_bid_approval_request(@lead.user, @lead)
- end
- def do_approve
- do_transition_action :approve
- @lead = find_instance
- @lead.save
- signoff = Signoff.new
- signoff.detail = "BID APPROVED"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- UserMailer.deliver_bid_approved_notice(@lead.user, @lead)
- end
- def do_authorise_bid_effort
- do_transition_action :authorise_bid_effort
- @lead = find_instance
- @lead.save
- signoff = Signoff.new
- signoff.detail = "BID EFFORT AUTHORIZED"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- end
- def do_lose
- do_transition_action :lose
- @lead = find_instance
- @lead.decision_date = Date.today
- @lead.save
- signoff = Signoff.new
- signoff.detail = "LOST"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- end
- def quarter
- hobo_index User.show_leads.apply_scopes(:order_by =>parse_sort_param(:total_leads, :name))
- @graph = open_flash_chart_object(1060,600,"/leads/quarter_graph")
- end
- def quarter_graph
- chart = User.generate_leads_graph
- render :text => chart.to_s
- end
- def do_all_approved
- do_transition_action :all_approved
- @lead = find_instance
- @lead.decision_date = Date.today
- @lead.save
- project = Project.new
- project.lead = @lead
- project.description = @lead.name
- project.company = @lead.contact.company
- project.teamsize = @lead.teamsize
- project.duration = @lead.duration
- project.user = @lead.user
- project.enddate = @lead.enddate
- project.proposal = @lead.proposal
- project.contract = @lead.contract
- project.special_terms = @lead.special_terms
- project.invoice_address = @lead.invoice_address
- project.fptm = @lead.fptm
- project.sale_value = @lead.value
- project.currency = @lead.currency
- project.sponsor = @lead.project_sponsor
- project.save
- signoff = Signoff.new
- signoff.detail = "PROJECT WON"
- signoff.lead = @lead
- signoff.user = current_user
- signoff.save
- #UserMailer.deliver_new_project_notice(@lead.user, project)
- UserMailer.deliver_final_approval_notice(@lead.user, @lead)
- UserMailer.deliver_final_approval_report(@lead.user, @lead)
- end
- end
Add Comment
Please, Sign In to add comment