From d50e7384ab077992dfcc7a7643ce99f9e3ed204d Mon Sep 17 00:00:00 2001 From: Kenji Tanaka Date: Thu, 14 Mar 2024 14:48:59 -0500 Subject: [PATCH] :sparkles: feat(summary): Update full cluster report with Soil information --- .../action/projects/DeliverableAction.java | 9 +- .../summaries/ReportingSummaryAction.java | 252 ++++++++++-------- .../main/resources/custom/aicrra.properties | 2 +- .../src/main/resources/global.properties | 2 +- .../pentaho/crp/ProjectFullPDF(Planning).prpt | Bin 266510 -> 266591 bytes .../crp/ProjectFullPDF(Reporting).prpt | Bin 263058 -> 263140 bytes .../crp/views/projects/deliverableInfo.ftl | 2 +- 7 files changed, 155 insertions(+), 112 deletions(-) diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/projects/DeliverableAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/projects/DeliverableAction.java index c6472fa300..085484c599 100644 --- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/projects/DeliverableAction.java +++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/projects/DeliverableAction.java @@ -694,12 +694,15 @@ public void fillSoilIndicatorsText() { for (SoilIndicator soilIndicator : soilIndicators) { if (soilIndicator != null && soilIndicator.getIndicatorName() != null) { if (soilIndicatorsText == null) { - soilIndicatorsText = soilIndicator.getIndicatorName(); + soilIndicatorsText = soilIndicatorsText + "(" + soilIndicator.getIndicatorName(); } else { - soilIndicatorsText.concat(", " + soilIndicator.getIndicatorName()); + soilIndicatorsText = soilIndicatorsText + ", " + soilIndicator.getIndicatorName(); } } - + } + if (soilIndicatorsText != null && !soilIndicatorsText.isEmpty()) { + soilIndicatorsText = soilIndicatorsText.replace("null", ""); + soilIndicatorsText = soilIndicatorsText + ")"; } } } catch (Exception e) { diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ReportingSummaryAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ReportingSummaryAction.java index e57dc9964a..75e551d3f7 100644 --- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ReportingSummaryAction.java +++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ReportingSummaryAction.java @@ -25,6 +25,8 @@ import org.cgiar.ccafs.marlo.data.manager.DeliverableCrossCuttingMarkerManager; import org.cgiar.ccafs.marlo.data.manager.DeliverableGeographicRegionManager; import org.cgiar.ccafs.marlo.data.manager.DeliverableLocationManager; +import org.cgiar.ccafs.marlo.data.manager.DeliverableShfrmPriorityActionManager; +import org.cgiar.ccafs.marlo.data.manager.DeliverableShfrmSubActionManager; import org.cgiar.ccafs.marlo.data.manager.GenderTypeManager; import org.cgiar.ccafs.marlo.data.manager.GlobalUnitManager; import org.cgiar.ccafs.marlo.data.manager.InstitutionManager; @@ -55,104 +57,7 @@ import org.cgiar.ccafs.marlo.data.manager.RepositoryChannelManager; import org.cgiar.ccafs.marlo.data.manager.SrfTargetUnitManager; import org.cgiar.ccafs.marlo.data.manager.UserManager; -import org.cgiar.ccafs.marlo.data.model.Activity; -import org.cgiar.ccafs.marlo.data.model.CrpProgram; -import org.cgiar.ccafs.marlo.data.model.CrpProgramOutcome; -import org.cgiar.ccafs.marlo.data.model.CrpProgramOutcomeIndicator; -import org.cgiar.ccafs.marlo.data.model.CrpTargetUnit; -import org.cgiar.ccafs.marlo.data.model.Deliverable; -import org.cgiar.ccafs.marlo.data.model.DeliverableActivity; -import org.cgiar.ccafs.marlo.data.model.DeliverableCrossCuttingMarker; -import org.cgiar.ccafs.marlo.data.model.DeliverableCrp; -import org.cgiar.ccafs.marlo.data.model.DeliverableCrpOutcome; -import org.cgiar.ccafs.marlo.data.model.DeliverableDataSharingFile; -import org.cgiar.ccafs.marlo.data.model.DeliverableDissemination; -import org.cgiar.ccafs.marlo.data.model.DeliverableFundingSource; -import org.cgiar.ccafs.marlo.data.model.DeliverableGeographicRegion; -import org.cgiar.ccafs.marlo.data.model.DeliverableGeographicScope; -import org.cgiar.ccafs.marlo.data.model.DeliverableIntellectualAsset; -import org.cgiar.ccafs.marlo.data.model.DeliverableIntellectualAssetPantentTypeEnum; -import org.cgiar.ccafs.marlo.data.model.DeliverableIntellectualAssetTypeEnum; -import org.cgiar.ccafs.marlo.data.model.DeliverableLocation; -import org.cgiar.ccafs.marlo.data.model.DeliverableMetadataElement; -import org.cgiar.ccafs.marlo.data.model.DeliverableParticipant; -import org.cgiar.ccafs.marlo.data.model.DeliverablePublicationMetadata; -import org.cgiar.ccafs.marlo.data.model.DeliverableQualityCheck; -import org.cgiar.ccafs.marlo.data.model.DeliverableType; -import org.cgiar.ccafs.marlo.data.model.DeliverableUser; -import org.cgiar.ccafs.marlo.data.model.DeliverableUserPartnership; -import org.cgiar.ccafs.marlo.data.model.DeliverableUserPartnershipPerson; -import org.cgiar.ccafs.marlo.data.model.ExpectedStudyProject; -import org.cgiar.ccafs.marlo.data.model.GlobalUnitProject; -import org.cgiar.ccafs.marlo.data.model.Institution; -import org.cgiar.ccafs.marlo.data.model.IpElement; -import org.cgiar.ccafs.marlo.data.model.IpIndicator; -import org.cgiar.ccafs.marlo.data.model.IpProjectContribution; -import org.cgiar.ccafs.marlo.data.model.IpProjectIndicator; -import org.cgiar.ccafs.marlo.data.model.LocElement; -import org.cgiar.ccafs.marlo.data.model.ProgramType; -import org.cgiar.ccafs.marlo.data.model.Project; -import org.cgiar.ccafs.marlo.data.model.ProjectBudget; -import org.cgiar.ccafs.marlo.data.model.ProjectClusterActivity; -import org.cgiar.ccafs.marlo.data.model.ProjectCommunication; -import org.cgiar.ccafs.marlo.data.model.ProjectComponentLesson; -import org.cgiar.ccafs.marlo.data.model.ProjectDeliverableShared; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudy; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyCenter; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyCountry; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyCrp; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyCrpOutcome; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyFlagship; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyGeographicScope; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyInfo; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyInnovation; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyInstitution; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyLink; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyPolicy; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyQuantification; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyReference; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudyRegion; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudySrfTarget; -import org.cgiar.ccafs.marlo.data.model.ProjectExpectedStudySubIdo; -import org.cgiar.ccafs.marlo.data.model.ProjectFocus; -import org.cgiar.ccafs.marlo.data.model.ProjectHighlight; -import org.cgiar.ccafs.marlo.data.model.ProjectHighlightCountry; -import org.cgiar.ccafs.marlo.data.model.ProjectHighlightType; -import org.cgiar.ccafs.marlo.data.model.ProjectHighligthsTypeEnum; -import org.cgiar.ccafs.marlo.data.model.ProjectInfo; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovation; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovationContributingOrganization; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovationCountry; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovationCrp; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovationDeliverable; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovationGeographicScope; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovationInfo; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovationOrganization; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovationRegion; -import org.cgiar.ccafs.marlo.data.model.ProjectInnovationShared; -import org.cgiar.ccafs.marlo.data.model.ProjectLeverage; -import org.cgiar.ccafs.marlo.data.model.ProjectLocation; -import org.cgiar.ccafs.marlo.data.model.ProjectLocationElementType; -import org.cgiar.ccafs.marlo.data.model.ProjectLp6Contribution; -import org.cgiar.ccafs.marlo.data.model.ProjectLp6ContributionDeliverable; -import org.cgiar.ccafs.marlo.data.model.ProjectMilestone; -import org.cgiar.ccafs.marlo.data.model.ProjectOutcome; -import org.cgiar.ccafs.marlo.data.model.ProjectOutcomeIndicator; -import org.cgiar.ccafs.marlo.data.model.ProjectPartner; -import org.cgiar.ccafs.marlo.data.model.ProjectPartnerLocation; -import org.cgiar.ccafs.marlo.data.model.ProjectPartnerPartnership; -import org.cgiar.ccafs.marlo.data.model.ProjectPartnerPartnershipLocation; -import org.cgiar.ccafs.marlo.data.model.ProjectPartnerPartnershipResearchPhase; -import org.cgiar.ccafs.marlo.data.model.ProjectPolicy; -import org.cgiar.ccafs.marlo.data.model.ProjectPolicyCrossCuttingMarker; -import org.cgiar.ccafs.marlo.data.model.ProjectPolicyCrp; -import org.cgiar.ccafs.marlo.data.model.ProjectPolicyInnovation; -import org.cgiar.ccafs.marlo.data.model.ProjectPolicyOwner; -import org.cgiar.ccafs.marlo.data.model.ProjectPolicySubIdo; -import org.cgiar.ccafs.marlo.data.model.ProjectStatusEnum; -import org.cgiar.ccafs.marlo.data.model.RepositoryChannel; -import org.cgiar.ccafs.marlo.data.model.SrfTargetUnit; -import org.cgiar.ccafs.marlo.data.model.Submission; +import org.cgiar.ccafs.marlo.data.model.*; import org.cgiar.ccafs.marlo.utils.APConfig; import org.cgiar.ccafs.marlo.utils.FileManager; import org.cgiar.ccafs.marlo.utils.HTMLParser; @@ -285,6 +190,8 @@ public static Predicate distinctByKey(Function keyExtractor private final DeliverableGeographicRegionManager deliverableGeographicRegionManager; private final ProjectDeliverableSharedManager projectDeliverableSharedManager; private final UserManager userManager; + private final DeliverableShfrmPriorityActionManager deliverableShfrmPriorityActionManager; + private final DeliverableShfrmSubActionManager deliverableShfrmSubActionManager; @Inject public ReportingSummaryAction(APConfig config, GlobalUnitManager crpManager, ProjectManager projectManager, @@ -313,7 +220,9 @@ public ReportingSummaryAction(APConfig config, GlobalUnitManager crpManager, Pro ActivityManager activityManager, DeliverableActivityManager deliverableActivityManager, DeliverableLocationManager deliverableLocationManager, DeliverableGeographicRegionManager deliverableGeographicRegionManager, - ProjectDeliverableSharedManager projectDeliverableSharedManager, UserManager userManager) { + ProjectDeliverableSharedManager projectDeliverableSharedManager, UserManager userManager, + DeliverableShfrmPriorityActionManager deliverableShfrmPriorityActionManager, + DeliverableShfrmSubActionManager deliverableShfrmSubActionManager) { super(config, crpManager, phaseManager, projectManager); this.programManager = programManager; this.institutionManager = institutionManager; @@ -352,6 +261,8 @@ public ReportingSummaryAction(APConfig config, GlobalUnitManager crpManager, Pro this.deliverableGeographicRegionManager = deliverableGeographicRegionManager; this.projectDeliverableSharedManager = projectDeliverableSharedManager; this.userManager = userManager; + this.deliverableShfrmPriorityActionManager = deliverableShfrmPriorityActionManager; + this.deliverableShfrmSubActionManager = deliverableShfrmSubActionManager; } /** @@ -667,6 +578,12 @@ private MasterReport addi8nParameters(MasterReport masterReport) { masterReport.getParameterValues().put("i8nDeliverableType", this.getText("deliverable.type")); masterReport.getParameterValues().put("i8nDeliverableNewExpectedYear", this.getText("deliverable.newExpectedYear")); masterReport.getParameterValues().put("i8nDeliverablesActivities", this.getText("project.activities.title")); + masterReport.getParameterValues().put("i8nDeliverablesContributingSHFRM", + this.getText("deliverable.shfrmContribution.question.reporting")); + masterReport.getParameterValues().put("i8nDeliverablesContributingNarrative", + this.getText("deliverable.shfrmContribution.narrative.reporting")); + masterReport.getParameterValues().put("i8nDeliverablesActions", + "To which Priority(ies) action is contributing to:"); /* * Activities */ @@ -2807,7 +2724,8 @@ private TypedTableModel getDeliverablesReportingTableModel() { "intellectualAssetPvpBreederCrop", "intellectualAssetDateFilling", "intellectualAssetDateRegistration", "intellectualAssetDateExpiry", "intellectualAssetAdditionalInformation", "intellectualAssetLinkPublished", "intellectualAssetCommunication", "otherPartner", "deliv_description", "activities", "geographicScope", - "countries", "regions", "sharedClusters", "focusEvent", "likelyOutcomes"}, + "countries", "regions", "sharedClusters", "focusEvent", "likelyOutcomes", "isContributing", + "contributingNarrative", "shfrmActions"}, new Class[] {Long.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, @@ -2820,7 +2738,7 @@ private TypedTableModel getDeliverablesReportingTableModel() { String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, - String.class, String.class, String.class}, + String.class, String.class, String.class, String.class, String.class, String.class}, 0); SimpleDateFormat formatter = new SimpleDateFormat("MMM yyyy"); if (!project.getDeliverables().isEmpty()) { @@ -3741,6 +3659,67 @@ private TypedTableModel getDeliverablesReportingTableModel() { } } } + + String isContributing = "", contributingNarrative = "", shfrmActions = ""; + + // SOIL Contribution + if (deliverable.getDeliverableInfo() != null + && deliverable.getDeliverableInfo().getContributingShfrm() != null) { + if (deliverable.getDeliverableInfo().getContributingShfrm() == true) { + isContributing = "Yes"; + } else { + isContributing = "No"; + } + } else { + isContributing = ""; + } + + if (isContributing.equals("Yes")) { + + if (deliverable.getDeliverableInfo().getShfrmContributionNarrativeAR() != null) { + contributingNarrative = deliverable.getDeliverableInfo().getShfrmContributionNarrativeAR(); + } else { + contributingNarrative = ""; + } + + List actions = new ArrayList<>(); + List subActions = new ArrayList<>(); + String actionsText = ""; + + try { + actions = deliverableShfrmPriorityActionManager.findByDeliverableAndPhase(deliverable.getId(), + this.getSelectedPhase().getId()); + + if (actions != null && !actions.isEmpty()) { + for (DeliverableShfrmPriorityAction action : actions) { + if (action != null && action.getShfrmPriorityAction() != null + && action.getShfrmPriorityAction().getId() != null + && action.getShfrmPriorityAction().getComposedName() != null) { + actionsText += "
● " + action.getShfrmPriorityAction().getComposedName(); + subActions = deliverableShfrmSubActionManager.findByPriorityActionAndPhase(action.getId(), + this.getSelectedPhase().getId()); + + if (subActions != null && !subActions.isEmpty()) { + actionsText += "
SubActions:
"; + for (DeliverableShfrmSubAction subAction : subActions) { + if (subAction != null && subAction.getShfrmSubAction() != null + && subAction.getShfrmSubAction().getComposedName() != null) { + actionsText += " ● " + subAction.getShfrmSubAction().getComposedName() + "
"; + } + } + } + } + } + } + shfrmActions = actionsText; + } catch (Exception e) { + LOG.error(e + " error getting shfrm actions and subactions"); + } + } else { + contributingNarrative = ""; + shfrmActions = ""; + } + model.addRow(new Object[] {deliverable.getId(), deliverable.getDeliverableInfo().getTitle(), delivType, delivSubType, delivStatus, delivYear, keyOutput, leader, institution, fundingSources, crossCutting, delivNewYear, delivNewYearJustification, delivDisseminationChannel, delivDisseminationUrl, delivOpenAccess, @@ -3758,7 +3737,7 @@ private TypedTableModel getDeliverablesReportingTableModel() { intellectualAssetPvpBreederCrop, intellectualAssetDateFilling, intellectualAssetDateRegistration, intellectualAssetDateExpiry, intellectualAssetAdditionalInformation, intellectualAssetLinkPublished, intellectualAssetCommunication, otherPartner, delivDescription, activities, geographicScope, countries, - regions, sharedClusters, focusEvent, likelyOutcomes}); + regions, sharedClusters, focusEvent, likelyOutcomes, isContributing, contributingNarrative, shfrmActions}); } } return model; @@ -3784,7 +3763,7 @@ private TypedTableModel getDeliverablesTableModel() { "intellectualAssetPvpBreederCrop", "intellectualAssetDateFilling", "intellectualAssetDateRegistration", "intellectualAssetDateExpiry", "intellectualAssetAdditionalInformation", "intellectualAssetLinkPublished", "intellectualAssetCommunication", "otherPartner", "deliv_description", "activities", "geographicScope", - "countries", "regions", "sharedClusters"}, + "countries", "regions", "sharedClusters", "isContributing", "contributingNarrative", "shfrmActions"}, new Class[] {Long.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, @@ -3796,7 +3775,8 @@ private TypedTableModel getDeliverablesTableModel() { Boolean.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, - String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class}, + String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, + String.class, String.class, String.class}, 0); SimpleDateFormat formatter = new SimpleDateFormat("MMM yyyy"); if (!project.getDeliverables().isEmpty()) { @@ -3822,7 +3802,8 @@ private TypedTableModel getDeliverablesTableModel() { .collect(Collectors.toList())) { String delivType = null, delivSubType = null, delivYear = null, keyOutput = "", leader = null, institution = null, fundingSources = "", deliv_description = null, otherPartner = "", activities = "", - geographicScope = "", countries = "", regions = "", sharedClusters = ""; + geographicScope = "", countries = "", regions = "", sharedClusters = "", isContributing = "", + contributingNarrative = "", shfrmActions = ""; // String delivDescription = deliverable.getDeliverableInfo(this.getSelectedPhase()).getDescription(); String delivStatus = deliverable.getDeliverableInfo(this.getSelectedPhase()).getStatusName(this.getSelectedPhase()); @@ -4685,6 +4666,65 @@ private TypedTableModel getDeliverablesTableModel() { } } } + + // SOIL Contribution + if (deliverable.getDeliverableInfo() != null + && deliverable.getDeliverableInfo().getContributingShfrm() != null) { + if (deliverable.getDeliverableInfo().getContributingShfrm() == true) { + isContributing = "Yes"; + } else { + isContributing = "No"; + } + } else { + isContributing = ""; + } + + if (isContributing.equals("Yes")) { + + if (deliverable.getDeliverableInfo().getShfrmContributionNarrative() != null) { + contributingNarrative = deliverable.getDeliverableInfo().getShfrmContributionNarrative(); + } else { + contributingNarrative = ""; + } + + List actions = new ArrayList<>(); + List subActions = new ArrayList<>(); + String actionsText = ""; + + try { + actions = deliverableShfrmPriorityActionManager.findByDeliverableAndPhase(deliverable.getId(), + this.getSelectedPhase().getId()); + + if (actions != null && !actions.isEmpty()) { + for (DeliverableShfrmPriorityAction action : actions) { + if (action != null && action.getShfrmPriorityAction() != null + && action.getShfrmPriorityAction().getId() != null + && action.getShfrmPriorityAction().getComposedName() != null) { + actionsText += "
● " + action.getShfrmPriorityAction().getComposedName(); + subActions = deliverableShfrmSubActionManager.findByPriorityActionAndPhase(action.getId(), + this.getSelectedPhase().getId()); + + if (subActions != null && !subActions.isEmpty()) { + actionsText += "
SubActions:
"; + for (DeliverableShfrmSubAction subAction : subActions) { + if (subAction != null && subAction.getShfrmSubAction() != null + && subAction.getShfrmSubAction().getComposedName() != null) { + actionsText += " ● " + subAction.getShfrmSubAction().getComposedName() + "
"; + } + } + } + } + } + } + shfrmActions = actionsText; + } catch (Exception e) { + LOG.error(e + " error getting shfrm actions and subactions"); + } + } else { + contributingNarrative = ""; + shfrmActions = ""; + } + model.addRow(new Object[] {deliverable.getId(), deliverable.getDeliverableInfo().getTitle(), delivType, delivSubType, delivStatus, delivYear, keyOutput, leader, institution, fundingSources, crossCutting, delivNewYear, delivNewYearJustification, delivDisseminationChannel, delivDisseminationUrl, delivOpenAccess, @@ -4702,7 +4742,7 @@ private TypedTableModel getDeliverablesTableModel() { intellectualAssetPvpBreederCrop, intellectualAssetDateFilling, intellectualAssetDateRegistration, intellectualAssetDateExpiry, intellectualAssetAdditionalInformation, intellectualAssetLinkPublished, intellectualAssetCommunication, otherPartner, delivDescription, activities, geographicScope, countries, - regions, sharedClusters}); + regions, sharedClusters, isContributing, contributingNarrative, shfrmActions}); } } return model; diff --git a/marlo-web/src/main/resources/custom/aicrra.properties b/marlo-web/src/main/resources/custom/aicrra.properties index 39d7874c77..08aa30ce00 100644 --- a/marlo-web/src/main/resources/custom/aicrra.properties +++ b/marlo-web/src/main/resources/custom/aicrra.properties @@ -2682,7 +2682,7 @@ project.deliverable.generalInformation.year=Year of expected completion project.deliverable.generalInformation.justification=Status justification project.deliverable.generalInformation.outcome=Outcome project.deliverable.generalInformation.keyOutput=Performance Indicators -project.deliverable.generalInformation.keyOutput.help=If you select yes in SHFRM question, please make sure to select at least one SHFRM indicator +project.deliverable.generalInformation.keyOutput.help=If you select yes in SHFRM question, please make sure to select at least one SHFRM indicator {0} project.deliverable.generalInformation.keyOutputNotice=If the indicator you are looking for is not listed, please ensure the indicator is mapped to this cluster by clicking here project.deliverable.generalInformation.keyOutputNotList1=Remember that you must to add cluster of activities project.deliverable.generalInformation.keyOutputNotList2=, then you will be able to select key outputs. diff --git a/marlo-web/src/main/resources/global.properties b/marlo-web/src/main/resources/global.properties index b5e8e367ea..15a6215330 100644 --- a/marlo-web/src/main/resources/global.properties +++ b/marlo-web/src/main/resources/global.properties @@ -2773,7 +2773,7 @@ project.deliverable.generalInformation.year=Year of expected completion project.deliverable.generalInformation.justification=Status justification project.deliverable.generalInformation.outcome=Outcome project.deliverable.generalInformation.keyOutput=Key Output -project.deliverable.generalInformation.keyOutput.help=If you select yes in SHFRM question, please make sure to select at least one SHFRM indicator +project.deliverable.generalInformation.keyOutput.help=If you select yes in SHFRM question, please make sure to select at least one SHFRM indicator {0} project.deliverable.generalInformation.keyOutputNotice=Click here to add or edit the list of contribution to performance indicators project.deliverable.generalInformation.keyOutputNotList1=Remember that you must to add cluster of activities project.deliverable.generalInformation.keyOutputNotList2=, then you will be able to select key outputs. diff --git a/marlo-web/src/main/resources/pentaho/crp/ProjectFullPDF(Planning).prpt b/marlo-web/src/main/resources/pentaho/crp/ProjectFullPDF(Planning).prpt index a59854899f874230266bf9ce801106422bf518ea..2fa6b1ab3091db7e5f79d7fddcafc584123ae5b7 100644 GIT binary patch delta 16162 zcmZV^2Rv18)VufDv+O-GvI%8nR4RLwy_1o>%6=${D1=)nt0WRaUL>O>Dk4AqmSJemEVU1@%|#tqZ%f&okRv#tvawYp~ZY7wT}8}AZd*m$V=HYPQ+ zq~BSKA9$I0`DEMZ1^Hc(LUcXlW4Gm1QJQz=@>Tq+|j$BQS ziiu@7cp% zEQ@>=BXh|G@)j$M_kK#Z(uK*Ao+lb|+ZUDmn78q$CIy8H!n2uWE9pWKXG#XF4=hkGCT9_0#hGKOs|vK%%87mJXP%T zPQ~rqWzk&8jPIeLO9S6cYKaWANy${b!fro85D`5`62Z?Pl7Wbfj0_vuG7=I86>Lb$ z+)vnx;6@#u>AJX)clF3g>5@J3?FtJA^XnfSP&jq!h^mTdLD_+shaKpl znc*4FtN!*{`A5)0wEE*uxT{o$UsVZ5Gn)!L%}rC`>Wg)Dy)-ZsY`c>`f>Gia^gQ)Pa1f>2;7^O~mZ z!{U_0&1ru%A?u9_QB=F1TX^>Cw$ygT;qa4+{z|FsOHJ?Ryfs(XjiHyLABI=-uTFTp zHc1osK0kzLR(<~E(GKms9q};xS2u3bES8OC-aYmZLT&}EtCHB>?j;*_u2gcl;JW5Y<9#pks3tdxwZ!>-%?j$- z8Y?;NN?*sw%>Ge@x|^5vhVygD4qRmq^reOa?+QrKHS^?{1-20gNc@r z+2s8L+vCCFl#7$2-0Wuq6WjDuh_lu1e-9#E-&)P}^LeZ*tybUwW~+G;hYKQpWz1BP zuFq<7jJ~u7P+Cg8Nx<*f^*lZW1}zqdYD%|SwRhQnZ3(n%yRrTBkZ7c5#+z!yCaPsB z{aw10SkQ~hfu3LVUweK)weO#26I|tvrU+atdsB-l8mCHYnvhVjq8&3o$=HtY={&{! zHf~4VjGg*7C;tZtgs-H+_qK<8lL;p+$lfqO8QWLa%OX^iHW{Q&JiK=nIMGze6?&q{ zFRJ!&3`wRScZeh4n`9fqI9gVJN`Ve_cvbQvv6-S3MfHQQ@{nnwO{fM5f$S{i9&TyI}43Re)g;_u1iJg2ly8jb_|rYpZa-DW%VGcMT4u` zdcBHWULojY-?E-+T_*L8j~8`snpkgUd_!>7Y!^aVW>LQ~UH|`ksCS0J-t#0x%ih4bCv9|FE$$BmIme-F3 zqTgQN4sApm>CVlFwvy3XHFo>xuA|5#dm)vSMbH&MUrIlhJbA za3d)!xqE6XE%vD62Z`f%M@YnPzMQTyxA-AC&Y5*$HN*9b#F}Mjj`NDvhQ{NBsrURkV{9fl?ih9BW3^a*_~NBdqAls9T@L>ejooT;W!c7hJ!-D`>^~(1cTFFu&f?s*>;@?MBec2~s;eF({K1 z+JsW`8yG4L<_(V|c@f{q&vU)8g-Vu-bUk#uzsbZ*)ZC;c~ zF^o+z)Td*dr$g&%bbq@R3b|;8b0Y2T&~Y#us(en2(2aVpO0n5DW$U>d6NY-)+xzmJ z7?*5^+pIv{TkdG3^>PDg%`^?QIxtl z(Q)=snzt^Mqo`_VZf8i7OVL#6_=M1l<;Yp_@u1PV7vdj2(3(E?U1L_GPUx+g`Tnme z(;Z~TzBZ@HCSI8vlCR}>^R)d+7i#VB>81K(q=KA+^U@Wb23a~{nIz7{Og^C{rFAUz z^6vWQ_vxD5*45dP^sOV&x+5uLoH58XmHpzF&xFQXi8TAK(s`pj2>O>y*QEGN&0;5R zA3lu`l20f3M0WTZ^}1iB?I*4yW-{+sz)c5t@=qx-a5HT$laz(n>>A0y4O$ zL`Yz&u5DiEwfk+ut2a+ZQ>^s8J|aP+V#>_m{Ho+vSX-W^L|FU~r25iT zpVMTh^!D^j%c+L9l96V5>*>4pNmB#x)%#{3R?h@&WQYx299xjMabhD7Cqz z8`63Vkht35+GBjWZj(vuoXq9d7yKnyjeL?9h%y&A6Qc{GR}b!gBAgX@v{*RS6o|Aaiu&bV+~DVn7#AdYfu$mJ%#RAxUvNp+~W(K)eHEmVC?sr5q8LAI@Bs-d-7)+8!RLLetD>Ru_tUZj8Gp8(tG-ZsH&jeF< z$I*RrNs{*xGYsmLCiCg7_>erUDofAg(#faGRG#$FQmoxGU23iE`PtJg=s4@ zMLYt}iB?N_7)_Rlx?6OORh&7Nn)Vo#eAt<)O8QndMTiImza2CheyTm2SdofC@>1u* z7`+r{5UtgN0teBO0+ z1$uMDRW(oaQg6pAKld-)wxGalS>T=8YJJotB`uTAk&DGe52#Axmd6L?XFQd|!v=Jj zG?A0eQe8}?tNMd z-tl6=vB$lJ?)CqgR+QAgBPZAA_~!l@SC#%Fmx{;D>8;HQl3RT)agNE7ZatB?$NV`j zeY>e6Zzo-8c%@BsZN6J~r*18IV+4WO2s2JV|T)6It~Cp;C7`< zoIovZ)7r-gUk8lZ^85j;KtXtUymYt{hwY21+Q(Jn7EPae=njDGL;qaZb8R}66As3VGjMjWAT34p>Y(f$lrA;aO}AscjE z9;8MuQ~`!~Mp&RtH6VzidDaOWfM#bvDoC;g?8m`Wi$GR%(JSBzeoE4BfECiO1!Qn& zscrZ%vlghrKBBGbfce`Qv}eU^F{%6 zJR8^n{1Dw2Kp3Y5Y&I*7D@;uVskMRh(86aR5r@UN0xdBPNZ=>KX5*>1ra=ny%?aQG zKJj)j)aW)^(DZ-gOav-t(1QGFvj8PDHv>`<0nS+L1L5ZK~ zwFxBSDT%iLJ)AgLrEZ)!IAg8xl(5VB@G{_`AbJP{cV%FnAzNY)Um398{7}gf$c(je zALev}h~V!KWH1LXV+g1qY^1Pue~k!f8Y?9TC89KzmWWWMDK8byXlH`_(d+fcr+~j5us2wUYO%YdJx}< zu##aIL2W=-k_-co27Q(fg^a%rU`P9_fPG0mnqpG{+aWM8^bK9`DWNN{gip6&>c5LbqCVJ%69spJHas<) z+pN%E>d_6@6(L3-Jsyp91&n?|;2JDB8fEsUT(B9kV!p>g>lWZeJP&McUbotloA4tI zG-?Gtz!`#Vp;^}88T=G%a_qAOlgV*->~o#V-sA|q0Gqd`g|b3043{Bj*f+ZchE0ww zkAIT`3;UBC5XKj17-mM8A@lyQd&9iJGXx$$!$891fV?ge8V@-mkqqdom%s=@54Z*W zn<6lbFh#V9k?iO*!C)0$0gTy@Xc$O?GWQy zM+$~_by))aCI_w;oH+lzxRzg_&*EUL#cVIlWOhQOvbA(t!XLv{A5IJ%JO$#up+hjCNRH1RaX{bFa;O@1Fk zyiYsqBSoIQv0eHtFdGuS{>^rE^$xY?(rYtBxa%WDabu>&d1$3@n^Nq#j=d*&c#uf> z^E;8xHEx)D)5{JPwqFPUKe_S_ytgw#UC?@UDDCp3lbBqD=ds!oMu7-Jnv@2L$32f1 z?-P+eh|$%OFFx12bli1yxr!nnVM<)rqsQ&ZGnEbIY~t<-n>^j$0W+%Mrcdrmf0d6^ zv`V}v+bhXd6Mu*3c);bkyW~#Z4(f}&M8;I&#q%ZyUqvxdI<6~Z$XcEo`u32Y^Bo(i zefy#0WWb>Z#gjkh9}ngCFx~A4{Cq}PNZb=WG~)NT_1nYdp$f|`bJ6Ud&Kcz`yaw4{ zyD#uwVOI=|3O=q*BFGwb`MAY&;`{ZpRQ)Gv2IE~Xr$`w{B;M~4QZ(Y)_RK4XG&%u? zT*0n83fDZI?PG9(Y|nx+~Rs_6GA z6bfEGd`h>!(s8peRsN%!M%0I?lQEJbk57>18gnWAj!2`R8a;khsX={WYEt9Iw0{*h zs>`)FTRHV&gKutUAw`Dgz@-}M6?Rz;(*_}J;*p4o%;zR4A)n*YNsD6l$q0OOV)E57 zRqo47$R`O%EexOL{T0*pL-`61-<1r_-vW{kTW0Q9-pQ0$Y4*@7HTTVVYVi?WhQZ@J7@$zLeQ2(?s zd)KC?)UuMh9wn9Mi|-v=#Bq)14_u0wGb~e@Vz}(^`?Uj*=k7CauKSGfDszUN-DIlf zJ|uPeR|o5so*1=Ft(KtdaKryI%uALPI$^NAgZwJ!Gkh6fZO|^s+lo zj%x8kXlwgd+!B{yvaXvha0j9%g@s&%AeTZ<-hbS7+GR+n zU@1y!b|Zw-+Dq!FLNN+Sxt#L2!}*Gvskau9&3W|`*$!FaA_vLKJb~^ZVz!CfP9ING zvebyGn0`QIznk2QepH}%>CiH}iR!gQbsKKGd;8aA5Ag8`xYTp%(@qD-zq7w5Ia-@u zib8Qzz1Z}oTReJ0?q|v8$6@kyY@f%RKJZ0Kytra09Zlv=e8M+Hh?Dj{iG3s&=lQ1P zyCxJxJFEw9e;^7t8X}7Hs;9F(nDVG>>un;iborYU`&aT})5sq=2QzwPi%Gt+JMwCf zJgV8!^||~rjMX8?(uw$VCKHoWxM~dJT~~&Q92A{}dC@zEiic#qz^i1c{dNf*>9=B< zUvtsFxHbNaeBasPW})X7%iL-hM$^nf)+uj}L^uty7&D9|#WJ3YJ=F4r)a13)St6^A z=#$P}6W0=196P>|>a+H~l2%HTT5Xw;)-{kLNtF{Q$*#XUE0fvL#vT5x z{A+wIYMsh)QH^6wi0oW&4u1j#OP$|(U2F4opGed#hGc$azLunlmD4MSYmybZQgRph zn;nzSJd!XsJ00wkt9i<-LNvgEQN<+jn4oF9iCF8~w*^O)^PjT3v#gEpR@<^L6^(UI zt`kZ==X=r6SI7KDcKt$ZJ$^Z{GCKP}nfIt@}{a%35Dv&{yANjB(#nLK8C5tahT#eQ0sG<^U^hJ zj=Nq;61wW1|LQ1z$sF_h;xojpjD?40RFKXZvi|)eV~L zGygh-I(G{GwiF)Y;)L)k5?-T-o0I>@_w4)m$_MOjj4wM|Uw7%FSHI<=$j19 z@rhOyb1qMvANmd*t|?#2O~`C}U;A*O-B$5-6}m{a^L+Y-X_O80qWJ3@L`Y3|;fsy^ z)!M8mp4szu-EV(*2Hs0$3hPQ@mpk4(%Z zg!u(}d|Q1_@t$nj`eP&_;P++edjE6L{11gkrkze{Y)VS{&$COdGb<`^m&Vq;^)5eq zFv%&RMO@y)&aRb*hLu;j)nDxXxr7pti)7boEP`7UQffEJzh789U`0MIu#o5Dn=Pah9p5-;FSWl% zPVFD0*?&|ZSZk#vGDCEBh4H$=In#p{4<_rwQg2CBNlI;!_pXnzYRaa%h;+y<;7cv;qy6PGNnxFBgzil<*Ep0D0G@(6mc3^|R_mZh$+Kxk?+v_0 zn@pYkUHjq6Fw55srnTAG9ZOz7oLYLHgJ$2_&kFL{Rh91XoZZsD-2T2$d z$&@Ccv^y7m<=8fsD!ncpXp`x=t2dn)Ylo6@RiIc0dKGx)jbA^z@Fup|MCbbc@9sRg zj=a*XX=425r%MwZv-w_ZIsQh7QGe-avr9^79qSSh9&2Qn$UgtNlhLNMr^$x+!isTP zQKzLq>7>s6cgT|?Y2VIrwHa5j?mXw=C-ZUTHAZD2>bn*qqc2Sxby;YhwaM#`^g8!d zCdlZd{fLCkY};I%jpSBk;a9Jq?Sc-T8*UZ3s>RjZYL-2cAkM)l=mgF0WWsxoEAm#)in z$c4~!7m{3|hn}n_Peq(t&+Kb@EPrqPXkhYMdgkxAd+lkLDku5|kABI#FQ3ldUi<23 zD*M#9zP@Ao0p)WiANUzsWO*-~vn;-MS<~s52ujnzp)N_+f!)f;bu}6|^P)XPRKASI zA2Q|@yd^4F=@7?UI~V`F^#i9#rEDN|?yZu$f6OR~->`liZHulG zH8GS~4JyAbyr*ZVsLx}1r2!eeIi%4c^7{l$h7h!Hl383iY>vm@b(~H3MyutNj_E%0 z^P#9tu57*9Assrt!`8v_Mn>*z!aXf0t4iRpZSloQ`A^ zT`_u7%_;JZQo>|P@=Auop^J+Ba(Y-j}5&d zwN7#~_caYz7_F$QdL&lp^kzn`z3>G(g|_e>%BV4gEqnD>l7E)+n9BF=s^=GKpdQ=eignz%&TU!G{=f0cvRdj3XS!PnK~x03^;!2{=hCb>PHuNL*ovxbH_?)T)W zp&QR=_6I^mIu!G3es&$sEo;GVWEaORu4kmvpjOn&``i5v(etrC`TU|#zGBEeLG_@( z9UT^7MeA%@;vX41Dclr;A~k)7!oT})#}Bc3_Hk6lWlZKWOH#S?`L$AoD+doO-JpLR zdBXnk`W2^D;#2V3K5ywGqH*$Gjw?;%5UUevZT*FUGDZ6KF5tZP+r4>0;jgT+V&==(7Ox+Jcv%ZRy!tx46sxvs_sT1@_~z8R z1}n$r!>PTW%IlXUm^v6&4So%*%lO@)ng5ah_EWl#Fvrik_mh6PM%tH!4N^8g41IiL znNfGM^LB#VY+=U8a1`X9TfyA58rJ?@!dlYsH8o1q&s4;(;?NA;c9=IOC&}&%U0HD`UMZ&M(;e84f1O_q-%<8p^&QL6&J#tSF4dMoHB@@Zias^D$0oz3`3?r(=l2f%PluqL9)SKYu&T)Kn2mi}UY3mm8g@ED#GDFMdfJCsMKX zG+4B1tHw7^$(`orO)FMTF1cUZEsPDTbArt4E`xVbq5d<2%1?TI5(7dX*{;{6&grl* z$tFd+`BCb%&4};+Lc;O%w|kJ(K6$<0tc1_jNPU z#ea7xpaXUFHS5`PW-qiTl#I197Kf_F9WiKD|3FFMEKbQgXg3n;5qNo`A>;Yr$=+rn zP;ScbElO=Q(6iGw-GJva)1qTh{^I-fxAzXIqFyZ>JkXU9ukevBYUSIhyCL5K@}vcV zK1@xzxH!oKO($;%)j#Y3X4f4dQNYUd@2=G}Y!@xU;7zxF z^N)sw-?W$ybuDtlRxA67h@`m*KGb2q)8Rh7NF;(z1m}v-1_YlQzDn9XvBn;(Vqt~V z0O7$ZIVqA3_YEW84Wz+yz@8=QrGT=ygGuZeb7l&N`vQhNL4@FWED-h}^>!+Fg77Rc z>mDo_d(uyP8}uhUP=qmi4ixjrkkpVw#_o4G?6)X^Oz<4xf#Ph|zXysi40oW2hL2SB z39Lp_KL9@yobXo^{5ed;9^d9uzyhfi_XrFr1cL|#niatUxr=rk2Osq}{XM>gu-Fkw zBsE&S7-S+8?Oy^e5uWl#z1WqV2g}A&Voltx0#gYk7FX{%HI}DF(m4^?oNDjgjVEbFg`Uh5auNurP`ufF7;U3I^cS z!{z}Nv$gk>9h(um2zJc(7bIlh0p7$Zf<0p1X#*n((gF=r%iu$UJ#U}u{gbe!{oo;aJ@e82P-2@w%1!B;dQqAAF5c=vNp*f7X;Y>$&r` z&c3dG-v8$;Hm)$y0`pUXm82rzOGG3LMT~&#I7XQ;Bcx;=Y+2nmkckgt8IR>?UL8DP zKRl6f&%~`lfGBMn9AGgt)(!*o9%< zhlk!xfUH<$D57TXh{4POfQU$Fk1}(OSXK~xZvpT9y6-q-PnSYPY$vwEau#`oB8ml!fzpeGUYv6!XG5o()$|0{QkRKnD zEjVAF55X)bmv*ZM6DLq?1b}=-04B&2{^*XUh2sOlFbtd*(*LpxcZ0nSqDJxbxbO3S zG7}RL@YmR1Bw=b|A_MAtAw>SoO%Du`fBY{}fEQCTvad4V7s1J?02l4vlJT0r)57aN z6HaAJbPyLH=^0Q0I~n6SIFGP@dneD#;3pf*!l{iZP#lMn8CVO&*}q6etmRm42WZfq z3ox%+a8RW2Tyg&y&HbG~0sSe~e{>MtGb?NUf3paERX2-qC*)t&vDqaL7|8eqOqW2((aUlyd48m6#c>a_s zW<3B;6JwFQ1SK4ff#2SR8+^w*(P43OA10AgVAT)p(E?_U5g-GVz&EG7$8@LmQ0?Jrc;96Kr_0_Q$|@sB<9mEg*P_{!9Ol+cyKPjEGQrw zF9_N5!g=v`6~veW!Y~Y62%E83t5(gwWRt_Zi{K>OYn3EqxQ4fCjrBuz0x1!Zzrz2m ziaS7HmCQd@SwP>`cCErLD;;7W1pki#-U^qiEG1~!t35ae3WGC3_ zVAuG^5bXvig`<-uh2yk=0q_&-*|Im_+3ix8*#`(3+9nJJt!41S;A=?)3k4V;kB3|B z?8333ScQr=@u5&N^HtM;-PQX~LTxI75d8Zm6miNhQ{{g{0mCqGTqtmsRR4mN%RGvw z|FfLqkTjSqae;)l{`eCED1zMo0xiEw+rX zPD;&yw}ENask}(mzxyy8W)a4a+Co$aB);=u>%9WfLm+oIVQ}CO;!x6G0G#>=Ukrc+ z`dbhQBya^sxPcJ-J4jIR*ezC*I~LCNCqTH^VTuD}_xOW5fbHRGhuyt7;Fw>6_fdP@ z`vXsk^)HsTUHAA!DY!YTGW~zQs>fFLGPj)?dH#d&G3Ue?f-k1Dlt+9o8yFM zS9?1$FO)=#F_7%+k57U9$IQswXiklzI1o=?@qaPv)1C_(2Z2^o24T?cX zuLxEcK4!z8aBRVFL0ARp>~lmvKQLE_YKUm@@zOa;v2!SKo4uBI>;5eqTX?9ns^viJ+Y zbee5wlm>1r|63uBwLoJuNC|8*xzOC3vV!#&g7x3KE*P{z(saoGug6da?LR4uFoLA$ zkhmoo%QTDB-B|+;RN6mHN4Oos6u*V@q=Rj1=)@?)j5*0ASfBysJ{))+rXjiA4{JyC EAK(!%xc~qF delta 16218 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 diff --git a/marlo-web/src/main/resources/pentaho/crp/ProjectFullPDF(Reporting).prpt b/marlo-web/src/main/resources/pentaho/crp/ProjectFullPDF(Reporting).prpt index 728e1e76cb3cfc19450315bc6a40edbbff024fb0..09d70313a00367524baae4bce94216b60480ee00 100644 GIT binary patch delta 17515 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 pjGls)f}=HLuo-I=sdo%z5 delta 17277 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 DA*o8v diff --git a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/deliverableInfo.ftl b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/deliverableInfo.ftl index a92c1360bd..9859fa1b00 100644 --- a/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/deliverableInfo.ftl +++ b/marlo-web/src/main/webapp/WEB-INF/crp/views/projects/deliverableInfo.ftl @@ -161,7 +161,7 @@
- [@customForm.elementsListComponent name="deliverable.crpOutcomes" elementType="crpProgramOutcome" elementList=(deliverable.crpOutcomes)![] label="project.deliverable.generalInformation.keyOutput" listName="programOutcomes" keyFieldName="id" help="project.deliverable.generalInformation.keyOutput.help" helpIcon=false displayFieldName="composedName" required=true maxLimit=3/] + [@customForm.elementsListComponent name="deliverable.crpOutcomes" elementType="crpProgramOutcome" elementList=(deliverable.crpOutcomes)![] label="project.deliverable.generalInformation.keyOutput" listName="programOutcomes" keyFieldName="id" help="project.deliverable.generalInformation.keyOutput.help" helpIcon=false paramText=soilIndicatorsText displayFieldName="composedName" required=true maxLimit=3/]