From 5b4432aa8f2bf9f503f5465d234b9b2562550196 Mon Sep 17 00:00:00 2001 From: Salvatore La Manna Date: Fri, 22 Apr 2022 14:55:48 +0200 Subject: [PATCH] Preview documenti P7m --- .../hooks/portos-p7m-preview-hook/.classpath | 23 - .../hooks/portos-p7m-preview-hook/.project | 37 -- .../.settings/.jsdtscope | 12 - .../.settings/org.eclipse.jdt.core.prefs | 7 - .../org.eclipse.wst.common.component | 8 - ...se.wst.common.project.facet.core.prefs.xml | 7 - ....eclipse.wst.common.project.facet.core.xml | 11 - ...rg.eclipse.wst.jsdt.ui.superType.container | 1 - .../org.eclipse.wst.jsdt.ui.superType.name | 1 - .../hooks/portos-p7m-preview-hook/build.xml | 6 - .../docroot/META-INF/MANIFEST.MF | 3 - .../docroot/WEB-INF/.gitignore | 1 - .../docroot/WEB-INF/lib/util-java.jar | Bin 213058 -> 0 bytes .../docroot/WEB-INF/liferay-hook.xml | 5 - .../WEB-INF/liferay-plugin-package.properties | 11 - .../portlet/p7mpreview/P7mPreview.java | 52 -- .../docroot/WEB-INF/web.xml | 3 - .../hooks/portos-p7m-preview-hook/ivy.xml | 18 - .../hooks/portos-p7m-preview-hook/ivy.xml.MD5 | 1 - .../test/integration/arquillian.xml | 15 - .../sicilia/preview/SiciliaP7MProcessor.java | 44 +- .../bo/service/DettPraticaLocalService.java | 5 + .../service/DettPraticaLocalServiceClp.java | 328 ++++++----- .../service/DettPraticaLocalServiceUtil.java | 7 + .../DettPraticaLocalServiceWrapper.java | 8 + .../portos/bo/util/AsseverazioniUtil.java | 3 +- .../portos/bo/util/AzioniPraticheUtil.java | 5 +- .../bo/util/ValidazionePraticaUtil.java | 520 +----------------- .../WEB-INF/src/content/Portal.properties | 3 +- .../portos/bo/model/impl/AvvisoImpl.java | 15 +- .../portos/bo/portlet/FascicoloPortlet.java | 8 +- .../DettPraticaLocalServiceClpInvoker.java | 305 +++++----- .../impl/ConfigurazioneLocalServiceImpl.java | 18 +- .../impl/DettPraticaLocalServiceImpl.java | 42 +- .../service/impl/DettPraticaServiceImpl.java | 15 +- .../impl/IntPraticaLocalServiceImpl.java | 13 +- .../impl/PagamentoLocalServiceImpl.java | 11 +- .../liferay/portos/bo/util/PagamentiUtil.java | 100 +--- .../docroot/WEB-INF/src/service.properties | 4 +- .../sismica/fe/servlet/Instrumentation.java | 94 ++++ .../sismica/fe/servlet/SorgentiServlet.java | 223 -------- .../portos/fe/portlet/FascicoloFePortlet.java | 90 ++- .../portos-fe-portlet/docroot/WEB-INF/web.xml | 8 +- .../html/fascicolofe/edit_fascicolo.jsp | 1 + .../domanda/page_dettagli_principali.jsp | 97 ++-- .../fascicolofe/verify_cambio_soggetti.jsp | 4 +- .../fascicolofe/verify_collaudo_calcolo.jsp | 2 +- .../fascicolofe/verify_fascicolo_calcolo.jsp | 117 +--- .../docroot/html/sorgenti/footer.jsp | 6 - .../docroot/html/sorgenti/form.jsp | 33 -- .../docroot/html/sorgenti/header.jsp | 22 - .../docroot/html/sorgenti/invio_ko.jsp | 10 - .../docroot/html/sorgenti/invio_ok.jsp | 10 - .../bo/shared/util/DocumentiPraticaUtil.java | 6 +- 54 files changed, 738 insertions(+), 1661 deletions(-) delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.classpath delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.project delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/.jsdtscope delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.jdt.core.prefs delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.component delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.project.facet.core.xml delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.jsdt.ui.superType.container delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.jsdt.ui.superType.name delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/build.xml delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/META-INF/MANIFEST.MF delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/.gitignore delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/lib/util-java.jar delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/liferay-hook.xml delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/liferay-plugin-package.properties delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/src/it/tref/liferay/portlet/p7mpreview/P7mPreview.java delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/web.xml delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/ivy.xml delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/ivy.xml.MD5 delete mode 100644 liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/test/integration/arquillian.xml create mode 100644 liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/mwg/sismica/fe/servlet/Instrumentation.java delete mode 100644 liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/mwg/sismica/fe/servlet/SorgentiServlet.java delete mode 100644 liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/footer.jsp delete mode 100644 liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/form.jsp delete mode 100644 liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/header.jsp delete mode 100644 liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/invio_ko.jsp delete mode 100644 liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/invio_ok.jsp diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.classpath b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.classpath deleted file mode 100644 index 991a105e..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.classpath +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.project b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.project deleted file mode 100644 index c3a8b7b2..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.project +++ /dev/null @@ -1,37 +0,0 @@ - - - portos-p7m-preview-hook - - - - - - org.eclipse.wst.jsdt.core.javascriptValidator - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.wst.common.project.facet.core.builder - - - - - org.eclipse.wst.validation.validationbuilder - - - - - - org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.wst.common.project.facet.core.nature - org.eclipse.jdt.core.javanature - org.eclipse.wst.jsdt.core.jsNature - org.apache.ivyde.eclipse.ivynature - - diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/.jsdtscope b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/.jsdtscope deleted file mode 100644 index 840a01d5..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/.jsdtscope +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.jdt.core.prefs b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index f42de363..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,7 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.component b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.component deleted file mode 100644 index d9ed48a7..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.component +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml deleted file mode 100644 index 1f9ee534..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.project.facet.core.xml b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.project.facet.core.xml deleted file mode 100644 index 92ef9c01..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.common.project.facet.core.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.jsdt.ui.superType.container b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.jsdt.ui.superType.container deleted file mode 100644 index 3bd5d0a4..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.jsdt.ui.superType.container +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.jsdt.ui.superType.name b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.jsdt.ui.superType.name deleted file mode 100644 index 05bd71b6..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/.settings/org.eclipse.wst.jsdt.ui.superType.name +++ /dev/null @@ -1 +0,0 @@ -Window \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/build.xml b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/build.xml deleted file mode 100644 index 2f4e1eb9..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/build.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/META-INF/MANIFEST.MF b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/META-INF/MANIFEST.MF deleted file mode 100644 index 254272e1..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/.gitignore b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/.gitignore deleted file mode 100644 index 840e7d31..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/classes/ diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/lib/util-java.jar b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/lib/util-java.jar deleted file mode 100644 index 6b5d95f809264fc39b70a46646976290b3a243f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213058 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

