Class: ProposalDevelopmentObject
- Inherits:
-
Object
- Object
- ProposalDevelopmentObject
- Includes:
- DataFactory, DateFactory, Foundry, Navigation, StringFactory
- Defined in:
- lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb
Instance Attribute Summary collapse
-
#activity_type ⇒ Object
Returns the value of attribute activity_type.
-
#budget_versions ⇒ Object
Returns the value of attribute budget_versions.
-
#compliance_questions ⇒ Object
Returns the value of attribute compliance_questions.
-
#created ⇒ Object
Returns the value of attribute created.
-
#custom_data ⇒ Object
Returns the value of attribute custom_data.
-
#document_id ⇒ Object
Returns the value of attribute document_id.
-
#initiator ⇒ Object
Returns the value of attribute initiator.
-
#key_personnel ⇒ Object
Returns the value of attribute key_personnel.
-
#kuali_u_questions ⇒ Object
Returns the value of attribute kuali_u_questions.
-
#lead_unit ⇒ Object
Returns the value of attribute lead_unit.
-
#mail_by ⇒ Object
Returns the value of attribute mail_by.
-
#mail_type ⇒ Object
Returns the value of attribute mail_type.
-
#opportunity_id ⇒ Object
Returns the value of attribute opportunity_id.
-
#permissions ⇒ Object
Returns the value of attribute permissions.
-
#personnel_attachments ⇒ Object
Returns the value of attribute personnel_attachments.
-
#project_end_date ⇒ Object
Returns the value of attribute project_end_date.
-
#project_start_date ⇒ Object
Returns the value of attribute project_start_date.
-
#project_title ⇒ Object
Returns the value of attribute project_title.
-
#proposal_attachments ⇒ Object
Returns the value of attribute proposal_attachments.
-
#proposal_number ⇒ Object
Returns the value of attribute proposal_number.
-
#proposal_questions ⇒ Object
Returns the value of attribute proposal_questions.
-
#proposal_type ⇒ Object
Returns the value of attribute proposal_type.
-
#recall_reason ⇒ Object
Returns the value of attribute recall_reason.
-
#s2s_questionnaire ⇒ Object
Returns the value of attribute s2s_questionnaire.
-
#special_review ⇒ Object
Returns the value of attribute special_review.
-
#sponsor_code ⇒ Object
Returns the value of attribute sponsor_code.
-
#sponsor_deadline_date ⇒ Object
Returns the value of attribute sponsor_deadline_date.
-
#sponsor_type_code ⇒ Object
Returns the value of attribute sponsor_type_code.
-
#status ⇒ Object
Returns the value of attribute status.
Instance Method Summary collapse
- #add_budget_version(opts = {}) ⇒ Object
- #add_custom_data(opts = {}) ⇒ Object
- #add_key_person(opts = {}) ⇒ Object (also: #add_principal_investigator)
- #add_personnel_attachment(opts = {}) ⇒ Object
- #add_proposal_attachment(opts = {}) ⇒ Object
- #add_special_review(opts = {}) ⇒ Object
- #blanket_approve ⇒ Object
- #close ⇒ Object
- #complete_phs_fellowship_questionnaire(opts = {}) ⇒ Object
- #complete_phs_training_questionnaire(opts = {}) ⇒ Object
- #complete_s2s_questionnaire(opts = {}) ⇒ Object
- #create ⇒ Object
- #delete ⇒ Object
- #edit(opts = {}) ⇒ Object
-
#initialize(browser, opts = {}) ⇒ ProposalDevelopmentObject
constructor
A new instance of ProposalDevelopmentObject.
- #make_institutional_proposal ⇒ Object
- #open_proposal ⇒ Object
- #recall(reason = random_alphanums) ⇒ Object
-
#save ⇒ Object
Note: This method does not navigate because the assumption is that the only time you need to save the proposal is when you are on the proposal.
-
#set_valid_credit_splits ⇒ Object
This method simply sets all the credit splits to equal values based on how many persons and units are attached to the Proposal.
- #submit(type = :s) ⇒ Object
- #view(tab) ⇒ Object
Methods included from Navigation
#doc_search, #fill_out, #fill_out_item, #on_document?, #on_page?, #open_document
Methods included from Utilities
#get, #make_user, #random_percentage, #set, #snake_case
Constructor Details
#initialize(browser, opts = {}) ⇒ ProposalDevelopmentObject
Returns a new instance of ProposalDevelopmentObject.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 17 def initialize(browser, opts={}) @browser = browser defaults = { proposal_type: 'New', lead_unit: '::random::', activity_type: '::random::', project_title: random_alphanums, sponsor_code: '::random::', sponsor_type_code: '::random::', project_start_date: next_week[:date_w_slashes], # TODO: Think about using the date object here, and not the string project_end_date: next_year[:date_w_slashes], sponsor_deadline_date: next_week[:date_w_slashes], mail_by: '::random::', mail_type: '::random::', key_personnel: KeyPersonnelCollection.new, special_review: SpecialReviewCollection.new, budget_versions: BudgetVersionsCollection.new, personnel_attachments: PersonnelAttachmentsCollection.new, proposal_attachments: ProposalAttachmentsCollection.new } (defaults.merge(opts)) end |
Instance Attribute Details
#activity_type ⇒ Object
Returns the value of attribute activity_type.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def activity_type @activity_type end |
#budget_versions ⇒ Object
Returns the value of attribute budget_versions.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def budget_versions @budget_versions end |
#compliance_questions ⇒ Object
Returns the value of attribute compliance_questions.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def compliance_questions @compliance_questions end |
#created ⇒ Object
Returns the value of attribute created.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def created @created end |
#custom_data ⇒ Object
Returns the value of attribute custom_data.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def custom_data @custom_data end |
#document_id ⇒ Object
Returns the value of attribute document_id.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def document_id @document_id end |
#initiator ⇒ Object
Returns the value of attribute initiator.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def initiator @initiator end |
#key_personnel ⇒ Object
Returns the value of attribute key_personnel.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def key_personnel @key_personnel end |
#kuali_u_questions ⇒ Object
Returns the value of attribute kuali_u_questions.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def kuali_u_questions @kuali_u_questions end |
#lead_unit ⇒ Object
Returns the value of attribute lead_unit.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def lead_unit @lead_unit end |
#mail_by ⇒ Object
Returns the value of attribute mail_by.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def mail_by @mail_by end |
#mail_type ⇒ Object
Returns the value of attribute mail_type.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def mail_type @mail_type end |
#opportunity_id ⇒ Object
Returns the value of attribute opportunity_id.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def opportunity_id @opportunity_id end |
#permissions ⇒ Object
Returns the value of attribute permissions.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def @permissions end |
#personnel_attachments ⇒ Object
Returns the value of attribute personnel_attachments.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def @personnel_attachments end |
#project_end_date ⇒ Object
Returns the value of attribute project_end_date.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def project_end_date @project_end_date end |
#project_start_date ⇒ Object
Returns the value of attribute project_start_date.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def project_start_date @project_start_date end |
#project_title ⇒ Object
Returns the value of attribute project_title.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def project_title @project_title end |
#proposal_attachments ⇒ Object
Returns the value of attribute proposal_attachments.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def @proposal_attachments end |
#proposal_number ⇒ Object
Returns the value of attribute proposal_number.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def proposal_number @proposal_number end |
#proposal_questions ⇒ Object
Returns the value of attribute proposal_questions.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def proposal_questions @proposal_questions end |
#proposal_type ⇒ Object
Returns the value of attribute proposal_type.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def proposal_type @proposal_type end |
#recall_reason ⇒ Object
Returns the value of attribute recall_reason.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def recall_reason @recall_reason end |
#s2s_questionnaire ⇒ Object
Returns the value of attribute s2s_questionnaire.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def s2s_questionnaire @s2s_questionnaire end |
#special_review ⇒ Object
Returns the value of attribute special_review.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def special_review @special_review end |
#sponsor_code ⇒ Object
Returns the value of attribute sponsor_code.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def sponsor_code @sponsor_code end |
#sponsor_deadline_date ⇒ Object
Returns the value of attribute sponsor_deadline_date.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def sponsor_deadline_date @sponsor_deadline_date end |
#sponsor_type_code ⇒ Object
Returns the value of attribute sponsor_type_code.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def sponsor_type_code @sponsor_type_code end |
#status ⇒ Object
Returns the value of attribute status.
9 10 11 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 9 def status @status end |
Instance Method Details
#add_budget_version(opts = {}) ⇒ Object
129 130 131 132 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 129 def add_budget_version opts={} opts[:version] ||= (@budget_versions.size+1).to_s @budget_versions << prep(BudgetVersionsObject, opts) end |
#add_custom_data(opts = {}) ⇒ Object
134 135 136 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 134 def add_custom_data opts={} @custom_data = prep(CustomDataObject, opts) end |
#add_key_person(opts = {}) ⇒ Object Also known as: add_principal_investigator
86 87 88 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 86 def add_key_person opts={} @key_personnel << prep(KeyPersonObject, opts) end |
#add_personnel_attachment(opts = {}) ⇒ Object
145 146 147 148 149 150 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 145 def opts={} merge_settings(opts) p_a = make PersonnelAttachmentObject, opts p_a.add @personnel_attachments << p_a end |
#add_proposal_attachment(opts = {}) ⇒ Object
138 139 140 141 142 143 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 138 def opts={} merge_settings(opts) p_a = make ProposalAttachmentObject, opts p_a.add @proposal_attachments << p_a end |
#add_special_review(opts = {}) ⇒ Object
125 126 127 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 125 def add_special_review opts={} @special_review << prep(SpecialReviewObject, opts) end |
#blanket_approve ⇒ Object
251 252 253 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 251 def blanket_approve submit :ba end |
#close ⇒ Object
201 202 203 204 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 201 def close open_proposal on(Proposal).close end |
#complete_phs_fellowship_questionnaire(opts = {}) ⇒ Object
156 157 158 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 156 def complete_phs_fellowship_questionnaire opts={} @phs_fellowship_questionnaire = prep(PHSFellowshipQuestionnaireObject, opts) end |
#complete_phs_training_questionnaire(opts = {}) ⇒ Object
160 161 162 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 160 def complete_phs_training_questionnaire opts={} @phs_training_questionnaire = prep(PHSTrainingQuestionnaireObject, opts) end |
#complete_s2s_questionnaire(opts = {}) ⇒ Object
152 153 154 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 152 def complete_s2s_questionnaire opts={} @s2s_questionnaire = prep(S2SQuestionnaireObject, opts) end |
#create ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 42 def create on BasePage do |page| if page.windows.size > 1 && page.portal_window.exists? page.return_to_portal page.close_children elsif page.windows.size > 1 page.use_new_tab page.close_parents end end visit(Researcher).create_proposal on Proposal do |doc| @doc_header=doc.doc_title @document_id=doc.document_id @status=doc.document_status @initiator=doc.initiator @created=doc.created doc. fill_out doc, :proposal_type, :activity_type, :project_title, :project_start_date, :project_end_date, :sponsor_deadline_date, :mail_by, :mail_type#, :description set_sponsor_code set_lead_unit doc.save @proposal_number=doc.proposal_number @permissions = make PermissionsObject, document_id: @document_id, aggregators: [@initiator] end end |
#delete ⇒ Object
176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 176 def delete proposal_actions on(ProposalActions).delete_proposal on(Confirmation).yes # Have to update the data object's status value # in a valid way (getting it from the system) visit DocumentSearch do |search| search.document_id.set @document_id search.search @status=search.doc_status @document_id end end |
#edit(opts = {}) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 71 def edit opts={} open_proposal on Proposal do |edit| edit.proposal edit. edit.project_title.fit opts[:project_title] edit.project_start_date.fit opts[:project_start_date] edit.opportunity_id.fit opts[:opportunity_id] edit.proposal_type.fit opts[:proposal_type] # TODO: Add more stuff here as necessary edit.save end (opts) end |
#make_institutional_proposal ⇒ Object
164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 164 def make_institutional_proposal # TODO: Write any preparatory web site functional steps and page scraping code ip = make InstitutionalProposalObject, dev_proposal_number: @proposal_number, proposal_type: @proposal_type, activity_type: @activity_type, project_title: @project_title, project_personnel: Marshal::load(Marshal.dump(@key_personnel)), special_review: Marshal::load(Marshal.dump(@special_review)), custom_data: Marshal::load(Marshal.dump(@custom_data)) # TODO: Add more here as needed... end |
#open_proposal ⇒ Object
247 248 249 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 247 def open_proposal open_document @doc_header end |
#recall(reason = random_alphanums) ⇒ Object
189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 189 def recall(reason=random_alphanums) @recall_reason=reason open_proposal on(Proposal).recall on Confirmation do |conf| conf.reason.set @recall_reason conf.yes end open_proposal @status=on(Proposal).document_status end |
#save ⇒ Object
Note: This method does not navigate because the assumption is that the only time you need to save the proposal is when you are on the proposal. You will never need to open the proposal and then immediately save it.
243 244 245 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 243 def save on(Proposal).save end |
#set_valid_credit_splits ⇒ Object
This method simply sets all the credit splits to equal values based on how many persons and units are attached to the Proposal. If more complicated credit splits are needed, these will have to be coded in the step def, accessing the key person objects directly.
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 100 def set_valid_credit_splits # calculate a "person" split value that will work # based on the number of people attached... split = (100.0/@key_personnel.with_units.size).round(2) # Now make a hash to use for editing the person's splits... splits = {responsibility: split, financial: split, recognition: split, space: split} # Now we update the KeyPersonObjects' instance variables # for their own splits as well as for their units @key_personnel.with_units.each do |person| person.edit splits units_split = (100.0/person.units.size).round(2) # Make a temp container for the units we're updating... units = [] person.units.each { |unit| units << {:number=>unit[:number]} } # Iterate through the units, updating their credit splits with the # valid split amount... units.each do |unit| [:responsibility, :financial, :recognition, :space].each { |item| unit[item]=units_split } end person.update_unit_credit_splits units end end |
#submit(type = :s) ⇒ Object
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 213 def submit(type=:s) types={:s=>:submit, :ba=>:blanket_approve, :to_sponsor=>:submit_to_sponsor, :to_s2s=>:submit_to_s2s} proposal_actions on(ProposalActions).send(types[type]) if type==:to_sponsor on NotificationEditor do |page| # A breaking of the design pattern, here, # but we have no alternative... @status=page.document_status page.send_fyi end elsif type == :to_s2s view :s2s on S2S do |page| @status=page.document_status end else on ProposalActions do |page| page.data_validation_header.wait_until_present @status=page.document_status end end end |
#view(tab) ⇒ Object
206 207 208 209 210 211 |
# File 'lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb', line 206 def view(tab) open_proposal unless @status=='CANCELED' || on(Proposal).send(StringFactory.damballa("#{tab}_button")).parent.class_name=~/tabcurrent$/ on(Proposal).send(StringFactory.damballa(tab.to_s)) end end |