Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RESSUP-1388] check prime sponsor when evaluating if multi PI project #1595

Open
wants to merge 8 commits into
base: contrib
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -35,7 +35,6 @@
import org.kuali.coeus.common.framework.person.KcPersonService;
import org.kuali.coeus.common.framework.rolodex.PersonRolodex;
import org.kuali.coeus.common.framework.rolodex.Rolodex;
import org.kuali.coeus.common.framework.sponsor.Sponsorable;
import org.kuali.coeus.common.framework.unit.Unit;
import org.kuali.coeus.propdev.impl.core.DevelopmentProposal;
import org.kuali.coeus.propdev.impl.hierarchy.HierarchyMaintainable;
@@ -45,6 +44,7 @@
import org.kuali.coeus.sys.framework.service.KcServiceLocator;
import org.kuali.kra.award.home.ContactRole;
import org.kuali.rice.krad.data.jpa.converters.BooleanYNConverter;
import org.kuali.rice.krad.bo.PersistableBusinessObject;

/**
* BudgetPerson business object
@@ -669,7 +669,7 @@ public ContactRole getContactRole() {
}

@Override
public Sponsorable getParent() {
public PersistableBusinessObject getParent() {
return getPersonRolodex() != null ? getPersonRolodex().getParent() : null;
}

Original file line number Diff line number Diff line change
@@ -18,9 +18,8 @@
*/
package org.kuali.coeus.common.framework.rolodex;

import org.kuali.coeus.common.framework.sponsor.Sponsorable;
import org.kuali.kra.award.home.ContactRole;

import org.kuali.rice.krad.bo.PersistableBusinessObject;