k8iVsVRER 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 Zd - - - - \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/liferay-plugin-package.properties b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/liferay-plugin-package.properties deleted file mode 100644 index b13bf1ef..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/liferay-plugin-package.properties +++ /dev/null @@ -1,11 +0,0 @@ -name=Portos P7m Preview -module-group-id=liferay -module-incremental-version=1 -tags= -short-description= -long-description= -change-log= -page-url=http://www.liferay.com -author=Liferay, Inc. -licenses=LGPL -liferay-versions=6.2.0+ \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/src/it/tref/liferay/portlet/p7mpreview/P7mPreview.java b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/src/it/tref/liferay/portlet/p7mpreview/P7mPreview.java deleted file mode 100644 index 073f22d5..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/src/it/tref/liferay/portlet/p7mpreview/P7mPreview.java +++ /dev/null @@ -1,52 +0,0 @@ -package it.tref.liferay.portlet.p7mpreview; - -import java.util.List; - -import com.liferay.portal.kernel.lar.PortletDataContext; -import com.liferay.portal.kernel.log.Log; -import com.liferay.portal.kernel.log.LogFactoryUtil; -import com.liferay.portal.kernel.repository.model.FileEntry; -import com.liferay.portal.kernel.repository.model.FileVersion; -import com.liferay.portal.kernel.xml.Element; -import com.liferay.portlet.documentlibrary.util.DLPreviewableProcessor; - -public class P7mPreview extends DLPreviewableProcessor { - Log _log = LogFactoryUtil.getLog(P7mPreview.class); - - @Override - public void afterPropertiesSet() throws Exception {} - - @Override - public boolean isSupported(String mimeType) { - - _log.info("isSupported(\"" + mimeType + "\""); - return false; - } - - @Override - protected void doExportGeneratedFiles(PortletDataContext portletDataContext, FileEntry fileEntry, - Element fileEntryElement) throws Exception {} - - @Override - protected void doImportGeneratedFiles(PortletDataContext portletDataContext, FileEntry fileEntry, - FileEntry importedFileEntry, Element fileEntryElement) throws Exception {} - - @Override - protected List getFileVersionIds() { - - return null; - } - - @Override - protected String getPreviewType(FileVersion fileVersion) { - - return null; - } - - @Override - protected String getThumbnailType(FileVersion fileVersion) { - - return null; - } - -} diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/web.xml b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/web.xml deleted file mode 100644 index 1aa8cdb8..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/docroot/WEB-INF/web.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/ivy.xml b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/ivy.xml deleted file mode 100644 index 12cc7c7c..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/ivy.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/ivy.xml.MD5 b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/ivy.xml.MD5 deleted file mode 100644 index 65d421b8..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/ivy.xml.MD5 +++ /dev/null @@ -1 +0,0 @@ -2c267788e15963b22e4e720e12f5611c diff --git a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/test/integration/arquillian.xml b/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/test/integration/arquillian.xml deleted file mode 100644 index 9413609b..00000000 --- a/liferay-plugins-sdk-6.2/hooks/portos-p7m-preview-hook/test/integration/arquillian.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - 8099 - tomcat - tomcat - - - \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/hooks/sicilia-p7m-preview-hook/docroot/WEB-INF/src/it/mwg/sicilia/preview/SiciliaP7MProcessor.java b/liferay-plugins-sdk-6.2/hooks/sicilia-p7m-preview-hook/docroot/WEB-INF/src/it/mwg/sicilia/preview/SiciliaP7MProcessor.java index 9bb30da0..207b1989 100644 --- a/liferay-plugins-sdk-6.2/hooks/sicilia-p7m-preview-hook/docroot/WEB-INF/src/it/mwg/sicilia/preview/SiciliaP7MProcessor.java +++ b/liferay-plugins-sdk-6.2/hooks/sicilia-p7m-preview-hook/docroot/WEB-INF/src/it/mwg/sicilia/preview/SiciliaP7MProcessor.java @@ -12,13 +12,11 @@ import java.io.File; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.Vector; -import java.util.concurrent.Future; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.time.StopWatch; @@ -317,7 +315,9 @@ public class SiciliaP7MProcessor extends DLPreviewableProcessor implements PDFPr File file = DocumentConversionUtil.convert(tempFileId, inputStream, extension, "pdf"); _generateImages(destinationFileVersion, file); } - } catch (NoSuchFileEntryException nsfee) {} finally { + } catch (NoSuchFileEntryException nsfee) { + // Ignore + } finally { StreamUtil.cleanUp(inputStream); _fileVersionIds.remove(destinationFileVersion.getFileVersionId()); } @@ -327,26 +327,8 @@ public class SiciliaP7MProcessor extends DLPreviewableProcessor implements PDFPr // openssl smime -verify -noverify -in document.pdf.p7m -inform DER -out document.pdf File pdf = File.createTempFile("p7m-output", ".pdf"); - List arguments = new LinkedList<>(); - arguments.add("openssl"); - arguments.add("smime"); - arguments.add("-verify"); - arguments.add("-noverify"); - arguments.add("-in"); - arguments.add(p7m.getAbsolutePath()); - arguments.add("-inform"); - arguments.add("DER"); - arguments.add("-out"); - arguments.add(pdf.getAbsolutePath()); - Future future = ProcessUtil.execute(ProcessUtil.LOGGING_OUTPUT_PROCESSOR, arguments); - while (!future.isCancelled()) { - if (future.isDone()) { - futures.put(pdf.getAbsolutePath(), future); - break; - } - Thread.sleep(1000); - } - future.get(); + ProcessUtil.execute(ProcessUtil.LOGGING_OUTPUT_PROCESSOR, "openssl", "smime", "-verify", "-noverify", "-in", + p7m.getAbsolutePath(), "-inform", "DER", "-out", pdf.getAbsolutePath()).get(); return pdf; } @@ -406,16 +388,7 @@ public class SiciliaP7MProcessor extends DLPreviewableProcessor implements PDFPr arguments.add("-dDEVICEHEIGHT=" + PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_HEIGHT); } arguments.add(file.getPath()); - Future future = GhostscriptUtil.execute(arguments); - String processIdentity = String.valueOf(fileVersion.getFileVersionId()); - while (!future.isCancelled()) { - if (future.isDone()) { - futures.put(processIdentity, future); - break; - } - Thread.sleep(1000); - } - future.get(); + GhostscriptUtil.execute(arguments).get(); // Store images if (thumbnail) { File thumbnailTempFile = getThumbnailTempFile(tempFileId); @@ -476,10 +449,7 @@ public class SiciliaP7MProcessor extends DLPreviewableProcessor implements PDFPr PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_DPI, PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_HEIGHT, PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_WIDTH, generatePreview, generateThumbnail); - Future future = ProcessExecutor.execute(ClassPathUtil.getPortalClassPath(), processCallable); - String processIdentity = String.valueOf(fileVersion.getFileVersionId()); - futures.put(processIdentity, future); - future.get(); + ProcessExecutor.execute(ClassPathUtil.getPortalClassPath(), processCallable).get(); } else { LiferayPDFBoxConverter liferayConverter = new LiferayPDFBoxConverter(file, thumbnailFile, previewFiles, getPreviewType(fileVersion), getThumbnailType(fileVersion), diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalService.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalService.java index b5d5c720..cd2dec31 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalService.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalService.java @@ -702,6 +702,11 @@ public interface DettPraticaLocalService extends BaseLocalService, com.liferay.portal.kernel.exception.SystemException, java.io.IOException; + public void concludiPagamento(long dettPraticaId) + throws com.liferay.portal.kernel.exception.PortalException, + com.liferay.portal.kernel.exception.SystemException, + java.io.IOException; + @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public boolean isControlloObbligatorio( it.tref.liferay.portos.bo.model.DettPratica dettPratica); diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceClp.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceClp.java index f1cde09a..2f0c805e 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceClp.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceClp.java @@ -351,23 +351,27 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { "long", "long", "long", "java.lang.String" }; - _methodName47 = "isControlloObbligatorio"; + _methodName47 = "concludiPagamento"; - _methodParameterTypes47 = new String[] { + _methodParameterTypes47 = new String[] { "long" }; + + _methodName48 = "isControlloObbligatorio"; + + _methodParameterTypes48 = new String[] { "it.tref.liferay.portos.bo.model.DettPratica" }; - _methodName48 = "updateEsito"; + _methodName49 = "updateEsito"; - _methodParameterTypes48 = new String[] { "long", "int" }; + _methodParameterTypes49 = new String[] { "long", "int" }; - _methodName49 = "updateEsitoIntegrazione"; + _methodName50 = "updateEsitoIntegrazione"; - _methodParameterTypes49 = new String[] { "long", "int" }; + _methodParameterTypes50 = new String[] { "long", "int" }; - _methodName50 = "pagaInvia"; + _methodName51 = "pagaInvia"; - _methodParameterTypes50 = new String[] { + _methodParameterTypes51 = new String[] { "long", "int", "int", "int", "int", "boolean", "boolean", "boolean", "java.lang.String", "boolean", "java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String", @@ -376,151 +380,151 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { "java.lang.String", "com.liferay.portal.service.ServiceContext" }; - _methodName51 = "updateStatus"; + _methodName52 = "updateStatus"; - _methodParameterTypes51 = new String[] { + _methodParameterTypes52 = new String[] { "long", "long", "int", "com.liferay.portal.service.ServiceContext" }; - _methodName52 = "updateDettPraticaProtocollo"; + _methodName53 = "updateDettPraticaProtocollo"; - _methodParameterTypes52 = new String[] { "long", "java.lang.String" }; + _methodParameterTypes53 = new String[] { "long", "java.lang.String" }; - _methodName53 = "findByProtocollo"; + _methodName54 = "findByProtocollo"; - _methodParameterTypes53 = new String[] { + _methodParameterTypes54 = new String[] { "long", "long", "java.lang.String" }; - _methodName54 = "fetchByProtocollo"; + _methodName55 = "fetchByProtocollo"; - _methodParameterTypes54 = new String[] { + _methodParameterTypes55 = new String[] { "long", "long", "java.lang.String" }; - _methodName55 = "fetchByProtocollo"; + _methodName56 = "fetchByProtocollo"; - _methodParameterTypes55 = new String[] { "java.lang.String" }; + _methodParameterTypes56 = new String[] { "java.lang.String" }; - _methodName56 = "findByIntPraticaId"; + _methodName57 = "findByIntPraticaId"; - _methodParameterTypes56 = new String[] { "long" }; + _methodParameterTypes57 = new String[] { "long" }; - _methodName57 = "findByIntPraticaIdInviate"; + _methodName58 = "findByIntPraticaIdInviate"; - _methodParameterTypes57 = new String[] { "long", "int", "int" }; + _methodParameterTypes58 = new String[] { "long", "int", "int" }; - _methodName58 = "findPraticheCompleteNotProtocollo"; + _methodName59 = "findPraticheCompleteNotProtocollo"; - _methodParameterTypes58 = new String[] { "int", "int" }; + _methodParameterTypes59 = new String[] { "int", "int" }; - _methodName59 = "countPraticheCompleteNotProtocollo"; + _methodName60 = "countPraticheCompleteNotProtocollo"; - _methodParameterTypes59 = new String[] { }; + _methodParameterTypes60 = new String[] { }; - _methodName60 = "findPraticheCompleteNotGestite"; + _methodName61 = "findPraticheCompleteNotGestite"; - _methodParameterTypes60 = new String[] { "int", "int" }; + _methodParameterTypes61 = new String[] { "int", "int" }; - _methodName61 = "countPraticheCompleteNotGestite"; + _methodName62 = "countPraticheCompleteNotGestite"; - _methodParameterTypes61 = new String[] { }; + _methodParameterTypes62 = new String[] { }; - _methodName62 = "findByIntPraticaId_TipoIntegrazione_Completa"; + _methodName63 = "findByIntPraticaId_TipoIntegrazione_Completa"; - _methodParameterTypes62 = new String[] { + _methodParameterTypes63 = new String[] { "long", "java.lang.String", "boolean" }; - _methodName63 = "countByIntPraticaId_TipoIntegrazione_Completa"; + _methodName64 = "countByIntPraticaId_TipoIntegrazione_Completa"; - _methodParameterTypes63 = new String[] { + _methodParameterTypes64 = new String[] { "long", "java.lang.String", "boolean" }; - _methodName64 = "findPraticheCompletateNonVersionate"; + _methodName65 = "findPraticheCompletateNonVersionate"; - _methodParameterTypes64 = new String[] { "int", "int" }; + _methodParameterTypes65 = new String[] { "int", "int" }; - _methodName65 = "countPraticheCompletateNonversionate"; + _methodName66 = "countPraticheCompletateNonversionate"; - _methodParameterTypes65 = new String[] { }; + _methodParameterTypes66 = new String[] { }; - _methodName66 = "updateDettPraticaGestita"; + _methodName67 = "updateDettPraticaGestita"; - _methodParameterTypes66 = new String[] { "long", "boolean" }; + _methodParameterTypes67 = new String[] { "long", "boolean" }; - _methodName67 = "updateAsset"; + _methodName68 = "updateAsset"; - _methodParameterTypes67 = new String[] { + _methodParameterTypes68 = new String[] { "it.tref.liferay.portos.bo.model.DettPratica", "long[][]", "boolean" }; - _methodName68 = "updateStatus"; + _methodName69 = "updateStatus"; - _methodParameterTypes68 = new String[] { "long", "int" }; + _methodParameterTypes69 = new String[] { "long", "int" }; - _methodName69 = "updateSignal"; + _methodName70 = "updateSignal"; - _methodParameterTypes69 = new String[] { "long", "java.util.Date" }; + _methodParameterTypes70 = new String[] { "long", "java.util.Date" }; - _methodName70 = "countInvioSignal"; + _methodName71 = "countInvioSignal"; - _methodParameterTypes70 = new String[] { }; + _methodParameterTypes71 = new String[] { }; - _methodName71 = "getInvioSignal"; + _methodName72 = "getInvioSignal"; - _methodParameterTypes71 = new String[] { "long" }; + _methodParameterTypes72 = new String[] { "long" }; - _methodName72 = "getInviiSignal"; + _methodName73 = "getInviiSignal"; - _methodParameterTypes72 = new String[] { "int", "int" }; + _methodParameterTypes73 = new String[] { "int", "int" }; - _methodName73 = "dynamicQueryInvioSignal"; + _methodName74 = "dynamicQueryInvioSignal"; - _methodParameterTypes73 = new String[] { "java.lang.Long" }; + _methodParameterTypes74 = new String[] { "java.lang.Long" }; - _methodName74 = "findByPagamentoId"; + _methodName75 = "findByPagamentoId"; - _methodParameterTypes74 = new String[] { "long" }; + _methodParameterTypes75 = new String[] { "long" }; - _methodName75 = "updatePrincipale"; + _methodName76 = "updatePrincipale"; - _methodParameterTypes75 = new String[] { + _methodParameterTypes76 = new String[] { "long", "java.lang.String", "java.lang.String" }; - _methodName76 = "getDettPraticaFields"; + _methodName77 = "getDettPraticaFields"; - _methodParameterTypes76 = new String[] { }; + _methodParameterTypes77 = new String[] { }; - _methodName77 = "getVersioni"; + _methodName78 = "getVersioni"; - _methodParameterTypes77 = new String[] { "long" }; + _methodParameterTypes78 = new String[] { "long" }; - _methodName78 = "callForChanges"; + _methodName79 = "callForChanges"; - _methodParameterTypes78 = new String[] { "long" }; + _methodParameterTypes79 = new String[] { "long" }; - _methodName79 = "isNumber"; + _methodName80 = "isNumber"; - _methodParameterTypes79 = new String[] { "java.lang.String" }; + _methodParameterTypes80 = new String[] { "java.lang.String" }; - _methodName80 = "format"; + _methodName81 = "format"; - _methodParameterTypes80 = new String[] { + _methodParameterTypes81 = new String[] { "java.lang.String", "java.io.Serializable" }; - _methodName81 = "countVariateByIntPratica"; + _methodName82 = "countVariateByIntPratica"; - _methodParameterTypes81 = new String[] { "long" }; + _methodParameterTypes82 = new String[] { "long" }; - _methodName82 = "getFirstCompletedByIntPratica"; + _methodName83 = "getFirstCompletedByIntPratica"; - _methodParameterTypes82 = new String[] { "long" }; + _methodParameterTypes83 = new String[] { "long" }; } @Override @@ -3158,14 +3162,48 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { } } + @Override + public void concludiPagamento(long dettPraticaId) + throws com.liferay.portal.kernel.exception.PortalException, + com.liferay.portal.kernel.exception.SystemException, + java.io.IOException { + try { + _invokableLocalService.invokeMethod(_methodName47, + _methodParameterTypes47, new Object[] { dettPraticaId }); + } + catch (Throwable t) { + t = ClpSerializer.translateThrowable(t); + + if (t instanceof com.liferay.portal.kernel.exception.PortalException) { + throw (com.liferay.portal.kernel.exception.PortalException)t; + } + + if (t instanceof com.liferay.portal.kernel.exception.SystemException) { + throw (com.liferay.portal.kernel.exception.SystemException)t; + } + + if (t instanceof java.io.IOException) { + throw (java.io.IOException)t; + } + + if (t instanceof RuntimeException) { + throw (RuntimeException)t; + } + else { + throw new RuntimeException(t.getClass().getName() + + " is not a valid exception"); + } + } + } + @Override public boolean isControlloObbligatorio( it.tref.liferay.portos.bo.model.DettPratica dettPratica) { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName47, - _methodParameterTypes47, + returnObj = _invokableLocalService.invokeMethod(_methodName48, + _methodParameterTypes48, new Object[] { ClpSerializer.translateInput(dettPratica) }); } catch (Throwable t) { @@ -3192,8 +3230,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName48, - _methodParameterTypes48, + returnObj = _invokableLocalService.invokeMethod(_methodName49, + _methodParameterTypes49, new Object[] { dettPraticaId, stato }); } catch (Throwable t) { @@ -3232,8 +3270,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName49, - _methodParameterTypes49, + returnObj = _invokableLocalService.invokeMethod(_methodName50, + _methodParameterTypes50, new Object[] { dettPraticaId, stato }); } catch (Throwable t) { @@ -3286,8 +3324,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName50, - _methodParameterTypes50, + returnObj = _invokableLocalService.invokeMethod(_methodName51, + _methodParameterTypes51, new Object[] { dettPraticaId, @@ -3372,8 +3410,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName51, - _methodParameterTypes51, + returnObj = _invokableLocalService.invokeMethod(_methodName52, + _methodParameterTypes52, new Object[] { userId, @@ -3415,8 +3453,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName52, - _methodParameterTypes52, + returnObj = _invokableLocalService.invokeMethod(_methodName53, + _methodParameterTypes53, new Object[] { dettPraticaId, @@ -3454,8 +3492,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName53, - _methodParameterTypes53, + returnObj = _invokableLocalService.invokeMethod(_methodName54, + _methodParameterTypes54, new Object[] { companyId, @@ -3495,8 +3533,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName54, - _methodParameterTypes54, + returnObj = _invokableLocalService.invokeMethod(_methodName55, + _methodParameterTypes55, new Object[] { companyId, @@ -3536,8 +3574,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName55, - _methodParameterTypes55, + returnObj = _invokableLocalService.invokeMethod(_methodName56, + _methodParameterTypes56, new Object[] { ClpSerializer.translateInput(protocollo) }); } catch (Throwable t) { @@ -3570,8 +3608,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName56, - _methodParameterTypes56, new Object[] { intPraticaId }); + returnObj = _invokableLocalService.invokeMethod(_methodName57, + _methodParameterTypes57, new Object[] { intPraticaId }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -3599,8 +3637,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName57, - _methodParameterTypes57, + returnObj = _invokableLocalService.invokeMethod(_methodName58, + _methodParameterTypes58, new Object[] { intPraticaId, start, end }); } catch (Throwable t) { @@ -3629,8 +3667,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName58, - _methodParameterTypes58, new Object[] { start, end }); + returnObj = _invokableLocalService.invokeMethod(_methodName59, + _methodParameterTypes59, new Object[] { start, end }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -3657,8 +3695,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName59, - _methodParameterTypes59, new Object[] { }); + returnObj = _invokableLocalService.invokeMethod(_methodName60, + _methodParameterTypes60, new Object[] { }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -3686,8 +3724,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName60, - _methodParameterTypes60, new Object[] { start, end }); + returnObj = _invokableLocalService.invokeMethod(_methodName61, + _methodParameterTypes61, new Object[] { start, end }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -3714,8 +3752,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName61, - _methodParameterTypes61, new Object[] { }); + returnObj = _invokableLocalService.invokeMethod(_methodName62, + _methodParameterTypes62, new Object[] { }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -3743,8 +3781,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName62, - _methodParameterTypes62, + returnObj = _invokableLocalService.invokeMethod(_methodName63, + _methodParameterTypes63, new Object[] { intPraticaId, @@ -3779,8 +3817,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName63, - _methodParameterTypes63, + returnObj = _invokableLocalService.invokeMethod(_methodName64, + _methodParameterTypes64, new Object[] { intPraticaId, @@ -3815,8 +3853,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName64, - _methodParameterTypes64, new Object[] { start, end }); + returnObj = _invokableLocalService.invokeMethod(_methodName65, + _methodParameterTypes65, new Object[] { start, end }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -3843,8 +3881,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName65, - _methodParameterTypes65, new Object[] { }); + returnObj = _invokableLocalService.invokeMethod(_methodName66, + _methodParameterTypes66, new Object[] { }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -3872,8 +3910,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName66, - _methodParameterTypes66, + returnObj = _invokableLocalService.invokeMethod(_methodName67, + _methodParameterTypes67, new Object[] { dettPraticaId, gestita }); } catch (Throwable t) { @@ -3902,8 +3940,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { throws com.liferay.portal.kernel.exception.PortalException, com.liferay.portal.kernel.exception.SystemException { try { - _invokableLocalService.invokeMethod(_methodName67, - _methodParameterTypes67, + _invokableLocalService.invokeMethod(_methodName68, + _methodParameterTypes68, new Object[] { ClpSerializer.translateInput(dettPratica), @@ -3938,8 +3976,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { throws com.liferay.portal.kernel.exception.PortalException, com.liferay.portal.kernel.exception.SystemException { try { - _invokableLocalService.invokeMethod(_methodName68, - _methodParameterTypes68, new Object[] { dettPraticaId, status }); + _invokableLocalService.invokeMethod(_methodName69, + _methodParameterTypes69, new Object[] { dettPraticaId, status }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -3969,8 +4007,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName69, - _methodParameterTypes69, + returnObj = _invokableLocalService.invokeMethod(_methodName70, + _methodParameterTypes70, new Object[] { dettPraticaId, @@ -4002,8 +4040,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName70, - _methodParameterTypes70, new Object[] { }); + returnObj = _invokableLocalService.invokeMethod(_methodName71, + _methodParameterTypes71, new Object[] { }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -4031,8 +4069,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName71, - _methodParameterTypes71, new Object[] { dettPraticaId }); + returnObj = _invokableLocalService.invokeMethod(_methodName72, + _methodParameterTypes72, new Object[] { dettPraticaId }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -4060,8 +4098,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName72, - _methodParameterTypes72, new Object[] { start, end }); + returnObj = _invokableLocalService.invokeMethod(_methodName73, + _methodParameterTypes73, new Object[] { start, end }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -4089,8 +4127,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName73, - _methodParameterTypes73, + returnObj = _invokableLocalService.invokeMethod(_methodName74, + _methodParameterTypes74, new Object[] { ClpSerializer.translateInput(dettPraticaId) }); } catch (Throwable t) { @@ -4119,8 +4157,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName74, - _methodParameterTypes74, new Object[] { pagamentoId }); + returnObj = _invokableLocalService.invokeMethod(_methodName75, + _methodParameterTypes75, new Object[] { pagamentoId }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -4150,8 +4188,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName75, - _methodParameterTypes75, + returnObj = _invokableLocalService.invokeMethod(_methodName76, + _methodParameterTypes76, new Object[] { dettPraticaId, @@ -4188,8 +4226,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName76, - _methodParameterTypes76, new Object[] { }); + returnObj = _invokableLocalService.invokeMethod(_methodName77, + _methodParameterTypes77, new Object[] { }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -4213,8 +4251,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName77, - _methodParameterTypes77, new Object[] { intPraticaId }); + returnObj = _invokableLocalService.invokeMethod(_methodName78, + _methodParameterTypes78, new Object[] { intPraticaId }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -4242,8 +4280,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName78, - _methodParameterTypes78, new Object[] { intPraticaId }); + returnObj = _invokableLocalService.invokeMethod(_methodName79, + _methodParameterTypes79, new Object[] { intPraticaId }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -4269,8 +4307,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName79, - _methodParameterTypes79, + returnObj = _invokableLocalService.invokeMethod(_methodName80, + _methodParameterTypes80, new Object[] { ClpSerializer.translateInput(field) }); } catch (Throwable t) { @@ -4294,8 +4332,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName80, - _methodParameterTypes80, + returnObj = _invokableLocalService.invokeMethod(_methodName81, + _methodParameterTypes81, new Object[] { ClpSerializer.translateInput(field), @@ -4323,8 +4361,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName81, - _methodParameterTypes81, new Object[] { intPraticaId }); + returnObj = _invokableLocalService.invokeMethod(_methodName82, + _methodParameterTypes82, new Object[] { intPraticaId }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -4352,8 +4390,8 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { Object returnObj = null; try { - returnObj = _invokableLocalService.invokeMethod(_methodName82, - _methodParameterTypes82, new Object[] { intPraticaId }); + returnObj = _invokableLocalService.invokeMethod(_methodName83, + _methodParameterTypes83, new Object[] { intPraticaId }); } catch (Throwable t) { t = ClpSerializer.translateThrowable(t); @@ -4539,4 +4577,6 @@ public class DettPraticaLocalServiceClp implements DettPraticaLocalService { private String[] _methodParameterTypes81; private String _methodName82; private String[] _methodParameterTypes82; + private String _methodName83; + private String[] _methodParameterTypes83; } \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceUtil.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceUtil.java index abea57c6..dcf5ea39 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceUtil.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceUtil.java @@ -932,6 +932,13 @@ public class DettPraticaLocalServiceUtil { .updateEsitoPagamento(pagamentoId, dettPraticaId, fileEntryId, stato); } + public static void concludiPagamento(long dettPraticaId) + throws com.liferay.portal.kernel.exception.PortalException, + com.liferay.portal.kernel.exception.SystemException, + java.io.IOException { + getService().concludiPagamento(dettPraticaId); + } + public static boolean isControlloObbligatorio( it.tref.liferay.portos.bo.model.DettPratica dettPratica) { return getService().isControlloObbligatorio(dettPratica); diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceWrapper.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceWrapper.java index c6ed5bdc..5485084d 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceWrapper.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/service/DettPraticaLocalServiceWrapper.java @@ -964,6 +964,14 @@ public class DettPraticaLocalServiceWrapper implements DettPraticaLocalService, dettPraticaId, fileEntryId, stato); } + @Override + public void concludiPagamento(long dettPraticaId) + throws com.liferay.portal.kernel.exception.PortalException, + com.liferay.portal.kernel.exception.SystemException, + java.io.IOException { + _dettPraticaLocalService.concludiPagamento(dettPraticaId); + } + @Override public boolean isControlloObbligatorio( it.tref.liferay.portos.bo.model.DettPratica dettPratica) { diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/AsseverazioniUtil.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/AsseverazioniUtil.java index 716a8eaf..99c866af 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/AsseverazioniUtil.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/AsseverazioniUtil.java @@ -60,7 +60,7 @@ public class AsseverazioniUtil { public final static String ASSEVERAZIONE_DA_ALLEGATO = "AL"; private static final String[] statiAttivi = new String[] { STATO_ASSEGNATA, STATO_ESEGUITA }; - private static final Log _log = LogFactoryUtil.getLog(ValidazionePraticaUtil.class); + private static final Log _log = LogFactoryUtil.getLog(AsseverazioniUtil.class); public static boolean hasAsseverazioniAttive(long dettPraticaId) throws SystemException { @@ -136,6 +136,7 @@ public class AsseverazioniUtil { put(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A14, Arrays.asList(TipoSoggettoUtil.GEOLOGO)); put(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A15, Arrays.asList(TipoSoggettoUtil.GEOLOGO, TipoSoggettoUtil.DIRETTORE_LAVORI)); + put(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A29, Arrays.asList(TipoSoggettoUtil.DIRETTORE_LAVORI)); // Domanda put(ASSEVERAZIONI_DOMANDA, Arrays.asList(TipoSoggettoUtil.COMMITTENTE, TipoSoggettoUtil.DIRETTORE_LAVORI, TipoSoggettoUtil.PROGETTISTA, TipoSoggettoUtil.DITTA, TipoSoggettoUtil.COLLAUDATORE)); diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/AzioniPraticheUtil.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/AzioniPraticheUtil.java index b8750a27..26f24b35 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/AzioniPraticheUtil.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/AzioniPraticheUtil.java @@ -61,9 +61,8 @@ public class AzioniPraticheUtil { put(STATE_ANNULLATO, new ArrayList()); put(STATE_NON_CONFORME, new ArrayList()); put(NON_AUTORIZZATA, new ArrayList()); - put(STATE_INTEGRAZIONE_AUTORIZZAZIONE, - ListUtil.toList(new String[] { ACTION_AGGIUNGI_SOGGETTO, ACTION_RIMUOVI_SOGGETTO, - ACTION_INTEGRAZIONE, ACTION_ANNULLA })); + put(STATE_INTEGRAZIONE_AUTORIZZAZIONE, Arrays.asList(ACTION_AGGIUNGI_SOGGETTO, ACTION_RIMUOVI_SOGGETTO, + ACTION_INTEGRAZIONE, ACTION_ANNULLA)); put(STATE_INTEGRAZIONE_DEPOSITO, ListUtil.toList(new String[] { ACTION_AGGIUNGI_SOGGETTO, ACTION_RIMUOVI_SOGGETTO, ACTION_INTEGRAZIONE, ACTION_ANNULLA })); diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/ValidazionePraticaUtil.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/ValidazionePraticaUtil.java index acb0d6dd..11e70860 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/ValidazionePraticaUtil.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/service/it/tref/liferay/portos/bo/util/ValidazionePraticaUtil.java @@ -76,19 +76,19 @@ public class ValidazionePraticaUtil { DettPratica dettPratica = DettPraticaServiceUtil.getDettPratica(dettPraticaId); IntPratica intPratica = IntPraticaServiceUtil.getIntPratica(dettPratica.getIntPraticaId()); return !intPratica.getSospesa() && !intPratica.isAnnullata() - && !AsseverazioniUtil.hasAsseverazioniAttive(dettPraticaId) - && !ValidazionePraticaUtil.pagamentoIsEnable(dettPraticaId) + && !AsseverazioniUtil.hasAsseverazioniAttive(dettPraticaId) && !pagamentoIsEnable(dettPraticaId) && dettPratica.getStatus() == WorkflowConstants.STATUS_DRAFT; } public static boolean praticaIsCompleta(long dettPraticaId) throws SystemException, PortalException { DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(dettPraticaId); - return isDettagliPrincipaliCompleta(dettPraticaId) - && isAnagrafeSoggettiCompleta(dettPraticaId) - && isDescrizioneEdificioCompleta(dettPraticaId) - && isSezioneGeologicaCompleta(dettPraticaId) - && ((dettPratica.getStatus() != WorkflowConstants.STATUS_DRAFT) || isSezioneAllegatiCompleta(dettPraticaId)); + return notCompletedDettagliPrincipali(dettPraticaId).isEmpty() + && notCompletedAnagrafeSoggetti(dettPraticaId).isEmpty() + && notCompletedDescrizioneEdificio(dettPraticaId).isEmpty() + && notCompletedSezioneGeologica(dettPraticaId).isEmpty() + && ((dettPratica.getStatus() != WorkflowConstants.STATUS_DRAFT) || notCompletedSezioniAllegati( + dettPraticaId).isEmpty()); } public static boolean canEditPratica(long intPraticaId) throws PortalException, SystemException { @@ -120,7 +120,8 @@ public class ValidazionePraticaUtil { DettPratica dettPratica = DettPraticaServiceUtil.getDettPratica(dettPraticaId); IntPratica intPratica = IntPraticaServiceUtil.getIntPratica(dettPratica.getIntPraticaId()); - return isAnagrafeSoggettiCompleta(dettPraticaId) && intPratica.getStatus() != WorkflowConstants.STATUS_ANY + return notCompletedAnagrafeSoggetti(dettPraticaId).isEmpty() + && intPratica.getStatus() != WorkflowConstants.STATUS_ANY && intPratica.getStatus() != WorkflowConstants.STATUS_INCOMPLETE && TipoIntegrazioneUtil.VARIAZIONE_SOGGETTO.equals(dettPratica.getTipoIntegrazione()); } @@ -141,8 +142,9 @@ public class ValidazionePraticaUtil { DettPratica dettPratica = DettPraticaServiceUtil.getLastEditabledByIntPraticaAndTipoPratica(intPraticaId, Arrays.asList(TipoIntegrazioneUtil.VARIANTE, TipoIntegrazioneUtil.RICHIESTA_INTEGRAZIONE, TipoIntegrazioneUtil.VARIAZIONE_SOGGETTO)); - return Validator.isNotNull(dettPratica) || intPratica.getStatus() == WorkflowConstants.STATUS_ANY - || intPratica.getStatus() == WorkflowConstants.STATUS_INCOMPLETE; + return (Validator.isNotNull(dettPratica) || intPratica.getStatus() == WorkflowConstants.STATUS_ANY || intPratica + .getStatus() == WorkflowConstants.STATUS_INCOMPLETE) + && !StatoPraticaConstants.NON_AUTORIZZATA.equalsIgnoreCase(intPratica.getStatoPratica()); } public static boolean praticaCanAddVariante(long intPraticaId) throws SystemException, PortalException { @@ -327,7 +329,8 @@ public class ValidazionePraticaUtil { return praticaIsCompleta(dettPraticaId) && !DelegheUtil.hasDelegheCompilazioneAttive(dettPraticaId) && AsseverazioniUtil.allAsseverazioniCompleted(dettPraticaId) // se è un'integrazione non si paga - && !intPratica.getStatoPratica().equals(StatoPraticaConstants.INTEGRAZIONE); + && !intPratica.getStatoPratica().equals(StatoPraticaConstants.INTEGRAZIONE) + && !dettPratica.getTipoIntegrazione().equals(TipoIntegrazioneUtil.VARIAZIONE_SOGGETTO); } public static boolean canCompleteDettPraticaEsente(long dettPraticaId) throws SystemException, PortalException { @@ -391,25 +394,6 @@ public class ValidazionePraticaUtil { && !AsseverazioniUtil.hasAsseverazioniAttive(dettPraticaId); } - public static boolean isSectionCompleted(String section, long dettPraticaId) throws PortalException, - SystemException { - - switch (section) { - case SezioniUtil.SEZIONE_DETTAGLI_PRINCIPALI: - return isDettagliPrincipaliCompleta(dettPraticaId); - case SezioniUtil.SEZIONE_ANAGRAFE_SOGGETTI: - return isAnagrafeSoggettiCompleta(dettPraticaId); - case SezioniUtil.SEZIONE_DESCRIZIONE_EDIFICIO: - return isDescrizioneEdificioCompleta(dettPraticaId); - case SezioniUtil.SEZIONE_GEOLOGICA: - return isSezioneGeologicaCompleta(dettPraticaId); - case SezioniUtil.SEZIONE_ALLEGATI: - return isSezioneAllegatiCompleta(dettPraticaId); - default: - return false; - } - } - public static List notCompletedSection(String section, long dettPraticaId) throws PortalException, SystemException { @@ -434,41 +418,6 @@ public class ValidazionePraticaUtil { return notCompletedSezioneGeologica(dettPraticaId).isEmpty(); } - private static boolean isDettagliPrincipaliCompleta(long dettPraticaId) throws PortalException, SystemException { - - DettPratica dettPratica = DettPraticaServiceUtil.getDettPratica(dettPraticaId); - IntPratica intPratica = IntPraticaServiceUtil.getIntPratica(dettPratica.getIntPraticaId()); - Territorio territorio = TerritorioLocalServiceUtil.getTerritorio(intPratica.getTerritorioId()); - boolean ag = true; - if (!territorio.getZona().equals(Constants.ZONA_2) && !territorio.getZona().equals(Constants.ZONA_4)) { - ag = Validator.isNotNull(dettPratica.getAg()); - } - boolean aiSensi = AzioniPraticheUtil.isDeposito(intPratica.getIntPraticaId()) ? (dettPratica.getNormDpr01Dep() || dettPratica - .getNormDpr02Dep()) : (dettPratica.getNormDpr01Aut() || dettPratica.getNormDpr02Aut()); - boolean nelRispetto = dettPratica.getNormDm01() || dettPratica.getNormDm02() || dettPratica.getNormDm2018(); - boolean sismaBonus = !dettPratica.getNormSismaBonus() - || (Validator.isNotNull(dettPratica.getClRischioPreInt()) || Validator.isNotNull(dettPratica - .getClRischioPostInt())); - boolean tipologiaCostruttiva = intPratica.getTipoProcedura().equalsIgnoreCase(Constants.PROCEDURA_C) - || dettPratica.getTcInCA() || dettPratica.getTcInAcciaio() || dettPratica.getTcInMuratura() - || dettPratica.getTcInLegno() || dettPratica.getTcAltro(); - boolean intervFinPub = !dettPratica.getIntervFinPub() || Validator.isNotNull(dettPratica.getIntervFinPubDesc()); - boolean controllo = ag - && aiSensi - && nelRispetto - && sismaBonus - && tipologiaCostruttiva - && intervFinPub - && Validator.isNotNull(dettPratica.getDescLongIntervento()) - && Validator.isNotNull(dettPratica.getDestinazione()) - && (dettPratica.getTcNuovaCostruzione() || dettPratica.getTcMiglioramentoSismico() - || dettPratica.getTcAdeguamentoSismico() || dettPratica.getTcRiparazioneInterventoLocale() || dettPratica - .getTcNuovaCostruzioneComplessa()) && Validator.isNotNull(dettPratica.getVia()); - boolean coordinateGeografiche = Validator.isNotNull(dettPratica.getLocalizzazioneGeografica()) - && !("|||".equals(dettPratica.getLocalizzazioneGeografica())); - return controllo && coordinateGeografiche; - } - private static List notCompletedDettagliPrincipali(long dettPraticaId) throws PortalException, SystemException { @@ -480,8 +429,9 @@ public class ValidazionePraticaUtil { && Validator.isNull(dettPratica.getAg())) { notCompleted.add("ag"); } - boolean aiSensi = AzioniPraticheUtil.isDeposito(intPratica.getIntPraticaId()) ? (dettPratica.getNormDpr01Dep() || dettPratica - .getNormDpr02Dep()) : (dettPratica.getNormDpr01Aut() || dettPratica.getNormDpr02Aut()); + boolean aiSensi = AzioniPraticheUtil.isDeposito(intPratica.getIntPraticaId()) + ? (dettPratica.getNormDpr01Dep() || dettPratica.getNormDpr02Dep()) + : (dettPratica.getNormDpr01Aut() || dettPratica.getNormDpr02Aut()); if (!aiSensi) { notCompleted.add("at-least-aiSensi"); } @@ -543,100 +493,6 @@ public class ValidazionePraticaUtil { && !isRiparazioneLocale(dettPratica); } - private static boolean isAnagrafeSoggettiCompleta(long dettPraticaId) throws PortalException, SystemException { - - DettPratica dettPratica = DettPraticaServiceUtil.getDettPratica(dettPraticaId); - long intPraticaId = dettPratica.getIntPraticaId(); - boolean titolare = SoggettiUtil.isTitolareInSoggetti(intPraticaId); - boolean collaudatoreNotRequired = !isCollaudatoreRequired(dettPratica); - boolean direttoreLavoriNotRequired = dettPratica.getLavoriPubblici(); - boolean dittaNotRequired = dettPratica.getNormLavoriInProprio() || dettPratica.getLavoriPubblici(); - boolean collaudatore = true; - int numeroCollaudatori = 0; - boolean ditta = dettPratica.getNormLavoriInProprio() || dettPratica.getLavoriPubblici(); - boolean committente = false; - boolean progettista = false; - boolean direttore = dettPratica.getLavoriPubblici(); - boolean geologo = false; - List soggetti = SoggettoLocalServiceUtil.getValidTmpByIntPratica(intPraticaId); - for (Soggetto soggetto : soggetti) { - if (!TipoSoggettoUtil.validaCodiceFiscale(soggetto.getCodiceFiscale(), true)) { - return false; - } - switch (soggetto.getTipologiaSoggetto()) { - case TipoSoggettoUtil.COLLAUDATORE: - numeroCollaudatori++; - collaudatore = true; - break; - case TipoSoggettoUtil.COMMITTENTE: - committente = true; - break; - case TipoSoggettoUtil.DIRETTORE_LAVORI: - direttore = true; - break; - case TipoSoggettoUtil.DITTA: - ditta = true; - break; - case TipoSoggettoUtil.GEOLOGO: - geologo = true; - break; - case TipoSoggettoUtil.PROGETTISTA: - progettista = true; - break; - default: - break; - } - } - boolean isDelegaCommittente = SoggettiUtil.isTitolareInCommittenti(intPraticaId) - || Validator.isNotNull(dettPratica.getCodiceFiscaleDelegatoCommittente()); - boolean isDelegaFineLavori = direttoreLavoriNotRequired - || Validator.isNotNull(dettPratica.getCodiceFiscaleDelegatoFineLavori()); - boolean isDelegaCollaudo = collaudatoreNotRequired - || Validator.isNotNull(dettPratica.getCodiceFiscaleDelegatoCollaudo()); - boolean deleghe = isDelegaCommittente && isDelegaFineLavori && isDelegaCollaudo; - boolean collaudatorePrincipale = true; - boolean committentePrincipale = true; - boolean direttorePrincipale = true; - boolean dittaPrincipale = true; - boolean geologoPrincipale = true; - boolean progettistaPrincipale = true; - if (!collaudatoreNotRequired && collaudatore - && Validator.isNull(dettPratica.getCodiceFiscalePrincipaleCollaudatore())) { - collaudatorePrincipale = false; - } - if (dettPratica.getNormLavoriInProprio() && (dettPratica.getTcInCA() || dettPratica.getTcInAcciaio()) - && (numeroCollaudatori < 3)) { - collaudatore = false; - } - if (committente && Validator.isNull(dettPratica.getCodiceFiscalePrincipaleCommittente())) { - committentePrincipale = false; - } - if (!direttoreLavoriNotRequired && direttore - && Validator.isNull(dettPratica.getCodiceFiscalePrincipaleDirettoreLavori())) { - direttorePrincipale = false; - } - if (!dittaNotRequired && ditta && Validator.isNull(dettPratica.getCodiceFiscalePrincipaleDitta())) { - dittaPrincipale = false; - } - if (geologo && Validator.isNull(dettPratica.getCodiceFiscalePrincipaleGeologo())) { - geologoPrincipale = false; - } - if (progettista && Validator.isNull(dettPratica.getCodiceFiscalePrincipaleProgettista())) { - progettistaPrincipale = false; - } - boolean principali = collaudatorePrincipale & committentePrincipale & direttorePrincipale & dittaPrincipale - & geologoPrincipale & progettistaPrincipale; - if (dettPratica.getNormArt3com3()) { - geologo = true; - } - int soggettiIncompleti = SoggettoLocalServiceUtil.countTmpNotCompletedByDettPratica(dettPraticaId); - if (soggettiIncompleti > 0) { - return false; - } - return titolare && collaudatore && ditta && committente && progettista && direttore && geologo && deleghe - && principali; - } - private static List notCompletedAnagrafeSoggetti(long dettPraticaId) throws PortalException, SystemException { @@ -759,86 +615,6 @@ public class ValidazionePraticaUtil { return notCompleted; } - private static boolean isDescrizioneEdificioCompleta(long dettPraticaId) throws PortalException, SystemException { - - DettPratica dettPratica = DettPraticaServiceUtil.getDettPratica(dettPraticaId); - IntPratica intPratica = IntPraticaLocalServiceUtil.getIntPratica(dettPratica.getIntPraticaId()); - if (intPratica.getTipoProcedura().equalsIgnoreCase(Constants.PROCEDURA_C)) { - return true; - } - // se infrastruttura controllo solo DATI INFRASTRUTTURA - boolean infrastruttura = infrastrutture.contains(dettPratica.getDestinazione()); - if (infrastruttura) { - return dettPratica.getDeInfStradaleStrada() || dettPratica.getDeInfStradalePonte() - || dettPratica.getDeInfStradaleAltro() || dettPratica.getDeInfIdraulicaLong() - || dettPratica.getDeInfIdraulicaTrasv() || dettPratica.getDeInfIdraulicaAltro() - || dettPratica.getDeInfOperaAccStradale() || dettPratica.getDeInfOperaAccIdraulica() - || dettPratica.getDeInfOperaAccAltro() || dettPratica.getDeInfAltraInfrastruttura() - || Validator.isNotNull(dettPratica.getDeInfAltroDesc()); - } - // se non infrastruttura controllo il resto - boolean controllo = Validator.isNotNull(dettPratica.getDePiani()) - && Validator.isNotNull(dettPratica.getDeAltezza()) && Validator.isNotNull(dettPratica.getDeInterrati()) - && Validator.isNotNull(dettPratica.getDeSuperficie()) - && Validator.isNotNull(dettPratica.getDeCostruzione()) && Validator.isNotNull(dettPratica.getDeUso()) - && Validator.isNotNull(dettPratica.getDeUtilizzazione()) - && Validator.isNotNull(dettPratica.getDePrivata()) && Validator.isNotNull(dettPratica.getDePubblica()); - boolean isComponentiCostruttiveDisabled = !dettPratica.getTcNuovaCostruzione() - && dettPratica.getTcRiparazioneInterventoLocale(); - if (isComponentiCostruttiveDisabled) { - return controllo; - } - boolean fondazioni = Validator.isNotNull(dettPratica.getDccFondazioni()); - boolean elevazioni = (Validator.isNotNull(dettPratica.getDccStruttureEleMuraturePietrame()) - || Validator.isNotNull(dettPratica.getDccStruttureEleMuratureLaterizio()) - || Validator.isNotNull(dettPratica.getDccStruttureEleMuratureMisto()) || Validator - .isNotNull(dettPratica.getDccStruttureEleMuratureStoriche())) - || Validator.isNotNull(dettPratica.getDccStruttureEleAcciaio()) - || Validator.isNotNull(dettPratica.getDccStruttureEleCA()) - || Validator.isNotNull(dettPratica.getDccStruttureEleLegno()) - || (Validator.isNotNull(dettPratica.getDccStruttureEleMistoCA()) - || Validator.isNotNull(dettPratica.getDccStruttureEleMistoAcciaio()) - || Validator.isNotNull(dettPratica.getDccStruttureEleMistoMuratura()) || Validator - .isNotNull(dettPratica.getDccStruttureEleMistoLegno())) - || Validator.isNotNull(dettPratica.getDccStruttureElePrefabbricato()) - || (Validator.isNotNull(dettPratica.getDccStruttureEleAltro()) && Validator.isNotNull(dettPratica - .getDccStruttureEleAltroDescrizione())); - boolean orizzontamenti = Validator.isNotNull(dettPratica.getDccOrizzontamentiCAAcciaio()) - || Validator.isNotNull(dettPratica.getDccOrizzontamentiLamieraGrecata()) - || Validator.isNotNull(dettPratica.getDccOrizzontamentiLegno()) - || Validator.isNotNull(dettPratica.getDccOrizzontamentiLegnoCA()) - || Validator.isNotNull(dettPratica.getDccOrizzontamentiVolte()) - || (Validator.isNotNull(dettPratica.getDccOrizzontamentiAltro()) && Validator.isNotNull(dettPratica - .getDccOrizzontamentiAltroDescrizione())); - boolean coperture = Validator.isNotNull(dettPratica.getDccCopertura()) - || Validator.isNotNull(dettPratica.getDccCoperturaCAAcciaio()) - || Validator.isNotNull(dettPratica.getDccCoperturaLamieraGrecata()) - || Validator.isNotNull(dettPratica.getDccCoperturaLeggere()) - || Validator.isNotNull(dettPratica.getDccCoperturaLegno()) - || Validator.isNotNull(dettPratica.getDccCoperturaLegnoCA()) - || Validator.isNotNull(dettPratica.getDccCoperturaPannelli()) - || Validator.isNotNull(dettPratica.getDccCoperturaPVCTelonati()) - || (Validator.isNotNull(dettPratica.getDccCoperturaAltro()) && Validator.isNotNull(dettPratica - .getDccCoperturaAltroDesrizione())); - boolean non_strutturali = Validator.isNotNull(dettPratica.getDccElemNonStrutLaterizio()) - || Validator.isNotNull(dettPratica.getDccElemNonStrutCalcestruzzo()) - || Validator.isNotNull(dettPratica.getDccElemNonStrutCartongesso()) - || Validator.isNotNull(dettPratica.getDccElemNonStrutLegno()) - || (Validator.isNotNull(dettPratica.getDccElemNonStrutAltro()) && Validator.isNotNull(dettPratica - .getDccElemNonStrutAltroDescrizione())); - boolean rinforzo = Validator.isNotNull(dettPratica.getDccOpereDiRinforzoInsCatene()) - || Validator.isNotNull(dettPratica.getDccOpereDiRinforzoInsCordoli()) - || Validator.isNotNull(dettPratica.getDccOpereDiRinforzoIniArmate()) - || Validator.isNotNull(dettPratica.getDccOpereDiRinforzoPlaccaggi()) - || Validator.isNotNull(dettPratica.getDccOpereDiRinforzoIrrSolai()) - || Validator.isNotNull(dettPratica.getDccOpereDiRinforzoRinforziFRP()) - || Validator.isNotNull(dettPratica.getDccOpereDiRinforzoTelaiECerchiature()) - || Validator.isNotNull(dettPratica.getDccOpereDiRinforzoInsRompitratta()) - || (Validator.isNotNull(dettPratica.getDccOpereDiRinforzoAltro()) && Validator.isNotNull(dettPratica - .getDccOpereDiRinforzoAltroDescrizione())); - return controllo && fondazioni && elevazioni && orizzontamenti && coperture && non_strutturali && rinforzo; - } - private static List notCompletedDescrizioneEdificio(long dettPraticaId) throws PortalException, SystemException { @@ -959,134 +735,6 @@ public class ValidazionePraticaUtil { return notCompleted; } - private static boolean isSezioneGeologicaCompleta(long dettPraticaId) throws PortalException, SystemException { - - DettPratica dettPratica = DettPraticaServiceUtil.getDettPratica(dettPraticaId); - // Se check NormArt3com3 sez. geologica non obbligatoria - if (dettPratica.getNormArt3com3()) { - return true; - } - boolean formGeologo = false; - formGeologo = Validator.isNotNull(dettPratica.getGeoDtRelazione()) - && Validator.isNotNull(dettPratica.getGeoClasseIndagine()) - && Validator.isNotNull(dettPratica.getGeoOperaRilevante()) - && Validator.isNotNull(dettPratica.getGeoCategoriaSottosuolo()) - && Validator.isNotNull(dettPratica.getGeoCategoriaTopografica()) - && Validator.isNotNull(dettPratica.getGeoOpereDiSostegno()) - && Validator.isNotNull(dettPratica.getGeoConsolidamento()) - && Validator.isNotNull(dettPratica.getGeoOpereInSotterranea()) - && Validator.isNotNull(dettPratica.getGeoPericolositaGeologica()) - && Validator.isNotNull(dettPratica.getGeoPericolositaGeomorfica()) - && Validator.isNotNull(dettPratica.getGeoRischioGeomorfologicoPai()) - && Validator.isNotNull(dettPratica.getGeoPericolositaIdraulicaPai()) - && Validator.isNotNull(dettPratica.getGeoRischioIdraulicoPai()) - && Validator.isNotNull(dettPratica.getGeoPericolositaSismica()) - && Validator.isNotNull(dettPratica.getGeoFattibilitaSismica()) - && Validator.isNotNull(dettPratica.getGeoPericolositaIdraulica()) - && Validator.isNotNull(dettPratica.getGeoFattibilitaIdraulica()) - && Validator.isNotNull(dettPratica.getGeoFattibilitaGeologica()) - && Validator.isNotNull(dettPratica.getGeoPresenzaPrescrizioni()) - && Validator.isNotNull(dettPratica.getGeoEvidenzeGeologiche()) - && Validator.isNotNull(dettPratica.getGeoEvidenzeGeomorfiche()); - List delegheGeologo = DelegaLocalServiceUtil.findByDettPratica_Tipologia_InEsito(dettPraticaId, - DelegheUtil.TIPO_GEOLOGO, new String[] { DelegheUtil.STATO_ESEGUITA }, QueryUtil.ALL_POS, - QueryUtil.ALL_POS, null); - boolean allegatiGeologo = dettPratica.getNormArt3com3(); - if (!allegatiGeologo) { - long intPraticaId = dettPratica.getIntPraticaId(); - List a14Docs = DocPraticaLocalServiceUtil.getValidTmpByIntPratica_Tipologia( - dettPratica.getIntPraticaId(), DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A14, QueryUtil.ALL_POS, - QueryUtil.ALL_POS); - boolean a14 = !a14Docs.isEmpty() || !delegheGeologo.isEmpty(); - if (!a14) { - for (DocPratica doc : a14Docs) { - FirmeBean firme = FirmeUtil.deserialize(doc.getJsonFirmatari()); - List signatures = firme.allSignatures(); - if (!isAllRequiredValid(doc.getTipologia(), dettPratica.getIntPraticaId(), signatures, - AsseverazioniUtil.getRequiredSubjectsByCodiceDoc(doc.getTipologia()), doc)) { - return false; - } - } - } - List a05Docs = DocPraticaLocalServiceUtil.getValidTmpByIntPratica_Tipologia( - dettPratica.getIntPraticaId(), DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A05, QueryUtil.ALL_POS, - QueryUtil.ALL_POS); - // ADT BUG ID=20 (A05 SEMPRE OBBLIGATORIO SE NON SETTATO IL CHECK SULLA SEZIONE GEOLOGICA) - boolean a05 = !a05Docs.isEmpty(); - if (a05) { - for (DocPratica doc : a05Docs) { - FirmeBean firme = FirmeUtil.deserialize(doc.getJsonFirmatari()); - List signatures = firme.allSignatures(); - List firmeRichieste = AsseverazioniUtil.getRequiredSubjectsByCodiceDoc(doc.getTipologia()); - List soggettiInseriti = SoggettoLocalServiceUtil.findByIntPratica(dettPratica - .getIntPraticaId()); - List firmeFiltrate = new ArrayList(); - for (String string : firmeRichieste) { - firmeFiltrate.add(string); - } - boolean DLPresente = false; - for (Soggetto soggetto : soggettiInseriti) { - - if (soggetto.getTipologiaSoggetto().equals(TipoSoggettoUtil.DIRETTORE_LAVORI)) { - DLPresente = true; - } - } - if (!DLPresente || !dettPratica.isLavoriPubblici()) { - firmeFiltrate.remove(TipoSoggettoUtil.DIRETTORE_LAVORI); - } - if (!isAllRequiredValid(doc.getTipologia(), dettPratica.getIntPraticaId(), signatures, - firmeFiltrate, doc)) { - return false; - } - } - } - List a06Docs = DocPraticaLocalServiceUtil.getValidTmpByIntPratica_Tipologia( - dettPratica.getIntPraticaId(), DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A06, QueryUtil.ALL_POS, - QueryUtil.ALL_POS); - boolean a06 = !a06Docs.isEmpty(); - if (!a06Docs.isEmpty()) { - for (DocPratica doc : a06Docs) { - FirmeBean firme = FirmeUtil.deserialize(doc.getJsonFirmatari()); - List signatures = firme.allSignatures(); - if (!isA06Valid(dettPratica, dettPratica.getIntPraticaId(), signatures, doc)) { - // Return false if A06 doesn't contain (Progettista OR Geologo ) AND Direttore_Lavori - return false; - } - } - } - List a15Docs = DocPraticaLocalServiceUtil.getValidTmpByIntPratica_Tipologia( - dettPratica.getIntPraticaId(), DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A15, QueryUtil.ALL_POS, - QueryUtil.ALL_POS); - boolean a15 = true; - if (!a15Docs.isEmpty()) { - for (DocPratica doc : a15Docs) { - FirmeBean firme = FirmeUtil.deserialize(doc.getJsonFirmatari()); - List signatures = firme.allSignatures(); - if (!isA07A15Valid(dettPratica, intPraticaId, signatures, doc)) { - return false; - } - } - } - List tipologiaAllegati = DocumentiPraticaUtil.getIndaginiGeologiche(); - List a16Docs = DocPraticaLocalServiceUtil.getValidTmpByIntPratica_Tipologie(intPraticaId, - tipologiaAllegati.toArray(new String[0]), QueryUtil.ALL_POS, QueryUtil.ALL_POS); - boolean a16 = !a16Docs.isEmpty(); - if (!a16Docs.isEmpty()) { - for (DocPratica doc : a16Docs) { - FirmeBean firme = FirmeUtil.deserialize(doc.getJsonFirmatari()); - List signatures = firme.allSignatures(); - List signaturesPerSubject = getSignaturePerSubject(intPraticaId, signatures, - TipoSoggettoUtil.GEOLOGO, doc.getClassPk()); - if (signaturesPerSubject.isEmpty()) { - return false; - } - } - } - allegatiGeologo = a14 && a05 && a06 && a15 && a16; - } - return formGeologo && allegatiGeologo; - } - public static List notCompletedSezioneGeologica(long dettPraticaId) throws PortalException, SystemException { DettPratica dettPratica = DettPraticaServiceUtil.getDettPratica(dettPraticaId); @@ -1266,119 +914,6 @@ public class ValidazionePraticaUtil { return notCompleted; } - private static boolean isSezioneAllegatiCompleta(long dettPraticaId) throws PortalException, SystemException { - - DettPratica dettPratica = DettPraticaServiceUtil.getDettPratica(dettPraticaId); - long intPraticaId = dettPratica.getIntPraticaId(); - IntPratica intPratica = IntPraticaLocalServiceUtil.getIntPratica(intPraticaId); - List tipologiaAllegati = DocumentiPraticaUtil.getDocObbligatoriDomanda(intPratica.getTipoProcedura()); - List tipologiaSoggetti = new ArrayList(); - boolean collaudatoreNotRequired = dettPratica.getCollaudoStatico() || dettPratica.getLavoriPubblici(); - boolean direttoreLavoriNotRequired = dettPratica.getLavoriPubblici(); - boolean dittaNotRequired = dettPratica.getNormLavoriInProprio() || dettPratica.getLavoriPubblici(); - for (String tipSoggetto : TipoSoggettoUtil.getAllSubjects()) { - if (tipSoggetto.equals(TipoSoggettoUtil.COLLAUDATORE) && collaudatoreNotRequired) { - continue; - } - if (tipSoggetto.equals(TipoSoggettoUtil.DIRETTORE_LAVORI) && direttoreLavoriNotRequired) { - continue; - } - if (tipSoggetto.equals(TipoSoggettoUtil.DITTA) && dittaNotRequired) { - continue; - } - tipologiaSoggetti.add(tipSoggetto); - } - - Set firmeTotali = new HashSet<>(); - boolean contieneDocumenti = false; - for (String codiceDoc : tipologiaAllegati) { - if (isDocPraticaRequired(dettPratica, codiceDoc)) { - List docs = DocPraticaLocalServiceUtil.getValidTmpByIntPratica_Tipologia(intPraticaId, - codiceDoc, QueryUtil.ALL_POS, QueryUtil.ALL_POS); - if (docs.isEmpty()) { - // Ci dev'essere almeno un allegato per ogni tipologia obbligatoria - return false; - } - for (DocPratica doc : docs) { - // Se il documento proviene da una dett precedente non viene controllato perche si presuppone che - // sia stata già verificato - if (!doc.getClassName().equalsIgnoreCase(DettPratica.class.getName()) - || doc.getClassPk() != dettPraticaId) { - continue; - } - contieneDocumenti = true; - FirmeBean firme = FirmeUtil.deserialize(doc.getJsonFirmatari()); - List signatures = firme.allSignatures(); - firmeTotali.addAll(signatures); - boolean isEnoughOne = AsseverazioniUtil.isEnoughOne(codiceDoc); - if (codiceDoc.equalsIgnoreCase(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A00)) { - if (!isA00Valid(dettPratica, signatures)) { - return false; - } - } else if (codiceDoc.equalsIgnoreCase(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A06)) { - if (!isA06Valid(dettPratica, intPraticaId, signatures, doc)) { - // Return false if A06 doesn't contain (Progettista OR Geologo ) AND Direttore_Lavori - return false; - } - } else if (DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A07.equals(codiceDoc)) { - if (!isA07A15Valid(dettPratica, intPraticaId, signatures, doc)) { - // Return false if A07 doesn't contain Progettista AND Direttore_Lavori - return false; - } - } else if (codiceDoc.equalsIgnoreCase(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A09)) { - if (!isA09Valid(dettPratica, intPraticaId, signatures, doc)) { - // Return false if A09 doesn't contain Progettista AND Direttore_Lavori - return false; - } - } else if (codiceDoc.equalsIgnoreCase(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A15)) { - if (!isA07A15Valid(dettPratica, intPraticaId, signatures, doc)) { - return false; - } - } else if (codiceDoc.equalsIgnoreCase(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A17)) { - if (!isA17Valid(dettPratica, signatures)) { - return false; - } - } else if (codiceDoc.equalsIgnoreCase(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_DELEGA)) { - if (!isA98Valid(dettPratica, intPraticaId, signatures)) { - return false; - } - } else if (isEnoughOne && signatures.isEmpty()) { - // Return false if one sign is enought but there are no signs for this subjectType - return false; - } else { - if (!isAllRequiredValid(codiceDoc, intPraticaId, signatures, tipologiaSoggetti, doc)) { - // Return false if is required per this subjectType but it is not present - return false; - } - } - } - } - } - - // Ogni progettista e direttore dei lavori deve avere apposto almeno una firma sulla totalità degli allegati - if (contieneDocumenti) { - List progettisti = SoggettoLocalServiceUtil.getValidTmpByIntPratica_TipologiaSoggetto( - intPraticaId, TipoSoggettoUtil.PROGETTISTA); - for (Soggetto progettista : progettisti) { - if (progettista.getDettPraticaId() == dettPraticaId) { - if (!firmeTotali.contains(progettista.getCodiceFiscale().toLowerCase())) { - return false; - } - } - } - List direttoriLavori = SoggettoLocalServiceUtil.getValidTmpByIntPratica_TipologiaSoggetto( - intPraticaId, TipoSoggettoUtil.DIRETTORE_LAVORI); - for (Soggetto direttore : direttoriLavori) { - if (direttore.getDettPraticaId() == dettPraticaId) { - if (!firmeTotali.contains(direttore.getCodiceFiscale().toLowerCase())) { - return false; - } - } - } - } - return true; - } - private static List notCompletedSezioniAllegati(long dettPraticaId) throws PortalException, SystemException { DettPratica dettPratica = DettPraticaServiceUtil.getDettPratica(dettPraticaId); @@ -1436,15 +971,20 @@ public class ValidazionePraticaUtil { if (!isA98Valid(dettPratica, intPraticaId, signatures)) { notCompleted.add("Allegato Delega firme obbligatorie mancanti"); } - } else if (isEnoughOne && signatures.isEmpty()) { - // Return false if one sign is enought but there are no signs for this subjectType - notCompleted.add(codiceDoc + " non firmato"); - } else { + } else if (codiceDoc.equalsIgnoreCase(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A29)) { + if (!signatures.contains(dettPratica.getUserName().toLowerCase())) { + notCompleted.add("A29 firma del titolare digitale richiesta"); + } if (!isAllRequiredValid(codiceDoc, intPraticaId, signatures, TipoSoggettoUtil.getAllSubjects(), doc)) { - // Return false if is required per this subjectType but it is not present notCompleted.add(codiceDoc + " firme obbligatorie mancanti"); } + } else if (isEnoughOne && signatures.isEmpty()) { + // Return false if one sign is enought but there are no signs for this subjectType + notCompleted.add(codiceDoc + " non firmato"); + } else if (!isAllRequiredValid(codiceDoc, intPraticaId, signatures, + TipoSoggettoUtil.getAllSubjects(), doc)) { + notCompleted.add(codiceDoc + " firme obbligatorie mancanti"); } } } @@ -1505,13 +1045,14 @@ public class ValidazionePraticaUtil { return !dettPratica.getNormArt3com3(); case DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A15: // nell'ultima version A15 non è più obbligatorio, ma se c'è deve essere firmato da GEOLOGO E DIRETTORE - // dei - // LAVORI + // dei LAVORI return false; case DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A09: return !dettPratica.getNormArt3com4(); case DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A17: return isA17Required(dettPratica); + case DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_A29: + return dettPratica.getNormLavoriInProprio(); case DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_DELEGA: return isA98Required(dettPratica); default: @@ -1639,7 +1180,6 @@ public class ValidazionePraticaUtil { } for (String tipoSoggetto : tipologiaSoggetti) { - boolean isRequired = AsseverazioniUtil.isAsseverazioneRequiredByCodiceDoc(codiceDoc, tipoSoggetto); if (TipoSoggettoUtil.DIRETTORE_LAVORI.equalsIgnoreCase(tipoSoggetto) && direttoreLavoriNotRequired) { isRequired = false; diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/content/Portal.properties b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/content/Portal.properties index 795757d2..dc00e3de 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/content/Portal.properties +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/content/Portal.properties @@ -237,8 +237,6 @@ norm-lavori-in-proprio = il committente esegue i lavori in proprio (IN ECONOMIA) lavori-pubblici = lavori pubblici norm-esente-bollo = esente da bollo ai sensi di D.P.R. 26/10/1972 n. 642 e s.m.i. norm-esente-spese = esente da spese istruttoria -#collaudo-statico = Trattandosi di opere di riparazione o intervento locale eseguibile su un edificio esistente ai sensi del D.M. 14/01/2008, punto 8.4.3, non si effettuera' il collaudo statico -#bug id #1 collaudo-statico = Trattandosi di opere di riparazione o intervento locale eseguibile su un edificio esistente ai sensi del D.M. 17/01/2018, punto 8.4, non si effettuerà il collaudo statico norm-art3com3 = Possono essere omessi i seguenti allegati @@ -834,6 +832,7 @@ label-documenti-tipologia-A15 = Relazione Modellazione Sismica label-documenti-tipologia-A15-old = Certificazione del rispetto delle norme tecniche (in bollo) redatta dal tecnico rilevatore (solo per opere conformi) label-documenti-tipologia-A16-old = Certificato di collaudo statico in bollo (se dovuto) label-documenti-tipologia-A17 = Terna Collaudatori +label-documenti-tipologia-A29 = Dichiarazione impresa label-documenti-tipologia-A98 = Delega al titolare digitale e lettere di incarico ai professionisti label-documenti-tipologia-A99 = Altri label-documenti-tipologia-dnf = Pratica non firmata diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/model/impl/AvvisoImpl.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/model/impl/AvvisoImpl.java index 382931ca..1845ddc1 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/model/impl/AvvisoImpl.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/model/impl/AvvisoImpl.java @@ -73,16 +73,21 @@ public class AvvisoImpl extends AvvisoBaseImpl { + " n° " + dettPratica.getVarianteNumero() + ""; } } else if (this.getClassName().equals(FineLavori.class.getName())) { - FineLavori fineLavori = FineLavoriLocalServiceUtil.getFineLavori(this.getClassPk()); + FineLavori fineLavori = FineLavoriLocalServiceUtil.fetchFineLavori(this.getClassPk()); + boolean parziale = Validator.isNull(fineLavori) ? false : fineLavori.getParziale(); + String numero = Validator.isNull(fineLavori) ? StringPool.BLANK : " n° " + fineLavori.getNumero(); fullDescription += " di " + LanguageUtil.get(LocaleUtil.ITALIAN, "label-integrazione-" - + (fineLavori.getParziale() ? "09" : "07")) + " n° " + fineLavori.getNumero() - + ""; + + (parziale ? TipoIntegrazioneUtil.FINE_LAVORI_PARZIALE + : TipoIntegrazioneUtil.FINE_LAVORI)) + numero + ""; } else if (this.getClassName().equals(Collaudo.class.getName())) { - Collaudo collaudo = CollaudoLocalServiceUtil.getCollaudo(this.getClassPk()); + Collaudo collaudo = CollaudoLocalServiceUtil.fetchCollaudo(this.getClassPk()); + boolean parziale = Validator.isNull(collaudo) ? false : collaudo.getParziale(); + String numero = Validator.isNull(collaudo) ? StringPool.BLANK : " n° " + collaudo.getNumero(); fullDescription += " di " + LanguageUtil.get(LocaleUtil.ITALIAN, "label-integrazione-" - + (collaudo.getParziale() ? "10" : "08")) + " n° " + collaudo.getNumero() + ""; + + (parziale ? TipoIntegrazioneUtil.COLLAUDO_PARZIALE : TipoIntegrazioneUtil.COLLAUDO)) + + numero + ""; } } else if (this.getTipoDocumento().equalsIgnoreCase(StatoPraticaConstants.CONFORME)) { IntPratica intPratica = IntPraticaLocalServiceUtil.getIntPratica(this.getIntPraticaId()); diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/portlet/FascicoloPortlet.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/portlet/FascicoloPortlet.java index 4cf8e193..544ec2cf 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/portlet/FascicoloPortlet.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/portlet/FascicoloPortlet.java @@ -218,7 +218,7 @@ public class FascicoloPortlet extends MVCPortlet { User user = UserLocalServiceUtil.fetchUserByScreenName(companyId, nuovoSoggettoCF); if (Validator.isNotNull(user)) { if (!ValidazionePraticaUtil.praticaInProgress(intPraticaId)) { - _log.info("cambiaTitolare: cfNuovoTitolare " + nuovoSoggettoCF + " intpratica" + intPraticaId); + _log.info("cambiaTitolare: cfNuovoTitolare " + nuovoSoggettoCF + " intpratica " + intPraticaId); IntPraticaServiceUtil.cambiaTitolare(intPraticaId, user.getUserId(), serviceContext); SessionMessages.add(actionRequest, "success-cambio-titolare"); } else { @@ -503,9 +503,9 @@ public class FascicoloPortlet extends MVCPortlet { // ADT BUG-ID=15 Sezione Ricerca / Export csv - Max 30 chars int MAX_LENGHT_DESCR_INTERVENTO = 30; if (Validator.isNotNull(lastDettPratica.getDescLongIntervento())) { - sb.append(lastDettPratica.getDescLongIntervento().length() > MAX_LENGHT_DESCR_INTERVENTO ? lastDettPratica - .getDescLongIntervento().substring(0, MAX_LENGHT_DESCR_INTERVENTO) : lastDettPratica - .getDescLongIntervento()); + sb.append(lastDettPratica.getDescLongIntervento().length() > MAX_LENGHT_DESCR_INTERVENTO + ? lastDettPratica.getDescLongIntervento().substring(0, MAX_LENGHT_DESCR_INTERVENTO) + : lastDettPratica.getDescLongIntervento()); } sb.append(StringPool.SEMICOLON); } catch (Throwable e) { diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/base/DettPraticaLocalServiceClpInvoker.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/base/DettPraticaLocalServiceClpInvoker.java index bb6ff553..54395f7f 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/base/DettPraticaLocalServiceClpInvoker.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/base/DettPraticaLocalServiceClpInvoker.java @@ -360,23 +360,27 @@ public class DettPraticaLocalServiceClpInvoker { "long", "long", "long", "java.lang.String" }; - _methodName242 = "isControlloObbligatorio"; + _methodName242 = "concludiPagamento"; - _methodParameterTypes242 = new String[] { + _methodParameterTypes242 = new String[] { "long" }; + + _methodName243 = "isControlloObbligatorio"; + + _methodParameterTypes243 = new String[] { "it.tref.liferay.portos.bo.model.DettPratica" }; - _methodName243 = "updateEsito"; + _methodName244 = "updateEsito"; - _methodParameterTypes243 = new String[] { "long", "int" }; + _methodParameterTypes244 = new String[] { "long", "int" }; - _methodName245 = "updateEsitoIntegrazione"; + _methodName246 = "updateEsitoIntegrazione"; - _methodParameterTypes245 = new String[] { "long", "int" }; + _methodParameterTypes246 = new String[] { "long", "int" }; - _methodName246 = "pagaInvia"; + _methodName247 = "pagaInvia"; - _methodParameterTypes246 = new String[] { + _methodParameterTypes247 = new String[] { "long", "int", "int", "int", "int", "boolean", "boolean", "boolean", "java.lang.String", "boolean", "java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String", @@ -385,151 +389,151 @@ public class DettPraticaLocalServiceClpInvoker { "java.lang.String", "com.liferay.portal.service.ServiceContext" }; - _methodName247 = "updateStatus"; + _methodName248 = "updateStatus"; - _methodParameterTypes247 = new String[] { + _methodParameterTypes248 = new String[] { "long", "long", "int", "com.liferay.portal.service.ServiceContext" }; - _methodName250 = "updateDettPraticaProtocollo"; + _methodName251 = "updateDettPraticaProtocollo"; - _methodParameterTypes250 = new String[] { "long", "java.lang.String" }; + _methodParameterTypes251 = new String[] { "long", "java.lang.String" }; - _methodName251 = "findByProtocollo"; + _methodName252 = "findByProtocollo"; - _methodParameterTypes251 = new String[] { + _methodParameterTypes252 = new String[] { "long", "long", "java.lang.String" }; - _methodName252 = "fetchByProtocollo"; + _methodName253 = "fetchByProtocollo"; - _methodParameterTypes252 = new String[] { + _methodParameterTypes253 = new String[] { "long", "long", "java.lang.String" }; - _methodName253 = "fetchByProtocollo"; + _methodName254 = "fetchByProtocollo"; - _methodParameterTypes253 = new String[] { "java.lang.String" }; + _methodParameterTypes254 = new String[] { "java.lang.String" }; - _methodName254 = "findByIntPraticaId"; + _methodName255 = "findByIntPraticaId"; - _methodParameterTypes254 = new String[] { "long" }; + _methodParameterTypes255 = new String[] { "long" }; - _methodName255 = "findByIntPraticaIdInviate"; + _methodName256 = "findByIntPraticaIdInviate"; - _methodParameterTypes255 = new String[] { "long", "int", "int" }; + _methodParameterTypes256 = new String[] { "long", "int", "int" }; - _methodName256 = "findPraticheCompleteNotProtocollo"; + _methodName257 = "findPraticheCompleteNotProtocollo"; - _methodParameterTypes256 = new String[] { "int", "int" }; + _methodParameterTypes257 = new String[] { "int", "int" }; - _methodName257 = "countPraticheCompleteNotProtocollo"; + _methodName258 = "countPraticheCompleteNotProtocollo"; - _methodParameterTypes257 = new String[] { }; + _methodParameterTypes258 = new String[] { }; - _methodName259 = "findPraticheCompleteNotGestite"; + _methodName260 = "findPraticheCompleteNotGestite"; - _methodParameterTypes259 = new String[] { "int", "int" }; + _methodParameterTypes260 = new String[] { "int", "int" }; - _methodName260 = "countPraticheCompleteNotGestite"; + _methodName261 = "countPraticheCompleteNotGestite"; - _methodParameterTypes260 = new String[] { }; + _methodParameterTypes261 = new String[] { }; - _methodName262 = "findByIntPraticaId_TipoIntegrazione_Completa"; + _methodName263 = "findByIntPraticaId_TipoIntegrazione_Completa"; - _methodParameterTypes262 = new String[] { + _methodParameterTypes263 = new String[] { "long", "java.lang.String", "boolean" }; - _methodName263 = "countByIntPraticaId_TipoIntegrazione_Completa"; + _methodName264 = "countByIntPraticaId_TipoIntegrazione_Completa"; - _methodParameterTypes263 = new String[] { + _methodParameterTypes264 = new String[] { "long", "java.lang.String", "boolean" }; - _methodName264 = "findPraticheCompletateNonVersionate"; + _methodName265 = "findPraticheCompletateNonVersionate"; - _methodParameterTypes264 = new String[] { "int", "int" }; + _methodParameterTypes265 = new String[] { "int", "int" }; - _methodName265 = "countPraticheCompletateNonversionate"; + _methodName266 = "countPraticheCompletateNonversionate"; - _methodParameterTypes265 = new String[] { }; + _methodParameterTypes266 = new String[] { }; - _methodName267 = "updateDettPraticaGestita"; + _methodName268 = "updateDettPraticaGestita"; - _methodParameterTypes267 = new String[] { "long", "boolean" }; + _methodParameterTypes268 = new String[] { "long", "boolean" }; - _methodName268 = "updateAsset"; + _methodName269 = "updateAsset"; - _methodParameterTypes268 = new String[] { + _methodParameterTypes269 = new String[] { "it.tref.liferay.portos.bo.model.DettPratica", "long[][]", "boolean" }; - _methodName269 = "updateStatus"; + _methodName270 = "updateStatus"; - _methodParameterTypes269 = new String[] { "long", "int" }; + _methodParameterTypes270 = new String[] { "long", "int" }; - _methodName270 = "updateSignal"; + _methodName271 = "updateSignal"; - _methodParameterTypes270 = new String[] { "long", "java.util.Date" }; + _methodParameterTypes271 = new String[] { "long", "java.util.Date" }; - _methodName271 = "countInvioSignal"; + _methodName272 = "countInvioSignal"; - _methodParameterTypes271 = new String[] { }; + _methodParameterTypes272 = new String[] { }; - _methodName272 = "getInvioSignal"; + _methodName273 = "getInvioSignal"; - _methodParameterTypes272 = new String[] { "long" }; + _methodParameterTypes273 = new String[] { "long" }; - _methodName273 = "getInviiSignal"; + _methodName274 = "getInviiSignal"; - _methodParameterTypes273 = new String[] { "int", "int" }; + _methodParameterTypes274 = new String[] { "int", "int" }; - _methodName274 = "dynamicQueryInvioSignal"; + _methodName275 = "dynamicQueryInvioSignal"; - _methodParameterTypes274 = new String[] { "java.lang.Long" }; + _methodParameterTypes275 = new String[] { "java.lang.Long" }; - _methodName275 = "findByPagamentoId"; + _methodName276 = "findByPagamentoId"; - _methodParameterTypes275 = new String[] { "long" }; + _methodParameterTypes276 = new String[] { "long" }; - _methodName276 = "updatePrincipale"; + _methodName277 = "updatePrincipale"; - _methodParameterTypes276 = new String[] { + _methodParameterTypes277 = new String[] { "long", "java.lang.String", "java.lang.String" }; - _methodName277 = "getDettPraticaFields"; + _methodName278 = "getDettPraticaFields"; - _methodParameterTypes277 = new String[] { }; + _methodParameterTypes278 = new String[] { }; - _methodName278 = "getVersioni"; + _methodName279 = "getVersioni"; - _methodParameterTypes278 = new String[] { "long" }; + _methodParameterTypes279 = new String[] { "long" }; - _methodName279 = "callForChanges"; + _methodName280 = "callForChanges"; - _methodParameterTypes279 = new String[] { "long" }; + _methodParameterTypes280 = new String[] { "long" }; - _methodName280 = "isNumber"; + _methodName281 = "isNumber"; - _methodParameterTypes280 = new String[] { "java.lang.String" }; + _methodParameterTypes281 = new String[] { "java.lang.String" }; - _methodName281 = "format"; + _methodName282 = "format"; - _methodParameterTypes281 = new String[] { + _methodParameterTypes282 = new String[] { "java.lang.String", "java.io.Serializable" }; - _methodName282 = "countVariateByIntPratica"; + _methodName283 = "countVariateByIntPratica"; - _methodParameterTypes282 = new String[] { "long" }; + _methodParameterTypes283 = new String[] { "long" }; - _methodName284 = "getFirstCompletedByIntPratica"; + _methodName285 = "getFirstCompletedByIntPratica"; - _methodParameterTypes284 = new String[] { "long" }; + _methodParameterTypes285 = new String[] { "long" }; } public Object invokeMethod(String name, String[] parameterTypes, @@ -1205,23 +1209,30 @@ public class DettPraticaLocalServiceClpInvoker { if (_methodName242.equals(name) && Arrays.deepEquals(_methodParameterTypes242, parameterTypes)) { - return DettPraticaLocalServiceUtil.isControlloObbligatorio((it.tref.liferay.portos.bo.model.DettPratica)arguments[0]); + DettPraticaLocalServiceUtil.concludiPagamento(((Long)arguments[0]).longValue()); + + return null; } if (_methodName243.equals(name) && Arrays.deepEquals(_methodParameterTypes243, parameterTypes)) { + return DettPraticaLocalServiceUtil.isControlloObbligatorio((it.tref.liferay.portos.bo.model.DettPratica)arguments[0]); + } + + if (_methodName244.equals(name) && + Arrays.deepEquals(_methodParameterTypes244, parameterTypes)) { return DettPraticaLocalServiceUtil.updateEsito(((Long)arguments[0]).longValue(), ((Integer)arguments[1]).intValue()); } - if (_methodName245.equals(name) && - Arrays.deepEquals(_methodParameterTypes245, parameterTypes)) { + if (_methodName246.equals(name) && + Arrays.deepEquals(_methodParameterTypes246, parameterTypes)) { return DettPraticaLocalServiceUtil.updateEsitoIntegrazione(((Long)arguments[0]).longValue(), ((Integer)arguments[1]).intValue()); } - if (_methodName246.equals(name) && - Arrays.deepEquals(_methodParameterTypes246, parameterTypes)) { + if (_methodName247.equals(name) && + Arrays.deepEquals(_methodParameterTypes247, parameterTypes)) { return DettPraticaLocalServiceUtil.pagaInvia(((Long)arguments[0]).longValue(), ((Integer)arguments[1]).intValue(), ((Integer)arguments[2]).intValue(), @@ -1246,189 +1257,189 @@ public class DettPraticaLocalServiceClpInvoker { (com.liferay.portal.service.ServiceContext)arguments[21]); } - if (_methodName247.equals(name) && - Arrays.deepEquals(_methodParameterTypes247, parameterTypes)) { + if (_methodName248.equals(name) && + Arrays.deepEquals(_methodParameterTypes248, parameterTypes)) { return DettPraticaLocalServiceUtil.updateStatus(((Long)arguments[0]).longValue(), ((Long)arguments[1]).longValue(), ((Integer)arguments[2]).intValue(), (com.liferay.portal.service.ServiceContext)arguments[3]); } - if (_methodName250.equals(name) && - Arrays.deepEquals(_methodParameterTypes250, parameterTypes)) { - return DettPraticaLocalServiceUtil.updateDettPraticaProtocollo(((Long)arguments[0]).longValue(), - (java.lang.String)arguments[1]); - } - if (_methodName251.equals(name) && Arrays.deepEquals(_methodParameterTypes251, parameterTypes)) { - return DettPraticaLocalServiceUtil.findByProtocollo(((Long)arguments[0]).longValue(), - ((Long)arguments[1]).longValue(), (java.lang.String)arguments[2]); + return DettPraticaLocalServiceUtil.updateDettPraticaProtocollo(((Long)arguments[0]).longValue(), + (java.lang.String)arguments[1]); } if (_methodName252.equals(name) && Arrays.deepEquals(_methodParameterTypes252, parameterTypes)) { - return DettPraticaLocalServiceUtil.fetchByProtocollo(((Long)arguments[0]).longValue(), + return DettPraticaLocalServiceUtil.findByProtocollo(((Long)arguments[0]).longValue(), ((Long)arguments[1]).longValue(), (java.lang.String)arguments[2]); } if (_methodName253.equals(name) && Arrays.deepEquals(_methodParameterTypes253, parameterTypes)) { - return DettPraticaLocalServiceUtil.fetchByProtocollo((java.lang.String)arguments[0]); + return DettPraticaLocalServiceUtil.fetchByProtocollo(((Long)arguments[0]).longValue(), + ((Long)arguments[1]).longValue(), (java.lang.String)arguments[2]); } if (_methodName254.equals(name) && Arrays.deepEquals(_methodParameterTypes254, parameterTypes)) { - return DettPraticaLocalServiceUtil.findByIntPraticaId(((Long)arguments[0]).longValue()); + return DettPraticaLocalServiceUtil.fetchByProtocollo((java.lang.String)arguments[0]); } if (_methodName255.equals(name) && Arrays.deepEquals(_methodParameterTypes255, parameterTypes)) { + return DettPraticaLocalServiceUtil.findByIntPraticaId(((Long)arguments[0]).longValue()); + } + + if (_methodName256.equals(name) && + Arrays.deepEquals(_methodParameterTypes256, parameterTypes)) { return DettPraticaLocalServiceUtil.findByIntPraticaIdInviate(((Long)arguments[0]).longValue(), ((Integer)arguments[1]).intValue(), ((Integer)arguments[2]).intValue()); } - if (_methodName256.equals(name) && - Arrays.deepEquals(_methodParameterTypes256, parameterTypes)) { + if (_methodName257.equals(name) && + Arrays.deepEquals(_methodParameterTypes257, parameterTypes)) { return DettPraticaLocalServiceUtil.findPraticheCompleteNotProtocollo(((Integer)arguments[0]).intValue(), ((Integer)arguments[1]).intValue()); } - if (_methodName257.equals(name) && - Arrays.deepEquals(_methodParameterTypes257, parameterTypes)) { + if (_methodName258.equals(name) && + Arrays.deepEquals(_methodParameterTypes258, parameterTypes)) { return DettPraticaLocalServiceUtil.countPraticheCompleteNotProtocollo(); } - if (_methodName259.equals(name) && - Arrays.deepEquals(_methodParameterTypes259, parameterTypes)) { + if (_methodName260.equals(name) && + Arrays.deepEquals(_methodParameterTypes260, parameterTypes)) { return DettPraticaLocalServiceUtil.findPraticheCompleteNotGestite(((Integer)arguments[0]).intValue(), ((Integer)arguments[1]).intValue()); } - if (_methodName260.equals(name) && - Arrays.deepEquals(_methodParameterTypes260, parameterTypes)) { + if (_methodName261.equals(name) && + Arrays.deepEquals(_methodParameterTypes261, parameterTypes)) { return DettPraticaLocalServiceUtil.countPraticheCompleteNotGestite(); } - if (_methodName262.equals(name) && - Arrays.deepEquals(_methodParameterTypes262, parameterTypes)) { + if (_methodName263.equals(name) && + Arrays.deepEquals(_methodParameterTypes263, parameterTypes)) { return DettPraticaLocalServiceUtil.findByIntPraticaId_TipoIntegrazione_Completa(((Long)arguments[0]).longValue(), (java.lang.String)arguments[1], ((Boolean)arguments[2]).booleanValue()); } - if (_methodName263.equals(name) && - Arrays.deepEquals(_methodParameterTypes263, parameterTypes)) { + if (_methodName264.equals(name) && + Arrays.deepEquals(_methodParameterTypes264, parameterTypes)) { return DettPraticaLocalServiceUtil.countByIntPraticaId_TipoIntegrazione_Completa(((Long)arguments[0]).longValue(), (java.lang.String)arguments[1], ((Boolean)arguments[2]).booleanValue()); } - if (_methodName264.equals(name) && - Arrays.deepEquals(_methodParameterTypes264, parameterTypes)) { + if (_methodName265.equals(name) && + Arrays.deepEquals(_methodParameterTypes265, parameterTypes)) { return DettPraticaLocalServiceUtil.findPraticheCompletateNonVersionate(((Integer)arguments[0]).intValue(), ((Integer)arguments[1]).intValue()); } - if (_methodName265.equals(name) && - Arrays.deepEquals(_methodParameterTypes265, parameterTypes)) { + if (_methodName266.equals(name) && + Arrays.deepEquals(_methodParameterTypes266, parameterTypes)) { return DettPraticaLocalServiceUtil.countPraticheCompletateNonversionate(); } - if (_methodName267.equals(name) && - Arrays.deepEquals(_methodParameterTypes267, parameterTypes)) { + if (_methodName268.equals(name) && + Arrays.deepEquals(_methodParameterTypes268, parameterTypes)) { return DettPraticaLocalServiceUtil.updateDettPraticaGestita(((Long)arguments[0]).longValue(), ((Boolean)arguments[1]).booleanValue()); } - if (_methodName268.equals(name) && - Arrays.deepEquals(_methodParameterTypes268, parameterTypes)) { + if (_methodName269.equals(name) && + Arrays.deepEquals(_methodParameterTypes269, parameterTypes)) { DettPraticaLocalServiceUtil.updateAsset((it.tref.liferay.portos.bo.model.DettPratica)arguments[0], (long[])arguments[1], ((Boolean)arguments[2]).booleanValue()); return null; } - if (_methodName269.equals(name) && - Arrays.deepEquals(_methodParameterTypes269, parameterTypes)) { + if (_methodName270.equals(name) && + Arrays.deepEquals(_methodParameterTypes270, parameterTypes)) { DettPraticaLocalServiceUtil.updateStatus(((Long)arguments[0]).longValue(), ((Integer)arguments[1]).intValue()); return null; } - if (_methodName270.equals(name) && - Arrays.deepEquals(_methodParameterTypes270, parameterTypes)) { - return DettPraticaLocalServiceUtil.updateSignal(((Long)arguments[0]).longValue(), - (java.util.Date)arguments[1]); - } - if (_methodName271.equals(name) && Arrays.deepEquals(_methodParameterTypes271, parameterTypes)) { - return DettPraticaLocalServiceUtil.countInvioSignal(); + return DettPraticaLocalServiceUtil.updateSignal(((Long)arguments[0]).longValue(), + (java.util.Date)arguments[1]); } if (_methodName272.equals(name) && Arrays.deepEquals(_methodParameterTypes272, parameterTypes)) { - return DettPraticaLocalServiceUtil.getInvioSignal(((Long)arguments[0]).longValue()); + return DettPraticaLocalServiceUtil.countInvioSignal(); } if (_methodName273.equals(name) && Arrays.deepEquals(_methodParameterTypes273, parameterTypes)) { - return DettPraticaLocalServiceUtil.getInviiSignal(((Integer)arguments[0]).intValue(), - ((Integer)arguments[1]).intValue()); + return DettPraticaLocalServiceUtil.getInvioSignal(((Long)arguments[0]).longValue()); } if (_methodName274.equals(name) && Arrays.deepEquals(_methodParameterTypes274, parameterTypes)) { - return DettPraticaLocalServiceUtil.dynamicQueryInvioSignal((java.lang.Long)arguments[0]); + return DettPraticaLocalServiceUtil.getInviiSignal(((Integer)arguments[0]).intValue(), + ((Integer)arguments[1]).intValue()); } if (_methodName275.equals(name) && Arrays.deepEquals(_methodParameterTypes275, parameterTypes)) { - return DettPraticaLocalServiceUtil.findByPagamentoId(((Long)arguments[0]).longValue()); + return DettPraticaLocalServiceUtil.dynamicQueryInvioSignal((java.lang.Long)arguments[0]); } if (_methodName276.equals(name) && Arrays.deepEquals(_methodParameterTypes276, parameterTypes)) { - return DettPraticaLocalServiceUtil.updatePrincipale(((Long)arguments[0]).longValue(), - (java.lang.String)arguments[1], (java.lang.String)arguments[2]); + return DettPraticaLocalServiceUtil.findByPagamentoId(((Long)arguments[0]).longValue()); } if (_methodName277.equals(name) && Arrays.deepEquals(_methodParameterTypes277, parameterTypes)) { - return DettPraticaLocalServiceUtil.getDettPraticaFields(); + return DettPraticaLocalServiceUtil.updatePrincipale(((Long)arguments[0]).longValue(), + (java.lang.String)arguments[1], (java.lang.String)arguments[2]); } if (_methodName278.equals(name) && Arrays.deepEquals(_methodParameterTypes278, parameterTypes)) { - return DettPraticaLocalServiceUtil.getVersioni(((Long)arguments[0]).longValue()); + return DettPraticaLocalServiceUtil.getDettPraticaFields(); } if (_methodName279.equals(name) && Arrays.deepEquals(_methodParameterTypes279, parameterTypes)) { - return DettPraticaLocalServiceUtil.callForChanges(((Long)arguments[0]).longValue()); + return DettPraticaLocalServiceUtil.getVersioni(((Long)arguments[0]).longValue()); } if (_methodName280.equals(name) && Arrays.deepEquals(_methodParameterTypes280, parameterTypes)) { - return DettPraticaLocalServiceUtil.isNumber((java.lang.String)arguments[0]); + return DettPraticaLocalServiceUtil.callForChanges(((Long)arguments[0]).longValue()); } if (_methodName281.equals(name) && Arrays.deepEquals(_methodParameterTypes281, parameterTypes)) { - return DettPraticaLocalServiceUtil.format((java.lang.String)arguments[0], - (java.io.Serializable)arguments[1]); + return DettPraticaLocalServiceUtil.isNumber((java.lang.String)arguments[0]); } if (_methodName282.equals(name) && Arrays.deepEquals(_methodParameterTypes282, parameterTypes)) { + return DettPraticaLocalServiceUtil.format((java.lang.String)arguments[0], + (java.io.Serializable)arguments[1]); + } + + if (_methodName283.equals(name) && + Arrays.deepEquals(_methodParameterTypes283, parameterTypes)) { return DettPraticaLocalServiceUtil.countVariateByIntPratica(((Long)arguments[0]).longValue()); } - if (_methodName284.equals(name) && - Arrays.deepEquals(_methodParameterTypes284, parameterTypes)) { + if (_methodName285.equals(name) && + Arrays.deepEquals(_methodParameterTypes285, parameterTypes)) { return DettPraticaLocalServiceUtil.getFirstCompletedByIntPratica(((Long)arguments[0]).longValue()); } @@ -1535,14 +1546,14 @@ public class DettPraticaLocalServiceClpInvoker { private String[] _methodParameterTypes242; private String _methodName243; private String[] _methodParameterTypes243; - private String _methodName245; - private String[] _methodParameterTypes245; + private String _methodName244; + private String[] _methodParameterTypes244; private String _methodName246; private String[] _methodParameterTypes246; private String _methodName247; private String[] _methodParameterTypes247; - private String _methodName250; - private String[] _methodParameterTypes250; + private String _methodName248; + private String[] _methodParameterTypes248; private String _methodName251; private String[] _methodParameterTypes251; private String _methodName252; @@ -1557,20 +1568,20 @@ public class DettPraticaLocalServiceClpInvoker { private String[] _methodParameterTypes256; private String _methodName257; private String[] _methodParameterTypes257; - private String _methodName259; - private String[] _methodParameterTypes259; + private String _methodName258; + private String[] _methodParameterTypes258; private String _methodName260; private String[] _methodParameterTypes260; - private String _methodName262; - private String[] _methodParameterTypes262; + private String _methodName261; + private String[] _methodParameterTypes261; private String _methodName263; private String[] _methodParameterTypes263; private String _methodName264; private String[] _methodParameterTypes264; private String _methodName265; private String[] _methodParameterTypes265; - private String _methodName267; - private String[] _methodParameterTypes267; + private String _methodName266; + private String[] _methodParameterTypes266; private String _methodName268; private String[] _methodParameterTypes268; private String _methodName269; @@ -1601,6 +1612,8 @@ public class DettPraticaLocalServiceClpInvoker { private String[] _methodParameterTypes281; private String _methodName282; private String[] _methodParameterTypes282; - private String _methodName284; - private String[] _methodParameterTypes284; + private String _methodName283; + private String[] _methodParameterTypes283; + private String _methodName285; + private String[] _methodParameterTypes285; } \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/ConfigurazioneLocalServiceImpl.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/ConfigurazioneLocalServiceImpl.java index 84187d6d..0d5dfbc6 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/ConfigurazioneLocalServiceImpl.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/ConfigurazioneLocalServiceImpl.java @@ -58,7 +58,11 @@ public class ConfigurazioneLocalServiceImpl extends ConfigurazioneLocalServiceBa public List findByC_ChiaveList(long companyId, String chiave) throws SystemException { Configurazione configurazione = configurazionePersistence.fetchByC_Chiave(companyId, chiave); - return DESERIALIZER.deserialize(configurazione.getValore()); + try { + return DESERIALIZER.deserialize(configurazione.getValore()); + } catch (Exception e) { + return null; + } } @Override @@ -118,11 +122,15 @@ public class ConfigurazioneLocalServiceImpl extends ConfigurazioneLocalServiceBa } @Override - public boolean isDeveloper(User user) throws SystemException { + public boolean isDeveloper(User user) { - return !isProduction() - && configurazioneLocalService.findByC_ChiaveList(user.getCompanyId(), - ConfigurazioneConstants.SVILUPPATORI).contains(user.getScreenName()); + try { + return !isProduction() + && findByC_ChiaveList(user.getCompanyId(), ConfigurazioneConstants.SVILUPPATORI).contains( + user.getScreenName()); + } catch (Exception e) { + return false; + } } @Override diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/DettPraticaLocalServiceImpl.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/DettPraticaLocalServiceImpl.java index 200c5423..2029a79c 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/DettPraticaLocalServiceImpl.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/DettPraticaLocalServiceImpl.java @@ -601,8 +601,8 @@ public class DettPraticaLocalServiceImpl extends DettPraticaLocalServiceBaseImpl boolean normArt3com4, boolean normOrd01, boolean normDm04, boolean normDm05, boolean normCI01, boolean normLTC01, boolean suap, boolean normSismaBonus, String clRischioPreInt, String clRischioPostInt, boolean intervFinPub, String intervFinPubDesc, boolean tcNuovaCostruzioneComplessa, - String contestoPaesaggistico, String livelloDiTutela, String vincoli, - ServiceContext serviceContext, boolean bozza) throws PortalException, SystemException { + String contestoPaesaggistico, String livelloDiTutela, String vincoli, ServiceContext serviceContext, + boolean bozza) throws PortalException, SystemException { Date now = new Date(); DettPratica dettPratica = dettPraticaPersistence.fetchByPrimaryKey(dettPraticaId); @@ -863,8 +863,8 @@ public class DettPraticaLocalServiceImpl extends DettPraticaLocalServiceBaseImpl boolean normArt3com4, boolean normOrd01, boolean normDm04, boolean normDm05, boolean normCI01, boolean normLTC01, boolean suap, boolean normSismaBonus, String clRischioPreInt, String clRischioPostInt, boolean intervFinPub, String intervFinPubDesc, boolean tcNuovaCostruzioneComplessa, - String contestoPaesaggistico, String livelloDiTutela, String vincoli, - ServiceContext serviceContext, boolean bozza) throws PortalException, SystemException { + String contestoPaesaggistico, String livelloDiTutela, String vincoli, ServiceContext serviceContext, + boolean bozza) throws PortalException, SystemException { Date now = new Date(); DettPratica dettPratica = dettPraticaPersistence.fetchByPrimaryKey(dettPraticaId); @@ -1130,7 +1130,7 @@ public class DettPraticaLocalServiceImpl extends DettPraticaLocalServiceBaseImpl dettPratica.setModifiedDate(now); Pagamento pagamento = pagamentoPersistence.findByPrimaryKey(pagamentoId); String tipoPagamento = pagamento.getTipoPagamento(); - if (stato.equalsIgnoreCase(PagamentoConstants.UTILIZZATA_PAGATA)) { + if (stato.equals(PagamentoConstants.UTILIZZATA_PAGATA)) { boolean completed = false; if (!dettPratica.isNormEsenteBollo() && !dettPratica.isNormEsenteSpese()) { if (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento)) { @@ -1148,12 +1148,7 @@ public class DettPraticaLocalServiceImpl extends DettPraticaLocalServiceBaseImpl } } if (completed) { - dettPratica = updateEsito(dettPraticaId, WorkflowConstants.STATUS_APPROVED); - try { - WorkflowUtil.valutaEffettiInvioVariante(dettPratica); - } catch (Exception e) { - throw new SystemException(e); - } + concludiPagamento(dettPraticaId); } pagamentoLocalService.updatePagamentoUtilizzata(pagamentoId, stato); delegaLocalService.concludiDeleghePagamento(dettPraticaId); @@ -1165,6 +1160,17 @@ public class DettPraticaLocalServiceImpl extends DettPraticaLocalServiceBaseImpl } } + @Override + public void concludiPagamento(long dettPraticaId) throws SystemException, PortalException, IOException { + + DettPratica dettPratica = updateEsito(dettPraticaId, WorkflowConstants.STATUS_APPROVED); + try { + WorkflowUtil.valutaEffettiInvioVariante(dettPratica); + } catch (Exception e) { + throw new SystemException(e); + } + } + @Override public boolean isControlloObbligatorio(DettPratica dettPratica) { @@ -1305,10 +1311,16 @@ public class DettPraticaLocalServiceImpl extends DettPraticaLocalServiceBaseImpl DettPratica dettPratica = dettPraticaPersistence.findByPrimaryKey(dettPraticaId); BigDecimal importoBolli = PagamentiUtil.getImportoBolli(dettPratica.getCompanyId(), dettPratica.getDettPraticaId(), dettPratica.getTipoIntegrazione()); - PagamentiUtil.nuovoPagamento(currentURL, dettPratica.getDettPraticaId(), DettPratica.class.getName(), - PagamentoConstants.PAGAMENTO_BOLLI, importoBolli.toString(), codiceFiscaleCommittente, serviceContext); - PagamentiUtil.nuovoPagamento(currentURL, dettPratica.getDettPraticaId(), DettPratica.class.getName(), - PagamentoConstants.PAGAMENTO_ONERI, importoSpeseIstruttoria, codiceFiscaleCommittente, serviceContext); + if (dettPratica.getPagamentoIdBolli() == 0) { + PagamentiUtil.nuovoPagamento(currentURL, dettPratica.getDettPraticaId(), DettPratica.class.getName(), + PagamentoConstants.PAGAMENTO_BOLLI, importoBolli.toString(), codiceFiscaleCommittente, + serviceContext); + } + if (dettPratica.getPagamentoIdOneri() == 0) { + PagamentiUtil.nuovoPagamento(currentURL, dettPratica.getDettPraticaId(), DettPratica.class.getName(), + PagamentoConstants.PAGAMENTO_ONERI, importoSpeseIstruttoria, codiceFiscaleCommittente, + serviceContext); + } dettPratica = updateDettPraticaPagamento(dettPratica.getDettPraticaId(), pagAdeguamentoSismico, pagAltro, pagMiglioramentoSismico, pagNuovaCostruzione, pagNuoveCostruzioni, pagRiparazioneInterventoLocale, pagVarianti, importoSpeseIstruttoria, importoBolli.toString(), pagMiglioramentoSismicoSicilia, diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/DettPraticaServiceImpl.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/DettPraticaServiceImpl.java index 2d319a20..a68018fc 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/DettPraticaServiceImpl.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/DettPraticaServiceImpl.java @@ -23,6 +23,8 @@ import java.util.Map; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; +import com.liferay.portal.kernel.log.Log; +import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.security.permission.ActionKeys; import com.liferay.portal.service.ServiceContext; @@ -46,6 +48,8 @@ public class DettPraticaServiceImpl extends DettPraticaServiceBaseImpl { * it.tref.liferay.portos.bo.service.DettPraticaServiceUtil} to access the dett pratica remote service. */ + private static final Log _log = LogFactoryUtil.getLog(DettPraticaServiceImpl.class); + @Override public DettPratica getDettPratica(long dettPraticaId) throws PortalException, SystemException { @@ -172,10 +176,9 @@ public class DettPraticaServiceImpl extends DettPraticaServiceBaseImpl { boolean normDm2018, boolean normDprg01, boolean normDprg02, boolean normAnr, boolean normArt3com3, boolean normArt3com4, boolean normOrd01, boolean normDm04, boolean normDm05, boolean normCI01, boolean normLTC01, boolean suap, boolean normSismaBonus, String clRischioPreInt, String clRischioPostInt, - boolean intervFinPub, String intervFinPubDesc, boolean tcNuovaCostruzioneComplessa, String contestoPaesaggistico, - String livelloDiTutela, String vincoli, ServiceContext serviceContext, boolean bozza, - boolean disabledSubmit, boolean geoDisabledSubmit) - throws PortalException, SystemException { + boolean intervFinPub, String intervFinPubDesc, boolean tcNuovaCostruzioneComplessa, + String contestoPaesaggistico, String livelloDiTutela, String vincoli, ServiceContext serviceContext, + boolean bozza, boolean disabledSubmit, boolean geoDisabledSubmit) throws PortalException, SystemException { DettPratica dettPratica = null; if (!disabledSubmit && DelegheUtil.hasDelegaCompilazioneDomanda(userId, dettPraticaId)) { @@ -210,8 +213,8 @@ public class DettPraticaServiceImpl extends DettPraticaServiceBaseImpl { normEsenteBollo, normEsenteSpese, normDpr01Dep, normDpr02Dep, normDpr01Aut, normDpr02Aut, normDm01, normDm02, normDm03, normDm2018, normDprg01, normDprg02, normAnr, normArt3com3, normArt3com4, normOrd01, normDm04, normDm05, normCI01, normLTC01, suap, normSismaBonus, clRischioPreInt, - clRischioPostInt, intervFinPub, intervFinPubDesc, tcNuovaCostruzioneComplessa, contestoPaesaggistico, - livelloDiTutela, vincoli, serviceContext, bozza); + clRischioPostInt, intervFinPub, intervFinPubDesc, tcNuovaCostruzioneComplessa, + contestoPaesaggistico, livelloDiTutela, vincoli, serviceContext, bozza); } if (!geoDisabledSubmit && DelegheUtil.hasDelegaCompilazioneSezioneGeologica(userId, dettPraticaId)) { dettPratica = dettPraticaLocalService.updateDettPraticaGeologo(userId, dettPraticaId, intPraticaId, diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/IntPraticaLocalServiceImpl.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/IntPraticaLocalServiceImpl.java index 47dc3b26..df990ae0 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/IntPraticaLocalServiceImpl.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/IntPraticaLocalServiceImpl.java @@ -156,11 +156,14 @@ public class IntPraticaLocalServiceImpl extends IntPraticaLocalServiceBaseImpl { DynamicQuery dq = intPraticaLocalService.dynamicQuery(); dq.add(PropertyFactoryUtil.forName("companyId").eq(companyId)); dq.add(PropertyFactoryUtil.forName("status").eq(WorkflowConstants.STATUS_DRAFT)); - dq.add(PropertyFactoryUtil.forName("statoPratica").eq(StatoPraticaConstants.CONFORME)); - Disjunction or = RestrictionsFactoryUtil.disjunction(); - or.add(RestrictionsFactoryUtil.eq("tipoProcedura", Constants.PROCEDURA_B)); - or.add(RestrictionsFactoryUtil.eq("tipoProcedura", Constants.PROCEDURA_B1)); - dq.add(or); + Disjunction orStato = RestrictionsFactoryUtil.disjunction(); + orStato.add(PropertyFactoryUtil.forName("statoPratica").eq(StatoPraticaConstants.CONFORME)); + orStato.add(PropertyFactoryUtil.forName("statoPratica").eq(StatoPraticaConstants.VIDIMATA)); + dq.add(orStato); + Disjunction orProcedura = RestrictionsFactoryUtil.disjunction(); + orProcedura.add(RestrictionsFactoryUtil.eq("tipoProcedura", Constants.PROCEDURA_B)); + orProcedura.add(RestrictionsFactoryUtil.eq("tipoProcedura", Constants.PROCEDURA_B1)); + dq.add(orProcedura); dq.add(PropertyFactoryUtil.forName("dtPratica").between(date[0], date[1])); dq.add(PropertyFactoryUtil.forName("dtSorteggio").isNull()); try { diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/PagamentoLocalServiceImpl.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/PagamentoLocalServiceImpl.java index 0a59dc35..a6ff66dc 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/PagamentoLocalServiceImpl.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/service/impl/PagamentoLocalServiceImpl.java @@ -534,8 +534,8 @@ public class PagamentoLocalServiceImpl extends PagamentoLocalServiceBaseImpl { ServiceContext serviceContext) throws IOException, PortalException, SystemException { Pagamento pagamento = getPagamento(pagamentoId); - if (pagamento.getMezzo().equalsIgnoreCase(PagamentoConstants.MEZZO_MANUALE) - && pagamento.getUtilizzata().equalsIgnoreCase(PagamentoConstants.UTILIZZATA_IN_CORSO)) { + if (pagamento.getMezzo().equals(PagamentoConstants.MEZZO_MANUALE) + && pagamento.getUtilizzata().equals(PagamentoConstants.UTILIZZATA_IN_CORSO)) { long fileEntryId = 0L; long defaultFolderId = configurazioneLocalService.findByC_ChiaveLong(serviceContext.getCompanyId(), ConfigurazioneConstants.ATTACHMENT_FOLDER_ID); @@ -552,14 +552,13 @@ public class PagamentoLocalServiceImpl extends PagamentoLocalServiceBaseImpl { defaultFolder.getFolderId(), folderName, StringPool.BLANK, serviceContext); } Date now = new Date(); - String title = now.getTime() + StringPool.UNDERLINE + "pagamento_manuale" + StringPool.UNDERLINE - + pagamento.getPagamentoId() + StringPool.UNDERLINE + sourceFileName; + String title = now.getTime() + "_pagamento_manuale_" + pagamento.getPagamentoId() + '_' + sourceFileName; String description = StringPool.BLANK; String mimeType = MimeTypesUtil.getContentType(sourceFileName); String changeLog = StringPool.BLANK; FileEntry fileEntry = dlAppLocalService.addFileEntry(serviceContext.getUserId(), folder.getRepositoryId(), - folder.getFolderId(), now.getTime() + StringPool.UNDERLINE + sourceFileName, mimeType, title, - description, changeLog, content, serviceContext); + folder.getFolderId(), now.getTime() + '_' + sourceFileName, mimeType, title, description, + changeLog, content, serviceContext); fileEntryId = fileEntry.getFileEntryId(); pagamento.setFileEntryId(fileEntryId); pagamento = updatePagamento(pagamento); diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/util/PagamentiUtil.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/util/PagamentiUtil.java index 44d3587b..e107e30c 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/util/PagamentiUtil.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/util/PagamentiUtil.java @@ -1,27 +1,18 @@ package it.tref.liferay.portos.bo.util; -import it.tasgroup.idp.generazioneiuv.ElencoIdentificativiType; -import it.toscana.rete.cart.www.servizi.iris_1_1.IdpEsito.IdpOTFType; import it.toscana.rete.cart.www.servizi.iris_1_1.IdpEsito.InformazioniPagamentoType; import it.toscana.rete.cart.www.servizi.iris_1_1.IdpEsito.VerificaStatoPagamentoDettagliato; -import it.tref.liferay.portos.bo.iris.IrisCommonUtil; -import it.tref.liferay.portos.bo.iris.IrisComunicaPosizioniDebitorie; import it.tref.liferay.portos.bo.iris.IrisVerificaPagamenti; import it.tref.liferay.portos.bo.model.Collaudo; import it.tref.liferay.portos.bo.model.DettPratica; import it.tref.liferay.portos.bo.model.FineLavori; import it.tref.liferay.portos.bo.model.Pagamento; -import it.tref.liferay.portos.bo.model.Provincia; -import it.tref.liferay.portos.bo.model.Soggetto; import it.tref.liferay.portos.bo.service.CollaudoLocalServiceUtil; import it.tref.liferay.portos.bo.service.DettPraticaLocalServiceUtil; import it.tref.liferay.portos.bo.service.FineLavoriLocalServiceUtil; import it.tref.liferay.portos.bo.service.PagamentoLocalServiceUtil; -import it.tref.liferay.portos.bo.service.ProvinciaLocalServiceUtil; -import it.tref.liferay.portos.bo.service.SoggettoLocalServiceUtil; import it.tref.liferay.portos.bo.shared.util.PagamentoConstants; import it.tref.liferay.portos.bo.shared.util.TipoIntegrazioneUtil; -import it.tref.liferay.portos.bo.shared.util.TipoSoggettoUtil; import java.io.IOException; import java.math.BigDecimal; @@ -29,16 +20,13 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; -import java.util.Map; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.util.CalendarFactoryUtil; -import com.liferay.portal.kernel.util.HttpUtil; import com.liferay.portal.kernel.util.StringPool; -import com.liferay.portal.kernel.util.StringUtil; import com.liferay.portal.kernel.util.Validator; import com.liferay.portal.service.ServiceContext; @@ -143,12 +131,10 @@ public abstract class PagamentiUtil { String importo, String codiceFiscaleCommittente, ServiceContext serviceContext) throws PortalException, SystemException { - boolean irisDisabled = !PagamentiCommonUtil.irisIsEnable(serviceContext.getCompanyId()); boolean esenzioneBolli = false; boolean esenzioneSpeseIstruttoria = false; String tipoIntegrazione = StringPool.BLANK; long pagamentoId = 0L; - long intPraticaId = 0L; if (DettPratica.class.getName().equals(className)) { DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(classPk); esenzioneBolli = dettPratica.isNormEsenteBollo(); @@ -159,7 +145,6 @@ public abstract class PagamentiUtil { } else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { pagamentoId = dettPratica.getPagamentoIdBolli(); } - intPraticaId = dettPratica.getIntPraticaId(); } else if (FineLavori.class.getName().equals(className)) { FineLavori fineLavori = FineLavoriLocalServiceUtil.getFineLavori(classPk); esenzioneBolli = fineLavori.isNormEsenteBollo(); @@ -170,7 +155,6 @@ public abstract class PagamentiUtil { } else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { pagamentoId = fineLavori.getPagamentoId(); } - intPraticaId = fineLavori.getIntPraticaId(); } else if (Collaudo.class.getName().equals(className)) { Collaudo collaudo = CollaudoLocalServiceUtil.getCollaudo(classPk); esenzioneBolli = collaudo.isNormEsenteBollo(); @@ -181,7 +165,6 @@ public abstract class PagamentiUtil { } else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { pagamentoId = collaudo.getPagamentoId(); } - intPraticaId = collaudo.getIntPraticaId(); } else { throw new SystemException("error.fields.pratica.pagamento.classPk.invalid"); } @@ -222,77 +205,20 @@ public abstract class PagamentiUtil { return null; } } - if (!irisDisabled) { - if (Validator.isNull(pagamentoId)) { - Soggetto committente = SoggettoLocalServiceUtil - .getValidTmpByIntPratica_CodiceFiscale_TipologiaSoggetto(intPraticaId, - codiceFiscaleCommittente, TipoSoggettoUtil.COMMITTENTE); - String provincia = StringPool.BLANK; - String codiceProvincia = committente.getProvincia(); - if (codiceProvincia.equalsIgnoreCase("ee")) { - provincia = "EE"; - } else { - Provincia provinciaEntity = ProvinciaLocalServiceUtil.fetchByC_C(serviceContext.getCompanyId(), - codiceProvincia); - if (Validator.isNotNull(provinciaEntity)) { - provincia = provinciaEntity.getSigla(); - } - } - String codice = IrisCommonUtil.createCodicePendenza(); - String causale = IrisCommonUtil.getDescrizioneCausale(tipoPagamento); - long irisPagamentoId = PagamentoLocalServiceUtil.createPagamentoId(); - currentURL = StringUtil.replaceLast(currentURL, "/0", StringPool.SLASH + irisPagamentoId); - String auth = HttpUtil.getParameter(currentURL, "p_auth", false); - // Se non li rimuovi non funziona più - Map parameters = HttpUtil.getParameterMap(HttpUtil.getQueryString(currentURL)); - for (String key : parameters.keySet()) { - currentURL = HttpUtil.removeParameter(currentURL, key); - } - if (Validator.isNotNull(auth)) { - currentURL = HttpUtil.addParameter(currentURL, "p_auth", auth); - } - if (Validator.isNull(codiceFiscaleCommittente)) { - throw new SystemException("error.fields.pratica.pagamento.codicefiscale.richiesto"); - } - List iuvs = new ArrayList(); - if (PagamentoConstants.PAGAMENTO_BOLLI.equalsIgnoreCase(tipoPagamento)) { - iuvs = IrisComunicaPosizioniDebitorie.generaIUV(serviceContext.getCompanyId(), importi.size()); - } - IdpOTFType idpOTFType = IrisComunicaPosizioniDebitorie.comunicaPosizioniDebitorieOTF( - serviceContext.getCompanyId(), serviceContext.getScopeGroupId(), serviceContext.getUserId(), - codice, causale, codiceFiscaleCommittente, tipoPagamento, importi, iuvs, currentURL, - currentURL, provincia); - String urlPagamento = StringPool.BLANK; - if (idpOTFType == null) { - urlPagamento = currentURL; - throw new SystemException("error.geniocivilefe.pratica.pagamento | intPraticaId=" + intPraticaId - + " | classPk=" + classPk + " | className=" + className); - } else { - urlPagamento = idpOTFType.getUrlGW().toString(); - } - return PagamentoLocalServiceUtil.addPagamentoAndUpdate(irisPagamentoId, codice, causale, - PagamentoConstants.MEZZO_IRIS, codiceFiscaleCommittente, tipoPagamento, importo, - PagamentoConstants.UTILIZZATA_IN_CORSO, classPk, className, 0l, urlPagamento, iuvs, - serviceContext); - } else { - return PagamentoLocalServiceUtil.getPagamento(pagamentoId); - } - } else { - boolean add = true; - if (Validator.isNotNull(pagamentoId)) { - Pagamento pagamento = PagamentoLocalServiceUtil.getPagamento(pagamentoId); - if (pagamento.getClassPk() == classPk) { - add = false; - PagamentoLocalServiceUtil.updatePagamento(pagamentoId, codiceFiscaleCommittente, importo); - } - return pagamento; - } - if (add) { - return PagamentoLocalServiceUtil.addPagamentoAndUpdate(StringPool.BLANK, StringPool.BLANK, - PagamentoConstants.MEZZO_MANUALE, codiceFiscaleCommittente, tipoPagamento, importo, - PagamentoConstants.UTILIZZATA_IN_CORSO, classPk, className, 0l, serviceContext); + boolean add = true; + if (Validator.isNotNull(pagamentoId)) { + Pagamento pagamento = PagamentoLocalServiceUtil.getPagamento(pagamentoId); + if (pagamento.getClassPk() == classPk) { + add = false; + PagamentoLocalServiceUtil.updatePagamento(pagamentoId, codiceFiscaleCommittente, importo); } - return null; + return pagamento; + } + if (add) { + return PagamentoLocalServiceUtil.addPagamentoAndUpdate(StringPool.BLANK, StringPool.BLANK, + PagamentoConstants.MEZZO_MANUALE, codiceFiscaleCommittente, tipoPagamento, importo, + PagamentoConstants.UTILIZZATA_IN_CORSO, classPk, className, 0l, serviceContext); } + return null; } } diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/service.properties b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/service.properties index dff53512..d55e5bf5 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/service.properties +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/service.properties @@ -13,8 +13,8 @@ ## build.namespace=portos_bo - build.number=2772 - build.date=1646228476610 + build.number=2799 + build.date=1649693475997 build.auto.upgrade=true ## diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/mwg/sismica/fe/servlet/Instrumentation.java b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/mwg/sismica/fe/servlet/Instrumentation.java new file mode 100644 index 00000000..957ad4bc --- /dev/null +++ b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/mwg/sismica/fe/servlet/Instrumentation.java @@ -0,0 +1,94 @@ +package it.mwg.sismica.fe.servlet; + +import it.tref.liferay.portos.bo.service.AvvisoLocalServiceUtil; + +import java.io.IOException; +import java.lang.management.ManagementFactory; +import java.util.Date; +import java.util.Iterator; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.liferay.portal.kernel.exception.SystemException; +import com.liferay.portal.kernel.json.JSONFactoryUtil; +import com.liferay.portal.kernel.json.JSONObject; +import com.liferay.portal.kernel.servlet.ServletResponseUtil; +import com.liferay.portal.kernel.util.ContentTypes; +import com.liferay.portal.kernel.util.ParamUtil; +import com.liferay.portal.kernel.util.StringPool; +import com.liferay.portal.util.PortalUtil; + +public class Instrumentation extends HttpServlet { + + private static final long serialVersionUID = 5542429846030601941L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + process(request, response); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, + IOException { + + process(request, response); + } + + private void process(HttpServletRequest request, HttpServletResponse response) throws IOException { + + switch (request.getPathInfo()) { + case "/status": + status(response, ParamUtil.getString(request, "fmt", StringPool.BLANK).toLowerCase()); + break; + default: + response.sendError(HttpServletResponse.SC_NOT_FOUND); + } + } + + private void status(HttpServletResponse response, String mode) throws IOException { + + JSONObject json = JSONFactoryUtil.createJSONObject(); + long time = new Date().getTime() / 1000; + Runtime runtime = Runtime.getRuntime(); + json.put("status", "OK"); + json.put("cpus", runtime.availableProcessors()); + json.put("freeMemory", runtime.freeMemory()); + json.put("maxMemory", runtime.maxMemory()); + json.put("totalMemory", runtime.totalMemory()); + json.put("threads", ManagementFactory.getThreadMXBean().getThreadCount()); + json.put("time", time); + json.put("uptime", time - PortalUtil.getUptime().getTime() / 1000); + try { + AvvisoLocalServiceUtil.countAvvisiInvioSignal(); + } catch (SystemException e) { + json.put("status", "KO"); + } + switch (mode) { + case FMT_JSON: + response.setContentType(ContentTypes.APPLICATION_JSON); + ServletResponseUtil.write(response, json.toString()); + break; + case FMT_TEXT: + response.setContentType(ContentTypes.TEXT_PLAIN); + StringBuilder sb = new StringBuilder(); + Iterator keys = json.keys(); + while (keys.hasNext()) { + String key = keys.next(); + String value = json.getString(key); + sb.append('X').append(key.toUpperCase()).append('=').append(value).append('\n'); + } + ServletResponseUtil.write(response, sb.toString()); + break; + default: + response.setContentType(ContentTypes.TEXT_PLAIN); + ServletResponseUtil.write(response, json.getString("status")); + } + } + + private static final String FMT_JSON = "json"; + private static final String FMT_TEXT = "text"; +} diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/mwg/sismica/fe/servlet/SorgentiServlet.java b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/mwg/sismica/fe/servlet/SorgentiServlet.java deleted file mode 100644 index e10171dd..00000000 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/mwg/sismica/fe/servlet/SorgentiServlet.java +++ /dev/null @@ -1,223 +0,0 @@ -package it.mwg.sismica.fe.servlet; - -import it.tref.liferay.portos.bo.shared.util.Constants; -import it.tref.liferay.portos.mailmanager.shared.messaging.util.DestinationNames; -import it.tref.liferay.portos.mailmanager.shared.util.MailManagerConstants; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.nio.file.Files; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Comparator; -import java.util.Date; - -import javax.mail.internet.AddressException; -import javax.mail.internet.InternetAddress; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.FilenameUtils; - -import com.liferay.portal.kernel.exception.PortalException; -import com.liferay.portal.kernel.exception.SystemException; -import com.liferay.portal.kernel.log.Log; -import com.liferay.portal.kernel.log.LogFactoryUtil; -import com.liferay.portal.kernel.mail.MailMessage; -import com.liferay.portal.kernel.messaging.Message; -import com.liferay.portal.kernel.messaging.MessageBusUtil; -import com.liferay.portal.kernel.util.DigesterUtil; -import com.liferay.portal.kernel.util.ParamUtil; -import com.liferay.portal.kernel.util.PropsUtil; -import com.liferay.portal.kernel.util.StringUtil; -import com.liferay.portal.kernel.util.Validator; -import com.liferay.portal.model.Company; -import com.liferay.portal.model.Role; -import com.liferay.portal.model.RoleConstants; -import com.liferay.portal.model.User; -import com.liferay.portal.service.RoleLocalServiceUtil; -import com.liferay.portal.service.ServiceContext; -import com.liferay.portal.service.ServiceContextFactory; -import com.liferay.portal.service.UserLocalServiceUtil; -import com.liferay.portal.util.PortalUtil; - -public class SorgentiServlet extends HttpServlet { - private static final long serialVersionUID = 5549374841236285035L; - - private static final int validita = 3; - private static final String folder = "condivisi"; - private static final String uri = "/portos-fe-portlet/sorgenti-sismica/"; - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, - IOException { - String pathInfo = request.getPathInfo(); - - if (Validator.isNull(pathInfo) || pathInfo.equals("/")) { - request.getRequestDispatcher("/html/sorgenti/form.jsp").forward(request, response); - } else { - String[] parti = StringUtil.split(pathInfo, '/'); - if (parti.length == 4) { - registra(request, "Scaricamento - " + parti[1] + "/" + parti[2] + "/" + parti[3]); - String path = parti[1]; - File file = new File(PropsUtil.get("liferay.home") + "/" + folder + "/" + parti[3]); - if (file.exists() && !file.isDirectory() && pathValido(request, path)) { - String contentType = probeContentType(file); - response.setContentType(contentType); - response.setContentLength((int) file.length()); - response.setHeader("Content-Disposition", "attachment; filename=" + file.getName()); - FileUtils.copyFile(file, response.getOutputStream()); - } else { - response.sendError(HttpServletResponse.SC_NOT_FOUND, request.getRequestURI()); - } - } else { - response.sendError(HttpServletResponse.SC_NOT_FOUND, request.getRequestURI()); - } - } - } - - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, - IOException { - String pathInfo = request.getPathInfo(); - - if (Validator.isNotNull(pathInfo) && pathInfo.equals("/richiedi")) { - try { - if (inviaMail(request, response)) { - request.getRequestDispatcher("/html/sorgenti/invio_ok.jsp").forward(request, response); - } else { - request.getRequestDispatcher("/html/sorgenti/invio_ko.jsp").forward(request, response); - } - } catch (AddressException | PortalException | SystemException e) { - request.getRequestDispatcher("/html/sorgenti/invio_ko.jsp").forward(request, response); - e.printStackTrace(); - } - } else { - response.sendError(HttpServletResponse.SC_NOT_FOUND, request.getRequestURI()); - } - } - - private static boolean pathValido(HttpServletRequest request, String path) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - for (int i = 0; i <= validita; i++) { - if (path.equals(getLink(request, calendar.getTime()))) { - return true; - } - calendar.add(Calendar.DAY_OF_MONTH, -1); - } - return false; - } - - private static String getSeed(HttpServletRequest request) { - String seed = null; - try { - Company company = PortalUtil.getCompany(request); - seed = (String) company.getExpandoBridge().getAttribute(Constants.COMPANY_CUSTOM_FIELD_LINK_SEED, - false); - } catch (PortalException | SystemException e) { - } - return seed; - } - - private static boolean inviaMail(HttpServletRequest request, HttpServletResponse response) - throws AddressException, PortalException, SystemException, IOException { - Date date = new Date(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - calendar.add(Calendar.DAY_OF_MONTH, validita); - - String nome = ParamUtil.getString(request, "nome"); - String cognome = ParamUtil.getString(request, "cognome"); - String email = ParamUtil.getString(request, "email"); - - String link = getLink(request, date); - String digest = digest(request, email); - String scadenza = new SimpleDateFormat("dd/MM/yyyy").format(calendar.getTime()); - - String testo = "Gentile " + nome + " " + cognome - + ".

