kuality-coeus 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (161) hide show
  1. data/Gemfile +1 -1
  2. data/Gemfile.lock +16 -18
  3. data/chromedriver.log +46 -0
  4. data/features/grants_gov/grants_gov_forms/code_and_form_mapping.feature +26 -0
  5. data/features/grants_gov/grants_gov_forms/forms_validation.feature +1 -0
  6. data/features/grants_gov/grants_gov_forms/s2s_questionnaire.feature +19 -0
  7. data/features/grants_gov/s2s_submission.feature +30 -0
  8. data/features/grants_gov/s2s_validation.feature +36 -0
  9. data/features/proposal_development/create_budget_versions.feature +31 -0
  10. data/features/proposal_development/create_proposal.feature +25 -0
  11. data/features/proposal_development/key_personnel_validations.feature +41 -0
  12. data/features/proposal_development/proposal_actions_validations.feature +46 -0
  13. data/features/proposal_development/proposal_permissions.feature +73 -0
  14. data/features/proposal_development/proposal_workflow.feature +105 -0
  15. data/features/proposal_development/special_review_validations.feature +12 -0
  16. data/features/step_definitions/action_list.rb +12 -0
  17. data/features/step_definitions/awards/create_award.rb +3 -0
  18. data/features/step_definitions/grants_gov/forms.rb +34 -0
  19. data/features/step_definitions/grants_gov/s2s_submission.rb +51 -0
  20. data/features/step_definitions/institutional_proposals/create_institutional_proposal.rb +3 -0
  21. data/features/step_definitions/proposal_development/budget_versions.rb +102 -0
  22. data/features/step_definitions/proposal_development/create_proposal.rb +157 -0
  23. data/features/step_definitions/proposal_development/edit_proposal.rb +79 -0
  24. data/features/step_definitions/proposal_development/institute_rates.rb +21 -0
  25. data/features/step_definitions/proposal_development/key_personnel_validations.rb +74 -0
  26. data/features/step_definitions/proposal_development/proposal_actions_validations.rb +73 -0
  27. data/features/step_definitions/proposal_development/proposal_permissions.rb +141 -0
  28. data/features/step_definitions/proposal_development/proposal_workflow.rb +81 -0
  29. data/features/step_definitions/proposal_development/s2s_validation.rb +30 -0
  30. data/features/step_definitions/proposal_development/special_review_validations.rb +7 -0
  31. data/features/step_definitions/test.rb +3 -0
  32. data/features/step_definitions/users.rb +65 -0
  33. data/features/support/env.rb +35 -0
  34. data/features/test.feature +13 -0
  35. data/kuality-coeus.gemspec +1 -1
  36. data/lib/chromedriver.log +4483 -0
  37. data/lib/kuality-coeus.rb +5 -2
  38. data/lib/kuality-coeus/core_extensions.rb +10 -0
  39. data/lib/kuality-coeus/data_objects/award/award.rb +126 -0
  40. data/lib/kuality-coeus/data_objects/award/award_transaction.rb +57 -0
  41. data/lib/kuality-coeus/data_objects/budget/budget_periods.rb +114 -0
  42. data/lib/kuality-coeus/data_objects/budget/budget_versions.rb +221 -0
  43. data/lib/kuality-coeus/data_objects/budget/subaward_budget.rb +65 -0
  44. data/lib/kuality-coeus/data_objects/committee_document/committee_document.rb +65 -0
  45. data/lib/kuality-coeus/data_objects/committee_document/committee_members.rb +30 -0
  46. data/lib/kuality-coeus/data_objects/committee_document/committee_schedule.rb +27 -0
  47. data/lib/kuality-coeus/data_objects/committee_document/member_roles.rb +28 -0
  48. data/lib/kuality-coeus/data_objects/conflict_of_interest/financial_entity.rb +48 -0
  49. data/lib/kuality-coeus/data_objects/grants_gov/phs_fellowship_questionnaire.rb +90 -0
  50. data/lib/kuality-coeus/data_objects/grants_gov/phs_training_budget_questionnaire.rb +5 -0
  51. data/lib/kuality-coeus/data_objects/institutional_proposal/institutional_proposal.rb +20 -0
  52. data/lib/kuality-coeus/data_objects/institutional_proposal/intellectual_property_review.rb +62 -0
  53. data/lib/kuality-coeus/data_objects/navigation.rb +64 -0
  54. data/lib/kuality-coeus/data_objects/proposal_development/compliance_questions.rb +47 -0
  55. data/lib/kuality-coeus/data_objects/proposal_development/custom_data.rb +41 -0
  56. data/lib/kuality-coeus/data_objects/proposal_development/degrees.rb +40 -0
  57. data/lib/kuality-coeus/data_objects/proposal_development/key_personnel.rb +299 -0
  58. data/lib/kuality-coeus/data_objects/proposal_development/kuali_university_questions.rb +58 -0
  59. data/lib/kuality-coeus/data_objects/proposal_development/permissions.rb +107 -0
  60. data/lib/kuality-coeus/data_objects/proposal_development/personnel_attachments.rb +46 -0
  61. data/lib/kuality-coeus/data_objects/proposal_development/proposal_attachments.rb +41 -0
  62. data/lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb +301 -0
  63. data/lib/kuality-coeus/data_objects/proposal_development/proposal_questions.rb +52 -0
  64. data/lib/kuality-coeus/data_objects/proposal_development/s2s_questionnaire.rb +129 -0
  65. data/lib/kuality-coeus/data_objects/proposal_development/special_review.rb +79 -0
  66. data/lib/kuality-coeus/data_objects/rates/institute_rate.rb +209 -0
  67. data/lib/kuality-coeus/data_objects/user.rb +303 -33
  68. data/lib/kuality-coeus/gem_extensions.rb +26 -0
  69. data/lib/kuality-coeus/page_objects/000_base_page.rb +196 -14
  70. data/lib/kuality-coeus/page_objects/action_list.rb +32 -0
  71. data/lib/kuality-coeus/page_objects/award/award.rb +25 -0
  72. data/lib/kuality-coeus/page_objects/award/award_actions.rb +7 -0
  73. data/lib/kuality-coeus/page_objects/award/award_budget_versions.rb +9 -0
  74. data/lib/kuality-coeus/page_objects/award/commitments.rb +27 -0
  75. data/lib/kuality-coeus/page_objects/award/contacts.rb +19 -0
  76. data/lib/kuality-coeus/page_objects/award/custom_data.rb +6 -0
  77. data/lib/kuality-coeus/page_objects/award/payment_reports_terms.rb +26 -0
  78. data/lib/kuality-coeus/page_objects/award/special_review.rb +7 -0
  79. data/lib/kuality-coeus/page_objects/award/time_and_money.rb +36 -0
  80. data/lib/kuality-coeus/page_objects/budget/budget_actions.rb +31 -0
  81. data/lib/kuality-coeus/page_objects/budget/budget_versions.rb +13 -0
  82. data/lib/kuality-coeus/page_objects/budget/modular_budget.rb +16 -0
  83. data/lib/kuality-coeus/page_objects/budget/non-personnel.rb +11 -0
  84. data/lib/kuality-coeus/page_objects/budget/parameters.rb +65 -0
  85. data/lib/kuality-coeus/page_objects/budget/personnel.rb +56 -0
  86. data/lib/kuality-coeus/page_objects/budget/rates.rb +7 -0
  87. data/lib/kuality-coeus/page_objects/budget/summary.rb +5 -0
  88. data/lib/kuality-coeus/page_objects/budget_document.rb +19 -0
  89. data/lib/kuality-coeus/page_objects/central_admin.rb +4 -2
  90. data/lib/kuality-coeus/page_objects/committee/committee.rb +10 -10
  91. data/lib/kuality-coeus/page_objects/committee/members.rb +4 -4
  92. data/lib/kuality-coeus/page_objects/committee_document.rb +1 -6
  93. data/lib/kuality-coeus/page_objects/confirmation.rb +16 -0
  94. data/lib/kuality-coeus/page_objects/disclosure/disclosure.rb +56 -0
  95. data/lib/kuality-coeus/page_objects/disclosure/disclosure_actions.rb +9 -0
  96. data/lib/kuality-coeus/page_objects/document_header.rb +5 -0
  97. data/lib/kuality-coeus/page_objects/financial_entities.rb +1 -4
  98. data/lib/kuality-coeus/page_objects/financial_entities/my_financial_entities.rb +6 -0
  99. data/lib/kuality-coeus/page_objects/financial_entities/new_financial_entity.rb +11 -0
  100. data/lib/kuality-coeus/page_objects/financial_entities/reporter.rb +5 -3
  101. data/lib/kuality-coeus/page_objects/identity/person.rb +57 -0
  102. data/lib/kuality-coeus/page_objects/institute_rates_maintenance.rb +18 -0
  103. data/lib/kuality-coeus/page_objects/institutional_proposal.rb +18 -0
  104. data/lib/kuality-coeus/page_objects/institutional_proposal/contacts.rb +32 -0
  105. data/lib/kuality-coeus/page_objects/institutional_proposal/custom_data.rb +6 -0
  106. data/lib/kuality-coeus/page_objects/institutional_proposal/distribution.rb +20 -0
  107. data/lib/kuality-coeus/page_objects/institutional_proposal/institutional_proposal.rb +27 -0
  108. data/lib/kuality-coeus/page_objects/institutional_proposal/institutional_proposal_actions.rb +7 -0
  109. data/lib/kuality-coeus/page_objects/institutional_proposal/intellectual_property_review.rb +20 -0
  110. data/lib/kuality-coeus/page_objects/institutional_proposal/special_review.rb +6 -0
  111. data/lib/kuality-coeus/page_objects/kc_awards.rb +48 -0
  112. data/lib/kuality-coeus/page_objects/kc_protocol.rb +15 -0
  113. data/lib/kuality-coeus/page_objects/login.rb +4 -5
  114. data/lib/kuality-coeus/page_objects/lookup_pages/000_lookups.rb +10 -0
  115. data/lib/kuality-coeus/page_objects/lookup_pages/action_list_filter.rb +6 -0
  116. data/lib/kuality-coeus/page_objects/lookup_pages/address_book_lookup.rb +4 -0
  117. data/lib/kuality-coeus/page_objects/lookup_pages/development_proposal_lookup.rb +3 -0
  118. data/lib/kuality-coeus/page_objects/lookup_pages/document_search.rb +10 -0
  119. data/lib/kuality-coeus/page_objects/lookup_pages/group_lookup.rb +3 -0
  120. data/lib/kuality-coeus/page_objects/lookup_pages/institute_rates_lookup.rb +12 -0
  121. data/lib/kuality-coeus/page_objects/lookup_pages/opportunity_lookup.rb +6 -0
  122. data/lib/kuality-coeus/page_objects/lookup_pages/organization_lookup.rb +5 -0
  123. data/lib/kuality-coeus/page_objects/lookup_pages/person_extended_attributes.rb +5 -0
  124. data/lib/kuality-coeus/page_objects/lookup_pages/person_lookup.rb +10 -0
  125. data/lib/kuality-coeus/page_objects/lookup_pages/role_lookup.rb +6 -0
  126. data/lib/kuality-coeus/page_objects/lookup_pages/sponsor_lookup.rb +9 -0
  127. data/lib/kuality-coeus/page_objects/lookup_pages/unit_admin_lookup.rb +3 -0
  128. data/lib/kuality-coeus/page_objects/lookup_pages/unit_lookup.rb +3 -0
  129. data/lib/kuality-coeus/page_objects/maintenance.rb +7 -0
  130. data/lib/kuality-coeus/page_objects/notification_editor.rb +6 -0
  131. data/lib/kuality-coeus/page_objects/proposal_development.rb +7 -2
  132. data/lib/kuality-coeus/page_objects/proposal_development/abstracts_and_attachments.rb +54 -0
  133. data/lib/kuality-coeus/page_objects/proposal_development/key_personnel.rb +126 -0
  134. data/lib/kuality-coeus/page_objects/proposal_development/pd_custom_data.rb +6 -0
  135. data/lib/kuality-coeus/page_objects/proposal_development/permissions.rb +44 -0
  136. data/lib/kuality-coeus/page_objects/proposal_development/phs_fellowship_questionnaire.rb +44 -0
  137. data/lib/kuality-coeus/page_objects/proposal_development/phs_training_budget_questionnaire.rb +50 -0
  138. data/lib/kuality-coeus/page_objects/proposal_development/proposal.rb +47 -8
  139. data/lib/kuality-coeus/page_objects/proposal_development/proposal_actions.rb +62 -0
  140. data/lib/kuality-coeus/page_objects/proposal_development/proposal_summary.rb +9 -0
  141. data/lib/kuality-coeus/page_objects/proposal_development/questions.rb +111 -0
  142. data/lib/kuality-coeus/page_objects/proposal_development/s2s.rb +35 -0
  143. data/lib/kuality-coeus/page_objects/proposal_development/special_review.rb +6 -0
  144. data/lib/kuality-coeus/page_objects/protocol/custom_data.rb +6 -0
  145. data/lib/kuality-coeus/page_objects/protocol/permissions.rb +5 -0
  146. data/lib/kuality-coeus/page_objects/protocol/personnel.rb +5 -0
  147. data/lib/kuality-coeus/page_objects/protocol/protocol.rb +11 -0
  148. data/lib/kuality-coeus/page_objects/protocol/questionnaire.rb +5 -0
  149. data/lib/kuality-coeus/page_objects/protocol/special_review.rb +6 -0
  150. data/lib/kuality-coeus/page_objects/rejection_confirmation.rb +5 -0
  151. data/lib/kuality-coeus/page_objects/researcher.rb +4 -2
  152. data/lib/kuality-coeus/page_objects/shared/unit_administrator.rb +13 -0
  153. data/lib/kuality-coeus/page_objects/system/person_extended_attributes.rb +18 -0
  154. data/lib/kuality-coeus/page_objects/system_admin.rb +7 -0
  155. data/lib/kuality-coeus/page_objects/unit.rb +2 -4
  156. data/lib/kuality-coeus/utilities.rb +39 -0
  157. data/libpeerconnection.log +0 -0
  158. metadata +140 -5
  159. data/lib/kuality-coeus/data_objects/committee_document.rb +0 -65
  160. data/lib/kuality-coeus/data_objects/proposal_development.rb +0 -53
  161. data/lib/kuality-coeus/navigation.rb +0 -3
