Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Anchor
wfActionLogicHandleLinkedProjectType-anchor
wfActionLogicHandleLinkedProjectType-anchor
wfActionLogicHandleLinkedProjectType
Questa logica di sistema gestisce il metadato linkedProjectType.
Per maggiori dettagli fare riferimento al modello dati dell'entità Bando
Code Block
languagejs
linenumberstrue
collapsetrue
			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
languagejs
linenumberstrue
collapsetrue
			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
wfActionLogicSaveNewYear-anchor
wfActionLogicSaveNewYear-anchor
wfActionLogicSaveNewYear
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
languagejs
linenumberstrue
collapsetrue
			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)));
				}
			}
		

...