Puoi scaricare i sorgenti di Sismica Sicilia da qui:
"; - - File[] lista = new File(PropsUtil.get("liferay.home") + "/" + folder).listFiles(); - Arrays.sort(lista, new Comparator() { - @Override - public int compare(File f1, File f2) { - return f1.getName().compareTo(f2.getName()); - } - }); - for (File file : lista) { - testo += "" + file.getName() + ".
"; - } - if (lista.length > 1) { - testo += "
I link saranno validi"; - } else { - testo += "
Il link sarà valido"; - } - testo += " fino a tutto il giorno " + scadenza - + ".

È possibile in ogni momento richiedere un nuovo link da questa pagina."; - - InternetAddress from = new InternetAddress("noreply-Sismica@lavoripubblici.sicilia.it", true); - InternetAddress[] to = { new InternetAddress(email, true) }; - - MailMessage mail = new MailMessage(from, "Sorgenti del portale Sismica Sicilia", testo, true); - mail.setTo(to); - - ServiceContext serviceContext = ServiceContextFactory.getInstance(request); - Role role = RoleLocalServiceUtil.getRole(serviceContext.getCompanyId(), RoleConstants.ADMINISTRATOR); - User user = UserLocalServiceUtil.getRoleUsers(role.getRoleId(), 0, 1).get(0); - serviceContext.setUserId(user.getUserId()); - - Message message = new Message(); - message.put("serviceContext", serviceContext); - message.put("mode", MailManagerConstants.MESSAGING_SEND_MODE_ASYNC); - - message.setPayload(mail); - - MessageBusUtil.sendMessage(DestinationNames.SEND_MAIL, message); - - registra(request, "Richiesta - nome: " + nome + ", cognome: " + cognome + ", email: " + email - + ", cartella: " + link + "/" + digest); - - return true; - } - - private static String getLink(HttpServletRequest request, Date date) { - return digest(request, new SimpleDateFormat("dd/MM/yyyy").format(date)); - } - - private static String digest(HttpServletRequest request, String text) { - return DigesterUtil.digestHex("md5", getSeed(request) + text); - } - - private static void registra(HttpServletRequest request, String text) throws IOException { - FileWriter writer = new FileWriter(PropsUtil.get("liferay.home") + "/logs/sorgenti.log", true); - writer.write(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) + " [" - + request.getRemoteAddr() + "] " + text + "\n"); - writer.close(); - } - - // La macchina di produzione non ha il supporto per mime, aggiriamo per i - // casi che ci interessano - private static String probeContentType(File file) { - try { - String extension = FilenameUtils.getExtension(file.getName()).toLowerCase(); - switch (extension) { - case "pdf": - return "application/pdf"; - case "zip": - return "application/zip"; - default: - return Files.probeContentType(file.toPath()); - } - } catch (IOException e) { - return "application/octet-stream"; - } - } -} diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/fe/portlet/FascicoloFePortlet.java b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/fe/portlet/FascicoloFePortlet.java index 63fc91d5..4fdddf5b 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/fe/portlet/FascicoloFePortlet.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/fe/portlet/FascicoloFePortlet.java @@ -13,12 +13,14 @@ import it.tref.liferay.portos.bo.model.Soggetto; import it.tref.liferay.portos.bo.model.Territorio; import it.tref.liferay.portos.bo.service.AsseverazioneLocalServiceUtil; import it.tref.liferay.portos.bo.service.AsseverazioneServiceUtil; +import it.tref.liferay.portos.bo.service.CollaudoLocalServiceUtil; import it.tref.liferay.portos.bo.service.CollaudoServiceUtil; import it.tref.liferay.portos.bo.service.ComuneLocalServiceUtil; import it.tref.liferay.portos.bo.service.DelegaLocalServiceUtil; import it.tref.liferay.portos.bo.service.DelegaServiceUtil; import it.tref.liferay.portos.bo.service.DettPraticaLocalServiceUtil; import it.tref.liferay.portos.bo.service.DettPraticaServiceUtil; +import it.tref.liferay.portos.bo.service.FineLavoriLocalServiceUtil; import it.tref.liferay.portos.bo.service.FineLavoriServiceUtil; import it.tref.liferay.portos.bo.service.IntPraticaLocalServiceUtil; import it.tref.liferay.portos.bo.service.IntPraticaServiceUtil; @@ -113,7 +115,7 @@ import com.liferay.util.bridges.mvc.MVCPortlet; public class FascicoloFePortlet extends MVCPortlet { - private static Log _log = LogFactoryUtil.getLog(FascicoloFePortlet.class); + private static final Log _log = LogFactoryUtil.getLog(FascicoloFePortlet.class); @Override public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, @@ -426,6 +428,12 @@ public class FascicoloFePortlet extends MVCPortlet { } } + public void concludiPagamento(ActionRequest request, ActionResponse response) throws Exception { + + long dettPraticaId = ParamUtil.getLong(request, "dettPraticaId"); + DettPraticaLocalServiceUtil.concludiPagamento(dettPraticaId); + } + public void addGestioneUtenti(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { ServiceContext serviceContext = ServiceContextFactory.getInstance(actionRequest); @@ -1366,6 +1374,7 @@ public class FascicoloFePortlet extends MVCPortlet { Pattern.quote(StringPool.PIPE), StringPool.SPACE); String dcParticelle = particella1 + StringPool.PIPE + particella2 + StringPool.PIPE + particella3 + StringPool.PIPE + particella4; + String localizzazioneGeografica = ParamUtil.getString(actionRequest, "localizzazioneGeografica"); boolean tcNuovaCostruzione = ParamUtil.getBoolean(actionRequest, "tcNuovaCostruzione"); boolean tcAdeguamentoSismico = ParamUtil.getBoolean(actionRequest, "tcAdeguamentoSismico"); boolean tcMiglioramentoSismico = ParamUtil.getBoolean(actionRequest, "tcMiglioramentoSismico"); @@ -1597,7 +1606,7 @@ public class FascicoloFePortlet extends MVCPortlet { pagCalcolatoRiparazioneInterventoLocale, pagCalcolatoOperaNonQuantificabile, pagEffettivoAdeguamentoSismico, pagEffettivoMiglioramentoSismico, pagEffettivoRiparazioneInterventoLocale, pagEffettivoOperaNonQuantificabile, pagNoteUtente, note, - noteUfficio, dettPratica.getLocalizzazioneGeografica(), tcNuovaCostruzione, tcAdeguamentoSismico, + noteUfficio, localizzazioneGeografica, tcNuovaCostruzione, tcAdeguamentoSismico, tcMiglioramentoSismico, tcRiparazioneInterventoLocale, tcInCA, tcInOpera, tcPrefabbricato, tcInAcciaio, tcMista, tcInMuratura, tcInMuraturaOrdinaria, tcInMuraturaArmata, tcInMuraturaMista, tcInLegno, tcAltro, tcAltroDescrizione, tcConDispositivi, normLavoriInProprio, normEsenteBollo, @@ -1956,40 +1965,70 @@ public class FascicoloFePortlet extends MVCPortlet { long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); long fineLavoriId = ParamUtil.getLong(actionRequest, "fineLavoriId"); long collaudoId = ParamUtil.getLong(actionRequest, "collaudoId"); - String codiceFiscaleCommittente = ParamUtil.getString(actionRequest, "codiceFiscaleCommittente"); + DettPratica dettPratica = null; + FineLavori fineLavori = null; + Collaudo collaudo = null; + Pagamento pagamento = null; + if (dettPraticaId != 0) { + dettPratica = DettPraticaLocalServiceUtil.getDettPratica(dettPraticaId); + pagamento = PagamentoLocalServiceUtil.fetchPagamento(dettPratica.getPagamentoIdOneri()); + if (Validator.isNull(pagamento)) { + pagamento = PagamentoLocalServiceUtil.fetchPagamento(dettPratica.getPagamentoIdBolli()); + } + } else if (fineLavoriId != 0) { + fineLavori = FineLavoriLocalServiceUtil.getFineLavori(fineLavoriId); + pagamento = PagamentoLocalServiceUtil.fetchPagamento(fineLavori.getPagamentoId()); + } else if (collaudoId != 0) { + collaudo = CollaudoLocalServiceUtil.getCollaudo(collaudoId); + pagamento = PagamentoLocalServiceUtil.fetchPagamento(collaudo.getPagamentoId()); + } + String codiceFiscaleCommittente = null; + if (Validator.isNotNull(pagamento)) { + codiceFiscaleCommittente = pagamento.getCodiceFiscaleCommittente(); + } + codiceFiscaleCommittente = ParamUtil.getString(actionRequest, "codiceFiscaleCommittente", + codiceFiscaleCommittente); String url = ParamUtil.getString(actionRequest, "url"); - if (Validator.isNotNull(dettPraticaId)) { + if (Validator.isNotNull(dettPratica)) { if (ValidazionePraticaUtil.pagamentoIsEnable(dettPraticaId) && DelegheUtil.canDoPayment(serviceContext.getUserId(), dettPraticaId)) { - int pagAdeguamentoSismico = ParamUtil.getInteger(actionRequest, "pagAdeguamentoSismico"); - int pagAltro = ParamUtil.getInteger(actionRequest, "pagAltro"); - int pagMiglioramentoSismico = ParamUtil.getInteger(actionRequest, "pagMiglioramentoSismico"); - int pagNuovaCostruzione = ParamUtil.getInteger(actionRequest, "pagNuovaCostruzione"); - - boolean pagNuoveCostruzioni = ParamUtil.getBoolean(actionRequest, "pagNuoveCostruzioni"); + int pagAdeguamentoSismico = ParamUtil.getInteger(actionRequest, "pagAdeguamentoSismico", + dettPratica.getPagAdeguamentoSismico()); + int pagAltro = ParamUtil.getInteger(actionRequest, "pagAltro", dettPratica.getPagAltro()); + int pagMiglioramentoSismico = ParamUtil.getInteger(actionRequest, "pagMiglioramentoSismico", + dettPratica.getPagMiglioramentoSismico()); + int pagNuovaCostruzione = ParamUtil.getInteger(actionRequest, "pagNuovaCostruzione", + dettPratica.getPagNuovaCostruzione()); + + boolean pagNuoveCostruzioni = ParamUtil.getBoolean(actionRequest, "pagNuoveCostruzioni", + dettPratica.getPagNuoveCostruzioni()); boolean pagRiparazioneInterventoLocale = ParamUtil.getBoolean(actionRequest, - "pagRiparazioneInterventoLocale"); + "pagRiparazioneInterventoLocale", dettPratica.getPagRiparazioneInterventoLocale()); boolean pagMiglioramentoSismicoSicilia = ParamUtil.getBoolean(actionRequest, - "pagMiglioramentoSismicoSicilia"); + "pagMiglioramentoSismicoSicilia", dettPratica.getPagMiglioramentoSismicoSicilia()); String pagCalcolatoAdeguamentoSismico = ParamUtil.getString(actionRequest, - "pagCalcolatoAdeguamentoSismico"); + "pagCalcolatoAdeguamentoSismico", dettPratica.getPagCalcolatoAdeguamentoSismico()); String pagCalcolatoMiglioramentoSismico = ParamUtil.getString(actionRequest, - "pagCalcolatoMiglioramentoSismico"); + "pagCalcolatoMiglioramentoSismico", dettPratica.getPagCalcolatoMiglioramentoSismico()); String pagCalcolatoRiparazioneInterventoLocale = ParamUtil.getString(actionRequest, - "pagCalcolatoRiparazioneInterventoLocale"); + "pagCalcolatoRiparazioneInterventoLocale", + dettPratica.getPagCalcolatoRiparazioneInterventoLocale()); String pagCalcolatoOperaNonQuantificabile = ParamUtil.getString(actionRequest, - "pagCalcolatoOperaNonQuantificabile"); + "pagCalcolatoOperaNonQuantificabile", dettPratica.getPagCalcolatoOperaNonQuantificabile()); String pagEffettivoAdeguamentoSismico = ParamUtil.getString(actionRequest, - "pagEffettivoAdeguamentoSismico"); + "pagEffettivoAdeguamentoSismico", dettPratica.getPagEffettivoAdeguamentoSismico()); String pagEffettivoMiglioramentoSismico = ParamUtil.getString(actionRequest, - "pagEffettivoMiglioramentoSismico"); + "pagEffettivoMiglioramentoSismico", dettPratica.getPagEffettivoMiglioramentoSismico()); String pagEffettivoRiparazioneInterventoLocale = ParamUtil.getString(actionRequest, - "pagEffettivoRiparazioneInterventoLocale"); + "pagEffettivoRiparazioneInterventoLocale", + dettPratica.getPagEffettivoRiparazioneInterventoLocale()); String pagEffettivoOperaNonQuantificabile = ParamUtil.getString(actionRequest, - "pagEffettivoOperaNonQuantificabile"); - String pagNoteUtente = ParamUtil.getString(actionRequest, "pagNoteUtente"); - boolean pagVarianti = ParamUtil.getBoolean(actionRequest, "pagVarianti"); - String importoSpeseIstruttoria = ParamUtil.getString(actionRequest, "importoSpeseIstruttoria"); + "pagEffettivoOperaNonQuantificabile", dettPratica.getPagEffettivoOperaNonQuantificabile()); + String pagNoteUtente = ParamUtil.getString(actionRequest, "pagNoteUtente", + dettPratica.getPagNoteUtente()); + boolean pagVarianti = ParamUtil.getBoolean(actionRequest, "pagVarianti", dettPratica.getPagVarianti()); + String importoSpeseIstruttoria = ParamUtil.getString(actionRequest, "importoSpeseIstruttoria", + dettPratica.getImportoSpeseIstruttoria()); // ADT: BUG FE ID=30 - CALCOLO IMPORTO // controllo non effettuato se spese esente boolean esenteSpeseIstruttoria = DettPraticaLocalServiceUtil.getDettPratica(dettPraticaId) @@ -2027,7 +2066,7 @@ public class FascicoloFePortlet extends MVCPortlet { throw new PortalException("You have not permission to create the payment for dettPratica " + dettPraticaId); } - } else if (Validator.isNotNull(fineLavoriId)) { + } else if (Validator.isNotNull(fineLavori)) { if (ValidazionePraticaUtil.pagamentoFineLavoriIsEnable(fineLavoriId)) { _log.debug("pagamento inizializzato per fineLavori" + fineLavoriId); FineLavoriServiceUtil.pagaInvia(fineLavoriId, codiceFiscaleCommittente, url, serviceContext); @@ -2035,7 +2074,7 @@ public class FascicoloFePortlet extends MVCPortlet { throw new PortalException("You have not permission to create the payment for Fine Lavori " + fineLavoriId); } - } else if (Validator.isNotNull(collaudoId)) { + } else if (Validator.isNotNull(collaudo)) { if (ValidazionePraticaUtil.pagamentoCollaudoIsEnable(collaudoId)) { CollaudoServiceUtil.pagaInvia(collaudoId, codiceFiscaleCommittente, url, serviceContext); } else { @@ -2267,7 +2306,6 @@ public class FascicoloFePortlet extends MVCPortlet { public void rigeneraPagamento(ActionRequest actionRequest, ActionResponse actionResponse) throws PortalException, SystemException, InterruptedException { - _log.info("Entro"); ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); ServiceContext serviceContext = ServiceContextFactory.getInstance(actionRequest); serviceContext.setCompanyId(themeDisplay.getCompanyId()); diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/web.xml b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/web.xml index d6eb336f..16f9d31e 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/web.xml +++ b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/web.xml @@ -3,12 +3,12 @@ xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> - SorgentiServlet - it.mwg.sismica.fe.servlet.SorgentiServlet + Instrumentation + it.mwg.sismica.fe.servlet.Instrumentation - SorgentiServlet - /sorgenti-sismica/* + Instrumentation + /instrumentation/* \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/edit_fascicolo.jsp b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/edit_fascicolo.jsp index 31bad46a..79031ad8 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/edit_fascicolo.jsp +++ b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/edit_fascicolo.jsp @@ -1,3 +1,4 @@ +<%@page import="it.tref.liferay.portos.bo.shared.util.StatoPraticaConstants"%> <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="com.liferay.portal.kernel.util.HttpUtil"%> <%@page import="it.tref.liferay.portos.bo.model.DettPratica"%> diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/navigator/domanda/page_dettagli_principali.jsp b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/navigator/domanda/page_dettagli_principali.jsp index de4366d8..cf06d664 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/navigator/domanda/page_dettagli_principali.jsp +++ b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/fascicolofe/navigator/domanda/page_dettagli_principali.jsp @@ -1,3 +1,4 @@ +<%@page import="it.tref.liferay.portos.bo.service.ConfigurazioneLocalServiceUtil"%> <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.util.Map"%> <%@page import="it.tref.liferay.portos.bo.shared.util.SessionUtil"%> @@ -55,6 +56,8 @@ boolean isDisabled = disabledInput && !enabledByIntegrazione; String displayStyle = proceduraC ? "display:none" : StringPool.BLANK; String urlIframeMappe = dettPratica.getUrlMappeFe(request, comune, disabledInput || isGeoEditable); +String originMappe = ConfigurazioneLocalServiceUtil.isProduction() ? + PortalUtil.getPortalURL(request) : "https://sismica.sicilia.it"; %> @@ -188,7 +191,7 @@ String urlIframeMappe = dettPratica.getUrlMappeFe(request, comune, disabledInput name="normEsenteSpese" label="norm-esente-spese" /> -

+
@@ -351,50 +354,45 @@ document.addEventListener('DOMContentLoaded', function(event) { window.addEventListener('message', messageListener, false); }); function messageListener(event) { - try { - var data = JSON.parse(event.data); - } catch (e) { - return; - } - var trasferiti = []; - var lat = ''; - var lng = ''; - for (key in data) { - var name = ''; - switch (key) { - case 'latitudine': - lat = data[key]; - break; - case 'longitudine': - lng = data[key]; - break; - case 'paesaggioLocale': - name = 'input_contestoPaesaggistico'; - data[key] = duplicati(data[key]); - break; - case 'livelloDiTutela': - case 'vincoli': - data[key] = duplicati(data[key]); - // Fall through - default: - name = 'input_' + key; + if (event.origin == '<%= originMappe %>') { + try { + var data = JSON.parse(event.data); + } catch (e) { + return; } - if (name !== '') { - var el = document.getElementById('' + name); - if (null !== el) { - el.value = data[key]; - trasferiti.push(key); + var lat = ''; + var lng = ''; + for (key in data) { + var name = ''; + switch (key) { + case 'latitudine': + lat = data[key]; + break; + case 'longitudine': + lng = data[key]; + break; + case 'paesaggioLocale': + name = 'input_contestoPaesaggistico'; + data[key] = duplicati(data[key]); + break; + case 'livelloDiTutela': + case 'vincoli': + data[key] = duplicati(data[key]); + // Fall through + default: + name = 'input_' + key; + } + if (name !== '') { + var el = document.getElementById('' + name); + if (null !== el) { + el.value = data[key]; + } } } - } - var el = document.getElementById('localizzazioneGeografica'); - el.value = lat + '|' + lng + '|8'; - trasferiti.push('localizzazioneGeografica'); - if (trasferiti.length > 0) { - console.log('Trasferiti correttamente: ' + trasferiti.join(', ')); - } - if (trasferiti.length > 0) { - console.log('Trasferiti correttamente: ' + trasferiti.join(', ')); + if (lat.length > 0 && lng.length > 0) { + var el = document.getElementById('localizzazioneGeografica'); + el.value = lat + '|' + lng + '|8'; + } } } @@ -801,7 +799,6 @@ function localize(){ var url = "https://nominatim.openstreetmap.org/search?format=json&addressdetails=0&q="+ localization.join("+"); - /* console.log(url); */ var point_lat = "", point_long = ""; @@ -833,15 +830,13 @@ function localize(){ }); } - - - - - - - - - \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/form.jsp b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/form.jsp deleted file mode 100644 index 18dd7fc7..00000000 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/form.jsp +++ /dev/null @@ -1,33 +0,0 @@ -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ include file="/html/sorgenti/header.jsp"%> -
-
-

Sorgenti del portale Sismica Sicilia

-
Compila il form sottostante e riceverai per email il collegamento per scaricare - i sorgenti del portale Sismica.
-
-
-
-
-
- - - - - - - - - - - - - - - - -
Nome
Cognome
E-mail
-
-
-
-<%@ include file="/html/sorgenti/footer.jsp"%> diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/header.jsp b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/header.jsp deleted file mode 100644 index 970e26c9..00000000 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/header.jsp +++ /dev/null @@ -1,22 +0,0 @@ -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@page import="com.liferay.portal.kernel.util.ParamUtil" %> - - - -Sorgenti del portale Sismica Sicilia - - - - - -
-
-
- Regione Siciliana -
-
- -
-
-
\ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/invio_ko.jsp b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/invio_ko.jsp deleted file mode 100644 index f0c337f1..00000000 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/invio_ko.jsp +++ /dev/null @@ -1,10 +0,0 @@ -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ include file="/html/sorgenti/header.jsp"%> -
-
- Si è verificato un errore durante l'inzio di una mail all'indirizzo - <%=ParamUtil.getString(request, "email")%>

- Ti invitiamo a riprovare tra qualche minuto. -
-
-<%@ include file="/html/sorgenti/footer.jsp"%> \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/invio_ok.jsp b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/invio_ok.jsp deleted file mode 100644 index b575c2fe..00000000 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/html/sorgenti/invio_ok.jsp +++ /dev/null @@ -1,10 +0,0 @@ -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ include file="/html/sorgenti/header.jsp"%> -
-
- È stata inviata una mail all'indirizzo - <%=ParamUtil.getString(request, "email")%> - contente l'indirizzo per scaricare i sorgenti del portale Sismica di Regione Siciliana -
-
-<%@ include file="/html/sorgenti/footer.jsp"%> \ No newline at end of file diff --git a/liferay-plugins-sdk-6.2/shared/portos-bo-shared/src/it/tref/liferay/portos/bo/shared/util/DocumentiPraticaUtil.java b/liferay-plugins-sdk-6.2/shared/portos-bo-shared/src/it/tref/liferay/portos/bo/shared/util/DocumentiPraticaUtil.java index 39c5bedd..c74a0694 100644 --- a/liferay-plugins-sdk-6.2/shared/portos-bo-shared/src/it/tref/liferay/portos/bo/shared/util/DocumentiPraticaUtil.java +++ b/liferay-plugins-sdk-6.2/shared/portos-bo-shared/src/it/tref/liferay/portos/bo/shared/util/DocumentiPraticaUtil.java @@ -26,6 +26,7 @@ public class DocumentiPraticaUtil { public final static String TIPOLOGIA_ALLEGATO_A14 = "A14"; public final static String TIPOLOGIA_ALLEGATO_A15 = "A15"; public final static String TIPOLOGIA_ALLEGATO_A17 = "A17"; + public final static String TIPOLOGIA_ALLEGATO_A29 = "A29"; public final static String TIPOLOGIA_ALLEGATO_ALTRI = "A99"; public final static String TIPOLOGIA_ALLEGATO_DELEGA = "A98"; @@ -89,7 +90,7 @@ public class DocumentiPraticaUtil { TIPOLOGIA_ALLEGATO_A02, TIPOLOGIA_ALLEGATO_A03, TIPOLOGIA_ALLEGATO_A04, TIPOLOGIA_ALLEGATO_A06, TIPOLOGIA_ALLEGATO_A07, TIPOLOGIA_ALLEGATO_A08, TIPOLOGIA_ALLEGATO_A09, TIPOLOGIA_ALLEGATO_A10, TIPOLOGIA_ALLEGATO_A11, TIPOLOGIA_ALLEGATO_A12, TIPOLOGIA_ALLEGATO_A13, TIPOLOGIA_ALLEGATO_A17, - TIPOLOGIA_ALLEGATO_ALTRI, TIPOLOGIA_ALLEGATO_DELEGA); + TIPOLOGIA_ALLEGATO_A29, TIPOLOGIA_ALLEGATO_ALTRI, TIPOLOGIA_ALLEGATO_DELEGA); public static List getDocDomanda() { @@ -100,7 +101,8 @@ public class DocumentiPraticaUtil { TIPOLOGIA_ALLEGATO_A02, TIPOLOGIA_ALLEGATO_A03, TIPOLOGIA_ALLEGATO_A04, TIPOLOGIA_ALLEGATO_A06, TIPOLOGIA_ALLEGATO_A07, TIPOLOGIA_ALLEGATO_A08, TIPOLOGIA_ALLEGATO_A09, TIPOLOGIA_ALLEGATO_A10, TIPOLOGIA_ALLEGATO_A13, TIPOLOGIA_ALLEGATO_A17, TIPOLOGIA_ALLEGATO_DELEGA); - private static final List DOC_OBBLIGATORI_DOMANDA_C = Arrays.asList(TIPOLOGIA_ALLEGATO_A03); + private static final List DOC_OBBLIGATORI_DOMANDA_C = Arrays.asList(TIPOLOGIA_ALLEGATO_A03, + TIPOLOGIA_ALLEGATO_A29); public static List getDocObbligatoriDomanda(String tipoProcedura) {