@@ -0,0 +1,32 @@
1
+ class ActionList < BasePage
2
+
3
+ page_url "#{$base_url}portal.do?channelTitle=Action List&channelUrl=#{$base_url[/^.+com/]+':'+$base_url[/(?<=com)(\/.+\/)$/]}kew/ActionList.do"
4
+
5
+ search_results_table
6
+
7
+ # TD Count for Columns in results table
8
+ SHOW_BUTTON = 0
9
+ ITEM_ID = 1
10
+ TYPE = 2
11
+ TITLE = 3
12
+ ROUTE_STATUS = 4
13
+ ACTION_REQUESTED = 5
14
+ DELEGATOR = 6
15
+ DATE_CREATED = 7
16
+ GROUP_REQUEST = 8
17
+ ACTIONS = 9
18
+ LOG = 10
19
+
20
+ action(:action_requested) { |item_id, b| b.item_row(item_id).tds[ACTION_REQUESTED].text }
21
+ action(:route_status) { |item_id, b| b.item_row(item_id).tds[ROUTE_STATUS].text }
22
+ action(:filter) { |b| b.frm.button(name: 'methodToCall.viewFilter').click; b.loading }
23
+ action(:take_actions) { |b| b.frm.link(id: 'takeMassActions').click; b.loading }
24
+ action(:action) { |item_id, b| b.item_row(item_id).select(name: /actionTakenCd/) }
25
+ action(:outbox) { |b| b.frm.link(href: /viewOutbox/).click }
26
+ action(:last) { |b| b.frm.link(text: 'Last').click }
27
+ action(:refresh) { |b| b.frm.button(name: 'methodToCall.refresh').click; b.loading }
28
+
29
+ #Default action select list for FYIs
30
+ action(:default_action) { |b| b.frm.select(name: 'defaultActionToTake') }
31
+ action(:apply_default_action) { |b| b.frm.link(align: 'absmiddle').click }
32
+ end
@@ -0,0 +1,25 @@
1
+ class Award < KCAwards
2
+
3
+ award_header_elements
4
+ description_field
5
+
6
+ element(:institutional_proposal_number) { |b| b.frm.text_field(name: 'fundingProposalBean.newFundingProposal.proposalNumber') }
7
+ action(:add_proposal) { |b| b.frm.button(name: 'methodToCall.addFundingProposal.anchorFundingProposals').click; b.loading }
8
+ element(:transaction_type) { |b| b.frm.select(name: 'document.awardList[0].awardTransactionTypeCode') }
9
+ element(:award_status) { |b| b.frm.select(name: 'document.awardList[0].statusCode') }
10
+ element(:lead_unit_id) { |b| b.frm.text_field(name: 'document.awardList[0].unitNumber') }
11
+ value(:lead_unit_ro) { |b| b.frm.div(id: 'tab-DetailsDates:Institution-div').table[0][3].text }
12
+ action(:lookup_lead_unit) { |b| b.frm.button(name: 'methodToCall.performLookup.(!!org.kuali.kra.bo.Unit!!).(((unitNumber:document.awardList[0].unitNumber))).((`document.awardList[0].unitNumber:unitNumber`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchorDetailsDates').click }
13
+ element(:activity_type) { |b| b.frm.select(name: 'document.awardList[0].activityTypeCode') }
14
+ element(:award_type) { |b| b.frm.select(name: 'document.awardList[0].awardTypeCode') }
15
+ element(:award_title) { |b| b.frm.text_field(name: 'document.awardList[0].title') }
16
+ element(:sponsor_id) { |b| b.frm.text_field(name: 'document.awardList[0].sponsorCode') }
17
+ action(:lookup_sponsor) { |b| b.frm.button(name: 'methodToCall.performLookup.(!!org.kuali.kra.bo.Sponsor!!).(((sponsorCode:document.awardList[0].sponsorCode,sponsorName:document.awardList[0].sponsor.sponsorName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchorDetailsDates').click }
18
+ element(:project_start_date) { |b| b.frm.text_field(name: 'document.awardList[0].awardEffectiveDate') }
19
+ element(:project_end_date) { |b| b.frm.text_field(name: 'document.awardList[0].awardAmountInfos[0].finalExpirationDate') }
20
+ element(:obligation_start_date) { |b| b.frm.text_field(name: /currentFundEffectiveDate/) }
21
+ element(:obligation_end_date) { |b| b.frm.text_field(name: /obligationExpirationDate/) }
22
+ element(:anticipated_amount) { |b| b.frm.text_field(name: /anticipatedTotalAmount/) }
23
+ element(:obligated_amount) { |b| b.frm.text_field(name: /amountObligatedToDate/) }
24
+
25
+ end
@@ -0,0 +1,7 @@
1
+ class AwardActions < KCAwards
2
+
3
+ award_header_elements
4
+ route_log
5
+ validation_elements
6
+
7
+ end
@@ -0,0 +1,9 @@
1
+ class AwardBudgetVersions < KCAwards
2
+
3
+ award_header_elements
4
+ error_messages
5
+ budget_versions_elements
6
+
7
+ alias_method :new, :add
8
+
9
+ end
@@ -0,0 +1,27 @@
1
+ class Commitments < KCAwards
2
+
3
+ award_header_elements
4
+ error_messages
5
+
6
+ element(:new_cost_sharing_percentage) { |b| b.frm.text_field(name: 'costShareFormHelper.newAwardCostShare.costSharePercentage') }
7
+ element(:new_cost_sharing_type) { |b| b.frm.select(name: 'costShareFormHelper.newAwardCostShare.costShareTypeCode') }
8
+ element(:new_cost_sharing_project_period) { |b| b.frm.text_field(name: 'costShareFormHelper.newAwardCostShare.projectPeriod') }
9
+ element(:new_cost_sharing_commitment_amount) { |b| b.frm.text_field(name: 'costShareFormHelper.newAwardCostShare.commitmentAmount') }
10
+ action(:add_cost_sharing) { |b| b.frm.button(name: 'methodToCall.addCostShare.anchor').click; b.loading }
11
+
12
+ element(:new_rate) { |b| b.frm.text_field(name: 'newAwardFandaRate.applicableFandaRate') }
13
+ element(:new_rate_type) { |b| b.frm.select(name: 'newAwardFandaRate.fandaRateTypeCode') }
14
+ element(:new_rate_fiscal_year) { |b| b.frm.text_field(name: 'newAwardFandaRate.fiscalYear') }
15
+ element(:new_rate_start_date) { |b| b.frm.text_field(name: 'newAwardFandaRate.startDate') }
16
+ element(:new_rate_campus) { |b| b.frm.select(name: 'newAwardFandaRate.onCampusFlag') }
17
+ action(:add_rate) { |b| b.frm.button(name: 'methodToCall.addFandaRate.anchorRates').click; b.loading }
18
+
19
+ element(:on_campus) { |b| b.frm.text_field(name: 'document.awardList[0].specialEbRateOnCampus') }
20
+ element(:off_campus) { |b| b.frm.text_field(name: 'document.awardList[0].specialEbRateOffCampus') }
21
+
22
+ element(:sponsor_authorized_amount) { |b| b.frm.text_field(name: 'document.awardList[0].preAwardAuthorizedAmount') }
23
+ element(:sponsor_effective_date) { |b| b.frm.text_field(name: 'document.awardList[0].preAwardEffectiveDate') }
24
+ element(:institutional_authorized_amount) { |b| b.frm.text_field(name: 'document.awardList[0].preAwardInstitutionalAuthorizedAmount') }
25
+ element(:institutional_effective_date) { |b| b.frm.text_field(name: 'document.awardList[0].preAwardInstitutionalEffectiveDate') }
26
+
27
+ end
@@ -0,0 +1,19 @@
1
+ class AwardContacts < KCAwards
2
+
3
+ award_header_elements
4
+
5
+ element(:kp_employee_user_name) { |b| b.frm.text_field(name: 'projectPersonnelBean.newProjectPerson.person.fullName') }
6
+ element(:kp_non_employee_id) { |b| b.frm.text_field(name: 'projectPersonnelBean.newProjectPerson.rolodex.fullName') }
7
+ element(:kp_project_role) { |b| b.frm.select(name: 'projectPersonnelBean.contactRoleCode') }
8
+ element(:key_person_role) { |b| b.frm.text_field(name: 'projectPersonnelBean.newAwardContact.keyPersonRole') }
9
+ action(:add_key_person) { |b| b.frm.button(name: 'methodToCall.addProjectPerson').click; b.loading }
10
+
11
+ element(:unit_employee_user_name) { |b| b.frm.text_field(name: 'unitContactsBean.newAwardContact.fullName') }
12
+ element(:unit_project_role) { |b| b.frm.select(name: 'unitContactsBean.unitContact.unitAdministratorTypeCode') }
13
+ action(:add_unit_contact) { |b| b.frm.button(name: 'unitContactsBean.unitContact.unitAdministratorTypeCode').click; b.loading }
14
+
15
+ element(:sponsor_non_employee_id) { |b| b.frm.text_field(name: 'sponsorContactsBean.newAwardContact.rolodex.fullName') }
16
+ element(:sponsor_project_role){ |b| b.frm.select(name: 'sponsorContactsBean.contactRoleCode') }
17
+ action(:add_sponsor_contact) { |b| b.frm.button(name: 'methodToCall.addSponsorContact').click; b.loading }
18
+
19
+ end
@@ -0,0 +1,6 @@
1
+ class AwardCustomData < KCAwards
2
+
3
+ award_header_elements
4
+ custom_data
5
+
6
+ end
@@ -0,0 +1,26 @@
1
+ class PaymentReportsTerms < KCAwards
2
+
3
+ award_header_elements
4
+
5
+ element(:payment_basis) { |b| b.frm.select(name: 'document.awardList[0].basisOfPaymentCode') }
6
+ element(:payment_method) { |b| b.frm.select(name: 'document.awardList[0].methodOfPaymentCode') }
7
+ element(:payment_type) { |b| b.frm.select(name: 'awardReportsBean.newAwardReportTerms[2].reportCode') }
8
+ action(:add_payment_type) { |b| b.frm.button(name: 'methodToCall.addAwardReportTerm.reportClass6.reportClassIndex2.anchorReportClasses:PaymentInvoiceRequirements').click; b.loading }
9
+
10
+ report_types 'Financial', 'Intellectual Property', 'Procurement', 'Property',
11
+ 'Proposals Due', 'Technical/Management'
12
+ terms 'Equipment Approval', 'Invention', 'Prior Approval', 'Property', 'Publication',
13
+ 'Referenced Document', 'Rights In Data', 'Subaward Approval', 'Travel Restrictions'
14
+
15
+ element(:approved_equipment) { |b| b.frm.text_field(name: 'approvedEquipmentBean.newAwardApprovedEquipment.item') }
16
+ element(:equipment_amount) { |b| b.frm.text_field(name: 'approvedEquipmentBean.newAwardApprovedEquipment.amount') }
17
+ action(:add_approved_equipment) { |b| b.frm(name: 'methodToCall.addApprovedEquipmentItem.anchorSpecialApproval:ApprovedEquipment').click; b.loading }
18
+
19
+ action(:lookup_employee_traveler_name) { |b| b.frm.button(name: 'methodToCall.performLookup.(!!org.kuali.kra.bo.KcPerson!!).(((personId:approvedForeignTravelBean.newApprovedForeignTravel.personId,fullName:approvedForeignTravelBean.newApprovedForeignTravel.travelerName))).((`approvedForeignTravelBean.newApprovedForeignTravel.personId:contactIdId`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchorSpecialApproval:ApprovedForeignTravel').click; b.loading }
20
+ action(:lookup_non_empl_traveler_name) { |b| b.frm.button(name: 'methodToCall.performLookup.(!!org.kuali.kra.bo.NonOrganizationalRolodex!!).(((rolodexId:approvedForeignTravelBean.newApprovedForeignTravel.rolodexId,fullName:approvedForeignTravelBean.newApprovedForeignTravel.travelerName))).((`approvedForeignTravelBean.newApprovedForeignTravel.rolodexId:contactId`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchorSpecialApproval:ApprovedForeignTravel').click; b.loading }
21
+ element(:destination) { |b| b.frm.text_field(name: 'approvedForeignTravelBean.newApprovedForeignTravel.destination') }
22
+ element(:end_date) { |b| b.frm.text_field(name: 'approvedForeignTravelBean.newApprovedForeignTravel.startDate') }
23
+ element(:travel_amount) { |b| b.frm.text_field(name: 'approvedForeignTravelBean.newApprovedForeignTravel.amount') }
24
+ action(:add_approved_travel) { |b| b.frm.button(name: 'methodToCall.addApprovedForeignTravel.anchorSpecialApproval:ApprovedForeignTravel').click; b.loading }
25
+
26
+ end
@@ -0,0 +1,7 @@
1
+ class AwardsSpecialReview < KCAwards
2
+
3
+ award_header_elements
4
+ error_messages
5
+ special_review
6
+
7
+ end
@@ -0,0 +1,36 @@
1
+ class TimeAndMoney < KCAwards
2
+
3
+ award_header_elements
4
+ error_messages
5
+ description_field
6
+
7
+ action(:return_to_award) { |b| b.return_button.click; b.loading }
8
+ element(:return_button) { |b| b.frm.button(name: 'methodToCall.returnToAward') }
9
+
10
+ element(:transaction_type_code) { |b| b.frm.select(name: 'document.awardAmountTransactions[0].transactionTypeCode') }
11
+
12
+ action(:obligation_start_date) { |award_id, b| b.hierarchy_table.row(text: /#{award_id}/).text_field(name: /currentFundEffectiveDate/) }
13
+ action(:obligation_end_date) { |award_id, b| b.hierarchy_table.row(text: /#{award_id}/).text_field(name: /obligationExpirationDate/) }
14
+ action(:project_end) { |award_id, b| b.hierarchy_table.row(text: /#{award_id}/).text_field(name: /finalExpirationDate/) }
15
+ action(:obligated) { |award_id, b| b.hierarchy_table.row(text: /#{award_id}/).text_field(name: /amountObligatedToDate/) }
16
+ action(:anticipated) { |award_id, b| b.hierarchy_table.row(text: /#{award_id}/).text_field(name: /anticipatedTotalAmount/) }
17
+
18
+ element(:transaction_comment) { |b| b.frm.text_field(name: 'transactionBean.newPendingTransaction.comments') }
19
+ element(:source_award) { |b| b.frm.select(name: 'transactionBean.newPendingTransaction.sourceAwardNumber') }
20
+ element(:destination_award) { |b| b.frm.select(name: 'transactionBean.newPendingTransaction.destinationAwardNumber') }
21
+ element(:obligated_change) { |b| b.frm.text_field(name: 'transactionBean.newPendingTransaction.obligatedAmount') }
22
+ element(:anticipated_change) { |b| b.frm.text_field(name: 'transactionBean.newPendingTransaction.anticipatedAmount') }
23
+ action(:add_transaction) { |b| b.frm.button(name: /methodToCall.addTransaction.anchorTransactions\d+/).click; b.loading }
24
+
25
+ action(:go_to) { |award_id, b| b.award_select.set(award_id); b.switch_award }
26
+
27
+ element(:award_select) { |b| b.frm.select(name: 'goToAwardNumber') }
28
+ action(:switch_award) { |b| b.frm.button(name: 'methodToCall.switchAward').click; b.loading }
29
+
30
+ # ==========
31
+ private
32
+ # ==========
33
+
34
+ element(:hierarchy_table) { |b| b.frm.div(class: 'awardHierarchy').table }
35
+
36
+ end
@@ -0,0 +1,31 @@
1
+ class BudgetActions < BudgetDocument
2
+
3
+ action(:turn_on_validation) { |b| b.frm.button(name: 'methodToCall.activate').click; b.loading }
4
+ action(:consolidate_expense_justifications) { |b| b.frm.button(name: 'methodToCall.consolidateExpenseJustifications').click }
5
+ element(:justification_text) { |b| b.frm.text_field(name: 'budgetJustification.justificationText') }
6
+
7
+ # Subaward Budget
8
+ # adding...
9
+ element(:add_organization_id) { |b| b.frm.text_field(name: 'newSubAward.organizationId') }
10
+ element(:add_comments) { |b| b.frm.text_field(name: 'newSubAward.comments') }
11
+ element(:add_file_name) { |b| b.frm.file_field(name: 'newSubAward.newSubAwardFile') }
12
+ action(:add_subaward_budget) { |b| b.frm.button(name: 'methodToCall.addSubAward.anchorSubawardBudget').click; b.loading }
13
+ action(:look_up_organization) { |b| b.frm.button(name: 'methodToCall.performLookup.(!!org.kuali.kra.bo.Organization!!).(((organizationId:newSubAward.organizationId,organizationName:newSubAward.organizationName))).((`newSubAward.organizationId:organizationId`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchorSubawardBudget').click }
14
+ value(:organization_name) { |b| b.frm.div(id: 'newSubAward.organizationName.div').text }
15
+
16
+ # editing...
17
+ action(:organization_id) { |name, b| b.frm.text_field(name: "document.budget.budgetSubAwards[#{b.target_subaward(name)}].organizationId") }
18
+ action(:show_attachment_details) { |name, b| b.frm.button(title: 'open Attachment Details', index: b.target_subaward(name).to_i).click }
19
+ action(:show_details) { |name, b| b.frm.button(title: 'open Details', index: b.target_subaward(name).to_i).click }
20
+ action(:direct_cost) { |name, b| b.frm.text_field(name: "document.budget.budgetSubAwards[#{b.target_subaward(name)}].budgetSubAwardPeriodDetails[0].directCost") }
21
+ action(:f_and_a_cost) { |name, b| b.frm.text_field(name: "document.budget.budgetSubAwards[#{b.target_subaward(name)}].budgetSubAwardPeriodDetails[0].indirectCost") }
22
+ action(:cost_sharing) { |name, b| b.frm.text_field(name: "document.budget.budgetSubAwards[#{b.target_subaward(name)}].budgetSubAwardPeriodDetails[0].costShare") }
23
+ action(:total_cost) { |name, b| b.frm.span(class: 'totalCost', index: b.target_subaward(name).to_i).text }
24
+
25
+ # ========
26
+ private
27
+ # ========
28
+
29
+ action(:target_subaward) { |item, b| b.frm.div(text: item).id[/(?<=\[)\d+/] }
30
+
31
+ end
@@ -0,0 +1,13 @@
1
+ class BudgetVersions < ProposalDevelopmentDocument
2
+
3
+ proposal_header_elements
4
+ budget_versions_elements
5
+
6
+ element(:name_of_copy) { |b| b.frm.text_field(name: /budgetVersionOverview.documentDescription/) }
7
+
8
+ action(:final) { |budget, p| p.budgetline(budget).checkbox(title: 'Final?') }
9
+
10
+ action(:residual_funds) { |budget, p| p.budget_table(budget)[0][1].text }
11
+
12
+
13
+ end
@@ -0,0 +1,16 @@
1
+ class ModularBudget < BudgetDocument
2
+
3
+ element(:budget_period) { |b| b.frm.select(name: 'modularSelectedPeriod') }
4
+ action(:update_view) { |b| b.frm.button(name: 'methodToCall.updateView').click; b.loading }
5
+
6
+ element(:direct_cost_less_cons_fa) { |b| b.frm.text_field(title: 'Direct Cost Less Consortium FNA') }
7
+ element(:consortium_f_and_a) { |b| b.frm.text_field(title: 'Consortium FNA') }
8
+
9
+ element(:f_and_a_rate_type) { |b| b.frm.select(name: 'newBudgetModularIdc.description') }
10
+ element(:f_and_a_rate) { |b| b.frm.text_field(name: 'newBudgetModularIdc.idcRate') }
11
+ element(:f_and_a_base) { |b| b.frm.text_field(name: 'newBudgetModularIdc.idcBase') }
12
+ action(:add_f_and_a) { |b| b.frm.button(name: 'methodToCall.add').click; b.loading }
13
+
14
+ action(:sync) { |b| b.frm.button(name: 'methodToCall.sync').click; b.loading }
15
+
16
+ end
@@ -0,0 +1,11 @@
1
+ class NonPersonnel < BudgetDocument
2
+
3
+ select_budget_period
4
+
5
+ element(:new_participant_object_code) { |b| b.frm.select(name: 'newBudgetLineItems[2].costElement') }
6
+ element(:new_participant_base_cost) { |b| b.frm.text_field(name: 'newBudgetLineItems[2].lineItemCost') }
7
+ action(:add_participant_support) { |b| b.frm.button(name: 'methodToCall.addBudgetLineItem.budgetCategoryTypeCodeS.catTypeIndex2.anchorParticipantSupport').click; b.loading }
8
+
9
+
10
+
11
+ end
@@ -0,0 +1,65 @@
1
+ class Parameters < BudgetDocument
2
+
3
+ #Budget Overview
4
+ value(:project_start_date) { |p| p.bo_table[0][1].text }
5
+ value(:project_end_date) { |p| p.bo_table[1][1].text }
6
+ element(:total_direct_cost_limit) { |b| b.frm.text_field(name: 'document.budget.totalDirectCostLimit') }
7
+ element(:on_off_campus) { |b| b.frm.select(name: 'document.budget.onOffCampusFlag') }
8
+ element(:comments) { |b| b.frm.text_field(name: 'document.budget.comments') }
9
+ element(:budget_status) { |b| b.frm.select(name: 'document.budget.budgetStatus') }
10
+ element(:final) { |b| b.frm.checkbox(name: 'document.budget.finalVersionFlag') }
11
+ element(:modular_budget) { |b| b.frm.checkbox(name: 'document.budget.modularBudgetFlag') }
12
+ element(:residual_funds) { |b| b.frm.text_field(name: 'document.budget.residualFunds') }
13
+ element(:total_cost_limit) { |b| b.frm.text_field(name: 'document.budget.totalCostLimit') }
14
+ element(:unrecovered_fa_rate_type) { |b| b.frm.select(name: 'document.budget.urRateClassCode') }
15
+ element(:f_and_a_rate_type) { |b| b.frm.select(name: 'document.budget.ohRateClassCode') }
16
+ element(:submit_cost_sharing) { |b| b.frm.checkbox(name:'document.budget.submitCostSharingFlag') }
17
+
18
+ #Adding new budget period
19
+ element(:period_start_date) { |b| b.frm.text_field(name: 'newBudgetPeriod.startDate') }
20
+ element(:period_end_date) { |b| b.frm.text_field(name: 'newBudgetPeriod.endDate') }
21
+ element(:total_sponsor_cost) { |b| b.frm.text_field(name: 'newBudgetPeriod.totalCost') }
22
+ element(:direct_cost) { |b| b.frm.text_field(name: 'newBudgetPeriod.totalDirectCost') }
23
+ element(:fa_cost) { |b| b.frm.text_field(name: 'newBudgetPeriod.totalIndirectCost') }
24
+ element(:unrecovered_fa_cost) { |b| b.frm.text_field(name: 'newBudgetPeriod.underrecoveryAmount') }
25
+ element(:cost_sharing) { |b| b.frm.text_field(name: 'newBudgetPeriod.costSharingAmount') }
26
+ element(:cost_limit) { |b| b.frm.text_field(name: 'newBudgetPeriod.totalCostLimit') }
27
+ element(:direct_cost_limit) { |b| b.frm.text_field(name: 'newBudgetPeriod.directCostLimit') }
28
+ action(:add_budget_period) { |b| b.frm.button(name:'methodToCall.recalculateBudgetPeriod.anchorBudgetPeriodsTotals').click }
29
+
30
+ # These are for editing existing budget periods,
31
+ # based on the number in the left-most column.
32
+ action(:start_date_period) { |period, b| b.frm.text_field(id: "document.budget.budgetPeriods[#{period-1}].startDate") }
33
+ action(:end_date_period) { |period, b| b.frm.text_field(id: "document.budget.budgetPeriods[#{period-1}].endDate") }
34
+ action(:total_sponsor_cost_period) { |period, b| b.frm.text_field(id: "document.budget.budgetPeriods[#{period-1}].totalCost") }
35
+ action(:direct_cost_period) { |period, b| b.frm.text_field(id: "document.budget.budgetPeriods[#{period-1}].totalDirectCost") }
36
+ action(:fa_cost_period) { |period, b| b.frm.text_field(id: "document.budget.budgetPeriods[#{period-1}].totalIndirectCost") }
37
+ action(:unrecovered_fa_period) { |period, b| b.frm.text_field(id: "document.budget.budgetPeriods[#{period-1}].underrecoveryAmount") }
38
+ action(:cost_sharing_period) { |period, b| b.frm.text_field(id: "document.budget.budgetPeriods[#{period-1}].costSharingAmount") }
39
+ action(:cost_limit_period) { |period, b| b.frm.text_field(id: "document.budget.budgetPeriods[#{period-1}].totalCostLimit") }
40
+ action(:direct_cost_limit_period) { |period, b| b.frm.text_field(id: "document.budget.budgetPeriods[#{period-1}].directCostLimit") }
41
+ action(:delete_period) { |period, b| b.frm.button(name: "methodToCall.deleteBudgetPeriod.line#{period-1}.anchor12").click }
42
+
43
+ value(:period_count) { |b| b.frm.text_fields(title: 'Period Start Date').size-1 }
44
+
45
+ action(:recalculate) { |b| b.frm.button(name: 'methodToCall.recalculateBudgetPeriod.anchorBudgetPeriodsTotals').click }
46
+
47
+ element(:warnings) do |b|
48
+ warns = []
49
+ b.tab_containers.each do |div|
50
+ if div.li.exist?
51
+ warns << div.lis.collect{ |li| li.text }
52
+ end
53
+ end
54
+ warns.flatten
55
+ end
56
+
57
+ # =======
58
+ private
59
+ # =======
60
+
61
+ element(:bo_table) { |b| b.frm.div(id: 'tab-BudgetOverview-div').table }
62
+
63
+ element(:tab_containers) { |b| b.divs(class: 'tab-container') }
64
+
65
+ end
@@ -0,0 +1,56 @@
1
+ class Personnel < BudgetDocument
2
+
3
+ select_budget_period
4
+ glbl 'View Personnel Salaries'
5
+
6
+ action(:job_code) { |person, b| b.pp_row(person).text_field(title: 'Job Code') }
7
+ action(:appointment_type) { |person, b| b.pp_row(person).select(title: 'Appointment Type') }
8
+ action(:base_salary) { |person, b| b.pp_row(person).text_field(title: '* Base Salary') }
9
+ action(:salary_effective_date) { |person, b| b.pp_row(person).text_field(title: '* Salary Effective Date') }
10
+ action(:salary_anniversary_date) { |person, b| b.pp_row(person).text_field(title: 'Salary Anniversary Date') }
11
+ action(:delete_person) { |person, b| b.pp_row(person).button(name: /methodToCall.deleteBudgetPerson.line\d+/) }
12
+ action(:sync_personnel) { |b| b.frm.button(name: 'methodToCall.synchToProposal').click; b.loading }
13
+
14
+ element(:person) { |b| b.frm.select(name: 'newBudgetPersonnelDetails.personSequenceNumber') }
15
+ element(:object_code_name) { |b| b.frm.select(name: /newBudgetLineItems[\d+].costElement/) }
16
+ action(:add_person) { |b| b.frm.button(class: 'addButton').click; b.loading }
17
+
18
+ action(:start_date) { |person, b| b.start_date_fields[b.find_person_index(person)] }
19
+ action(:end_date) { |person, b| b.end_date_fields[b.find_person_index(person)] }
20
+ action(:percent_effort) { |person, b| b.effort_fields[b.find_person_index(person)] }
21
+ action(:percent_charged) { |person, b| b.charged_fields[b.find_person_index(person)] }
22
+ action(:period_type) { |person, b| b.period_type_fields[b.find_person_index(person)] }
23
+ action(:requested_salary) { |person, b| b.period_type(person).parent.parent.parent.td(index: 6).text }
24
+ action(:calculated_fringe) { |person, b| b.period_type(person).parent.parent.parent.td(index: 7).text }
25
+ action(:calculate) { |person, b| b.period_type(person).parent.parent.parent.button(name: /methodToCall.calculateSalary/).click; b.loading }
26
+ action(:delete) { |person, b| b.period_type(person).parent.parent.parent.button(name: /methodToCall.deleteBudgetPersonnelDetails/).click; b.loading }
27
+
28
+ action(:budget_category) { |person, b| b.budget_category_fields[b.find_person_index(person)] }
29
+ action(:number_of_persons) { |person, b| b.num_persons_fields[b.find_person_index(person)] }
30
+ action(:on_off_campus) { |person, b| b.on_off_campus_fields[b.find_person_index(person)] }
31
+ action(:submit_cost_sharing) { |person, b| b.submit_cost_sharing_fields[b.find_person_index(person)] }
32
+
33
+ # ========
34
+ private
35
+ # ========
36
+
37
+ element(:project_personnel_table) { |b| b.frm.table(id: 'budget-personnel-table') }
38
+ action(:pp_row) { |person, b| b.project_personnel_table.row(text: /#{person}/) }
39
+ element(:budget_overview_table) { |b| b.frm.div(id: /tab-BudgetOverviewPeriod\d+-div/).div(class: 'tab-container').table }
40
+ element(:personnel_detail_tab) { |b| b.frm.div(id: /tab-PersonnelDetailPeriod\d+-div/) }
41
+ element(:person_rows) { |b| b.personnel_detail_tab.divs(text: /\A\s*\d+\s*\z/, align: 'center') }
42
+ element(:start_date_fields) { |b| b.frm.text_fields(title: '* Start Date') }
43
+ element(:end_date_fields) { |b| b.frm.text_fields(title: '* End Date') }
44
+ element(:effort_fields) { |b| b.frm.text_fields(title: '% Effort') }
45
+ element(:charged_fields) { |b| b.frm.text_fields(title: '% Charged') }
46
+ element(:period_type_fields) { |b| b.frm.selects(class: 'Period Type') }
47
+ element(:budget_category_fields) { |b| b.frm.selects(title: 'Budget Category') }
48
+ element(:num_persons_fields) { |b| b.frm.text_fields(title: 'Quantity') }
49
+ element(:on_off_campus_fields) { |b| b.frm.checkboxes(title: 'On/Off Campus') }
50
+ element(:submit_cost_sharing_fields) { |b| b.frm.checkboxes(title: 'Submit Cost Sharing?') }
51
+
52
+ value(:persons_list) { |b| b.person_rows.collect{ |row| row.parent.parent.td.text} }
53
+
54
+ action(:find_person_index) { |person, b| b.persons_list.find_index{ |item| item.include? person } }
55
+
56
+ end
@@ -0,0 +1,7 @@
1
+ class Rates < BudgetDocument
2
+
3
+ glbl 'Sync All Rates', 'Reset All Rates'
4
+
5
+ action(:applicable_rate) { |desc, on_camp, f_yr, b| b.frm.tr(/^#{desc}.#{on_camp}.#{f_yr}/m).text_field(title: '* Applicable Rate') }
6
+
7
+ end
@@ -0,0 +1,5 @@
1
+ class Summary < BudgetDocument
2
+
3
+
4
+
5
+ end
@@ -0,0 +1,19 @@
1
+ class BudgetDocument < BasePage
2
+
3
+ budget_header_elements
4
+ global_buttons
5
+ document_header_elements
6
+ error_messages
7
+ tab_buttons
8
+
9
+ class << self
10
+
11
+ def select_budget_period
12
+ element(:budget_period) { |b| b.frm.select(name: 'viewBudgetPeriod') }
13
+ element(:view) { |b| b.frm.select(name: 'viewBudgetView') }
14
+ action(:update_view) { |b| b.frm.button(title: 'Update View').click }
15
+ end
16
+
17
+ end
18
+
19
+ end