...
Anchor | ||||
---|---|---|---|---|
|
Questa logica di sistema gestisce il metadato linkedProjectType.
Per maggiori dettagli fare riferimento al modello dati dell'entità Bando
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
var linkedProjectTypeInternal = wfItem.getStringMap().get("linkedProjectTypeInternal"); if (linkedProjectTypeInternal != null){ var linkedProjectType = wfService.getWfItemType(new Integer(linkedProjectTypeInternal)); wfItem.getStringMap().put("linkedProjectType", linkedProjectType.getIdentifier()); wfItem.getStringMap().put("linkedProjectTypeInternal", null); } |
...
- sia presente un partner
- ci sia uno ed un solo partner marcato come Coordinatore (ad eccezione del caso in cui l'Ateneo sia Partner Unico)
- nel caso in cui l'Ateneo sia Partner unico non devono essere presenti altri partner
- l'Ateneo sia presente una ed una sola volta tra i partner
- per ogni partner sia selezionato il ruolo
...
- Deve esistere un Partner marcato come Coordinatore ==> ap.<itemType>.partner.main.required
- Devono essere inseriti altri partner se esiste un "Coordinatore" ==> ap.<itemType>.partner.coordinatorAndPartnerRoleCheck.enabled
- Non devono esistere altri partner oltre a quello marcato come "Partner Unico" ==> ap.<itemType>.partner.coordinatorAndPartnerRoleCheck.enabled
...
- rm.orgunit.external.myOrganization: identificativo dell'unità organizzativa relativa all'Ateneo con mappatura verso UGOV AC
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
var coordinatorRoleId = WfUtil.getDictionaryByCode(wfService, "partnerRole.main"); var uniquePartnerRoleId = WfUtil.getDictionaryByCode(wfService, "partnerRole.uniquePartner"); var myOrganization = Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("rm.orgunit.external.myOrganization"); if (coordinatorRoleId == null || myOrganization == null || uniquePartnerRoleId == null){ throw "Configuration variables rm.orgunit.external.myOrganization and and dictionaries partnerRole.main, partnerRole.uniquePartner MUST BE DEFINED"; } else { coordinatorRoleId = new Packages.java.lang.Integer(coordinatorRoleId); uniquePartnerRoleId = new Packages.java.lang.Integer(uniquePartnerRoleId); myOrganization = new Packages.java.lang.Integer(myOrganization); } var partnerSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "it.cilea.wf.model.WfItemElement", "partner",wfService); var partnerSetIterator=partnerSet.iterator(); var counterOtherPartner=0; var counterCoordinator=0; var counterUniquePartner=0; var counterMyOrganization=0; while (partnerSetIterator.hasNext()){ var element=partnerSetIterator.next(); var orgUnitRole = element.getWfDictionaryMap().get("partnerRole"); if (orgUnitRole==null){ errors.rejectAndLocate("error.project.partner.missingRole", "partner"); break; } var orgUnit = element.getOrganizationUnitMap().get("partnerId"); if (orgUnit==null){ errors.rejectAndLocate("error.project.partner.missingOrgUnit", "partner"); break; } if (coordinatorRoleId.equals(orgUnitRole.getId())){ counterCoordinator++; } else if (uniquePartnerRoleId.equals(orgUnitRole.getId())){ counterUniquePartner++; } else { counterOtherPartner++; } if(myOrganization.equals(orgUnit.getId())){ counterMyOrganization++; } } if (!errors.hasErrors()){ if (counterCoordinator > 1){ errors.rejectAndLocate("error.project.partner.tooManyMain", "partner"); } else if (counterUniquePartner > 1){ errors.rejectAndLocate("error.project.partner.tooManyUniquePartner", "partner"); } else if (counterMyOrganization > 1){ errors.rejectAndLocate("error.project.partner.tooManyMyOrganization", "partner"); } else if (partnerSet.size() > 0){ if (counterMyOrganization == 0){ errors.rejectAndLocate("error.project.partner.myOrganizationRequired", "partner"); } else if (counterCoordinator>0 && counterUniquePartner>0){ errors.rejectAndLocate("error.project.partner.coordinatorAndUniquePartner", "partner"); } else { var confValmainRoleCheck=Packages.it.cilea.wf.util.WfUtil.getParametricConfiguration("ap.<itemType>.partner.main.required", object.getWfItemType()); if (!Packages.org.apache.commons.lang.StringUtils.equalsIgnoreCase("false",confValmainRoleCheck)){ if (counterOtherPartner>0 && counterCoordinator==0) { errors.rejectAndLocate("error.project.partner.missingMain", "partner"); } else if (counterOtherPartner>0 && counterUniquePartner>0){ } errors.rejectAndLocate var coordinatorAndPartnerRoleCheck=WfUtil.getParametricConfiguration("errorap.project<itemType>.partner.coordinatorAndPartnerRoleCheck.otherPartnerAndUniquePartnerenabled", "partner");object.getWfItemType()); if (!StringUtils.equalsIgnoreCase("false",coordinatorAndPartnerRoleCheck)){ } else if (counterOtherPartner==0 && counterCoordinator>0) { errors.rejectAndLocate("error.project.partner.coordinatorAndNoOtherPartner", "partner"); } } else if (counterOtherPartner>0 && counterUniquePartner>0){ errors.rejectAndLocate var uniquePartnerAndPartnerRoleCheck=WfUtil.getParametricConfiguration("errorap.project<itemType>.partner.uniquePartnerAndPartnerRoleCheck.otherPartnerAndUniquePartnerenabled", object.getWfItemType()); if "partner"); (!StringUtils.equalsIgnoreCase("false",uniquePartnerAndPartnerRoleCheck)){ } else if (counterOtherPartner==0counterOtherPartner>0 && counterCoordinator>0counterUniquePartner>0) { errors.rejectAndLocate("error.project.partner.coordinatorAndNoOtherPartnerotherPartnerAndUniquePartner", "partner"); } } } } else if(partnerSet.size() == 0){ errors.rejectAndLocate("error.project.partner.required", "partner"); } } |
...
Anchor | ||||
---|---|---|---|---|
|
Questa logica serve per l'aggiornamento dell'anno della scheda in caso di cambio di data.
L'aggiornamento viene effettuato se viene recuperata una data e se l'anno della data è diverso dal valore presente nel campo anno (year).
E' necessario inserirla come save logic per tutti gli stati, in tutti i flussi tranne quelli di Public Engagement, perché in quei flussi l'anno viene gestito con una semantica differente.
La data viene recuperata dalla configurazione ap.<wfItemType>.owner.position.date,
dove può essere indicata direttamente (esempio: startDate), OPPURE:
se la configurazione viene valorizzarta con CURRENT o CURRENT_OR_LAST,
verrà effettuato un recupero della data presente nel metadato startDate,
se non presente verrà recuperata la data presente nel metadato proposalStartDate,
se non presente verrà recuperata la data presente nel metadato applicationDate.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
var myDate = WfUtil.getCheckDateNotCurrent(wfItem, wfService); if(myDate != null){ var calendar = Calendar.getInstance(); calendar.setTime(myDate); if(wfItem.getYear() != new Packages.java.lang.Integer(calendar.get(Calendar.YEAR))){ wfItem.setYear(new Packages.java.lang.Integer(calendar.get(Calendar.YEAR))); } } |
...