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.
- data/Gemfile +1 -1
- data/Gemfile.lock +16 -18
- data/chromedriver.log +46 -0
- data/features/grants_gov/grants_gov_forms/code_and_form_mapping.feature +26 -0
- data/features/grants_gov/grants_gov_forms/forms_validation.feature +1 -0
- data/features/grants_gov/grants_gov_forms/s2s_questionnaire.feature +19 -0
- data/features/grants_gov/s2s_submission.feature +30 -0
- data/features/grants_gov/s2s_validation.feature +36 -0
- data/features/proposal_development/create_budget_versions.feature +31 -0
- data/features/proposal_development/create_proposal.feature +25 -0
- data/features/proposal_development/key_personnel_validations.feature +41 -0
- data/features/proposal_development/proposal_actions_validations.feature +46 -0
- data/features/proposal_development/proposal_permissions.feature +73 -0
- data/features/proposal_development/proposal_workflow.feature +105 -0
- data/features/proposal_development/special_review_validations.feature +12 -0
- data/features/step_definitions/action_list.rb +12 -0
- data/features/step_definitions/awards/create_award.rb +3 -0
- data/features/step_definitions/grants_gov/forms.rb +34 -0
- data/features/step_definitions/grants_gov/s2s_submission.rb +51 -0
- data/features/step_definitions/institutional_proposals/create_institutional_proposal.rb +3 -0
- data/features/step_definitions/proposal_development/budget_versions.rb +102 -0
- data/features/step_definitions/proposal_development/create_proposal.rb +157 -0
- data/features/step_definitions/proposal_development/edit_proposal.rb +79 -0
- data/features/step_definitions/proposal_development/institute_rates.rb +21 -0
- data/features/step_definitions/proposal_development/key_personnel_validations.rb +74 -0
- data/features/step_definitions/proposal_development/proposal_actions_validations.rb +73 -0
- data/features/step_definitions/proposal_development/proposal_permissions.rb +141 -0
- data/features/step_definitions/proposal_development/proposal_workflow.rb +81 -0
- data/features/step_definitions/proposal_development/s2s_validation.rb +30 -0
- data/features/step_definitions/proposal_development/special_review_validations.rb +7 -0
- data/features/step_definitions/test.rb +3 -0
- data/features/step_definitions/users.rb +65 -0
- data/features/support/env.rb +35 -0
- data/features/test.feature +13 -0
- data/kuality-coeus.gemspec +1 -1
- data/lib/chromedriver.log +4483 -0
- data/lib/kuality-coeus.rb +5 -2
- data/lib/kuality-coeus/core_extensions.rb +10 -0
- data/lib/kuality-coeus/data_objects/award/award.rb +126 -0
- data/lib/kuality-coeus/data_objects/award/award_transaction.rb +57 -0
- data/lib/kuality-coeus/data_objects/budget/budget_periods.rb +114 -0
- data/lib/kuality-coeus/data_objects/budget/budget_versions.rb +221 -0
- data/lib/kuality-coeus/data_objects/budget/subaward_budget.rb +65 -0
- data/lib/kuality-coeus/data_objects/committee_document/committee_document.rb +65 -0
- data/lib/kuality-coeus/data_objects/committee_document/committee_members.rb +30 -0
- data/lib/kuality-coeus/data_objects/committee_document/committee_schedule.rb +27 -0
- data/lib/kuality-coeus/data_objects/committee_document/member_roles.rb +28 -0
- data/lib/kuality-coeus/data_objects/conflict_of_interest/financial_entity.rb +48 -0
- data/lib/kuality-coeus/data_objects/grants_gov/phs_fellowship_questionnaire.rb +90 -0
- data/lib/kuality-coeus/data_objects/grants_gov/phs_training_budget_questionnaire.rb +5 -0
- data/lib/kuality-coeus/data_objects/institutional_proposal/institutional_proposal.rb +20 -0
- data/lib/kuality-coeus/data_objects/institutional_proposal/intellectual_property_review.rb +62 -0
- data/lib/kuality-coeus/data_objects/navigation.rb +64 -0
- data/lib/kuality-coeus/data_objects/proposal_development/compliance_questions.rb +47 -0
- data/lib/kuality-coeus/data_objects/proposal_development/custom_data.rb +41 -0
- data/lib/kuality-coeus/data_objects/proposal_development/degrees.rb +40 -0
- data/lib/kuality-coeus/data_objects/proposal_development/key_personnel.rb +299 -0
- data/lib/kuality-coeus/data_objects/proposal_development/kuali_university_questions.rb +58 -0
- data/lib/kuality-coeus/data_objects/proposal_development/permissions.rb +107 -0
- data/lib/kuality-coeus/data_objects/proposal_development/personnel_attachments.rb +46 -0
- data/lib/kuality-coeus/data_objects/proposal_development/proposal_attachments.rb +41 -0
- data/lib/kuality-coeus/data_objects/proposal_development/proposal_development.rb +301 -0
- data/lib/kuality-coeus/data_objects/proposal_development/proposal_questions.rb +52 -0
- data/lib/kuality-coeus/data_objects/proposal_development/s2s_questionnaire.rb +129 -0
- data/lib/kuality-coeus/data_objects/proposal_development/special_review.rb +79 -0
- data/lib/kuality-coeus/data_objects/rates/institute_rate.rb +209 -0
- data/lib/kuality-coeus/data_objects/user.rb +303 -33
- data/lib/kuality-coeus/gem_extensions.rb +26 -0
- data/lib/kuality-coeus/page_objects/000_base_page.rb +196 -14
- data/lib/kuality-coeus/page_objects/action_list.rb +32 -0
- data/lib/kuality-coeus/page_objects/award/award.rb +25 -0
- data/lib/kuality-coeus/page_objects/award/award_actions.rb +7 -0
- data/lib/kuality-coeus/page_objects/award/award_budget_versions.rb +9 -0
- data/lib/kuality-coeus/page_objects/award/commitments.rb +27 -0
- data/lib/kuality-coeus/page_objects/award/contacts.rb +19 -0
- data/lib/kuality-coeus/page_objects/award/custom_data.rb +6 -0
- data/lib/kuality-coeus/page_objects/award/payment_reports_terms.rb +26 -0
- data/lib/kuality-coeus/page_objects/award/special_review.rb +7 -0
- data/lib/kuality-coeus/page_objects/award/time_and_money.rb +36 -0
- data/lib/kuality-coeus/page_objects/budget/budget_actions.rb +31 -0
- data/lib/kuality-coeus/page_objects/budget/budget_versions.rb +13 -0
- data/lib/kuality-coeus/page_objects/budget/modular_budget.rb +16 -0
- data/lib/kuality-coeus/page_objects/budget/non-personnel.rb +11 -0
- data/lib/kuality-coeus/page_objects/budget/parameters.rb +65 -0
- data/lib/kuality-coeus/page_objects/budget/personnel.rb +56 -0
- data/lib/kuality-coeus/page_objects/budget/rates.rb +7 -0
- data/lib/kuality-coeus/page_objects/budget/summary.rb +5 -0
- data/lib/kuality-coeus/page_objects/budget_document.rb +19 -0
- data/lib/kuality-coeus/page_objects/central_admin.rb +4 -2
- data/lib/kuality-coeus/page_objects/committee/committee.rb +10 -10
- data/lib/kuality-coeus/page_objects/committee/members.rb +4 -4
- data/lib/kuality-coeus/page_objects/committee_document.rb +1 -6
- data/lib/kuality-coeus/page_objects/confirmation.rb +16 -0
- data/lib/kuality-coeus/page_objects/disclosure/disclosure.rb +56 -0
- data/lib/kuality-coeus/page_objects/disclosure/disclosure_actions.rb +9 -0
- data/lib/kuality-coeus/page_objects/document_header.rb +5 -0
- data/lib/kuality-coeus/page_objects/financial_entities.rb +1 -4
- data/lib/kuality-coeus/page_objects/financial_entities/my_financial_entities.rb +6 -0
- data/lib/kuality-coeus/page_objects/financial_entities/new_financial_entity.rb +11 -0
- data/lib/kuality-coeus/page_objects/financial_entities/reporter.rb +5 -3
- data/lib/kuality-coeus/page_objects/identity/person.rb +57 -0
- data/lib/kuality-coeus/page_objects/institute_rates_maintenance.rb +18 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal.rb +18 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/contacts.rb +32 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/custom_data.rb +6 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/distribution.rb +20 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/institutional_proposal.rb +27 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/institutional_proposal_actions.rb +7 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/intellectual_property_review.rb +20 -0
- data/lib/kuality-coeus/page_objects/institutional_proposal/special_review.rb +6 -0
- data/lib/kuality-coeus/page_objects/kc_awards.rb +48 -0
- data/lib/kuality-coeus/page_objects/kc_protocol.rb +15 -0
- data/lib/kuality-coeus/page_objects/login.rb +4 -5
- data/lib/kuality-coeus/page_objects/lookup_pages/000_lookups.rb +10 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/action_list_filter.rb +6 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/address_book_lookup.rb +4 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/development_proposal_lookup.rb +3 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/document_search.rb +10 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/group_lookup.rb +3 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/institute_rates_lookup.rb +12 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/opportunity_lookup.rb +6 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/organization_lookup.rb +5 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/person_extended_attributes.rb +5 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/person_lookup.rb +10 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/role_lookup.rb +6 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/sponsor_lookup.rb +9 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/unit_admin_lookup.rb +3 -0
- data/lib/kuality-coeus/page_objects/lookup_pages/unit_lookup.rb +3 -0
- data/lib/kuality-coeus/page_objects/maintenance.rb +7 -0
- data/lib/kuality-coeus/page_objects/notification_editor.rb +6 -0
- data/lib/kuality-coeus/page_objects/proposal_development.rb +7 -2
- data/lib/kuality-coeus/page_objects/proposal_development/abstracts_and_attachments.rb +54 -0
- data/lib/kuality-coeus/page_objects/proposal_development/key_personnel.rb +126 -0
- data/lib/kuality-coeus/page_objects/proposal_development/pd_custom_data.rb +6 -0
- data/lib/kuality-coeus/page_objects/proposal_development/permissions.rb +44 -0
- data/lib/kuality-coeus/page_objects/proposal_development/phs_fellowship_questionnaire.rb +44 -0
- data/lib/kuality-coeus/page_objects/proposal_development/phs_training_budget_questionnaire.rb +50 -0
- data/lib/kuality-coeus/page_objects/proposal_development/proposal.rb +47 -8
- data/lib/kuality-coeus/page_objects/proposal_development/proposal_actions.rb +62 -0
- data/lib/kuality-coeus/page_objects/proposal_development/proposal_summary.rb +9 -0
- data/lib/kuality-coeus/page_objects/proposal_development/questions.rb +111 -0
- data/lib/kuality-coeus/page_objects/proposal_development/s2s.rb +35 -0
- data/lib/kuality-coeus/page_objects/proposal_development/special_review.rb +6 -0
- data/lib/kuality-coeus/page_objects/protocol/custom_data.rb +6 -0
- data/lib/kuality-coeus/page_objects/protocol/permissions.rb +5 -0
- data/lib/kuality-coeus/page_objects/protocol/personnel.rb +5 -0
- data/lib/kuality-coeus/page_objects/protocol/protocol.rb +11 -0
- data/lib/kuality-coeus/page_objects/protocol/questionnaire.rb +5 -0
- data/lib/kuality-coeus/page_objects/protocol/special_review.rb +6 -0
- data/lib/kuality-coeus/page_objects/rejection_confirmation.rb +5 -0
- data/lib/kuality-coeus/page_objects/researcher.rb +4 -2
- data/lib/kuality-coeus/page_objects/shared/unit_administrator.rb +13 -0
- data/lib/kuality-coeus/page_objects/system/person_extended_attributes.rb +18 -0
- data/lib/kuality-coeus/page_objects/system_admin.rb +7 -0
- data/lib/kuality-coeus/page_objects/unit.rb +2 -4
- data/lib/kuality-coeus/utilities.rb +39 -0
- data/libpeerconnection.log +0 -0
- metadata +140 -5
- data/lib/kuality-coeus/data_objects/committee_document.rb +0 -65
- data/lib/kuality-coeus/data_objects/proposal_development.rb +0 -53
- 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,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,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,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,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
|