Guest User

Untitled

a guest
Jul 23rd, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.51 KB | None | 0 0
  1. class LeadsController < ApplicationController
  2.  
  3. hobo_model_controller
  4.  
  5. auto_actions :all, :except => [:new, :create]
  6.  
  7. auto_actions_for :contact, [:new, :create]
  8.  
  9. index_action :pipeline
  10. index_action :results
  11. index_action :approvals
  12. index_action :weekly
  13. index_action :quarter
  14. index_action :quarter_graph
  15.  
  16. def index
  17. hobo_index Lead.active.apply_scopes(:search => [params[:search], :name, :state],
  18. :order_by => parse_sort_param(:name, :probability, :teamsize, :duration, :state),
  19. :user_is => params[:user] || current_user)
  20. end
  21.  
  22. def pipeline
  23. hobo_index Lead.hot.apply_scopes(:search => [params[:search], :name, :state],
  24. :order_by => parse_sort_param(:name, :probability, :value, :created_at, :decision_date, :state),
  25. :user_is => params[:user])
  26. end
  27.  
  28. def results
  29. @result = ["won","final_approval","lost","dead","no_bid"]
  30.  
  31. if params[:result] == "All"
  32. hobo_index Lead.inactive.apply_scopes(:search => [params[:search], :name, :state],
  33. :order_by => parse_sort_param(:name, :teamsize, :duration, :decision_date, :state, :created_at, :user),
  34. :user_is => params[:user])
  35. else
  36. hobo_index Lead.inactive.apply_scopes(:search => [params[:search], :name, :state],
  37. :order_by => parse_sort_param(:name, :teamsize, :duration, :decision_date, :state, :created_at, :user),
  38. :user_is => params[:user],
  39. :state_is => params[:result])
  40. end
  41.  
  42. end
  43.  
  44. def approvals
  45. hobo_index Lead.forapproval.apply_scopes(:search => [params[:search], :name, :state],
  46. :order_by => parse_sort_param(:name, :probability, :teamsize, :duration, :decision_date, :state, :created_at),
  47. :user_is => params[:user])
  48.  
  49. end
  50.  
  51. def weekly
  52. last_monday = Date.commercial(Date.today.year, Date.today.cweek, 1)
  53. if last_monday == Date.today
  54. last_monday = last_monday - 7
  55. end
  56. hobo_index Lead.apply_scopes(:search => [params[:search], :name, :state],
  57. :order_by => parse_sort_param(:name, :teamsize, :duration, :decision_date, :state, :created_at, :user),
  58. :user_is => params[:user],
  59. :state_is => params[:result], :created_between => [last_monday, Date.tomorrow], :state_is_not => "suspect" )
  60. end
  61.  
  62. def show
  63. @lead = find_instance
  64. @offers = @lead.offers.apply_scopes(:search => [params[:search], :name],
  65. :order_by => parse_sort_param(:name))
  66. end
  67.  
  68. def do_win_extension
  69. do_transition_action :win_extension do
  70. if valid?
  71. signoff = Signoff.new
  72. signoff.detail = "WON EXTENSION"
  73. signoff.lead = @lead
  74. signoff.user = current_user
  75. signoff.save
  76. UserMailer.deliver_extension_notice(@lead.user, @lead)
  77. end
  78. end
  79. end
  80.  
  81. def do_win
  82. do_transition_action :win do
  83. if valid?
  84. @lead = find_instance
  85. @lead.decision_date = Date.today
  86. @lead.save
  87.  
  88. signoff = Signoff.new
  89. signoff.detail = "LEAD READY TO FINAL APPROVAL"
  90. signoff.lead = @lead
  91. signoff.user = current_user
  92. signoff.save
  93. if @lead.contract_signed == 'request_start_at_risk'
  94.  
  95. end
  96. UserMailer.deliver_final_approval_request(@lead.user, @lead)
  97. end
  98. end
  99. end
  100.  
  101. def do_advance
  102. @lead = find_instance
  103. @lead.created_at = Time.now # reset the time this lead was found, because it's now a REAL lead :-)
  104. @lead.save
  105. do_transition_action :advance do
  106. signoff = Signoff.new
  107. signoff.detail = "ADVANCED from SUSPECT => TO_BID"
  108. signoff.lead = @lead
  109. signoff.user = current_user
  110. signoff.save
  111. UserMailer.deliver_authrequest_bid_effort(@lead.user, @lead)
  112. if @lead.bidforms.first == nil
  113. bidform = Bidform.new
  114. bidform.lead = @lead
  115. bidform.save
  116. end
  117. end
  118. end
  119.  
  120. def do_kill
  121. do_transition_action :kill
  122. @lead = find_instance
  123. @lead.decision_date = Date.today
  124. @lead.save
  125. signoff = Signoff.new
  126. signoff.detail = "LEAD KILLED"
  127. signoff.lead = @lead
  128. signoff.user = current_user
  129. signoff.save
  130. end
  131.  
  132. def do_kill
  133. do_transition_action :kill
  134. @lead = find_instance
  135. @lead.decision_date = Date.today
  136. @lead.save
  137. signoff = Signoff.new
  138. signoff.detail = "LEAD KILLED"
  139. signoff.lead = @lead
  140. signoff.user = current_user
  141. signoff.save
  142. end
  143.  
  144. def do_withdraw
  145. do_transition_action :withdraw
  146. @lead = find_instance
  147. @lead.save
  148. signoff = Signoff.new
  149. signoff.detail = "NO BID"
  150. signoff.lead = @lead
  151. signoff.user = current_user
  152. signoff.save
  153. end
  154.  
  155. def do_reset
  156. do_transition_action :reset
  157. @lead = find_instance
  158. @lead.save
  159. signoff = Signoff.new
  160. signoff.detail = "RESET to SUSPECT"
  161. signoff.lead = @lead
  162. signoff.user = current_user
  163. signoff.save
  164. end
  165.  
  166. def do_get_approval
  167. do_transition_action :get_approval
  168. @lead = find_instance
  169. @lead.save
  170. signoff = Signoff.new
  171. signoff.detail = "READY FOR APPROVAL"
  172. signoff.lead = @lead
  173. signoff.user = current_user
  174. signoff.save
  175. UserMailer.deliver_bid_approval_request(@lead.user, @lead)
  176. end
  177.  
  178. def do_approve
  179. do_transition_action :approve
  180. @lead = find_instance
  181. @lead.save
  182. signoff = Signoff.new
  183. signoff.detail = "BID APPROVED"
  184. signoff.lead = @lead
  185. signoff.user = current_user
  186. signoff.save
  187. UserMailer.deliver_bid_approved_notice(@lead.user, @lead)
  188. end
  189.  
  190. def do_authorise_bid_effort
  191. do_transition_action :authorise_bid_effort
  192. @lead = find_instance
  193. @lead.save
  194. signoff = Signoff.new
  195. signoff.detail = "BID EFFORT AUTHORIZED"
  196. signoff.lead = @lead
  197. signoff.user = current_user
  198. signoff.save
  199. end
  200.  
  201. def do_lose
  202. do_transition_action :lose
  203. @lead = find_instance
  204. @lead.decision_date = Date.today
  205. @lead.save
  206. signoff = Signoff.new
  207. signoff.detail = "LOST"
  208. signoff.lead = @lead
  209. signoff.user = current_user
  210. signoff.save
  211. end
  212.  
  213. def quarter
  214. hobo_index User.show_leads.apply_scopes(:order_by =>parse_sort_param(:total_leads, :name))
  215. @graph = open_flash_chart_object(1060,600,"/leads/quarter_graph")
  216. end
  217.  
  218. def quarter_graph
  219. chart = User.generate_leads_graph
  220. render :text => chart.to_s
  221. end
  222.  
  223. def do_all_approved
  224. do_transition_action :all_approved
  225. @lead = find_instance
  226. @lead.decision_date = Date.today
  227. @lead.save
  228. project = Project.new
  229. project.lead = @lead
  230. project.description = @lead.name
  231. project.company = @lead.contact.company
  232. project.teamsize = @lead.teamsize
  233. project.duration = @lead.duration
  234. project.user = @lead.user
  235. project.enddate = @lead.enddate
  236. project.proposal = @lead.proposal
  237. project.contract = @lead.contract
  238. project.special_terms = @lead.special_terms
  239. project.invoice_address = @lead.invoice_address
  240. project.fptm = @lead.fptm
  241. project.sale_value = @lead.value
  242. project.currency = @lead.currency
  243. project.sponsor = @lead.project_sponsor
  244. project.save
  245. signoff = Signoff.new
  246. signoff.detail = "PROJECT WON"
  247. signoff.lead = @lead
  248. signoff.user = current_user
  249. signoff.save
  250. #UserMailer.deliver_new_project_notice(@lead.user, project)
  251. UserMailer.deliver_final_approval_notice(@lead.user, @lead)
  252. UserMailer.deliver_final_approval_report(@lead.user, @lead)
  253. end
  254.  
  255. end
Add Comment
Please, Sign In to add comment