Sfoglia il codice sorgente

- avanzamento portlet pannello finelavori/collaudo

- aggiunta log per inizio workflow pratiche procedura C
feature/pannello-pratiche
marcoalderighi 2 anni fa
parent
commit
65fd2c1f13
  1. BIN
      liferay-plugins-sdk-6.2/dist/portos-bo-shared-6.2.0.1.jar
  2. 2
      liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/liferay-portlet.xml
  3. 491
      liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/SismicaUtil.java
  4. 8
      liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/model/impl/AvvisoImpl.java
  5. 4
      liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/util/ProtocollazioneUtil.java
  6. 4
      liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/html/flcollaudopanel/view.jsp
  7. 2
      liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/verify_fine-lavori_calcolo.jsp
  8. 1
      liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/.tern-project
  9. BIN
      liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/docroot/WEB-INF/lib/portos-bo-shared-service.jar
  10. BIN
      liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/docroot/WEB-INF/lib/portos-bo-shared.jar
  11. 255
      liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/notification/portlet/NotificationPortlet.java
  12. 39
      liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/docroot/html/notification/view.jsp
  13. 1
      liferay-plugins-sdk-6.2/shared/portos-bo-shared/src/it/tref/liferay/portos/bo/shared/util/PortletKeys.java

BIN
liferay-plugins-sdk-6.2/dist/portos-bo-shared-6.2.0.1.jar vendored

File binario non mostrato.

2
liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/liferay-portlet.xml

@ -208,7 +208,7 @@
<icon>/icon.png</icon>
<header-portlet-css>/css/main.css?v=4</header-portlet-css>
<footer-portlet-javascript>/js/main.js?v=4</footer-portlet-javascript>
<css-class-wrapper>13-portlet</css-class-wrapper>
<css-class-wrapper>14-portlet</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>

491
liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/SismicaUtil.java