public interface PersonRolodex {
public String getPersonId();
@@ -29,7 +28,7 @@ public interface PersonRolodex {
public boolean isOtherSignificantContributorFlag();
public String getProjectRole();
public ContactRole getContactRole();
public Sponsorable getParent();
public PersistableBusinessObject getParent();
public String getInvestigatorRoleDescription();
public boolean isInvestigator();
public boolean isPrincipalInvestigator();

This file was deleted.

Original file line number Diff line number Diff line change
@@ -20,6 +20,7 @@

import org.apache.commons.lang3.StringUtils;
import org.kuali.coeus.common.api.sponsor.hierarchy.SponsorHierarchyService;
import org.kuali.coeus.common.api.sponsor.Sponsorable;
import org.kuali.coeus.common.framework.sponsor.hierarchy.SponsorHierarchy;
import org.kuali.rice.krad.service.BusinessObjectService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -82,6 +83,15 @@ public boolean isSponsorNihMultiplePi(String sponsorCode) {
return isSponsorInHierarchy(sponsorCode, SPONSOR_HIERARCHY_NIH_MULT_PI);
}

@Override
public boolean isSponsorableNihMultiplePi(Sponsorable sponsorable) {
if (sponsorable == null) {
throw new IllegalArgumentException("The Sponsorable cannot be null");
}
return isSponsorNihMultiplePi(sponsorable.getSponsorCode()) ||
(sponsorable.getPrimeSponsorCode() != null && isSponsorNihMultiplePi(sponsorable.getPrimeSponsorCode()));
}

@Override
public boolean isSponsorNihOsc(String sponsorCode) {
return isSponsorInHierarchy(sponsorCode, SPONSOR_HIERARCHY_NIH_OSC);
Original file line number Diff line number Diff line change
@@ -116,7 +116,7 @@ private boolean alternateIncompleteAttachmentValidation(DevelopmentProposal deve

public boolean checkNihRelatedAttachments(DevelopmentProposal developmentProposal) {
boolean valid = true;
if(getSponsorHierarchyService().isSponsorNihMultiplePi(developmentProposal.getSponsorCode())
if(getSponsorHierarchyService().isSponsorableNihMultiplePi(developmentProposal)
&& developmentProposal.getS2sOpportunity() != null){
boolean attachment = false;
boolean hasPI= false;
Original file line number Diff line number Diff line change
@@ -27,6 +27,7 @@
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang3.StringUtils;
import org.kuali.coeus.common.api.sponsor.hierarchy.SponsorHierarchyService;
import org.kuali.coeus.common.api.sponsor.Sponsorable;
import org.kuali.coeus.common.budget.framework.calculator.BudgetCalculationService;
import org.kuali.coeus.common.budget.framework.core.Budget;
import org.kuali.coeus.common.budget.framework.core.BudgetAuditRuleEvent;
@@ -216,8 +217,8 @@ public void setSponsorHierarchyService(SponsorHierarchyService sponsorHierarchyS
this.sponsorHierarchyService = sponsorHierarchyService;
}

public boolean isShowModularBudgetQuestion(String sponsorCode) {
return getSponsorHierarchyService().isSponsorNihMultiplePi(sponsorCode);
public boolean isShowModularBudgetQuestion(Sponsorable sponsorable) {
return getSponsorHierarchyService().isSponsorableNihMultiplePi(sponsorable);
}

public boolean displayPersonSalaryByPeriod() {
Original file line number Diff line number Diff line change
@@ -178,7 +178,7 @@ public void prepareBudgetSubAwards(Budget budget) {

public void generateSubAwardLineItems(BudgetSubAwards subAward, ProposalDevelopmentBudgetExt budget) {
ScaleTwoDecimal amountChargeFA = new ScaleTwoDecimal(25000);
boolean isNihProposal = getSponsorHierarchyService().isSponsorNihMultiplePi(budget.getDevelopmentProposal().getSponsorCode());
boolean isNihProposal = getSponsorHierarchyService().isSponsorableNihMultiplePi(budget.getDevelopmentProposal());
String directLtCostElement = getParameterService().getParameterValueAsString(Budget.class, Constants.SUBCONTRACTOR_DIRECT_LT_25K_PARAM);
String directGtCostElement = getParameterService().getParameterValueAsString(Budget.class, Constants.SUBCONTRACTOR_DIRECT_GT_25K_PARAM);
String inDirectLtCostElement = getParameterService().getParameterValueAsString(Budget.class, Constants.SUBCONTRACTOR_F_AND_A_LT_25K_PARAM);
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@
import org.kuali.coeus.common.framework.org.Organization;
import org.kuali.coeus.common.framework.rolodex.Rolodex;
import org.kuali.coeus.common.framework.sponsor.Sponsor;
import org.kuali.coeus.common.framework.sponsor.Sponsorable;
import org.kuali.coeus.common.api.sponsor.Sponsorable;
import org.kuali.coeus.common.framework.type.ActivityType;
import org.kuali.coeus.common.framework.type.DeadlineType;
import org.kuali.coeus.common.framework.type.InvestigatorCreditType;
Original file line number Diff line number Diff line change
@@ -25,6 +25,7 @@

import org.apache.commons.beanutils.PropertyUtils;
import org.kuali.coeus.common.api.sponsor.hierarchy.SponsorHierarchyService;
import org.kuali.coeus.common.api.sponsor.Sponsorable;
import org.kuali.coeus.common.budget.framework.calculator.BudgetCalculationService;
import org.kuali.coeus.common.framework.auth.perm.KcAuthorizationService;
import org.kuali.coeus.common.framework.custom.DocumentCustomData;
@@ -995,8 +996,8 @@ public void setSponsorHierarchyService(SponsorHierarchyService sponsorHierarchyS
this.sponsorHierarchyService = sponsorHierarchyService;
}

public boolean isShowModularBudgetQuestion(String sponsorCode) {
return getSponsorHierarchyService().isSponsorNihMultiplePi(sponsorCode);
public boolean isShowModularBudgetQuestion(Sponsorable sponsorable) {
return getSponsorHierarchyService().isSponsorableNihMultiplePi(sponsorable);
}

public boolean syncRequiresEndDateExtension(DevelopmentProposal proposal) {
Original file line number Diff line number Diff line change
@@ -130,7 +130,7 @@ else if (institutionalProposal != null && !StringUtils.isBlank(institutionalProp
}
}
}
if (federalId != null && getSponsorHierarchyService().isSponsorNihMultiplePi(proposal.getSponsorCode())) {
if (federalId != null && getSponsorHierarchyService().isSponsorableNihMultiplePi(proposal)) {
return fromatFederalId(federalId);
}
return federalId;
Original file line number Diff line number Diff line change
@@ -30,7 +30,7 @@
import org.kuali.coeus.common.framework.person.PropAwardPersonRole;
import org.kuali.coeus.common.framework.person.PropAwardPersonRoleService;
import org.kuali.coeus.common.framework.person.attr.CitizenshipType;
import org.kuali.coeus.common.framework.sponsor.Sponsorable;
import org.kuali.coeus.common.api.sponsor.Sponsorable;
import org.kuali.coeus.common.framework.unit.Unit;
import org.kuali.coeus.propdev.api.person.ProposalPersonContract;
import org.kuali.coeus.propdev.impl.hierarchy.HierarchyMaintainable;
@@ -48,6 +48,7 @@
import org.kuali.coeus.sys.api.model.ScaleTwoDecimal;
import org.kuali.kra.infrastructure.Constants;
import org.kuali.rice.core.api.mo.common.active.MutableInactivatable;
import org.kuali.rice.krad.bo.PersistableBusinessObject;
import org.kuali.rice.krad.data.jpa.converters.BooleanYNConverter;
import org.kuali.rice.krad.service.BusinessObjectService;
import org.springframework.util.CollectionUtils;
@@ -1612,7 +1613,7 @@ public void setDevelopmentProposal(DevelopmentProposal developmentProposal) {
}

@Override
public Sponsorable getParent() {
public PersistableBusinessObject getParent() {
return getDevelopmentProposal();
}

Original file line number Diff line number Diff line change
@@ -247,7 +247,7 @@ private String getOtherCategoryMapTypeDescription(DevelopmentProposal developmen

private BudgetCategoryMap getBudgetCategoryMap(DevelopmentProposal developmentProposal, BudgetLineItem budgetLineItem) {
boolean isNih = getSponsorHierarchyService().isSponsorNihOsc(developmentProposal.getSponsorCode())
|| getSponsorHierarchyService().isSponsorNihMultiplePi(developmentProposal.getSponsorCode());
|| getSponsorHierarchyService().isSponsorableNihMultiplePi(developmentProposal);
String mappingName = isNih?"NIH_PRINTING":"NSF_PRINTING";
BudgetCategoryMap budgetCategoryMap = null;
Map<String, String> categoryMap = new HashMap<String, String>();
Original file line number Diff line number Diff line change
@@ -901,7 +901,7 @@ private ConsortiumCosts getConsortiumCosts(DevelopmentProposal developmentPropos
BudgetModular budgetModular = budgetPeriod.getBudgetModular();
consortiumDirectCost = budgetModular.getConsortiumFna();
}else{
boolean isNih = getSponsorHierarchyService().isSponsorNihOsc(developmentProposal.getSponsorCode()) || getSponsorHierarchyService().isSponsorNihMultiplePi(developmentProposal.getSponsorCode());
boolean isNih = getSponsorHierarchyService().isSponsorNihOsc(developmentProposal.getSponsorCode()) || getSponsorHierarchyService().isSponsorableNihMultiplePi(developmentProposal);
String mappingName = isNih?"NIH_PRINTING":"NSF_PRINTING";

String fnaGt25KParamValue = getParameterService().getParameterValueAsString(Budget.class, "SUBCONTRACTOR_F_AND_A_GT_25K");
@@ -986,7 +986,7 @@ public void setCount(int count) {
private void setNSFOtherPersonnels(DevelopmentProposal developmentProposal, BudgetPeriod budgetPeriod,
gov.nih.era.projectmgmt.sbir.cgap.nihspecificNamespace.BudgetSummaryType.BudgetPeriod budgetPeriodType) {
NSFOtherPersonnelType otherPersonnelType = budgetPeriodType.addNewNSFOtherPersonnel();
boolean isNih = getSponsorHierarchyService().isSponsorNihOsc(developmentProposal.getSponsorCode()) || getSponsorHierarchyService().isSponsorNihMultiplePi(developmentProposal.getSponsorCode());
boolean isNih = getSponsorHierarchyService().isSponsorNihOsc(developmentProposal.getSponsorCode()) || getSponsorHierarchyService().isSponsorableNihMultiplePi(developmentProposal);
String mappingName = isNih?"NIH_PRINTING":"NSF_PRINTING";

OtherPersonInfo otherPersonInfo = getOtherPersonInfo(budgetPeriod,mappingName,"01-Secretarial");
Original file line number Diff line number Diff line change
@@ -71,7 +71,7 @@ public boolean processRunAuditBusinessRules(Document document) {
getAuditErrors(S2S_PAGE_NAME,S2S_OPPORTUNITY_SECTION_NAME,"").add(new org.kuali.rice.krad.util.AuditError(REVISION_CODE_KEY, KeyConstants.ERROR_IF_PROPOSALTYPE_IS_REVISION, S2S_PAGE_ID+"."+S2S_OPPORTUNITY_SECTION_ID));
}
if((getSponsorHierarchyService().isSponsorNihOsc(proposalDevelopmentDocument.getDevelopmentProposal().getSponsorCode())||
getSponsorHierarchyService().isSponsorNihMultiplePi(proposalDevelopmentDocument.getDevelopmentProposal().getSponsorCode()))&&
getSponsorHierarchyService().isSponsorableNihMultiplePi(proposalDevelopmentDocument.getDevelopmentProposal()))&&
proposalDevelopmentDocument.getDevelopmentProposal().getS2sOpportunity()!=null &&
proposalDevelopmentDocument.getDevelopmentProposal().getS2sOpportunity().getCompetetionId()!=null &&
proposalDevelopmentDocument.getDevelopmentProposal().getS2sOpportunity().getCompetetionId().equals("ADOBE-FORMS-A")){
Original file line number Diff line number Diff line change
@@ -24,13 +24,14 @@
import org.kuali.coeus.common.framework.rolodex.NonOrganizationalRolodex;
import org.kuali.coeus.common.framework.person.PropAwardPersonRole;
import org.kuali.coeus.common.framework.person.PropAwardPersonRoleService;
import org.kuali.coeus.common.framework.sponsor.Sponsorable;
import org.kuali.kra.award.home.Award;
import org.kuali.kra.award.awardhierarchy.sync.AwardSyncableProperty;
import org.kuali.kra.award.home.ContactRole;
import org.kuali.kra.bo.AbstractProjectPerson;
import org.kuali.coeus.common.framework.rolodex.PersonRolodex;
import org.kuali.coeus.sys.api.model.ScaleTwoDecimal;
import org.kuali.coeus.sys.framework.service.KcServiceLocator;
import org.kuali.rice.krad.bo.PersistableBusinessObject;

import java.util.ArrayList;
import java.util.HashMap;
@@ -323,7 +324,7 @@ public int compareTo(AwardPerson o) {
}
}

public Sponsorable getParent() {
public Award getParent() {
return getAward();
}

Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@
import org.kuali.coeus.common.framework.person.KcPersonService;
import org.kuali.coeus.common.framework.version.sequence.owner.SequenceOwner;
import org.kuali.coeus.common.framework.sponsor.Sponsor;
import org.kuali.coeus.common.framework.sponsor.Sponsorable;
import org.kuali.coeus.common.api.sponsor.Sponsorable;
import org.kuali.coeus.common.framework.type.ActivityType;
import org.kuali.coeus.common.framework.type.ProposalType;
import org.kuali.coeus.common.framework.unit.Unit;
Original file line number Diff line number Diff line change
@@ -98,7 +98,7 @@ public AwardDocument createNewAwardVersion(AwardDocument awardDocument) throws V
newVersion.getAwardAmountInfos().get(0).setOriginatingAwardVersion(newVersion.getSequenceNumber());
newVersion.getAwardAmountInfos().get(0).setTimeAndMoneyDocumentNumber(null);
newVersion.getAwardAmountInfos().get(0).setSequenceNumber(newVersion.getSequenceNumber());
newVersion.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorNihMultiplePi(newVersion.getSponsorCode()));
newVersion.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorableNihMultiplePi(newVersion));

synchNewCustomAttributes(newVersion, awardDocument.getAward());

Original file line number Diff line number Diff line change
@@ -1076,7 +1076,7 @@ protected void loadDocument(KualiDocumentFormBase kualiForm) throws WorkflowExce
super.loadDocument(kualiForm);
Award award = ((AwardForm) kualiForm).getAwardDocument().getAward();
if (!((AwardForm) kualiForm).getAwardDocument().isPlaceHolderDocument()) {
award.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorNihMultiplePi(award.getSponsorCode()));
award.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorableNihMultiplePi(award));
}
}

Original file line number Diff line number Diff line change
@@ -282,7 +282,7 @@ public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletReq

awardDocument.getAward().refreshReferenceObject("sponsor");
Award award = awardDocument.getAward();
award.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorNihMultiplePi(award.getSponsorCode()));
award.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorableNihMultiplePi(award));

persistSpecialReviewProtocolFundingSourceLink(award, isAwardProtocolLinkingEnabled);
}
Original file line number Diff line number Diff line change
@@ -23,13 +23,14 @@
import org.kuali.coeus.common.framework.rolodex.NonOrganizationalRolodex;
import org.kuali.coeus.common.framework.person.PropAwardPersonRole;
import org.kuali.coeus.common.framework.person.PropAwardPersonRoleService;
import org.kuali.coeus.common.framework.sponsor.Sponsorable;
import org.kuali.kra.institutionalproposal.home.InstitutionalProposal;
import org.kuali.coeus.sys.framework.service.KcServiceLocator;
import org.kuali.kra.award.home.ContactRole;
import org.kuali.kra.bo.AbstractProjectPerson;
import org.kuali.coeus.common.framework.rolodex.PersonRolodex;
import org.kuali.coeus.common.framework.type.InvestigatorCreditType;
import org.kuali.coeus.sys.api.model.ScaleTwoDecimal;
import org.kuali.rice.krad.bo.PersistableBusinessObject;

import java.util.ArrayList;
import java.util.HashMap;
@@ -316,7 +317,7 @@ public void resetPersistenceState() {
this.setInstitutionalProposalContactId(null);
}

public Sponsorable getParent() {
public InstitutionalProposal getParent() {
return this.getInstitutionalProposal();
}

Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@
import org.kuali.coeus.common.framework.rolodex.Rolodex;
import org.kuali.coeus.common.framework.version.sequence.owner.SequenceOwner;
import org.kuali.coeus.common.framework.sponsor.Sponsor;
import org.kuali.coeus.common.framework.sponsor.Sponsorable;
import org.kuali.coeus.common.api.sponsor.Sponsorable;
import org.kuali.coeus.common.framework.type.ActivityType;
import org.kuali.coeus.common.framework.type.ProposalType;
import org.kuali.coeus.common.framework.unit.Unit;
Original file line number Diff line number Diff line change
@@ -371,7 +371,7 @@ public ActionForward docHandler(ActionMapping mapping, ActionForm form, HttpServ
protected void loadDocument(KualiDocumentFormBase kualiDocumentFormBase) throws WorkflowException {
super.loadDocument(kualiDocumentFormBase);
InstitutionalProposal proposal = ((InstitutionalProposalForm) kualiDocumentFormBase).getInstitutionalProposalDocument().getInstitutionalProposal();
proposal.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorNihMultiplePi(proposal.getSponsorCode()));
proposal.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorableNihMultiplePi(proposal));
//work around to make sure project person reference to inst prop is to the same instance as the document has
//without this the references were different causing issues when the sponsor was changed.
if (!proposal.getProjectPersons().isEmpty()) {
Original file line number Diff line number Diff line change
@@ -280,7 +280,7 @@ public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletReq
getProposalLogService().promoteProposalLog(proposalLog.getProposalNumber());
this.getNegotationService().promoteProposalLogNegotiation(proposalLog.getProposalNumber(), ip.getProposalNumber());
}
ip.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorNihMultiplePi(ip.getSponsorCode()));
ip.setSponsorNihMultiplePi(getSponsorHierarchyService().isSponsorableNihMultiplePi(ip));
return forward;
}

Original file line number Diff line number Diff line change
@@ -181,7 +181,7 @@
</property>
</bean>
<bean parent="Uif-InputField" p:propertyName="modularBudget" p:label="Will this be a modular budget?" p:order="60"
p:required="true" p:render="@{#ViewHelper.isShowModularBudgetQuestion(developmentProposal.sponsorCode)}">
p:required="true" p:render="@{#ViewHelper.isShowModularBudgetQuestion(developmentProposal)}">
<property name="control">
<bean parent="Uif-HorizontalRadioControl">
<property name="options">
Loading