@ -37,6 +37,7 @@ import it.tref.liferay.portos.bo.shared.util.StatoPraticaConstants;
import it.tref.liferay.portos.bo.shared.util.TipoIntegrazioneUtil;
import it.tref.liferay.portos.bo.util.AvvisoUtil;
import it.tref.liferay.portos.bo.util.Constants;
import it.tref.liferay.portos.bo.util.PraticaUtil;
import it.tref.liferay.portos.bo.util.WorkflowConstants;
import java.io.Serializable;
@ -344,13 +345,17 @@ public class SismicaUtil {
List<ControlloPratica> controlli = ControlloPraticaLocalServiceUtil.findByIntPraticaId_Status(intPraticaId,
WorkflowConstants.STATUS_PENDING);
if (0 == controlli.size()) {
esitoLog(esito, "Aggiungo controllo pratica numero " + numeroProgetto);
ServiceContext serviceContext = new ServiceContext();
serviceContext.setCompanyId(companyId);
serviceContext.setScopeGroupId(dettPraticaId);
serviceContext.setUserId(userId);
ControlloPraticaLocalServiceUtil.addControlloPratica(groupId, userId, intPraticaId, dettPraticaId, true,
serviceContext);
if(pratica.getTipoProcedura().equalsIgnoreCase("C")){
_log.info("Avrei avviato il WORKFLOW per procedura di tipo C per pratica numero " + numeroProgetto);
} else {
esitoLog(esito, "Aggiungo controllo pratica numero " + numeroProgetto);
ServiceContext serviceContext = new ServiceContext();
serviceContext.setCompanyId(companyId);
serviceContext.setScopeGroupId(dettPraticaId);
serviceContext.setUserId(userId);
ControlloPraticaLocalServiceUtil.addControlloPratica(groupId, userId, intPraticaId, dettPraticaId, true,
serviceContext);
}
} else {
esitoLog(esito, "Controllo pratica già presente");
}
@ -717,10 +722,14 @@ public class SismicaUtil {
controllo = controlli.get(controlli.size() - 1);
} catch (Exception e1) {
try {
esitoLog(esito, "Aggiungo controllo pratica numero " + pratica.getNumeroProgetto());
controllo = ControlloPraticaLocalServiceUtil.addControlloPratica(
dettPratica.getGroupId(), dettPratica.getUserId(), pratica.getIntPraticaId(),
dettPratica.getDettPraticaId(), false, serviceContext);
if(pratica.getTipoProcedura().equalsIgnoreCase("C")){
_log.info("Avrei avviato il WORKFLOW per procedura di tipo C per pratica numero " + pratica.getNumeroProgetto());
} else {
esitoLog(esito, "Aggiungo controllo pratica numero " + pratica.getNumeroProgetto());
controllo = ControlloPraticaLocalServiceUtil.addControlloPratica(
dettPratica.getGroupId(), dettPratica.getUserId(), pratica.getIntPraticaId(),
dettPratica.getDettPraticaId(), false, serviceContext);
}
} catch (PortalException | SystemException e2) {
esitoLog(esito, "Errore durante la creazione di un controllo pratica per progetto "
+ pratica.getNumeroProgetto() + ": " + e2.getMessage());
@ -795,45 +804,49 @@ public class SismicaUtil {
dettPratica = null;
}
if (Validator.isNotNull(dettPratica)) {
ServiceContext serviceContext = new ServiceContext();
serviceContext.setCompanyId(dettPratica.getCompanyId());
serviceContext.setScopeGroupId(dettPratica.getGroupId());
serviceContext.setUserId(dettPratica.getUserId());
ControlloPratica controllo;
try {
esitoLog(esito, "Aggiungo controllo pratica numero " + pratica.getNumeroProgetto());
controllo = ControlloPraticaLocalServiceUtil.addControlloPratica(
dettPratica.getGroupId(), dettPratica.getUserId(),
pratica.getIntPraticaId(), dettPratica.getDettPraticaId(), false,
serviceContext);
} catch (PortalException | SystemException e) {
controllo = null;
}
if (Validator.isNotNull(controllo)) {
controllo.setStatus(WorkflowConstants.STATUS_APPROVED);
try {
ControlloPraticaLocalServiceUtil.updateControlloPratica(controllo);
} catch (SystemException e) {}
long fileEntryIdTemplate;
if(pratica.getTipoProcedura().equalsIgnoreCase("C")){
_log.info("Avrei avviato il WORKFLOW per procedura di tipo C per pratica numero " + pratica.getNumeroProgetto());
} else {
ServiceContext serviceContext = new ServiceContext();
serviceContext.setCompanyId(dettPratica.getCompanyId());
serviceContext.setScopeGroupId(dettPratica.getGroupId());
serviceContext.setUserId(dettPratica.getUserId());
ControlloPratica controllo;
try {
fileEntryIdTemplate = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(
companyId, "conf.geniocivile.avviso.template.id.deposito.B2");
} catch (SystemException e) {
fileEntryIdTemplate = 0L;
esitoLog(esito, "Aggiungo controllo pratica numero " + pratica.getNumeroProgetto());
controllo = ControlloPraticaLocalServiceUtil.addControlloPratica(
dettPratica.getGroupId(), dettPratica.getUserId(),
pratica.getIntPraticaId(), dettPratica.getDettPraticaId(), false,
serviceContext);
} catch (PortalException | SystemException e) {
controllo = null;
}
if (Validator.isNotNull(fileEntryIdTemplate)) {
if (Validator.isNotNull(controllo)) {
controllo.setStatus(WorkflowConstants.STATUS_APPROVED);
try {
ControlloPraticaLocalServiceUtil.updateControlloPratica(controllo);
} catch (SystemException e) {}
long fileEntryIdTemplate;
try {
if (!pratica.getTipoProcedura().equalsIgnoreCase(Constants.PROCEDURA_C)) {
AvvisoLocalServiceUtil.addAvviso(pratica.getIntPraticaId(),
"Attestazione di deposito progetto", new Date(),
AvvisoUtil.TIPO_AVVISO_DIRETTO, StatoPraticaConstants.CONFORME,
fileEntryIdTemplate, dettPratica.getDettPraticaId(),
DettPratica.class.getName(), controllo.getControlloPraticaId(),
serviceContext);
}
pratica.setStatoPratica(StatoPraticaConstants.CONFORME);
IntPraticaLocalServiceUtil.updateIntPratica(pratica);
} catch (PortalException | SystemException e) {}
fileEntryIdTemplate = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(
companyId, "conf.geniocivile.avviso.template.id.deposito.B2");
} catch (SystemException e) {
fileEntryIdTemplate = 0L;
}
if (Validator.isNotNull(fileEntryIdTemplate)) {
try {
if (!pratica.getTipoProcedura().equalsIgnoreCase(Constants.PROCEDURA_C)) {
AvvisoLocalServiceUtil.addAvviso(pratica.getIntPraticaId(),
"Attestazione di deposito progetto", new Date(),
AvvisoUtil.TIPO_AVVISO_DIRETTO, StatoPraticaConstants.CONFORME,
fileEntryIdTemplate, dettPratica.getDettPraticaId(),
DettPratica.class.getName(), controllo.getControlloPraticaId(),
serviceContext);
}
pratica.setStatoPratica(StatoPraticaConstants.CONFORME);
IntPraticaLocalServiceUtil.updateIntPratica(pratica);
} catch (PortalException | SystemException e) {}
}
}
}
}
@ -1006,198 +1019,198 @@ public class SismicaUtil {
private static Map<String, Long> templateIdByKey;
private static final Date inizio = stringToDate("2019-12-31");
private static List<String> riparaDocumenti(long companyId) throws SystemException, PortalException {
List<String> esito = new ArrayList<String>();
esitoLog(esito, "Riparazione generazione documenti");
initTemplate(companyId);
List<IntPratica> intPratiche = null;
int index = 0;
do {
try {
intPratiche = IntPraticaLocalServiceUtil.getIntPraticas(index, index + SLICE);
} catch (SystemException e) {
esitoLog(esito, "Errore caricamento intPratiche: " + e.getMessage());
}
for (IntPratica intPratica : intPratiche) {
esito.addAll(verificaAvvisi(intPratica));
}
index += SLICE;
} while (intPratiche.size() > 0);
return esito;
}
private static void initTemplate(long companyId) throws SystemException, PortalException {
templateById = new LinkedHashMap<>();
templateByKey = new LinkedHashMap<>();
templateIdByKey = new LinkedHashMap<>();
Map<String, String> elenco = AvvisoUtil.getAllTipoDocumentoFileTemplateProps();
for (Entry<String, String> template : elenco.entrySet()) {
long fileEntryId = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(companyId, template.getValue());
if (fileEntryId != 0) {
FileEntry fileEntry = DLAppServiceUtil.getFileEntry(fileEntryId);
templateById.put(fileEntryId, fileEntry.getTitle());
templateByKey.put(template.getKey(), fileEntry.getTitle());
templateIdByKey.put(template.getKey(), fileEntryId);
}
}
}
private static List<String> verificaAvvisi(IntPratica intPratica) {
List<String> esito = new ArrayList<String>();
if (Validator.isNotNull(intPratica.getStatoPratica())
&& !intPratica.getStatoPratica().equalsIgnoreCase(StatoPraticaConstants.ANNULLATA)) {
long intPraticaId = intPratica.getIntPraticaId();
List<ControlloPratica> controlli = null;
try {
controlli = ControlloPraticaLocalServiceUtil.findByIntPratica(intPraticaId);
} catch (SystemException e) {
controlli = new ArrayList<ControlloPratica>();
}
ControlloPratica controllo = null;
ServiceContext serviceContext = null;
if (controlli.size() > 0) {
controllo = controlli.get(controlli.size() - 1);
serviceContext = new ServiceContext();
serviceContext.setCompanyId(controllo.getCompanyId());
serviceContext.setScopeGroupId(controllo.getGroupId());
serviceContext.setUserId(controllo.getUserId());
} else {
serviceContext = new ServiceContext();
serviceContext.setCompanyId(intPratica.getCompanyId());
try {
serviceContext.setScopeGroupId(TerritorioLocalServiceUtil.getTerritorio(
intPratica.getTerritorioId()).getGroupId());
} catch (PortalException | SystemException e) {}
serviceContext.setUserId(intPratica.getUserId());
}
List<Avviso> avvisi = getAvvisiPratica(intPraticaId);
List<Avviso> avvisiFermi = new ArrayList<>();
List<String> avvisiInviati = new ArrayList<>();
Date ultimaData = null;
for (Avviso avviso : avvisi) {
if ((ultimaData == null) || avviso.getModifiedDate().after(ultimaData)) {
ultimaData = avviso.getModifiedDate();
}
if (!avviso.getAnnullato()) {
String template = templateById.get(avviso.getFileEntryIdTemplate());
if (avviso.getDtAvviso().after(inizio) && !avviso.getAnnullato()
&& (avviso.getInviato().equalsIgnoreCase(AvvisoUtil.DOCUMENTO_NON_INVIATO))) {
avvisiFermi.add(avviso);
if (template == null)
template = templateByKey.get(avviso.getTipoDocumento());
} else if (avviso.getInviato().equalsIgnoreCase(AvvisoUtil.DOCUMENTO_INVIATO)) {
avvisiInviati.add(template);
}
}
}
if ((ultimaData != null) && (new Date().getTime() - ultimaData.getTime() > 7200000)) {
for (Avviso avviso : avvisiFermi) {
long templateId = avviso.getFileEntryIdTemplate();
String template = templateById.get(templateId);
if (Validator.isNull(template) && templateByKey.containsKey(avviso.getTipoDocumento())) {
template = templateByKey.get(avviso.getTipoDocumento());
templateId = templateIdByKey.get(avviso.getTipoDocumento());
}
if (!avvisiInviati.contains(template)) {
switch (avviso.getTipoDocumento()) {
case "MA":
case StatoPraticaConstants.NON_CONFORME:
case StatoPraticaConstants.INTEGRAZIONE:
break;
case StatoPraticaConstants.AUTORIZZATA:
case StatoPraticaConstants.CONFORME:
case StatoPraticaConstants.SOTTOPOSTA_A_PARERE:
case StatoPraticaConstants.VIDIMATA:
if (avviso.getTipoAvviso().equals(AvvisoUtil.TIPO_AVVISO_DIRETTO)) {
esito.addAll(addStoricoAvvisi(intPratica, avvisi));
esitoLog(esito, "Invio " + template + " (" + controlli.size() + " controlli)");
try {
if (Validator.isNull(controllo)) {
controllo = aggiungiControlloPratica(intPratica);
esitoLog(esito, intPratica.getNumeroProgetto()
+ " aggiunto ControlloPratica " + controllo.getControlloPraticaId());
}
AvvisoLocalServiceUtil.addAvviso(intPraticaId, StringPool.BLANK,
avviso.getDtAvviso(), AvvisoUtil.TIPO_AVVISO_DIRETTO,
avviso.getTipoDocumento(), templateId, controllo.getDettPraticaId(),
DettPratica.class.getName(), controllo.getControlloPraticaId(),
serviceContext);
} catch (Exception e) {
esitoLog(esito, "Errore durante l'invio: " + e.getMessage());
}
}
break;
default:
if (avviso.getTipoAvviso().equals(AvvisoUtil.TIPO_AVVISO_DIRETTO)) {
esito.addAll(addStoricoAvvisi(intPratica, avvisi));
esitoLog(esito, "Procederei all'invio di avviso " + template);
}
break;
}
}
}
}
}
return esito;
}
private static ControlloPratica aggiungiControlloPratica(IntPratica intPratica) throws PortalException,
SystemException {
DettPratica dettPratica = DettPraticaLocalServiceUtil
.getLastCompletedByIntPratica(intPratica.getIntPraticaId());
ServiceContext serviceContext = new ServiceContext();
serviceContext.setCompanyId(dettPratica.getCompanyId());
serviceContext.setScopeGroupId(dettPratica.getGroupId());
serviceContext.setUserId(dettPratica.getUserId());
_log.info("Aggiungo controllo pratica numero " + intPratica.getNumeroProgetto());
ControlloPratica controllo = ControlloPraticaLocalServiceUtil.addControlloPratica(intPratica.getGroupId(),
intPratica.getUserId(), intPratica.getIntPraticaId(), dettPratica.getDettPraticaId(), false,
serviceContext);
return controllo;
}
private static List<Avviso> getAvvisiPratica(long intPraticaId) {
List<Avviso> avvisi = null;
try {
avvisi = AvvisoLocalServiceUtil.findByIntPratica(
intPraticaId,
QueryUtil.ALL_POS,
QueryUtil.ALL_POS,
OrderByComparatorFactoryUtil.getOrderByComparatorFactory().create("portos_bo_Avviso", "dtAvviso",
true));
} catch (SystemException e) {
_log.error("Errore recupero avvisi" + e.getMessage());
avvisi = new ArrayList<Avviso>();
}
return avvisi;
}
private static List<String> addStoricoAvvisi(IntPratica intPratica, List<Avviso> avvisi) {
List<String> esito = new ArrayList<String>();
String tipoPratica = LanguageUtil.get(LocaleUtil.ITALIAN, "tipo-pratica-" + intPratica.getTipoPratica());
esitoLog(esito,
"* intPraticaId=" + intPratica.getIntPraticaId() + ", numeroProgetto=" + intPratica.getNumeroProgetto()
+ ", procedura=" + intPratica.getTipoProcedura() + ", stato=" + intPratica.getStatoPratica()
+ ", tipo=" + tipoPratica + ", data=" + dfmt.format(intPratica.getCreateDate())
+ ", modificata=" + dfmt.format(intPratica.getModifiedDate()));
for (Avviso avviso : avvisi) {
String template = templateById.get(avviso.getFileEntryIdTemplate());
if (template == null)
template = templateByKey.get(avviso.getTipoDocumento());
;
boolean inviato = avviso.getInviato().equalsIgnoreCase(AvvisoUtil.DOCUMENTO_INVIATO);
esitoLog(esito, dfmt.format(avviso.getDtAvviso()) + " Avviso " + template + StringPool.SPACE
+ (inviato ? "inviato " + dfmt.format(avviso.getDtInvio()) : "non inviato") + " - tipo avviso "
+ avviso.getTipoAvviso() + " - tipo documento " + avviso.getTipoDocumento());
}
return esito;
}
// private static List<String> riparaDocumenti(long companyId) throws SystemException, PortalException {
//
// List<String> esito = new ArrayList<String>();
// esitoLog(esito, "Riparazione generazione documenti");
// initTemplate(companyId);
// List<IntPratica> intPratiche = null;
// int index = 0;
// do {
// try {
// intPratiche = IntPraticaLocalServiceUtil.getIntPraticas(index, index + SLICE);
// } catch (SystemException e) {
// esitoLog(esito, "Errore caricamento intPratiche: " + e.getMessage());
// }
// for (IntPratica intPratica : intPratiche) {
// esito.addAll(verificaAvvisi(intPratica));
// }
// index += SLICE;
// } while (intPratiche.size() > 0);
// return esito;
// }
// private static void initTemplate(long companyId) throws SystemException, PortalException {
//
// templateById = new LinkedHashMap<>();
// templateByKey = new LinkedHashMap<>();
// templateIdByKey = new LinkedHashMap<>();
// Map<String, String> elenco = AvvisoUtil.getAllTipoDocumentoFileTemplateProps();
// for (Entry<String, String> template : elenco.entrySet()) {
// long fileEntryId = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(companyId, template.getValue());
// if (fileEntryId != 0) {
// FileEntry fileEntry = DLAppServiceUtil.getFileEntry(fileEntryId);
// templateById.put(fileEntryId, fileEntry.getTitle());
// templateByKey.put(template.getKey(), fileEntry.getTitle());
// templateIdByKey.put(template.getKey(), fileEntryId);
// }
// }
// }
// private static List<String> verificaAvvisi(IntPratica intPratica) {
//
// List<String> esito = new ArrayList<String>();
// if (Validator.isNotNull(intPratica.getStatoPratica())
// && !intPratica.getStatoPratica().equalsIgnoreCase(StatoPraticaConstants.ANNULLATA)) {
// long intPraticaId = intPratica.getIntPraticaId();
// List<ControlloPratica> controlli = null;
// try {
// controlli = ControlloPraticaLocalServiceUtil.findByIntPratica(intPraticaId);
// } catch (SystemException e) {
// controlli = new ArrayList<ControlloPratica>();
// }
// ControlloPratica controllo = null;
// ServiceContext serviceContext = null;
// if (controlli.size() > 0) {
// controllo = controlli.get(controlli.size() - 1);
// serviceContext = new ServiceContext();
// serviceContext.setCompanyId(controllo.getCompanyId());
// serviceContext.setScopeGroupId(controllo.getGroupId());
// serviceContext.setUserId(controllo.getUserId());
// } else {
// serviceContext = new ServiceContext();
// serviceContext.setCompanyId(intPratica.getCompanyId());
// try {
// serviceContext.setScopeGroupId(TerritorioLocalServiceUtil.getTerritorio(
// intPratica.getTerritorioId()).getGroupId());
// } catch (PortalException | SystemException e) {}
// serviceContext.setUserId(intPratica.getUserId());
// }
// List<Avviso> avvisi = getAvvisiPratica(intPraticaId);
// List<Avviso> avvisiFermi = new ArrayList<>();
// List<String> avvisiInviati = new ArrayList<>();
// Date ultimaData = null;
// for (Avviso avviso : avvisi) {
// if ((ultimaData == null) || avviso.getModifiedDate().after(ultimaData)) {
// ultimaData = avviso.getModifiedDate();
// }
// if (!avviso.getAnnullato()) {
// String template = templateById.get(avviso.getFileEntryIdTemplate());
// if (avviso.getDtAvviso().after(inizio) && !avviso.getAnnullato()
// && (avviso.getInviato().equalsIgnoreCase(AvvisoUtil.DOCUMENTO_NON_INVIATO))) {
// avvisiFermi.add(avviso);
// if (template == null)
// template = templateByKey.get(avviso.getTipoDocumento());
// } else if (avviso.getInviato().equalsIgnoreCase(AvvisoUtil.DOCUMENTO_INVIATO)) {
// avvisiInviati.add(template);
// }
// }
// }
// if ((ultimaData != null) && (new Date().getTime() - ultimaData.getTime() > 7200000)) {
// for (Avviso avviso : avvisiFermi) {
// long templateId = avviso.getFileEntryIdTemplate();
// String template = templateById.get(templateId);
// if (Validator.isNull(template) && templateByKey.containsKey(avviso.getTipoDocumento())) {
// template = templateByKey.get(avviso.getTipoDocumento());
// templateId = templateIdByKey.get(avviso.getTipoDocumento());
// }
// if (!avvisiInviati.contains(template)) {
// switch (avviso.getTipoDocumento()) {
// case "MA":
// case StatoPraticaConstants.NON_CONFORME:
// case StatoPraticaConstants.INTEGRAZIONE:
// break;
// case StatoPraticaConstants.AUTORIZZATA:
// case StatoPraticaConstants.CONFORME:
// case StatoPraticaConstants.SOTTOPOSTA_A_PARERE:
// case StatoPraticaConstants.VIDIMATA:
// if (avviso.getTipoAvviso().equals(AvvisoUtil.TIPO_AVVISO_DIRETTO)) {
// esito.addAll(addStoricoAvvisi(intPratica, avvisi));
// esitoLog(esito, "Invio " + template + " (" + controlli.size() + " controlli)");
// try {
// if (Validator.isNull(controllo)) {
// controllo = aggiungiControlloPratica(intPratica);
// esitoLog(esito, intPratica.getNumeroProgetto()
// + " aggiunto ControlloPratica " + controllo.getControlloPraticaId());
// }
// AvvisoLocalServiceUtil.addAvviso(intPraticaId, StringPool.BLANK,
// avviso.getDtAvviso(), AvvisoUtil.TIPO_AVVISO_DIRETTO,
// avviso.getTipoDocumento(), templateId, controllo.getDettPraticaId(),
// DettPratica.class.getName(), controllo.getControlloPraticaId(),
// serviceContext);
// } catch (Exception e) {
// esitoLog(esito, "Errore durante l'invio: " + e.getMessage());
// }
// }
// break;
// default:
// if (avviso.getTipoAvviso().equals(AvvisoUtil.TIPO_AVVISO_DIRETTO)) {
// esito.addAll(addStoricoAvvisi(intPratica, avvisi));
// esitoLog(esito, "Procederei all'invio di avviso " + template);
// }
// break;
// }
// }
// }
// }
// }
// return esito;
// }
// private static ControlloPratica aggiungiControlloPratica(IntPratica intPratica) throws PortalException,
// SystemException {
//
// DettPratica dettPratica = DettPraticaLocalServiceUtil
// .getLastCompletedByIntPratica(intPratica.getIntPraticaId());
// ServiceContext serviceContext = new ServiceContext();
// serviceContext.setCompanyId(dettPratica.getCompanyId());
// serviceContext.setScopeGroupId(dettPratica.getGroupId());
// serviceContext.setUserId(dettPratica.getUserId());
// _log.info("Aggiungo controllo pratica numero " + intPratica.getNumeroProgetto());
// ControlloPratica controllo = ControlloPraticaLocalServiceUtil.addControlloPratica(intPratica.getGroupId(),
// intPratica.getUserId(), intPratica.getIntPraticaId(), dettPratica.getDettPraticaId(), false,
// serviceContext);
// return controllo;
// }
// private static List<Avviso> getAvvisiPratica(long intPraticaId) {
//
// List<Avviso> avvisi = null;
// try {
// avvisi = AvvisoLocalServiceUtil.findByIntPratica(
// intPraticaId,
// QueryUtil.ALL_POS,
// QueryUtil.ALL_POS,
// OrderByComparatorFactoryUtil.getOrderByComparatorFactory().create("portos_bo_Avviso", "dtAvviso",
// true));
// } catch (SystemException e) {
// _log.error("Errore recupero avvisi" + e.getMessage());
// avvisi = new ArrayList<Avviso>();
// }
// return avvisi;
// }
//
// private static List<String> addStoricoAvvisi(IntPratica intPratica, List<Avviso> avvisi) {
//
// List<String> esito = new ArrayList<String>();
// String tipoPratica = LanguageUtil.get(LocaleUtil.ITALIAN, "tipo-pratica-" + intPratica.getTipoPratica());
// esitoLog(esito,
// "* intPraticaId=" + intPratica.getIntPraticaId() + ", numeroProgetto=" + intPratica.getNumeroProgetto()
// + ", procedura=" + intPratica.getTipoProcedura() + ", stato=" + intPratica.getStatoPratica()
// + ", tipo=" + tipoPratica + ", data=" + dfmt.format(intPratica.getCreateDate())
// + ", modificata=" + dfmt.format(intPratica.getModifiedDate()));
// for (Avviso avviso : avvisi) {
// String template = templateById.get(avviso.getFileEntryIdTemplate());
// if (template == null)
// template = templateByKey.get(avviso.getTipoDocumento());
// ;
// boolean inviato = avviso.getInviato().equalsIgnoreCase(AvvisoUtil.DOCUMENTO_INVIATO);
// esitoLog(esito, dfmt.format(avviso.getDtAvviso()) + " Avviso " + template + StringPool.SPACE
// + (inviato ? "inviato " + dfmt.format(avviso.getDtInvio()) : "non inviato") + " - tipo avviso "
// + avviso.getTipoAvviso() + " - tipo documento " + avviso.getTipoDocumento());
// }
// return esito;
// }
public static List<String> trasformaFLC(long companyId, String numeroPratica, String tipoDaRiaprire)
throws SystemException, PortalException {

8
liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/model/impl/AvvisoImpl.java

@ -67,15 +67,15 @@ public class AvvisoImpl extends AvvisoBaseImpl {
} else if (TipoIntegrazioneUtil.RICHIESTA_INTEGRAZIONE.equalsIgnoreCase(dettPratica
.getTipoIntegrazione())) {
fullDescription += " di <strong>" + LanguageUtil.get(LocaleUtil.ITALIAN, "label-integrazione-05")
+ " n° " + dettPratica.getIntegrazione() + "</strong>";
+ " n° " + dettPratica.getIntegrazione() + "</strong>";
} else if (TipoIntegrazioneUtil.VARIANTE.equalsIgnoreCase(dettPratica.getTipoIntegrazione())) {
fullDescription += " di <strong>" + LanguageUtil.get(LocaleUtil.ITALIAN, "label-integrazione-13")
+ " n° " + dettPratica.getVarianteNumero() + "</strong>";
+ " n° " + dettPratica.getVarianteNumero() + "</strong>";
}
} else if (this.getClassName().equals(FineLavori.class.getName())) {
FineLavori fineLavori = FineLavoriLocalServiceUtil.fetchFineLavori(this.getClassPk());
boolean parziale = Validator.isNull(fineLavori) ? false : fineLavori.getParziale();
String numero = Validator.isNull(fineLavori) ? StringPool.BLANK : " n° " + fineLavori.getNumero();
String numero = Validator.isNull(fineLavori) ? StringPool.BLANK : " n° " + fineLavori.getNumero();
fullDescription += " di <strong>"
+ LanguageUtil.get(LocaleUtil.ITALIAN, "label-integrazione-"
+ (parziale ? TipoIntegrazioneUtil.FINE_LAVORI_PARZIALE
@ -83,7 +83,7 @@ public class AvvisoImpl extends AvvisoBaseImpl {
} else if (this.getClassName().equals(Collaudo.class.getName())) {
Collaudo collaudo = CollaudoLocalServiceUtil.fetchCollaudo(this.getClassPk());
boolean parziale = Validator.isNull(collaudo) ? false : collaudo.getParziale();
String numero = Validator.isNull(collaudo) ? StringPool.BLANK : " n° " + collaudo.getNumero();
String numero = Validator.isNull(collaudo) ? StringPool.BLANK : " n° " + collaudo.getNumero();
fullDescription += " di <strong>"
+ LanguageUtil.get(LocaleUtil.ITALIAN, "label-integrazione-"
+ (parziale ? TipoIntegrazioneUtil.COLLAUDO_PARZIALE : TipoIntegrazioneUtil.COLLAUDO))

4
liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/util/ProtocollazioneUtil.java

@ -80,8 +80,8 @@ public class ProtocollazioneUtil {
allegato.setFileId("0");
allegato.setFileSha256(sha256);
}
// utilizzato anche come discriminate tra la 1ª e la 2ª chiamata 1ª recupero numero protocollo -> 1 allegato
// finto 2ª aggiorno dati del documento prodotto -> 2 allegati, il 1º giusto e il 2º per recupero num
// utilizzato anche come discriminate tra la 1ª e la 2ª chiamata 1ª recupero numero protocollo -> 1 allegato
// finto 2ª aggiorno dati del documento prodotto -> 2 allegati, il 1º giusto e il 2º per recupero num
// protocollo
Protocollo protocolloBean = new Protocollo();
protocolloBean.setOggetto(generaOggettoProtocollo(avviso.getClassName(), avviso.getAvvisoId()));

4
liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/html/flcollaudopanel/view.jsp

@ -1,2 +1,6 @@
<%@ include file="/html/flcollaudopanel/init.jsp" %>
<%
%>

2
liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/verify_fine-lavori_calcolo.jsp

@ -148,7 +148,7 @@ String currentCompleteUrl = PortalUtil.getCurrentCompleteURL(request);
<c:if test="<%= pagamentoSpeseIsPagato %>">
<div class="col-xs-12 padding_15">
<span>
Pagamento diritti fissi completato
<%= LanguageUtil.get(pageContext, "text-pagamento-completato-bolli") %>
</span>
</div>
</c:if>

1
liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/.tern-project

@ -0,0 +1 @@
{"ide":{"scriptPaths":[]},"plugins":{"aui":{},"liferay":{},"yui":{}},"libs":["ecma5","browser"]}

BIN
liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/docroot/WEB-INF/lib/portos-bo-shared-service.jar

File binario non mostrato.

BIN
liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/docroot/WEB-INF/lib/portos-bo-shared.jar

File binario non mostrato.

255
liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/notification/portlet/NotificationPortlet.java

@ -42,131 +42,134 @@ import com.liferay.util.bridges.mvc.MVCPortlet;
*/
public class NotificationPortlet extends MVCPortlet {
private static final Log _log = LogFactoryUtil.getLog(NotificationPortlet.class);
@Override
public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException,
PortletException {
String id = resourceRequest.getResourceID();
try {
ServiceContext serviceContext = ServiceContextFactory.getInstance(resourceRequest);
long companyId = serviceContext.getCompanyId();
// long groupId = serviceContext.getScopeGroupId();
long userId = serviceContext.getUserId();
int count = 0;
if ("countTasksUser".equals(id)) {
try {
count = WorkflowTaskManagerUtil.getWorkflowTaskCountByUser(companyId, userId, false);
} catch (WorkflowException e) {
}
} else if ("countTasksUserRoles".equals(id)) {
try {
count = WorkflowTaskManagerUtil.getWorkflowTaskCountByUserRoles(companyId, userId, false);
} catch (WorkflowException e) {
}
} else if ("countTaksGestioneFirmeMie".equals(id)) {
count =
AvvisoLocalServiceUtil.countAvvisiDaFirmarePrimaFirmaByCF(companyId,
UserLocalServiceUtil.getUser(userId).getScreenName());
} else if ("countTaksGestioneFirme".equals(id)) {
long[] groupIds = new long[0];
List<Organization> organizations =
OrganizationLocalServiceUtil.getUserOrganizations(serviceContext.getUserId());
for (Organization organization : organizations) {
if (UserGroupRoleLocalServiceUtil.hasUserGroupRole(serviceContext.getUserId(), organization.getGroupId(),
Constants.ROLE_NAME_FIRMA, true)) {
groupIds = ArrayUtil.append(groupIds, organization.getGroupId());
} else if (UserGroupRoleLocalServiceUtil.hasUserGroupRole(serviceContext.getUserId(),
organization.getGroupId(), Constants.ROLE_NAME_FIRMA_DIRIGENTE, true)) {
groupIds = ArrayUtil.append(groupIds, organization.getGroupId());
}
}
count = AvvisoLocalServiceUtil.countAvvisiDaFirmarePrimaFirma(companyId, groupIds);
} else if ("countPraticheInScadenza".equals(id)) {
count = TempisticaLocalServiceUtil.countScadenzePraticheInScadenza(companyId, 0l);
} else if ("countPraticheScadute".equals(id)) {
count = TempisticaLocalServiceUtil.countScadenzePraticheScadute(companyId, 0l);
} else if ("countIntegrazioniScadute".equals(id)) {
count = TempisticaLocalServiceUtil.countScadenzeIntegrazioniScadute(companyId, 0l);
} else if ("countPraticheAttive".equals(id)) {
count = TempisticaLocalServiceUtil.countPraticheAttive(companyId, 0l);
} else if ("countPraticheAttiveAssegnazione".equals(id)) {
count = getCountPraticheAssegnazione(companyId, 0l, false);
} else if ("countPraticheAttiveOrdinarie".equals(id)) {
count = getCountPraticheAssegnazione(companyId, 0l, true);
}
JSONObject obj = JSONFactoryUtil.createJSONObject();
obj.put("count", count);
writeJSON(resourceRequest, resourceResponse, obj);
} catch (PortalException e) {
_log.error("Error", e);
throw new PortletException(e);
} catch (SystemException e) {
_log.error("Error", e);
throw new PortletException(e);
}
}
private int getCountPraticheAssegnazione(long companyId, long groupId, boolean ordinarie) throws SystemException{
ClassLoader classLoaderBO =
(ClassLoader) PortletBeanLocatorUtil.locate(ClpSerializer.getServletContextName(), "portletClassLoader");
ClassLoader classLoader =
(ClassLoader) PortletBeanLocatorUtil.locate(com.liferay.portal.workflow.kaleo.service.ClpSerializer.getServletContextName(), "portletClassLoader");
List<Long> pratiche = TempisticaLocalServiceUtil.countPraticheAttivePerDiscriminazione(companyId, 0l);
int countControlloDaAssegnare = 0;
int countControlloOrdinarie = 0;
for(Long intPraticaId : pratiche){
DynamicQuery query = DynamicQueryFactoryUtil.forClass(ControlloPratica.class,classLoaderBO);
query.add(RestrictionsFactoryUtil.eq("intPraticaId", intPraticaId));
List<ControlloPratica> lista = ControlloPraticaLocalServiceUtil.dynamicQuery(query);
if(lista != null && !lista.isEmpty()){
ControlloPratica controlloPratica = lista.get(0);
if(controlloPratica != null){
DynamicQuery queryKaleo = DynamicQueryFactoryUtil.forClass(KaleoTaskInstanceToken.class,classLoader);
queryKaleo.add(RestrictionsFactoryUtil.eq("classPK", controlloPratica.getControlloPraticaId()));
queryKaleo.add(RestrictionsFactoryUtil.eq("className", ControlloPratica.class.getName()));
queryKaleo.add(RestrictionsFactoryUtil.eq("kaleoTaskName", "Assegnazione"));
queryKaleo.add(RestrictionsFactoryUtil.eq("completed", false));
List<KaleoTaskInstanceToken> listaKaleo = KaleoTaskInstanceTokenLocalServiceUtil.dynamicQuery(queryKaleo);
if(listaKaleo != null && !listaKaleo.isEmpty()){
countControlloDaAssegnare ++;
} else {
countControlloOrdinarie++;
}
}
}
}
if(ordinarie){
return countControlloOrdinarie;
} else {
return countControlloDaAssegnare;
}
}
private static final Log _log = LogFactoryUtil.getLog(NotificationPortlet.class);
@Override
public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException,
PortletException {
String id = resourceRequest.getResourceID();
try {
ServiceContext serviceContext = ServiceContextFactory.getInstance(resourceRequest);
long companyId = serviceContext.getCompanyId();
// long groupId = serviceContext.getScopeGroupId();
long userId = serviceContext.getUserId();
int count = 0;
if ("countTasksUser".equals(id)) {
try {
count = WorkflowTaskManagerUtil.getWorkflowTaskCountByUser(companyId, userId, false);
} catch (WorkflowException e) {
}
} else if ("countTasksUserRoles".equals(id)) {
try {
count = WorkflowTaskManagerUtil.getWorkflowTaskCountByUserRoles(companyId, userId, false);
} catch (WorkflowException e) {
}
} else if ("countTaksGestioneFirmeMie".equals(id)) {
count =
AvvisoLocalServiceUtil.countAvvisiDaFirmarePrimaFirmaByCF(companyId,
UserLocalServiceUtil.getUser(userId).getScreenName());
} else if ("countTaksGestioneFirme".equals(id)) {
long[] groupIds = new long[0];
List<Organization> organizations =
OrganizationLocalServiceUtil.getUserOrganizations(serviceContext.getUserId());
for (Organization organization : organizations) {
if (UserGroupRoleLocalServiceUtil.hasUserGroupRole(serviceContext.getUserId(), organization.getGroupId(),
Constants.ROLE_NAME_FIRMA, true)) {
groupIds = ArrayUtil.append(groupIds, organization.getGroupId());
} else if (UserGroupRoleLocalServiceUtil.hasUserGroupRole(serviceContext.getUserId(),
organization.getGroupId(), Constants.ROLE_NAME_FIRMA_DIRIGENTE, true)) {
groupIds = ArrayUtil.append(groupIds, organization.getGroupId());
}
}
count = AvvisoLocalServiceUtil.countAvvisiDaFirmarePrimaFirma(companyId, groupIds);
} else if ("countPraticheInScadenza".equals(id)) {
count = TempisticaLocalServiceUtil.countScadenzePraticheInScadenza(companyId, 0l);
} else if ("countPraticheScadute".equals(id)) {
count = TempisticaLocalServiceUtil.countScadenzePraticheScadute(companyId, 0l);
} else if ("countIntegrazioniScadute".equals(id)) {
count = TempisticaLocalServiceUtil.countScadenzeIntegrazioniScadute(companyId, 0l);
} else if ("countPraticheAttive".equals(id)) {
count = TempisticaLocalServiceUtil.countPraticheAttive(companyId, 0l);
} else if ("countPraticheAttiveAssegnazione".equals(id)) {
count = getCountPraticheAssegnazione(companyId, 0l, false);
} else if ("countPraticheAttiveOrdinarie".equals(id)) {
count = getCountPraticheAssegnazione(companyId, 0l, true);
} else if("countControlloFLCollaudo".equals(id)){
//recupera
count = getCountControlloFLCollaudo(companyId, 0l, true);
}
JSONObject obj = JSONFactoryUtil.createJSONObject();
obj.put("count", count);
writeJSON(resourceRequest, resourceResponse, obj);
} catch (PortalException e) {
_log.error("Error", e);
throw new PortletException(e);
} catch (SystemException e) {
_log.error("Error", e);
throw new PortletException(e);
}
}
private int getCountPraticheAssegnazione(long companyId, long groupId, boolean ordinarie) throws SystemException{
ClassLoader classLoaderBO =
(ClassLoader) PortletBeanLocatorUtil.locate(ClpSerializer.getServletContextName(), "portletClassLoader");
ClassLoader classLoader =
(ClassLoader) PortletBeanLocatorUtil.locate(com.liferay.portal.workflow.kaleo.service.ClpSerializer.getServletContextName(), "portletClassLoader");
List<Long> pratiche = TempisticaLocalServiceUtil.countPraticheAttivePerDiscriminazione(companyId, 0l);
int countControlloDaAssegnare = 0;
int countControlloOrdinarie = 0;
for(Long intPraticaId : pratiche){
DynamicQuery query = DynamicQueryFactoryUtil.forClass(ControlloPratica.class,classLoaderBO);
query.add(RestrictionsFactoryUtil.eq("intPraticaId", intPraticaId));
List<ControlloPratica> lista = ControlloPraticaLocalServiceUtil.dynamicQuery(query);
if(lista != null && !lista.isEmpty()){
ControlloPratica controlloPratica = lista.get(0);
if(controlloPratica != null){
DynamicQuery queryKaleo = DynamicQueryFactoryUtil.forClass(KaleoTaskInstanceToken.class,classLoader);
queryKaleo.add(RestrictionsFactoryUtil.eq("classPK", controlloPratica.getControlloPraticaId()));
queryKaleo.add(RestrictionsFactoryUtil.eq("className", ControlloPratica.class.getName()));
queryKaleo.add(RestrictionsFactoryUtil.eq("kaleoTaskName", "Assegnazione"));
queryKaleo.add(RestrictionsFactoryUtil.eq("completed", false));
List<KaleoTaskInstanceToken> listaKaleo = KaleoTaskInstanceTokenLocalServiceUtil.dynamicQuery(queryKaleo);
if(listaKaleo != null && !listaKaleo.isEmpty()){
countControlloDaAssegnare ++;
} else {
countControlloOrdinarie++;
}
}
}
}
if(ordinarie){
return countControlloOrdinarie;
} else {
return countControlloDaAssegnare;
}
}
}

39
liferay-plugins-sdk-6.2/portlets/portos-notification-portlet/docroot/html/notification/view.jsp

@ -47,6 +47,11 @@
gestioneTempistichePraticheScaduteURL.setWindowState(LiferayWindowState.POP_UP);
gestioneTempistichePraticheScaduteURL.setParameter("statoPratica", "-1");
//Evolutive 2023
PortletURL controlloFLCollaudoURL = PortletURLFactoryUtil.create(request, PortletKeys.FLCOLLAUDO,plid, PortletRequest.RENDER_PHASE);
controlloFLCollaudoURL.setPortletMode(PortletMode.VIEW);
controlloFLCollaudoURL.setWindowState(LiferayWindowState.POP_UP);
PortletURL workflowTaskURL = PortletURLFactoryUtil.create(request, PortletKeys.MY_WORKFLOW_TASKS,controlPanelPlid, PortletRequest.RENDER_PHASE);
workflowTaskURL.setParameter("struts_action",
"/my_workflow_tasks/view");
@ -69,6 +74,7 @@
<portlet:resourceURL id="countPraticheAttiveAssegnazione" var="countPraticheAttiveAssegnazioneURL" />
<portlet:resourceURL id="countPraticheAttiveOrdinarie" var="countPraticheAttiveOrdinarieURL" />
<portlet:resourceURL id="countControlloFLCollaudo" var="countControlloFLCollaudoURL" />
<aside id="left_fixed_sidebar" class="hidden-xs">
@ -218,6 +224,25 @@
</div>
</li>
<li class="notification_group group_controllo_flcollaudo">
<h4 class="notification_group_label text-uppercase"><i class="fa fa-clock-o" aria-hidden="true"></i>Fine Lavori/Collaudo</h4>
<div class="notification_item expiring_files">
<aui:a class="notification_link"
id="controlloFLCollaudo"
href="<%=controlloFLCollaudoURL.toString()%>"
target="_self">
<span class="notification_inner left">
<h5 class="notification_title">Attestazioni di Fine Lavori in ritardo</h5>
</span>
<span class="notification_inner right">
<i class="fa fa-check-circle-o txt-green relative" aria-hidden="true">
<span class="fa-hover fa-top-right">P</span>
</i>
<span class="notification_number text-center" id='<portlet:namespace/>countControlloFLCollaudo'></span>
</span>
</aui:a>
</div>
</li>
</ul>
</aside>
@ -255,6 +280,10 @@
event.preventDefault();
<portlet:namespace />openLinkToPopup(event.currentTarget);
});
A.one('#<portlet:namespace />controlloFLCollaudo').on('click', function(event) {
event.preventDefault();
<portlet:namespace />openLinkToPopup(event.currentTarget);
});
// A.one('#<portlet:namespace />tempisticheIntegrazioni').on('click', function(event) {
// event.preventDefault();
// <portlet:namespace />openLinkToPopup(event.currentTarget);
@ -299,6 +328,10 @@
<portlet:namespace />loadCountValue('<portlet:namespace />countPraticheAttiveOrdinarie',
'<%=countPraticheAttiveOrdinarieURL%>');
}
if(countControlloFLCollaudo != null){
<portlet:namespace />loadCountValue('<portlet:namespace />countControlloFLCollaudo',
'<%=countControlloFLCollaudoURL%>');
}
});
Liferay.provide(
@ -330,6 +363,12 @@
'<%=countPraticheAttiveOrdinarieURL%>');
}
var countControlloFLCollaudo = A.one('#<portlet:namespace />countControlloFLCollaudo')
if(countControlloFLCollaudo != null){
<portlet:namespace />loadCountValue('<portlet:namespace />countControlloFLCollaudo',
'<%=countControlloFLCollaudoURL%>');
}
<portlet:namespace />loadCountValue('<portlet:namespace />countPraticheInScadenza',
'<%=countPraticheInScadenzaURL%>');

1
liferay-plugins-sdk-6.2/shared/portos-bo-shared/src/it/tref/liferay/portos/bo/shared/util/PortletKeys.java

@ -11,6 +11,7 @@ public class PortletKeys extends com.liferay.portal.util.PortletKeys {
public static final String CARICHI_LAVORO = "9_WAR_portosboportlet";
public static final String TEMPISTICHE = "10_WAR_portosboportlet";
public static final String PAGAMENTI_PENDING = "12_WAR_portosboportlet";
public final static String FLCOLLAUDO = "14_WAR_portosboportlet";
public final static String FASCICOLOFE = "1_WAR_portosfeportlet";
public final static String SOGGETTI = "3_WAR_portosfeportlet";
public final static String ALLEGATI = "4_WAR_portosfeportlet";

Caricamento…
Annulla
Salva