Fabio Dalle Ave 5 лет назад
Сommit
4e25767c1a
100 измененных файлов с 16480 добавлено и 0 удалено
  1. 26 0
      sicura.business/.classpath
  2. 6 0
      sicura.business/.factorypath
  3. 1 0
      sicura.business/.gitignore
  4. 42 0
      sicura.business/.project
  5. 3 0
      sicura.business/.settings/org.eclipse.core.resources.prefs
  6. 3 0
      sicura.business/.settings/org.eclipse.jdt.apt.core.prefs
  7. 17 0
      sicura.business/.settings/org.eclipse.jdt.core.prefs
  8. 4 0
      sicura.business/.settings/org.eclipse.m2e.core.prefs
  9. 6 0
      sicura.business/.settings/org.eclipse.wst.common.component
  10. 5 0
      sicura.business/.settings/org.eclipse.wst.common.project.facet.core.xml
  11. 2 0
      sicura.business/.settings/org.eclipse.wst.validation.prefs
  12. 3 0
      sicura.business/.settings/org.hibernate.eclipse.console.prefs
  13. 55 0
      sicura.business/pom.xml
  14. BIN
      sicura.business/src.7z
  15. 41 0
      sicura.business/src/bean/AnnullaDistintaBean.java
  16. 366 0
      sicura.business/src/bean/AppVariables.java
  17. 35 0
      sicura.business/src/bean/BeanPostPianoEstrazione.java
  18. 22 0
      sicura.business/src/bean/BeanSelect.java
  19. 30 0
      sicura.business/src/bean/CambioOrdinanteBean.java
  20. 33 0
      sicura.business/src/bean/DisposizioniBonificiBean.java
  21. 22 0
      sicura.business/src/bean/FileBean.java
  22. 68 0
      sicura.business/src/bean/LogModificheBean.java
  23. 64 0
      sicura.business/src/bean/LogServizioBean.java
  24. 36 0
      sicura.business/src/bean/LogVariazioniBean.java
  25. 34 0
      sicura.business/src/bean/ModificaContoDistintaBean.java
  26. 35 0
      sicura.business/src/bean/ModificaDataDisposizioneBean.java
  27. 39 0
      sicura.business/src/bean/MotivazioneRichiamoBean.java
  28. 47 0
      sicura.business/src/bean/ParamBean.java
  29. 26 0
      sicura.business/src/bean/PianoEsecuzioneOpzioniBean.java
  30. 40 0
      sicura.business/src/bean/PianoEstrattoreDistinte.java
  31. 20 0
      sicura.business/src/bean/SecurityLogUserBean.java
  32. 13 0
      sicura.business/src/bean/StoredProcResult.java
  33. 22 0
      sicura.business/src/bean/UserInfoBean.java
  34. 24 0
      sicura.business/src/bean/UserRoleBean.java
  35. 41 0
      sicura.business/src/bean/filters/ContiFilterBean.java
  36. 156 0
      sicura.business/src/bean/filters/DelegheSepaFilterBean.java
  37. 105 0
      sicura.business/src/bean/filters/DisposizioniFiltroBean.java
  38. 203 0
      sicura.business/src/bean/filters/DistinteFilterBean.java
  39. 77 0
      sicura.business/src/bean/filters/RicercaBancaFilterBean.java
  40. 328 0
      sicura.business/src/bean/filters/RicercaDisposizioniFilterBean.java
  41. 35 0
      sicura.business/src/bean/query/AggregatoAbiDelegaSepaQueryBean.java
  42. 232 0
      sicura.business/src/bean/query/CondizioniCtrlBean.java
  43. 77 0
      sicura.business/src/bean/query/DelegaSepaQueryBean.java
  44. 48 0
      sicura.business/src/bean/query/DelegheSepaExportBean.java
  45. 136 0
      sicura.business/src/bean/query/DestinatarioForPrinting.java
  46. 35 0
      sicura.business/src/bean/query/DisposizioniAeaDecoded.java
  47. 65 0
      sicura.business/src/bean/query/DisposizioniBonificiDecoded.java
  48. 164 0
      sicura.business/src/bean/query/DisposizioniRidExportBean.java
  49. 396 0
      sicura.business/src/bean/query/DistintaBancaBean.java
  50. 99 0
      sicura.business/src/bean/query/ServiceUIBean.java
  51. 44 0
      sicura.business/src/bean/query/TabellaFirmeBean.java
  52. 44 0
      sicura.business/src/bean/query/TabellaFlussiNonSedaBean.java
  53. 129 0
      sicura.business/src/dao/ApAbiDao.java
  54. 234 0
      sicura.business/src/dao/ApCabDao.java
  55. 51 0
      sicura.business/src/dao/CondizioniCtrlDAO.java
  56. 146 0
      sicura.business/src/dao/ContiDAO.java
  57. 215 0
      sicura.business/src/dao/ContiDestinatariDao.java
  58. 336 0
      sicura.business/src/dao/DelegheSepaDAO.java
  59. 458 0
      sicura.business/src/dao/DestinatariDao.java
  60. 1254 0
      sicura.business/src/dao/DisposizioneAeaDAO.java
  61. 2014 0
      sicura.business/src/dao/DisposizioniBonificiDAO.java
  62. 1086 0
      sicura.business/src/dao/DisposizioniRidDAO.java
  63. 1280 0
      sicura.business/src/dao/DistintaBancaDAO.java
  64. 156 0
      sicura.business/src/dao/DistintaFlussiInputDAO.java
  65. 151 0
      sicura.business/src/dao/DistintaFlussiInputNotSedaDAO.java
  66. 168 0
      sicura.business/src/dao/FirmaDao.java
  67. 222 0
      sicura.business/src/dao/FunzioniOrdinantiDAO.java
  68. 87 0
      sicura.business/src/dao/GenericComboDAO.java
  69. 191 0
      sicura.business/src/dao/IstruzioniEstrazioneDistinteBancaDAO.java
  70. 98 0
      sicura.business/src/dao/LogSicuraSchedulerDAO.java
  71. 109 0
      sicura.business/src/dao/LogVariazioniDAO.java
  72. 271 0
      sicura.business/src/dao/OrdinantiDao.java
  73. 162 0
      sicura.business/src/dao/ParamDAO.java
  74. 297 0
      sicura.business/src/dao/PianiEstrazioneDistinteBancaDAO.java
  75. 177 0
      sicura.business/src/dao/PianiEstrazioneTipoFlussoDao.java
  76. 30 0
      sicura.business/src/dao/ProvenienzaDAO.java
  77. 411 0
      sicura.business/src/dao/RemunerationDao.java
  78. 178 0
      sicura.business/src/dao/ServiceUIDAO.java
  79. 55 0
      sicura.business/src/dao/SicuraDAO.java
  80. 35 0
      sicura.business/src/dao/SicuraSQLServerDialectResolver.java
  81. 112 0
      sicura.business/src/dao/TipologiaDao.java
  82. 485 0
      sicura.business/src/dao/UserDAO.java
  83. 97 0
      sicura.business/src/dao/VdelegatoFirmaEstrattoreDistinteDao.java
  84. 26 0
      sicura.business/src/reportprovider/DisposizioniAeaProvider.java
  85. 25 0
      sicura.business/src/reportprovider/DisposizioniBonificiProvider.java
  86. 26 0
      sicura.business/src/reportprovider/DisposizioniRidProvider.java
  87. 27 0
      sicura.business/src/reportprovider/RendicontoSedaReportProvider.java
  88. 159 0
      sicura.business/src/utils/ColumnNamingStrategy.java
  89. 218 0
      sicura.business/src/utils/CommonFunctions.java
  90. 778 0
      sicura.business/src/utils/ConvalidaClass.java
  91. 178 0
      sicura.business/src/utils/DettaglioErrori.java
  92. 553 0
      sicura.business/src/utils/Formalismi.java
  93. 49 0
      sicura.business/src/utils/IBANScorporato.java
  94. 182 0
      sicura.business/src/utils/Rand.java
  95. 26 0
      sicura.entities/.classpath
  96. 6 0
      sicura.entities/.factorypath
  97. 2 0
      sicura.entities/.gitignore
  98. 48 0
      sicura.entities/.project
  99. 4 0
      sicura.entities/.settings/org.eclipse.core.resources.prefs
  100. 3 0
      sicura.entities/.settings/org.eclipse.jdt.apt.core.prefs

+ 26 - 0
sicura.business/.classpath

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="org.eclipse.jst.component.nondependency" value=""/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path=".apt_generated">
+		<attributes>
+			<attribute name="optional" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

+ 6 - 0
sicura.business/.factorypath

@@ -0,0 +1,6 @@
+<factorypath>
+    <factorypathentry kind="PLUGIN" id="com.ibm.jee.annotations.processor" enabled="true" runInBatchMode="false"/>
+    <factorypathentry kind="PLUGIN" id="com.ibm.etools.javaee.cdi.ext.ui" enabled="false" runInBatchMode="false"/>
+    <factorypathentry kind="PLUGIN" id="com.ibm.jaxrs.annotations.processor" enabled="false" runInBatchMode="false"/>
+    <factorypathentry kind="PLUGIN" id="org.eclipse.jst.ws.annotations.core" enabled="true" runInBatchMode="false"/>
+</factorypath>

+ 1 - 0
sicura.business/.gitignore

@@ -0,0 +1 @@
+/target/

+ 42 - 0
sicura.business/.project

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>sicura.business</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.hibernate.eclipse.console.hibernateBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.hibernate.eclipse.console.hibernateNature</nature>
+	</natures>
+</projectDescription>

+ 3 - 0
sicura.business/.settings/org.eclipse.core.resources.prefs

@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
+encoding/src=UTF-8

+ 3 - 0
sicura.business/.settings/org.eclipse.jdt.apt.core.prefs

@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=true
+org.eclipse.jdt.apt.reconcileEnabled=true

+ 17 - 0
sicura.business/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,17 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.processAnnotations=enabled
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8

+ 4 - 0
sicura.business/.settings/org.eclipse.m2e.core.prefs

@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

+ 6 - 0
sicura.business/.settings/org.eclipse.wst.common.component

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="sicura.business">
+        <wb-resource deploy-path="/" source-path="/src"/>
+        <wb-resource deploy-path="/" source-path="/.apt_generated"/>
+    </wb-module>
+</project-modules>

+ 5 - 0
sicura.business/.settings/org.eclipse.wst.common.project.facet.core.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <installed facet="jst.utility" version="1.0"/>
+  <installed facet="java" version="1.8"/>
+</faceted-project>

+ 2 - 0
sicura.business/.settings/org.eclipse.wst.validation.prefs

@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1

+ 3 - 0
sicura.business/.settings/org.hibernate.eclipse.console.prefs

@@ -0,0 +1,3 @@
+default.configuration=sicura.business
+eclipse.preferences.version=1
+hibernate3.enabled=true

+ 55 - 0
sicura.business/pom.xml

@@ -0,0 +1,55 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>sicura.business</groupId>
+  <artifactId>sicura.business</artifactId>
+  <version>0.0.1-SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <build>
+    <sourceDirectory>src</sourceDirectory>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.6.1</version>
+        <configuration>
+          <source>1.8</source>
+          <target>1.8</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  
+  <repositories>
+    <repository>
+        <id>spring-snapshots</id>
+        <name>Spring Snapshots</name>
+        <url>https://repo.spring.io/libs-snapshot</url>
+        <snapshots>
+            <enabled>true</enabled>
+        </snapshots>
+    </repository>
+</repositories>
+  
+  	<parent>
+    	<groupId>web-project</groupId>
+    	<artifactId>web-project</artifactId>
+    	<version>0.0.1-SNAPSHOT</version>
+  </parent>
+  
+  <dependencies>
+  	<dependency>
+  		<groupId>sicura.entities</groupId>
+  		<artifactId>sicura.entities</artifactId>
+  		<version>0.0.1-SNAPSHOT</version>
+  	</dependency>
+  	<dependency>
+  		<groupId>web.common</groupId>
+  		<artifactId>web.common</artifactId>
+  		<version>0.0.1-SNAPSHOT</version>
+  	</dependency>
+  	<dependency>
+        <groupId>org.springframework.ldap</groupId>
+        <artifactId>spring-ldap-core</artifactId>
+        <version>2.3.2.BUILD-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
+</project>

BIN
sicura.business/src.7z


+ 41 - 0
sicura.business/src/bean/AnnullaDistintaBean.java

@@ -0,0 +1,41 @@
+package bean;
+
+public class AnnullaDistintaBean {
+
+	private Integer id;
+	private Integer idDistintaBanca;
+	private String tipologia;
+	private boolean flagDanni;
+	private byte[] lastSaved;
+
+	public Integer getId() {
+		return id;
+	}
+	public void setId(Integer id) {
+		this.id = id;
+	}
+	public Integer getIdDistintaBanca() {
+		return idDistintaBanca;
+	}
+	public void setIdDistintaBanca(Integer idDistintaBanca) {
+		this.idDistintaBanca = idDistintaBanca;
+	}
+	public String getTipologia() {
+		return tipologia;
+	}
+	public void setTipologia(String tipologia) {
+		this.tipologia = tipologia;
+	}
+	public boolean isFlagDanni() {
+		return flagDanni;
+	}
+	public void setFlagDanni(boolean flagDanni) {
+		this.flagDanni = flagDanni;
+	}
+	public byte[] getLastSaved() {
+		return lastSaved;
+	}
+	public void setLastSaved(byte[] lastSaved) {
+		this.lastSaved = lastSaved;
+	}
+}

+ 366 - 0
sicura.business/src/bean/AppVariables.java

@@ -0,0 +1,366 @@
+package bean;
+
+import java.sql.Date;
+
+import org.joda.time.DateTime;
+
+public class AppVariables {
+
+	private String verGlogal;
+	private String verPrefissoXML;
+	private String verProvenienzaDisposizione;
+	private String verFunzioneOrdinante;
+	private String AuthenticationMode;
+	
+	private String userId;
+	private String guid;
+	private String denominazioneUtente;
+	private String codiceFiscaleUtente;
+	private String profiloLocale;
+	private String funzioneOrdinante;
+	private String codiceSocieta;
+	private String codiceFunzione;
+	private String userIDResponsabile1;
+	private String userIDResponsabile2;
+	private String emailResponsabile;
+	private Double importoLimiteFirma;
+	private DateTime decorrenzaPassword;
+	private Integer idOrdinante;
+	private String denominazioneOrdinante;
+	private boolean abilitaBonifici;
+	private boolean abilitaBonificiEsteri;
+	private boolean abilitaAEA;
+	private boolean abilitaAEA_Iban;
+	private boolean abilitaRID;
+	private boolean abilitaVisualizzazioneGlobaleDisposizioni;
+	private boolean abilitaAccessoAnagrafica;
+	private boolean abilitaApprovazioneMassiva;
+	private boolean bloccoModificaDisposizioni;
+	private boolean abilitaForzaturaSospeso;
+	private boolean delegheBancoPostaSuCircuitoBancario; 
+	private boolean abilitaCausale;
+	private boolean gestioneDatiContabili;
+	private boolean approvazioneAutomatica;
+	private boolean abilitaGiroconti;
+	private boolean abilitaCircuitoCassa;
+	private boolean abilitaCircuitoPoste;
+	private boolean delegheBancoPostaSuCircuitoBancari;
+	
+	
+	
+	public AppVariables() {
+		//Findomestic
+		 this.verGlogal = "Findomestic";
+		 verPrefissoXML = "FIN";
+		 verProvenienzaDisposizione = "Findomest";
+		 verFunzioneOrdinante = "FINDOM";
+		 AuthenticationMode = "SSO";		
+		 guid = "";
+	}
+
+	public String getVerGlogal() {
+		return verGlogal;
+	}
+
+	public void setVerGlogal(String verGlogal) {
+		this.verGlogal = verGlogal;
+	}
+
+	public String getVerPrefissoXML() {
+		return verPrefissoXML;
+	}
+
+	public void setVerPrefissoXML(String verPrefissoXML) {
+		this.verPrefissoXML = verPrefissoXML;
+	}
+
+	public String getVerProvenienzaDisposizione() {
+		return verProvenienzaDisposizione;
+	}
+
+	public void setVerProvenienzaDisposizione(String verProvenienzaDisposizione) {
+		this.verProvenienzaDisposizione = verProvenienzaDisposizione;
+	}
+
+	public String getVerFunzioneOrdinante() {
+		return verFunzioneOrdinante;
+	}
+
+	public void setVerFunzioneOrdinante(String verFunzioneOrdinante) {
+		this.verFunzioneOrdinante = verFunzioneOrdinante;
+	}
+
+	public String getAuthenticationMode() {
+		return AuthenticationMode;
+	}
+
+	public void setAuthenticationMode(String authenticationMode) {
+		AuthenticationMode = authenticationMode;
+	}
+
+	public String getGuid() {
+		return guid;
+	}
+
+	public void setGuid(String guid) {
+		this.guid = guid;
+	}
+
+	public String getDenominazioneUtente() {
+		return denominazioneUtente;
+	}
+
+	public void setDenominazioneUtente(String denominazioneUtente) {
+		this.denominazioneUtente = denominazioneUtente;
+	}
+
+	public String getCodiceFiscaleUtente() {
+		return codiceFiscaleUtente;
+	}
+
+	public void setCodiceFiscaleUtente(String codiceFiscaleUtente) {
+		this.codiceFiscaleUtente = codiceFiscaleUtente;
+	}
+
+	public String getProfiloLocale() {
+		return profiloLocale;
+	}
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+
+	public void setProfiloLocale(String profiloLocale) {
+		this.profiloLocale = profiloLocale;
+	}
+
+	public String getFunzioneOrdinante() {
+		return funzioneOrdinante;
+	}
+
+	public void setFunzioneOrdinante(String funzioneOrdinante) {
+		this.funzioneOrdinante = funzioneOrdinante;
+	}
+
+	public String getCodiceSocieta() {
+		return codiceSocieta;
+	}
+
+	public void setCodiceSocieta(String codiceSocieta) {
+		this.codiceSocieta = codiceSocieta;
+	}
+
+	public String getCodiceFunzione() {
+		return codiceFunzione;
+	}
+
+	public void setCodiceFunzione(String codiceFunzione) {
+		this.codiceFunzione = codiceFunzione;
+	}
+
+	public String getUserIDResponsabile1() {
+		return userIDResponsabile1;
+	}
+
+	public void setUserIDResponsabile1(String userIDResponsabile1) {
+		this.userIDResponsabile1 = userIDResponsabile1;
+	}
+
+	public String getUserIDResponsabile2() {
+		return userIDResponsabile2;
+	}
+
+	public void setUserIDResponsabile2(String userIDResponsabile2) {
+		this.userIDResponsabile2 = userIDResponsabile2;
+	}
+
+	public String getEmailResponsabile() {
+		return emailResponsabile;
+	}
+
+	public void setEmailResponsabile(String emailResponsabile) {
+		this.emailResponsabile = emailResponsabile;
+	}
+
+	public Double getImportoLimiteFirma() {
+		return importoLimiteFirma;
+	}
+
+	public void setImportoLimiteFirma(Double importoLimiteFirma) {
+		this.importoLimiteFirma = importoLimiteFirma;
+	}
+
+	public DateTime getDecorrenzaPassword() {
+		return decorrenzaPassword;
+	}
+
+	public void setDecorrenzaPassword(DateTime decorrenzaPassword) {
+		this.decorrenzaPassword = decorrenzaPassword;
+	}
+
+	public Integer getIdOrdinante() {
+		return idOrdinante;
+	}
+
+	public void setIdOrdinante(Integer idOrdinante) {
+		this.idOrdinante = idOrdinante;
+	}
+
+	public String getDenominazioneOrdinante() {
+		return denominazioneOrdinante;
+	}
+
+	public void setDenominazioneOrdinante(String denominazioneOrdinante) {
+		this.denominazioneOrdinante = denominazioneOrdinante;
+	}
+
+	public boolean isAbilitaBonifici() {
+		return abilitaBonifici;
+	}
+
+	public void setAbilitaBonifici(boolean abilitaBonifici) {
+		this.abilitaBonifici = abilitaBonifici;
+	}
+
+	public boolean isAbilitaBonificiEsteri() {
+		return abilitaBonificiEsteri;
+	}
+
+	public void setAbilitaBonificiEsteri(boolean abilitaBonificiEsteri) {
+		this.abilitaBonificiEsteri = abilitaBonificiEsteri;
+	}
+
+	public boolean isAbilitaAEA() {
+		return abilitaAEA;
+	}
+
+	public void setAbilitaAEA(boolean abilitaAEA) {
+		this.abilitaAEA = abilitaAEA;
+	}
+
+	public boolean isAbilitaAEA_Iban() {
+		return abilitaAEA_Iban;
+	}
+
+	public void setAbilitaAEA_Iban(boolean abilitaAEA_Iban) {
+		this.abilitaAEA_Iban = abilitaAEA_Iban;
+	}
+
+	public boolean isAbilitaRID() {
+		return abilitaRID;
+	}
+
+	public void setAbilitaRID(boolean abilitaRID) {
+		this.abilitaRID = abilitaRID;
+	}
+
+	public boolean isAbilitaVisualizzazioneGlobaleDisposizioni() {
+		return abilitaVisualizzazioneGlobaleDisposizioni;
+	}
+
+	public void setAbilitaVisualizzazioneGlobaleDisposizioni(boolean abilitaVisualizzazioneGlobaleDisposizioni) {
+		this.abilitaVisualizzazioneGlobaleDisposizioni = abilitaVisualizzazioneGlobaleDisposizioni;
+	}
+
+	public boolean isAbilitaAccessoAnagrafica() {
+		return abilitaAccessoAnagrafica;
+	}
+
+	public void setAbilitaAccessoAnagrafica(boolean abilitaAccessoAnagrafica) {
+		this.abilitaAccessoAnagrafica = abilitaAccessoAnagrafica;
+	}
+
+	public boolean isAbilitaApprovazioneMassiva() {
+		return abilitaApprovazioneMassiva;
+	}
+
+	public void setAbilitaApprovazioneMassiva(boolean abilitaApprovazioneMassiva) {
+		this.abilitaApprovazioneMassiva = abilitaApprovazioneMassiva;
+	}
+
+	public boolean isBloccoModificaDisposizioni() {
+		return bloccoModificaDisposizioni;
+	}
+
+	public void setBloccoModificaDisposizioni(boolean bloccoModificaDisposizioni) {
+		bloccoModificaDisposizioni = bloccoModificaDisposizioni;
+	}
+
+	public boolean isAbilitaForzaturaSospeso() {
+		return abilitaForzaturaSospeso;
+	}
+
+	public void setAbilitaForzaturaSospeso(boolean abilitaForzaturaSospeso) {
+		this.abilitaForzaturaSospeso = abilitaForzaturaSospeso;
+	}
+
+	public boolean isDelegheBancoPostaSuCircuitoBancario() {
+		return delegheBancoPostaSuCircuitoBancario;
+	}
+
+	public void setDelegheBancoPostaSuCircuitoBancario(boolean delegheBancoPostaSuCircuitoBancario) {
+		this.delegheBancoPostaSuCircuitoBancario = delegheBancoPostaSuCircuitoBancario;
+	}
+
+	public boolean isAbilitaCausale() {
+		return abilitaCausale;
+	}
+
+	public void setAbilitaCausale(boolean abilitaCausale) {
+		this.abilitaCausale = abilitaCausale;
+	}
+
+	public boolean isGestioneDatiContabili() {
+		return gestioneDatiContabili;
+	}
+
+	public void setGestioneDatiContabili(boolean gestioneDatiContabili) {
+		this.gestioneDatiContabili = gestioneDatiContabili;
+	}
+
+	public boolean isApprovazioneAutomatica() {
+		return approvazioneAutomatica;
+	}
+
+	public void setApprovazioneAutomatica(boolean approvazioneAutomatica) {
+		this.approvazioneAutomatica = approvazioneAutomatica;
+	}
+
+	public boolean isAbilitaGiroconti() {
+		return abilitaGiroconti;
+	}
+
+	public void setAbilitaGiroconti(boolean abilitaGiroconti) {
+		this.abilitaGiroconti = abilitaGiroconti;
+	}
+
+	public boolean isAbilitaCircuitoCassa() {
+		return abilitaCircuitoCassa;
+	}
+
+	public void setAbilitaCircuitoCassa(boolean abilitaCircuitoCassa) {
+		this.abilitaCircuitoCassa = abilitaCircuitoCassa;
+	}
+
+	public boolean isAbilitaCircuitoPoste() {
+		return abilitaCircuitoPoste;
+	}
+
+	public void setAbilitaCircuitoPoste(boolean abilitaCircuitoPoste) {
+		this.abilitaCircuitoPoste = abilitaCircuitoPoste;
+	}
+
+	public boolean isDelegheBancoPostaSuCircuitoBancari() {
+		return delegheBancoPostaSuCircuitoBancari;
+	}
+
+	public void setDelegheBancoPostaSuCircuitoBancari(boolean delegheBancoPostaSuCircuitoBancari) {
+		this.delegheBancoPostaSuCircuitoBancari = delegheBancoPostaSuCircuitoBancari;
+	}
+
+	
+}

+ 35 - 0
sicura.business/src/bean/BeanPostPianoEstrazione.java

@@ -0,0 +1,35 @@
+package bean;
+
+import java.util.List;
+
+import sicura.entities.IstruzioniEstrazioneDistinteBanca;
+import sicura.entities.PianiEstrazioneDistinteBanca;
+
+public class BeanPostPianoEstrazione {
+
+		private PianiEstrazioneDistinteBanca pianoEstrazione;
+		private List<IstruzioniEstrazioneDistinteBanca> istruzioni;
+		private List<Integer> istruzioniCancellate;
+		
+		public PianiEstrazioneDistinteBanca getPianoEstrazione() {
+			return pianoEstrazione;
+		}
+		
+		public void setPianoEstrazione(PianiEstrazioneDistinteBanca pianoEstrazione) {
+			this.pianoEstrazione = pianoEstrazione;
+		}
+		public List<IstruzioniEstrazioneDistinteBanca> getIstruzioni() {
+			return istruzioni;
+		}
+		public void setIstruzioni(List<IstruzioniEstrazioneDistinteBanca> istruzioni) {
+			this.istruzioni = istruzioni;
+		}
+
+		public List<Integer> getIstruzioniCancellate() {
+			return istruzioniCancellate;
+		}
+
+		public void setIstruzioniCancellate(List<Integer> istruzioniCancellate) {
+			this.istruzioniCancellate = istruzioniCancellate;
+		}
+}

+ 22 - 0
sicura.business/src/bean/BeanSelect.java

@@ -0,0 +1,22 @@
+package bean;
+
+public class BeanSelect {
+
+	private String codice;
+	private String descrizione;
+	public String getCodice() {
+		return codice;
+	}
+	public void setCodice(String codice) {
+		this.codice = codice;
+	}
+	public String getDescrizione() {
+		return descrizione;
+	}
+	public void setDescrizione(String descrizione) {
+		this.descrizione = descrizione;
+	}
+	
+	
+	
+}

+ 30 - 0
sicura.business/src/bean/CambioOrdinanteBean.java

@@ -0,0 +1,30 @@
+package bean;
+
+import java.util.List;
+
+public class CambioOrdinanteBean {
+
+	List<Integer> destinatari;
+	Integer ordinanteDestinazione;
+	Integer tipoCambio;
+	
+	public List<Integer> getDestinatari() {
+		return destinatari;
+	}
+	public void setDestinatari(List<Integer> destinatari) {
+		this.destinatari = destinatari;
+	}
+	public Integer getOrdinanteDestinazione() {
+		return ordinanteDestinazione;
+	}
+	public void setOrdinanteDestinazione(Integer ordinanteDestinazione) {
+		this.ordinanteDestinazione = ordinanteDestinazione;
+	}
+	public Integer getTipoCambio() {
+		return tipoCambio;
+	}
+	public void setTipoCambio(Integer tipoCambio) {
+		this.tipoCambio = tipoCambio;
+	}
+	
+}

+ 33 - 0
sicura.business/src/bean/DisposizioniBonificiBean.java

@@ -0,0 +1,33 @@
+package bean;
+
+import sicura.entities.DisposizioniBonifici;
+import sicura.entities.DistintaFlussiInput;
+
+public class DisposizioniBonificiBean  {
+
+	private DisposizioniBonifici disposizione;
+	private DistintaFlussiInput distintaFlussiInput;
+	
+	public DisposizioniBonificiBean(DisposizioniBonifici disposizione,DistintaFlussiInput distintaFlussiInput) {
+		this.disposizione = disposizione;
+		this.distintaFlussiInput = distintaFlussiInput;
+	}
+	
+	public DisposizioniBonifici getDisposizione() {
+		return disposizione;
+	}
+
+	public void setDisposizione(DisposizioniBonifici disposizione) {
+		this.disposizione = disposizione;
+	}
+
+	public DistintaFlussiInput getDistintaFlussiInput() {
+		return distintaFlussiInput;
+	}
+
+	public void setDistintaFlussiInput(DistintaFlussiInput distintaFlussiInput) {
+		this.distintaFlussiInput = distintaFlussiInput;
+	}
+	
+
+}

+ 22 - 0
sicura.business/src/bean/FileBean.java

@@ -0,0 +1,22 @@
+package bean;
+
+public class FileBean {
+
+	private String filename;
+	private byte[] bytes;
+	
+	public String getFilename() {
+		return filename;
+	}
+	public void setFilename(String filename) {
+		this.filename = filename;
+	}
+	public byte[] getBytes() {
+		return bytes;
+	}
+	public void setBytes(byte[] bytes) {
+		this.bytes = bytes;
+	}
+	
+	
+}

+ 68 - 0
sicura.business/src/bean/LogModificheBean.java

@@ -0,0 +1,68 @@
+package bean;
+
+import java.sql.Clob;
+import java.util.Date;
+
+public class LogModificheBean {
+
+	private Integer id;
+	private String userId;
+	private Date data;
+	private Date ora;
+	private String utente;
+	private String nomeCampo;
+	private String campoPreModifica;
+	private String campoPostModifica;
+	
+	public Integer getId() {
+		return id;
+	}
+	public void setId(Integer id) {
+		this.id = id;
+	}
+	public String getUserId() {
+		return userId;
+	}
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+	public Date getData() {
+		return data;
+	}
+	public void setData(Date data) {
+		this.data = data;
+	}
+	public Date getOra() {
+		return ora;
+	}
+	public void setOra(Date ora) {
+		this.ora = ora;
+	}
+	public String getUtente() {
+		return utente;
+	}
+	public void setUtente(String utente) {
+		this.utente = utente;
+	}
+	public String getCampoPreModifica() {
+		return campoPreModifica;
+	}
+	public void setCampoPreModifica(String campoPreModifica) {
+		this.campoPreModifica = campoPreModifica;
+	}
+	public String getCampoPostModifica() {
+		return campoPostModifica;
+	}
+	public void setCampoPostModifica(String campoPostModifica) {
+		this.campoPostModifica = campoPostModifica;
+	}
+	public String getNomeCampo() {
+		return nomeCampo;
+	}
+	public void setNomeCampo(String nomeCampo) {
+		this.nomeCampo = nomeCampo;
+	}
+
+
+
+}

+ 64 - 0
sicura.business/src/bean/LogServizioBean.java

@@ -0,0 +1,64 @@
+package bean;
+
+import java.util.Date;
+
+public class LogServizioBean {
+
+	private Integer id;
+	private Date dataAcquisizione;
+	private String tipoAcquisizione;
+	private String esito;
+	private String descrizioneEsito;
+	private String inputFile;
+	private String backupFile;
+	private String logServizio;
+	
+	public Integer getId() {
+		return id;
+	}
+	public void setId(Integer id) {
+		this.id = id;
+	}
+	public Date getDataAcquisizione() {
+		return dataAcquisizione;
+	}
+	public void setDataAcquisizione(Date dataAcquisizione) {
+		this.dataAcquisizione = dataAcquisizione;
+	}
+	public String getTipoAcquisizione() {
+		return tipoAcquisizione;
+	}
+	public void setTipoAcquisizione(String tipoAcquisizione) {
+		this.tipoAcquisizione = tipoAcquisizione;
+	}
+	public String getEsito() {
+		return esito;
+	}
+	public void setEsito(String esito) {
+		this.esito = esito;
+	}
+	public String getDescrizioneEsito() {
+		return descrizioneEsito;
+	}
+	public void setDescrizioneEsito(String descrizioneEsito) {
+		this.descrizioneEsito = descrizioneEsito;
+	}
+	public String getInputFile() {
+		return inputFile;
+	}
+	public void setInputFile(String inputFile) {
+		this.inputFile = inputFile;
+	}
+	public String getBackupFile() {
+		return backupFile;
+	}
+	public void setBackupFile(String backupFile) {
+		this.backupFile = backupFile;
+	}
+	public String getLogServizio() {
+		return logServizio;
+	}
+	public void setLogServizio(String logServizio) {
+		this.logServizio = logServizio;
+	}
+}

+ 36 - 0
sicura.business/src/bean/LogVariazioniBean.java

@@ -0,0 +1,36 @@
+package bean;
+
+import java.util.Date;
+
+public class LogVariazioniBean {
+
+	private String fieldName;
+	private String oldValue;
+	private String newValue;
+	private Date timestamp;
+	
+	public String getFieldName() {
+		return fieldName;
+	}
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+	public String getOldValue() {
+		return oldValue;
+	}
+	public void setOldValue(String oldValue) {
+		this.oldValue = oldValue;
+	}
+	public String getNewValue() {
+		return newValue;
+	}
+	public void setNewValue(String newValue) {
+		this.newValue = newValue;
+	}
+	public Date getTimestamp() {
+		return timestamp;
+	}
+	public void setTimestamp(Date timestamp) {
+		this.timestamp = timestamp;
+	}
+}

+ 34 - 0
sicura.business/src/bean/ModificaContoDistintaBean.java

@@ -0,0 +1,34 @@
+package bean;
+
+public class ModificaContoDistintaBean {
+
+	private Integer idDistintaBanca;
+	private Integer idContoOrdinante;
+	private String tipologia;
+	private byte[] lastSaved;
+	
+	public Integer getIdDistintaBanca() {
+		return idDistintaBanca;
+	}
+	public void setIdDistintaBanca(Integer idDistintaBanca) {
+		this.idDistintaBanca = idDistintaBanca;
+	}
+	public Integer getIdContoOrdinante() {
+		return idContoOrdinante;
+	}
+	public void setIdContoOrdinante(Integer idContoOrdinante) {
+		this.idContoOrdinante = idContoOrdinante;
+	}
+	public String getTipologia() {
+		return tipologia;
+	}
+	public void setTipologia(String tipologia) {
+		this.tipologia = tipologia;
+	}
+	public byte[] getLastSaved() {
+		return lastSaved;
+	}
+	public void setLastSaved(byte[] lastSaved) {
+		this.lastSaved = lastSaved;
+	}
+}

+ 35 - 0
sicura.business/src/bean/ModificaDataDisposizioneBean.java

@@ -0,0 +1,35 @@
+package bean;
+
+import java.util.Date;
+
+public class ModificaDataDisposizioneBean {
+
+	private Integer idDistintaBanca;
+	private String tipologia;
+	private Date data;
+	private byte[] lastSaved;
+	public Integer getIdDistintaBanca() {
+		return idDistintaBanca;
+	}
+	public void setIdDistintaBanca(Integer idDistintaBanca) {
+		this.idDistintaBanca = idDistintaBanca;
+	}
+	public String getTipologia() {
+		return tipologia;
+	}
+	public void setTipologia(String tipologia) {
+		this.tipologia = tipologia;
+	}
+	public Date getData() {
+		return data;
+	}
+	public void setData(Date dataValuta) {
+		this.data = dataValuta;
+	}
+	public byte[] getLastSaved() {
+		return lastSaved;
+	}
+	public void setLastSaved(byte[] lastSaved) {
+		this.lastSaved = lastSaved;
+	}
+}

+ 39 - 0
sicura.business/src/bean/MotivazioneRichiamoBean.java

@@ -0,0 +1,39 @@
+package bean;
+
+import java.util.Date;
+
+public class MotivazioneRichiamoBean {
+
+	private Integer idMotivazione;
+	private String altraMotivazione;
+	private String luogo;
+	private Date data;
+	public Integer getIdMotivazione() {
+		return idMotivazione;
+	}
+	public void setIdMotivazione(Integer idMotivazione) {
+		this.idMotivazione = idMotivazione;
+	}
+	public String getAltraMotivazione() {
+		return altraMotivazione;
+	}
+	public void setAltraMotivazione(String altraMotivazione) {
+		this.altraMotivazione = altraMotivazione;
+	}
+	public String getLuogo() {
+		return luogo;
+	}
+	public void setLuogo(String luogo) {
+		this.luogo = luogo;
+	}
+	public Date getData() {
+		return data;
+	}
+	public void setData(Date data) {
+		this.data = data;
+	}
+	
+
+	
+	
+}

+ 47 - 0
sicura.business/src/bean/ParamBean.java

@@ -0,0 +1,47 @@
+package bean;
+
+public class ParamBean {
+	private String pathLocale;
+	private String pathExportTASC;
+	private String pathExportRemunerationSEDA;
+	private String emailAlert;
+	private String emailToServiceWithLogErrori;
+	private Integer oreGiacenzaDistEmesse;
+	
+	public String getPathLocale() {
+		return pathLocale;
+	}
+	public void setPathLocale(String pathLocale) {
+		this.pathLocale = pathLocale;
+	}
+	public String getPathExportTASC() {
+		return pathExportTASC;
+	}
+	public void setPathExportTASC(String pathExportTASC) {
+		this.pathExportTASC = pathExportTASC;
+	}
+	public String getPathExportRemunerationSEDA() {
+		return pathExportRemunerationSEDA;
+	}
+	public void setPathExportRemunerationSEDA(String pathExportRemunerationSEDA) {
+		this.pathExportRemunerationSEDA = pathExportRemunerationSEDA;
+	}
+	public String getEmailAlert() {
+		return emailAlert;
+	}
+	public void setEmailAlert(String emailAlert) {
+		this.emailAlert = emailAlert;
+	}
+	public String getEmailToServiceWithLogErrori() {
+		return emailToServiceWithLogErrori;
+	}
+	public void setEmailToServiceWithLogErrori(String emailToServiceWithLogErrori) {
+		this.emailToServiceWithLogErrori = emailToServiceWithLogErrori;
+	}
+	public Integer getOreGiacenzaDistEmesse() {
+		return oreGiacenzaDistEmesse;
+	}
+	public void setOreGiacenzaDistEmesse(Integer oreGiacenzaDistEmesse) {
+		this.oreGiacenzaDistEmesse = oreGiacenzaDistEmesse;
+	}
+}

+ 26 - 0
sicura.business/src/bean/PianoEsecuzioneOpzioniBean.java

@@ -0,0 +1,26 @@
+package bean;
+
+import java.util.List;
+
+import sicura.entities.PianiEstrazioneDistinteBancaTipoFlusso;
+
+public class PianoEsecuzioneOpzioniBean {
+	private List<PianiEstrazioneDistinteBancaTipoFlusso> opzioni;
+	private List<Integer> idCancellati;
+	public List<PianiEstrazioneDistinteBancaTipoFlusso> getOpzioni() {
+		return opzioni;
+	}
+	public void setOpzioni(List<PianiEstrazioneDistinteBancaTipoFlusso> opzioni) {
+		this.opzioni = opzioni;
+	}
+	public List<Integer> getIdCancellati() {
+		return idCancellati;
+	}
+	public void setIdCancellati(List<Integer> idCancellati) {
+		this.idCancellati = idCancellati;
+	}
+	
+	
+	
+	
+}

+ 40 - 0
sicura.business/src/bean/PianoEstrattoreDistinte.java

@@ -0,0 +1,40 @@
+package bean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import sicura.entities.IstruzioniEstrazioneDistinteBanca;
+import sicura.entities.PianiEstrazioneDistinteBanca;
+
+public class PianoEstrattoreDistinte {
+
+	private PianiEstrazioneDistinteBanca piano;
+	private List<IstruzioniEstrazioneDistinteBanca> istruzioni;
+	
+	public PianoEstrattoreDistinte() {
+		piano = null;
+		istruzioni = new ArrayList<IstruzioniEstrazioneDistinteBanca>();
+	}
+	
+	public void addIstruzione(IstruzioniEstrazioneDistinteBanca istruzione) {
+		istruzioni.add(istruzione);
+	}
+
+	public PianiEstrazioneDistinteBanca getPiano() {
+		return piano;
+	}
+
+	public void setPiano(PianiEstrazioneDistinteBanca piano) {
+		this.piano = piano;
+	}
+
+	public List<IstruzioniEstrazioneDistinteBanca> getIstruzioni() {
+		return istruzioni;
+	}
+
+	public void setIstruzioni(List<IstruzioniEstrazioneDistinteBanca> istruzioni) {
+		this.istruzioni = istruzioni;
+	}
+
+	
+}

+ 20 - 0
sicura.business/src/bean/SecurityLogUserBean.java

@@ -0,0 +1,20 @@
+package bean;
+
+public class SecurityLogUserBean {
+
+	private String mode;
+	private String description;
+	
+	public String getMode() {
+		return mode;
+	}
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+	public String getDescription() {
+		return description;
+	}
+	public void setDescription(String description) {
+		this.description = description;
+	}
+}

+ 13 - 0
sicura.business/src/bean/StoredProcResult.java

@@ -0,0 +1,13 @@
+package bean;
+
+public class StoredProcResult {
+    public int retVal;
+
+    public int getRetVal() {
+        return retVal;
+    }
+
+    public void setRetVal(int retVal) {
+        this.retVal = retVal;
+    }
+}

+ 22 - 0
sicura.business/src/bean/UserInfoBean.java

@@ -0,0 +1,22 @@
+package bean;
+
+import java.util.List;
+
+public class UserInfoBean {
+
+	private String login;
+	private List<UserRoleBean> gruppi;
+	
+	public String getLogin() {
+		return login;
+	}
+	public void setLogin(String login) {
+		this.login = login;
+	}
+	public List<UserRoleBean> getGruppi() {
+		return gruppi;
+	}
+	public void setGruppi(List<UserRoleBean> gruppi) {
+		this.gruppi = gruppi;
+	}
+}

+ 24 - 0
sicura.business/src/bean/UserRoleBean.java

@@ -0,0 +1,24 @@
+package bean;
+
+public class UserRoleBean {
+	private String code;
+	private String description;
+	public String getCode() {
+		return code;
+	}
+	public void setCode(String code) {
+		this.code = code;
+	}
+	public String getDescription() {
+		return description;
+	}
+	public void setDescription(String description) {
+		this.description = description;
+	}
+	
+	public UserRoleBean(String code, String description) {
+		this.code = code;
+		this.description = description;
+	}
+	
+}

+ 41 - 0
sicura.business/src/bean/filters/ContiFilterBean.java

@@ -0,0 +1,41 @@
+package bean.filters;
+
+public class ContiFilterBean {
+	private String inFunzioneOrdinante;
+	private Boolean inBancaAllineamento;
+	private Boolean inEstrattoreDistinteBanca;
+	private Boolean inOnlyContiCassa;
+	private Boolean inOnlyContiBancoPosta;
+	
+	public String getInFunzioneOrdinante() {
+		return inFunzioneOrdinante;
+	}
+	public void setInFunzioneOrdinante(String inFunzioneOrdinante) {
+		this.inFunzioneOrdinante = inFunzioneOrdinante;
+	}
+	public Boolean getInBancaAllineamento() {
+		return inBancaAllineamento;
+	}
+	public void setInBancaAllineamento(Boolean inBancaAllineamento) {
+		this.inBancaAllineamento = inBancaAllineamento;
+	}
+	public Boolean getInEstrattoreDistinteBanca() {
+		return inEstrattoreDistinteBanca;
+	}
+	public void setInEstrattoreDistinteBanca(Boolean inEstrattoreDistinteBanca) {
+		this.inEstrattoreDistinteBanca = inEstrattoreDistinteBanca;
+	}
+	public Boolean getInOnlyContiCassa() {
+		return inOnlyContiCassa;
+	}
+	public void setInOnlyContiCassa(Boolean inOnlyContiCassa) {
+		this.inOnlyContiCassa = inOnlyContiCassa;
+	}
+	public Boolean getInOnlyContiBancoPosta() {
+		return inOnlyContiBancoPosta;
+	}
+	public void setInOnlyContiBancoPosta(Boolean inOnlyContiBancoPosta) {
+		this.inOnlyContiBancoPosta = inOnlyContiBancoPosta;
+	}
+	
+}

+ 156 - 0
sicura.business/src/bean/filters/DelegheSepaFilterBean.java

@@ -0,0 +1,156 @@
+package bean.filters;
+
+import java.util.Date;
+
+public class DelegheSepaFilterBean {
+	
+	private String  Abi;
+	private Integer count;
+	private Integer numeroMandati;
+	private String  statoAllineamento;
+	
+	private String tipo;
+	private String statoDelega;
+	private boolean cbDaDataApertura;
+	private Date daDataApertura;
+	private boolean cbADataApertura;
+	private Date aDataApertura;
+	private boolean cbDaDataChiusura;
+	private Date daDataChiusura;
+	private boolean cbADataChiusura;
+	private Date aDataChiusura;
+	private String codiceDelega;
+	private boolean aggregazioneABI;
+	private String codiceAbi;
+	private String codiceDestinatario;
+	private String codiceClienteDebitore;
+	private Integer idOrdinante;
+
+	public String getAbi() {
+		return Abi;
+	}
+	public void setAbi(String abi) {
+		Abi = abi;
+	}
+	public Integer getCount() {
+		return count;
+	}
+	public void setCount(Integer count) {
+		this.count = count;
+	}
+	public Integer getNumeroMandati() {
+		return numeroMandati;
+	}
+	public void setNumeroMandati(Integer numeroMandati) {
+		this.numeroMandati = numeroMandati;
+	}
+	public String getStatoAllineamento() {
+		return statoAllineamento;
+	}
+	public void setStatoAllineamento(String statoAllineamento) {
+		this.statoAllineamento = statoAllineamento;
+	}
+
+	
+	public String getTipo() {
+		return tipo;
+	}
+	public void setTipo(String tipo) {
+		this.tipo = tipo;
+	}
+	public String getStatoDelega() {
+		return statoDelega;
+	}
+	public void setStatoDelega(String statoDelega) {
+		this.statoDelega = statoDelega;
+	}
+	public Date getDaDataApertura() {
+		return daDataApertura;
+	}
+	public void setDaDataApertura(Date daDataApertura) {
+		if (daDataApertura!=null)
+		this.daDataApertura = (Date)daDataApertura;
+	}
+	public Date getaDataApertura() {
+		return aDataApertura;
+	}
+	public void setaDataApertura(Date aDataApertura) {
+		if (aDataApertura!=null)
+		this.aDataApertura = (Date) aDataApertura;
+	}
+	public Date getDaDataChiusura() {
+		return daDataChiusura;
+	}
+	public void setDaDataChiusura(Date daDataChiusura) {
+		if (daDataChiusura!=null)
+			this.daDataChiusura = (Date) daDataChiusura;
+	}
+	public Date getaDataChiusura() {
+		return aDataChiusura;
+	}
+	public void setaDataChiusura(Date aDataChiusura) {
+		if (aDataChiusura!=null)
+			this.aDataChiusura = (Date) aDataChiusura;
+	}
+	public String getCodiceDelega() {
+		return codiceDelega;
+	}
+	public void setCodiceDelega(String codiceDelega) {
+		this.codiceDelega = codiceDelega;
+	}
+	public boolean isAggregazioneABI() {
+		return aggregazioneABI;
+	}
+	public void setAggregazioneABI(boolean aggregazioneABI) {
+		this.aggregazioneABI = aggregazioneABI;
+	}
+	public String getCodiceAbi() {
+		return codiceAbi;
+	}
+	public void setCodiceAbi(String codiceAbi) {
+		this.codiceAbi = codiceAbi;
+	}
+	public String getCodiceDestinatario() {
+		return codiceDestinatario;
+	}
+	public void setCodiceDestinatario(String codiceDestinatario) {
+		this.codiceDestinatario = codiceDestinatario;
+	}
+	public String getCodiceClienteDebitore() {
+		return codiceClienteDebitore;
+	}
+	public void setCodiceClienteDebitore(String codiceClienteDebitore) {
+		this.codiceClienteDebitore = codiceClienteDebitore;
+	}
+	public boolean isCbDaDataApertura() {
+		return cbDaDataApertura;
+	}
+	public void setCbDaDataApertura(boolean cbDaDataApertura) {
+		this.cbDaDataApertura = cbDaDataApertura;
+	}
+	public boolean isCbADataApertura() {
+		return cbADataApertura;
+	}
+	public void setCbADataApertura(boolean cbADataApertura) {
+		this.cbADataApertura = cbADataApertura;
+	}
+	public boolean isCbDaDataChiusura() {
+		return cbDaDataChiusura;
+	}
+	public void setCbDaDataChiusura(boolean cbDaDataChiusura) {
+		this.cbDaDataChiusura = cbDaDataChiusura;
+	}
+	public boolean isCbADataChiusura() {
+		return cbADataChiusura;
+	}
+	public void setCbADataChiusura(boolean cbADataChiusura) {
+		this.cbADataChiusura = cbADataChiusura;
+	}
+	public Integer getIdOrdinante() {
+		return idOrdinante;
+	}
+	public void setIdOrdinante(Integer idOrdinante) {
+		this.idOrdinante = idOrdinante;
+	}
+	
+}

+ 105 - 0
sicura.business/src/bean/filters/DisposizioniFiltroBean.java

@@ -0,0 +1,105 @@
+package bean.filters;
+
+public class DisposizioniFiltroBean {
+	private String orderField;
+	private String destinatario;
+	private String idFunzioneOrdinante;
+	private String statoConvalida;
+	private String statoDisposizioni;
+	private String importo;
+	private String tipoChiamata;
+	private Integer idDistintaBanca;
+	private Integer idDistintaFlusso;
+	private Double importoDistinta;
+	private String userIdFirmatario1;
+	private Boolean inErrore;
+	private String codiceClienteDebitore;
+	private Integer[] selectedIds;
+	
+	public String getOrderField() {
+		return orderField;
+	}
+	public void setOrderField(String orderField) {
+		this.orderField = orderField;
+	}
+	public String getDestinatario() {
+		return destinatario;
+	}
+	public void setDestinatario(String destinatario) {
+		this.destinatario = destinatario;
+	}
+	
+	public String getIdFunzioneOrdinante() {
+		return idFunzioneOrdinante;
+	}
+	public void setIdFunzioneOrdinante(String idFunzioneOrdinante) {
+		this.idFunzioneOrdinante = idFunzioneOrdinante;
+	}
+	public String getStatoConvalida() {
+		return statoConvalida;
+	}
+	public void setStatoConvalida(String statoConvalida) {
+		this.statoConvalida = statoConvalida;
+	}
+	public String getStatoDisposizioni() {
+		return statoDisposizioni;
+	}
+	public void setStatoDisposizioni(String statoDisposizioni) {
+		this.statoDisposizioni = statoDisposizioni;
+	}
+	public String getImporto() {
+		return importo;
+	}
+	public void setImporto(String importo) {
+		this.importo = importo;
+	}
+	public String getTipoChiamata() {
+		return tipoChiamata;
+	}
+	public void setTipoChiamata(String tipoChiamata) {
+		this.tipoChiamata = tipoChiamata;
+	}
+	public Integer getIdDistintaBanca() {
+		return idDistintaBanca;
+	}
+	public void setIdDistintaBanca(Integer idDistintaBanca) {
+		this.idDistintaBanca = idDistintaBanca;
+	}
+	public Integer getIdDistintaFlusso() {
+		return idDistintaFlusso;
+	}
+	public void setIdDistintaFlusso(Integer idDistintaFlusso) {
+		this.idDistintaFlusso = idDistintaFlusso;
+	}
+	public Double getImportoDistinta() {
+		return importoDistinta;
+	}
+	public void setImportoDistinta(Double importoDistinta) {
+		this.importoDistinta = importoDistinta;
+	}
+	public String getUserIdFirmatario1() {
+		return userIdFirmatario1;
+	}
+	public void setUserIdFirmatario1(String userIdFirmatario1) {
+		this.userIdFirmatario1 = userIdFirmatario1;
+	}
+	public Boolean getInErrore() {
+		return inErrore;
+	}
+	public void setInErrore(Boolean inErrore) {
+		this.inErrore = inErrore;
+	}
+	public String getCodiceClienteDebitore() {
+		return codiceClienteDebitore;
+	}
+	public void setCodiceClienteDebitore(String codiceClienteDebitore) {
+		this.codiceClienteDebitore = codiceClienteDebitore;
+	}
+	public Integer[] getSelectedIds() {
+		return selectedIds;
+	}
+	public void setSelectedIds(Integer[] selectedIds) {
+		this.selectedIds = selectedIds;
+	}
+	
+}

+ 203 - 0
sicura.business/src/bean/filters/DistinteFilterBean.java

@@ -0,0 +1,203 @@
+package bean.filters;
+
+import java.util.Date;
+
+public class DistinteFilterBean {
+	private String provenienza;
+	private Boolean vistaGenerale;
+	private Boolean sdd;
+	private Boolean sdd_esteri;
+	private Boolean seda;
+	private Boolean sct;
+	private Boolean dom;
+	private Boolean sct_int;
+	private Boolean sct_inps;
+	private Boolean assegni;
+	private Boolean sct_esteri;
+	private String daImporto;
+	private String aImporto;
+	private Boolean flagAbilitaDaDataCreazione;
+	private Boolean flagAbilitaADataCreazione;
+	private Date daDataCreazione;
+	private Date aDataCreazione;
+
+	private Boolean flagAbilitaDaDataValuta;
+	private Boolean flagAbilitaADataValuta;
+	private Date daDataValuta;
+	private Date aDataValuta;
+
+	private String nomeSupportoCBI;
+	private String daDistinta;
+	private String aDistinta;
+	private String contoOrdinante;
+	private String statoDisposizione;
+	
+	private String orderField;
+	
+	
+	public String getProvenienza() {
+		return provenienza;
+	}
+	public void setProvenienza(String provenienza) {
+		this.provenienza = provenienza;
+	}
+	public Boolean getVistaGenerale() {
+		return vistaGenerale;
+	}
+	public void setVistaGenerale(Boolean vistaGenerale) {
+		this.vistaGenerale = vistaGenerale;
+	}
+	public Boolean getSdd() {
+		return sdd;
+	}
+	public void setSdd(Boolean sdd) {
+		this.sdd = sdd;
+	}
+	public Boolean getSeda() {
+		return seda;
+	}
+	public void setSeda(Boolean seda) {
+		this.seda = seda;
+	}
+	public Boolean getSct() {
+		return sct;
+	}
+	public void setSct(Boolean sct) {
+		this.sct = sct;
+	}
+	public Boolean getAssegni() {
+		return assegni;
+	}
+	public void setAssegni(Boolean assegni) {
+		this.assegni = assegni;
+	}
+	public String getOrderField() {
+		return orderField;
+	}
+	public void setOrderField(String orderField) {
+		this.orderField = orderField;
+	}
+	public Boolean getDom() {
+		return dom;
+	}
+	public void setDom(Boolean dom) {
+		this.dom = dom;
+	}
+	public Boolean getSct_int() {
+		return sct_int;
+	}
+	public void setSct_int(Boolean sct_int) {
+		this.sct_int = sct_int;
+	}
+	public Boolean getSct_inps() {
+		return sct_inps;
+	}
+	public void setSct_inps(Boolean sct_inps) {
+		this.sct_inps = sct_inps;
+	}
+	public Boolean getSct_esteri() {
+		return sct_esteri;
+	}
+	public void setSct_esteri(Boolean sct_esteri) {
+		this.sct_esteri = sct_esteri;
+	}
+	public String getDaImporto() {
+		return daImporto;
+	}
+	public void setDaImporto(String daImporto) {
+		this.daImporto = daImporto;
+	}
+	public String getaImporto() {
+		return aImporto;
+	}
+	public void setaImporto(String aImporto) {
+		this.aImporto = aImporto;
+	}
+	public Boolean getFlagAbilitaDaDataCreazione() {
+		return flagAbilitaDaDataCreazione;
+	}
+	public void setFlagAbilitaDaDataCreazione(Boolean flagAbilitaDaDataCreazione) {
+		this.flagAbilitaDaDataCreazione = flagAbilitaDaDataCreazione;
+	}
+	public Boolean getFlagAbilitaADataCreazione() {
+		return flagAbilitaADataCreazione;
+	}
+	public void setFlagAbilitaADataCreazione(Boolean flagAbilitaADataCreazione) {
+		this.flagAbilitaADataCreazione = flagAbilitaADataCreazione;
+	}
+	public Date getDaDataCreazione() {
+		return daDataCreazione;
+	}
+	public void setDaDataCreazione(Date daDataCreazione) {
+		this.daDataCreazione = daDataCreazione;
+	}
+	public Date getaDataCreazione() {
+		return aDataCreazione;
+	}
+	public void setaDataCreazione(Date aDataCreazione) {
+		this.aDataCreazione = aDataCreazione;
+	}
+	public Boolean getFlagAbilitaDaDataValuta() {
+		return flagAbilitaDaDataValuta;
+	}
+	public void setFlagAbilitaDaDataValuta(Boolean flagAbilitaDaValuta) {
+		this.flagAbilitaDaDataValuta = flagAbilitaDaValuta;
+	}
+	public Boolean getFlagAbilitaADataValuta() {
+		return flagAbilitaADataValuta;
+	}
+	public void setFlagAbilitaADataValuta(Boolean flagAbilitaAValuta) {
+		this.flagAbilitaADataValuta = flagAbilitaAValuta;
+	}
+	public Date getDaDataValuta() {
+		return daDataValuta;
+	}
+	public void setDaDataValuta(Date daDataValuta) {
+		this.daDataValuta = daDataValuta;
+	}
+	public Date getaDataValuta() {
+		return aDataValuta;
+	}
+	public void setaDataValuta(Date aDataValuta) {
+		this.aDataValuta = aDataValuta;
+	}
+	public String getNomeSupportoCBI() {
+		return nomeSupportoCBI;
+	}
+	public void setNomeSupportoCBI(String nomeSupportoCBI) {
+		this.nomeSupportoCBI = nomeSupportoCBI;
+	}
+	public String getDaDistinta() {
+		return daDistinta;
+	}
+	public void setDaDistinta(String daDistinta) {
+		this.daDistinta = daDistinta;
+	}
+	public String getaDistinta() {
+		return aDistinta;
+	}
+	public void setaDistinta(String aDistinta) {
+		this.aDistinta = aDistinta;
+	}
+	public String getContoOrdinante() {
+		return contoOrdinante;
+	}
+	public void setContoOrdinante(String contoOrdinante) {
+		this.contoOrdinante = contoOrdinante;
+	}
+	public String getStatoDisposizione() {
+		return statoDisposizione;
+	}
+	public void setStatoDisposizione(String statoDisposizione) {
+		this.statoDisposizione = statoDisposizione;
+	}
+	public Boolean getSdd_esteri() {
+		return sdd_esteri;
+	}
+	public void setSdd_esteri(Boolean sdd_esteri) {
+		this.sdd_esteri = sdd_esteri;
+	}
+
+	
+	
+}

+ 77 - 0
sicura.business/src/bean/filters/RicercaBancaFilterBean.java

@@ -0,0 +1,77 @@
+package bean.filters;
+
+public class RicercaBancaFilterBean {
+	private String abi;
+	private String cab;
+	private String bic;
+	private String agenzia;
+	private String indirizzo;
+	private String localita;
+	private String comune;
+	private String provincia;
+	private String cap;
+	private Integer tipoRicerca;
+	
+	public String getAbi() {
+		return abi;
+	}
+	public void setAbi(String abi) {
+		this.abi = abi;
+	}
+	public String getCab() {
+		return cab;
+	}
+	public void setCab(String cab) {
+		this.cab = cab;
+	}
+	public String getBic() {
+		return bic;
+	}
+	public void setBic(String bic) {
+		this.bic = bic;
+	}
+	public String getAgenzia() {
+		return agenzia;
+	}
+	public void setAgenzia(String agenzia) {
+		this.agenzia = agenzia;
+	}
+	public String getIndirizzo() {
+		return indirizzo;
+	}
+	public void setIndirizzo(String indirizzo) {
+		this.indirizzo = indirizzo;
+	}
+	public String getLocalita() {
+		return localita;
+	}
+	public void setLocalita(String localita) {
+		this.localita = localita;
+	}
+	public String getComune() {
+		return comune;
+	}
+	public void setComune(String comune) {
+		this.comune = comune;
+	}
+	public String getProvincia() {
+		return provincia;
+	}
+	public void setProvincia(String provincia) {
+		this.provincia = provincia;
+	}
+	public String getCap() {
+		return cap;
+	}
+	public void setCap(String cap) {
+		this.cap = cap;
+	}
+	public Integer getTipoRicerca() {
+		return tipoRicerca;
+	}
+	public void setTipoRicerca(Integer tipoRicerca) {
+		this.tipoRicerca = tipoRicerca;
+	}
+	
+	
+}

+ 328 - 0
sicura.business/src/bean/filters/RicercaDisposizioniFilterBean.java

@@ -0,0 +1,328 @@
+package bean.filters;
+
+import java.util.Date;
+
+public class RicercaDisposizioniFilterBean {
+
+	private String funzioneOrdinante;
+	private String tipoDisposizione;
+	private String statoConvalida;
+	private String provenienza;
+	private String statoDisposizione;
+	private String daDistinta;
+	private String aDistinta;
+	private Boolean flagDaDataInserimento;
+	private Date daDataInserimento;
+	private Boolean flagADataInserimento;
+	private Date aDataInserimento;
+	private String destinatario;
+	private String codiceFiscale;
+	private String codiceDestinatario;
+	private String causaleMovimento;
+	private String idFunzione;
+	private String idUnivoco;
+	private Boolean flagDaValutaBeneficiario;
+	private Date daValutaBeneficiario;
+	private Boolean flagAValutaBeneficiario;
+	private Date aValutaBeneficiario;
+	private String daImporto;
+	private String aImporto;
+	private String idEndToEnd;
+	private String numeroPolizza;
+	private String abiOrdinante;
+	private String cabOrdinante;
+	private String contoOrdinante;
+	private String abiDestinatario;
+	private String cabDestinatario;
+	private String contoDestinatario;
+	private Boolean flagDaDataRicezioneEsito;
+	private Date daDataRicezioneEsito;
+	private Boolean flagADataRicezioneEsito;
+	private Date aDataRicezioneEsito;
+	private Boolean flagDaDataEsecuzioneBanca;
+	private Date daDataEsecuzioneBanca;
+	private Boolean flagADataEsecuzioneBanca;
+	private Date aDataEsecuzioneBanca;
+	private String esitoDisposizione;
+	private String idSDD;
+	private String causaleStorno;
+	private String trnBonificoSCT;
+	private String numeroAssegno;
+	private Integer[] selectedIds;
+	
+	
+	
+	public String getFunzioneOrdinante() {
+		return funzioneOrdinante;
+	}
+	public void setFunzioneOrdinante(String funzioneOrdinante) {
+		this.funzioneOrdinante = funzioneOrdinante;
+	}
+	public String getTipoDisposizione() {
+		return tipoDisposizione;
+	}
+	public void setTipoDisposizione(String tipoDisposizione) {
+		this.tipoDisposizione = tipoDisposizione;
+	}
+	public String getStatoConvalida() {
+		return statoConvalida;
+	}
+	public void setStatoConvalida(String statoConvalida) {
+		this.statoConvalida = statoConvalida;
+	}
+	public String getProvenienza() {
+		return provenienza;
+	}
+	public void setProvenienza(String provenienza) {
+		this.provenienza = provenienza;
+	}
+	public String getStatoDisposizione() {
+		return statoDisposizione;
+	}
+	public void setStatoDisposizione(String statoDisposizione) {
+		this.statoDisposizione = statoDisposizione;
+	}
+	public String getDaDistinta() {
+		return daDistinta;
+	}
+	public void setDaDistinta(String daDistinta) {
+		this.daDistinta = daDistinta;
+	}
+	public String getaDistinta() {
+		return aDistinta;
+	}
+	public void setaDistinta(String aDistinta) {
+		this.aDistinta = aDistinta;
+	}
+	public Boolean getFlagDaDataInserimento() {
+		return flagDaDataInserimento;
+	}
+	public void setFlagDaDataInserimento(Boolean flagDaDataInserimento) {
+		this.flagDaDataInserimento = flagDaDataInserimento;
+	}
+	public Date getDaDataInserimento() {
+		return daDataInserimento;
+	}
+	public void setDaDataInserimento(Date daDataInserimento) {
+		this.daDataInserimento = daDataInserimento;
+	}
+	public Boolean getFlagADataInserimento() {
+		return flagADataInserimento;
+	}
+	public void setFlagADataInserimento(Boolean flagADataInserimento) {
+		this.flagADataInserimento = flagADataInserimento;
+	}
+	public Date getaDataInserimento() {
+		return aDataInserimento;
+	}
+	public void setaDataInserimento(Date aDataInserimento) {
+		this.aDataInserimento = aDataInserimento;
+	}
+	public String getDestinatario() {
+		return destinatario;
+	}
+	public void setDestinatario(String destinatario) {
+		this.destinatario = destinatario;
+	}
+	public String getCodiceFiscale() {
+		return codiceFiscale;
+	}
+	public void setCodiceFiscale(String codiceFiscale) {
+		this.codiceFiscale = codiceFiscale;
+	}
+	public String getCodiceDestinatario() {
+		return codiceDestinatario;
+	}
+	public void setCodiceDestinatario(String codiceDestinatario) {
+		this.codiceDestinatario = codiceDestinatario;
+	}
+	public String getCausaleMovimento() {
+		return causaleMovimento;
+	}
+	public void setCausaleMovimento(String causaleMovimento) {
+		this.causaleMovimento = causaleMovimento;
+	}
+	public String getIdFunzione() {
+		return idFunzione;
+	}
+	public void setIdFunzione(String idFunzione) {
+		this.idFunzione = idFunzione;
+	}
+	public String getIdUnivoco() {
+		return idUnivoco;
+	}
+	public void setIdUnivoco(String idUnivoco) {
+		this.idUnivoco = idUnivoco;
+	}
+	public Boolean getFlagDaValutaBeneficiario() {
+		return flagDaValutaBeneficiario;
+	}
+	public void setFlagDaValutaBeneficiario(Boolean flagDaValutaBeneficiario) {
+		this.flagDaValutaBeneficiario = flagDaValutaBeneficiario;
+	}
+	public Date getDaValutaBeneficiario() {
+		return daValutaBeneficiario;
+	}
+	public void setDaValutaBeneficiario(Date daValutaBeneficiario) {
+		this.daValutaBeneficiario = daValutaBeneficiario;
+	}
+	public Boolean getFlagAValutaBeneficiario() {
+		return flagAValutaBeneficiario;
+	}
+	public void setFlagAValutaBeneficiario(Boolean flagAValutaBeneficiario) {
+		this.flagAValutaBeneficiario = flagAValutaBeneficiario;
+	}
+	public Date getaValutaBeneficiario() {
+		return aValutaBeneficiario;
+	}
+	public void setaValutaBeneficiario(Date aValutaBeneficiario) {
+		this.aValutaBeneficiario = aValutaBeneficiario;
+	}
+	public String getDaImporto() {
+		return daImporto;//.replaceAll(".","").replace(',','.');
+	}
+	public void setDaImporto(String daImporto) {
+		this.daImporto = daImporto;
+	}
+	public String getaImporto() {
+		return aImporto;//.replaceAll(".","").replace(',','.');
+	}
+	public void setaImporto(String aImporto) {
+		this.aImporto = aImporto;
+	}
+	public String getIdEndToEnd() {
+		return idEndToEnd;
+	}
+	public void setIdEndToEnd(String idEndToEnd) {
+		this.idEndToEnd = idEndToEnd;
+	}
+	public String getNumeroPolizza() {
+		return numeroPolizza;
+	}
+	public void setNumeroPolizza(String numeroPolizza) {
+		this.numeroPolizza = numeroPolizza;
+	}
+	public String getAbiOrdinante() {
+		return abiOrdinante;
+	}
+	public void setAbiOrdinante(String abiOrdinante) {
+		this.abiOrdinante = abiOrdinante;
+	}
+	public String getCabOrdinante() {
+		return cabOrdinante;
+	}
+	public void setCabOrdinante(String cabOrdinante) {
+		this.cabOrdinante = cabOrdinante;
+	}
+	public String getContoOrdinante() {
+		return contoOrdinante;
+	}
+	public void setContoOrdinante(String contoOrdinante) {
+		this.contoOrdinante = contoOrdinante;
+	}
+	public String getAbiDestinatario() {
+		return abiDestinatario;
+	}
+	public void setAbiDestinatario(String abiDestinatario) {
+		this.abiDestinatario = abiDestinatario;
+	}
+	public String getCabDestinatario() {
+		return cabDestinatario;
+	}
+	public void setCabDestinatario(String cabDestinatario) {
+		this.cabDestinatario = cabDestinatario;
+	}
+	public String getContoDestinatario() {
+		return contoDestinatario;
+	}
+	public void setContoDestinatario(String contoDestinatario) {
+		this.contoDestinatario = contoDestinatario;
+	}
+	public Boolean getFlagDaDataRicezioneEsito() {
+		return flagDaDataRicezioneEsito;
+	}
+	public void setFlagDaDataRicezioneEsito(Boolean flagDaDataRicezioneEsito) {
+		this.flagDaDataRicezioneEsito = flagDaDataRicezioneEsito;
+	}
+	public Date getDaDataRicezioneEsito() {
+		return daDataRicezioneEsito;
+	}
+	public void setDaDataRicezioneEsito(Date daDataRicezioneEsito) {
+		this.daDataRicezioneEsito = daDataRicezioneEsito;
+	}
+	public Boolean getFlagADataRicezioneEsito() {
+		return flagADataRicezioneEsito;
+	}
+	public void setFlagADataRicezioneEsito(Boolean flagADataRicezioneEsito) {
+		this.flagADataRicezioneEsito = flagADataRicezioneEsito;
+	}
+	public Date getaDataRicezioneEsito() {
+		return aDataRicezioneEsito;
+	}
+	public void setaDataRicezioneEsito(Date aDataRicezioneEsito) {
+		this.aDataRicezioneEsito = aDataRicezioneEsito;
+	}
+	public Boolean getFlagDaDataEsecuzioneBanca() {
+		return flagDaDataEsecuzioneBanca;
+	}
+	public void setFlagDaDataEsecuzioneBanca(Boolean flagDaDataEsecuzioneBanca) {
+		this.flagDaDataEsecuzioneBanca = flagDaDataEsecuzioneBanca;
+	}
+	public Boolean getFlagADataEsecuzioneBanca() {
+		return flagADataEsecuzioneBanca;
+	}
+	public void setFlagADataEsecuzioneBanca(Boolean flagADataEsecuzioneBanca) {
+		this.flagADataEsecuzioneBanca = flagADataEsecuzioneBanca;
+	}
+	public Date getaDataEsecuzioneBanca() {
+		return aDataEsecuzioneBanca;
+	}
+	public void setaDataEsecuzioneBanca(Date aDataEsecuzioneBanca) {
+		this.aDataEsecuzioneBanca = aDataEsecuzioneBanca;
+	}
+	public Date getDaDataEsecuzioneBanca() {
+		return daDataEsecuzioneBanca;
+	}
+	public void setDaDataEsecuzioneBanca(Date daDataEsecuzioneBanca) {
+		this.daDataEsecuzioneBanca = daDataEsecuzioneBanca;
+	}
+	public String getEsitoDisposizione() {
+		return esitoDisposizione;
+	}
+	public void setEsitoDisposizione(String esitoDisposizione) {
+		this.esitoDisposizione = esitoDisposizione;
+	}
+	public String getIdSDD() {
+		return idSDD;
+	}
+	public void setIdSDD(String idSDD) {
+		this.idSDD = idSDD;
+	}
+	public String getCausaleStorno() {
+		return causaleStorno;
+	}
+	public void setCausaleStorno(String causaleStorno) {
+		this.causaleStorno = causaleStorno;
+	}
+	public String getTrnBonificoSCT() {
+		return trnBonificoSCT;
+	}
+	public void setTrnBonificoSCT(String trnBonificoSCT) {
+		this.trnBonificoSCT = trnBonificoSCT;
+	}
+	public String getNumeroAssegno() {
+		return numeroAssegno;
+	}
+	public void setNumeroAssegno(String numeroAssegno) {
+		this.numeroAssegno = numeroAssegno;
+	}
+	public Integer[] getSelectedIds() {
+		return selectedIds;
+	}
+	public void setSelectedIds(Integer[] selectedIds) {
+		this.selectedIds = selectedIds;
+	}
+	
+	
+	
+}

+ 35 - 0
sicura.business/src/bean/query/AggregatoAbiDelegaSepaQueryBean.java

@@ -0,0 +1,35 @@
+package bean.query;
+
+import java.util.Date;
+
+public class AggregatoAbiDelegaSepaQueryBean {
+	private String  Abi;
+	private String banca;
+	private Integer numeroMandati;
+	private String  statoAllineamento;
+	
+	public String getAbi() {
+		return Abi;
+	}
+	public void setAbi(String abi) {
+		Abi = abi;
+	}
+	public String getBanca() {
+		return banca;
+	}
+	public void setBanca(String banca) {
+		this.banca = banca;
+	}
+	public Integer getNumeroMandati() {
+		return numeroMandati;
+	}
+	public void setNumeroMandati(Integer numeroMandati) {
+		this.numeroMandati = numeroMandati;
+	}
+	public String getStatoAllineamento() {
+		return statoAllineamento;
+	}
+	public void setStatoAllineamento(String statoAllineamento) {
+		this.statoAllineamento = statoAllineamento;
+	}
+}

+ 232 - 0
sicura.business/src/bean/query/CondizioniCtrlBean.java

@@ -0,0 +1,232 @@
+package bean.query;
+
+public class CondizioniCtrlBean {
+
+	private Integer  contatore;
+	private String   campoChiave;
+	private String   statement1;
+	private String   nomeCampo;
+	private String   condizione1;
+	private String   congruenzaCondizione1;
+	private String   condizione2;
+	private String   congruenzaCondizione2;
+	private String   statement2;
+	private boolean lavorativoCond;
+	private String   dataSistemaCond;
+	private boolean piazzaturaCond;
+	private String   congruenzaCondizione3;
+	private String   condizione3;
+	private String   congruenzaCondizione4;
+	private String   condizione4;
+	private boolean flagErrore;
+	private boolean obbligatorio;
+	private boolean flagLavorativo;
+	private String   campoDataSistema;
+	private boolean flagSoloGiornoLavorativo;
+	private short   flagPiazzatura;
+	private boolean flagBancaAderente;
+	private String   campoReciprocoPiazzatura;
+	private short   controlloCodiceFiscale;
+	private boolean controlloCin;
+	private String   abiControlloCin;
+	private String   cabControlloCin;
+	private String   contoControlloCin;
+	private boolean controlloIban;
+	private String   caratteriAbilitati;
+	private String   controlloLunghezzaCampo;
+
+	
+	public Integer getContatore() {
+		return contatore;
+	}
+	public void setContatore(Integer contatore) {
+		this.contatore = contatore;
+	}
+	public String getCampoChiave() {
+		return campoChiave;
+	}
+	public void setCampoChiave(String campoChiave) {
+		this.campoChiave = campoChiave;
+	}
+	public String getStatement1() {
+		return statement1;
+	}
+	public void setStatement1(String statement1) {
+		this.statement1 = statement1;
+	}
+	public String getNomeCampo() {
+		return nomeCampo;
+	}
+	public void setNomeCampo(String nomeCampo) {
+		this.nomeCampo = nomeCampo;
+	}
+	public String getCondizione1() {
+		return condizione1;
+	}
+	public void setCondizione1(String condizione1) {
+		this.condizione1 = condizione1;
+	}
+	public String getCongruenzaCondizione1() {
+		return congruenzaCondizione1;
+	}
+	public void setCongruenzaCondizione1(String congruenzaCondizione1) {
+		this.congruenzaCondizione1 = congruenzaCondizione1;
+	}
+	public String getCondizione2() {
+		return condizione2;
+	}
+	public void setCondizione2(String condizione2) {
+		this.condizione2 = condizione2;
+	}
+	public String getCongruenzaCondizione2() {
+		return congruenzaCondizione2;
+	}
+	public void setCongruenzaCondizione2(String congruenzaCondizione2) {
+		this.congruenzaCondizione2 = congruenzaCondizione2;
+	}
+	public String getStatement2() {
+		return statement2;
+	}
+	public void setStatement2(String statement2) {
+		this.statement2 = statement2;
+	}
+	public boolean isLavorativoCond() {
+		return lavorativoCond;
+	}
+	public void setLavorativoCond(boolean lavorativoCond) {
+		this.lavorativoCond = lavorativoCond;
+	}
+	public String getDataSistemaCond() {
+		return dataSistemaCond;
+	}
+	public void setDataSistemaCond(String dataSistemaCond) {
+		this.dataSistemaCond = dataSistemaCond;
+	}
+	public boolean isPiazzaturaCond() {
+		return piazzaturaCond;
+	}
+	public void setPiazzaturaCond(boolean piazzaturaCond) {
+		this.piazzaturaCond = piazzaturaCond;
+	}
+	public String getCongruenzaCondizione3() {
+		return congruenzaCondizione3;
+	}
+	public void setCongruenzaCondizione3(String congruenzaCondizione3) {
+		this.congruenzaCondizione3 = congruenzaCondizione3;
+	}
+	public String getCondizione3() {
+		return condizione3;
+	}
+	public void setCondizione3(String condizione3) {
+		this.condizione3 = condizione3;
+	}
+	public String getCongruenzaCondizione4() {
+		return congruenzaCondizione4;
+	}
+	public void setCongruenzaCondizione4(String congruenzaCondizione4) {
+		this.congruenzaCondizione4 = congruenzaCondizione4;
+	}
+	public String getCondizione4() {
+		return condizione4;
+	}
+	public void setCondizione4(String condizione4) {
+		this.condizione4 = condizione4;
+	}
+	public boolean isFlagErrore() {
+		return flagErrore;
+	}
+	public void setFlagErrore(boolean flagErrore) {
+		this.flagErrore = flagErrore;
+	}
+	public boolean isObbligatorio() {
+		return obbligatorio;
+	}
+	public void setObbligatorio(boolean obbligatorio) {
+		this.obbligatorio = obbligatorio;
+	}
+	public boolean isFlagLavorativo() {
+		return flagLavorativo;
+	}
+	public void setFlagLavorativo(boolean flagLavorativo) {
+		this.flagLavorativo = flagLavorativo;
+	}
+	public String getCampoDataSistema() {
+		return campoDataSistema;
+	}
+	public void setCampoDataSistema(String campoDataSistema) {
+		this.campoDataSistema = campoDataSistema;
+	}
+	public boolean isFlagSoloGiornoLavorativo() {
+		return flagSoloGiornoLavorativo;
+	}
+	public void setFlagSoloGiornoLavorativo(boolean flagSoloGiornoLavorativo) {
+		this.flagSoloGiornoLavorativo = flagSoloGiornoLavorativo;
+	}
+	public short getFlagPiazzatura() {
+		return flagPiazzatura;
+	}
+	public void setFlagPiazzatura(short flagPiazzatura) {
+		this.flagPiazzatura = flagPiazzatura;
+	}
+	public boolean isFlagBancaAderente() {
+		return flagBancaAderente;
+	}
+	public void setFlagBancaAderente(boolean flagBancaAderente) {
+		this.flagBancaAderente = flagBancaAderente;
+	}
+	public String getCampoReciprocoPiazzatura() {
+		return campoReciprocoPiazzatura;
+	}
+	public void setCampoReciprocoPiazzatura(String campoReciprocoPiazzatura) {
+		this.campoReciprocoPiazzatura = campoReciprocoPiazzatura;
+	}
+	public short getControlloCodiceFiscale() {
+		return controlloCodiceFiscale;
+	}
+	public void setControlloCodiceFiscale(short controlloCodiceFiscale) {
+		this.controlloCodiceFiscale = controlloCodiceFiscale;
+	}
+	public boolean isControlloCin() {
+		return controlloCin;
+	}
+	public void setControlloCin(boolean controlloCin) {
+		this.controlloCin = controlloCin;
+	}
+	public String getAbiControlloCin() {
+		return abiControlloCin;
+	}
+	public void setAbiControlloCin(String abiControlloCin) {
+		this.abiControlloCin = abiControlloCin;
+	}
+	public String getCabControlloCin() {
+		return cabControlloCin;
+	}
+	public void setCabControlloCin(String cabControlloCin) {
+		this.cabControlloCin = cabControlloCin;
+	}
+	public String getContoControlloCin() {
+		return contoControlloCin;
+	}
+	public void setContoControlloCin(String contoControlloCin) {
+		this.contoControlloCin = contoControlloCin;
+	}
+	public boolean isControlloIban() {
+		return controlloIban;
+	}
+	public void setControlloIban(boolean controlloIban) {
+		this.controlloIban = controlloIban;
+	}
+	public String getCaratteriAbilitati() {
+		return caratteriAbilitati;
+	}
+	public void setCaratteriAbilitati(String caratteriAbilitati) {
+		this.caratteriAbilitati = caratteriAbilitati;
+	}
+	public String getControlloLunghezzaCampo() {
+		return controlloLunghezzaCampo;
+	}
+	public void setControlloLunghezzaCampo(String controlloLunghezzaCampo) {
+		this.controlloLunghezzaCampo = controlloLunghezzaCampo;
+	}
+	
+}

+ 77 - 0
sicura.business/src/bean/query/DelegaSepaQueryBean.java

@@ -0,0 +1,77 @@
+package bean.query;
+
+import java.util.Date;
+
+public class DelegaSepaQueryBean {
+	private Integer ID;
+	private Integer IDOrdinante;
+	private String  CodiceSIA;
+	private String  TipoCodiceDestinatario;
+	private String  CodiceDestinatario;
+	private String  Abi;
+	private Date    dataAperturaMandato;
+	private Date    dataChiusuraMandato;
+	private String  statoAllineamento;
+	private Date    dataCreazioneMandato;
+	
+	public Integer getID() {
+		return ID;
+	}
+	public void setID(Integer iD) {
+		ID = iD;
+	}
+	public Integer getIDOrdinante() {
+		return IDOrdinante;
+	}
+	public void setIDOrdinante(Integer iDOrdinante) {
+		IDOrdinante = iDOrdinante;
+	}
+	public String getCodiceSIA() {
+		return CodiceSIA;
+	}
+	public void setCodiceSIA(String codiceSIA) {
+		CodiceSIA = codiceSIA;
+	}
+	public String getTipoCodiceDestinatario() {
+		return TipoCodiceDestinatario;
+	}
+	public void setTipoCodiceDestinatario(String tipoCodiceDestinatario) {
+		TipoCodiceDestinatario = tipoCodiceDestinatario;
+	}
+	public String getCodiceDestinatario() {
+		return CodiceDestinatario;
+	}
+	public void setCodiceDestinatario(String codiceDestinatario) {
+		CodiceDestinatario = codiceDestinatario;
+	}
+	public String getAbi() {
+		return Abi;
+	}
+	public void setAbi(String abi) {
+		Abi = abi;
+	}
+	public Date getDataAperturaMandato() {
+		return dataAperturaMandato;
+	}
+	public void setDataAperturaMandato(Date dataAperturaMandato) {
+		this.dataAperturaMandato = dataAperturaMandato;
+	}
+	public Date getDataChiusuraMandato() {
+		return dataChiusuraMandato;
+	}
+	public void setDataChiusuraMandato(Date dataChiusuraMandato) {
+		this.dataChiusuraMandato = dataChiusuraMandato;
+	}
+	public String getStatoAllineamento() {
+		return statoAllineamento;
+	}
+	public void setStatoAllineamento(String statoAllineamento) {
+		this.statoAllineamento = statoAllineamento;
+	}
+	public Date getDataCreazioneMandato() {
+		return dataCreazioneMandato;
+	}
+	public void setDataCreazioneMandato(Date dataCreazioneMandato) {
+		this.dataCreazioneMandato = dataCreazioneMandato;
+	}
+}

+ 48 - 0
sicura.business/src/bean/query/DelegheSepaExportBean.java

@@ -0,0 +1,48 @@
+package bean.query;
+
+public class DelegheSepaExportBean {
+	private String  Abi;
+	private String banca;
+	private Integer numeroInAttesa;
+	private Integer numeroAttivi;
+	private Integer numeroInattivi;
+	private Integer numeroAttivatiSDD;
+	
+	public String getAbi() {
+		return Abi;
+	}
+	public void setAbi(String abi) {
+		Abi = abi;
+	}
+	public String getBanca() {
+		return banca;
+	}
+	public void setBanca(String banca) {
+		this.banca = banca;
+	}
+	public Integer getNumeroInAttesa() {
+		return numeroInAttesa;
+	}
+	public void setNumeroInAttesa(Integer numeroInAttesa) {
+		this.numeroInAttesa = numeroInAttesa;
+	}
+	public Integer getNumeroAttivi() {
+		return numeroAttivi;
+	}
+	public void setNumeroAttivi(Integer numeroAttivi) {
+		this.numeroAttivi = numeroAttivi;
+	}
+	public Integer getNumeroInattivi() {
+		return numeroInattivi;
+	}
+	public void setNumeroInattivi(Integer numeroInattivi) {
+		this.numeroInattivi = numeroInattivi;
+	}
+	public Integer getNumeroAttivatiSDD() {
+		return numeroAttivatiSDD;
+	}
+	public void setNumeroAttivatiSDD(Integer numeroAttivatiSDD) {
+		this.numeroAttivatiSDD = numeroAttivatiSDD;
+	}
+
+}

+ 136 - 0
sicura.business/src/bean/query/DestinatarioForPrinting.java

@@ -0,0 +1,136 @@
+package bean.query;
+
+public class DestinatarioForPrinting {
+
+	private Integer iddestinatario;
+	private String destinatario;
+	private String codiceFiscale;
+	private String indirizzo;
+	private String cap;
+	private String citta;
+	private String provincia;
+	private String codiceDestinatario;
+	private String tipoCodiceDestinatario;
+	private String sia;
+	private String coordinateIbanordinante;
+	
+	private String abi;
+	private String cab;
+	private String conto;
+	private String cin;
+	private String coordinateIban;
+	private String codiceBic;
+	private String descrizioneBanca;
+	
+	public Integer getIddestinatario() {
+		return iddestinatario;
+	}
+	public void setIddestinatario(Integer idDestinatario) {
+		this.iddestinatario = idDestinatario;
+	}
+	public String getDestinatario() {
+		return destinatario;
+	}
+	public void setDestinatario(String destinatario) {
+		this.destinatario = destinatario;
+	}
+	public String getCodiceFiscale() {
+		return codiceFiscale;
+	}
+	public void setCodiceFiscale(String codiceFiscale) {
+		this.codiceFiscale = codiceFiscale;
+	}
+	public String getIndirizzo() {
+		return indirizzo;
+	}
+	public void setIndirizzo(String indirizzo) {
+		this.indirizzo = indirizzo;
+	}
+	public String getCap() {
+		return cap;
+	}
+	public void setCap(String cap) {
+		this.cap = cap;
+	}
+	public String getCitta() {
+		return citta;
+	}
+	public void setCitta(String citta) {
+		this.citta = citta;
+	}
+	public String getProvincia() {
+		return provincia;
+	}
+	public void setProvincia(String provincia) {
+		this.provincia = provincia;
+	}
+	public String getCodiceDestinatario() {
+		return codiceDestinatario;
+	}
+	public void setCodiceDestinatario(String codiceDestinatario) {
+		this.codiceDestinatario = codiceDestinatario;
+	}
+	public String getTipoCodiceDestinatario() {
+		return tipoCodiceDestinatario;
+	}
+	public void setTipoCodiceDestinatario(String tipoCodiceDestinatario) {
+		this.tipoCodiceDestinatario = tipoCodiceDestinatario;
+	}
+	public String getSia() {
+		return sia;
+	}
+	public void setSia(String sia) {
+		this.sia = sia;
+	}
+	public String getCoordinateIbanordinante() {
+		return coordinateIbanordinante;
+	}
+	public void setCoordinateIbanordinante(String coordinateIbanordinante) {
+		this.coordinateIbanordinante = coordinateIbanordinante;
+	}
+	public String getAbi() {
+		return abi;
+	}
+	public void setAbi(String abi) {
+		this.abi = abi;
+	}
+	public String getCab() {
+		return cab;
+	}
+	public void setCab(String cab) {
+		this.cab = cab;
+	}
+	public String getConto() {
+		return conto;
+	}
+	public void setConto(String conto) {
+		this.conto = conto;
+	}
+	public String getCin() {
+		return cin;
+	}
+	public void setCin(String cin) {
+		this.cin = cin;
+	}
+	public String getCoordinateIban() {
+		return coordinateIban;
+	}
+	public void setCoordinateIban(String coordinateIban) {
+		this.coordinateIban = coordinateIban;
+	}
+	public String getCodiceBic() {
+		return codiceBic;
+	}
+	public void setCodiceBic(String codiceBic) {
+		this.codiceBic = codiceBic;
+	}
+	public String getDescrizioneBanca() {
+		return descrizioneBanca;
+	}
+	public void setDescrizioneBanca(String descrizioneBanca) {
+		this.descrizioneBanca = descrizioneBanca;
+	}
+
+	
+
+}

+ 35 - 0
sicura.business/src/bean/query/DisposizioniAeaDecoded.java

@@ -0,0 +1,35 @@
+package bean.query;
+
+import java.util.Date;
+
+import sicura.entities.ComboDisposizioni;
+import sicura.entities.DisposizioniAea;
+
+public class DisposizioniAeaDecoded implements java.io.Serializable{
+	
+	private DisposizioniAea disposizione;
+	private ComboDisposizioni comboDisposizioni;
+	
+	public DisposizioniAeaDecoded(DisposizioniAea disposizione,ComboDisposizioni comboDisposizioni) {
+		this.disposizione = disposizione;
+		this.comboDisposizioni = comboDisposizioni;
+	}
+
+	public DisposizioniAea getDisposizione() {
+		return disposizione;
+	}
+
+	public void setDisposizione(DisposizioniAea disposizione) {
+		this.disposizione = disposizione;
+	}
+
+	public ComboDisposizioni getComboDisposizioni() {
+		return comboDisposizioni;
+	}
+
+	public void setComboDisposizioni(ComboDisposizioni comboDisposizioni) {
+		this.comboDisposizioni = comboDisposizioni;
+	}
+	
+	
+}

+ 65 - 0
sicura.business/src/bean/query/DisposizioniBonificiDecoded.java

@@ -0,0 +1,65 @@
+package bean.query;
+
+import sicura.entities.ComboDisposizioni;
+import sicura.entities.DisposizioniBonifici;
+
+public class DisposizioniBonificiDecoded {
+
+	private DisposizioniBonifici disposizione;
+	private ComboDisposizioni comboDisposizioniCausale;
+	private ComboDisposizioni comboDisposizioniStatoSep;
+	private ComboDisposizioni comboDisposizioneAnomaliaSep;
+	private ComboDisposizioni comboDisposizioneCausaScarto;
+	
+	public DisposizioniBonificiDecoded(DisposizioniBonifici disposizione,ComboDisposizioni comboDisposizioniCausale,
+			ComboDisposizioni comboDisposizioniStatoSep,
+			ComboDisposizioni comboDisposizioneAnomaliaSep,
+			ComboDisposizioni comboDisposizioneCausaScarto) {
+		this.disposizione = disposizione;
+		this.comboDisposizioniCausale = comboDisposizioniCausale;
+		this.comboDisposizioniStatoSep = comboDisposizioniStatoSep;
+		this.comboDisposizioneAnomaliaSep = comboDisposizioneAnomaliaSep;
+		this.comboDisposizioneCausaScarto = comboDisposizioneCausaScarto;
+	}
+
+	public DisposizioniBonifici getDisposizione() {
+		return disposizione;
+	}
+
+	public void setDisposizione(DisposizioniBonifici disposizione) {
+		this.disposizione = disposizione;
+	}
+
+	public ComboDisposizioni getComboDisposizioniCausale() {
+		return comboDisposizioniCausale;
+	}
+
+	public void setComboDisposizioniCausale(ComboDisposizioni comboDisposizioniCausale) {
+		this.comboDisposizioniCausale = comboDisposizioniCausale;
+	}
+
+	public ComboDisposizioni getComboDisposizioniStatoSep() {
+		return comboDisposizioniStatoSep;
+	}
+
+	public void setComboDisposizioniStatoSep(ComboDisposizioni comboDisposizioniStatoSep) {
+		this.comboDisposizioniStatoSep = comboDisposizioniStatoSep;
+	}
+
+	public ComboDisposizioni getComboDisposizioneAnomaliaSep() {
+		return comboDisposizioneAnomaliaSep;
+	}
+
+	public void setComboDisposizioneAnomaliaSep(ComboDisposizioni comboDisposizioneAnomaliaSep) {
+		this.comboDisposizioneAnomaliaSep = comboDisposizioneAnomaliaSep;
+	}
+
+	public ComboDisposizioni getComboDisposizioneCausaScarto() {
+		return comboDisposizioneCausaScarto;
+	}
+
+	public void setComboDisposizioneCausaScarto(ComboDisposizioni comboDisposizioneCausaScarto) {
+		this.comboDisposizioneCausaScarto = comboDisposizioneCausaScarto;
+	}
+	
+}

+ 164 - 0
sicura.business/src/bean/query/DisposizioniRidExportBean.java

@@ -0,0 +1,164 @@
+package bean.query;
+
+import java.util.Date;
+
+public class DisposizioniRidExportBean {
+
+	private String statoConvalida;
+	private Integer iddisposizione;
+	private Date dataInserimentoDisposizione;
+	private String iddisposizioneFunzioneOrdinante;
+	private Date dataValutaDestinatario;
+	private Date dataDecorrenzaGaranzia;
+	private String tipoIncassoRid;
+	private String importo;
+	private String descrizioneDisposizione;
+	private String denominazioneDestinatario;
+	private String codiceAbiDestinatario;
+	private String cabDestinatario;
+	private String bancaSportelloDomic;
+	private String codiceAbiOrdinante;
+	private String contoOrdinante;
+	private Integer iddistintaBanca;
+	private String descrizioneEsito;
+	private String codiceStornoSepa;
+	private String coordinateIbanbeneficiario;
+	private Date dataEsitoDisposizione;
+	private String nomeSupportoFlussoInputCbi;
+	private String msgIdEsitoXml;
+	public String getStatoConvalida() {
+		return statoConvalida;
+	}
+	public void setStatoConvalida(String statoConvalida) {
+		this.statoConvalida = statoConvalida;
+	}
+	public Integer getIddisposizione() {
+		return iddisposizione;
+	}
+	public void setIddisposizione(Integer iddisposizione) {
+		this.iddisposizione = iddisposizione;
+	}
+	public Date getDataInserimentoDisposizione() {
+		return dataInserimentoDisposizione;
+	}
+	public void setDataInserimentoDisposizione(Date dataInserimentoDisposizione) {
+		this.dataInserimentoDisposizione = dataInserimentoDisposizione;
+	}
+	public String getIddisposizioneFunzioneOrdinante() {
+		return iddisposizioneFunzioneOrdinante;
+	}
+	public void setIddisposizioneFunzioneOrdinante(String iddisposizioneFunzioneOrdinante) {
+		this.iddisposizioneFunzioneOrdinante = iddisposizioneFunzioneOrdinante;
+	}
+	public Date getDataValutaDestinatario() {
+		return dataValutaDestinatario;
+	}
+	public void setDataValutaDestinatario(Date dataValutaDestinatario) {
+		this.dataValutaDestinatario = dataValutaDestinatario;
+	}
+	public Date getDataDecorrenzaGaranzia() {
+		return dataDecorrenzaGaranzia;
+	}
+	public void setDataDecorrenzaGaranzia(Date dataDecorrenzaGaranzia) {
+		this.dataDecorrenzaGaranzia = dataDecorrenzaGaranzia;
+	}
+	public String getTipoIncassoRid() {
+		return tipoIncassoRid;
+	}
+	public void setTipoIncassoRid(String tipoIncassoRid) {
+		this.tipoIncassoRid = tipoIncassoRid;
+	}
+	public String getImporto() {
+		return importo;
+	}
+	public void setImporto(String importo) {
+		this.importo = importo;
+	}
+	public String getDescrizioneDisposizione() {
+		return descrizioneDisposizione;
+	}
+	public void setDescrizioneDisposizione(String descrizioneDisposizione) {
+		this.descrizioneDisposizione = descrizioneDisposizione;
+	}
+	public String getDenominazioneDestinatario() {
+		return denominazioneDestinatario;
+	}
+	public void setDenominazioneDestinatario(String denominazioneDestinatario) {
+		this.denominazioneDestinatario = denominazioneDestinatario;
+	}
+	public String getCodiceAbiDestinatario() {
+		return codiceAbiDestinatario;
+	}
+	public void setCodiceAbiDestinatario(String codiceAbiDestinatario) {
+		this.codiceAbiDestinatario = codiceAbiDestinatario;
+	}
+	public String getCabDestinatario() {
+		return cabDestinatario;
+	}
+	public void setCabDestinatario(String cabDestinatario) {
+		this.cabDestinatario = cabDestinatario;
+	}
+	public String getBancaSportelloDomic() {
+		return bancaSportelloDomic;
+	}
+	public void setBancaSportelloDomic(String bancaSportelloDomic) {
+		this.bancaSportelloDomic = bancaSportelloDomic;
+	}
+	public String getCodiceAbiOrdinante() {
+		return codiceAbiOrdinante;
+	}
+	public void setCodiceAbiOrdinante(String codiceAbiOrdinante) {
+		this.codiceAbiOrdinante = codiceAbiOrdinante;
+	}
+	public String getContoOrdinante() {
+		return contoOrdinante;
+	}
+	public void setContoOrdinante(String contoOrdinante) {
+		this.contoOrdinante = contoOrdinante;
+	}
+	public Integer getIddistintaBanca() {
+		return iddistintaBanca;
+	}
+	public void setIddistintaBanca(Integer iddistintaBanca) {
+		this.iddistintaBanca = iddistintaBanca;
+	}
+	public String getDescrizioneEsito() {
+		return descrizioneEsito;
+	}
+	public void setDescrizioneEsito(String descrizioneEsito) {
+		this.descrizioneEsito = descrizioneEsito;
+	}
+	public String getCodiceStornoSepa() {
+		return codiceStornoSepa;
+	}
+	public void setCodiceStornoSepa(String codiceStornoSepa) {
+		this.codiceStornoSepa = codiceStornoSepa;
+	}
+	public String getCoordinateIbanbeneficiario() {
+		return coordinateIbanbeneficiario;
+	}
+	public void setCoordinateIbanbeneficiario(String coordinateIbanbeneficiario) {
+		this.coordinateIbanbeneficiario = coordinateIbanbeneficiario;
+	}
+	public Date getDataEsitoDisposizione() {
+		return dataEsitoDisposizione;
+	}
+	public void setDataEsitoDisposizione(Date dataEsitoDisposizione) {
+		this.dataEsitoDisposizione = dataEsitoDisposizione;
+	}
+	public String getNomeSupportoFlussoInputCbi() {
+		return nomeSupportoFlussoInputCbi;
+	}
+	public void setNomeSupportoFlussoInputCbi(String nomeSupportoFlussoInputCbi) {
+		this.nomeSupportoFlussoInputCbi = nomeSupportoFlussoInputCbi;
+	}
+	public String getMsgIdEsitoXml() {
+		return msgIdEsitoXml;
+	}
+	public void setMsgIdEsitoXml(String msgIdEsitoXml) {
+		this.msgIdEsitoXml = msgIdEsitoXml;
+	}
+	
+	
+	
+}

+ 396 - 0
sicura.business/src/bean/query/DistintaBancaBean.java

@@ -0,0 +1,396 @@
+package bean.query;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class DistintaBancaBean {
+
+	private Integer GiorniScadenza;
+	private Integer id;
+	private Integer iddistintaBanca;
+	private Integer iddistintaFlussoInput;
+	private Integer insertReference;
+	private String codiceSocietà;
+	private Date dataCreazione;
+	private boolean provenienzaR2;
+	private Date dataEmissioneFlusso;
+	private String tipologia;
+	private String tipologiaDbgrid;
+	private String userIdcreazione;
+	private String userIddelegatoFirma;
+	private String denominazioneDelegatoFirma;
+	private String codiceAbiOrdinante;
+	private String cabOrdinante;
+	private String contoOrdinante;
+	private String divisaContoOrdinante;
+	private String coordinateIbanordinante;
+	private String codiceBicordinante;
+	private String descrizioneConto;
+	private Date dataValutaDestinatario;
+	private Integer numeroDisposizioni;
+	private String importoDisposizioni;
+	private BigDecimal importoDisposizioniDecimal;
+	private String divisaImporto;
+	private String divisa;
+	private String statoDistinta;
+	private String statoValidazione;
+	private boolean flagStampa;
+	private boolean flagBir;
+	private String trasferimentoPosizioneRid;
+	private byte[] lastSaved;
+	private boolean contoPerCassa;
+	private boolean flagGrandine;
+	private boolean flagNas;
+	private boolean flagDanni;
+	private String pathFlussoPerFirmaDigitale;
+	private String nomeSupportoFlussoPerFirmaDigitale;
+	private String serialNumberCertificatoFd;
+	private String hashCodeCertificatoFd;
+	private boolean flagChiusuraPartitaSep;
+	private Date dataChiusuraPartitaSep;
+	private String numDisposizioniPagatePartitaSep;
+	private String impDisposizioniPagatePartitaSep;
+	private String numDisposizioniInsolutePartitaSep;
+	private String impDisposizioniiInsolutePartitaSep;
+	private Integer tpflusso;
+	private String prefissoFlusso;
+	private int requiresFirmatario;
+	private String tipoSequenzaRid;
+	private String userIdfirmatario1;
+	private String userIdfirmatario2;
+	private String msgId;
+	private String nomeSupportoCBI;
+	
+	
+	public Integer getGiorniScadenza() {
+		return GiorniScadenza;
+	}
+	public void setGiorniScadenza(Integer giorniScadenza) {
+		GiorniScadenza = giorniScadenza;
+	}
+	public Integer getId() {
+		return id;
+	}
+	public void setId(Integer id) {
+		this.id = id;
+	}
+	public Integer getIddistintaBanca() {
+		return iddistintaBanca;
+	}
+	public void setIddistintaBanca(Integer iddistintaBanca) {
+		this.iddistintaBanca = iddistintaBanca;
+	}
+	public Integer getIddistintaFlussoInput() {
+		return iddistintaFlussoInput;
+	}
+	public void setIddistintaFlussoInput(Integer iddistintaFlussoInput) {
+		this.iddistintaFlussoInput = iddistintaFlussoInput;
+	}
+	public Integer getInsertReference() {
+		return insertReference;
+	}
+	public void setInsertReference(Integer insertReference) {
+		this.insertReference = insertReference;
+	}
+	public String getCodiceSocietà() {
+		return codiceSocietà;
+	}
+	public void setCodiceSocietà(String codiceSocietà) {
+		this.codiceSocietà = codiceSocietà;
+	}
+	public Date getDataCreazione() {
+		return dataCreazione;
+	}
+	public void setDataCreazione(Date dataCreazione) {
+		this.dataCreazione = dataCreazione;
+	}
+	public boolean isProvenienzaR2() {
+		return provenienzaR2;
+	}
+	public void setProvenienzaR2(boolean provenienzaR2) {
+		this.provenienzaR2 = provenienzaR2;
+	}
+	public Date getDataEmissioneFlusso() {
+		return dataEmissioneFlusso;
+	}
+	public void setDataEmissioneFlusso(Date dataEmissioneFlusso) {
+		this.dataEmissioneFlusso = dataEmissioneFlusso;
+	}
+	public String getTipologia() {
+		return tipologia;
+	}
+	public void setTipologia(String tipologia) {
+		this.tipologia = tipologia;
+	}
+	public String getTipologiaDbgrid() {
+		return tipologiaDbgrid;
+	}
+	public void setTipologiaDbgrid(String tipologiaDbgrid) {
+		this.tipologiaDbgrid = tipologiaDbgrid;
+	}
+	public String getUserIdcreazione() {
+		return userIdcreazione;
+	}
+	public void setUserIdcreazione(String userIdcreazione) {
+		this.userIdcreazione = userIdcreazione;
+	}
+	public String getUserIddelegatoFirma() {
+		return userIddelegatoFirma;
+	}
+	public void setUserIddelegatoFirma(String userIddelegatoFirma) {
+		this.userIddelegatoFirma = userIddelegatoFirma;
+	}
+	public String getDenominazioneDelegatoFirma() {
+		return denominazioneDelegatoFirma;
+	}
+	public void setDenominazioneDelegatoFirma(String denominazioneDelegatoFirma) {
+		this.denominazioneDelegatoFirma = denominazioneDelegatoFirma;
+	}
+	public String getCodiceAbiOrdinante() {
+		return codiceAbiOrdinante;
+	}
+	public void setCodiceAbiOrdinante(String codiceAbiOrdinante) {
+		this.codiceAbiOrdinante = codiceAbiOrdinante;
+	}
+	public String getCabOrdinante() {
+		return cabOrdinante;
+	}
+	public void setCabOrdinante(String cabOrdinante) {
+		this.cabOrdinante = cabOrdinante;
+	}
+	public String getContoOrdinante() {
+		return contoOrdinante;
+	}
+	public void setContoOrdinante(String contoOrdinante) {
+		this.contoOrdinante = contoOrdinante;
+	}
+	public String getDivisaContoOrdinante() {
+		return divisaContoOrdinante;
+	}
+	public void setDivisaContoOrdinante(String divisaContoOrdinante) {
+		this.divisaContoOrdinante = divisaContoOrdinante;
+	}
+	public String getCoordinateIbanordinante() {
+		return coordinateIbanordinante;
+	}
+	public void setCoordinateIbanordinante(String coordinateIbanordinante) {
+		this.coordinateIbanordinante = coordinateIbanordinante;
+	}
+	public String getCodiceBicordinante() {
+		return codiceBicordinante;
+	}
+	public void setCodiceBicordinante(String codiceBicordinante) {
+		this.codiceBicordinante = codiceBicordinante;
+	}
+	public String getDescrizioneConto() {
+		return descrizioneConto;
+	}
+	public void setDescrizioneConto(String descrizioneConto) {
+		this.descrizioneConto = descrizioneConto;
+	}
+	public Date getDataValutaDestinatario() {
+		return dataValutaDestinatario;
+	}
+	public void setDataValutaDestinatario(Date dataValutaDestinatario) {
+		this.dataValutaDestinatario = dataValutaDestinatario;
+	}
+	public Integer getNumeroDisposizioni() {
+		return numeroDisposizioni;
+	}
+	public void setNumeroDisposizioni(Integer numeroDisposizioni) {
+		this.numeroDisposizioni = numeroDisposizioni;
+	}
+	public String getImportoDisposizioni() {
+		return importoDisposizioni;
+	}
+	public void setImportoDisposizioni(String importoDisposizioni) {
+		this.importoDisposizioni = importoDisposizioni;
+	}
+	public BigDecimal getImportoDisposizioniDecimal() {
+		return importoDisposizioniDecimal;
+	}
+	public void setImportoDisposizioniDecimal(BigDecimal importoDisposizioniDecimal) {
+		this.importoDisposizioniDecimal = importoDisposizioniDecimal;
+	}
+	public String getDivisaImporto() {
+		return divisaImporto;
+	}
+	public void setDivisaImporto(String divisaImporto) {
+		this.divisaImporto = divisaImporto;
+	}
+	public String getDivisa() {
+		return divisa;
+	}
+	public void setDivisa(String divisa) {
+		this.divisa = divisa;
+	}
+	public String getStatoDistinta() {
+		return statoDistinta;
+	}
+	public void setStatoDistinta(String statoDistinta) {
+		this.statoDistinta = statoDistinta;
+	}
+	public String getStatoValidazione() {
+		return statoValidazione;
+	}
+	public void setStatoValidazione(String statoValidazione) {
+		this.statoValidazione = statoValidazione;
+	}
+	public boolean isFlagStampa() {
+		return flagStampa;
+	}
+	public void setFlagStampa(boolean flagStampa) {
+		this.flagStampa = flagStampa;
+	}
+	public boolean isFlagBir() {
+		return flagBir;
+	}
+	public void setFlagBir(boolean flagBir) {
+		this.flagBir = flagBir;
+	}
+	public String getTrasferimentoPosizioneRid() {
+		return trasferimentoPosizioneRid;
+	}
+	public void setTrasferimentoPosizioneRid(String trasferimentoPosizioneRid) {
+		this.trasferimentoPosizioneRid = trasferimentoPosizioneRid;
+	}
+	public byte[] getLastSaved() {
+		return lastSaved;
+	}
+	public void setLastSaved(byte[] lastSaved) {
+		this.lastSaved = lastSaved;
+	}
+	public boolean isContoPerCassa() {
+		return contoPerCassa;
+	}
+	public void setContoPerCassa(boolean contoPerCassa) {
+		this.contoPerCassa = contoPerCassa;
+	}
+	public boolean isFlagGrandine() {
+		return flagGrandine;
+	}
+	public void setFlagGrandine(boolean flagGrandine) {
+		this.flagGrandine = flagGrandine;
+	}
+	public boolean isFlagNas() {
+		return flagNas;
+	}
+	public void setFlagNas(boolean flagNas) {
+		this.flagNas = flagNas;
+	}
+	public boolean isFlagDanni() {
+		return flagDanni;
+	}
+	public void setFlagDanni(boolean flagDanni) {
+		this.flagDanni = flagDanni;
+	}
+	public String getPathFlussoPerFirmaDigitale() {
+		return pathFlussoPerFirmaDigitale;
+	}
+	public void setPathFlussoPerFirmaDigitale(String pathFlussoPerFirmaDigitale) {
+		this.pathFlussoPerFirmaDigitale = pathFlussoPerFirmaDigitale;
+	}
+	public String getNomeSupportoFlussoPerFirmaDigitale() {
+		return nomeSupportoFlussoPerFirmaDigitale;
+	}
+	public void setNomeSupportoFlussoPerFirmaDigitale(String nomeSupportoFlussoPerFirmaDigitale) {
+		this.nomeSupportoFlussoPerFirmaDigitale = nomeSupportoFlussoPerFirmaDigitale;
+	}
+	public String getSerialNumberCertificatoFd() {
+		return serialNumberCertificatoFd;
+	}
+	public void setSerialNumberCertificatoFd(String serialNumberCertificatoFd) {
+		this.serialNumberCertificatoFd = serialNumberCertificatoFd;
+	}
+	public String getHashCodeCertificatoFd() {
+		return hashCodeCertificatoFd;
+	}
+	public void setHashCodeCertificatoFd(String hashCodeCertificatoFd) {
+		this.hashCodeCertificatoFd = hashCodeCertificatoFd;
+	}
+	public boolean isFlagChiusuraPartitaSep() {
+		return flagChiusuraPartitaSep;
+	}
+	public void setFlagChiusuraPartitaSep(boolean flagChiusuraPartitaSep) {
+		this.flagChiusuraPartitaSep = flagChiusuraPartitaSep;
+	}
+	public Date getDataChiusuraPartitaSep() {
+		return dataChiusuraPartitaSep;
+	}
+	public void setDataChiusuraPartitaSep(Date dataChiusuraPartitaSep) {
+		this.dataChiusuraPartitaSep = dataChiusuraPartitaSep;
+	}
+	public String getNumDisposizioniPagatePartitaSep() {
+		return numDisposizioniPagatePartitaSep;
+	}
+	public void setNumDisposizioniPagatePartitaSep(String numDisposizioniPagatePartitaSep) {
+		this.numDisposizioniPagatePartitaSep = numDisposizioniPagatePartitaSep;
+	}
+	public String getImpDisposizioniPagatePartitaSep() {
+		return impDisposizioniPagatePartitaSep;
+	}
+	public void setImpDisposizioniPagatePartitaSep(String impDisposizioniPagatePartitaSep) {
+		this.impDisposizioniPagatePartitaSep = impDisposizioniPagatePartitaSep;
+	}
+	public String getNumDisposizioniInsolutePartitaSep() {
+		return numDisposizioniInsolutePartitaSep;
+	}
+	public void setNumDisposizioniInsolutePartitaSep(String numDisposizioniInsolutePartitaSep) {
+		this.numDisposizioniInsolutePartitaSep = numDisposizioniInsolutePartitaSep;
+	}
+	public String getImpDisposizioniiInsolutePartitaSep() {
+		return impDisposizioniiInsolutePartitaSep;
+	}
+	public void setImpDisposizioniiInsolutePartitaSep(String impDisposizioniiInsolutePartitaSep) {
+		this.impDisposizioniiInsolutePartitaSep = impDisposizioniiInsolutePartitaSep;
+	}
+	public Integer getTpflusso() {
+		return tpflusso;
+	}
+	public void setTpflusso(Integer tpflusso) {
+		this.tpflusso = tpflusso;
+	}
+	public String getPrefissoFlusso() {
+		return prefissoFlusso;
+	}
+	public void setPrefissoFlusso(String prefissoFlusso) {
+		this.prefissoFlusso = prefissoFlusso;
+	}
+	public int getRequiresFirmatario() {
+		return requiresFirmatario;
+	}
+	public void setRequiresFirmatario(int requiresFirmatario) {
+		this.requiresFirmatario = requiresFirmatario;
+	}
+	public String getTipoSequenzaRid() {
+		return tipoSequenzaRid;
+	}
+	public void setTipoSequenzaRid(String tipoSequenzaRid) {
+		this.tipoSequenzaRid = tipoSequenzaRid;
+	}
+	public String getUserIdfirmatario1() {
+		return userIdfirmatario1;
+	}
+	public void setUserIdfirmatario1(String userIdfirmatario1) {
+		this.userIdfirmatario1 = userIdfirmatario1;
+	}
+	public String getUserIdfirmatario2() {
+		return userIdfirmatario2;
+	}
+	public void setUserIdfirmatario2(String userIdfirmatario2) {
+		this.userIdfirmatario2 = userIdfirmatario2;
+	}
+	public String getMsgId() {
+		return msgId;
+	}
+	public void setMsgId(String msgId) {
+		this.msgId = msgId;
+	}
+	public String getNomeSupportoCBI() {
+		return nomeSupportoCBI;
+	}
+	public void setNomeSupportoCBI(String nomeSupportoCBI) {
+		this.nomeSupportoCBI = nomeSupportoCBI;
+	}
+	
+}

+ 99 - 0
sicura.business/src/bean/query/ServiceUIBean.java

@@ -0,0 +1,99 @@
+package bean.query;
+
+import java.sql.Blob;
+import java.util.Date;
+
+public class ServiceUIBean {
+
+	private Integer idServiceUI;
+	private String tipoRichiesta;
+	private String userIDRichiesta;
+	private String filenameIn;
+	private String filenameOut;
+	private Date dataRichiesta;
+	private  Date dataCancellazioneFiles;
+	private  Date dataInizioEsecuzione;
+	private  Date dataFineEsecuzione;
+	private String esitoEsecuzione;
+	private String logEsecuzione;
+	private String statoRichiesta;
+	
+	public Integer getIdServiceUI() {
+		return idServiceUI;
+	}
+	public void setIdServiceUI(Integer idServiceUI) {
+		this.idServiceUI = idServiceUI;
+	}
+	public String getTipoRichiesta() {
+		return tipoRichiesta;
+	}
+	public void setTipoRichiesta(String tipoRichiesta) {
+		this.tipoRichiesta = tipoRichiesta;
+	}
+	public String getUserIDRichiesta() {
+		return userIDRichiesta;
+	}
+	public void setUserIDRichiesta(String userIDRichiesta) {
+		this.userIDRichiesta = userIDRichiesta;
+	}
+	public String getFilenameOut() {
+		return filenameOut;
+	}
+	public void setFilenameOut(String filenameOut) {
+		this.filenameOut = filenameOut;
+	}
+	public Date getDataRichiesta() {
+		return dataRichiesta;
+	}
+	public void setDataRichiesta(Date dataRichiesta) {
+		this.dataRichiesta = dataRichiesta;
+	}
+	public Date getDataCancellazionFilese() {
+		return dataCancellazioneFiles;
+	}
+	public void setDataCancellazioneFiles(Date dataCancellazioneFiles) {
+		this.dataCancellazioneFiles = dataCancellazioneFiles;
+	}
+	public Date getDataInizioEsecuzione() {
+		return dataInizioEsecuzione;
+	}
+	public void setDataInizioEsecuzione(Date dataInizioEsecuzione) {
+		this.dataInizioEsecuzione = dataInizioEsecuzione;
+	}
+	public Date getDataFineEsecuzione() {
+		return dataFineEsecuzione;
+	}
+	public void setDataFineEsecuzione(Date dataFineEsecuzione) {
+		this.dataFineEsecuzione = dataFineEsecuzione;
+	}
+	public String getEsitoEsecuzione() {
+		return esitoEsecuzione;
+	}
+	public void setEsitoEsecuzione(String esitoEsecuzione) {
+		this.esitoEsecuzione = esitoEsecuzione;
+	}
+	public String getLogEsecuzione() {
+		return logEsecuzione;
+	}
+	public void setLogEsecuzione(String logEsecuzione) {
+		this.logEsecuzione = logEsecuzione;
+	}
+	public Date getDataCancellazioneFiles() {
+		return dataCancellazioneFiles;
+	}
+	public String getStatoRichiesta() {
+		return statoRichiesta;
+	}
+	public void setStatoRichiesta(String statoRichiesta) {
+		this.statoRichiesta = statoRichiesta;
+	}
+	public String getFilenameIn() {
+		return filenameIn;
+	}
+	public void setFilenameIn(String filenameIn) {
+		this.filenameIn = filenameIn;
+	}
+
+	
+	
+}

+ 44 - 0
sicura.business/src/bean/query/TabellaFirmeBean.java

@@ -0,0 +1,44 @@
+package bean.query;
+
+import java.sql.Clob;
+
+public class TabellaFirmeBean {
+
+		private Integer id;
+		private String tipologia;
+		private String prefissoFlussoInput;
+		private boolean attivaRequiresFirmatario;
+		private String descrizione;
+		
+		public Integer getId() {
+			return id;
+		}
+		public void setId(Integer id) {
+			this.id = id;
+		}
+		public String getTipologia() {
+			return tipologia;
+		}
+		public void setTipologia(String tipologia) {
+			this.tipologia = tipologia;
+		}
+		public String getPrefissoFlussoInput() {
+			return prefissoFlussoInput;
+		}
+		public void setPrefissoFlussoInput(String prefissoFlussoInput) {
+			this.prefissoFlussoInput = prefissoFlussoInput;
+		}
+		public boolean isAttivaRequiresFirmatario() {
+			return attivaRequiresFirmatario;
+		}
+		public void setAttivaRequiresFirmatario(boolean attivaRequiresFirmatario) {
+			this.attivaRequiresFirmatario = attivaRequiresFirmatario;
+		}
+		public String getDescrizione() {
+			return descrizione;
+		}
+		public void setDescrizione(String descrizione) {
+			this.descrizione = descrizione;
+		}
+		
+}

+ 44 - 0
sicura.business/src/bean/query/TabellaFlussiNonSedaBean.java

@@ -0,0 +1,44 @@
+package bean.query;
+
+import java.sql.Clob;
+
+public class TabellaFlussiNonSedaBean {
+
+		private Integer id;
+		private String tipologia;
+		private String nomeSupporto;
+		private boolean nonAderenteSeda;
+		private String descrizione;
+		public Integer getId() {
+			return id;
+		}
+		public void setId(Integer id) {
+			this.id = id;
+		}
+		public String getTipologia() {
+			return tipologia;
+		}
+		public void setTipologia(String tipologia) {
+			this.tipologia = tipologia;
+		}
+		public String getNomeSupporto() {
+			return nomeSupporto;
+		}
+		public void setNomeSupporto(String nomeSupporto) {
+			this.nomeSupporto = nomeSupporto;
+		}
+		public boolean isNonAderenteSeda() {
+			return nonAderenteSeda;
+		}
+		public void setNonAderenteSeda(boolean nonAderenteSEDA) {
+			this.nonAderenteSeda = nonAderenteSEDA;
+		}
+		public String getDescrizione() {
+			return descrizione;
+		}
+		public void setDescrizione(String descrizione) {
+			this.descrizione = descrizione;
+		}
+
+		
+}

+ 129 - 0
sicura.business/src/dao/ApAbiDao.java

@@ -0,0 +1,129 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.ApAbi;
+
+@Repository
+public class ApAbiDao extends GenericDAO<ApAbi, Integer> implements IDAO<ApAbi, Integer> {
+
+	public List<ApAbi> filterIstituto(String filtro, Integer maxResult) {
+		
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(ApAbi.class);
+			crit
+				.add(Restrictions.ilike("descri", "%"+filtro+"%"))
+				.addOrder(Order.asc("descri"))
+				.setMaxResults(maxResult);
+		    	
+			
+			List<ApAbi> res = crit.list();
+		    
+		    
+		    return res;
+		} finally {
+		    if (tx)
+		    	commit();
+		}
+	}
+
+	public String saveBanca(ApAbi banca,AppVariables appVariables) {
+		String res = "";
+		boolean tx = startTransaction();
+		try {
+		
+			if (banca.getAbiNew()!=null && !"".equals(banca.getAbiNew()) && "1".equals(banca.getTipo())) {
+				// check esistenza nuovo abi
+				if (!abiEsiste(banca.getAbiNew()))
+					return "Attenzione, la banca risulta assorbita ma il nuovo codice ABI non è presente in archivio";
+			}
+			
+			// controlli superati, chiama la stored per salvare
+			
+			/*
+			 	CREATE PROCEDURE [dbo].[spInsertAP_ABI]
+					@SecurityUserId VARCHAR(15),
+					@SecurityGuid UNIQUEIDENTIFIER,
+				
+					@ID int,
+					@ABI VARCHAR(5),
+					@DESCRI VARCHAR(80),
+					@TIPO VARCHAR(1),
+					@ABI_NEW VARCHAR(5)
+			 */
+			CallableStatement proc;
+			try {
+				proc = getConnection().prepareCall("{? = call spInsertAP_ABI (?,?,?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, (banca.getId()!=null ? banca.getId(): 0));
+				proc.setString(5, banca.getAbi());
+				proc.setString(6, banca.getDescri());
+				proc.setString(7,  banca.getTipo());
+				proc.setString(8, banca.getAbiNew());
+				
+				proc.execute();
+					
+				int spRes = proc.getInt(1);
+					
+				res = "";
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				res = e.getMessage();
+			}
+			
+		
+		}finally {
+			if (tx)
+				tx = commit();
+		}
+		
+		return res;
+	}
+
+	private boolean abiEsiste(String newAbi) {
+		SQLQuery q = currentSession().createSQLQuery("select count(*) from ap_abi where abi=:abi");
+		q.setParameter("abi", newAbi);
+		
+		Integer res = (Integer) q.uniqueResult();
+		
+		return res>0;
+	}
+
+	public ApAbi getByAbi(String abi) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(ApAbi.class);
+			crit.add(Restrictions.eq("abi", abi));
+			
+			List<ApAbi> res = crit.list();
+			
+			if (res.size()>0)
+				return res.get(0);
+			else
+				return null;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}	
+	
+}

+ 234 - 0
sicura.business/src/dao/ApCabDao.java

@@ -0,0 +1,234 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+
+import antlr.StringUtils;
+import bean.AppVariables;
+import bean.filters.RicercaBancaFilterBean;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import common.utility.StringUtilities;
+import sicura.entities.ApCab;
+
+@Repository
+public class ApCabDao extends GenericDAO<ApCab, Integer> implements IDAO<ApCab, Integer> {
+
+	public boolean existsAbiCab(String abi, String cab, boolean useTransactions) {
+		
+		boolean tx=false;
+		if(useTransactions)
+			tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(ApCab.class);
+			crit
+				.add(Restrictions.eq("abi", abi))
+				.add(Restrictions.eq("cab", cab))
+				.setProjection(Projections.id())
+		    	.setMaxResults(1);
+			
+		    boolean res = crit.uniqueResult() != null;
+		    return res;
+		} finally {		    
+			if (useTransactions)
+				if (tx)
+					commit();
+		}
+	}
+	
+	public boolean existsAbi(String abi, boolean useTransactions) {
+		
+		boolean tx = false;
+		
+		if (useTransactions)
+			tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(ApCab.class);
+			crit
+				.add(Restrictions.eq("abi", abi))
+				.setProjection(Projections.id())
+		    	.setMaxResults(1);
+			
+		    boolean res = crit.uniqueResult() != null;
+		    return res;
+		}finally {		
+			if (useTransactions)
+				if (tx)
+					commit();
+		}
+	}
+
+	public boolean existsAbi(String abi) {
+		return existsAbi(abi, true);
+	}
+
+	
+	public List<ApCab> filterFiliale(RicercaBancaFilterBean filterBean) {
+		
+		boolean tx = startTransaction();
+		try {
+			String sql = "Select ap_cab.* FROM Ap_Abi LEFT JOIN Ap_Cab ON Ap_Abi.Abi = Ap_Cab.Abi where 1=1 ";
+			
+			if (!StringUtilities.empty(filterBean.getAbi()))
+				sql += " and Ap_Cab.Abi='" + filterBean.getAbi() + "'";
+			if (!StringUtilities.empty(filterBean.getCab()))
+				sql += " and Ap_Cab.Cab='" + filterBean.getCab() + "'";
+				
+			if (!StringUtilities.empty(filterBean.getAgenzia()))
+				sql += " and agenzia like '%" + filterBean.getAgenzia() + "%'";
+			if (!StringUtilities.empty(filterBean.getIndirizzo()))
+				sql += " and indir like '%" + filterBean.getIndirizzo() + "%'";
+			
+			if (!StringUtilities.empty(filterBean.getComune()))
+				switch (filterBean.getTipoRicerca()) {
+				case 0:
+					sql += " and comune ='" + filterBean.getComune()+"'";
+					break;
+				case 1:
+					sql +=  " and comune like '%" + filterBean.getComune()+"%'";
+					break;
+				case 2:
+					sql +=  " and comune like '" + filterBean.getComune()+"%'";
+					break;
+				}
+			if (!StringUtilities.empty(filterBean.getLocalita()))
+				sql += " and localita like '%" + filterBean.getLocalita() + "%'";
+			if (!StringUtilities.empty(filterBean.getProvincia()))
+				sql += " and prov like '%" + filterBean.getProvincia() + "%'";
+			if (!StringUtilities.empty(filterBean.getCap()))
+				sql += " and cap like '%" + filterBean.getCap() + "%'";
+			
+			if (StringUtilities.empty(filterBean.getAbi()))
+				sql += " order by descri";
+			else
+				sql += " order by comune";
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.addEntity(ApCab.class);
+			
+			List<ApCab> res = q.list();
+			return res;
+		} finally {			
+			if (tx)
+				commit();
+		}			
+	}
+
+	public String saveFiliale(ApCab filiale, AppVariables appVariables) {
+		boolean tx = startTransaction();
+		String res = "";
+		
+		try {
+			
+			/*
+			 CREATE PROCEDURE [dbo].[spInsertAP_CAB]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@ID int,
+				@ABI varchar(5),
+				@CAB varchar(5),
+				@AGENZIA varchar(40),
+				@INDIR varchar(80),
+				@LOCALITA varchar(40),
+				@COMUNE varchar(40),
+				@PROV varchar(2),
+				@CAP varchar(5)
+			 */
+			
+			CallableStatement proc;
+			try {
+				proc = getConnection().prepareCall("{? = call spInsertAP_CAB (?,?,?,?,?,?,?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, 0); //filiale.getId() -> Null Exception se null, ma in ogni caso non viene usato
+				proc.setString(5, filiale.getAbi());
+				proc.setString(6, filiale.getCab());
+				proc.setString(7,  filiale.getAgenzia());
+				proc.setString(8, filiale.getIndir());
+				proc.setString(9, filiale.getLocalita());
+				proc.setString(10, filiale.getComune());
+				proc.setString(11, filiale.getProv());
+				proc.setString(12, filiale.getCap());
+						
+				proc.execute();
+					
+				int spRes = proc.getInt(1);
+					
+				res = "";
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				res = e.getMessage();
+			}
+			
+		} finally {
+			if (tx)
+				tx=commit();
+		}
+		
+		return res;
+	}
+
+	public String deleteFiliale(Integer idFiliale, AppVariables appVariables) {
+		boolean tx = startTransaction();
+		String res = "";
+		
+		try {
+			
+			ApCab filiale= readNoTransaction(idFiliale);
+			if (filiale == null)
+				return "Filiale non trovata";
+			
+			/*
+			 CREATE PROCEDURE spDeleteAP_CAB
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@ABI varchar(5),
+				@CAB varchar(5)
+			 */
+			
+			CallableStatement proc;
+			try {
+				proc = getConnection().prepareCall("{? = call spDeleteAP_CAB (?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setString(4, filiale.getAbi());
+				proc.setString(5, filiale.getCab());
+						
+				proc.execute();
+					
+				int spRes = proc.getInt(1);
+					
+				res = "";
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				res = e.getMessage();
+			}
+		
+			return res;	
+		
+		} finally {
+			if (tx)
+				tx=commit();
+		}
+	}
+	
+}
+

+ 51 - 0
sicura.business/src/dao/CondizioniCtrlDAO.java

@@ -0,0 +1,51 @@
+package dao;
+
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.Query;
+import org.hibernate.SQLQuery;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.CondizioniCtrlRid;
+
+@Repository
+public class CondizioniCtrlDAO extends GenericDAO<CondizioniCtrlRid, Integer>
+		implements IDAO<CondizioniCtrlRid, Integer> {
+
+	public List<CondizioniCtrlRid> getCondizioni(AppVariables appVariables, int SecurityOrganizationUnitId, String tipologia,
+			boolean useTransactions) {
+		boolean tx = false;
+
+		if (useTransactions)
+			tx = startTransaction();
+		try {
+			
+			
+			SQLQuery q = currentSession().createSQLQuery("EXEC spMI_Convalida_FillCondizioni :SecurityID, :SecurityGuid, :SecurityOrganizationUnitId,  :Tipologia");
+			q
+				.setParameter("SecurityID", null)
+				.setParameter("SecurityGuid", null)
+				.setParameter("SecurityOrganizationUnitId", null)
+				.setParameter("Tipologia", tipologia)
+			 	.addEntity(CondizioniCtrlRid.class);	
+			
+			
+/*
+			String sql = String.format("select * from Condizioni_Ctrl_%s order by campo_chiave,contatore", tipologia);
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.addEntity(CondizioniCtrlRid.class);
+*/
+			List<CondizioniCtrlRid> res = q.list();
+
+			return res;
+		} finally {
+			if (useTransactions)
+				if (tx)
+					commit();
+		}
+	}
+}

+ 146 - 0
sicura.business/src/dao/ContiDAO.java

@@ -0,0 +1,146 @@
+package dao;
+
+import java.util.Date;
+import java.util.List;
+
+import org.hibernate.SQLQuery;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import bean.filters.ContiFilterBean;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.Banche;
+import sicura.entities.BancheId;
+
+@Repository
+public class ContiDAO extends GenericDAO<BancheId, Integer> implements IDAO<BancheId, Integer> {
+
+	public List<BancheId> list(ContiFilterBean filterBean, AppVariables appVariables) {
+		int sceltaID = 0;
+		String sql = "";
+		
+		List<BancheId> res = null;
+		
+		if (!filterBean.getInEstrattoreDistinteBanca()) {
+			sceltaID = 0;
+			if (!filterBean.getInBancaAllineamento()) {
+				if (!"TUTTICONTI".equalsIgnoreCase(filterBean.getInFunzioneOrdinante())) {
+					sql = "Select banche.* FROM Banche INNER JOIN FunzioniOrdinantiConti ON "+
+			                  "Banche.ID = FunzioniOrdinantiConti.IDConto " +
+			                  "WHERE FunzioniOrdinantiConti.FunzioneOrdinante='" + filterBean.getInFunzioneOrdinante()+"' " +
+			                  (filterBean.getInOnlyContiCassa()? " AND ContoPerCassa=1 ": "") +
+			                  (filterBean.getInOnlyContiBancoPosta()? " AND ABI='07601' ": "") +
+			                  " ORDER BY ABI,CAB";
+				} else {
+					sql = "Select banche.* FROM Banche WHERE [CodiceSocietà]='" + appVariables.getCodiceSocieta()+"'" +
+			                  (filterBean.getInOnlyContiCassa() ?" AND ContoPerCassa=1 ": "") +
+			                  (filterBean.getInOnlyContiBancoPosta()? " AND ABI='07601' ": "");
+				}
+				
+				res = getBanche(sql);
+				
+				if (res.size()==0) {
+					if (!"TUTTICONTI".equalsIgnoreCase(filterBean.getInFunzioneOrdinante())) {
+						sql =  "Select banche.* from Banche INNER JOIN FunzioniOrdinantiConti ON " +
+			                      "Banche.ID = FunzioniOrdinantiConti.IDConto " +
+			                      "WHERE FunzioniOrdinantiConti.FunzioneOrdinante='" + filterBean.getInFunzioneOrdinante() + "' "+
+			                      (filterBean.getInOnlyContiCassa()? " AND ContoPerCassa=1 ": "") +
+			                      (filterBean.getInOnlyContiBancoPosta()? " AND ABI='07601' ": "") +
+			                      " ORDER BY ABI,CAB";
+					} else {
+						sql= "Select banche.* FROM Banche WHERE "+
+			                      "CodiceSocietà='" + appVariables.getCodiceSocieta()+"' " + 
+			                      (filterBean.getInOnlyContiCassa()? " AND ContoPerCassa=1 ": "") +
+			                      (filterBean.getInOnlyContiBancoPosta()? " AND ABI='07601' ": "");
+					}
+					
+					res = getBanche(sql);
+				}
+			} else {
+				if (!"TUTTICONTI".equalsIgnoreCase(filterBean.getInFunzioneOrdinante())) {
+					sql = String.format(
+							"Select banche.* FROM Banche INNER JOIN FunzioniOrdinantiConti ON Banche.ID = FunzioniOrdinantiConti.IDConto WHERE FunzioniOrdinantiConti.FunzioneOrdinante='%s' AND ContoAllineamento=1 ORDER BY ABI,CAB",
+							filterBean.getInFunzioneOrdinante());
+				} else {
+					sql = String.format("Select banche.* FROM Banche WHERE [CodiceSocietà]='%s'", appVariables.getCodiceSocieta());
+				}
+				
+				res = getBanche(sql);
+				
+				if (res.size()==0) {
+					if (!"TUTTICONTI".equalsIgnoreCase(filterBean.getInFunzioneOrdinante())) {
+						sql = String.format(
+								"Select banche.* from Banche INNER JOIN FunzioniOrdinantiConti ON "+
+			                      "Banche.ID = FunzioniOrdinantiConti.IDConto " +
+			                      "WHERE FunzioniOrdinantiConti.FunzioneOrdinante='%s' "+
+			                      "AND ContoAllineamento=1 ORDER BY ABI,CAB",
+		                      filterBean.getInFunzioneOrdinante()  
+						);
+					} else {
+						sql= String.format(
+							"Select * FROM Banche WHERE [CodiceSocietà]='%s'",
+							appVariables.getCodiceSocieta()							
+						);
+					}
+					
+					res = getBanche(sql);
+					
+				}
+			}
+		} else { //filterBean.getInEstrattoreDistinteBanca()
+				sql = String.format(
+						"Select * FROM Banche WHERE [CodiceSocietà]='%s'",
+						appVariables.getCodiceSocieta()
+				);
+				
+				res = getBanche(sql);
+		}		
+		
+		return res;
+	}
+	
+	private List<BancheId> getBanche(String sql) {
+		boolean tx = startTransaction();
+		
+		try {
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(BancheId.class));
+			
+			q.addScalar("id");
+			q.addScalar("codiceSocietà");
+			q.addScalar("funzioneOrdinante");
+			q.addScalar("abi");
+			q.addScalar("cab");
+			q.addScalar("conto");
+			q.addScalar("contoFormatoContabilizzazione");
+			q.addScalar("divisa");
+			q.addScalar("descrizioneConto");
+			q.addScalar("coordinateIban");
+			q.addScalar("saldoContabile");
+			q.addScalar("segnoSaldoContabile");
+			q.addScalar("dataSaldoContabile");
+			q.addScalar("saldoLiquido");
+			q.addScalar("segnoSaldoLiquido");
+			q.addScalar("dbgridSelect");
+			q.addScalar("contoDefault");
+			q.addScalar("codiceSia");
+			q.addScalar("saldoValutazioneCapienza");
+			q.addScalar("segnoValutazioneCapienza");
+			q.addScalar("lastSaved");
+			q.addScalar("flagStampa");
+			q.addScalar("circuitoFlussoOut");
+			q.addScalar("contoPerCassa");
+			q.addScalar("flagContabilizzazione");
+			q.addScalar("flagExportPrometeo");
+			
+			List<BancheId> banche = q.list();		
+			
+			return banche;
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+}

+ 215 - 0
sicura.business/src/dao/ContiDestinatariDao.java

@@ -0,0 +1,215 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.MultiValueMap;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.ContiDestinatari;
+
+@Repository
+public class ContiDestinatariDao extends GenericDAO<ContiDestinatari, Integer> implements IDAO<ContiDestinatari, Integer> {
+	
+	
+	public List<ContiDestinatari> listForDestinatario(Integer idDestinatario, Integer startFrom, Integer length, String orderField) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(ContiDestinatari.class);
+			crit
+				.add(Restrictions.eq("iddestinatario", idDestinatario))
+				.setFirstResult(startFrom)
+				.setMaxResults(length);
+			
+			if (orderField==null || "".equals(orderField))
+				crit.addOrder(Order.asc("id"));
+			else
+				crit.addOrder(getOrderBy(orderField));
+			
+			try {
+				List<ContiDestinatari> res = crit.list(); 
+				return res;
+			} catch (Exception ex) {
+				ex.printStackTrace();
+				return null;
+			}		
+			
+
+		} finally {
+			if (tx)
+				tx=commit();
+		}			
+	}
+	
+	public Integer countForDestinatario(Integer idDestinatario) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(ContiDestinatari.class);
+			crit
+				.add(Restrictions.eq("iddestinatario", idDestinatario))
+				.setProjection(Projections.rowCount());			
+			
+			Integer res = ((Long) crit.uniqueResult()).intValue();
+			
+			return res;
+		}finally {
+			if (tx)
+				tx=commit();
+		}
+	}
+	
+	public Integer save(ContiDestinatari conto, AppVariables appVariables) throws Exception {
+		
+		/*
+		 CREATE PROCEDURE [dbo].[spAddContiDestinatari]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@IDOrdinante  int,
+			@IDDestinatario int 
+		  
+		  CREATE PROCEDURE [dbo].[spModifyContiDestinatari]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@ID			int,
+			@IDOrdinante		int,
+			@IDDestinatario		int,
+			@Abi			varchar(5),
+			@Cab			varchar(5),
+			@Conto			varchar(12),
+			@Cin			varchar(1),
+			@CoordinateIBAN	varchar(42),
+			@CodiceBIC		varchar(11),
+			@DescrizioneBanca	varchar(50),
+			@IntestatarioConto	varchar(50),
+			@CodiceFiscaleSottoscrittoreRIA	varchar(16),
+			@Conto_Default		bit,
+			@LastSaved	timestamp
+		 */
+		
+		
+		
+		boolean tx = startTransaction();
+		try {
+			Integer res = null;
+			Connection connection = getConnection();
+	
+			CallableStatement proc;
+			try {
+				if (conto.getId()==null || conto.getId()==0) {
+					proc = connection.prepareCall("{? = call spAddContiDestinatari (?,?,?,?)}");
+					proc.registerOutParameter(1, Types.INTEGER);
+					proc.setString(2, appVariables.getUserId());
+					proc.setString(3, appVariables.getGuid());
+					proc.setObject(4, conto.getId());
+					proc.setObject(5, conto.getIdordinante());
+					
+					proc.execute();
+					proc.getMoreResults();
+						
+					res = proc.getInt(1);
+					if (res>0) {
+						conto.setId(res);
+						ContiDestinatari contoTest = readNoTransaction(conto.getId());
+						conto.setLastSaved(contoTest.getLastSaved());
+					} else {
+						res = -99;
+					}
+				}
+				
+				if (conto.getId()!=null && conto.getId()>0) {
+						proc = connection.prepareCall("{? = call spModifyContiDestinatari (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
+							
+						proc.registerOutParameter(1, Types.VARCHAR);
+						proc.setString(2, appVariables.getUserId());
+						proc.setString(3, appVariables.getGuid());
+						proc.setObject(4, conto.getId());
+						proc.setObject(5, conto.getIdordinante());
+						proc.setObject(6, conto.getIddestinatario());
+						proc.setString(7, conto.getAbi());
+						proc.setString(8, conto.getCab());
+						proc.setString(9, conto.getConto());
+						proc.setString(10, conto.getCin());
+						proc.setString(11, conto.getCoordinateIban());
+						proc.setString(12, conto.getCodiceBic());
+						proc.setString(13, conto.getDescrizioneBanca());
+						proc.setString(14, conto.getIntestatarioConto());
+						proc.setString(15, conto.getCodiceFiscaleSottoscrittoreRia());
+						proc.setBoolean(16, conto.isContoDefault());
+						proc.setBytes(17,conto.getLastSaved());
+						
+						proc.execute();
+						proc.getMoreResults();
+						
+						res = proc.getInt(1);
+				}				
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return null;
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}	
+		
+
+	}
+	
+	public Integer delete (Integer id, AppVariables appVariables) {
+		/*
+		 * CREATE PROCEDURE [dbo].[spDeleteContiDestinatari]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@ID		int
+		 */
+		boolean tx = startTransaction();
+		try {
+			Integer res = null;
+			Connection connection = getConnection();
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spDeleteContiDestinatari (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, id);
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return null;
+			}
+			
+			return res;
+
+			
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+}

+ 336 - 0
sicura.business/src/dao/DelegheSepaDAO.java

@@ -0,0 +1,336 @@
+package dao;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.hibernate.Query;
+import org.hibernate.SQLQuery;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.StringUtils;
+
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import bean.filters.DelegheSepaFilterBean;
+import bean.query.AggregatoAbiDelegaSepaQueryBean;
+import bean.query.DelegaSepaQueryBean;
+import bean.query.DelegheSepaExportBean;
+import sicura.entities.DelegheSepa;
+
+@Repository
+public class DelegheSepaDAO extends GenericDAO<DelegheSepa, Integer> implements IDAO<DelegheSepa, Integer>  {
+
+	private final String K_IN_CARICO = "0";
+	private final String K_NON_ATTIVE = "1";
+	private final String K_TUTTE = "2";
+	
+	public Integer count(DelegheSepaFilterBean disposizioneSepaFilterBean) {
+			
+		boolean tx = startTransaction();
+		Integer res = 0;
+		try {
+		
+			SQLQuery q = currentSession().createSQLQuery(getQuery(disposizioneSepaFilterBean, true));
+			q = resolveParams(q, disposizioneSepaFilterBean);
+			
+			res = (Integer)q.uniqueResult();
+		} finally {			
+			if(tx)
+				commit();
+		}
+		return res;
+	}
+	
+	@SuppressWarnings("unchecked")
+	public List<DelegaSepaQueryBean> list(Integer from, Integer length, DelegheSepaFilterBean disposizioneSepaFilterBean) {
+		List<DelegaSepaQueryBean> res = null;
+		boolean tx = startTransaction();
+		try {
+			SQLQuery q = currentSession().createSQLQuery(getQuery(disposizioneSepaFilterBean, false));
+			q = resolveParams(q, disposizioneSepaFilterBean);
+	
+				q
+					.setFirstResult(from)
+					.setMaxResults(length);
+				
+			q.setResultTransformer(new AliasToBeanResultTransformer(DelegaSepaQueryBean.class));	
+			
+			q.addScalar("ID");                 
+			q.addScalar("IDOrdinante");         
+			q.addScalar("CodiceSIA");          
+			q.addScalar("TipoCodiceDestinatario");
+			q.addScalar("CodiceDestinatario");   
+			q.addScalar("Abi");                  
+			q.addScalar("dataAperturaMandato");  
+			q.addScalar("dataChiusuraMandato");  
+			q.addScalar("statoAllineamento");   
+			q.addScalar("dataCreazioneMandato"); 
+			
+			
+	//		Object res1 = q.list();
+			res = q.list();
+		}finally {			
+			if(tx)
+				commit();
+		}
+		return res;
+	}
+	
+	@SuppressWarnings("unchecked")
+	public List<AggregatoAbiDelegaSepaQueryBean> listAggregatoAbi(Integer from, Integer length, DelegheSepaFilterBean disposizioneSepaFilterBean) {
+		List<AggregatoAbiDelegaSepaQueryBean> res = null;
+		
+		boolean tx = startTransaction();
+		
+		try {
+			SQLQuery q = currentSession().createSQLQuery(getQuery(disposizioneSepaFilterBean, false));
+			q = resolveParams(q, disposizioneSepaFilterBean);
+			
+			if (from!=null && length!=null)
+				q.setFirstResult(from).setMaxResults(length);
+			
+//				q
+//					.setParameter("firstResult", from)
+//					.setParameter("maxResult", length);
+			
+			q
+				.addScalar("Abi")
+				.addScalar("banca")
+				.addScalar("numeroMandati")
+				.addScalar("statoAllineamento");
+			
+			q.setResultTransformer(new AliasToBeanResultTransformer(AggregatoAbiDelegaSepaQueryBean.class));	
+
+			res = q.list();
+			
+			
+		} finally {
+			if (tx)
+				tx = commit();			
+		}
+		return res;
+		
+	}
+	
+	public String getQuery(DelegheSepaFilterBean disposizioneSepaFilterBean, boolean doCount) {
+		
+		String sql = "select "+(doCount? "count(*)": "*")  + " from (";
+				
+		if (!disposizioneSepaFilterBean.isAggregazioneABI()) {
+			
+			if (K_IN_CARICO.equals(disposizioneSepaFilterBean.getTipo())) {
+				sql += " SELECT ID,IDOrdinante,CodiceSIA,TipoCodiceDestinatario,CodiceDestinatario,Abi,Data_Apertura_Mandato as dataAperturaMandato,null as dataChiusuraMandato,StatoAllineamento,Data_Creazione_Mandato as dataCreazioneMandato FROM DelegheSEPA";	
+			} else if (K_NON_ATTIVE.equals(disposizioneSepaFilterBean.getTipo())) {
+				sql += " SELECT ID,IDOrdinante,CodiceSIA,TipoCodiceDestinatario,CodiceDestinatario,Abi,Data_Apertura_Mandato as dataAperturaMandato,Data_Chiusura_Mandato as dataChiusuraMandato,StatoAllineamento,Data_Creazione_Mandato as dataCreazioneMandato FROM DelegheSEPAStorico ";
+			} else if (K_TUTTE.equals(disposizioneSepaFilterBean.getTipo())) {
+				sql += "SELECT ID,IDOrdinante,CodiceSIA,TipoCodiceDestinatario,CodiceDestinatario,Abi,Data_Apertura_Mandato as dataAperturaMandato,null as  dataChiusuraMandato,StatoAllineamento,Data_Creazione_Mandato as dataCreazioneMandato FROM DelegheSEPA "
+				     + " UNION ALL" 
+					 + " SELECT ID,IDOrdinante,CodiceSIA,TipoCodiceDestinatario,CodiceDestinatario,Abi,Data_Apertura_Mandato as dataAperturaMandato,Data_Chiusura_Mandato as dataChiusuraMandato,StatoAllineamento,Data_Creazione_Mandato as dataCreazioneMandato FROM DelegheSEPAStorico";
+			}
+			sql += ") as t where 1=1 ";
+			
+			if (!StringUtils.isEmpty(disposizioneSepaFilterBean.getCodiceClienteDebitore()))
+				sql += " and t.CodiceDestinatario = :codiceDestinatario";
+	
+			if (!StringUtils.isEmpty(disposizioneSepaFilterBean.getCodiceDelega()))
+				sql += " and t.CodiceDestinatario = :codDelega";
+	
+			if (disposizioneSepaFilterBean.isCbDaDataApertura() && disposizioneSepaFilterBean.getDaDataApertura()!=null)
+				sql += " and t.DataAperturaMandato>=:daDataApertura";
+			if (disposizioneSepaFilterBean.isCbADataApertura() && disposizioneSepaFilterBean.getaDataApertura()!=null)
+				sql += " and t.DataAperturaMandato<=:aDataApertura";
+			
+			if (disposizioneSepaFilterBean.isCbDaDataChiusura() && disposizioneSepaFilterBean.getDaDataChiusura()!=null)
+				sql += " and t.DataChiusuraMandato>=:daDataChiusura";
+			if (disposizioneSepaFilterBean.isCbADataChiusura() && disposizioneSepaFilterBean.getaDataChiusura()!=null)
+				sql += " and t.DataChiusuraMandato<=:aDataChiusura";
+			
+			if (disposizioneSepaFilterBean.getStatoDelega() != null && !"-1".equals(disposizioneSepaFilterBean.getStatoDelega()))
+				sql += " and t.StatoAllineamento=:statoAllineamento";
+			
+			if (!StringUtils.isEmpty(disposizioneSepaFilterBean.getCodiceAbi()))
+				sql += " and t.ABI=:codiceAbi";
+		} else  {
+			if (K_IN_CARICO.equals(disposizioneSepaFilterBean.getTipo())) {
+				sql = " SELECT DelegheSEPA.Abi, Count(DelegheSEPA.Abi) as NumeroMandati,Descri as Banca,StatoAllineamento from DelegheSEPA " +
+				" join AP_ABI on AP_ABI.Abi = DelegheSEPA.Abi "+	
+				" GROUP BY DelegheSEPA.Abi,Descri,StatoAllineamento " +
+				(doCount? "": " ORDER BY DelegheSEPA.Abi");
+
+				if (doCount)
+					sql = "select count(*) from (" + sql +" ) t";  
+			
+				            
+			} else if (K_NON_ATTIVE.equals(disposizioneSepaFilterBean.getTipo())) {
+
+				sql = " SELECT DelegheSEPAStorico.Abi, Descri as Banca, Count(DelegheSEPAStorico.Abi) as NumeroMandati,StatoAllineamento FROM DelegheSEPAStorico " +
+				" join AP_ABI on AP_ABI.Abi = DelegheSEPAStorico.Abi "+
+				" GROUP BY DelegheSEPAStorico.Abi,Descri, StatoAllineamento"+
+				(doCount?"": " ORDER BY DelegheSEPAStorico.Abi ");
+				
+				if (doCount)
+					sql = "select count(*) from (" + sql +" ) t";  
+					
+//				String subSQL = " (SELECT DelegheSEPAStorico.Abi, Descri as Banca, Count(DelegheSEPAStorico.Abi) as NumeroMandati,StatoAllineamento FROM DelegheSEPAStorico " +
+//							" join AP_ABI on AP_ABI.Abi = DelegheSEPAStorico.Abi "+
+//							" GROUP BY DelegheSEPAStorico.Abi,Descri, StatoAllineamento ORDER BY DelegheSEPAStorico.Abi) t ";
+//				
+//				sql = "SELECT  " + (doCount? "count(*)": "*") + " FROM    ( SELECT  ROW_NUMBER() OVER ( ORDER BY Abi, StatoAllineamento  ) AS RowNum, * FROM (";
+//				sql += subSQL;
+//				sql += ") AS RowConstrainedResult";
+//				if (!doCount) {
+//					sql += " WHERE   RowNum >= :firstResult"+
+//						   " AND RowNum < :maxResult"+
+//						   " ORDER BY RowNum  ";
+//				}
+			} else if (K_TUTTE.equals(disposizioneSepaFilterBean.getTipo())) {
+				sql = 
+						" select DelegheSEPA.abi, Descri as Banca,  Count(DelegheSEPA.Abi) as NumeroMandati, StatoAllineamento "+ 
+			              " from DelegheSEPA "+        
+			              " join AP_ABI on AP_ABI.Abi = DelegheSEPA.Abi "+
+			              " GROUP BY DelegheSEPA.Abi, descri, StatoAllineamento "+        
+			              " UNION  ALL "+        
+			              " SELECT DelegheSEPAStorico.Abi, Descri as Banca, Count(DelegheSEPAStorico.Abi) as NumeroMandati, StatoAllineamento "+        
+			             " FROM  DelegheSEPAStorico "+
+			             " join AP_ABI on AP_ABI.Abi = DelegheSEPAStorico.Abi "+
+			             " GROUP BY DelegheSEPAStorico.Abi, descri, StatoAllineamento ";
+
+				if (doCount)
+					sql = "select count(*) from (" + sql + ") t";
+				else 
+					sql += " order by DelegheSEPA.abi";
+					
+//				String subSQL = " ( select DelegheSEPA.abi, Descri as Banca,  Count(DelegheSEPA.Abi) as NumeroMandati, StatoAllineamento "+ 
+//		              " from DelegheSEPA "+        
+//		              " join AP_ABI on AP_ABI.Abi = DelegheSEPA.Abi "+
+//		              " GROUP BY DelegheSEPA.Abi, descri, StatoAllineamento "+        
+//		              " UNION  ALL "+        
+//		              " SELECT DelegheSEPAStorico.Abi, Descri as Banca, Count(DelegheSEPAStorico.Abi) as NumeroMandati, StatoAllineamento "+        
+//		             " FROM  DelegheSEPAStorico "+
+//		             " join AP_ABI on AP_ABI.Abi = DelegheSEPAStorico.Abi "+
+//		             " GROUP BY DelegheSEPAStorico.Abi, descri, StatoAllineamento ) t";
+//			
+//				sql = "SELECT  " + (doCount? "count(*)": "*") + " FROM    ( SELECT  ROW_NUMBER() OVER ( ORDER BY Abi, StatoAllineamento  ) AS RowNum, * FROM ";
+//				sql += subSQL;
+//				sql += ") AS RowConstrainedResult";
+//				if (!doCount) {
+//					sql += " WHERE   RowNum >= :firstResult"+
+//						   " AND RowNum < :maxResult"+
+//						   " ORDER BY RowNum  ";
+//				}
+			}
+		}
+		
+		return sql;
+	}
+	
+	public SQLQuery resolveParams(SQLQuery q, DelegheSepaFilterBean disposizioneSepaFilterBean) {
+		if (!StringUtils.isEmpty(disposizioneSepaFilterBean.getCodiceClienteDebitore()))
+			q.setParameter("codiceDestinatario", disposizioneSepaFilterBean.getCodiceClienteDebitore());
+
+		if (!StringUtils.isEmpty(disposizioneSepaFilterBean.getCodiceDelega()))
+			q.setParameter("codDelega", disposizioneSepaFilterBean.getCodiceDelega());
+
+		
+		if (disposizioneSepaFilterBean.isCbDaDataApertura() && disposizioneSepaFilterBean.getaDataApertura() != null)
+			q.setParameter("daDataApertura", disposizioneSepaFilterBean.getDaDataApertura());
+		if (disposizioneSepaFilterBean.isCbADataApertura() && disposizioneSepaFilterBean.getaDataApertura()!=null)
+			q.setParameter("aDataApertura",disposizioneSepaFilterBean.getaDataApertura());
+		
+		if (disposizioneSepaFilterBean.isCbDaDataChiusura() && disposizioneSepaFilterBean.getDaDataChiusura()!=null)
+			q.setParameter("daDataChiusura",disposizioneSepaFilterBean.getDaDataChiusura());
+		
+		if (disposizioneSepaFilterBean.isCbADataChiusura() && disposizioneSepaFilterBean.getaDataChiusura()!=null)
+			q.setParameter("aDataChiusura",disposizioneSepaFilterBean.getaDataChiusura());
+		
+		if (disposizioneSepaFilterBean.getStatoDelega() != null && !"-1".equals(disposizioneSepaFilterBean.getStatoDelega()))
+			q.setParameter("statoAllineamento",disposizioneSepaFilterBean.getStatoDelega());
+		
+		if (!StringUtils.isEmpty(disposizioneSepaFilterBean.getCodiceAbi()))
+			q.setParameter("codiceAbi",disposizioneSepaFilterBean.getCodiceAbi());
+		
+		return q;
+	}
+	
+	public List<String> export (DelegheSepaFilterBean disposizioneSepaFilterBean) {
+		
+		List<String> res = new ArrayList<String>();
+		String sql = getExportQuery(disposizioneSepaFilterBean);
+		boolean tx = startTransaction();
+		try {
+			SQLQuery q = currentSession().createSQLQuery(getExportQuery(disposizioneSepaFilterBean));
+			q.setResultTransformer(new AliasToBeanResultTransformer(DelegheSepaExportBean.class));	
+
+			List<DelegheSepaExportBean> deleghe = q.list();
+			
+			res.add("Abi;Banca;In attesa;Non attive;Attive;Attivate SDD");
+			for(DelegheSepaExportBean delega: deleghe) {
+				String linea = safeString(delega.getAbi())+";"
+						+safeString(delega.getBanca())+";"
+						+safeIntToString(delega.getNumeroInAttesa()) + ";"
+						+safeIntToString(delega.getNumeroInattivi())+";"
+						+safeIntToString(delega.getNumeroAttivi())+";"
+						+safeIntToString(delega.getNumeroAttivatiSDD())
+						;
+				res.add(linea);
+			}
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+		
+	}
+
+	private String getExportQuery(DelegheSepaFilterBean disposizioneSepaFilterBean) {
+		
+		String sql = "";
+		
+		if (K_IN_CARICO.equals(disposizioneSepaFilterBean.getTipo())) {
+			sql = " SELECT d.Abi, descri as Banca, " +
+				"	sum(case when StatoAllineamento=0 then 1 else 0 end) as numeroInAttesa," + 
+				"	sum(case when StatoAllineamento=1 then 1 else 0 end) as numeroAttivi," + 
+				"	sum(case when StatoAllineamento=2 then 1 else 0 end) as numeroInattivi," + 
+				"	sum(case when StatoAllineamento=6 then 1 else 0 end) as numeroAttivatiSDD" + 
+				" from DelegheSEPA d" + 
+				" join AP_ABI on AP_ABI.Abi = d.Abi "+
+				" GROUP BY d.Abi, descri" +
+				" order by d.abi";
+		} else if (K_NON_ATTIVE.equals(disposizioneSepaFilterBean.getTipo())) {
+			sql = " SELECT d.Abi, descri as Banca, " +
+					"	sum(case when StatoAllineamento=0 then 1 else 0 end) as numeroInAttesa," + 
+					"	sum(case when StatoAllineamento=1 then 1 else 0 end) as numeroAttivi," + 
+					"	sum(case when StatoAllineamento=2 then 1 else 0 end) as numeroInattivi," + 
+					"	sum(case when StatoAllineamento=6 then 1 else 0 end) as numeroAttivatiSDD" + 
+					" from DelegheSEPAStorico d" + 
+					" join AP_ABI on AP_ABI.Abi = d.Abi "+
+					" GROUP BY d.Abi, descri" +
+					" order by d.abi";
+		} else if (K_TUTTE.equals(disposizioneSepaFilterBean.getTipo())) {
+			sql = "select abi, Banca, sum(stato0) numeroInAttesa, sum(stato1) numeroAttivi, sum(stato2) numeroInattivi,sum(stato6) numeroAttivatiSDD from (" + 
+				" select d.abi, Descri as Banca," + 
+				"	sum(case when StatoAllineamento=0 then 1 else 0 end) as stato0," + 
+				"	sum(case when StatoAllineamento=1 then 1 else 0 end) as stato1," + 
+				"	sum(case when StatoAllineamento=2 then 1 else 0 end) as stato2," + 
+				"	sum(case when StatoAllineamento=6 then 1 else 0 end) as stato6" + 
+				" from DelegheSEPA d" + 
+				" join AP_ABI on AP_ABI.Abi = d.Abi" + 
+				" GROUP BY d.Abi, descri" + 
+				" UNION  ALL " + 
+				" SELECT DelegheSEPAStorico.Abi, Descri as Banca," + 
+				"	sum(case when StatoAllineamento=0 then 1 else 0 end) as stato0," + 
+				"	sum(case when StatoAllineamento=1 then 1 else 0 end) as stato1," + 
+				"	sum(case when StatoAllineamento=2 then 1 else 0 end) as stato2," + 
+				"	sum(case when StatoAllineamento=6 then 1 else 0 end) as stato6" + 
+				" FROM  DelegheSEPAStorico " +
+				" join AP_ABI on AP_ABI.Abi = DelegheSEPAStorico.Abi" + 
+				" GROUP BY DelegheSEPAStorico.Abi, descri" + 
+				" ) as a" + 
+				" GROUP BY abi, Banca"  
+				;
+		}
+		return sql;
+	}
+}

+ 458 - 0
sicura.business/src/dao/DestinatariDao.java

@@ -0,0 +1,458 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import bean.CambioOrdinanteBean;
+import bean.query.DestinatarioForPrinting;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import common.utility.StringUtilities;
+import sicura.entities.Destinatari;
+import sicura.entities.Ordinanti;
+
+@Repository
+public class DestinatariDao extends GenericDAO<Destinatari, Integer> implements IDAO<Destinatari, Integer> {
+	
+	
+	public List<Destinatari> listForOrdinante(Integer idOrdinante, Integer startFrom, Integer length, String filter, String orderField) {
+		List<Destinatari> res =null;
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(Destinatari.class);
+			crit
+				.add(Restrictions.eq("idordinante", idOrdinante))
+				.setFirstResult(startFrom)
+				.setMaxResults(length);
+			
+			if (!StringUtilities.empty(filter)) {
+				crit.add(Restrictions.or(
+						Restrictions.ilike("destinatario", "%"+filter+"%"),
+						Restrictions.ilike("codiceFiscale", "%"+filter+"%")
+				));			
+			}
+			
+			if (orderField==null || "".equals(orderField))
+				crit.addOrder(Order.asc("id"));
+			else
+				crit.addOrder(getOrderBy(orderField));
+			try {
+				res = crit.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+			}
+		} finally {
+			if (tx)
+				tx=commit();
+		}
+		return res;
+	}
+	public Integer countForOrdinante(Integer idOrdinante, String filter) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(Destinatari.class);
+			crit
+				.add(Restrictions.eq("idordinante", idOrdinante))
+				.setProjection(Projections.rowCount());			
+			
+			if (!StringUtilities.empty(filter)) {
+				crit.add(Restrictions.or(
+						Restrictions.ilike("destinatario", "%"+filter+"%"),
+						Restrictions.ilike("codiceFiscale", "%"+filter+"%")
+				));		
+			}
+	
+			Integer res = ((Long) crit.uniqueResult()).intValue();
+			return res;
+
+		} finally {
+			if (tx)
+				tx=commit();
+		}
+	}
+	public Integer save(Destinatari destinatario, AppVariables appVariables) throws Exception {
+		/*
+		 CREATE PROCEDURE [dbo].[spModifyDestinatario]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@IDDestinatario	int,
+			@IDOrdinante int,
+			@Destinatario varchar(90),
+			@CodiceFiscale varchar(16),
+			@Indirizzo varchar(40),
+			@Cap varchar(5),
+			@Città varchar(25),
+			@Provincia varchar(2),
+			@CodiceDestinatario	varchar(16),
+			@TipoCodiceDestinatario	varchar(1),
+			@SIA varchar(5),
+			@FlagStampa	bit,
+			@FlagExportBollettinoPDF bit,
+			@LastSaved timestamp,
+			@FlagAEA bit,
+			@UpdateFlags int,
+			@BonificoHigPriority bit,
+			@CoordinateIBANordinante varchar(42)
+		 */
+		
+		boolean tx = startTransaction();
+		Integer res = null;
+		Integer updateFlags=1;
+
+		try {
+			
+			try {
+				Connection connection = getConnection();
+				
+				CallableStatement proc;
+				try {
+					
+					if (destinatario.getIddestinatario()==null || destinatario.getIddestinatario()==0) {
+						int id=creaDestinatario(destinatario,appVariables);
+						destinatario.setIddestinatario(id);
+						Destinatari newDestinatario=readNoTransaction(id);
+						destinatario.setLastSaved(newDestinatario.getLastSaved());
+						updateFlags = 0;
+					}
+				
+					
+					proc = connection.prepareCall("{? = call spModifyDestinatario (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
+						
+					proc.registerOutParameter(1, Types.VARCHAR);
+					proc.setString(2, appVariables.getUserId());
+					proc.setString(3, appVariables.getGuid());	
+					proc.setObject(4, destinatario.getIddestinatario());
+					proc.setObject(5, destinatario.getIdordinante());
+					proc.setString(6, destinatario.getDestinatario());
+					proc.setString(7, destinatario.getCodiceFiscale());
+					proc.setString(8, destinatario.getIndirizzo());
+					proc.setString(9, destinatario.getCap());
+					proc.setString(10, destinatario.getCitta());
+					proc.setString(11, destinatario.getProvincia());
+					proc.setString(12, destinatario.getCodiceDestinatario());
+					proc.setString(13, destinatario.getTipoCodiceDestinatario());
+					proc.setString(14, destinatario.getSia());
+					proc.setBoolean(15, destinatario.isFlagStampa());
+					proc.setBoolean(16, destinatario.isFlagExportBollettinoPdf());
+					proc.setBytes(17, destinatario.getLastSaved());
+					proc.setBoolean(18, destinatario.isFlagAea());
+					proc.setInt(19, updateFlags); // Updateflags
+					proc.setBoolean(20, destinatario.isBonificoHigPriority());
+					proc.setString(21, destinatario.getCoordinateIbanordinante());
+					
+					
+					proc.execute();
+					proc.getMoreResults();
+						
+					res = proc.getInt(1);
+						
+					
+				} catch (SQLException ex) {
+					throw ex;
+				}
+				return res;
+			} finally {
+			}		
+					
+		
+		} finally {
+			if (tx)
+				commit();
+		}	
+		
+	}
+	
+	private Integer creaDestinatario(Destinatari destinatario, AppVariables appVariables) throws SQLException {
+		/*
+		  CREATE PROCEDURE [dbo].[spAddDestinatario]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@IDOrdinante  int,
+				@Destinatario varchar(90),
+				@CodiceFiscale varchar(16)
+		 */
+		Connection connection = getConnection();
+		
+		CallableStatement proc;
+		proc = connection.prepareCall("{? = call spAddDestinatario (?,?,?,?,?)}");
+		
+		proc.registerOutParameter(1, Types.VARCHAR);
+		proc.setString(2, appVariables.getUserId());
+		proc.setString(3, appVariables.getGuid());	
+		proc.setObject(4, destinatario.getIdordinante());
+		proc.setString(5, destinatario.getDestinatario());
+		proc.setString(6, destinatario.getCodiceFiscale());
+		
+		
+		proc.execute();
+		proc.getMoreResults();
+			
+		int res = proc.getInt(1);
+		return res;
+	}
+	public void cambioOrdinante(CambioOrdinanteBean cambioOrdinanteBean, AppVariables appVariables) {
+		boolean tx = startTransaction();
+	
+		/*
+		 * CREATE PROCEDURE [dbo].[spCambiaOrdinante]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@NEWIDOrdinante int,
+				@mode	int
+		 */
+		
+
+		try {
+			Connection connection = getConnection(); 
+			
+			String sql = "";
+
+			
+//			sql = generateCreateTableSQL();
+
+			sql += generateFillTableSQL();
+
+			sql += String.format(" exec spCambiaOrdinante '%s', '%s', %d, %d",appVariables.getUserId(), appVariables.getGuid(), cambioOrdinanteBean.getOrdinanteDestinazione(), cambioOrdinanteBean.getTipoCambio());
+			sql += " drop table #TempTabCambioOrdinante";
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.setParameterList("idDestinatari", cambioOrdinanteBean.getDestinatari());
+			q.executeUpdate();
+			
+/*			
+			
+			
+			SQLQuery q = currentSession().createSQLQuery(generateFillTableSQL());
+			//q.addEntity(Destinatari.class);
+			q.setParameterList("idDestinatari", cambioOrdinanteBean.getDestinatari());
+			q.executeUpdate();
+//			if (tx)
+//				tx = commit();
+//			tx = startTransaction();
+
+			
+
+
+		
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spCambiaOrdinante (?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, cambioOrdinanteBean.getOrdinanteDestinazione());
+				proc.setObject(5, cambioOrdinanteBean.getTipoCambio());
+				
+				proc.execute();
+					
+				int res = proc.getInt(1);
+*/				
+			} catch(Exception ex) {
+				ex.printStackTrace();
+				if (tx)
+					tx=rollback();
+			}
+		   finally {
+			if (tx)
+				tx=commit();
+		}
+			
+	}
+	
+	private String generateCreateTableSQL() {
+		String sql = " if OBJECT_ID('#TempTabCambioOrdinante') is null begin "
+				 + "CREATE TABLE #TempTabCambioOrdinante ( "
+				 + "[IDOrdinante] [int] NULL , "
+				 + "[IDDestinatario] [int], "
+				 + "[Destinatario] [varchar] (90), "
+				 + "[CodiceFiscale] [varchar] (16), "
+				 + "[Indirizzo] [varchar] (40), "
+				 + "[Cap] [varchar] (5), "
+				 + "[Città] [varchar] (25), "
+				 + "[Provincia] [varchar] (2), "
+				 + "[CodiceDestinatario] [varchar] (16), "
+				 + "[TipoCodiceDestinatario] [varchar] (1), "
+				 + "[SIA] [varchar] (5), "
+				 + "[FlagStampa] [bit] NOT NULL , "
+				 + "[FlagExportBollettinoPDF] [bit] NOT NULL , "
+				 + "[FlagAEA] [bit] NOT NULL , "
+				 + "[LastSaved] [Binary](8) , "
+				 + "[BonificoHigPriority] [bit] NOT NULL , "
+				 + "[CoordinateIBANordinante] [varchar] (42) "
+				 + ") "
+				 + "end ";
+				
+		return sql;
+		
+	}
+	
+	private String generateFillTableSQL() {
+		String sql = 
+//				"insert into #TempTabCambioOrdinante ( "
+//				 + "[IDOrdinante] , "
+//				 + "[IDDestinatario], "
+//				 + "[Destinatario] , "
+//				 + "[CodiceFiscale], "
+//				 + "[Indirizzo], "
+//				 + "[Cap], "
+//				 + "[Città], "
+//				 + "[Provincia], "
+//				 + "[CodiceDestinatario], "
+//				 + "[TipoCodiceDestinatario], "
+//				 + "[SIA] , "
+//				 + "[FlagStampa] , "
+//				 + "[FlagExportBollettinoPDF], "
+//				 + "[FlagAEA] , "
+//				 + "[LastSaved] , "
+//				 + "[BonificoHigPriority] , "
+//				 + "[CoordinateIBANordinante] "
+//				 + ")"
+				 "select "
+						 + "[IDOrdinante] , "
+						 + "[IDDestinatario], "
+						 + "[Destinatario] , "
+						 + "[CodiceFiscale], "
+						 + "[Indirizzo], "
+						 + "[Cap], "
+						 + "[Città], "
+						 + "[Provincia], "
+						 + "[CodiceDestinatario], "
+						 + "[TipoCodiceDestinatario], "
+						 + "[SIA] , "
+						 + "[FlagStampa] , "
+						 + "[FlagExportBollettinoPDF], "
+						 + "[FlagAEA] , "
+						 + "[LastSaved] , "
+						 + "[BonificoHigPriority] , "
+						 + "[CoordinateIBANordinante] "
+						 + "  into #TempTabCambioOrdinante from destinatari where iddestinatario in (:idDestinatari) ";
+				
+		return sql;
+		
+	}
+	public Integer delete(Integer idDestinatario, AppVariables appVariables) throws SQLException {
+		/*
+		 CREATE PROCEDURE [dbo].[spDeleteDestinatario]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@IDDestinatario		int
+		 */
+		boolean tx = startTransaction();
+		Integer res = null;
+
+		try {
+			
+			try {
+				Connection connection = getConnection();
+				
+				CallableStatement proc;
+				try {
+					proc = connection.prepareCall("{? = call spDeleteDestinatario (?,?,?)}");
+						
+					proc.registerOutParameter(1, Types.VARCHAR);
+					proc.setString(2, appVariables.getUserId());
+					proc.setString(3, appVariables.getGuid());	
+					proc.setObject(4, idDestinatario);
+					
+					proc.execute();
+					proc.getMoreResults();
+						
+					res = proc.getInt(1);
+						
+					
+				} catch (SQLException ex) {
+					throw ex;
+				}
+				return res;
+			} finally {
+			}		
+					
+		
+		} finally {
+			if (tx)
+				commit();
+		}	
+	}
+	
+	public List<DestinatarioForPrinting> listForPrinting(Integer idOrdinante) {
+		boolean tx = startTransaction();
+		List<DestinatarioForPrinting> res = null;
+		try {
+			String sql = "select  " +
+				"d.iddestinatario," +
+				"d.destinatario,"+
+				"d.codiceFiscale,"+
+				"d.indirizzo,"+
+				"d.cap,"+
+				"d.città as citta,"+
+				"d.provincia,"+
+				"d.codiceDestinatario,"+
+				"d.tipoCodiceDestinatario,"+
+				"d.sia,"+
+				"d.coordinateIbanordinante,"+
+				
+				"c.abi,"+
+				"c.cab,"+
+				"c.conto,"+
+				"c.cin,"+
+				"c.coordinateIban,"+
+				"c.codiceBic,"+
+				"c.descrizioneBanca " +
+								
+					" from destinatari d " + 
+					" left join dbo.Conti_Destinatari c on c.iddestinatario=d.IDDestinatario" + 
+					" where d.IDOrdinante=" + idOrdinante.toString() + 
+					" order by d.Destinatario, c.Abi, c.Cab, c.conto";
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(DestinatarioForPrinting.class));
+			
+			q
+				.addScalar("iddestinatario")
+				.addScalar("destinatario")
+				.addScalar("codiceFiscale")
+				.addScalar("indirizzo")
+				.addScalar("cap")
+				.addScalar("citta")
+				.addScalar("provincia")
+				.addScalar("codiceDestinatario")
+				.addScalar("tipoCodiceDestinatario")
+				.addScalar("sia")
+				.addScalar("coordinateIbanordinante")
+				
+				.addScalar("abi")
+				.addScalar("cab")
+				.addScalar("conto")
+				.addScalar("cin")
+				.addScalar("coordinateIban")
+				.addScalar("codiceBic")
+				.addScalar("descrizioneBanca");
+
+			
+			res = q.list();
+		} finally {
+			if (tx)
+				commit();
+		}
+
+		return res;
+	}
+	
+}

+ 1254 - 0
sicura.business/src/dao/DisposizioneAeaDAO.java

@@ -0,0 +1,1254 @@
+package dao;
+
+import java.security.DomainLoadStoreParameter;
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.ParameterMode;
+
+import org.hibernate.Criteria;
+import org.hibernate.Query;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.procedure.ProcedureCall;
+import org.hibernate.result.Outputs;
+import org.hibernate.result.UpdateCountOutput;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.hibernate.transform.ResultTransformer;
+import org.hibernate.transform.Transformers;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.MultiValueMap;
+
+import bean.AppVariables;
+import bean.LogModificheBean;
+import bean.LogVariazioniBean;
+import bean.filters.DisposizioniFiltroBean;
+import bean.filters.RicercaDisposizioniFilterBean;
+import bean.query.DisposizioniAeaDecoded;
+import common.bean.UserData;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import common.utility.DateUtils;
+import common.utility.StringUtilities;
+import sicura.entities.ComboDisposizioni;
+import sicura.entities.DisposizioniAea;
+import sicura.entities.DisposizioniBonifici;
+import sicura.entities.LogModificheDisposizioni;
+
+@Repository
+public class DisposizioneAeaDAO extends GenericDAO<DisposizioniAea, Integer> implements IDAO<DisposizioniAea, Integer> {
+
+	@Autowired
+	GenericComboDAO genericComboDAO;
+	@Autowired
+	LogVariazioniDAO logVariazioniDAO;
+	
+	private enum TipoRicerca {TR_LISTA_DISPOSIZIONI, TR_DISTINTE_BANCA, TR_FLUSSI_INPUT, TR_FILTRO_DISPOSIZIONI, TR_LISTA_DISPOSIZIONI_READONLY};
+	private TipoRicerca tipoRicerca;
+	
+
+	public boolean cancellazioneMassiva(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, UserData userdata, AppVariables appVariables) {
+	
+		if (profiloUtente=="VI" || disposizioniFiltroBean.getSelectedIds()==null ||  disposizioniFiltroBean.getSelectedIds().length<1)
+			return false;
+		
+		boolean res = true;
+		List<DisposizioniAea> disposizioni = list(-1,-1,disposizioniFiltroBean,userdata.getOtherCode(), appVariables,userdata.getLogin());
+		
+	
+		try {
+			for (int i=0;i<disposizioni.size();i++) {
+				// verifica se la disposizione è cancellabile
+				DisposizioniAea disposizione = disposizioni.get(i);
+
+				
+				if (disposizione.getStatoDisposizione().equalsIgnoreCase("Approvata")||
+					disposizione.getStatoDisposizione().equalsIgnoreCase("Confermata")||
+					disposizione.getStatoDisposizione().equalsIgnoreCase("Predisposta")) {
+
+					// predisponi il log variazioni
+					LogVariazioniBean logModifiche = new LogVariazioniBean();
+					logModifiche.setFieldName("StatoDisposizione");
+						logModifiche.setOldValue(disposizione.getStatoDisposizione());
+						logModifiche.setNewValue("Cancellata");
+						logModifiche.setTimestamp(new Date());
+
+					List<LogVariazioniBean> listaVariazioni = new ArrayList<LogVariazioniBean>();
+					listaVariazioni.add(logModifiche);				
+				
+					
+					disposizione.setStatoDisposizione("Cancellata");
+				
+					int saveResult = save(disposizione, userdata, appVariables);
+					try {
+						if (saveResult==0)
+							logVariazioniDAO.saveAll(appVariables.getUserId(),appVariables.getDenominazioneUtente(), disposizione.getIddisposizione(),listaVariazioni);
+					}catch(Exception ex) {
+						// should never happen
+						ex.printStackTrace();
+					}
+					res = saveResult==0;
+				} else
+					res = false;
+			}
+			
+		} finally {
+			
+		}
+		return res;
+	}
+	
+	@SuppressWarnings("unchecked")
+	public List<DisposizioniAea> list(String codiceClienteDebitore, int start, int length) {
+		boolean tx = startTransaction();
+		List<DisposizioniAea> res=null;
+		try {
+			tipoRicerca = TipoRicerca.TR_LISTA_DISPOSIZIONI;
+			
+			Criteria crit = currentSession().createCriteria(DisposizioniAea.class);
+			crit
+				.add(Restrictions.eq("codiceClienteDebitore", codiceClienteDebitore))
+				.addOrder(Order.asc("id"));
+			
+			try {
+				res = crit.list();
+			} catch(Exception ex) {
+				ex.printStackTrace();
+			}
+
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+		
+	}
+	
+	public Integer count(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID) {
+		return count(disposizioniFiltroBean, profiloUtente, appVariables, userID, null);
+	}
+	
+	public Integer count(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID, Integer idDistinta) {
+		Integer res = 0;
+		boolean tx = startTransaction();
+		try {
+			if ("DistinteBanca".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_DISTINTE_BANCA;
+			else if ("DistinteFlussiInput".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FLUSSI_INPUT;
+			else if ("FiltroDisposizioni".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FILTRO_DISPOSIZIONI;
+			else if  ("FiltroDisposizioniReadOnly".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_LISTA_DISPOSIZIONI_READONLY;
+	
+			String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, true,false, tipoRicerca,idDistinta, null);
+			
+			Query q = currentSession().createSQLQuery(sql);
+			
+			if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0 && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", disposizioniFiltroBean.getSelectedIds());
+			
+			res = ((Integer) q.uniqueResult());
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+
+	public List<DisposizioniAea> list(int startRecord, int length, DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID)  {
+		boolean tx = startTransaction();
+		try {
+			if ("DistinteBanca".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_DISTINTE_BANCA;
+			else if ("DistinteFlussiInput".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FLUSSI_INPUT;
+			else if ("FiltroDisposizioni".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FILTRO_DISPOSIZIONI;
+			else if  ("FiltroDisposizioniReadOnly".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_LISTA_DISPOSIZIONI_READONLY;
+	
+			String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, false, false, tipoRicerca, null, disposizioniFiltroBean.getOrderField());
+			
+	//		if (disposizioniFiltroBean.getOrderField()!=null && !"".equals(disposizioniFiltroBean.getOrderField()))
+	//			sql += getSQLOrderBy(disposizioniFiltroBean.getOrderField());
+			
+			Query q = currentSession().createSQLQuery(sql)
+					.addEntity("d",DisposizioniAea.class);
+	
+			if (startRecord!=-1)
+				q.setFirstResult(startRecord);
+			if (length!=-1)
+				q.setMaxResults(length);
+	
+			if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0 && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", disposizioniFiltroBean.getSelectedIds());
+			
+			List<DisposizioniAea> res =null;
+			try {
+				res = q.list();
+			} catch(Exception ex) {
+				ex.printStackTrace();
+				return null;
+			}
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+	
+	public List<String> exportFiltered(RicercaDisposizioniFilterBean ricercaDisposizioniFilterBean, String profiloUtente, AppVariables appVariables, String userID) {
+		List<DisposizioniAea> disposizioni = filter(-1,0,null,ricercaDisposizioniFilterBean,null);
+		boolean tx = startTransaction();
+		try {
+			List<String> res = generateCsv(disposizioni);
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+
+	
+	public List<String> export(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID) {
+		List<String> res = null;
+		boolean tx = startTransaction();
+		try {
+			if ("DistinteBanca".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_DISTINTE_BANCA;
+			else if ("DistinteFlussiInput".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FLUSSI_INPUT;
+			else if ("FiltroDisposizioni".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FILTRO_DISPOSIZIONI;
+			else if  ("FiltroDisposizioniReadOnly".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_LISTA_DISPOSIZIONI_READONLY;
+	
+			String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, false, false, tipoRicerca, null, null);
+			
+			if (disposizioniFiltroBean.getOrderField()!=null && !"".equals(disposizioniFiltroBean.getOrderField()))
+				sql += getSQLOrderBy(disposizioniFiltroBean.getOrderField());
+			
+			Query q = currentSession().createSQLQuery(sql)
+					.addEntity("d", DisposizioniAea.class);
+	
+			if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0  && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", disposizioniFiltroBean.getSelectedIds());
+			
+			List<DisposizioniAea> disposizioni=null;
+			
+			try {
+				disposizioni = q.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+				disposizioni = new ArrayList<DisposizioniAea>();
+			}		
+			
+			res = generateCsv(disposizioni);
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+		
+	}
+
+	private List<String> generateCsv(List<DisposizioniAea> disposizioni) {
+		List<String> res = new ArrayList<String>();
+		res.add("StatoConvalida;iddisposizione;StatoDisposizione;DataInserimentoDisposizione;Esito;IDDisposizioneFunzioneOrdinante;" + 
+				"Causale;DenominazioneDestinatario;CodiceFiscaleSottoscrittore;Codice_Abi_Destinatario;Cab_Destinatario;Conto_Destinatario;"+
+				"Cin;CodicePaese;CheckDigit;Banca_Sportello_Domic;Intestatario_Conto;CodiceFiscaleIntestatarioConto;StatoAllineamento;" +
+				"Sottocampo_Descrizione;DataUltimoEsitoAcquisito;IDDistintaBanca;EsitoSepaRsnCode;EsitoSepaAddtlInf"
+			);
+		
+		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
+		SimpleDateFormat sdfTime = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
+		
+		for(DisposizioniAea disposizione: disposizioni)
+			res.add(
+				"\"" + safeString(decodificaStato(disposizione.getStatoConvalida()))+"\";" +
+				"\"" + safeString(disposizione.getIddisposizione().toString())+"\";" +	
+				"\"" + safeString(disposizione.getStatoDisposizione())+"\";" +
+				"\"" + (disposizione.getDataInserimentoDisposizione()!=null?sdfTime.format(disposizione.getDataInserimentoDisposizione()):"")+"\";" +
+				"\"" + safeString(disposizione.getEsito())+"\";" +
+				"\"" + safeString(disposizione.getIddisposizioneFunzioneOrdinante())+"\";" +
+				"\"" + safeString(disposizione.getCausale())+"\";" +
+				"\"" + safeString(disposizione.getDenominazioneDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getCodiceFiscaleSottoscrittore())+"\";" +
+				"\"" + safeString(disposizione.getCodiceAbiDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getCabDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getContoDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getCin())+"\";" +
+				"\"" + safeString(disposizione.getCodicePaese())+"\";" +
+				"\"" + safeString(disposizione.getCheckDigit())+"\";" +
+				"\"" + safeString(disposizione.getBancaSportelloDomic())+"\";" +
+				"\"" + safeString(disposizione.getIntestatarioConto())+"\";" +
+				"\"" + safeString(disposizione.getCodiceFiscaleIntestatarioConto())+"\";" +
+				"\"" + safeString(decodeCombo("AEA", "StatoAllineamento", disposizione.getStatoAllineamento()))+"\";" +
+				"\"" + safeString(disposizione.getSottocampoDescrizione())+"\";" +
+				"\"" + (disposizione.getDataUltimoEsitoAcquisito()!=null? sdf.format(disposizione.getDataUltimoEsitoAcquisito()):"")+"\";" + 
+				"\"" + safeString(disposizione.getIddistintaBanca().toString())+"\";" +
+				"\"" + safeString(decodeCombo("AEA", "EsitoSepaRsnCode", disposizione.getEsitoSepaRsnCode()))+"\";" +
+				"\"" + safeString(disposizione.getEsitoSepaAddtlInf())+"\";"
+			);
+		return res;
+	}	
+
+	private String decodeCombo(String tipologia, String campo, String codice) {
+		return genericComboDAO.getComboValue("Combo_Disposizioni",  tipologia, campo, codice);
+	}
+	
+
+	private String decodificaStato(Short statoConvalida) {
+		switch(statoConvalida) {
+		case -1: return "Corretta";
+		case 2: return "Warning";
+		default: return "Errata";
+		}
+	}
+
+	private String decodificaStatoDisposizione(Short stato) {
+		switch(stato) {
+		case -1: return "Corretta";
+		case 2: return "Warning";
+		default: return "Errata";
+		}
+	}
+
+	
+	public List<DisposizioniAea> listDistinteBanca(int startRecord, int length, DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID, Integer idDistintaBanca)  {
+		List<DisposizioniAea> res = null;
+		boolean tx = startTransaction();
+		try {
+		
+			if ("DistinteBanca".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_DISTINTE_BANCA;
+			else if ("DistinteFlussiInput".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FLUSSI_INPUT;
+			else if ("FiltroDisposizioni".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FILTRO_DISPOSIZIONI;
+	
+			
+			tipoRicerca = TipoRicerca.TR_DISTINTE_BANCA;
+			String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, false, false,tipoRicerca, idDistintaBanca, disposizioniFiltroBean.getOrderField());
+			
+	//		if (disposizioniFiltroBean.getOrderField()!=null && !"".equals(disposizioniFiltroBean.getOrderField()))
+	//			sql += getSQLOrderBy(disposizioniFiltroBean.getOrderField());
+	//		
+			Query q = currentSession().createSQLQuery(sql)
+					.addEntity(DisposizioniAea.class);
+	
+			q
+				.setFirstResult(startRecord)
+				.setMaxResults(length);
+	
+			res=null;
+			
+			try{
+				res= q.list();
+			} catch(Exception ex) {
+				ex.printStackTrace();
+			}
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+	
+	public List<DisposizioniAea> listDistinteInput(int startRecord, int length, DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID, Integer idDistintaInput)  {
+		List<DisposizioniAea> res = null;
+		boolean tx = startTransaction();
+		try {
+
+			String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, false, false, tipoRicerca, idDistintaInput, null);
+			
+			if (disposizioniFiltroBean.getOrderField()!=null && !"".equals(disposizioniFiltroBean.getOrderField()))
+				sql += getSQLOrderBy(disposizioniFiltroBean.getOrderField());
+			
+			Query q = currentSession().createSQLQuery(sql)
+					.addEntity(DisposizioniAea.class);
+	
+			q
+				.setFirstResult(startRecord)
+				.setMaxResults(length);
+	
+			res = null;
+			try{
+				res = q.list();
+			} catch(Exception ex) {
+				ex.printStackTrace();
+			}
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+
+	
+	
+	private String generateQuery(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID, boolean doCount, boolean addLookupFields, TipoRicerca tipoRicerca, Integer idDistintaBanca, String orderField) {
+		
+		String sql = "select " + (doCount  
+				? "Count(*)"
+				: "{d.*} ");
+		
+		if (!doCount && addLookupFields)
+			sql += ",{cd.*}";
+		
+		sql += " from Disposizioni_AEA d WITH (NOLOCK)";
+
+		if (addLookupFields)
+			sql += " left join Combo_Disposizioni cd on cd.Tipologia='AEA' And cd.Campo='Causale' And cd.Codice=d.causale ";
+		
+		if ("DistinteBanca".equals(disposizioniFiltroBean.getTipoChiamata()))
+			tipoRicerca = TipoRicerca.TR_DISTINTE_BANCA;
+		else if ("DistinteFlussiInput".equals(disposizioniFiltroBean.getTipoChiamata()))
+			tipoRicerca = TipoRicerca.TR_FLUSSI_INPUT;
+		else if ("FiltroDisposizioni".equals(disposizioniFiltroBean.getTipoChiamata()))
+			tipoRicerca = TipoRicerca.TR_FILTRO_DISPOSIZIONI;
+		else if ("FiltroDisposizioniReadOnly".equals(disposizioniFiltroBean.getTipoChiamata()))
+			tipoRicerca = TipoRicerca.TR_LISTA_DISPOSIZIONI_READONLY;
+		else
+			tipoRicerca = TipoRicerca.TR_LISTA_DISPOSIZIONI;
+		
+		switch (tipoRicerca) {
+			case TR_LISTA_DISPOSIZIONI:
+				 sql += " LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = d.IDDistintaFlussoInput where 1=1 ";
+
+				if ("UO".equals(profiloUtente)) {
+					sql += " and FunzioneOrdinante = :funzioneOrdinante";
+					sql += " AND (StatoDisposizione='Inserita' OR StatoDisposizione='Approvata' OR StatoDisposizione='Confermata')";
+					sql += " AND (ProvenienzaDisposizione='Manuale')";
+					sql += " AND (ISNULL(DistintaFlussiInput.MassiveLoadStatus,3) = 3)";
+				} else if ("UR".equals(profiloUtente)) {
+					sql += addUserFilters(userID, appVariables.getGuid());
+		            sql += " AND (StatoDisposizione='Inserita' OR StatoDisposizione='Approvata' OR StatoDisposizione='Confermata')";
+		            sql += " AND (ProvenienzaDisposizione='Manuale')";
+		            sql += " AND (ISNULL(DistintaFlussiInput.MassiveLoadStatus,3) = 3)";
+		            if (!doCount)
+		            	sql += ((orderField==null||"".equals(orderField))? " ORDER BY d.ID" : getSQLOrderBy(orderField));
+				} else if ("TO".equals(profiloUtente) || "TR".equals(profiloUtente)|| "VI".equals(profiloUtente)) {
+					sql +=  " and (StatoDisposizione='Approvata' OR StatoDisposizione='Confermata')";
+		            sql += " AND (ISNULL(DistintaFlussiInput.MassiveLoadStatus,3) = 3)";
+				}
+				
+
+				break;
+				
+			case TR_DISTINTE_BANCA:
+				sql += " where (StatoDisposizione='Predisposta' OR StatoDisposizione='Validata' OR StatoDisposizione='Disposta' OR StatoDisposizione='Inviata' OR StatoDisposizione='Scartata' OR StatoDisposizione='Esitata' OR StatoDisposizione='Cancellata')  ";
+				sql += " and idDistintaBanca="+ disposizioniFiltroBean.getIdDistintaBanca().toString();
+				break;
+				
+			case TR_FLUSSI_INPUT:
+				sql += " where (StatoDisposizione='Approvata' OR StatoDisposizione='Confermata' OR StatoDisposizione='Predisposta' OR StatoDisposizione='Validata' OR StatoDisposizione='Scartata' OR StatoDisposizione='Disposta' OR StatoDisposizione='Inviata' OR StatoDisposizione='Esitata' OR StatoDisposizione='Cancellata')";
+				sql += " and IDDistintaFlussoInput=" + disposizioniFiltroBean.getIdDistintaFlusso().toString();
+			
+				break;
+				
+			default:
+				sql += " where 1=1 ";
+		}
+		
+		
+		if (disposizioniFiltroBean!=null) {
+			sql += addFiltriDisposizione(disposizioniFiltroBean);
+			
+		}
+		
+//		if (!doCount)
+//			sql += ((orderField==null||"".equals(orderField))? " ORDER BY Disposizioni_AEA.ID" : getSQLOrderBy(orderField));
+
+		
+		return 	sql;
+		
+	}
+
+	private String addFiltriDisposizione(DisposizioniFiltroBean disposizioniFiltroBean) {
+		String sql="";
+		if (disposizioniFiltroBean.getInErrore()) {
+			sql += " and StatoConvalida<>-1";
+		}
+
+		if (disposizioniFiltroBean.getDestinatario()!=null && !"".equals(disposizioniFiltroBean.getDestinatario()))
+			sql += " and denominazioneDestinatario like '%" + disposizioniFiltroBean.getDestinatario() + "%'"; 
+		if (!"".equals(disposizioniFiltroBean.getStatoDisposizioni()))
+			sql += " and statoDisposizione = '" + disposizioniFiltroBean.getStatoDisposizioni()+"'";
+		if (!"".equals(disposizioniFiltroBean.getIdFunzioneOrdinante()))
+			sql += " and iddisposizioneFunzioneOrdinante ='" + disposizioniFiltroBean.getIdFunzioneOrdinante()+"'";
+		String importo = toDouble(disposizioniFiltroBean.getImporto());
+		if (!"0".equals(importo))
+			sql += " and importodbgrid=" + importo.replace(',','.');
+		if (!"".equals(disposizioniFiltroBean.getStatoConvalida()))
+			 sql += " and statoConvalida='" +disposizioniFiltroBean.getStatoConvalida() + "'";
+		
+		if (!StringUtilities.empty(disposizioniFiltroBean.getCodiceClienteDebitore()))
+			sql += " and codiceClienteDebitore='" + disposizioniFiltroBean.getCodiceClienteDebitore()+"' ";
+		
+		if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0 && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+			sql += " and d.id in (:ids) ";
+		
+		return sql;
+	}
+	
+	@SuppressWarnings("rawtypes")
+	private String addUserFilters(String userID, String guid) {
+		Query q = currentSession().createSQLQuery("EXEC spSecurityUtenteFunzioni :userid, :guid");
+		q
+			.setParameter("userid", userID)
+			.setParameter("guid", guid)
+		 	.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);		
+		
+		List res = q.list();
+		
+		String filters="";
+		
+		if (res.size()>0) {
+			filters += "(FunzioneOrdinante='"+((Map)res.get(0)).get("FunzioneOrdinante")+"'";
+			for (int i=1;i<res.size();i++) {
+				
+				Map row = (Map) res.get(i);
+				filters += " OR (FunzioneOrdinante=" + row.get("FunzioneOrdinante") + "'";						
+				
+			}
+			filters += ")";
+		}
+		
+		return filters;
+		
+	
+	}
+
+	private Criteria addFilters(Criteria crit, DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables) {
+		
+		
+		if (!"".equals(disposizioniFiltroBean.getDestinatario()))
+			crit.add(Restrictions.ilike("denominazioneDestinatario", "%" + disposizioniFiltroBean.getDestinatario() + "%"));
+		if (!"".equals(disposizioniFiltroBean.getStatoDisposizioni()))
+			crit.add(Restrictions.eq("statoDisposizione", disposizioniFiltroBean.getStatoDisposizioni()));
+		if (!"".equals(disposizioniFiltroBean.getIdFunzioneOrdinante()))
+			crit.add(Restrictions.eq("iddisposizioneFunzioneOrdinante", disposizioniFiltroBean.getIdFunzioneOrdinante()));
+		String importo = toDouble(disposizioniFiltroBean.getImporto());
+		if (!"0".equals(importo))
+			crit.add(Restrictions.eq("importo",importo));
+		if (!"".equals(disposizioniFiltroBean.getStatoConvalida()))
+			crit.add(Restrictions.eq("statoConvalida", disposizioniFiltroBean.getStatoConvalida()));
+		
+		
+		
+		return crit;				
+	}
+	
+	public String toDouble(String importo) {
+		DecimalFormat df = new DecimalFormat("#.00"); 
+		try {
+			Double dbl = Double.parseDouble(importo.replace(",", "."));
+			String res = df.format(dbl);
+			return res.replace(".", ",");
+		} catch (Exception ex) {
+			return "0";
+		}
+	}
+
+
+	public List<LogModificheBean> logStati(Integer id) {
+		List<LogModificheBean> res = null;
+		boolean tx = startTransaction();
+		try {
+			String sql = "select id, userId, data, ora, utente, nomeCampo nomeCampo, cast(campoPreModifica as varchar(255)) campoPreModifica, cast(campoPostModifica as varchar(255)) as campoPostModifica " +
+						" from LogModificheDisposizioni where iddisposizione=:id and NomeCampo='StatoDisposizione'"+
+						" order by Data, Ora, id";
+					
+			Query q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(LogModificheBean.class));
+			
+			q.setParameter("id", id);	
+			res = q.list();
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+	
+	public List<LogModificheBean> logVariazioni(Integer id) {
+		List<LogModificheBean> res;
+		boolean tx = startTransaction();		
+		try {
+			String sql = "select id, userId, data, ora, utente, nomeCampo, cast(campoPreModifica as varchar(255)) campoPreModifica, cast(campoPostModifica as varchar(255)) as campoPostModifica " +
+					" from LogModificheDisposizioni where iddisposizione=:id and NomeCampo<>'StatoDisposizione'"+
+					" order by Data, Ora, id";
+				
+			Query q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(LogModificheBean.class));
+			
+			q.setParameter("id", id);	
+			res =  q.list();
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+
+	public Integer save(DisposizioniAea disposizione, UserData userData, AppVariables appVariables)  {
+		boolean tx = startTransaction();
+		Integer res = -1;
+		try {
+		
+			ProcedureCall call = currentSession().createStoredProcedureCall("spModifyDisposizioni_AEA");
+			
+	
+			call.registerParameter("Result",  Integer.class, ParameterMode.OUT);
+	
+			
+			call.registerParameter("SecurityUserId", String.class, ParameterMode.IN).bindValue(appVariables.getUserId());
+			call.registerParameter("SecurityGuid", String.class, ParameterMode.IN).bindValue(appVariables.getGuid());
+			call.registerParameter("ID", Integer.class, ParameterMode.IN).bindValue(disposizione.getId());
+			call.registerParameter("IDDisposizione", Integer.class, ParameterMode.IN).bindValue(disposizione.getIddisposizione());
+			call.registerParameter("IDDistintaBanca", Integer.class, ParameterMode.IN).bindValue(disposizione.getIddistintaBanca());
+			call.registerParameter("FlagIDDistintaBanca", Boolean.class, ParameterMode.IN).bindValue(disposizione.getFlagIddistintaBanca());
+			call.registerParameter("IDOrdinante", Integer.class, ParameterMode.IN).bindValue(disposizione.getIdordinante());
+			call.registerParameter("IDDestinatario", Integer.class, ParameterMode.IN).bindValue(disposizione.getIddestinatario());
+			call.registerParameter("IDDistintaFlussoInput", Integer.class, ParameterMode.IN).bindValue(disposizione.getIddistintaFlussoInput());
+			call.registerParameter("NumeroDisposizioneDistinta", Integer.class, ParameterMode.IN).bindValue(disposizione.getNumeroDisposizioneDistinta());
+			call.registerParameter("Causale", String.class, ParameterMode.IN).bindValue(disposizione.getCausale());
+			call.registerParameter("FlagCausale", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCausale());
+			call.registerParameter("Codice_Abi_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceAbiOrdinante());
+			call.registerParameter("FlagCodice_Abi_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceAbiOrdinante());
+			call.registerParameter("Cab_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCabOrdinante());
+			call.registerParameter("FlagCab_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCabOrdinante());
+			call.registerParameter("Conto_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getContoOrdinante());
+			call.registerParameter("FlagConto_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContoOrdinante());
+			call.registerParameter("Codice_Abi_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceAbiDestinatario());
+			call.registerParameter("FlagCodice_Abi_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceAbiDestinatario());
+			call.registerParameter("Cab_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCabDestinatario());
+			call.registerParameter("FlagCab_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCabDestinatario());
+			call.registerParameter("Conto_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getContoDestinatario());
+			call.registerParameter("FlagConto_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContoDestinatario());
+			call.registerParameter("StatoConvalida", Short.class, ParameterMode.IN).bindValue(disposizione.getStatoConvalida());
+			call.registerParameter("Banca_Sportello_Domic", String.class, ParameterMode.IN).bindValue(disposizione.getBancaSportelloDomic());
+			call.registerParameter("FlagBanca_Sportello_Domic", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagBancaSportelloDomic());
+			call.registerParameter("Cin", String.class, ParameterMode.IN).bindValue(disposizione.getCin());
+			call.registerParameter("FlagCin", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCin());
+			call.registerParameter("Codice_Sia_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceSiaOrdinante());
+			call.registerParameter("FlagCodice_Sia_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceSiaOrdinante());
+			call.registerParameter("TipoCodice", String.class, ParameterMode.IN).bindValue(disposizione.getTipoCodice());
+			call.registerParameter("FlagTipoCodice", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoCodice());
+			call.registerParameter("Indirizzo_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getIndirizzoOrdinante());
+			call.registerParameter("FlagIndirizzo_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagIndirizzoOrdinante());
+			call.registerParameter("Località_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getLocalitàOrdinante());
+			call.registerParameter("FlagLocalità_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagLocalitàOrdinante());
+			call.registerParameter("Codice_Fiscale_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceFiscaleOrdinante());
+			call.registerParameter("FlagCodice_Fiscale_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceFiscaleOrdinante());
+			call.registerParameter("DenominazioneDestinatario", String.class, ParameterMode.IN).bindValue(disposizione.getDenominazioneDestinatario());
+			call.registerParameter("FlagDenominazioneDestinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDenominazioneDestinatario());
+			call.registerParameter("Codice_Fiscale_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceFiscaleDestinatario());
+			call.registerParameter("FlagCodice_Fiscale_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceFiscaleDestinatario());
+			call.registerParameter("Indirizzo_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getIndirizzoDestinatario());
+			call.registerParameter("FlagIndirizzo_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagIndirizzoDestinatario());
+			call.registerParameter("Cap_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCapDestinatario());
+			call.registerParameter("FlagCap_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCapDestinatario());
+			call.registerParameter("Città_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCittàDestinatario());
+			call.registerParameter("FlagCittà_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCittàDestinatario());
+			call.registerParameter("Provincia_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getProvinciaDestinatario());
+			call.registerParameter("FlagProvincia_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagProvinciaDestinatario());
+			call.registerParameter("CodiceClienteDebitore", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceClienteDebitore());
+			call.registerParameter("FlagCodiceClienteDebitore", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceClienteDebitore());
+			call.registerParameter("Azienda_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getAziendaOrdinante());
+			call.registerParameter("FlagAzienda_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagAziendaOrdinante());
+			call.registerParameter("ErroriCampiObbligatori", Short.class, ParameterMode.IN).bindValue(disposizione.getErroriCampiObbligatori());
+			call.registerParameter("ErroriCongruenza", Short.class, ParameterMode.IN).bindValue(disposizione.getErroriCongruenza());
+			call.registerParameter("ErroriCampiData", Short.class, ParameterMode.IN).bindValue(disposizione.getErroriCampiData());
+			call.registerParameter("ErroriPiazzatura", Short.class, ParameterMode.IN).bindValue(disposizione.getErroriPiazzatura());
+			call.registerParameter("FlagStampa", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStampa());
+			call.registerParameter("CoordinateIBANordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCoordinateIbanordinante());
+			call.registerParameter("FlagCoordinateIBANordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCoordinateIbanordinante());
+			call.registerParameter("CoordinateIBANbeneficiario", String.class, ParameterMode.IN).bindValue(disposizione.getCoordinateIbanbeneficiario());
+			call.registerParameter("FlagCoordinateIBANbeneficiario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCoordinateIbanbeneficiario());
+			call.registerParameter("DescrizioneConto", String.class, ParameterMode.IN).bindValue(disposizione.getDescrizioneConto());
+			call.registerParameter("FlagDescrizioneConto", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDescrizioneConto());
+			call.registerParameter("Esito", String.class, ParameterMode.IN).bindValue(disposizione.getEsito());
+			call.registerParameter("FlagEsito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsito());
+			call.registerParameter("TipoCodiceRiferimento", String.class, ParameterMode.IN).bindValue(disposizione.getTipoCodiceRiferimento());
+			call.registerParameter("FlagTipoCodiceRiferimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoCodiceRiferimento());
+			call.registerParameter("DescrizioneEsito", String.class, ParameterMode.IN).bindValue(disposizione.getDescrizioneEsito());
+			call.registerParameter("FlagDescrizioneEsito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDescrizioneEsito());
+			call.registerParameter("TipoAnomalia", String.class, ParameterMode.IN).bindValue(disposizione.getTipoAnomalia());
+			call.registerParameter("FlagTipoAnomalia", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoAnomalia());
+			call.registerParameter("ValutaOrdinante", Date.class, ParameterMode.IN).bindValue(disposizione.getValutaOrdinante());
+			call.registerParameter("FlagValutaOrdinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagValutaOrdinante());
+			call.registerParameter("ValutaBeneficiario", Date.class, ParameterMode.IN).bindValue(disposizione.getValutaBeneficiario());
+			call.registerParameter("FlagValutaBeneficiario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagValutaBeneficiario());
+			call.registerParameter("DataOrdine", Date.class, ParameterMode.IN).bindValue(disposizione.getDataOrdine());
+			call.registerParameter("FlagDataOrdine", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataOrdine());
+			call.registerParameter("DataContabileAddebito", Date.class, ParameterMode.IN).bindValue(disposizione.getDataContabileAddebito());
+			call.registerParameter("FlagDataContabileAddebito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataContabileAddebito());
+			call.registerParameter("DataEsecuzione", Date.class, ParameterMode.IN).bindValue(disposizione.getDataEsecuzione());
+			call.registerParameter("FlagDataEsecuzione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataEsecuzione());
+			call.registerParameter("ImportoCommissioni", String.class, ParameterMode.IN).bindValue(disposizione.getImportoCommissioni());
+			call.registerParameter("FlagImportoCommissioni", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagImportoCommissioni());
+			call.registerParameter("ImportoSpese", String.class, ParameterMode.IN).bindValue(disposizione.getImportoSpese());
+			call.registerParameter("FlagImportoSpese", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagImportoSpese());
+			call.registerParameter("ImportoPenali", String.class, ParameterMode.IN).bindValue(disposizione.getImportoPenali());
+			call.registerParameter("FlagImportoPenali", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagImportoPenali());
+			call.registerParameter("NumeroAssegnoEmesso", String.class, ParameterMode.IN).bindValue(disposizione.getNumeroAssegnoEmesso());
+			call.registerParameter("FlagNumeroAssegnoEmesso", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNumeroAssegnoEmesso());
+			call.registerParameter("UserID", String.class, ParameterMode.IN).bindValue(disposizione.getUserId());
+			call.registerParameter("ProvenienzaDisposizione", String.class, ParameterMode.IN).bindValue(disposizione.getProvenienzaDisposizione());
+			call.registerParameter("TipoFlussoInput", String.class, ParameterMode.IN).bindValue(disposizione.getTipoFlussoInput());
+			call.registerParameter("IDDisposizioneFunzioneOrdinante", String.class, ParameterMode.IN).bindValue(disposizione.getIddisposizioneFunzioneOrdinante());
+			call.registerParameter("DataInserimentoDisposizione", Date.class, ParameterMode.IN).bindValue(disposizione.getDataInserimentoDisposizione());
+			call.registerParameter("DataFlussoDisposizione", Date.class, ParameterMode.IN).bindValue(disposizione.getDataFlussoDisposizione());
+			call.registerParameter("DataEsitoDisposizione", Date.class, ParameterMode.IN).bindValue(disposizione.getDataEsitoDisposizione());
+			call.registerParameter("FlagDataEsitoDisposizione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataEsitoDisposizione());
+			call.registerParameter("StatoDisposizione", String.class, ParameterMode.IN).bindValue(disposizione.getStatoDisposizione());
+			call.registerParameter("FlagStatoDisposizione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStatoDisposizione());
+			call.registerParameter("CodiceSocietà", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceSocieta());
+			call.registerParameter("FlagCodiceSocietà", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceSocieta());
+			call.registerParameter("FunzioneOrdinante", String.class, ParameterMode.IN).bindValue(disposizione.getFunzioneOrdinante());
+			call.registerParameter("FlagFunzioneOrdinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagFunzioneOrdinante());
+			call.registerParameter("ContabilizzazioneMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isContabilizzazioneMovimento());
+			call.registerParameter("FlagContabilizzazioneMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContabilizzazioneMovimento());
+			call.registerParameter("ForzaStatoAR", Boolean.class, ParameterMode.IN).bindValue(disposizione.isForzaStatoAr());
+			call.registerParameter("LastSaved", byte[].class, ParameterMode.IN).bindValue(disposizione.getLastSaved());
+			call.registerParameter("Divisa_Conto_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getDivisaContoOrdinante());
+			call.registerParameter("FlagDivisa_Conto_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.getFlagDivisaContoOrdinante());
+			call.registerParameter("NoteFunzioneOrdinante", String.class, ParameterMode.IN).bindValue(disposizione.getNoteFunzioneOrdinante());
+			call.registerParameter("FlagNoteFunzioneOrdinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNoteFunzioneOrdinante());
+			call.registerParameter("NoteTesoreria", String.class, ParameterMode.IN).bindValue(disposizione.getNoteTesoreria());
+			call.registerParameter("FlagNoteTesoreria", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNoteTesoreria());
+			call.registerParameter("Codice_di_Riferimento", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceDiRiferimento());
+			call.registerParameter("FlagCodice_di_Riferimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceDiRiferimento());
+			call.registerParameter("CodiceAutorizzazione", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceAutorizzazione());
+			call.registerParameter("FlagCodiceAutorizzazione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceAutorizzazione());
+			call.registerParameter("CodiceFiscaleSottoscrittore", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceFiscaleSottoscrittore());
+			call.registerParameter("FlagCodiceFiscaleSottoscrittore", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceFiscaleSottoscrittore());
+			call.registerParameter("CodicePaese", String.class, ParameterMode.IN).bindValue(disposizione.getCodicePaese());
+			call.registerParameter("FlagCodicePaese", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodicePaese());
+			call.registerParameter("CheckDigit", String.class, ParameterMode.IN).bindValue(disposizione.getCheckDigit());
+			call.registerParameter("FlagCheckDigit", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCheckDigit());
+			call.registerParameter("Intestatario_Conto", String.class, ParameterMode.IN).bindValue(disposizione.getIntestatarioConto());
+			call.registerParameter("FlagIntestatario_Conto", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagIntestatarioConto());
+			call.registerParameter("FacoltàStorno", String.class, ParameterMode.IN).bindValue(disposizione.getFacoltàStorno());
+			call.registerParameter("FlagFacoltàStorno", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagFacoltàStorno());
+			call.registerParameter("StatoAllineamento", String.class, ParameterMode.IN).bindValue(disposizione.getStatoAllineamento());
+			call.registerParameter("FlagStatoAllineamento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStatoAllineamento());
+			call.registerParameter("Numero_Rate", String.class, ParameterMode.IN).bindValue(disposizione.getNumeroRate());
+			call.registerParameter("FlagNumero_Rate", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNumeroRate());
+			call.registerParameter("Importo_Massimo_Rata", String.class, ParameterMode.IN).bindValue(disposizione.getImportoMassimoRata());
+			call.registerParameter("FlagImporto_Massimo_Rata", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagImportoMassimoRata());
+			call.registerParameter("Divisa_Importo_Massimo_Rata", String.class, ParameterMode.IN).bindValue(disposizione.getDivisaImportoMassimoRata());
+			call.registerParameter("FlagDivisa_Importo_Massimo_Rata", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDivisaImportoMassimoRata());
+			call.registerParameter("Scadenza_Prima_Rata", Date.class, ParameterMode.IN).bindValue(disposizione.getScadenzaPrimaRata());
+			call.registerParameter("FlagScadenza_Prima_Rata", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagScadenzaPrimaRata());
+			call.registerParameter("Scadenza_Ultima_Rata", Date.class, ParameterMode.IN).bindValue(disposizione.getScadenzaUltimaRata());
+			call.registerParameter("FlagScadenza_Ultima_Rata", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagScadenzaUltimaRata());
+			call.registerParameter("Sottocampo_Descrizione", String.class, ParameterMode.IN).bindValue(disposizione.getSottocampoDescrizione());
+			call.registerParameter("FlagSottocampo_Descrizione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagSottocampoDescrizione());
+			call.registerParameter("Data_Creazione_Disposizione", Date.class, ParameterMode.IN).bindValue(disposizione.getDataCreazioneDisposizione());
+			call.registerParameter("FlagData_Creazione_Disposizione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataCreazioneDisposizione());
+			call.registerParameter("Storno_CAB_Addebito", String.class, ParameterMode.IN).bindValue(disposizione.getStornoCabAddebito());
+			call.registerParameter("FlagStorno_CAB_Addebito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStornoCabAddebito());
+			call.registerParameter("Storno_Conto_Addebito", String.class, ParameterMode.IN).bindValue(disposizione.getStornoContoAddebito());
+			call.registerParameter("FlagStorno_Conto_Addebito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStornoContoAddebito());
+			call.registerParameter("Codice_Individuale_da_Variare", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceIndividualeDaVariare());
+			call.registerParameter("FlagCodice_Individuale_da_Variare", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceIndividualeDaVariare());
+			call.registerParameter("Codice_Azienda_da_Variare", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceAziendaDaVariare());
+			call.registerParameter("FlagCodice_Azienda_da_Variare", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceAziendaDaVariare());
+			call.registerParameter("Tipo_Cod_Individuale_da_Variare", String.class, ParameterMode.IN).bindValue(disposizione.getTipoCodIndividualeDaVariare());
+			call.registerParameter("FlagTipo_Cod_Individuale_da_Variare", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoCodIndividualeDaVariare());
+			call.registerParameter("Storno_ABI_Addebito", String.class, ParameterMode.IN).bindValue(disposizione.getStornoAbiAddebito());
+			call.registerParameter("FlagStorno_ABI_Addebito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStornoAbiAddebito());
+			call.registerParameter("Riferimenti_Originari", String.class, ParameterMode.IN).bindValue(disposizione.getRiferimentiOriginari());
+			call.registerParameter("FlagRiferimenti_Originari", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagRiferimentiOriginari());
+			call.registerParameter("Storno_Cin_Addebito", String.class, ParameterMode.IN).bindValue(disposizione.getStornoCinAddebito());
+			call.registerParameter("FlagStorno_Cin_Addebito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStornoCinAddebito());
+			call.registerParameter("Storno_CodicePaese_Addebito", String.class, ParameterMode.IN).bindValue(disposizione.getStornoCodicePaeseAddebito());
+			call.registerParameter("FlagStorno_CodicePaese_Addebito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStornoCodicePaeseAddebito());
+			call.registerParameter("Storno_CheckDigit_Addebito", String.class, ParameterMode.IN).bindValue(disposizione.getStornoCheckDigitAddebito());
+			call.registerParameter("FlagStorno_CheckDigit_Addebito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStornoCheckDigitAddebito());
+			call.registerParameter("DataCreazioneFlussoOriginario", Date.class, ParameterMode.IN).bindValue(disposizione.getDataCreazioneFlussoOriginario());
+			call.registerParameter("CodiceFiscaleIntestatarioConto", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceFiscaleIntestatarioConto());
+			call.registerParameter("FlagCodiceFiscaleIntestatarioConto", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceFiscaleIntestatarioConto());
+			call.registerParameter("DataUltimoEsitoAcquisito", Date.class, ParameterMode.IN).bindValue(disposizione.getDataUltimoEsitoAcquisito());
+			call.registerParameter("FlagDataUltimoEsitoAcquisito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataUltimoEsitoAcquisito());
+			call.registerParameter("NumeroPolizza", String.class, ParameterMode.IN).bindValue(disposizione.getNumeroPolizza());
+			call.registerParameter("FlagNumeroPolizza", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNumeroPolizza());
+			call.registerParameter("NoTabellaContabilizzazione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isNoTabellaContabilizzazione());
+			call.registerParameter("FlagNoTabellaContabilizzazione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNoTabellaContabilizzazione());
+			call.registerParameter("ContoPerCassa", Boolean.class, ParameterMode.IN).bindValue(disposizione.isContoPerCassa());
+			call.registerParameter("FlagContoPerCassa", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContoPerCassa());
+			call.registerParameter("TipoAllineamentoIBAN", String.class, ParameterMode.IN).bindValue(disposizione.getTipoAllineamentoIban());
+			call.registerParameter("ClassificazioneConto", String.class, ParameterMode.IN).bindValue(disposizione.getClassificazioneConto());
+			call.registerParameter("FlagClassificazioneConto", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagClassificazioneConto());
+			call.registerParameter("TipoMandatoAEA", String.class, ParameterMode.IN).bindValue(disposizione.getTipoMandatoAea());
+			call.registerParameter("FlagTipoMandatoAEA", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoMandatoAea());
+			call.registerParameter("TipoIncassoAEA", String.class, ParameterMode.IN).bindValue(disposizione.getTipoIncassoAea());
+			call.registerParameter("FlagTipoIncassoAEA", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoIncassoAea());
+			call.registerParameter("Data_Sottoscrizione_Mandato", Date.class, ParameterMode.IN).bindValue(disposizione.getDataSottoscrizioneMandato());
+			call.registerParameter("FlagData_Sottoscrizione_Mandato", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataSottoscrizioneMandato());
+			call.registerParameter("RegolarizzazioneSEPA", String.class, ParameterMode.IN).bindValue(disposizione.getRegolarizzazioneSepa());
+			call.registerParameter("FlagRegolarizzazioneSEPA", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagRegolarizzazioneSepa());
+			call.registerParameter("Identificativo_Creditore", String.class, ParameterMode.IN).bindValue(disposizione.getIdentificativoCreditore());
+			call.registerParameter("FlagIdentificativo_Creditore", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagIdentificativoCreditore());
+			call.registerParameter("NomeSupportoFlussoInputCBI", String.class, ParameterMode.IN).bindValue(disposizione.getNomeSupportoFlussoInputCbi());
+			call.registerParameter("FlagNomeSupportoFlussoInputCBI", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNomeSupportoFlussoInputCbi());
+			call.registerParameter("BIC_Creditore", String.class, ParameterMode.IN).bindValue(disposizione.getBicCreditore());
+			call.registerParameter("FlagBIC_Creditore", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagBicCreditore());
+			call.registerParameter("Identificativo_Mandato", String.class, ParameterMode.IN).bindValue(disposizione.getIdentificativoMandato());
+			call.registerParameter("FlagIdentificativo_Mandato", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagIdentificativoMandato());
+			call.registerParameter("Codice_CUC_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceCucOrdinante());
+			call.registerParameter("FlagCodice_CUC_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceCucOrdinante());
+			call.registerParameter("EsitoSepaRsnCode", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoSepaRsnCode());
+			call.registerParameter("FlagEsitoSepaRsnCode", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoSepaRsnCode());
+			call.registerParameter("EsitoCBIDecodificato", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoCbidecodificato());
+			call.registerParameter("FlagEsitoCBIDecodificato", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoCbidecodificato());
+			call.registerParameter("EsitoSepaPrtry", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoSepaPrtry());
+			call.registerParameter("FlagEsitoSepaPrtry", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoSepaPrtry());
+			call.registerParameter("EsitoSepaAddtlInf", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoSepaAddtlInf());
+			call.registerParameter("FlagEsitoSepaAddtlInf", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoSepaAddtlInf());
+			call.registerParameter("EsitoSepaElmRfc", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoSepaElmRfc());
+			call.registerParameter("FlagEsitoSepaElmRfc", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoSepaElmRfc());
+			call.registerParameter("EsitoMsgId", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoMsgId());
+			call.registerParameter("FlagEsitoMsgId", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoMsgId());
+			call.registerParameter("DisposizioneGuid", String.class, ParameterMode.IN).bindValue(disposizione.getDisposizioneGuid());
+
+			
+			
+			//Outputs outputs = call.getOutputs();
+			
+			try {	
+			
+				Integer result = (Integer)call.getOutputs().getOutputParameterValue("Result");
+				
+				if (result==1)
+					res = 0;
+
+				/*UpdateCountOutput output = (UpdateCountOutput) outputs.getCurrent();
+			
+				if (output.getUpdateCount()>0)
+					res = 0;
+				else
+					res = 1;
+			*/
+			} catch (Exception ex) {
+				res = 4;
+			}
+			
+			 if (disposizione.getIddistintaBanca()!=null && disposizione.getIddistintaBanca()!=0) {
+					Connection connection = getConnection();
+					CallableStatement proc;
+					try {
+						proc = connection.prepareCall("{? = call spRecalcDistinta (?,?,?)}");
+							
+						proc.registerOutParameter(1, Types.VARCHAR);
+						proc.setString(2, appVariables.getUserId());
+						proc.setString(3, appVariables.getGuid());
+						proc.setObject(4, disposizione.getIddistintaBanca());
+						
+						proc.execute();
+						proc.getMoreResults();
+							
+						proc.getInt(1);
+							
+					} catch (SQLException e) {
+						// TODO Auto-generated catch block
+						e.printStackTrace();
+						return -1;
+					}
+			 }
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+	
+	
+/********************** Filtro generale disposizioni ******************/
+	
+	public List<DisposizioniAea> filter(int startRecord, int length, String orderField, RicercaDisposizioniFilterBean filterBean, DisposizioniFiltroBean disposizioniFiltroBean){
+		List<DisposizioniAea> res = null;
+		boolean tx = startTransaction();
+		try {
+			String sql = "select disposizioni_aea.* from disposizioni_aea WITH (NOLOCK)"+
+						" LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = Disposizioni_aea.IDDistintaFlussoInput";
+			sql += " where isNull(DistintaFlussiInput.MassiveLoadStatus,3) = 3";
+		
+			sql += addFiltersToQuery(filterBean);
+			if (disposizioniFiltroBean!=null)
+				sql += addFiltriDisposizione(disposizioniFiltroBean);
+			
+			if (orderField!=null)
+				sql += getSQLOrderBy(orderField);
+			else
+				sql += " order by id";
+			
+			SQLQuery q=currentSession().createSQLQuery(sql);
+			q=setQueryParameters(q, filterBean);
+			q.addEntity(DisposizioniAea.class);
+			
+			if (startRecord>=0)
+				q.setFirstResult(startRecord);
+			if (length>0)
+				q.setMaxResults(length);
+			
+			if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0  && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", disposizioniFiltroBean.getSelectedIds());
+			
+			res=null;
+			
+			try {
+				res = q.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+				return new ArrayList<DisposizioniAea>();
+			}
+				
+		} finally {		
+			if (tx)
+				commit(); 
+		}
+		return res;
+	}
+	
+	
+	public Integer countFilter(RicercaDisposizioniFilterBean filterBean, DisposizioniFiltroBean disposizioniFiltroBean) {
+		Integer res = 0;
+		boolean tx = startTransaction();
+		try {
+			String sql = "select count(*) from disposizioni_Aea WITH (NOLOCK)"+
+						" LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = disposizioni_aea.IDDistintaFlussoInput";
+			sql += " where isNull(DistintaFlussiInput.MassiveLoadStatus,3) = 3";
+		
+			sql += addFiltersToQuery(filterBean);
+			if (disposizioniFiltroBean!=null)
+				sql += addFiltriDisposizione(disposizioniFiltroBean);
+			
+			SQLQuery q=currentSession().createSQLQuery(sql);
+			q=setQueryParameters(q, filterBean);
+			
+			if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0  && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", disposizioniFiltroBean.getSelectedIds());
+			
+			res = (Integer) q.uniqueResult();
+		} finally {
+			if (tx)
+				commit(); 
+		}
+		return res;
+	}
+	
+	
+	private String addFiltersToQuery(RicercaDisposizioniFilterBean filterBean) {
+		if (filterBean==null)
+			return "";
+		
+		String sql = "";
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+		if (!StringUtilities.empty(filterBean.getFunzioneOrdinante()))
+			sql +=" and funzioneOrdinante=:funzioneOrdinante";
+
+		if (!StringUtilities.empty(filterBean.getStatoDisposizione()))
+			sql += " and statoDisposizione=:statoDisposizione";
+		
+		if (!StringUtilities.empty(filterBean.getProvenienza()))
+			sql += " and ProvenienzaDisposizione=:provenienza";
+		
+		if (!StringUtilities.empty(filterBean.getStatoConvalida()))
+			sql += " and StatoConvalida=:StatoConvalida";
+		
+		if (filterBean.getFlagDaDataInserimento() && DateUtils.isDate(filterBean.getDaDataInserimento()))
+			//sql += " and DataInserimentoDisposizione>='"+sdf.format(filterBean.getDaDataInserimento())+" 00:00:00'";//:DaDataInserimentoDisposizione";
+			sql += " and DataInserimentoDisposizione>=:DaDataInserimentoDisposizione";
+		
+		if (filterBean.getFlagADataInserimento() && DateUtils.isDate(filterBean.getaDataInserimento()))
+			//sql += " and DataInserimentoDisposizione<='"+sdf.format(filterBean.getaDataInserimento())+" 23:59:59'";//:ADataInserimentoDisposizione";
+			sql += " and DataInserimentoDisposizione<=:ADataInserimentoDisposizione";
+		
+		if (!StringUtilities.empty(filterBean.getDaDistinta()))
+			sql += " and IDDistintaBanca>=:daDistintaBanca";
+		
+		if (!StringUtilities.empty(filterBean.getaDistinta()))
+			sql += " and IDDistintaBanca<=:aDistintaBanca";
+
+		if (!StringUtilities.empty(filterBean.getDestinatario()))
+			sql += " and DenominazioneDestinatario like :destinatario";
+
+		if(!StringUtilities.empty(filterBean.getCodiceFiscale()))
+			sql += " and Codice_Fiscale_Destinatario like :codiceFiscale";
+		
+		if(!StringUtilities.empty(filterBean.getIdUnivoco()))
+			sql += " and IDDisposizione = :idUnivoco";
+		
+		if(!StringUtilities.empty(filterBean.getIdFunzione()))
+			sql += " and IDDisposizioneFunzioneOrdinante = :idFunzione";
+		
+		if(!StringUtilities.empty(filterBean.getNumeroPolizza()))
+			sql += " and NumeroPolizza = :numeroPolizza";
+		
+		if(!StringUtilities.empty(filterBean.getAbiOrdinante()))
+			sql += " and Codice_Abi_Ordinante = :abiOrdinante";
+		
+		if(!StringUtilities.empty(filterBean.getCabOrdinante()))
+			sql += " and Cab_Ordinante = :cabOrdinante";
+		
+		if(!StringUtilities.empty(filterBean.getContoOrdinante()))
+			sql += " and Conto_Ordinante = :contoOrdinante";
+		
+		if(!StringUtilities.empty(filterBean.getAbiDestinatario()))
+			sql += " and Codice_Abi_Destinatario = :abiDestinatario";
+		
+		if(!StringUtilities.empty(filterBean.getCabDestinatario()))
+			sql += " and Cab_Destinatario = :cabDestinatario";
+		
+		if(!StringUtilities.empty(filterBean.getContoDestinatario()))
+			sql += " and Conto_Destinatario = :contoDestinatario";
+		
+		if(!StringUtilities.empty(filterBean.getCodiceDestinatario()))
+			sql += " and CodiceClienteDebitore = :codiceDestinatario";
+		
+		if (filterBean.getFlagDaDataRicezioneEsito() && DateUtils.isDate(filterBean.getDaDataRicezioneEsito()))
+			//sql += " and DataUltimoEsitoAcquisito>='"+sdf.format(filterBean.getDaDataRicezioneEsito())+" 00:00:00'";//::DaDataRicezioneEsito";
+			sql += " and DataUltimoEsitoAcquisito>=:DaDataRicezioneEsito";
+		
+		if (filterBean.getFlagADataRicezioneEsito() && DateUtils.isDate(filterBean.getaDataRicezioneEsito()))
+			//sql += " and DataUltimoEsitoAcquisito<='"+sdf.format(filterBean.getaDataRicezioneEsito())+" 23:59:59'";//::aDataRicezioneEsito";
+			sql += " and DataUltimoEsitoAcquisito<=:aDataRicezioneEsito";
+
+		if(!StringUtilities.empty(filterBean.getEsitoDisposizione()))
+			if ("0".equals(filterBean.getEsitoDisposizione()))
+				sql += " and Esito is null";
+			else
+				sql += " and Esito = :esitoDisposizione";
+		
+		if(!StringUtilities.empty(filterBean.getCausaleStorno()))
+			sql += " and DescrizioneEsito like :causaleStorno";
+		
+		if(!StringUtilities.empty(filterBean.getNumeroAssegno()))
+			sql += " and NumeroAssegnoEmesso like :numeroAssegno";
+		
+		
+		return sql;
+		
+	}
+
+	private SQLQuery setQueryParameters(SQLQuery q, RicercaDisposizioniFilterBean filterBean) {
+			
+		if (filterBean == null)
+			return q;
+		
+		if (!StringUtilities.empty(filterBean.getFunzioneOrdinante()))
+			q.setParameter("funzioneOrdinante", filterBean.getFunzioneOrdinante());
+
+		if (!StringUtilities.empty(filterBean.getStatoDisposizione()))
+			q.setParameter("statoDisposizione", filterBean.getStatoDisposizione());
+		
+		if (!StringUtilities.empty(filterBean.getProvenienza()))
+			q.setParameter("provenienza",filterBean.getProvenienza());
+		
+		if (!StringUtilities.empty(filterBean.getStatoConvalida()))
+			q.setParameter("StatoConvalida",filterBean.getStatoConvalida());
+		
+		if (filterBean.getFlagDaDataInserimento() && DateUtils.isDate(filterBean.getDaDataInserimento()))
+			q.setParameter("DaDataInserimentoDisposizione",startOfDay(filterBean.getDaDataInserimento()));
+		
+		if (filterBean.getFlagADataInserimento() && DateUtils.isDate(filterBean.getaDataInserimento()))
+			q.setParameter("ADataInserimentoDisposizione",endOfDay(filterBean.getaDataInserimento()));
+		
+		if (!StringUtilities.empty(filterBean.getDaDistinta()))
+			q.setParameter("daDistintaBanca",filterBean.getDaDistinta());
+		
+		if (!StringUtilities.empty(filterBean.getaDistinta()))
+			q.setParameter("aDistintaBanca",filterBean.getaDistinta());
+
+		if (!StringUtilities.empty(filterBean.getDestinatario()))
+			q.setParameter("destinatario",filterBean.getDestinatario()+"%");
+
+//		if (filterBean.getFlagDaValutaBeneficiario() && DateUtils.isDate(filterBean.getDaValutaBeneficiario()))
+//			q.setParameter("DaDataValuta",startOfDay(filterBean.getDaValutaBeneficiario()));
+//		
+//		if (filterBean.getFlagAValutaBeneficiario() && DateUtils.isDate(filterBean.getaValutaBeneficiario()))
+//			q.setParameter("aDataValuta",endOfDay(filterBean.getaValutaBeneficiario()));
+		
+		
+		if(!StringUtilities.empty(filterBean.getCodiceFiscale()))
+			q.setParameter("codiceFiscale", filterBean.getCodiceFiscale()+"%");
+		
+		if(!StringUtilities.empty(filterBean.getIdUnivoco()))
+			q.setParameter("idUnivoco",filterBean.getIdUnivoco());
+		
+		if(!StringUtilities.empty(filterBean.getIdFunzione()))
+			q.setParameter("idFunzione",filterBean.getIdFunzione());
+		
+		if(!StringUtilities.empty(filterBean.getNumeroPolizza()))
+			q.setParameter("numeroPolizza",filterBean.getNumeroPolizza());
+		
+		if(!StringUtilities.empty(filterBean.getAbiOrdinante()))
+			q.setParameter("abiOrdinante",filterBean.getAbiOrdinante());
+		
+		if(!StringUtilities.empty(filterBean.getCabOrdinante()))
+			q.setParameter("cabOrdinante",filterBean.getCabOrdinante());
+		
+		if(!StringUtilities.empty(filterBean.getContoOrdinante()))
+			q.setParameter("contoOrdinante",filterBean.getContoOrdinante());
+		
+		if(!StringUtilities.empty(filterBean.getAbiDestinatario()))
+			q.setParameter("abiDestinatario",filterBean.getAbiDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getCabDestinatario()))
+			q.setParameter("cabDestinatario",filterBean.getCabDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getContoDestinatario()))
+			q.setParameter("contoDestinatario",filterBean.getContoDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getCodiceDestinatario()))
+			q.setParameter("codiceDestinatario",filterBean.getCodiceDestinatario());
+		
+		if (filterBean.getFlagDaDataRicezioneEsito() && DateUtils.isDate(filterBean.getDaDataRicezioneEsito()))
+			q.setParameter("DaDataRicezioneEsito",startOfDay(filterBean.getDaDataRicezioneEsito()));
+		
+		if (filterBean.getFlagADataRicezioneEsito() && DateUtils.isDate(filterBean.getaDataRicezioneEsito()))
+			q.setParameter("aDataRicezioneEsito",endOfDay(filterBean.getaDataRicezioneEsito()));
+
+		if(!StringUtilities.empty(filterBean.getEsitoDisposizione()))
+			if (!"0".equals(filterBean.getEsitoDisposizione()))
+				q.setParameter("esitoDisposizione",filterBean.getEsitoDisposizione());
+		
+		if(!StringUtilities.empty(filterBean.getCausaleStorno()))
+			q.setParameter("causaleStorno","%"+filterBean.getCausaleStorno()+"%");
+		
+		if(!StringUtilities.empty(filterBean.getNumeroAssegno()))
+			q.setParameter("numeroAssegno",filterBean.getNumeroAssegno());
+
+		
+		return q;
+			
+	}
+
+	public List<DisposizioniAeaDecoded> listDecoded(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID)  {
+
+		List<DisposizioniAeaDecoded> res = null;
+		boolean tx = startTransaction();
+		try {
+			
+			if ("DistinteBanca".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_DISTINTE_BANCA;
+			else if ("DistinteFlussiInput".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FLUSSI_INPUT;
+			else if ("FiltroDisposizioni".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_FILTRO_DISPOSIZIONI;
+			else if  ("FiltroDisposizioniReadOnly".equals(disposizioniFiltroBean.getTipoChiamata()))
+				tipoRicerca = TipoRicerca.TR_LISTA_DISPOSIZIONI_READONLY;
+	
+			String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, false, true, tipoRicerca, null, disposizioniFiltroBean.getOrderField());
+			
+	//		if (disposizioniFiltroBean.getOrderField()!=null && !"".equals(disposizioniFiltroBean.getOrderField()))
+	//			sql += getSQLOrderBy(disposizioniFiltroBean.getOrderField());
+			
+			
+			Query q = currentSession().createSQLQuery(sql).addEntity("d",DisposizioniAea.class).addEntity("cd", ComboDisposizioni.class);
+			q.setResultTransformer(new ResultTransformer() {
+				
+				@Override
+				public Object transformTuple(Object[] tuple, String[] aliases) {
+					return new DisposizioniAeaDecoded((DisposizioniAea) tuple[0], (ComboDisposizioni) tuple[1]);
+				}
+				
+				@Override
+				public List transformList(List collection) {
+					return collection;
+				}
+			});	
+	
+			if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0  && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", disposizioniFiltroBean.getSelectedIds());
+			
+			
+			res = (List<DisposizioniAeaDecoded>)q.list();// 
+			
+			try {
+				//res = q.list();
+			} catch(Exception ex) {
+				ex.printStackTrace();
+				return null;
+			}
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+
+
+	public List<DisposizioniAeaDecoded> filterDecoded(RicercaDisposizioniFilterBean filterBean){
+		List<DisposizioniAeaDecoded> res = null;
+		boolean tx = startTransaction();
+		try {
+		
+			String sql = "select {d.*}, {cd.*} from disposizioni_aea d WITH (NOLOCK)"+
+						" LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = d.IDDistintaFlussoInput"+
+						" left join Combo_Disposizioni cd on cd.Tipologia='AEA' And cd.Campo='Causale' And cd.Codice=d.causale ";
+			sql += " where isNull(DistintaFlussiInput.MassiveLoadStatus,3) = 3";
+		
+			sql += addFiltersToQuery(filterBean);
+	
+			
+			SQLQuery q=currentSession().createSQLQuery(sql).addEntity("d",DisposizioniAea.class).addEntity("cd", ComboDisposizioni.class);
+			q=setQueryParameters(q, filterBean);
+			q.setResultTransformer(new ResultTransformer() {
+				
+				@Override
+				public Object transformTuple(Object[] tuple, String[] aliases) {
+					return new DisposizioniAeaDecoded((DisposizioniAea) tuple[0], (ComboDisposizioni) tuple[1]);
+				}
+				
+				@Override
+				public List transformList(List collection) {
+					return collection;
+				}
+			});	
+			
+
+			
+			res=null;
+			
+			try {
+				res = q.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+				return new ArrayList<DisposizioniAeaDecoded>();
+			}
+		} finally {		
+			if (tx)
+				commit(); 
+		}
+		return res;
+	}
+
+	public List<DisposizioniAea> listByDistintaBancaNoTransaction(Integer idDistintaBanca) {
+		Query q = currentSession().createSQLQuery("select {d.*} from Disposizioni_Aea d where iddistintabanca=" + idDistintaBanca)
+				.addEntity("d", DisposizioniAea.class);
+		
+		List<DisposizioniAea> res = q.list();
+		return res;
+	}
+
+	
+	
+	
+}

+ 2014 - 0
sicura.business/src/dao/DisposizioniBonificiDAO.java

@@ -0,0 +1,2014 @@
+package dao;
+
+import java.io.StringReader;
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.ParameterMode;
+
+import org.apache.log4j.helpers.BoundedFIFO;
+import org.hibernate.Criteria;
+import org.hibernate.Query;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projection;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.procedure.ProcedureCall;
+import org.hibernate.result.Outputs;
+import org.hibernate.result.UpdateCountOutput;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.hibernate.transform.ResultTransformer;
+import org.hibernate.transform.Transformers;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import bean.DisposizioniBonificiBean;
+import bean.LogModificheBean;
+import bean.LogVariazioniBean;
+import bean.StoredProcResult;
+import bean.filters.DisposizioniFiltroBean;
+import bean.filters.RicercaDisposizioniFilterBean;
+import bean.query.DisposizioniAeaDecoded;
+import bean.query.DisposizioniBonificiDecoded;
+import common.bean.UserData;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import common.utility.DateUtils;
+import common.utility.StringUtilities;
+import sicura.entities.ApAbi;
+import sicura.entities.ComboDisposizioni;
+import sicura.entities.DisposizioniAea;
+import sicura.entities.DisposizioniBonifici;
+import sicura.entities.DisposizioniBonificiConTipologia;
+import sicura.entities.DisposizioniRid;
+import sicura.entities.DistintaFlussiInput;
+import utils.ConvalidaClass;
+import utils.DettaglioErrori;
+
+@Repository
+public class DisposizioniBonificiDAO extends GenericDAO<DisposizioniBonifici, Integer> implements IDAO<DisposizioniBonifici, Integer> {
+
+	@Autowired
+	GenericComboDAO genericComboDAO;
+	@Autowired
+	LogVariazioniDAO logVariazioniDAO;
+	
+	public Integer count(DisposizioniFiltroBean filterBean,  AppVariables appVariables) {
+		boolean tx = startTransaction();
+		
+		try {
+			String sql = generateQuery(filterBean, appVariables, true, false);
+			Query q = currentSession().createSQLQuery(sql);
+			
+			if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0 && filterBean.getSelectedIds()[0]!=-1)
+				sql += " and d.id in (:ids) ";
+			
+			Integer res = ((Integer) q.uniqueResult());
+	
+			return res;
+		} finally {
+			if (tx)
+				tx =commit();
+		}
+	}
+
+	public List<DisposizioniBonifici> list(int startRecord, int length, DisposizioniFiltroBean filterBean, AppVariables appVariables) {
+		boolean tx = startTransaction();
+		try {
+			String sql = generateQuery(filterBean, appVariables, false, false);
+			if (filterBean.getOrderField()==null || "".equals(filterBean.getOrderField()))
+				sql += " order by d.id";
+			else
+				sql += getSQLOrderBy(filterBean.getOrderField());
+			
+			Query q = currentSession().createSQLQuery(sql)
+				.addEntity("d", DisposizioniBonifici.class);
+			//if (!"DistinteBanca".equals(filterBean.getTipoChiamata()) && !"DistinteFlussiInput".equals(filterBean.getTipoChiamata()))
+		//			((SQLQuery)q).addEntity("f", DistintaFlussiInput.class);
+					//.addEntity("DistintaFlussiInput", DistintaFlussiInput.class)
+					;
+					
+					
+			
+			if (startRecord!=-1)
+				q.setFirstResult(startRecord);
+			if(length!=-1)
+				q.setMaxResults(length);
+			
+			if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0 && filterBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", filterBean.getSelectedIds());
+			
+			/*
+			q.setResultTransformer(new ResultTransformer() {				
+				@Override
+				public Object transformTuple(Object[] tuple, String[] aliases) {
+					return new DisposizioniBonificiBean((DisposizioniBonifici) tuple[0], (DistintaFlussiInput) tuple[1]);
+				}
+				
+				@Override
+				public List transformList(List collection) {
+					return collection;
+				}
+			});
+			*/
+			
+			List<DisposizioniBonifici> res = q.list();
+		
+			
+			return res;		
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+	
+	private Criteria addFilters(Criteria crit, DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables) {
+		if (!"".equals(disposizioniFiltroBean.getDestinatario()))
+			crit.add(Restrictions.ilike("denominazioneDestinatario", "%" + disposizioniFiltroBean.getDestinatario() + "%"));
+		if (!"".equals(disposizioniFiltroBean.getStatoDisposizioni()))
+			crit.add(Restrictions.eq("statoDisposizione", disposizioniFiltroBean.getStatoDisposizioni()));
+		if (!"".equals(disposizioniFiltroBean.getIdFunzioneOrdinante()))
+			crit.add(Restrictions.eq("iddisposizioneFunzioneOrdinante", disposizioniFiltroBean.getIdFunzioneOrdinante()));
+		String importo = toDouble(disposizioniFiltroBean.getImporto());
+		if (!"0".equals(importo))
+			crit.add(Restrictions.eq("importo",importo));
+		if (!"".equals(disposizioniFiltroBean.getStatoConvalida()))
+			crit.add(Restrictions.eq("statoConvalida", disposizioniFiltroBean.getStatoConvalida()));
+		
+		
+		
+		return crit;				
+	}
+	
+	
+	public List<String> export(DisposizioniFiltroBean filterBean, AppVariables appVariables)  {
+		boolean tx = startTransaction();
+
+		try {
+			String sql = generateQuery(filterBean, appVariables, false, false);
+			if (filterBean.getOrderField()==null || "".equals(filterBean.getOrderField()))
+				sql += " order by d.id";
+			else
+				sql += getSQLOrderBy(filterBean.getOrderField());
+			
+			Query q = currentSession().createSQLQuery(sql)
+					.addEntity("d",DisposizioniBonifici.class);
+			
+			if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0 && filterBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", filterBean.getSelectedIds());
+			
+		
+	
+			List<DisposizioniBonifici> disposizioni = q.list();
+			
+			List<String> res = generateCsv(disposizioni);
+				
+			return res;
+	
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+
+	private List<String> generateCsv(List<DisposizioniBonifici> disposizioni) {
+		List<String> res = new ArrayList<String>();
+		res.add("StatoConvalida;iddisposizione;DataInserimentoDisposizione;IDDisposizioneFunzioneOrdinante;" + 
+				"Importo;Descrizione_Disposizione;Codice_Abi_Ordinante;Conto_Ordinante;Data_Valuta_Destinatario;" +
+				"DenominazioneDestinatario;Codice_Fiscale_Destinatario;CodiceClienteDebitore;Codice_Abi_Destinatario;Cab_Destinatario;"+
+				"CoordinateIBANbeneficiario;CodiceRiferimento;IDDistintaBanca;EsitoSepaRsnCode;EsitoSepaAddtlInf;BonificoHigPriority;"+
+				"DataUltimoEsitoAcquisito;");
+		
+		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
+		SimpleDateFormat sdfTime = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
+		
+		for(DisposizioniBonifici disposizione: disposizioni)
+			res.add(
+				"\"" + safeString(decodificaStato(disposizione.getStatoConvalida()))+"\";" +
+				"\"" + safeString(disposizione.getIddisposizione().toString())+"\";" +	
+				"\"" + (disposizione.getDataInserimentoDisposizione()!=null?sdfTime.format(disposizione.getDataInserimentoDisposizione()):"")+"\";" +
+				"\"" + safeString(disposizione.getIddisposizioneFunzioneOrdinante())+"\";" +
+				"\"" + safeString(disposizione.getImporto())+"\";" +
+				"\"" + safeString(disposizione.getDescrizioneDisposizione())+"\";" +
+				"\"" + safeString(disposizione.getCodiceAbiOrdinante())+"\";" +
+				"\"" + safeString(disposizione.getContoOrdinante())+"\";" +
+				"\"" + (disposizione.getDataValutaDestinatario()!=null?sdfTime.format(disposizione.getDataValutaDestinatario()):"")+"\";" +
+				"\"" + safeString(disposizione.getDenominazioneDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getCodiceFiscaleDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getCodiceClienteDebitore())+"\";" +
+				"\"" + safeString(disposizione.getCodiceAbiDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getCabDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getCoordinateIbanbeneficiario())+"\";" +
+				"\"" + safeString(disposizione.getCodiceRiferimento())+"\";" +
+				"\"" + safeString(disposizione.getIddistintaBanca().toString())+"\";" +
+				"\"" + safeString(decodeCombo("RID", "CodiceStornoSEPA", disposizione.getEsitoSepaRsnCode()))+"\";" +
+				"\"" + safeString(disposizione.getEsitoSepaAddtlInf())+"\";" +
+				"\"" + (disposizione.isBonificoHigPriority()?"SI":"NO")+"\";" +
+				"\"" + (disposizione.getDataUltimoEsitoAcquisito()!=null? sdf.format(disposizione.getDataUltimoEsitoAcquisito()):"")+"\";" 
+			);
+		return res;
+	}
+
+	public List<String> exportFiltered(RicercaDisposizioniFilterBean ricercaDisposizioniFilterBean, String otherCode, AppVariables appVariables, String login) {
+
+		List<DisposizioniBonifici> disposizioni = filter(-1,0,null, ricercaDisposizioniFilterBean,null);
+		boolean tx = startTransaction();
+		try {
+			List<String> res = generateCsv(disposizioni);
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+
+	}
+
+	
+	private String decodeCombo(String tipologia, String campo, String codice) {
+		return genericComboDAO.getComboValue("Combo_Disposizioni",  tipologia, campo, codice);
+	}
+	
+
+	private String decodificaStato(Short statoConvalida) {
+		switch(statoConvalida) {
+		case -1: return "Corretta";
+		case 2: return "Warning";
+		default: return "Errata";
+		}
+	}
+	
+	public List<LogModificheBean> logStati(Integer id) {
+		boolean tx = startTransaction();
+		try {
+			String sql = "select id, userId, data, ora, utente, nomeCampo, cast(campoPreModifica as varchar(255)) campoPreModifica, cast(campoPostModifica as varchar(255)) as campoPostModifica " +
+						" from LogModificheDisposizioni where iddisposizione=:id and NomeCampo='StatoDisposizione'"+
+						" order by Data, Ora, id";
+					
+			Query q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(LogModificheBean.class));
+			
+			q.setParameter("id", id);	
+			@SuppressWarnings("unchecked")
+			List<LogModificheBean> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+	
+	public List<LogModificheBean> logVariazioni(Integer id) {
+		boolean tx = startTransaction();
+		
+		try{
+			String sql = "select id, userId, data, ora, utente, nomeCampo, cast(campoPreModifica as varchar(255)) campoPreModifica, cast(campoPostModifica as varchar(255)) as campoPostModifica " +
+						" from LogModificheDisposizioni where iddisposizione=:id and NomeCampo<>'StatoDisposizione'"+
+						" order by Data, Ora, id";
+					
+			Query q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(LogModificheBean.class));
+			
+			q.setParameter("id", id);	
+			@SuppressWarnings("unchecked")
+			List<LogModificheBean> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+
+	
+	private String generateQuery(DisposizioniFiltroBean filterBean, AppVariables appVariables, boolean doCount, boolean addLookupFields) {
+			
+		String sql = "select " + (doCount  
+				? "Count(*) "
+				: "{d.*} "
+			);
+		
+		//if (!doCount && !"DistinteBanca".equals(filterBean.getTipoChiamata()) && !"DistinteFlussiInput".equals(filterBean.getTipoChiamata()))
+		//	sql +=", f.* ";
+		
+		if (!doCount && addLookupFields)
+			sql += ", {cdCausale.*}, {cdStatoDisp.*}, {cdStatoAnom.*}, {cdScarto.*} ";
+		
+		sql+= " from Disposizioni_Bonifici d WITH (NOLOCK)";
+		
+		if (addLookupFields)
+			sql += " left join Combo_Disposizioni cdCausale on cdCausale.Tipologia='BONIFICI' And cdCausale.Campo='Causale' And cdCausale.Codice=d.causale " +
+					" left join Combo_Disposizioni cdStatoDisp on cdStatoDisp.Tipologia='BONIFICI' And cdStatoDisp.Campo='StatoDisposizioneSep' And cdStatoDisp.Codice=d.causale " +
+					" left join Combo_Disposizioni cdStatoAnom on cdStatoAnom.Tipologia='BONIFICI' And cdStatoAnom.Campo='StatoAnomaliaSep' And cdStatoAnom.Codice=d.causale " +
+					" left join Combo_Disposizioni cdScarto on cdScarto.Tipologia='BONIFICI' And cdScarto.Campo='CausaScartoSep' And cdScarto.Codice=d.causale ";
+		
+		//if(!"DistinteBanca".equals(filterBean.getTipoChiamata()) && !"DistinteFlussiInput".equals(filterBean.getTipoChiamata()))
+				sql += " LEFT JOIN DistintaFlussiInput f WITH (NOLOCK) ON f.IDDistintaFlusso = d.IDDistintaFlussoInput";
+		
+		sql += " where 1=1 ";
+		
+		 //If TipoChiamata = "ListaDisposizioni" Or TipoChiamata = "ListaDisposizioniSinistri" Or TipoChiamata = "ListaDisposizioniVita" Then
+		
+		if ("ListaDisposizioni".equals(filterBean.getTipoChiamata()) || "ListaDisposizioniDom".equals(filterBean.getTipoChiamata()) || "ListaDisposizioniEst".equals(filterBean.getTipoChiamata()) || "assegniIntesa".equals(filterBean.getTipoChiamata())) {
+			if ("UO".equals(appVariables.getProfiloLocale())) {
+				sql += " and FunzioneOrdinante='" + appVariables.getFunzioneOrdinante() + "'";
+				sql += " AND (StatoDisposizione='Inserita')";
+				sql += " AND (ProvenienzaDisposizione='Manuale')";
+				sql += " AND (ISNULL(f.MassiveLoadStatus,3) = 3)";
+				
+				if ("ListaDisposizioniDom".equals(filterBean.getTipoChiamata()))
+					sql += " AND (Causale='01002')";
+				else if ("ListaDisposizioniEst".equals(filterBean.getTipoChiamata()))
+					sql += " AND (Causale='48020' and CircuitoPagamento=0)";
+				else if ("assegniIntesa".equals(filterBean.getTipoChiamata()))
+					sql += " AND (Causale='27030' and CircuitoPagamento=3)";
+				else
+					sql += " AND (Causale<>'01002')";
+				
+			} else if ("UR".equals(appVariables.getProfiloLocale())) {
+				sql += addUserFilters(appVariables.getUserId(), appVariables.getGuid());
+				sql += " AND (StatoDisposizione='Inserita' OR StatoDisposizione='Approvata' OR StatoDisposizione='Confermata')";
+				sql += " AND (ProvenienzaDisposizione='Manuale')";
+				sql += " AND (ISNULL(f.MassiveLoadStatus,3) = 3)";
+				
+				if ("ListaDisposizioniDom".equals(filterBean.getTipoChiamata()))
+					sql += " AND (Causale='01002')";
+				else if ("ListaDisposizioniEst".equals(filterBean.getTipoChiamata()))
+					sql += " AND (Causale='48020' and CircuitoPagamento=0)";
+				else if ("assegniIntesa".equals(filterBean.getTipoChiamata()))
+					sql += " AND (Causale='27030' and CircuitoPagamento=3)";
+				else
+					sql += " AND (Causale<>'01002')";
+
+			} else 	if ("TO".equals(appVariables.getProfiloLocale())||"TR".equals(appVariables.getProfiloLocale())||"VI".equals(appVariables.getProfiloLocale())) {
+				sql += "and (StatoDisposizione='Approvata' OR StatoDisposizione='Confermata')";
+				sql += " AND (ISNULL(f.MassiveLoadStatus,3) = 3)";
+
+				if ("ListaDisposizioniDom".equals(filterBean.getTipoChiamata()))
+					sql += " AND (Causale='01002')";
+				else if ("assegniIntesa".equals(filterBean.getTipoChiamata()))
+					sql += " AND (Causale='27030' and CircuitoPagamento=3)";
+				else if ("ListaDisposizioniEst".equals(filterBean.getTipoChiamata()))
+					sql += " AND (Causale='48020' and CircuitoPagamento=0) ";
+				else
+					sql += " AND (Causale<>'01002')";
+
+			}
+		} else if ("DistinteBanca".equals(filterBean.getTipoChiamata())) {
+			sql += "and (StatoDisposizione='Predisposta' OR StatoDisposizione='Validata' OR StatoDisposizione='Disposta' OR StatoDisposizione='Inviata' OR StatoDisposizione='Scartata' OR StatoDisposizione='Esitata' OR StatoDisposizione='Cancellata'"+
+					" OR StatoDisposizione='In Richiamo' OR StatoDisposizione='Richiamata' OR StatoDisposizione='Richiamo Errato')";
+			sql += "and IDDistintaBanca=" + filterBean.getIdDistintaBanca();
+		} else if ("DistinteFlussiInput".equals(filterBean.getTipoChiamata())) {
+			sql += " and (StatoDisposizione='Approvata' OR StatoDisposizione='Confermata' OR StatoDisposizione='Predisposta' OR StatoDisposizione='Validata' OR StatoDisposizione='Scartata' OR StatoDisposizione='Disposta' OR StatoDisposizione='Inviata' OR StatoDisposizione='Esitata' OR StatoDisposizione='Cancellata'"+
+					" OR StatoDisposizione='In Richiamo' OR StatoDisposizione='Richiamata' OR StatoDisposizione='Richiamo Errato')";
+			sql += " and IDDistintaFlussoInput=" + filterBean.getIdDistintaFlusso();
+		}
+		
+		sql += addFiltriDisposizione(filterBean);
+
+		
+		return sql;
+	}
+
+	private String addFiltriDisposizione(DisposizioniFiltroBean filterBean) {
+		String sql="";
+		if (filterBean.getInErrore()) {
+			sql += " and StatoConvalida<>-1";
+		} 
+		
+		if (filterBean.getDestinatario()!=null && !"".equals(filterBean.getDestinatario()))
+			sql += " and denominazioneDestinatario like '%" + filterBean.getDestinatario() + "%'"; 
+		if (!"".equals(filterBean.getStatoDisposizioni()))
+			sql += " and statoDisposizione = '" + filterBean.getStatoDisposizioni() + "' ";
+		if (!"".equals(filterBean.getIdFunzioneOrdinante()))
+			sql += " and iddisposizioneFunzioneOrdinante =" + filterBean.getIdFunzioneOrdinante();
+		String importo = toDouble(filterBean.getImporto());
+		if (!"0".equals(importo))
+			sql += " and importodbgrid=" + importo.replace(',','.');
+		if (!"".equals(filterBean.getStatoConvalida()))
+			 sql += " and statoConvalida='" +filterBean.getStatoConvalida() + "'";
+		if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0 && filterBean.getSelectedIds()[0]!=-1)
+			sql += " and d.id in (:ids) ";
+		
+		return sql;
+	}
+	
+	public String toDouble(String importo) {
+		DecimalFormat df = new DecimalFormat("#.00"); 
+		try {
+			Double dbl = Double.parseDouble(importo.replace(",", "."));
+			String res = df.format(dbl);
+			return res.replace(".", ",");
+		} catch (Exception ex) {
+			return "0";
+		}
+	}
+
+	
+	@SuppressWarnings("rawtypes")
+	private String addUserFilters(String userID, String guid) {
+		Query q = currentSession().createSQLQuery("EXEC spSecurityUtenteFunzioni :userid, :guid");
+		q
+			.setParameter("userid", userID)
+			.setParameter("guid", guid)
+		 	.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);		
+		
+		List res = q.list();
+		
+		String filters="";
+		
+		if (res.size()>0) {
+			filters += "(FunzioneOrdinante='"+((Map)res.get(0)).get("FunzioneOrdinante")+"'";
+			for (int i=1;i<res.size();i++) {
+				
+				Map row = (Map) res.get(i);
+				filters += " OR (FunzioneOrdinante=" + row.get("FunzioneOrdinante") + "'";						
+				
+			}
+			filters += ")";
+		}
+		
+		return filters;
+		
+	
+	}
+
+
+	public List<DisposizioniBonifici> list(int startRecord, int length, String orderByField)  {
+		boolean tx = startTransaction();
+		
+		try {
+			Criteria crit = currentSession().createCriteria(DisposizioniBonifici.class);
+			
+			crit
+				.setFirstResult(startRecord)
+				.setMaxResults(length);
+			if (orderByField!=null)
+				crit.addOrder(getOrderBy(orderByField));
+			
+			List<DisposizioniBonifici> res = crit.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+
+	public Long count() {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(DisposizioniBonifici.class);
+			
+			crit.setProjection(Projections.count("id"));
+			
+			Long res = ((Long) crit.uniqueResult());
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+	
+	
+	/********************** Filtro generale disposizioni ******************/
+	
+	public List<DisposizioniBonifici> filter(int startRecord, int length, String orderField, RicercaDisposizioniFilterBean filterBean, DisposizioniFiltroBean disposizioniFiltroBean){
+		boolean tx = startTransaction();
+		
+		try {
+			String sql = "select disposizioni_bonifici.* from disposizioni_Bonifici WITH (NOLOCK)"+
+						" LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = Disposizioni_Bonifici.IDDistintaFlussoInput";
+			sql += " where isNull(DistintaFlussiInput.MassiveLoadStatus,3) = 3";
+		
+			sql += addFiltersToQuery(filterBean);
+			if (disposizioniFiltroBean!=null)
+				sql += addFiltriDisposizione(disposizioniFiltroBean);
+	
+			if (orderField!=null)
+				sql += getSQLOrderBy(orderField);
+			else
+				sql += " order by id";
+			
+			SQLQuery q=currentSession().createSQLQuery(sql);
+			q=setQueryParameters(q, filterBean);
+			q.addEntity(DisposizioniBonifici.class);
+			
+			if (startRecord>=0)
+				q.setFirstResult(startRecord);
+			if (length>0)
+				q.setMaxResults(length);
+			
+			if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0  && filterBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", filterBean.getSelectedIds());
+			
+			List<DisposizioniBonifici> res=null;
+			
+			try {
+				res = q.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+				return new ArrayList<DisposizioniBonifici>();
+			}
+				
+			return res;
+		} finally {				
+			if (tx)
+				commit(); 
+		}
+	}
+	
+	
+	public Integer countFilter(RicercaDisposizioniFilterBean filterBean, DisposizioniFiltroBean disposizioniFiltroBean) {
+		boolean tx = startTransaction();
+		try {
+		
+			String sql = "select count(*) from disposizioni_Bonifici WITH (NOLOCK)"+
+						" LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = disposizioni_Bonifici.IDDistintaFlussoInput";
+			sql += " where isNull(DistintaFlussiInput.MassiveLoadStatus,3) = 3";
+		
+			sql += addFiltersToQuery(filterBean);
+			if (disposizioniFiltroBean!=null)
+				sql += addFiltriDisposizione(disposizioniFiltroBean);
+			
+			SQLQuery q=currentSession().createSQLQuery(sql);
+			q=setQueryParameters(q, filterBean);
+			
+			if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0  && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", filterBean.getSelectedIds());
+			
+			Integer res = (Integer) q.uniqueResult();
+			
+			return res;
+		} finally {
+			if (tx)
+				commit(); 
+		}
+	}
+	
+	
+	private String addFiltersToQuery(RicercaDisposizioniFilterBean filterBean) {
+		String sql = "";
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+		if (!StringUtilities.empty(filterBean.getFunzioneOrdinante()))
+			sql +=" and funzioneOrdinante=:funzioneOrdinante";
+
+		if (!StringUtilities.empty(filterBean.getStatoDisposizione()))
+			sql += " and statoDisposizione=:statoDisposizione";
+		
+		if (!StringUtilities.empty(filterBean.getProvenienza()))
+			sql += " and ProvenienzaDisposizione=:provenienza";
+		
+		if (!StringUtilities.empty(filterBean.getStatoConvalida()))
+			sql += " and StatoConvalida=:StatoConvalida";
+		
+		if (filterBean.getFlagDaDataInserimento() && DateUtils.isDate(filterBean.getDaDataInserimento()))
+			sql += " and DataInserimentoDisposizione>='"+sdf.format(filterBean.getDaDataInserimento())+" 00:00:00'";//:DaDataInserimentoDisposizione";
+		
+		if (filterBean.getFlagADataInserimento() && DateUtils.isDate(filterBean.getaDataInserimento()))
+			sql += " and DataInserimentoDisposizione<='"+sdf.format(filterBean.getaDataInserimento())+" 23:59:59'";//:ADataInserimentoDisposizione";
+		
+		if (!StringUtilities.empty(filterBean.getDaDistinta()))
+			sql += " and IDDistintaBanca>=:daDistintaBanca";
+		
+		if (!StringUtilities.empty(filterBean.getaDistinta()))
+			sql += " and IDDistintaBanca<=:aDistintaBanca";
+
+		if (!StringUtilities.empty(filterBean.getDestinatario()))
+			sql += " and DenominazioneDestinatario like :destinatario";
+
+		if(!StringUtilities.empty(filterBean.getCodiceFiscale()))
+			sql += " and Codice_Fiscale_Destinatario like :codiceFiscale";
+		
+		if(!StringUtilities.empty(filterBean.getCodiceDestinatario()))
+			sql += " and CodiceClienteDebitore = :codiceDestinatario";
+	
+		if (filterBean.getFlagDaValutaBeneficiario() && DateUtils.isDate(filterBean.getDaValutaBeneficiario()))
+			sql += " and Data_Valuta_Destinatario>='"+sdf.format(filterBean.getDaValutaBeneficiario())+" 00:00:00'";//:DaDataValuta";
+		
+		if (filterBean.getFlagAValutaBeneficiario() && DateUtils.isDate(filterBean.getaValutaBeneficiario()))
+			sql += " and Data_Valuta_Destinatario<='"+sdf.format(filterBean.getaValutaBeneficiario())+" 23:59:59'";//:aDataValuta";
+		
+		if(!StringUtilities.empty(filterBean.getDaImporto())) 
+			sql += " and ImportoDBGrid>=:daImporto";
+		
+		if(!StringUtilities.empty(filterBean.getaImporto()))
+			sql += " and ImportoDBGrid<=:aImporto";
+		
+		if(!StringUtilities.empty(filterBean.getCausaleMovimento()))
+			sql += " and CausaleMovimento=:causaleMovimento";
+		
+		if(!StringUtilities.empty(filterBean.getIdUnivoco()))
+			sql += " and IDDisposizione = :idUnivoco";
+		
+		if(!StringUtilities.empty(filterBean.getIdFunzione()))
+			sql += " and IDDisposizioneFunzioneOrdinante = :idFunzione";
+		
+		if(!StringUtilities.empty(filterBean.getNumeroPolizza()))
+			sql += " and NumeroPolizza = :numeroPolizza";
+		
+		if(!StringUtilities.empty(filterBean.getAbiOrdinante()))
+			sql += " and Codice_Abi_Ordinante = :abiOrdinante";
+		
+		if(!StringUtilities.empty(filterBean.getCabOrdinante()))
+			sql += " and Cab_Ordinante = :cabOrdinante";
+		
+		if(!StringUtilities.empty(filterBean.getContoOrdinante()))
+			sql += " and Conto_Ordinante = :contoOrdinante";
+		
+		if(!StringUtilities.empty(filterBean.getAbiDestinatario()))
+			sql += " and Codice_Abi_Destinatario = :abiDestinatario";
+		
+		if(!StringUtilities.empty(filterBean.getCabDestinatario()))
+			sql += " and Cab_Destinatario = :cabDestinatario";
+		
+		if(!StringUtilities.empty(filterBean.getContoDestinatario()))
+			sql += " and Conto_Destinatario = :contoDestinatario";
+		
+		if (filterBean.getFlagDaDataRicezioneEsito() && DateUtils.isDate(filterBean.getDaDataRicezioneEsito()))
+			sql += " and DataUltimoEsitoAcquisito>='"+sdf.format(filterBean.getDaDataRicezioneEsito())+" 00:00:00'";//:DaDataRicezioneEsito";
+		
+		if (filterBean.getFlagADataRicezioneEsito() && DateUtils.isDate(filterBean.getaDataRicezioneEsito()))
+			sql += " and DataUltimoEsitoAcquisito<='"+sdf.format(filterBean.getaDataRicezioneEsito())+" 23:59:59'";//:aDataRicezioneEsito";
+
+		if (filterBean.getFlagDaDataEsecuzioneBanca() && DateUtils.isDate(filterBean.getDaDataEsecuzioneBanca()))
+			sql += " and DataEsecuzione>='"+sdf.format(filterBean.getDaDataEsecuzioneBanca())+" 00:00:00'";//:daDataEsecuzione";
+		
+		if (filterBean.getFlagADataEsecuzioneBanca() && DateUtils.isDate(filterBean.getaDataEsecuzioneBanca()))
+			sql += " and DataEsecuzione<='"+sdf.format(filterBean.getaDataEsecuzioneBanca())+" 23:59:59'";//aDataEsecuzione";
+		
+		
+		if(!StringUtilities.empty(filterBean.getEsitoDisposizione()))
+			if ("0".equals(filterBean.getEsitoDisposizione()))
+				sql += " and Esito is null";
+			else
+				sql += " and Esito = :esitoDisposizione";
+		
+	
+		if (!StringUtilities.empty(filterBean.getTrnBonificoSCT()))
+			sql += " and CodiceRiferimento = :CodiceRiferimento";
+		
+		if(!StringUtilities.empty(filterBean.getNumeroAssegno()))
+			sql += " and NumeroAssegnoEmesso = :numeroAssegno";
+
+		if (filterBean.getTipoDisposizione().equalsIgnoreCase("Pagamenti SCT"))
+			sql += " and causale<>'01002' ";
+		
+		if (filterBean.getTipoDisposizione().equalsIgnoreCase("Pagamenti DOM"))
+			sql += " and causale='01002' ";
+		
+		if (filterBean.getTipoDisposizione().equalsIgnoreCase("Pagamenti INPS"))
+			sql += " and causale='27010' ";
+
+		if (filterBean.getTipoDisposizione().equalsIgnoreCase("Pagamenti INPS"))
+			sql += " and causale='27010' ";
+
+		if (filterBean.getTipoDisposizione().equalsIgnoreCase("Pagamenti SCT Esteri"))
+			sql += " and causale='48020' and CircuitoPagamento=0 ";
+		
+		if (filterBean.getTipoDisposizione().equalsIgnoreCase("Assegni Intesa"))
+			sql += " AND (Causale='27030' and CircuitoPagamento=3)";
+		
+		if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0 && filterBean.getSelectedIds()[0]!=-1)
+			sql += " and d.id in (:ids) ";
+		
+		return sql;
+		
+	}
+
+	private SQLQuery setQueryParameters(SQLQuery q, RicercaDisposizioniFilterBean filterBean) {
+			
+		if (!StringUtilities.empty(filterBean.getFunzioneOrdinante()))
+			q.setParameter("funzioneOrdinante", filterBean.getFunzioneOrdinante());
+
+		if (!StringUtilities.empty(filterBean.getStatoDisposizione()))
+			q.setParameter("statoDisposizione", filterBean.getStatoDisposizione());
+		
+		if (!StringUtilities.empty(filterBean.getProvenienza()))
+			q.setParameter("provenienza",filterBean.getProvenienza());
+		
+		if (!StringUtilities.empty(filterBean.getStatoConvalida()))
+			q.setParameter("StatoConvalida",filterBean.getStatoConvalida());
+		
+//		if (filterBean.getFlagDaDataInserimento() && DateUtils.isDate(filterBean.getDaDataInserimento()))
+//			q.setParameter("DaDataInserimentoDisposizione",startOfDay(filterBean.getDaDataInserimento()));
+//		
+//		if (filterBean.getFlagADataInserimento() && DateUtils.isDate(filterBean.getaDataInserimento()))
+//			q.setParameter("ADataInserimentoDisposizione",endOfDay(filterBean.getaDataInserimento()));
+		
+		if (!StringUtilities.empty(filterBean.getDaDistinta()))
+			q.setParameter("daDistintaBanca",filterBean.getDaDistinta());
+		
+		if (!StringUtilities.empty(filterBean.getaDistinta()))
+			q.setParameter("aDistintaBanca",filterBean.getaDistinta());
+
+		if (!StringUtilities.empty(filterBean.getDestinatario()))
+			q.setParameter("destinatario",filterBean.getDestinatario()+"%");
+
+//		if (filterBean.getFlagDaValutaBeneficiario() && DateUtils.isDate(filterBean.getDaValutaBeneficiario()))
+//			q.setParameter("DaDataValuta",startOfDay(filterBean.getDaValutaBeneficiario()));
+//		
+//		if (filterBean.getFlagAValutaBeneficiario() && DateUtils.isDate(filterBean.getaValutaBeneficiario()))
+//			q.setParameter("aDataValuta",endOfDay(filterBean.getaValutaBeneficiario()));
+		
+		if(!StringUtilities.empty(filterBean.getDaImporto()))
+			q.setParameter("daImporto",filterBean.getDaImporto().replace(',', '.'));
+		
+		if(!StringUtilities.empty(filterBean.getaImporto()))
+			q.setParameter("aImporto",filterBean.getaImporto().replace(',', '.'));
+		
+		if(!StringUtilities.empty(filterBean.getCausaleMovimento()))
+			q.setParameter("causaleMovimento",filterBean.getCausaleMovimento());
+		
+		if(!StringUtilities.empty(filterBean.getCodiceFiscale()))
+			q.setParameter("codiceFiscale", filterBean.getCodiceFiscale()+"%");
+		
+		if(!StringUtilities.empty(filterBean.getIdUnivoco()))
+			q.setParameter("idUnivoco",filterBean.getIdUnivoco());
+		
+		if(!StringUtilities.empty(filterBean.getIdFunzione()))
+			q.setParameter("idFunzione",filterBean.getIdFunzione());
+		
+		if(!StringUtilities.empty(filterBean.getNumeroPolizza()))
+			q.setParameter("numeroPolizza",filterBean.getNumeroPolizza());
+		
+		if(!StringUtilities.empty(filterBean.getAbiOrdinante()))
+			q.setParameter("abiOrdinante",filterBean.getAbiOrdinante());
+		
+		if(!StringUtilities.empty(filterBean.getCabOrdinante()))
+			q.setParameter("cabOrdinante",filterBean.getCabOrdinante());
+		
+		if(!StringUtilities.empty(filterBean.getContoOrdinante()))
+			q.setParameter("contoOrdinante",filterBean.getContoOrdinante());
+		
+		if(!StringUtilities.empty(filterBean.getAbiDestinatario()))
+			q.setParameter("abiDestinatario",filterBean.getAbiDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getCabDestinatario()))
+			q.setParameter("cabDestinatario",filterBean.getCabDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getContoDestinatario()))
+			q.setParameter("contoDestinatario",filterBean.getContoDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getCodiceDestinatario()))
+			q.setParameter("codiceDestinatario",filterBean.getCodiceDestinatario());
+
+//		if (filterBean.getFlagDaDataRicezioneEsito() && DateUtils.isDate(filterBean.getDaDataRicezioneEsito()))
+//			q.setParameter("DaDataRicezioneEsito",startOfDay(filterBean.getDaDataRicezioneEsito()));
+//		
+//		if (filterBean.getFlagADataRicezioneEsito() && DateUtils.isDate(filterBean.getaDataRicezioneEsito()))
+//			q.setParameter("aDataRicezioneEsito",endOfDay(filterBean.getaDataRicezioneEsito()));
+//
+//		if (filterBean.getFlagDaDataEsecuzioneBanca() && DateUtils.isDate(filterBean.getDaDataEsecuzioneBanca()))
+//			q.setParameter("daDataEsecuzione",startOfDay(filterBean.getDaDataEsecuzioneBanca()));
+//		
+//		if (filterBean.getFlagADataEsecuzioneBanca() && DateUtils.isDate(filterBean.getaDataEsecuzioneBanca()))
+//			q.setParameter("aDataEsecuzione",endOfDay(filterBean.getaDataEsecuzioneBanca()));
+
+		if(!StringUtilities.empty(filterBean.getEsitoDisposizione()))
+			if (!"0".equals(filterBean.getEsitoDisposizione()))
+				q.setParameter("esitoDisposizione",filterBean.getEsitoDisposizione());
+		
+		if (!StringUtilities.empty(filterBean.getTrnBonificoSCT()))
+			q.setParameter("CodiceRiferimento", filterBean.getTrnBonificoSCT());
+		
+		if(!StringUtilities.empty(filterBean.getNumeroAssegno()))
+			q.setParameter("numeroAssegno",filterBean.getNumeroAssegno());
+
+		
+		return q;
+			
+	}
+
+	public DisposizioniBonifici fixDisposizione(DisposizioniBonifici disposizioneBonifici) {
+		
+	 	if ("Inserita".equalsIgnoreCase(disposizioneBonifici.getStatoDisposizione()) ||
+			"Approvata".equalsIgnoreCase(disposizioneBonifici.getStatoDisposizione()) ||
+			"Confermata".equalsIgnoreCase(disposizioneBonifici.getStatoDisposizione()) ) {
+			if (!(
+					 ("".equals(disposizioneBonifici.getCoordinateIbanbeneficiario())||disposizioneBonifici.getCoordinateIbanbeneficiario()==null) &&
+					 ("1".equals(disposizioneBonifici.getCircuitoPagamento())) &&
+					 ("".equals(disposizioneBonifici.getModalitaPagamento()) || "1".equals(disposizioneBonifici.getModalitaPagamento()))
+				 )) {
+					// Scorporo IBAN -> Abi-Cab-Conto-Cin-CodicePaese
+					if (disposizioneBonifici.getCoordinateIbanbeneficiario()!=null) {
+						if (disposizioneBonifici.getCoordinateIbanbeneficiario().replaceAll("\\s","").length()>30) {
+							disposizioneBonifici.setCodiceAbiDestinatario(disposizioneBonifici.getCoordinateIbanbeneficiario().replaceAll("\\s","").substring(5,10));
+							disposizioneBonifici.setCabDestinatario(disposizioneBonifici.getCoordinateIbanbeneficiario().replaceAll("\\s","").substring(10,15));
+							disposizioneBonifici.setCin(disposizioneBonifici.getCoordinateIbanbeneficiario().substring(4,5));
+							disposizioneBonifici.setBancaSportelloDomic(recuperaBanca(disposizioneBonifici.getCodiceAbiDestinatario()));
+						}
+					}
+				}
+		}
+		disposizioneBonifici.setFlagStampa(false);
+		
+		if (causaleModificata(disposizioneBonifici) &&
+			("34000".equals(disposizioneBonifici.getCausale()) ||
+			"34001".equals(disposizioneBonifici.getCausale()) ||
+			"79000".equals(disposizioneBonifici.getCausale()) ||
+			"79001".equals(disposizioneBonifici.getCausale()))
+			)  {
+			disposizioneBonifici.setCodiceAbiDestinatario(null);
+			disposizioneBonifici.setCabDestinatario(null);
+			disposizioneBonifici.setContoDestinatario(null);
+			disposizioneBonifici.setBancaSportelloDomic(null);
+			disposizioneBonifici.setCin(null);
+			disposizioneBonifici.setCoordinateIbanbeneficiario(null);
+			
+		}
+		
+		return disposizioneBonifici;
+	}
+
+	private boolean causaleModificata(DisposizioniBonifici disposizioneBonifici) {
+		DisposizioniBonifici original = readNoTransaction(disposizioneBonifici.getId());
+		
+		if (original==null)
+			return true;
+		
+		return !disposizioneBonifici.getCausale().equals(original.getCausale());
+	}
+
+	private String recuperaBanca(String codiceAbi) {
+		Criteria crit = currentSession().createCriteria(ApAbi.class);
+		crit.add(Restrictions.eq("abi", codiceAbi));
+
+		List<ApAbi> res = crit.list();
+		if (res.size()==0)
+			return "";
+		else
+			return res.get(0).getDescri().substring(0,Math.min(res.get(0).getDescri().length(),50));
+	}
+
+	public Integer saveDisposizione(DisposizioniBonifici disposizione, UserData userData, AppVariables appVariables, ConvalidaClass convalidaClass) {
+	
+		// CREATE PROCEDURE [dbo].[spModifyDisposizioni]
+			//		@SecurityUserId VARCHAR(15),
+			//		@SecurityGuid UNIQUEIDENTIFIER,
+			//		
+			//		@ID	int,
+			//		@IDDisposizione	int,
+			//		@IDDistintaBanca	int,
+			//		@FlagIDDistintaBanca	bit,
+			//		@IDOrdinante	int,
+			//		@IDDestinatario	int,
+			//		@IDDistintaFlussoInput	int,
+			//		@NumeroDisposizioneDistinta	int,
+			//		@Data_Esecuzione_Disposizione	datetime,
+			//		@FlagData_Esecuzione_Disposizione	bit,
+			//		@Data_Valuta_Destinatario	datetime,
+			//		@FlagData_Valuta_Destinatario	bit,
+			//		@Causale	varchar(5),
+			//		@FlagCausale	bit,
+			//		@ModalitaPagamento	varchar,
+			//		@FlagModalitaPagamento	bit,
+			//		@Importo	varchar(15),
+			//		@FlagImporto	bit,
+			//		@ImportoDBGrid	float,
+			//		@Codice_Abi_Ordinante	varchar(5),
+			//		@FlagCodice_Abi_Ordinante	bit,
+			//		@Cab_Ordinante	varchar(5),
+			//		@FlagCab_Ordinante	bit,
+			//		@Conto_Ordinante	varchar(12),
+			//		@FlagConto_Ordinante	bit,
+			//		@Codice_Abi_Destinatario	varchar(5),
+			//		@FlagCodice_Abi_Destinatario	bit,
+			//		@Cab_Destinatario	varchar(5),
+			//		@FlagCab_Destinatario	bit,
+			//		@Conto_Destinatario	varchar(12),
+			//		@FlagConto_Destinatario	bit,
+			//		@StatoConvalida	smallint,
+			//		@Banca_Sportello_Domic	varchar(50),
+			//		@FlagBanca_Sportello_Domic	bit,
+			//		@Cin	varchar,
+			//		@FlagCin	bit,
+			//		@Codice_Sia_Ordinante	varchar(5),
+			//		@FlagCodice_Sia_Ordinante	bit,
+			//		@TipoCodice	varchar,
+			//		@FlagTipoCodice	bit,
+			//		@Indirizzo_Ordinante	varchar(30),
+			//		@FlagIndirizzo_Ordinante	bit,
+			//		@Località_Ordinante	varchar(30),
+			//		@FlagLocalità_Ordinante	bit,
+			//		@Codice_Fiscale_Ordinante	varchar(16),
+			//		@FlagCodice_Fiscale_Ordinante	bit,
+			//		@DenominazioneDestinatario	varchar(90),
+			//		@FlagDenominazioneDestinatario	bit,
+			//		@Codice_Fiscale_Destinatario	varchar(16),
+			//		@FlagCodice_Fiscale_Destinatario	bit,
+			//		@Indirizzo_Destinatario	varchar(30),
+			//		@FlagIndirizzo_Destinatario	bit,
+			//		@Continuazione_Indirizzo_Destinatario varchar(70),
+			//		@FlagContinuazione_Indirizzo_Destinatario bit,
+			//		@Cap_Destinatario	varchar(5),
+			//		@FlagCap_Destinatario	bit,
+			//		@Città_Destinatario	varchar(25),
+			//		@FlagCittà_Destinatario	bit,
+			//		@Provincia_Destinatario	varchar(2),
+			//		@FlagProvincia_Destinatario	bit,
+			//		@Domiciliazione_Destinatario	varchar(65),
+			//		@FlagDomiciliazione_Destinatario	bit,
+			//		@Descrizione_Disposizione	varchar(2000),
+			//		@FlagDescrizione_Disposizione	bit,
+			//		@CodiceClienteDebitore	varchar(16),
+			//		@FlagCodiceClienteDebitore	bit,
+			//		@Azienda_Ordinante	varchar(96),
+			//		@FlagAzienda_Ordinante	bit,
+			//		@FirmaEmittente	varchar(20),
+			//		@FlagFirmaEmittente	bit,
+			//		@CampoaDisposizione	varchar(8),
+			//		@FlagCampoaDisposizione	bit,
+			//		@ErroriCampiObbligatori	smallint,
+			//		@ErroriCongruenza	smallint,
+			//		@ErroriCampiData	smallint,
+			//		@ErroriPiazzatura	smallint,
+			//		@FlagStampa	bit,
+			//		@CoordinateIBANordinante	varchar(42),
+			//		@FlagCoordinateIBANordinante	bit,
+			//		@CoordinateIBANbeneficiario	varchar(42),
+			//		@FlagCoordinateIBANbeneficiario	bit,
+			//		@DescrizioneConto	varchar(30),
+			//		@FlagDescrizioneConto	bit,
+			//		@RichiestaEsito	varchar,
+			//		@FlagRichiestaEsito	bit,
+			//		@Esito	varchar,
+			//		@FlagEsito	bit,
+			//		@TipoCodiceRiferimento	varchar,
+			//		@FlagTipoCodiceRiferimento	bit,
+			//		@CodiceRiferimento	varchar(35),
+			//		@FlagCodiceRiferimento	bit,
+			//		@TipoAnomalia	varchar,
+			//		@FlagTipoAnomalia	bit,
+			//		@ValutaOrdinante	datetime,
+			//		@FlagValutaOrdinante	bit,
+			//		@ValutaBeneficiario	datetime,
+			//		@FlagValutaBeneficiario	bit,
+			//		@DataOrdine	datetime,
+			//		@FlagDataOrdine	bit,
+			//		@DataContabileAddebito	datetime,
+			//		@FlagDataContabileAddebito	bit,
+			//		@DataEsecuzione	datetime,
+			//		@FlagDataEsecuzione	bit,
+			//		@ImportoCommissioni	varchar(15),
+			//		@FlagImportoCommissioni	bit,
+			//		@ImportoSpese	varchar(15),
+			//		@FlagImportoSpese	bit,
+			//		@ImportoPenali	varchar(15),
+			//		@FlagImportoPenali	bit,
+			//		@NumeroAssegnoEmesso	varchar(16),
+			//		@FlagNumeroAssegnoEmesso	bit,
+			//		@BancaGatewayMP	varchar(5),
+			//		@FlagBancaGatewayMP	bit,
+			//		@CodiceMarketPlace	varchar(5),
+			//		@FlagCodiceMarketPlace	bit,
+			//		@UserID	varchar(10),
+			//		@ProvenienzaDisposizione	varchar(10),
+			//		@TipoFlussoInput	varchar(2),
+			//		@IDDisposizioneFunzioneOrdinante	varchar(30),
+			//		@DataInserimentoDisposizione	datetime,
+			//		@DataFlussoDisposizione	datetime,
+			//		@DataEsitoDisposizione	datetime,
+			//		@FlagDataEsitoDisposizione	bit,
+			//		@DataUltimoEsitoAcquisito	datetime,
+			//		@FlagDataUltimoEsitoAcquisito	bit,
+			//		@StatoDisposizione	varchar(15),
+			//		@FlagStatoDisposizione	bit,
+			//		@CodiceSocietà	varchar(3),
+			//		@FlagCodiceSocietà	bit,
+			//		@CausaleMovimento	varchar(10),
+			//		@FlagCausaleMovimento	bit,
+			//		@DescrizioneOperazione	varchar(60),
+			//		@FlagDescrizioneOperazione	bit,
+			//		@TipoMovimento	varchar(10),
+			//		@FlagTipoMovimento	bit,
+			//		@FunzioneOrdinante	varchar(10),
+			//		@FlagFunzioneOrdinante	bit,
+			//		@DescrizioneMovimento	varchar(50),
+			//		@FlagDescrizioneMovimento	bit,
+			//		@ContabilizzazioneMovimento	bit,
+			//		@FlagContabilizzazioneMovimento	bit,
+			//		@ForzaStatoAR	bit,
+			//		@RamoMinisteriale	varchar(10),
+			//		@FlagRamoMinisteriale	bit,
+			//		@RamoTecnico	varchar(2),
+			//		@FlagRamoTecnico	bit,
+			//		@AgenziaCDC	varchar(10),
+			//		@FlagAgenziaCDC	bit,
+			//		@DescrizioneAgenziaCDC	varchar(50),
+			//		@FlagDescrizioneAgenziaCDC	bit,
+			//		@Statistico1	varchar(10),
+			//		@FlagStatistico1	bit,
+			//		@Statistico2	varchar(10),
+			//		@FlagStatistico2	bit,
+			//		@NumeroSinistroDanni	varchar(10),
+			//		@FlagNumeroSinistroDanni	bit,
+			//		@LastSaved	timestamp,
+			//		@Divisa_Conto_Ordinante varchar(3),
+			//		@FlagDivisa_Conto_Ordinante bit,
+			//		@NoteFunzioneOrdinante varchar(60),
+			//		@FlagNoteFunzioneOrdinante bit,
+			//		@NoteTesoreria	 varchar(60),
+			//		@FlagNoteTesoreria bit,
+			//		@NumeroPolizza varchar(13),
+			//		@FlagNumeroPolizza bit,
+			//		@NoContabilizzazioneEsito bit,
+			//		@FlagNoContabilizzazioneEsito bit,
+			//		@NoTabellaContabilizzazione bit,
+			//		@FlagNoTabellaContabilizzazione bit,
+			//		@ContoPerCassa bit,
+			//		@FlagContoPerCassa bit,
+			//		@CircuitoPagamento varchar(1),
+			//		@FlagCircuitoPagamento bit,
+			//		@UtenteNAS varchar(50),
+			//		@FlagUtenteNAS bit,
+			//		@TipoDisposizioneNAS varchar(3),
+			//		@FlagTipoDisposizioneNAS bit,
+			//		@CausaleDisposizioneNAS varchar(5),
+			//		@FlagCausaleDisposizioneNAS bit,
+			//		@NaturaPagamentoNAS varchar(1),
+			//		@FlagNaturaPagamentoNAS bit,
+			//		@DataSpossessamentoNAS datetime,
+			//		@FlagDataSpossessamentoNAS bit,
+			//		@DivisaImportoNAS varchar(3),
+			//		@FlagDivisaImportoNAS bit,
+			//		@RuoloBeneficiarioNAS varchar(50),
+			//		@FlagRuoloBeneficiarioNAS bit,
+			//		@DenominazionePosizioneNAS varchar(200),
+			//		@FlagDenominazionePosizioneNAS bit,
+			//		@RuoloPosizioneNAS varchar(50),
+			//		@FlagRuoloPosizioneNAS bit,
+			//		@Indirizzo_Domiciliazione_Destinatario varchar(30),
+			//		@FlagIndirizzo_Domiciliazione_Destinatario bit,
+			//		@Continuazione_Indirizzo_Domiciliazione_Destinatario varchar(70),
+			//		@FlagContinuazione_Indirizzo_Domiciliazione_Destinatario bit,
+			//		@CAP_Domiciliazione_Destinatario varchar(5),
+			//		@FlagCAP_Domiciliazione_Destinatario bit,
+			//		@Comune_Domiciliazione_Destinatario varchar(23),
+			//		@FlagComune_Domiciliazione_Destinatario bit,
+			//		@Provincia_Domiciliazione_Destinatario varchar(2),
+			//		@FlagProvincia_Domiciliazione_Destinatario bit,
+			//		@DataLuogoIstruzioni varchar(60),
+			//		@FlagDataLuogoIstruzioni bit,
+			//		@StreamFirmaDigitaleNAS text,
+			//		@FlagStreamFirmaDigitaleNAS bit,
+			//		@RamoMinisterialeEffettivo varchar(10),
+			//		@FlagRamoMinisterialeEffettivo bit,
+			//		@CausaleAntiriciclaggio bit,
+			//		@FlagCausaleAntiriciclaggio bit,
+			//		@CodiceRaccomandata varchar(12),
+			//		@FlagCodiceRaccomandata bit,
+			//		@DataIncassoAssegnoTraenza datetime,
+			//		@FlagDataIncassoAssegnoTraenza bit,
+			//		@CodiceFrazionarioPagamento varchar(5),
+			//		@FlagCodiceFrazionarioPagamento bit,
+			//		@DescrizioneFrazionarioPagamento varchar(35),
+			//		@FlagDescrizioneFrazionarioPagamento bit,
+			//		@SezioneFrazionarioPagamento varchar(2),
+			//		@FlagSezioneFrazionarioPagamento bit,
+			//		@OraPagamento varchar(6),
+			//		@FlagOraPagamento bit,
+			//		@IdentificativoLetteraBeneficiario varchar(30),
+			//		@FlagIdentificativoLetteraBeneficiario bit,
+			//		@DataCambioStatoDisposizioneNAS datetime,
+			//		@StatoDisposizioneNAS varchar(3), 
+			//		@FlagStatoDisposizioneNAS bit,
+			//		@CausaScartoSep varchar(8),
+			//		@FlagCausaScartoSep bit,
+			//		@StatoDisposizioneSep varchar(8),
+			//		@FlagStatoDisposizioneSep bit,
+			//		@DataEmissioneSep datetime,
+			//		@FlagDataEmissioneSep bit,
+			//		@DataScadenzaSep datetime,
+			//		@FlagDataScadenzaSep bit,
+			//		@StatoAnomaliaSep varchar(8),
+			//		@FlagStatoAnomaliaSep bit,
+			//		@DataAnomaliaSep datetime,
+			//		@FlagDataAnomaliaSep bit,
+			//		@ImportoAddebitatoSep varchar(15),
+			//		@FlagImportoAddebitatoSep bit,
+			//		@CausaleStornoBonificoSep varchar(150),
+			//		@FlagCausaleStornoBonificoSep bit,
+			//		@CodiceStornoBonificoSep varchar(5),
+			//		@FlagCodiceStornoBonificoSep bit,
+			//		@AbiNegoziazioneAssegno varchar(5),
+			//		@FlagAbiNegoziazioneAssegno bit,
+			//		@CabNegoziazioneAssegno varchar(5),
+			//		@FlagCabNegoziazioneAssegno bit,
+			//		@TipoIncassoAssegno varchar(5),
+			//		@FlagTipoIncassoAssegno bit,
+			//		@NumeroRaccomandataDisguidata varchar(20),
+			//		@FlagNumeroRaccomandataDisguidata bit,
+			//		@UtenteTestWebService varchar(1),
+			//		@FlagUtenteTestWebService bit,
+			//		@TipoSpedizioneAssegno varchar(2),
+			//		@FlagTipoSpedizioneAssegno bit,
+			//		@NomeSupportoFlussoInputCBI varchar(20),
+			//		@FlagNomeSupportoFlussoInputCBI bit,
+			//		@Codice_CUC_Ordinante varchar(35),
+			//		@FlagCodice_CUC_Ordinante bit,
+			//		@BonificoHigPriority bit,
+			//		@FlagBonificoHigPriority bit,
+			//		@BIC_Creditore varchar(11),
+			//		@FlagBIC_Creditore bit,
+			//		@EsitoSepaRsnCode varchar(4),
+			//		@FlagEsitoSepaRsnCode bit,
+			//		@EsitoSepaPrtry varchar(35),
+			//		@FlagEsitoSepaPrtry bit,
+			//		@EsitoSepaAddtlInf varchar(105),
+			//		@FlagEsitoSepaAddtlInf bit,
+			//		@EsitoSepaElmRfc varchar(255),
+			//		@FlagEsitoSepaElmRfc bit,
+			//		@EsitoMsgId varchar(255),
+			//		@FlagEsitoMsgId bit,
+			//		@FirmaDelegato1 bit,
+			//		@FirmaDelegato2 bit,
+			//		@DisposizioneGuid uniqueidentifier
+					
+		
+//		boolean tx = startTransaction();
+		Integer res = -1;
+		try {
+			
+			ProcedureCall call = currentSession().createStoredProcedureCall("spModifyDisposizioni");
+			
+			call.registerParameter("Result",  Integer.class, ParameterMode.OUT);
+			
+			call.registerParameter("SecurityUserId", String.class,ParameterMode.IN).bindValue(appVariables.getUserId());
+			call.registerParameter("SecurityGuid", String.class, ParameterMode.IN).bindValue(appVariables.getGuid());
+			call.registerParameter("ID", Integer.class, ParameterMode.IN).bindValue(disposizione.getId());
+			call.registerParameter("IDDisposizione", Integer.class, ParameterMode.IN).bindValue(disposizione.getIddisposizione());
+			call.registerParameter("IDDistintaBanca", Integer.class, ParameterMode.IN).bindValue(disposizione.getIddistintaBanca());
+			call.registerParameter("FlagIDDistintaBanca", Boolean.class, ParameterMode.IN).bindValue(disposizione.getFlagIddistintaBanca());
+			call.registerParameter("IDOrdinante", Integer.class, ParameterMode.IN).bindValue(disposizione.getIdordinante());
+			call.registerParameter("IDDestinatario", Integer.class, ParameterMode.IN).bindValue(disposizione.getIddestinatario());
+			call.registerParameter("IDDistintaFlussoInput", Integer.class, ParameterMode.IN).bindValue(disposizione.getIddistintaFlussoInput());
+			call.registerParameter("NumeroDisposizioneDistinta", Integer.class, ParameterMode.IN).bindValue(disposizione.getNumeroDisposizioneDistinta());
+			call.registerParameter("Data_Esecuzione_Disposizione", Date.class, ParameterMode.IN).bindValue(disposizione.getDataEsecuzioneDisposizione());
+			call.registerParameter("FlagData_Esecuzione_Disposizione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataEsecuzioneDisposizione());
+			call.registerParameter("Data_Valuta_Destinatario", Date.class, ParameterMode.IN).bindValue(disposizione.getDataValutaDestinatario());
+			call.registerParameter("FlagData_Valuta_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataValutaDestinatario());
+			call.registerParameter("Causale", String.class, ParameterMode.IN).bindValue(disposizione.getCausale());
+			call.registerParameter("FlagCausale", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCausale());
+			call.registerParameter("ModalitaPagamento", String.class, ParameterMode.IN).bindValue(disposizione.getModalitaPagamento());
+			call.registerParameter("FlagModalitaPagamento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagModalitaPagamento());
+			call.registerParameter("Importo", String.class, ParameterMode.IN).bindValue(disposizione.getImporto());
+			call.registerParameter("FlagImporto", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagImporto());
+			call.registerParameter("ImportoDBGrid",Double.class, ParameterMode.IN).bindValue(disposizione.getImportoDbgrid());
+			call.registerParameter("Codice_Abi_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceAbiOrdinante());
+			call.registerParameter("FlagCodice_Abi_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceAbiOrdinante());
+			call.registerParameter("Cab_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCabOrdinante());
+			call.registerParameter("FlagCab_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCabOrdinante());
+			call.registerParameter("Conto_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getContoOrdinante());
+			call.registerParameter("FlagConto_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContoOrdinante());
+			call.registerParameter("Codice_Abi_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceAbiDestinatario());
+			call.registerParameter("FlagCodice_Abi_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceAbiDestinatario());
+			call.registerParameter("Cab_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCabDestinatario());
+			call.registerParameter("FlagCab_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCabDestinatario());
+			call.registerParameter("Conto_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getContoDestinatario());
+			call.registerParameter("FlagConto_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContoDestinatario());
+			call.registerParameter("StatoConvalida", Short.class, ParameterMode.IN).bindValue(disposizione.getStatoConvalida());
+			call.registerParameter("Banca_Sportello_Domic", String.class, ParameterMode.IN).bindValue(disposizione.getBancaSportelloDomic());
+			call.registerParameter("FlagBanca_Sportello_Domic", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagBancaSportelloDomic());
+			call.registerParameter("Cin", String.class, ParameterMode.IN).bindValue(disposizione.getCin());
+			call.registerParameter("FlagCin", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCin());
+			call.registerParameter("Codice_Sia_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceSiaOrdinante());
+			call.registerParameter("FlagCodice_Sia_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceSiaOrdinante());
+			call.registerParameter("TipoCodice", String.class, ParameterMode.IN).bindValue(disposizione.getTipoCodice());
+			call.registerParameter("FlagTipoCodice", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoCodice());
+			call.registerParameter("Indirizzo_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getIndirizzoOrdinante());
+			call.registerParameter("FlagIndirizzo_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagIndirizzoOrdinante());
+			call.registerParameter("Località_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getLocalitaOrdinante());
+			call.registerParameter("FlagLocalità_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagLocalitaOrdinante());
+			call.registerParameter("Codice_Fiscale_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceFiscaleOrdinante());
+			call.registerParameter("FlagCodice_Fiscale_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceFiscaleOrdinante());
+			call.registerParameter("DenominazioneDestinatario", String.class, ParameterMode.IN).bindValue(disposizione.getDenominazioneDestinatario());
+			call.registerParameter("FlagDenominazioneDestinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDenominazioneDestinatario());
+			call.registerParameter("Codice_Fiscale_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceFiscaleDestinatario());
+			call.registerParameter("FlagCodice_Fiscale_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceFiscaleDestinatario());
+			call.registerParameter("Indirizzo_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getIndirizzoDestinatario());
+			call.registerParameter("FlagIndirizzo_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagIndirizzoDestinatario());
+			call.registerParameter("Continuazione_Indirizzo_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getContinuazioneIndirizzoDestinatario());
+			call.registerParameter("FlagContinuazione_Indirizzo_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContinuazioneIndirizzoDestinatario());
+			call.registerParameter("Cap_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCapDestinatario());
+			call.registerParameter("FlagCap_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCapDestinatario());
+			call.registerParameter("Città_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCittaDestinatario());
+			call.registerParameter("FlagCittà_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCittaDestinatario());
+			call.registerParameter("Provincia_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getProvinciaDestinatario());
+			call.registerParameter("FlagProvincia_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagProvinciaDestinatario());
+			call.registerParameter("Domiciliazione_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getDomiciliazioneDestinatario());
+			call.registerParameter("FlagDomiciliazione_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDomiciliazioneDestinatario());
+			call.registerParameter("Descrizione_Disposizione", String.class, ParameterMode.IN).bindValue(disposizione.getDescrizioneDisposizione());
+			call.registerParameter("FlagDescrizione_Disposizione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDescrizioneDisposizione());
+			call.registerParameter("CodiceClienteDebitore", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceClienteDebitore());
+			call.registerParameter("FlagCodiceClienteDebitore", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceClienteDebitore());
+			call.registerParameter("Azienda_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getAziendaOrdinante());
+			call.registerParameter("FlagAzienda_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagAziendaOrdinante());
+			call.registerParameter("FirmaEmittente", String.class, ParameterMode.IN).bindValue(disposizione.getFirmaEmittente());
+			call.registerParameter("FlagFirmaEmittente", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagFirmaEmittente());
+			call.registerParameter("CampoaDisposizione", String.class, ParameterMode.IN).bindValue(disposizione.getCampoaDisposizione());
+			call.registerParameter("FlagCampoaDisposizione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCampoaDisposizione());
+			call.registerParameter("ErroriCampiObbligatori", Short.class, ParameterMode.IN).bindValue(disposizione.getErroriCampiObbligatori());
+			call.registerParameter("ErroriCongruenza", Short.class, ParameterMode.IN).bindValue(disposizione.getErroriCongruenza());
+			call.registerParameter("ErroriCampiData", Short.class, ParameterMode.IN).bindValue(disposizione.getErroriCampiData());
+			call.registerParameter("ErroriPiazzatura", Short.class, ParameterMode.IN).bindValue(disposizione.getErroriPiazzatura());
+			call.registerParameter("FlagStampa", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStampa());
+			call.registerParameter("CoordinateIBANordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCoordinateIbanordinante());
+			call.registerParameter("FlagCoordinateIBANordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCoordinateIbanordinante());
+			call.registerParameter("CoordinateIBANbeneficiario", String.class, ParameterMode.IN).bindValue(disposizione.getCoordinateIbanbeneficiario());
+			call.registerParameter("FlagCoordinateIBANbeneficiario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCoordinateIbanbeneficiario());
+			call.registerParameter("DescrizioneConto", String.class, ParameterMode.IN).bindValue(disposizione.getDescrizioneConto());
+			call.registerParameter("FlagDescrizioneConto", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDescrizioneConto());
+			call.registerParameter("RichiestaEsito", String.class, ParameterMode.IN).bindValue(disposizione.getRichiestaEsito());
+			call.registerParameter("FlagRichiestaEsito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagRichiestaEsito());
+			call.registerParameter("Esito", String.class, ParameterMode.IN).bindValue(disposizione.getEsito());
+			call.registerParameter("FlagEsito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsito());
+			call.registerParameter("TipoCodiceRiferimento", String.class, ParameterMode.IN).bindValue(disposizione.getTipoCodiceRiferimento());
+			call.registerParameter("FlagTipoCodiceRiferimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoCodiceRiferimento());
+			call.registerParameter("CodiceRiferimento", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceRiferimento());
+			call.registerParameter("FlagCodiceRiferimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceRiferimento());
+			call.registerParameter("TipoAnomalia", String.class, ParameterMode.IN).bindValue(disposizione.getTipoAnomalia());
+			call.registerParameter("FlagTipoAnomalia", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoAnomalia());
+			call.registerParameter("ValutaOrdinante",Date.class, ParameterMode.IN).bindValue(disposizione.getValutaOrdinante());
+			call.registerParameter("FlagValutaOrdinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagValutaOrdinante());
+			call.registerParameter("ValutaBeneficiario",Date.class, ParameterMode.IN).bindValue(disposizione.getValutaBeneficiario());
+			call.registerParameter("FlagValutaBeneficiario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagValutaBeneficiario());
+			call.registerParameter("DataOrdine",Date.class, ParameterMode.IN).bindValue(disposizione.getDataOrdine());
+			call.registerParameter("FlagDataOrdine", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataOrdine());
+			call.registerParameter("DataContabileAddebito",Date.class, ParameterMode.IN).bindValue(disposizione.getDataContabileAddebito());
+			call.registerParameter("FlagDataContabileAddebito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataContabileAddebito());
+			call.registerParameter("DataEsecuzione",Date.class, ParameterMode.IN).bindValue(disposizione.getDataEsecuzione());
+			call.registerParameter("FlagDataEsecuzione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataEsecuzione());
+			call.registerParameter("ImportoCommissioni", String.class, ParameterMode.IN).bindValue(disposizione.getImportoCommissioni());
+			call.registerParameter("FlagImportoCommissioni", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagImportoCommissioni());
+			call.registerParameter("ImportoSpese", String.class, ParameterMode.IN).bindValue(disposizione.getImportoSpese());
+			call.registerParameter("FlagImportoSpese", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagImportoSpese());
+			call.registerParameter("ImportoPenali", String.class, ParameterMode.IN).bindValue(disposizione.getImportoPenali());
+			call.registerParameter("FlagImportoPenali", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagImportoPenali());
+			call.registerParameter("NumeroAssegnoEmesso", String.class, ParameterMode.IN).bindValue(disposizione.getNumeroAssegnoEmesso());
+			call.registerParameter("FlagNumeroAssegnoEmesso", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNumeroAssegnoEmesso());
+			call.registerParameter("BancaGatewayMP", String.class, ParameterMode.IN).bindValue(disposizione.getBancaGatewayMp());
+			call.registerParameter("FlagBancaGatewayMP", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagBancaGatewayMp());
+			call.registerParameter("CodiceMarketPlace", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceMarketPlace());
+			call.registerParameter("FlagCodiceMarketPlace", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceMarketPlace());
+			call.registerParameter("UserID", String.class, ParameterMode.IN).bindValue(disposizione.getUserId());
+			call.registerParameter("ProvenienzaDisposizione", String.class, ParameterMode.IN).bindValue(disposizione.getProvenienzaDisposizione());
+			call.registerParameter("TipoFlussoInput", String.class, ParameterMode.IN).bindValue(disposizione.getTipoFlussoInput());
+			call.registerParameter("IDDisposizioneFunzioneOrdinante", String.class, ParameterMode.IN).bindValue(disposizione.getIddisposizioneFunzioneOrdinante());
+			call.registerParameter("DataInserimentoDisposizione",Date.class, ParameterMode.IN).bindValue(disposizione.getDataInserimentoDisposizione());
+			call.registerParameter("DataFlussoDisposizione",Date.class, ParameterMode.IN).bindValue(disposizione.getDataFlussoDisposizione());
+			call.registerParameter("DataEsitoDisposizione",Date.class, ParameterMode.IN).bindValue(disposizione.getDataEsitoDisposizione());
+			call.registerParameter("FlagDataEsitoDisposizione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataEsitoDisposizione());
+			call.registerParameter("DataUltimoEsitoAcquisito",Date.class, ParameterMode.IN).bindValue(disposizione.getDataUltimoEsitoAcquisito());
+			call.registerParameter("FlagDataUltimoEsitoAcquisito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataUltimoEsitoAcquisito());
+			call.registerParameter("StatoDisposizione", String.class, ParameterMode.IN).bindValue(disposizione.getStatoDisposizione());
+			call.registerParameter("FlagStatoDisposizione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStatoDisposizione());
+			call.registerParameter("CodiceSocietà", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceSocieta());
+			call.registerParameter("FlagCodiceSocietà", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceSocieta());
+			call.registerParameter("CausaleMovimento", String.class, ParameterMode.IN).bindValue(disposizione.getCausaleMovimento());
+			call.registerParameter("FlagCausaleMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCausaleMovimento());
+			call.registerParameter("DescrizioneOperazione", String.class, ParameterMode.IN).bindValue(disposizione.getDescrizioneOperazione());
+			call.registerParameter("FlagDescrizioneOperazione",Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDescrizioneOperazione());
+			call.registerParameter("TipoMovimento", String.class, ParameterMode.IN).bindValue(disposizione.getTipoMovimento());
+			call.registerParameter("FlagTipoMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoMovimento());
+			call.registerParameter("FunzioneOrdinante", String.class, ParameterMode.IN).bindValue(disposizione.getFunzioneOrdinante());
+			call.registerParameter("FlagFunzioneOrdinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagFunzioneOrdinante());
+			call.registerParameter("DescrizioneMovimento", String.class, ParameterMode.IN).bindValue(disposizione.getDescrizioneMovimento());
+			call.registerParameter("FlagDescrizioneMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDescrizioneMovimento());
+			call.registerParameter("ContabilizzazioneMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isContabilizzazioneMovimento());
+			call.registerParameter("FlagContabilizzazioneMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContabilizzazioneMovimento());
+			call.registerParameter("ForzaStatoAR", Boolean.class, ParameterMode.IN).bindValue(disposizione.isForzaStatoAr());
+			call.registerParameter("RamoMinisteriale", String.class, ParameterMode.IN).bindValue(disposizione.getRamoMinisteriale());
+			call.registerParameter("FlagRamoMinisteriale", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagRamoMinisteriale());
+			call.registerParameter("RamoTecnico", String.class, ParameterMode.IN).bindValue(disposizione.getRamoTecnico());
+			call.registerParameter("FlagRamoTecnico", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagRamoTecnico());
+			call.registerParameter("AgenziaCDC", String.class, ParameterMode.IN).bindValue(disposizione.getAgenziaCdc());
+			call.registerParameter("FlagAgenziaCDC", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagAgenziaCdc());
+			call.registerParameter("DescrizioneAgenziaCDC", String.class, ParameterMode.IN).bindValue(disposizione.getDescrizioneAgenziaCdc());
+			call.registerParameter("FlagDescrizioneAgenziaCDC", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDescrizioneAgenziaCdc());
+			call.registerParameter("Statistico1", String.class, ParameterMode.IN).bindValue(disposizione.getStatistico1());
+			call.registerParameter("FlagStatistico1", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStatistico1());
+			call.registerParameter("Statistico2", String.class, ParameterMode.IN).bindValue(disposizione.getStatistico2());
+			call.registerParameter("FlagStatistico2", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStatistico2());
+			call.registerParameter("NumeroSinistroDanni", String.class, ParameterMode.IN).bindValue(disposizione.getNumeroSinistroDanni());
+			call.registerParameter("FlagNumeroSinistroDanni", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNumeroSinistroDanni());
+			call.registerParameter("LastSaved", byte[].class, ParameterMode.IN).bindValue(disposizione.getLastSaved());
+			call.registerParameter("Divisa_Conto_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getDivisaContoOrdinante());
+			call.registerParameter("FlagDivisa_Conto_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.getFlagDivisaContoOrdinante());
+			call.registerParameter("NoteFunzioneOrdinante", String.class, ParameterMode.IN).bindValue(disposizione.getNoteFunzioneOrdinante());
+			call.registerParameter("FlagNoteFunzioneOrdinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNoteFunzioneOrdinante());
+			call.registerParameter("NoteTesoreria", String.class, ParameterMode.IN).bindValue(disposizione.getNoteTesoreria());
+			call.registerParameter("FlagNoteTesoreria", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNoteTesoreria());
+			call.registerParameter("NumeroPolizza", String.class, ParameterMode.IN).bindValue(disposizione.getNumeroPolizza());
+			call.registerParameter("FlagNumeroPolizza", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNumeroPolizza());
+			call.registerParameter("NoContabilizzazioneEsito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isNoContabilizzazioneEsito());
+			call.registerParameter("FlagNoContabilizzazioneEsito", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNoContabilizzazioneEsito());
+			call.registerParameter("NoTabellaContabilizzazione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isNoTabellaContabilizzazione());
+			call.registerParameter("FlagNoTabellaContabilizzazione", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNoTabellaContabilizzazione());
+			call.registerParameter("ContoPerCassa", Boolean.class, ParameterMode.IN).bindValue(disposizione.isContoPerCassa());
+			call.registerParameter("FlagContoPerCassa", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContoPerCassa());
+			call.registerParameter("CircuitoPagamento", String.class, ParameterMode.IN).bindValue(disposizione.getCircuitoPagamento());
+			call.registerParameter("FlagCircuitoPagamento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCircuitoPagamento());
+			call.registerParameter("UtenteNAS", String.class, ParameterMode.IN).bindValue(disposizione.getUtenteNas());
+			call.registerParameter("FlagUtenteNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagUtenteNas());
+			call.registerParameter("TipoDisposizioneNAS", String.class, ParameterMode.IN).bindValue(disposizione.getTipoDisposizioneNas());
+			call.registerParameter("FlagTipoDisposizioneNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoDisposizioneNas());
+			call.registerParameter("CausaleDisposizioneNAS", String.class, ParameterMode.IN).bindValue(disposizione.getCausaleDisposizioneNas());
+			call.registerParameter("FlagCausaleDisposizioneNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCausaleDisposizioneNas());
+			call.registerParameter("NaturaPagamentoNAS", String.class, ParameterMode.IN).bindValue(disposizione.getNaturaPagamentoNas());
+			call.registerParameter("FlagNaturaPagamentoNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNaturaPagamentoNas());
+			call.registerParameter("DataSpossessamentoNAS",Date.class, ParameterMode.IN).bindValue(disposizione.getDataSpossessamentoNas());
+			call.registerParameter("FlagDataSpossessamentoNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataSpossessamentoNas());
+			call.registerParameter("DivisaImportoNAS", String.class, ParameterMode.IN).bindValue(disposizione.getDivisaImportoNas());
+			call.registerParameter("FlagDivisaImportoNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDivisaImportoNas());
+			call.registerParameter("RuoloBeneficiarioNAS", String.class, ParameterMode.IN).bindValue(disposizione.getRuoloBeneficiarioNas());
+			call.registerParameter("FlagRuoloBeneficiarioNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagRuoloBeneficiarioNas());
+			call.registerParameter("DenominazionePosizioneNAS", String.class, ParameterMode.IN).bindValue(disposizione.getDenominazionePosizioneNas());
+			call.registerParameter("FlagDenominazionePosizioneNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDenominazionePosizioneNas());
+			call.registerParameter("RuoloPosizioneNAS", String.class, ParameterMode.IN).bindValue(disposizione.getRuoloPosizioneNas());
+			call.registerParameter("FlagRuoloPosizioneNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagRuoloPosizioneNas());
+			call.registerParameter("Indirizzo_Domiciliazione_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getIndirizzoDomiciliazioneDestinatario());
+			call.registerParameter("FlagIndirizzo_Domiciliazione_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagIndirizzoDomiciliazioneDestinatario());
+			call.registerParameter("Continuazione_Indirizzo_Domiciliazione_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getContinuazioneIndirizzoDomiciliazioneDestinatario());
+			call.registerParameter("FlagContinuazione_Indirizzo_Domiciliazione_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagContinuazioneIndirizzoDomiciliazioneDestinatario());
+			call.registerParameter("CAP_Domiciliazione_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getCapDomiciliazioneDestinatario());
+			call.registerParameter("FlagCAP_Domiciliazione_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCapDomiciliazioneDestinatario());
+			call.registerParameter("Comune_Domiciliazione_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getComuneDomiciliazioneDestinatario());
+			call.registerParameter("FlagComune_Domiciliazione_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagComuneDomiciliazioneDestinatario());
+			call.registerParameter("Provincia_Domiciliazione_Destinatario", String.class, ParameterMode.IN).bindValue(disposizione.getProvinciaDomiciliazioneDestinatario());
+			call.registerParameter("FlagProvincia_Domiciliazione_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagProvinciaDomiciliazioneDestinatario());
+			call.registerParameter("DataLuogoIstruzioni", String.class, ParameterMode.IN).bindValue(disposizione.getDataLuogoIstruzioni());
+			call.registerParameter("FlagDataLuogoIstruzioni", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataLuogoIstruzioni());
+			call.registerParameter("StreamFirmaDigitaleNAS", String.class, ParameterMode.IN).bindValue(ClobToString(disposizione.getStreamFirmaDigitaleNas()));
+			call.registerParameter("FlagStreamFirmaDigitaleNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStreamFirmaDigitaleNas());
+			call.registerParameter("RamoMinisterialeEffettivo", String.class, ParameterMode.IN).bindValue(disposizione.getRamoMinisterialeEffettivo());
+			call.registerParameter("FlagRamoMinisterialeEffettivo", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagRamoMinisterialeEffettivo());
+			call.registerParameter("CausaleAntiriciclaggio", Boolean.class, ParameterMode.IN).bindValue(disposizione.getCausaleAntiriciclaggio());
+			call.registerParameter("FlagCausaleAntiriciclaggio", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCausaleAntiriciclaggio());
+			call.registerParameter("CodiceRaccomandata", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceRaccomandata());
+			call.registerParameter("FlagCodiceRaccomandata", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceRaccomandata());
+			call.registerParameter("DataIncassoAssegnoTraenza",Date.class, ParameterMode.IN).bindValue(disposizione.getDataIncassoAssegnoTraenza());
+			call.registerParameter("FlagDataIncassoAssegnoTraenza", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataIncassoAssegnoTraenza());
+			call.registerParameter("CodiceFrazionarioPagamento", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceFrazionarioPagamento());
+			call.registerParameter("FlagCodiceFrazionarioPagamento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceFrazionarioPagamento());
+			call.registerParameter("DescrizioneFrazionarioPagamento", String.class, ParameterMode.IN).bindValue(disposizione.getDescrizioneFrazionarioPagamento());
+			call.registerParameter("FlagDescrizioneFrazionarioPagamento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDescrizioneFrazionarioPagamento());
+			call.registerParameter("SezioneFrazionarioPagamento", String.class, ParameterMode.IN).bindValue(disposizione.getSezioneFrazionarioPagamento());
+			call.registerParameter("FlagSezioneFrazionarioPagamento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagSezioneFrazionarioPagamento());
+			call.registerParameter("OraPagamento", String.class, ParameterMode.IN).bindValue(disposizione.getOraPagamento());
+			call.registerParameter("FlagOraPagamento", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagOraPagamento());
+			call.registerParameter("IdentificativoLetteraBeneficiario", String.class, ParameterMode.IN).bindValue(disposizione.getIdentificativoLetteraBeneficiario());
+			call.registerParameter("FlagIdentificativoLetteraBeneficiario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagIdentificativoLetteraBeneficiario());
+			call.registerParameter("DataCambioStatoDisposizioneNAS",Date.class, ParameterMode.IN).bindValue(disposizione.getDataCambioStatoDisposizioneNas());
+			call.registerParameter("StatoDisposizioneNAS", String.class, ParameterMode.IN).bindValue(disposizione.getStatoDisposizioneNas()); 
+			call.registerParameter("FlagStatoDisposizioneNAS", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStatoDisposizioneNas());
+			call.registerParameter("CausaScartoSep", String.class, ParameterMode.IN).bindValue(disposizione.getCausaScartoSep());
+			call.registerParameter("FlagCausaScartoSep", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCausaScartoSep());
+			call.registerParameter("StatoDisposizioneSep", String.class, ParameterMode.IN).bindValue(disposizione.getStatoDisposizioneSep());
+			call.registerParameter("FlagStatoDisposizioneSep", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStatoDisposizioneSep());
+			call.registerParameter("DataEmissioneSep",Date.class, ParameterMode.IN).bindValue(disposizione.getDataEmissioneSep());
+			call.registerParameter("FlagDataEmissioneSep", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataEmissioneSep());
+			call.registerParameter("DataScadenzaSep",Date.class, ParameterMode.IN).bindValue(disposizione.getDataScadenzaSep());
+			call.registerParameter("FlagDataScadenzaSep", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataScadenzaSep());
+			call.registerParameter("StatoAnomaliaSep", String.class, ParameterMode.IN).bindValue(disposizione.getStatoAnomaliaSep());
+			call.registerParameter("FlagStatoAnomaliaSep", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagStatoAnomaliaSep());
+			call.registerParameter("DataAnomaliaSep",Date.class, ParameterMode.IN).bindValue(disposizione.getDataAnomaliaSep());
+			call.registerParameter("FlagDataAnomaliaSep", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagDataAnomaliaSep());
+			call.registerParameter("ImportoAddebitatoSep", String.class, ParameterMode.IN).bindValue(disposizione.getImportoAddebitatoSep());
+			call.registerParameter("FlagImportoAddebitatoSep", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagImportoAddebitatoSep());
+			call.registerParameter("CausaleStornoBonificoSep", String.class, ParameterMode.IN).bindValue(disposizione.getCausaleStornoBonificoSep());
+			call.registerParameter("FlagCausaleStornoBonificoSep", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCausaleStornoBonificoSep());
+			call.registerParameter("CodiceStornoBonificoSep", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceStornoBonificoSep());
+			call.registerParameter("FlagCodiceStornoBonificoSep", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceStornoBonificoSep());
+			call.registerParameter("AbiNegoziazioneAssegno", String.class, ParameterMode.IN).bindValue(disposizione.getAbiNegoziazioneAssegno());
+			call.registerParameter("FlagAbiNegoziazioneAssegno", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagAbiNegoziazioneAssegno());
+			call.registerParameter("CabNegoziazioneAssegno", String.class, ParameterMode.IN).bindValue(disposizione.getCabNegoziazioneAssegno());
+			call.registerParameter("FlagCabNegoziazioneAssegno", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCabNegoziazioneAssegno());
+			call.registerParameter("TipoIncassoAssegno", String.class, ParameterMode.IN).bindValue(disposizione.getTipoIncassoAssegno());
+			call.registerParameter("FlagTipoIncassoAssegno", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoIncassoAssegno());
+			call.registerParameter("NumeroRaccomandataDisguidata", String.class, ParameterMode.IN).bindValue(disposizione.getNumeroRaccomandataDisguidata());
+			call.registerParameter("FlagNumeroRaccomandataDisguidata", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNumeroRaccomandataDisguidata());
+			call.registerParameter("UtenteTestWebService", String.class, ParameterMode.IN).bindValue(disposizione.getUtenteTestWebService());
+			call.registerParameter("FlagUtenteTestWebService", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagUtenteTestWebService());
+			call.registerParameter("TipoSpedizioneAssegno", String.class, ParameterMode.IN).bindValue(disposizione.getTipoSpedizioneAssegno());
+			call.registerParameter("FlagTipoSpedizioneAssegno", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagTipoSpedizioneAssegno());
+			call.registerParameter("NomeSupportoFlussoInputCBI", String.class, ParameterMode.IN).bindValue(disposizione.getNomeSupportoFlussoInputCbi());
+			call.registerParameter("FlagNomeSupportoFlussoInputCBI", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagNomeSupportoFlussoInputCbi());
+			call.registerParameter("Codice_CUC_Ordinante", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceCucOrdinante());
+			call.registerParameter("FlagCodice_CUC_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceCucOrdinante());
+			call.registerParameter("BonificoHigPriority", Boolean.class, ParameterMode.IN).bindValue(disposizione.isBonificoHigPriority());
+			call.registerParameter("FlagBonificoHigPriority", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagBonificoHigPriority());
+			call.registerParameter("BIC_Creditore", String.class, ParameterMode.IN).bindValue(disposizione.getBicCreditore());
+			call.registerParameter("FlagBIC_Creditore", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagBicCreditore());
+			call.registerParameter("EsitoSepaRsnCode", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoSepaRsnCode());
+			call.registerParameter("FlagEsitoSepaRsnCode", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoSepaRsnCode());
+			call.registerParameter("EsitoSepaPrtry", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoSepaPrtry());
+			call.registerParameter("FlagEsitoSepaPrtry", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoSepaPrtry());
+			call.registerParameter("EsitoSepaAddtlInf", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoSepaAddtlInf());
+			call.registerParameter("FlagEsitoSepaAddtlInf", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoSepaAddtlInf());
+			call.registerParameter("EsitoSepaElmRfc", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoSepaElmRfc());
+			call.registerParameter("FlagEsitoSepaElmRfc", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoSepaElmRfc());
+			call.registerParameter("EsitoMsgId", String.class, ParameterMode.IN).bindValue(disposizione.getEsitoMsgId());
+			call.registerParameter("FlagEsitoMsgId", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagEsitoMsgId());
+			call.registerParameter("FirmaDelegato1", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFirmaDelegato1());
+			call.registerParameter("FirmaDelegato2", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFirmaDelegato2());
+			call.registerParameter("DisposizioneGuid", String.class, ParameterMode.IN).bindValue(disposizione.getDisposizioneGuid());		
+			call.registerParameter("CodiceBICbeneficiario", String.class, ParameterMode.IN).bindValue(disposizione.getCodiceBICbeneficiario());		
+			call.registerParameter("FlagCodiceBICbeneficiario", Boolean.class, ParameterMode.IN).bindValue(disposizione.isFlagCodiceBICbeneficiario());		
+			
+			
+			
+			
+			
+			try {
+				Integer result = (Integer)call.getOutputs().getOutputParameterValue("Result");
+			
+				if (result==1)
+					res = 0;
+
+				/*
+				Outputs outputs = call.getOutputs();
+				UpdateCountOutput output = (UpdateCountOutput) outputs.getCurrent();
+			
+				if (output.getUpdateCount()>0)
+					res = 0;
+				else
+					res = 1;
+				*/
+			} catch (Exception ex) {
+				res = 4;
+			}
+			
+			
+			
+			
+			
+			
+			
+			
+			
+			
+//			
+//			
+//			Connection connection = getConnection();
+//			// 279 parametri
+//			CallableStatement proc;
+//			String sql = "{? = spModifyDisposizioni (" + 
+//					"?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?,?" +
+//					",?,?,?,?,?,?,?,?,?" +
+//					 ")}";
+//			
+//			proc = connection.prepareCall(sql);
+//		
+//		proc.registerOutParameter(1, Types.INTEGER);
+//			
+//		proc.setString(2, appVariables.getUserId());//		@SecurityUserId VARCHAR(15),
+//		proc.setString(3, appVariables.getGuid());//		@SecurityGuid UNIQUEIDENTIFIER,
+//		proc.setObject(4, disposizioneBonifici.getId());//		@ID	int,
+//		proc.setObject(5,  disposizioneBonifici.getIddisposizione());//		@IDDisposizione	int,
+//		proc.setObject(6, disposizioneBonifici.getIddistintaBanca());//		@IDDistintaBanca	int,
+//		proc.setBoolean(7, getBoolean(disposizioneBonifici.getFlagIddistintaBanca()));//		@FlagIDDistintaBanca	bit,
+//		proc.setObject(8, disposizioneBonifici.getIdordinante());//		@IDOrdinante	int,
+//		proc.setObject(9, disposizioneBonifici.getIddestinatario());//		@IDDestinatario	int,
+//		proc.setObject(10, disposizioneBonifici.getIddistintaFlussoInput());//		@IDDistintaFlussoInput	int,
+//		proc.setObject(11, disposizioneBonifici.getNumeroDisposizioneDistinta());//		@NumeroDisposizioneDistinta	int,
+//		proc.setDate(12, dateToSqlDate(disposizioneBonifici.getDataEsecuzioneDisposizione()));//		@Data_Esecuzione_Disposizione	datetime,
+//		proc.setBoolean(13, getBoolean(disposizioneBonifici.isFlagDataEsecuzioneDisposizione()));//		@FlagData_Esecuzione_Disposizione	bit,
+//		proc.setDate(14, dateToSqlDate(disposizioneBonifici.getDataValutaDestinatario()));//		@Data_Valuta_Destinatario	datetime,
+//		proc.setBoolean(15, getBoolean(disposizioneBonifici.isFlagDataValutaDestinatario()));//		@FlagData_Valuta_Destinatario	bit,
+//		proc.setString(16, disposizioneBonifici.getCausale());//		@Causale	varchar(5),
+//		proc.setBoolean(17, getBoolean(disposizioneBonifici.isFlagCausale()));//		@FlagCausale	bit,
+//		proc.setString(18, disposizioneBonifici.getModalitaPagamento());//		@ModalitaPagamento	varchar,
+//		proc.setBoolean(19, getBoolean(disposizioneBonifici.isFlagModalitaPagamento()));//		@FlagModalitaPagamento	bit,
+//		proc.setString(20, disposizioneBonifici.getImporto());//		@Importo	varchar(15),
+//		proc.setBoolean(21, getBoolean(disposizioneBonifici.isFlagImporto()));//		@FlagImporto	bit,
+//		proc.setObject(22, disposizioneBonifici.getImportoDbgrid());//		@ImportoDBGrid	float,
+//		proc.setString(23, disposizioneBonifici.getCodiceAbiOrdinante());//		@Codice_Abi_Ordinante	varchar(5),
+//		proc.setBoolean(24, getBoolean(disposizioneBonifici.isFlagCodiceAbiOrdinante()));//		@FlagCodice_Abi_Ordinante	bit,
+//		proc.setString(25, disposizioneBonifici.getCabOrdinante());//		@Cab_Ordinante	varchar(5),
+//		proc.setBoolean(26, getBoolean(disposizioneBonifici.isFlagCabOrdinante()));//		@FlagCab_Ordinante	bit,
+//		proc.setString(27, disposizioneBonifici.getContoOrdinante());//		@Conto_Ordinante	varchar(12),
+//		proc.setBoolean(28, getBoolean(disposizioneBonifici.isFlagContoOrdinante()));//		@FlagConto_Ordinante	bit,
+//		proc.setString(29, disposizioneBonifici.getCodiceAbiDestinatario());//		@Codice_Abi_Destinatario	varchar(5),
+//		proc.setBoolean(30, getBoolean(disposizioneBonifici.isFlagCodiceAbiDestinatario()));//		@FlagCodice_Abi_Destinatario	bit,
+//		proc.setString(31, disposizioneBonifici.getCabDestinatario());//		@Cab_Destinatario	varchar(5),
+//		proc.setBoolean(32, getBoolean(disposizioneBonifici.isFlagCabDestinatario()));//		@FlagCab_Destinatario	bit,
+//		proc.setString(33, disposizioneBonifici.getContoDestinatario());//		@Conto_Destinatario	varchar(12),
+//		proc.setBoolean(34, getBoolean(disposizioneBonifici.isFlagContoDestinatario()));//		@FlagConto_Destinatario	bit,
+//		proc.setShort(35, disposizioneBonifici.getStatoConvalida());//		@StatoConvalida	smallint,
+//		proc.setString(36, disposizioneBonifici.getBancaSportelloDomic());//		@Banca_Sportello_Domic	varchar(50),
+//		proc.setBoolean(37, getBoolean(disposizioneBonifici.isFlagBancaSportelloDomic()));//		@FlagBanca_Sportello_Domic	bit,
+//		proc.setString(38, disposizioneBonifici.getCin());//		@Cin	varchar,
+//		proc.setBoolean(39, getBoolean(disposizioneBonifici.isFlagCin()));//		@FlagCin	bit,
+//		proc.setString(40, disposizioneBonifici.getCodiceSiaOrdinante());//		@Codice_Sia_Ordinante	varchar(5),
+//		proc.setBoolean(41, getBoolean(disposizioneBonifici.isFlagCodiceSiaOrdinante()));//		@FlagCodice_Sia_Ordinante	bit,
+//		proc.setString(42, disposizioneBonifici.getTipoCodice());//		@TipoCodice	varchar,
+//		proc.setBoolean(43, getBoolean(disposizioneBonifici.isFlagTipoCodice()));//		@FlagTipoCodice	bit,
+//		proc.setString(44, disposizioneBonifici.getIndirizzoOrdinante());//		@Indirizzo_Ordinante	varchar(30),
+//		proc.setBoolean(45, getBoolean(disposizioneBonifici.isFlagIndirizzoOrdinante()));//		@FlagIndirizzo_Ordinante	bit,
+//		proc.setString(46, disposizioneBonifici.getLocalitaOrdinante());//		@Località_Ordinante	varchar(30),
+//		proc.setBoolean(47, getBoolean(disposizioneBonifici.isFlagLocalitaOrdinante()));//		@FlagLocalità_Ordinante	bit,
+//		proc.setString(48, disposizioneBonifici.getCodiceFiscaleOrdinante());//		@Codice_Fiscale_Ordinante	varchar(16),
+//		proc.setBoolean(49, getBoolean(disposizioneBonifici.isFlagCodiceFiscaleOrdinante()));//		@FlagCodice_Fiscale_Ordinante	bit,
+//		proc.setString(50, disposizioneBonifici.getDenominazioneDestinatario());//		@DenominazioneDestinatario	varchar(90),
+//		proc.setBoolean(51, getBoolean(disposizioneBonifici.isFlagDenominazioneDestinatario()));//		@FlagDenominazioneDestinatario	bit,
+//		proc.setString(52, disposizioneBonifici.getCodiceFiscaleDestinatario());//		@Codice_Fiscale_Destinatario	varchar(16),
+//		proc.setBoolean(53, getBoolean(disposizioneBonifici.isFlagCodiceFiscaleDestinatario()));//		@FlagCodice_Fiscale_Destinatario	bit,
+//		proc.setString(54, disposizioneBonifici.getIndirizzoDestinatario());//		@Indirizzo_Destinatario	varchar(30),
+//		proc.setBoolean(55, getBoolean(disposizioneBonifici.isFlagIndirizzoDestinatario()));//		@FlagIndirizzo_Destinatario	bit,
+//		proc.setString(56, disposizioneBonifici.getContinuazioneIndirizzoDestinatario());//		@Continuazione_Indirizzo_Destinatario varchar(70),
+//		proc.setBoolean(57, getBoolean(disposizioneBonifici.isFlagContinuazioneIndirizzoDestinatario()));//		@FlagContinuazione_Indirizzo_Destinatario bit,
+//		proc.setString(58, disposizioneBonifici.getCapDestinatario());//		@Cap_Destinatario	varchar(5),
+//		proc.setBoolean(59, getBoolean(disposizioneBonifici.isFlagCapDestinatario()));//		@FlagCap_Destinatario	bit,
+//		proc.setString(60, disposizioneBonifici.getCittaDestinatario());//		@Città_Destinatario	varchar(25),
+//		proc.setBoolean(61, getBoolean(disposizioneBonifici.isFlagCittaDestinatario()));//		@FlagCittà_Destinatario	bit,
+//		proc.setString(62, disposizioneBonifici.getProvinciaDestinatario());		//		@Provincia_Destinatario	varchar(2),
+//		proc.setBoolean(63, getBoolean(disposizioneBonifici.isFlagProvinciaDestinatario()));//		@FlagProvincia_Destinatario	bit,
+//		proc.setString(64, disposizioneBonifici.getDomiciliazioneDestinatario());//		@Domiciliazione_Destinatario	varchar(65),
+//		proc.setBoolean(65, getBoolean(disposizioneBonifici.isFlagDomiciliazioneDestinatario()));//		@FlagDomiciliazione_Destinatario	bit,
+//		proc.setString(66, disposizioneBonifici.getDescrizioneDisposizione());//		@Descrizione_Disposizione	varchar(2000),
+//		proc.setBoolean(67, getBoolean(disposizioneBonifici.isFlagDescrizioneDisposizione()));//		@FlagDescrizione_Disposizione	bit,
+//		proc.setString(68, disposizioneBonifici.getCodiceClienteDebitore());//		@CodiceClienteDebitore	varchar(16),
+//		proc.setBoolean(69, getBoolean(disposizioneBonifici.isFlagCodiceClienteDebitore()));//		@FlagCodiceClienteDebitore	bit,
+//		proc.setString(70, disposizioneBonifici.getAziendaOrdinante());	//		@Azienda_Ordinante	varchar(96),
+//		proc.setBoolean(71, getBoolean(disposizioneBonifici.isFlagAziendaOrdinante()));//		@FlagAzienda_Ordinante	bit,
+//		proc.setString(72, disposizioneBonifici.getFirmaEmittente());//		@FirmaEmittente	varchar(20),
+//		proc.setBoolean(73, getBoolean(disposizioneBonifici.isFlagFirmaEmittente()));//		@FlagFirmaEmittente	bit,
+//		proc.setString(74, disposizioneBonifici.getCampoaDisposizione());		//		@CampoaDisposizione	varchar(8),
+//		proc.setBoolean(75, getBoolean(disposizioneBonifici.isFlagCampoaDisposizione()));//		@FlagCampoaDisposizione	bit,
+//		proc.setShort(76, disposizioneBonifici.getErroriCampiObbligatori());//		@ErroriCampiObbligatori	smallint,
+//		proc.setShort(77, disposizioneBonifici.getErroriCongruenza());//		@ErroriCongruenza	smallint,
+//		proc.setShort(78, disposizioneBonifici.getErroriCampiData());//		@ErroriCampiData	smallint,
+//		proc.setShort(79, disposizioneBonifici.getErroriPiazzatura());//		@ErroriPiazzatura	smallint,
+//		proc.setBoolean(80, getBoolean(disposizioneBonifici.isFlagStampa()));//		@FlagStampa	bit,
+//		proc.setString(81, disposizioneBonifici.getCoordinateIbanordinante());//		@CoordinateIBANordinante	varchar(42),
+//		proc.setBoolean(82, getBoolean(disposizioneBonifici.isFlagCoordinateIbanordinante()));//		@FlagCoordinateIBANordinante	bit,
+//		proc.setString(83, disposizioneBonifici.getCoordinateIbanbeneficiario());//		@CoordinateIBANbeneficiario	varchar(42),
+//		proc.setBoolean(84, getBoolean(disposizioneBonifici.isFlagCoordinateIbanbeneficiario()));	//		@FlagCoordinateIBANbeneficiario	bit,
+//		proc.setString(85, disposizioneBonifici.getDescrizioneConto());//		@DescrizioneConto	varchar(30),
+//		proc.setBoolean(86, getBoolean(disposizioneBonifici.isFlagDescrizioneConto()));//		@FlagDescrizioneConto	bit,
+//		proc.setString(87, disposizioneBonifici.getRichiestaEsito());//		@RichiestaEsito	varchar,
+//		proc.setBoolean(88, getgetOutputsBoolean(disposizioneBonifici.isFlagRichiestaEsito()));//		@FlagRichiestaEsito	bit,
+//		proc.setString(89, disposizioneBonifici.getEsito());//		@Esito	varchar,
+//		proc.setBoolean(90, getBoolean(disposizioneBonifici.isFlagEsito()));//		@FlagEsito	bit,
+//		proc.setString(91, disposizioneBonifici.getTipoCodiceRiferimento());//		@TipoCodiceRiferimento	varchar,
+//		proc.setBoolean(92, getBoolean(disposizioneBonifici.isFlagTipoCodiceRiferimento()));//		@FlagTipoCodiceRiferimento	bit,
+//		proc.setString(93, disposizioneBonifici.getCodiceRiferimento());//		@CodiceRiferimento	varchar(35),
+//		proc.setBoolean(94, getBoolean(disposizioneBonifici.isFlagCodiceRiferimento()));//		@FlagCodiceRiferimento	bit,
+//		proc.setString(95, disposizioneBonifici.getTipoAnomalia());//		@TipoAnomalia	varchar,
+//		proc.setBoolean(96, getBoolean(disposizioneBonifici.isFlagTipoAnomalia()));//		@FlagTipoAnomalia	bit,
+//		proc.setDate(97, dateToSqlDate(disposizioneBonifici.getValutaOrdinante()));//		@ValutaOrdinante	datetime,
+//		proc.setBoolean(98, getBoolean(disposizioneBonifici.isFlagValutaOrdinante()));//		@FlagValutaOrdinante	bit,
+//		proc.setDate(99, dateToSqlDate(disposizioneBonifici.getValutaBeneficiario()));//		@ValutaBeneficiario	datetime,
+//		proc.setBoolean(100, getBoolean(disposizioneBonifici.isFlagValutaBeneficiario()));//		@FlagValutaBeneficiario	bit,
+//		proc.setDate(101, dateToSqlDate(disposizioneBonifici.getDataOrdine()));//		@DataOrdine	datetime,
+//		proc.setBoolean(102, getBoolean(disposizioneBonifici.isFlagDataOrdine()));//		@FlagDataOrdine	bit,
+//		proc.setDate(103, dateToSqlDate(disposizioneBonifici.getDataContabileAddebito()));//		@DataContabileAddebito	datetime,
+//		proc.setBoolean(104, getBoolean(disposizioneBonifici.isFlagDataContabileAddebito()));//		@FlagDataContabileAddebito	bit,
+//		proc.setDate(105, dateToSqlDate(disposizioneBonifici.getDataEsecuzione()));//		@DataEsecuzione	datetime,
+//		proc.setBoolean(106, getBoolean(disposizioneBonifici.isFlagDataEsecuzione()));//		@FlagDataEsecuzione	bit,
+//		proc.setString(107, disposizioneBonifici.getImportoCommissioni());//		@ImportoCommissioni	varchar(15),
+//		proc.setBoolean(108, getBoolean(disposizioneBonifici.isFlagImportoCommissioni()));//		@FlagImportoCommissioni	bit,
+//		proc.setString(109, disposizioneBonifici.getImportoSpese());//		@ImportoSpese	varchar(15),
+//		proc.setBoolean(110, getBoolean(disposizioneBonifici.isFlagImportoSpese()));//		@FlagImportoSpese	bit,
+//		proc.setString(111, disposizioneBonifici.getImportoPenali());//		@ImportoPenali	varchar(15),
+//		proc.setBoolean(112, getBoolean(disposizioneBonifici.isFlagImportoPenali()));		//		@FlagImportoPenali	bit,
+//		proc.setString(113, disposizioneBonifici.getNumeroAssegnoEmesso());//		@NumeroAssegnoEmesso	varchar(16),
+//		proc.setBoolean(114, getBoolean(disposizioneBonifici.isFlagNumeroAssegnoEmesso()));//		@FlagNumeroAssegnoEmesso	bit,
+//		proc.setString(115, disposizioneBonifici.getBancaGatewayMp());//		@BancaGatewayMP	varchar(5),
+//		proc.setBoolean(116, getBoolean(disposizioneBonifici.isFlagBancaGatewayMp()));//		@FlagBancaGatewayMP	bit,
+//		proc.setString(117, disposizioneBonifici.getCodiceMarketPlace());//		@CodiceMarketPlace	varchar(5),
+//		proc.setBoolean(118, getBoolean(disposizioneBonifici.isFlagCodiceMarketPlace()));//		@FlagCodiceMarketPlace	bit,
+//		proc.setString(119, disposizioneBonifici.getUserId());//		@UserID	varchar(10),
+//		proc.setString(120, disposizioneBonifici.getProvenienzaDisposizione());			//		@ProvenienzaDisposizione	varchar(10),
+//		proc.setString(121, disposizioneBonifici.getTipoFlussoInput());//		@TipoFlussoInput	varchar(2),
+//		proc.setString(122, disposizioneBonifici.getIddisposizioneFunzioneOrdinante());//		@IDDisposizioneFunzioneOrdinante	varchar(30),
+//		proc.setDate(123, dateToSqlDate(disposizioneBonifici.getDataInserimentoDisposizione()));//		@DataInserimentoDisposizione	datetime,
+//		proc.setDate(124, dateToSqlDate(disposizioneBonifici.getDataFlussoDisposizione()));//		@DataFlussoDisposizione	datetime,
+//		proc.setDate(125, dateToSqlDate(disposizioneBonifici.getDataEsitoDisposizione()));//		@DataEsitoDisposizione	datetime,
+//		proc.setBoolean(126, getBoolean(disposizioneBonifici.isFlagDataEsitoDisposizione()));//		@FlagDataEsitoDisposizione	bit,
+//		proc.setDate(127, dateToSqlDate(disposizioneBonifici.getDataUltimoEsitoAcquisito()));//		@DataUltimoEsitoAcquisito	datetime,
+//		proc.setBoolean(128, getBoolean(disposizioneBonifici.isFlagDataUltimoEsitoAcquisito()));//		@FlagDataUltimoEsitoAcquisito	bit,
+//		proc.setString(129, disposizioneBonifici.getStatoDisposizione());//		@StatoDisposizione	varchar(15),
+//		proc.setBoolean(130, getBoolean(disposizioneBonifici.isFlagStatoDisposizione()));//		@FlagStatoDisposizione	bit,
+//		proc.setString(131, disposizioneBonifici.getCodiceSocieta());//		@CodiceSocietà	varchar(3),
+//		proc.setBoolean(132, getBoolean(disposizioneBonifici.isFlagCodiceSocieta()));//		@FlagCodiceSocietà	bit,
+//		proc.setString(133, disposizioneBonifici.getCausaleMovimento());//		@CausaleMovimento	varchar(10),
+//		proc.setBoolean(134, getBoolean(disposizioneBonifici.isFlagCausaleMovimento()));//		@FlagCausaleMovimento	bit,
+//		proc.setString(135, disposizioneBonifici.getDescrizioneOperazione());//		@DescrizioneOperazione	varchar(60),
+//		proc.setBoolean(136, getBoolean(disposizioneBonifici.isFlagDescrizioneOperazione()));//		@FlagDescrizioneOperazione	bit,
+//		proc.setString(137, disposizioneBonifici.getTipoMovimento());//		@TipoMovimento	varchar(10),
+//		proc.setBoolean(138, getBoolean(disposizioneBonifici.isFlagTipoMovimento()));//		@FlagTipoMovimento	bit,
+//		proc.setString(139, disposizioneBonifici.getFunzioneOrdinante());//		@FunzioneOrdinante	varchar(10),
+//		proc.setBoolean(140, getBoolean(disposizioneBonifici.isFlagFunzioneOrdinante()));	//		@FlagFunzioneOrdinante	bit,
+//		proc.setString(141, disposizioneBonifici.getDescrizioneMovimento());//		@DescrizioneMovimento	varchar(50),
+//		proc.setBoolean(142, getBoolean(disposizioneBonifici.isFlagDescrizioneMovimento()));//		@FlagDescrizioneMovimento	bit,
+//		proc.setBoolean(143, getBoolean(disposizioneBonifici.isContabilizzazioneMovimento()));//		@ContabilizzazioneMovimento	bit,
+//		proc.setBoolean(144, getBoolean(disposizioneBonifici.isFlagContabilizzazioneMovimento()));		//		@FlagContabilizzazioneMovimento	bit,
+//		proc.setBoolean(145, getBoolean(disposizioneBonifici.isForzaStatoAr()));//		@ForzaStatoAR	bit,
+//		proc.setString(146, disposizioneBonifici.getRamoMinisteriale());//		@RamoMinisteriale	varchar(10),
+//		proc.setBoolean(147, getBoolean(disposizioneBonifici.isFlagRamoMinisteriale()));//		@FlagRamoMinisteriale	bit,
+//		proc.setString(148, disposizioneBonifici.getRamoTecnico());//		@RamoTecnico	varchar(2),
+//		proc.setBoolean(149, getBoolean(disposizioneBonifici.isFlagRamoTecnico()));	//		@FlagRamoTecnico	bit,
+//		proc.setString(150, disposizioneBonifici.getAgenziaCdc());//		@AgenziaCDC	varchar(10),
+//		proc.setBoolean(151, getBoolean(disposizioneBonifici.isFlagAgenziaCdc()));//		@FlagAgenziaCDC	bit,
+//		proc.setString(152, disposizioneBonifici.getDescrizioneAgenziaCdc());//		@DescrizioneAgenziaCDC	varchar(50),
+//		proc.setBoolean(153, getBoolean(disposizioneBonifici.isFlagDescrizioneAgenziaCdc()));//		@FlagDescrizioneAgenziaCDC	bit,
+//		proc.setString(154, disposizioneBonifici.getStatistico1());//		@Statistico1	varchar(10),
+//		proc.setBoolean(155, getBoolean(disposizioneBonifici.isFlagStatistico1()));//		@FlagStatistico1	bit,
+//		proc.setString(156, disposizioneBonifici.getStatistico2());//		@Statistico2	varchar(10),
+//		proc.setBoolean(157, getBoolean(disposizioneBonifici.isFlagStatistico2()));//		@FlagStatistico2	bit,
+//		proc.setString(158, disposizioneBonifici.getNumeroSinistroDanni());//		@NumeroSinistroDanni	varchar(10),
+//		proc.setBoolean(159, getBoolean(disposizioneBonifici.isFlagNumeroSinistroDanni()));//		@FlagNumeroSinistroDanni	bit,
+//		proc.setBytes(160, disposizioneBonifici.getLastSaved());//		@LastSaved	timestamp,
+//		proc.setString(161, disposizioneBonifici.getDivisaContoOrdinante());//		@Divisa_Conto_Ordinante varchar(3),
+//		proc.setBoolean(162, getBoolean(disposizioneBonifici.getFlagDivisaContoOrdinante()));//		@FlagDivisa_Conto_Ordinante bit,
+//		proc.setString(163, disposizioneBonifici.getNoteFunzioneOrdinante());//		@NoteFunzioneOrdinante varchar(60),
+//		proc.setBoolean(164, getBoolean(disposizioneBonifici.isFlagNoteFunzioneOrdinante()));//		@FlagNoteFunzioneOrdinante bit,
+//		proc.setString(165, disposizioneBonifici.getNoteTesoreria());//		@NoteTesoreria	 varchar(60),
+//		proc.setBoolean(166, getBoolean(disposizioneBonifici.isFlagNoteTesoreria()));//		@FlagNoteTesoreria bit,
+//		proc.setString(167, disposizioneBonifici.getNumeroPolizza()); //		@NumeroPolizza varchar(13),
+//		proc.setBoolean(168, getBoolean(disposizioneBonifici.isFlagNumeroPolizza()));//		@FlagNumeroPolizza bit,
+//		proc.setBoolean(169, getBoolean(disposizioneBonifici.isNoContabilizzazioneEsito()));//		@NoContabilizzazioneEsito bit,
+//		proc.setBoolean(170, getBoolean(disposizioneBonifici.isFlagNoContabilizzazioneEsito()));//		@FlagNoContabilizzazioneEsito bit,
+//		proc.setBoolean(171, getBoolean(disposizioneBonifici.isNoTabellaContabilizzazione()));//		@NoTabellaContabilizzazione bit,
+//		proc.setBoolean(172, getBoolean(disposizioneBonifici.isFlagNoTabellaContabilizzazione()));//		@FlagNoTabellaContabilizzazione bit,
+//		proc.setBoolean(173, getBoolean(disposizioneBonifici.isContoPerCassa()));//		@ContoPerCassa bit,
+//		proc.setBoolean(174, getBoolean(disposizioneBonifici.isFlagContoPerCassa()));//		@FlagContoPerCassa bit,
+//		proc.setString(175, disposizioneBonifici.getCircuitoPagamento());//		@CircuitoPagamento varchar(1),
+//		proc.setBoolean(176, getBoolean(disposizioneBonifici.isFlagCircuitoPagamento()));//		@FlagCircuitoPagamento bit,
+//		proc.setString(177, disposizioneBonifici.getUtenteNas());			//		@UtenteNAS varchar(50),
+//		proc.setBoolean(178, disposizioneBonifici.isFlagUtenteNas());//		@FlagUtenteNAS bit,
+//		proc.setString(179, disposizioneBonifici.getTipoDisposizioneNas());//		@TipoDisposizioneNAS varchar(3),
+//		proc.setBoolean(180, getBoolean(disposizioneBonifici.isFlagTipoDisposizioneNas()));//		@FlagTipoDisposizioneNAS bit,
+//		proc.setString(181, disposizioneBonifici.getCausaleDisposizioneNas());//		@CausaleDisposizioneNAS varchar(5),
+//		proc.setBoolean(182, getBoolean(disposizioneBonifici.isFlagCausaleDisposizioneNas()));//		@FlagCausaleDisposizioneNAS bit,
+//		proc.setString(183, disposizioneBonifici.getNaturaPagamentoNas());//		@NaturaPagamentoNAS varchar(1),
+//		proc.setBoolean(184, getBoolean(disposizioneBonifici.isFlagNaturaPagamentoNas()));//		@FlagNaturaPagamentoNAS bit,
+//		proc.setDate(185, dateToSqlDate(disposizioneBonifici.getDataSpossessamentoNas()));//		@DataSpossessamentoNAS datetime,
+//		proc.setBoolean(186, getBoolean(disposizioneBonifici.isFlagDataSpossessamentoNas()));//		@FlagDataSpossessamentoNAS bit,
+//		proc.setString(187, disposizioneBonifici.getDivisaImportoNas());//		@DivisaImportoNAS varchar(3),
+//		proc.setBoolean(188, getBoolean(disposizioneBonifici.isFlagDivisaImportoNas()));//		@FlagDivisaImportoNAS bit,
+//		proc.setString(189, disposizioneBonifici.getRuoloBeneficiarioNas());//		@RuoloBeneficiarioNAS varchar(50),
+//		proc.setBoolean(190, getBoolean(disposizioneBonifici.isFlagRuoloBeneficiarioNas()));//		@FlagRuoloBeneficiarioNAS bit,
+//		proc.setString(191, disposizioneBonifici.getDenominazionePosizioneNas());//		@DenominazionePosizioneNAS varchar(200),
+//		proc.setBoolean(192, getBoolean(disposizioneBonifici.isFlagDenominazionePosizioneNas()));//		@FlagDenominazionePosizioneNAS bit,
+//		proc.setString(193, disposizioneBonifici.getRuoloPosizioneNas());//		@RuoloPosizioneNAS varchar(50),
+//		proc.setBoolean(194, getBoolean(disposizioneBonifici.isFlagRuoloPosizioneNas()));//		@FlagRuoloPosizioneNAS bit,
+//		proc.setString(195, disposizioneBonifici.getIndirizzoDomiciliazioneDestinatario());//		@Indirizzo_Domiciliazione_Destinatario varchar(30),
+//		proc.setBoolean(196, getBoolean(disposizioneBonifici.isFlagIndirizzoDomiciliazioneDestinatario()));//		@FlagIndirizzo_Domiciliazione_Destinatario bit,
+//		proc.setString(197, disposizioneBonifici.getContinuazioneIndirizzoDomiciliazioneDestinatario());//		@Continuazione_Indirizzo_Domiciliazione_Destinatario varchar(70),
+//		proc.setBoolean(198, getBoolean(disposizioneBonifici.isFlagContinuazioneIndirizzoDomiciliazioneDestinatario()));//		@FlagContinuazione_Indirizzo_Domiciliazione_Destinatario bit,
+//		proc.setString(199, disposizioneBonifici.getCapDomiciliazioneDestinatario());//		@CAP_Domiciliazione_Destinatario varchar(5),
+//		proc.setBoolean(200, getBoolean(disposizioneBonifici.isFlagCapDomiciliazioneDestinatario()));//		@FlagCAP_Domiciliazione_Destinatario bit,
+//		proc.setString(201, disposizioneBonifici.getComuneDomiciliazioneDestinatario());//		@Comune_Domiciliazione_Destinatario varchar(23),
+//		proc.setBoolean(202, getBoolean(disposizioneBonifici.isFlagComuneDomiciliazioneDestinatario()));	//		@FlagComune_Domiciliazione_Destinatario bit,
+//		proc.setString(203, disposizioneBonifici.getProvinciaDomiciliazioneDestinatario());//		@Provincia_Domiciliazione_Destinatario varchar(2),
+//		proc.setBoolean(204, getBoolean(disposizioneBonifici.isFlagProvinciaDomiciliazioneDestinatario()));//		@FlagProvincia_Domiciliazione_Destinatario bit,
+//		proc.setString(205, disposizioneBonifici.getDataLuogoIstruzioni());//		@DataLuogoIstruzioni varchar(60),
+//		proc.setBoolean(206, getBoolean(disposizioneBonifici.isFlagDataLuogoIstruzioni()));//		@FlagDataLuogoIstruzioni bit,
+//		//proc.setString(207, "AAA");
+//		proc.setString(207,ClobToString(disposizioneBonifici.getStreamFirmaDigitaleNas()));//		@StreamFirmaDigitaleNAS text,
+//		//proc.setBytes(207, null); //disposizioneBonifici.getStreamFirmaDigitaleNas()));//		@StreamFirmaDigitaleNAS text,
+//		proc.setBoolean(208, getBoolean(disposizioneBonifici.isFlagStreamFirmaDigitaleNas()));//		@FlagStreamFirmaDigitaleNAS bit,
+//		proc.setString(209, disposizioneBonifici.getRamoMinisterialeEffettivo());//		@RamoMinisterialeEffettivo varchar(10),
+//		proc.setBoolean(210, getBoolean(disposizioneBonifici.isFlagRamoMinisterialeEffettivo()));//		@FlagRamoMinisterialeEffettivo bit,
+//		proc.setBoolean(211, getBoolean(disposizioneBonifici.getCausaleAntiriciclaggio()));//		@CausaleAntiriciclaggio bit,
+//		proc.setBoolean(212, getBoolean(disposizioneBonifici.isFlagCausaleAntiriciclaggio()));//		@FlagCausaleAntiriciclaggio bit,
+//		proc.setString(213, disposizioneBonifici.getCodiceRaccomandata());//		@CodiceRaccomandata varchar(12),
+//		proc.setBoolean(214, getBoolean(disposizioneBonifici.isFlagCodiceRaccomandata()));//		@FlagCodiceRaccomandata bit,
+//		proc.setDate(215, dateToSqlDate(disposizioneBonifici.getDataIncassoAssegnoTraenza()));//		@DataIncassoAssegnoTraenza datetime,
+//		proc.setBoolean(216, getBoolean(disposizioneBonifici.isFlagDataIncassoAssegnoTraenza()));	//		@FlagDataIncassoAssegnoTraenza bit,
+//		proc.setString(217, disposizioneBonifici.getCodiceFrazionarioPagamento());//		@CodiceFrazionarioPagamento varchar(5),
+//		proc.setBoolean(218, getBoolean(disposizioneBonifici.isFlagCodiceFrazionarioPagamento()));//		@FlagCodiceFrazionarioPagamento bit,
+//		proc.setString(219, disposizioneBonifici.getDescrizioneFrazionarioPagamento());//		@DescrizioneFrazionarioPagamento varchar(35),
+//		proc.setBoolean(220, getBoolean(disposizioneBonifici.isFlagDescrizioneFrazionarioPagamento()));//		@FlagDescrizioneFrazionarioPagamento bit,
+//		proc.setString(221, disposizioneBonifici.getSezioneFrazionarioPagamento());//		@SezioneFrazionarioPagamento varchar(2),
+//		proc.setBoolean(222, getBoolean(disposizioneBonifici.isFlagSezioneFrazionarioPagamento()));//		@FlagSezioneFrazionarioPagamento bit,
+//		proc.setString(223, disposizioneBonifici.getOraPagamento());//		@OraPagamento varchar(6),
+//		proc.setBoolean(224, getBoolean(disposizioneBonifici.isFlagOraPagamento()));//		@FlagOraPagamento bit,
+//		proc.setString(225, disposizioneBonifici.getIdentificativoLetteraBeneficiario());//		@IdentificativoLetteraBeneficiario varchar(30),
+//		proc.setBoolean(226, getBoolean(disposizioneBonifici.isFlagIdentificativoLetteraBeneficiario()));//		@FlagIdentificativoLetteraBeneficiario bit,
+//		proc.setDate(227, dateToSqlDate(disposizioneBonifici.getDataCambioStatoDisposizioneNas()));//		@DataCambioStatoDisposizioneNAS datetime,
+//		proc.setString(228, disposizioneBonifici.getStatoDisposizioneNas());//		@StatoDisposizioneNAS varchar(3), 
+//		proc.setBoolean(229, getBoolean(disposizioneBonifici.isFlagStatoDisposizioneNas()));//		@FlagStatoDisposizioneNAS bit,
+//		proc.setString(230, disposizioneBonifici.getCausaScartoSep());//		@CausaScartoSep varchar(8),
+//		proc.setBoolean(231, getBoolean(disposizioneBonifici.isFlagCausaScartoSep()));//		@FlagCausaScartoSep bit,
+//		proc.setString(232, disposizioneBonifici.getStatoDisposizioneSep());//		@StatoDisposizioneSep varchar(8),
+//		proc.setBoolean(233, getBoolean(disposizioneBonifici.isFlagStatoDisposizioneSep()));//		@FlagStatoDisposizioneSep bit,
+//		proc.setDate(234, dateToSqlDate(disposizioneBonifici.getDataEmissioneSep()));//		@DataEmissioneSep datetime,
+//		proc.setBoolean(235, getBoolean(disposizioneBonifici.isFlagDataEmissioneSep()));//		@FlagDataEmissioneSep bit,
+//		proc.setDate(236, dateToSqlDate(disposizioneBonifici.getDataScadenzaSep()));//		@DataScadenzaSep datetime,
+//		proc.setBoolean(237, getBoolean(disposizioneBonifici.isFlagDataScadenzaSep()));//		@FlagDataScadenzaSep bit,
+//		proc.setString(238, disposizioneBonifici.getStatoAnomaliaSep());//		@StatoAnomaliaSep varchar(8),
+//		proc.setBoolean(239, getBoolean(disposizioneBonifici.isFlagStatoAnomaliaSep()));//		@FlagStatoAnomaliaSep bit,
+//		proc.setDate(240, dateToSqlDate(disposizioneBonifici.getDataAnomaliaSep()));//		@DataAnomaliaSep datetime,
+//		proc.setBoolean(241, getBoolean(disposizioneBonifici.isFlagDataAnomaliaSep()));//		@FlagDataAnomaliaSep bit,
+//		proc.setString(242, disposizioneBonifici.getImportoAddebitatoSep());//		@ImportoAddebitatoSep varchar(15),
+//		proc.setBoolean(243, getBoolean(disposizioneBonifici.isFlagImportoAddebitatoSep()));//		@FlagImportoAddebitatoSep bit,
+//		proc.setString(244, disposizioneBonifici.getCausaleStornoBonificoSep());//		@CausaleStornoBonificoSep varchar(150),
+//		proc.setBoolean(245, getBoolean(disposizioneBonifici.isFlagCausaleStornoBonificoSep()));//		@FlagCausaleStornoBonificoSep bit,
+//		proc.setString(246, disposizioneBonifici.getCodiceStornoBonificoSep());//		@CodiceStornoBonificoSep varchar(5),
+//		proc.setBoolean(247, getBoolean(disposizioneBonifici.isFlagCodiceStornoBonificoSep()));//		@FlagCodiceStornoBonificoSep bit,
+//		proc.setString(248, disposizioneBonifici.getAbiNegoziazioneAssegno());//		@AbiNegoziazioneAssegno varchar(5),
+//		proc.setBoolean(249, getBoolean(disposizioneBonifici.isFlagAbiNegoziazioneAssegno()));//		@FlagAbiNegoziazioneAssegno bit,
+//		proc.setString(250, disposizioneBonifici.getCabNegoziazioneAssegno());//		@CabNegoziazioneAssegno varchar(5),
+//		proc.setBoolean(251, getBoolean(disposizioneBonifici.isFlagCabNegoziazioneAssegno()));//		@FlagCabNegoziazioneAssegno bit,
+//		proc.setString(252, disposizioneBonifici.getTipoIncassoAssegno());//		@TipoIncassoAssegno varchar(5),
+//		proc.setBoolean(253, getBoolean(disposizioneBonifici.isFlagTipoIncassoAssegno()));//		@FlagTipoIncassoAssegno bit,
+//		proc.setString(254, disposizioneBonifici.getNumeroRaccomandataDisguidata());//		@NumeroRaccomandataDisguidata varchar(20),
+//		proc.setBoolean(255, getBoolean(disposizioneBonifici.isFlagNumeroRaccomandataDisguidata()));//		@FlagNumeroRaccomandataDisguidata bit,
+//		proc.setString(256, disposizioneBonifici.getUtenteTestWebService());//		@UtenteTestWebService varchar(1),
+//		proc.setBoolean(257, getBoolean(disposizioneBonifici.isFlagUtenteTestWebService()));//		@FlagUtenteTestWebService bit,
+//		proc.setString(258, disposizioneBonifici.getTipoSpedizioneAssegno());//		@TipoSpedizioneAssegno varchar(2),
+//		proc.setBoolean(259, getBoolean(disposizioneBonifici.isFlagTipoSpedizioneAssegno()));//		@FlagTipoSpedizioneAssegno bit,
+//		proc.setString(260, disposizioneBonifici.getNomeSupportoFlussoInputCbi());//		@NomeSupportoFlussoInputCBI varchar(20),
+//		proc.setBoolean(261, getBoolean(disposizioneBonifici.isFlagNomeSupportoFlussoInputCbi()));//		@FlagNomeSupportoFlussoInputCBI bit,
+//		proc.setString(262, disposizioneBonifici.getCodiceCucOrdinante());//		@Codice_CUC_Ordinante varchar(35),
+//		proc.setBoolean(263, getBoolean(disposizioneBonifici.isFlagCodiceCucOrdinante()));//		@FlagCodice_CUC_Ordinante bit,
+//		proc.setBoolean(264, getBoolean(disposizioneBonifici.isBonificoHigPriority()));//		@BonificoHigPriority bit,
+//		proc.setBoolean(265, getBoolean(disposizioneBonifici.isFlagBonificoHigPriority()));//		@FlagBonificoHigPriority bit,
+//		proc.setString(266, disposizioneBonifici.getBicCreditore());//		@BIC_Creditore varchar(11),
+//		proc.setBoolean(267, getBoolean(disposizioneBonifici.isFlagBicCreditore()));//		@FlagBIC_Creditore bit,
+//		proc.setString(268, disposizioneBonifici.getEsitoSepaRsnCode());//		@EsitoSepaRsnCode varchar(4),
+//		proc.setBoolean(269, getBoolean(disposizioneBonifici.isFlagEsitoSepaRsnCode()));//		@FlagEsitoSepaRsnCode bit,
+//		proc.setString(270, disposizioneBonifici.getEsitoSepaPrtry());//		@EsitoSepaPrtry varchar(35),
+//		proc.setBoolean(271, getBoolean(disposizioneBonifici.isFlagEsitoSepaPrtry()));//		@FlagEsitoSepaPrtry bit,
+//		proc.setString(272, disposizioneBonifici.getEsitoSepaAddtlInf());//		@EsitoSepaAddtlInf varchar(105),
+//		proc.setBoolean(273, getBoolean(disposizioneBonifici.isFlagEsitoSepaAddtlInf()));//		@FlagEsitoSepaAddtlInf bit,
+//		proc.setString(274, disposizioneBonifici.getEsitoSepaElmRfc());//		@EsitoSepaElmRfc varchar(255),
+//		proc.setBoolean(275,getBoolean( disposizioneBonifici.isFlagEsitoSepaElmRfc()));//		@FlagEsitoSepaElmRfc bit,
+//		proc.setString(276, disposizioneBonifici.getEsitoMsgId());//		@EsitoMsgId varchar(255),
+//		proc.setBoolean(277, getBoolean(disposizioneBonifici.isFlagEsitoMsgId()));//		@FlagEsitoMsgId bit,
+//		proc.setBoolean(278, getBoolean(disposizioneBonifici.isFirmaDelegato1()));//		@FirmaDelegato1 bit,
+//		proc.setBoolean(279, getBoolean(disposizioneBonifici.isFirmaDelegato2()));//		@FirmaDelegato2 bit,
+//		proc.setString(280,disposizioneBonifici.getDisposizioneGuid());//		@DisposizioneGuid uniqueidentifier
+//		
+//		
+//		proc.execute();
+//		
+//		res = proc.getString(1);
+//		
+		if (disposizione.getIddistintaBanca()!=null && disposizione.getIddistintaBanca()!=0) {
+			try {
+				Connection connection = getConnection();
+				CallableStatement proc = connection.prepareCall("{? = call spRecalcDistinta (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, disposizione.getIddistintaBanca());
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				int ires = proc.getInt(1);
+					
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return null;
+			}
+	 }
+		
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			//if (tx)
+			//	rollback();
+			return null;
+		}
+			
+		return res;
+	}
+
+	public List<DisposizioniBonificiDecoded> listDecoded(DisposizioniFiltroBean filterBean, AppVariables appVariables) {
+		boolean tx = startTransaction();
+		try {
+			String sql = generateQuery(filterBean, appVariables, false, true);
+			sql += " order by d.id";
+			
+			Query q = currentSession().createSQLQuery(sql)
+					.addEntity("d", DisposizioniBonifici.class)
+					.addEntity("cdCausale",  ComboDisposizioni.class)
+					.addEntity("cdStatoDisp",  ComboDisposizioni.class)
+					.addEntity("cdStatoAnom",  ComboDisposizioni.class)
+					.addEntity("cdScarto",  ComboDisposizioni.class);
+	
+			q.setResultTransformer(new ResultTransformer() {				
+				@Override
+				public Object transformTuple(Object[] tuple, String[] aliases) {
+					return new DisposizioniBonificiDecoded((DisposizioniBonifici) tuple[0], (ComboDisposizioni) tuple[1], (ComboDisposizioni) tuple[2], (ComboDisposizioni) tuple[3], (ComboDisposizioni) tuple[4]);
+				}
+				
+				@Override
+				public List transformList(List collection) {
+					return collection;
+				}
+			});
+			
+			
+			if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0 && filterBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", filterBean.getSelectedIds());
+			
+			List<DisposizioniBonificiDecoded> res = (List<DisposizioniBonificiDecoded>)q.list();
+			
+			return res;		
+		} finally {
+			if (tx)
+				commit();
+		}
+	}
+
+	public List<DisposizioniBonificiDecoded> filterDecoded(RicercaDisposizioniFilterBean filterBean) {
+		boolean tx = startTransaction();
+		
+		try {
+			String sql = "select {d.*}, {cdCausale.*}, {cdStatoDisp.*}, {cdStatoAnom.*}, {cdScarto.*} from disposizioni_Bonifici d WITH (NOLOCK)"+
+						" LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = d.IDDistintaFlussoInput";
+			sql += " left join Combo_Disposizioni cdCausale on cdCausale.Tipologia='BONIFICI' And cdCausale.Campo='Causale' And cdCausale.Codice=d.causale " +
+					" left join Combo_Disposizioni cdStatoDisp on cdStatoDisp.Tipologia='BONIFICI' And cdStatoDisp.Campo='StatoDisposizioneSep' And cdStatoDisp.Codice=d.causale " +
+					" left join Combo_Disposizioni cdStatoAnom on cdStatoAnom.Tipologia='BONIFICI' And cdStatoDisp.Campo='StatoAnomaliaSep' And cdStatoDisp.Codice=d.causale " +
+					" left join Combo_Disposizioni cdScarto on cdScarto.Tipologia='BONIFICI' And cdScarto.Campo='CausaScartoSep' And cdScarto.Codice=d.causale ";
+			
+			sql += " where isNull(DistintaFlussiInput.MassiveLoadStatus,3) = 3";
+		
+			sql += addFiltersToQuery(filterBean);
+	
+			sql += " order by d.id";
+			
+			SQLQuery q=currentSession().createSQLQuery(sql)
+					.addEntity("d", DisposizioniBonifici.class)
+					.addEntity("cdCausale",  ComboDisposizioni.class)
+					.addEntity("cdStatoDisp",  ComboDisposizioni.class)
+					.addEntity("cdStatoAnom",  ComboDisposizioni.class)
+					.addEntity("cdScarto",  ComboDisposizioni.class);
+			
+
+			q.setResultTransformer(new ResultTransformer() {				
+				@Override
+				public Object transformTuple(Object[] tuple, String[] aliases) {
+					return new DisposizioniBonificiDecoded((DisposizioniBonifici) tuple[0], (ComboDisposizioni) tuple[1], (ComboDisposizioni) tuple[2], (ComboDisposizioni) tuple[3], (ComboDisposizioni) tuple[4]);
+				}
+				
+				@Override
+				public List transformList(List collection) {
+					return collection;
+				}
+			});
+			
+			
+			q=setQueryParameters(q, filterBean);
+
+			if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0 && filterBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", filterBean.getSelectedIds());
+
+			
+			List<DisposizioniBonificiDecoded> res=null;
+			
+			try {
+				res = (List<DisposizioniBonificiDecoded>) q.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+				return new ArrayList<DisposizioniBonificiDecoded>();
+			}
+				
+			return res;
+		} finally {				
+			if (tx)
+				commit(); 
+		}	}
+
+	public List<DisposizioniBonifici> listByDistintaBancaNoTransaction(Integer idDistintaBanca) {
+		Query q = currentSession().createSQLQuery("select {d.*} from Disposizioni_Bonifici d where iddistintabanca=" + idDistintaBanca)
+			.addEntity("d", DisposizioniBonifici.class);
+	
+		List<DisposizioniBonifici> res = q.list();
+		return res;
+	}
+
+	public Integer generaRichiamo(AppVariables appVariables, int idDistinta, int idDisposizione) throws SQLException {
+		boolean tx = startTransaction();
+		try {
+			Connection connection = getConnection();
+			CallableStatement proc = connection.prepareCall("{? = call spMI_RichiediRichiamoBonDom (?,?,?,?,?,?)}");
+				
+			proc.registerOutParameter(1, Types.VARCHAR);
+			proc.setString(2, appVariables.getUserId());
+			proc.setString(3, appVariables.getGuid());
+			proc.setObject(4, idDistinta);
+			proc.setObject(5, idDisposizione);
+			proc.setObject(6, appVariables.getUserId());
+			proc.setObject(7, appVariables.getDenominazioneUtente());
+			
+			proc.execute();
+			proc.getMoreResults();
+				
+			Integer ires = proc.getInt(1);
+			
+			if (ires==-1 || ires==-99) {
+				tx = false;
+				rollback();
+			}
+			
+			return ires;
+		} finally {
+			if (tx)
+				commit();
+		}
+		
+	}
+
+	public Boolean cancellazioneMassiva(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, UserData userdata, AppVariables appVariables) {
+		if (profiloUtente=="VI" || disposizioniFiltroBean.getSelectedIds()==null ||  disposizioniFiltroBean.getSelectedIds().length<1)
+			return false;
+		
+		boolean res = true;
+		List<DisposizioniBonifici> disposizioni = list(-1,-1,disposizioniFiltroBean, appVariables);
+		
+	
+		try {
+			for (int i=0;i<disposizioni.size();i++) {
+				// verifica se la disposizione è cancellabile
+				DisposizioniBonifici disposizione = disposizioni.get(i);
+				
+				if (disposizione.getStatoDisposizione().equalsIgnoreCase("Approvata")||
+					disposizione.getStatoDisposizione().equalsIgnoreCase("Confermata")||
+					disposizione.getStatoDisposizione().equalsIgnoreCase("Predisposta")) {
+	
+					// predisponi il log variazioni
+					LogVariazioniBean logModifiche = new LogVariazioniBean();
+					logModifiche.setFieldName("StatoDisposizione");
+						logModifiche.setOldValue(disposizione.getStatoDisposizione());
+						logModifiche.setNewValue("Cancellata");
+						logModifiche.setTimestamp(new Date());
+
+					List<LogVariazioniBean> listaVariazioni = new ArrayList<LogVariazioniBean>();
+					listaVariazioni.add(logModifiche);				
+				
+					disposizione.setStatoDisposizione("Cancellata");
+					boolean tx = startTransaction();	
+					int saveResult;
+
+					try {
+						saveResult = saveDisposizione(disposizione, userdata, appVariables, null);
+					} finally{
+						if (tx)
+							commit();
+					}
+					try {
+						if (saveResult==0)
+							logVariazioniDAO.saveAll(appVariables.getUserId(),appVariables.getDenominazioneUtente(), disposizione.getIddisposizione(),listaVariazioni);
+					}catch(Exception ex) {
+						// should never happen
+						ex.printStackTrace();
+					}
+					res = saveResult == 0;
+				} else
+					res = false;
+			}
+			
+		} finally {
+			
+		}
+		return res;
+	}
+
+		
+}

+ 1086 - 0
sicura.business/src/dao/DisposizioniRidDAO.java

@@ -0,0 +1,1086 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.ParameterMode;
+
+import org.hibernate.Criteria;
+import org.hibernate.Query;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.procedure.ProcedureCall;
+import org.hibernate.procedure.ProcedureOutputs;
+import org.hibernate.result.Output;
+import org.hibernate.result.Outputs;
+import org.hibernate.result.UpdateCountOutput;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import bean.LogModificheBean;
+import bean.LogVariazioniBean;
+import bean.filters.DisposizioniFiltroBean;
+import bean.filters.RicercaDisposizioniFilterBean;
+import bean.query.DisposizioniRidExportBean;
+import common.bean.UserData;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import common.utility.DateUtils;
+import common.utility.StringUtilities;
+import sicura.entities.DisposizioniRid;
+
+@Repository
+public class DisposizioniRidDAO extends GenericDAO<DisposizioniRid, Integer> implements IDAO<DisposizioniRid, Integer> {
+
+	
+	@Autowired
+	GenericComboDAO genericComboDAO;
+	@Autowired
+	LogVariazioniDAO logVariazioniDAO;
+	
+	public boolean cancellazioneMassiva(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, UserData userdata, AppVariables appVariables) {
+	
+		if (profiloUtente=="VI" || disposizioniFiltroBean.getSelectedIds()==null ||  disposizioniFiltroBean.getSelectedIds().length<1)
+			return false;
+		
+		boolean res = true;
+		List<DisposizioniRid> disposizioni = list(-1,-1,disposizioniFiltroBean, profiloUtente, appVariables, appVariables.getUserId());
+		
+	
+		try {
+			for (int i=0;i<disposizioni.size();i++) {
+				// verifica se la disposizione è cancellabile
+				DisposizioniRid disposizione = disposizioni.get(i);
+				
+				if (disposizione.getStatoDisposizione().equalsIgnoreCase("Approvata")||
+					disposizione.getStatoDisposizione().equalsIgnoreCase("Confermata")||
+					disposizione.getStatoDisposizione().equalsIgnoreCase("Predisposta")) {
+					
+					// predisponi il log variazioni
+					LogVariazioniBean logModifiche = new LogVariazioniBean();
+					logModifiche.setFieldName("StatoDisposizione");
+						logModifiche.setOldValue(disposizione.getStatoDisposizione());
+						logModifiche.setNewValue("Cancellata");
+						logModifiche.setTimestamp(new Date());
+
+					List<LogVariazioniBean> listaVariazioni = new ArrayList<LogVariazioniBean>();
+					listaVariazioni.add(logModifiche);				
+				
+					disposizione.setStatoDisposizione("Cancellata");
+				
+					int saveResult = saveDisposizione(disposizione, userdata, appVariables);
+					
+					try {
+						if (saveResult==0)
+							logVariazioniDAO.saveAll(appVariables.getUserId(),appVariables.getDenominazioneUtente(), disposizione.getIddisposizione(),listaVariazioni);
+					}catch(Exception ex) {
+						// should never happen
+						ex.printStackTrace();
+					}
+					return saveResult==0;
+				} else
+					res = false;
+			}
+			
+		} finally {
+			
+		}
+		return res;
+	}
+	
+	public Integer count(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID) {
+		boolean tx = startTransaction();
+		
+		try {
+			String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, true, false);
+			
+			Query q = currentSession().createSQLQuery(sql);
+			
+			if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0 && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", disposizioniFiltroBean.getSelectedIds());
+
+			Integer res = ((Integer) q.uniqueResult());
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public List<DisposizioniRid> filter(int startRecord, int length, String orderField, RicercaDisposizioniFilterBean filterBean, DisposizioniFiltroBean disposizioniFiltroBean){
+		boolean tx = startTransaction();
+
+		try{
+			String sql = "select disposizioni_rid.* from disposizioni_rid WITH (NOLOCK)"+
+						" LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = Disposizioni_RID.IDDistintaFlussoInput";
+			sql += " where isNull(DistintaFlussiInput.MassiveLoadStatus,3) = 3 ";//AND RegolarizzazioneSEPA=2";
+		
+			sql += addFiltersToQuery(filterBean);
+			if (disposizioniFiltroBean!=null)
+				sql += addFiltriDisposizione(disposizioniFiltroBean);
+
+			
+			if (orderField!=null)
+				sql += getSQLOrderBy(orderField);
+			else
+				sql += " order by id";
+			
+			
+			SQLQuery q=currentSession().createSQLQuery(sql);
+			q=setQueryParameters(q, filterBean);
+			q.addEntity(DisposizioniRid.class);
+			
+			if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0 && filterBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", filterBean.getSelectedIds());
+		
+			
+			if (startRecord>=0)
+				q.setFirstResult(startRecord);
+			if (length>0)
+				q.setMaxResults(length);
+
+			List<DisposizioniRid> res=null;
+			
+			try {
+				res = q.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+				return new ArrayList<DisposizioniRid>();
+			}
+				
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	
+	
+	public Integer countFilter(RicercaDisposizioniFilterBean filterBean, DisposizioniFiltroBean disposizioniFiltroBean) {
+		boolean tx = startTransaction();
+
+		try{
+			String sql = "select count(*) from disposizioni_rid WITH (NOLOCK)"+
+						" LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = Disposizioni_RID.IDDistintaFlussoInput";
+			sql += " where isNull(DistintaFlussiInput.MassiveLoadStatus,3) = 3 ";//AND RegolarizzazioneSEPA=2 ";
+		
+			sql += addFiltersToQuery(filterBean);
+			if (disposizioniFiltroBean!=null)
+				sql += addFiltriDisposizione(disposizioniFiltroBean);
+			
+			SQLQuery q=currentSession().createSQLQuery(sql);
+			q=setQueryParameters(q, filterBean);
+			
+			Integer res = (Integer) q.uniqueResult();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	private String addFiltersToQuery(RicercaDisposizioniFilterBean filterBean) {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+		String sql = "";
+		if (!StringUtilities.empty(filterBean.getFunzioneOrdinante()))
+			sql +=" and funzioneOrdinante=:funzioneOrdinante";
+
+		if (!StringUtilities.empty(filterBean.getStatoDisposizione()))
+			sql += " and statoDisposizione=:statoDisposizione";
+		
+		if (!StringUtilities.empty(filterBean.getProvenienza()))
+			sql += " and ProvenienzaDisposizione=:provenienza";
+		
+		if (!StringUtilities.empty(filterBean.getStatoConvalida()))
+			sql += " and StatoConvalida=:StatoConvalida";
+		
+		if (filterBean.getFlagDaDataInserimento() && DateUtils.isDate(filterBean.getDaDataInserimento()))
+			sql += " and DataInserimentoDisposizione>='" + sdf.format(filterBean.getDaDataInserimento())+" 00:00:00'"; //:DaDataInserimentoDisposizione";
+		
+		if (filterBean.getFlagADataInserimento() && DateUtils.isDate(filterBean.getaDataInserimento()))
+			sql += " and DataInserimentoDisposizione<='" + sdf.format(filterBean.getaDataInserimento())+" 23:59:59'"; //:ADataInserimentoDisposizione";
+		
+		if (!StringUtilities.empty(filterBean.getDaDistinta()))
+			sql += " and IDDistintaBanca>=:daDistintaBanca";
+		
+		if (!StringUtilities.empty(filterBean.getaDistinta()))
+			sql += " and IDDistintaBanca<=:aDistintaBanca";
+
+		if (!StringUtilities.empty(filterBean.getDestinatario()))
+			sql += " and DenominazioneDestinatario like :destinatario";
+
+		if (filterBean.getFlagDaValutaBeneficiario() && DateUtils.isDate(filterBean.getDaValutaBeneficiario()))
+			sql += " and Data_Valuta_Destinatario>='" + sdf.format(filterBean.getDaValutaBeneficiario())+" 00:00:00'"; //:DaDataValuta";
+		
+		if (filterBean.getFlagAValutaBeneficiario() && DateUtils.isDate(filterBean.getaValutaBeneficiario()))
+			sql += " and Data_Valuta_Destinatario<='" + sdf.format(filterBean.getaValutaBeneficiario())+" 23:59:59'"; //:aDataValuta";
+		
+		if(!StringUtilities.empty(filterBean.getDaImporto()))
+			sql += " and ImportoDBGrid>=:daImporto";
+		
+		if(!StringUtilities.empty(filterBean.getaImporto()))
+			sql += " and ImportoDBGrid<=:aImporto";
+		
+		if(!StringUtilities.empty(filterBean.getCodiceFiscale()))
+			sql += " and Codice_Fiscale_Destinatario like :codiceFiscale";
+		
+		if(!StringUtilities.empty(filterBean.getIdUnivoco()))
+			sql += " and IDDisposizione = :idUnivoco";
+		
+		if(!StringUtilities.empty(filterBean.getIdFunzione()))
+			sql += " and IDDisposizioneFunzioneOrdinante = :idFunzione";
+		
+		if(!StringUtilities.empty(filterBean.getNumeroPolizza()))
+			sql += " and NumeroPolizza = :numeroPolizza";
+		
+		if(!StringUtilities.empty(filterBean.getAbiOrdinante()))
+			sql += " and Codice_Abi_Ordinante = :abiOrdinante";
+		
+		if(!StringUtilities.empty(filterBean.getCabOrdinante()))
+			sql += " and Cab_Ordinante = :cabOrdinante";
+		
+		if(!StringUtilities.empty(filterBean.getContoOrdinante()))
+			sql += " and Conto_Ordinante = :contoOrdinante";
+		
+		if(!StringUtilities.empty(filterBean.getAbiDestinatario()))
+			sql += " and Codice_Abi_Destinatario = :abiDestinatario";
+		
+		if(!StringUtilities.empty(filterBean.getCabDestinatario()))
+			sql += " and Cab_Destinatario = :cabDestinatario";
+		
+		if(!StringUtilities.empty(filterBean.getContoDestinatario()))
+			sql += " and Conto_Destinatario = :contoDestinatario";
+		
+		if(!StringUtilities.empty(filterBean.getCodiceDestinatario()))
+			sql += " and CodiceClienteDebitore = :codiceDestinatario";
+		
+		if(!StringUtilities.empty(filterBean.getIdEndToEnd()))
+			sql += " and Identificativo_EndToEnd = :idEndToEnd";
+		
+		if (filterBean.getFlagDaDataRicezioneEsito() && DateUtils.isDate(filterBean.getDaDataRicezioneEsito()))
+			//sql += " and DataUltimoEsitoAcquisito>='" + sdf.format(filterBean.getDaDataRicezioneEsito())+" 00:00:00'"; //:DaDataRicezioneEsito";
+			sql += " and DataUltimoEsitoAcquisito>=:DaDataRicezioneEsito";
+		
+		if (filterBean.getFlagADataRicezioneEsito() && DateUtils.isDate(filterBean.getaDataRicezioneEsito()))
+			//sql += " and DataUltimoEsitoAcquisito<='" + sdf.format(filterBean.getaDataRicezioneEsito())+" 23:59:59'"; //:aDataRicezioneEsito";
+			sql += " and DataUltimoEsitoAcquisito<=:aDataRicezioneEsito";
+
+	
+		if(!StringUtilities.empty(filterBean.getEsitoDisposizione()))
+			if ("0".equals(filterBean.getEsitoDisposizione()))
+				sql += " and Esito is null";
+			else
+				sql += " and Esito = :esitoDisposizione";
+		
+		if(!StringUtilities.empty(filterBean.getCausaleStorno()))
+			sql += " and DescrizioneEsito like :causaleStorno";
+		
+		if(!StringUtilities.empty(filterBean.getNumeroAssegno()))
+			sql += " and NumeroAssegnoEmesso = :numeroAssegno";
+
+		if ("SDD Esteri".equalsIgnoreCase(filterBean.getTipoDisposizione()))
+			sql += " and regolarizzazioneSepa='3'";
+		
+		if (filterBean.getSelectedIds()!=null && filterBean.getSelectedIds().length>0 && filterBean.getSelectedIds()[0]!=-1)
+			sql += " and Disposizioni_RID.id in (:ids) ";
+
+		
+		return sql;
+		
+	}
+
+	private SQLQuery setQueryParameters(SQLQuery q, RicercaDisposizioniFilterBean filterBean) {
+			
+		if (!StringUtilities.empty(filterBean.getFunzioneOrdinante()))
+			q.setParameter("funzioneOrdinante", filterBean.getFunzioneOrdinante());
+
+		if (!StringUtilities.empty(filterBean.getStatoDisposizione()))
+			q.setParameter("statoDisposizione", filterBean.getStatoDisposizione());
+		
+		if (!StringUtilities.empty(filterBean.getProvenienza()))
+			q.setParameter("provenienza",filterBean.getProvenienza());
+		
+		if (!StringUtilities.empty(filterBean.getStatoConvalida()))
+			q.setParameter("StatoConvalida",filterBean.getStatoConvalida());
+		
+//		if (filterBean.getFlagDaDataInserimento() && DateUtils.isDate(filterBean.getDaDataInserimento()))
+//			q.setParameter("DaDataInserimentoDisposizione",startOfDay(filterBean.getDaDataInserimento()));
+//		
+//		if (filterBean.getFlagADataInserimento() && DateUtils.isDate(filterBean.getaDataInserimento()))
+//			q.setParameter("ADataInserimentoDisposizione",endOfDay(filterBean.getaDataInserimento()));
+		
+		if (!StringUtilities.empty(filterBean.getDaDistinta()))
+			q.setParameter("daDistintaBanca",filterBean.getDaDistinta());
+		
+		if (!StringUtilities.empty(filterBean.getaDistinta()))
+			q.setParameter("aDistintaBanca",filterBean.getaDistinta());
+
+		if (!StringUtilities.empty(filterBean.getDestinatario()))
+			q.setParameter("destinatario",filterBean.getDestinatario()+"%");
+
+//		if (filterBean.getFlagDaValutaBeneficiario() && DateUtils.isDate(filterBean.getDaValutaBeneficiario()))
+//			q.setParameter("DaDataValuta",startOfDay(filterBean.getDaValutaBeneficiario()));
+		
+//		if (filterBean.getFlagAValutaBeneficiario() && DateUtils.isDate(filterBean.getaValutaBeneficiario()))
+//			q.setParameter("aDataValuta",endOfDay(filterBean.getaValutaBeneficiario()));
+		
+		if(!StringUtilities.empty(filterBean.getDaImporto()))
+			q.setParameter("daImporto",filterBean.getDaImporto().replace(',', '.'));
+		
+		if(!StringUtilities.empty(filterBean.getaImporto()))
+			q.setParameter("aImporto",filterBean.getaImporto().replace(',', '.'));
+		
+		if(!StringUtilities.empty(filterBean.getCodiceFiscale()))
+			q.setParameter("codiceFiscale", filterBean.getCodiceFiscale()+"%");
+		
+		if(!StringUtilities.empty(filterBean.getIdUnivoco()))
+			q.setParameter("idUnivoco",filterBean.getIdUnivoco());
+		
+		if(!StringUtilities.empty(filterBean.getIdFunzione()))
+			q.setParameter("idFunzione",filterBean.getIdFunzione());
+		
+		if(!StringUtilities.empty(filterBean.getNumeroPolizza()))
+			q.setParameter("numeroPolizza",filterBean.getNumeroPolizza());
+		
+		if(!StringUtilities.empty(filterBean.getAbiOrdinante()))
+			q.setParameter("abiOrdinante",filterBean.getAbiOrdinante());
+		
+		if(!StringUtilities.empty(filterBean.getCabOrdinante()))
+			q.setParameter("cabOrdinante",filterBean.getCabOrdinante());
+		
+		if(!StringUtilities.empty(filterBean.getContoOrdinante()))
+			q.setParameter("contoOrdinante",filterBean.getContoOrdinante());
+//		String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, false, true);
+//		
+//		if (disposizioniFiltroBean.getOrderField()!=null && !"".equals(disposizioniFiltroBean.getOrderField()))
+//			sql += getSQLOrderBy(disposizioniFiltroBean.getOrderField());
+//		
+//		Query q = currentSession().createSQLQuery(sql)
+//				.setResultTransformer(new AliasToBeanResultTransformer(DisposizioniRidExportBean.class));
+//
+//		List<DisposizioniRid> disposizioni = q.list();
+////		
+
+		if(!StringUtilities.empty(filterBean.getAbiDestinatario()))
+			q.setParameter("abiDestinatario",filterBean.getAbiDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getCabDestinatario()))
+			q.setParameter("cabDestinatario",filterBean.getCabDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getContoDestinatario()))
+			q.setParameter("contoDestinatario",filterBean.getContoDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getCodiceDestinatario()))
+			q.setParameter("codiceDestinatario",filterBean.getCodiceDestinatario());
+		
+		if(!StringUtilities.empty(filterBean.getIdEndToEnd()))
+			q.setParameter("idEndToEnd",filterBean.getIdEndToEnd());
+		
+		if (filterBean.getFlagDaDataRicezioneEsito() && DateUtils.isDate(filterBean.getDaDataRicezioneEsito()))
+			q.setParameter("DaDataRicezioneEsito",startOfDay(filterBean.getDaDataRicezioneEsito()));
+		
+		if (filterBean.getFlagADataRicezioneEsito() && DateUtils.isDate(filterBean.getaDataRicezioneEsito()))
+			q.setParameter("aDataRicezioneEsito",endOfDay(filterBean.getaDataRicezioneEsito()));
+
+		if(!StringUtilities.empty(filterBean.getEsitoDisposizione()))
+			if (!"0".equals(filterBean.getEsitoDisposizione()))
+				q.setParameter("esitoDisposizione",filterBean.getEsitoDisposizione());
+		
+		if(!StringUtilities.empty(filterBean.getCausaleStorno()))
+			q.setParameter("causaleStorno","%"+filterBean.getCausaleStorno()+"%");
+		
+		if(!StringUtilities.empty(filterBean.getNumeroAssegno()))
+			q.setParameter("numeroAssegno",filterBean.getNumeroAssegno());
+
+		
+		return q;
+			
+	}
+	
+	public List<DisposizioniRid> list(int startRecord, int length, DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID)  {
+		boolean tx = startTransaction();
+		List<DisposizioniRid> res=null;
+		
+		try {
+			String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, false, false);
+			
+			if (disposizioniFiltroBean.getOrderField()!=null && !"".equals(disposizioniFiltroBean.getOrderField()))
+				sql += getSQLOrderBy(disposizioniFiltroBean.getOrderField());
+			
+			Query q = currentSession().createSQLQuery(sql)
+					.addEntity(DisposizioniRid.class);
+	
+			if (startRecord>0 || length>0)
+				q
+					.setFirstResult(startRecord)
+					.setMaxResults(length);
+	
+			if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0 && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+				q.setParameterList("ids", disposizioniFiltroBean.getSelectedIds());
+			
+			try {
+				res = q.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+			}
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+			
+		return res;
+	}
+	
+	public List<String> exportFiltered(RicercaDisposizioniFilterBean ricercaDisposizioniFilterBean, String otherCode,
+			AppVariables appVariables, String login) {
+	  
+	
+		List<DisposizioniRid> disposizioni = filter(-1,0,null,ricercaDisposizioniFilterBean,null);
+		boolean tx = startTransaction();
+		try {
+			List<String> res = generateCsv(disposizioni);
+			return res;
+		} finally {
+			if (tx)
+				commit();
+		}
+		
+	}
+	
+	public List<String> export(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID) {
+		
+		List<DisposizioniRid> disposizioni = list(-1,-1,disposizioniFiltroBean, profiloUtente, appVariables, userID);
+		
+		boolean tx = startTransaction();
+		
+		try {
+//			String sql = generateQuery(disposizioniFiltroBean, profiloUtente, appVariables, userID, false, true);
+//			
+//			if (disposizioniFiltroBean.getOrderField()!=null && !"".equals(disposizioniFiltroBean.getOrderField()))
+//				sql += getSQLOrderBy(disposizioniFiltroBean.getOrderField());
+//			
+//			Query q = currentSession().createSQLQuery(sql)
+//					.setResultTransformer(new AliasToBeanResultTransformer(DisposizioniRidExportBean.class));
+//	
+//			List<DisposizioniRid> disposizioni = q.list();
+//	//		
+			List<String> res = generateCsv(disposizioni);
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	private List<String> generateCsvBean(List<DisposizioniRidExportBean> disposizioni) {
+		List<String> res = new ArrayList<String>();
+		res.add("StatoConvalida;iddisposizione;DataInserimentoDisposizione;IDDisposizioneFunzioneOrdinante;Data_Valuta_Destinatario;Data_Decorrenza_Garanzia;" + 
+				"Tipo_Incasso_Rid;Importo;Descrizione_Disposizione;DenominazioneDestinatario;Codice_Abi_Destinatario;Cab_Destinatario;Banca_Sportello_Domic;" +
+				"Codice_Abi_Ordinante;Conto_Ordinante;IDDistintaBanca;DescrizioneEsito;CodiceStornoSEPA;CoordinateIBANbeneficiario;DataEsitoDisposizione;"+
+				"NomeSupportoFlussoInputCBI;MsgIdEsitoXML;");
+		
+		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HHmm:ss");
+		SimpleDateFormat sdfTime = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
+		
+		for(DisposizioniRidExportBean disposizione: disposizioni)
+			 res.add(""
+//				"\"" + safeString(disposizione.getStatoConvalida())+"\";" +
+//				"\"" + safeString(disposizione.getIddisposizione().toString())+"\";" +	
+//				"\"" + (disposizione.getDataInserimentoDisposizione()!=null?sdfTime.format(disposizione.getDataInserimentoDisposizione()):"")+"\";" +
+//				"\"" + safeString(disposizione.getIddisposizioneFunzioneOrdinante())+"\";" +
+//				"\"" + (disposizione.getDataValutaDestinatario()!=null? sdf.format(disposizione.getDataValutaDestinatario()):"")+"\";" +
+//				"\"" + (disposizione.getDataDecorrenzaGaranzia()!=null? sdf.format(disposizione.getDataDecorrenzaGaranzia()):"")+"\";" +
+//				"\"" + disposizione.getTipoIncassoRid() + "\";" +
+//				"\"" + safeString(disposizione.getImporto())+"\";" +
+//				"\"" + safeString(disposizione.getDescrizioneDisposizione())+"\";" +
+//				"\"" + safeString(disposizione.getDenominazioneDestinatario())+"\";" +
+//				"\"" + safeString(disposizione.getCodiceAbiDestinatario())+"\";" +
+//				"\"" + safeString(disposizione.getCabDestinatario())+"\";" +
+//				"\"" + safeString(disposizione.getBancaSportelloDomic())+"\";" +
+//				"\"" + safeString(disposizione.getCodiceAbiOrdinante())+"\";" +
+//				"\"" + safeString(disposizione.getContoOrdinante())+"\";" +
+//				"\"" + safeString(disposizione.getIddistintaBanca().toString())+"\";" +
+//				"\"" + safeString(disposizione.getDescrizioneEsito())+"\";" +
+//				"\"" + safeString( disposizione.getCodiceStornoSepa())+"\";" +
+//				"\"" + safeString(disposizione.getCoordinateIbanbeneficiario())+"\";" +
+//				"\"" + (disposizione.getDataEsitoDisposizione()!=null? sdf.format(disposizione.getDataEsitoDisposizione()):"")+"\";" +
+//				"\"" + safeString(disposizione.getNomeSupportoFlussoInputCbi())+"\";" +
+//				"\"" + safeString(disposizione.getMsgIdEsitoXml())+"\";"
+			);
+		return res;
+	}
+
+
+	private List<String> generateCsv(List<DisposizioniRid> disposizioni) {
+		List<String> res = new ArrayList<String>();
+		res.add("StatoConvalida;iddisposizione;DataInserimentoDisposizione;IDDisposizioneFunzioneOrdinante;Data_Valuta_Destinatario;Data_Decorrenza_Garanzia;" + 
+				"Tipo_Incasso_Rid;Importo;Descrizione_Disposizione;DenominazioneDestinatario;Codice_Abi_Destinatario;Cab_Destinatario;Banca_Sportello_Domic;" +
+				"Codice_Abi_Ordinante;Conto_Ordinante;IDDistintaBanca;DescrizioneEsito;CodiceStornoSEPA;CoordinateIBANbeneficiario;DataEsitoDisposizione;"+
+				"NomeSupportoFlussoInputCBI;MsgIdEsitoXML;DataRicezioneEsito;");
+		
+		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
+		SimpleDateFormat sdfTime = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
+		
+		for(DisposizioniRid disposizione: disposizioni)
+			 res.add(
+				"\"" + safeString(decodificaStato(disposizione.getStatoConvalida()))+"\";" +
+				"\"" + safeString(disposizione.getIddisposizione().toString())+"\";" +	
+				"\"" + (disposizione.getDataInserimentoDisposizione()!=null?sdfTime.format(disposizione.getDataInserimentoDisposizione()):"")+"\";" +
+				"\"" + safeString(disposizione.getIddisposizioneFunzioneOrdinante())+"\";" +
+				"\"" + (disposizione.getDataValutaDestinatario()!=null? sdf.format(disposizione.getDataValutaDestinatario()):"")+"\";" +
+				"\"" + (disposizione.getDataDecorrenzaGaranzia()!=null? sdf.format(disposizione.getDataDecorrenzaGaranzia()):"")+"\";" +
+				"\"" + decodeCombo("RID", "Tipo_Incasso_Rid", disposizione.getTipoIncassoRid()) + "\";" +
+				"\"" + safeString(disposizione.getImporto())+"\";" +
+				"\"" + safeString(disposizione.getDescrizioneDisposizione())+"\";" +
+				"\"" + safeString(disposizione.getDenominazioneDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getCodiceAbiDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getCabDestinatario())+"\";" +
+				"\"" + safeString(disposizione.getBancaSportelloDomic())+"\";" +
+				"\"" + safeString(disposizione.getCodiceAbiOrdinante())+"\";" +
+				"\"" + safeString(disposizione.getContoOrdinante())+"\";" +
+				"\"" + safeString((disposizione.getIddistintaBanca()!=null?disposizione.getIddistintaBanca().toString():""))+"\";" +
+				"\"" + safeString(disposizione.getDescrizioneEsito())+"\";" +
+				"\"" + safeString(decodeCombo("RID", "CodiceStornoSEPA", disposizione.getCodiceStornoSepa()))+"\";" +
+				"\"" + safeString(disposizione.getCoordinateIbanbeneficiario())+"\";" +
+				"\"" + (disposizione.getDataEsitoDisposizione()!=null? sdf.format(disposizione.getDataEsitoDisposizione()):"")+"\";" +
+				"\"" + safeString(disposizione.getNomeSupportoFlussoInputCbi())+"\";" +
+				"\"" + safeString(disposizione.getMsgIdEsitoXml())+"\";" +
+				"\"" + (disposizione.getDataUltimoEsitoAcquisito()!=null? sdf.format(disposizione.getDataUltimoEsitoAcquisito()):"")+"\";" 
+			);
+		return res;
+	}
+
+
+
+	private String decodeCombo(String tipologia, String campo, String codice) {
+		if (codice==null)
+			return "";
+		else
+			return genericComboDAO.getComboValue("Combo_Disposizioni",  tipologia, campo, codice);
+	}
+	
+
+	private String decodificaStato(Short statoConvalida) {
+		switch(statoConvalida) {
+		case -1: return "Corretta";
+		case 2: return "Warning";
+		default: return "Errata";
+		}
+	}
+
+	private String generateQuery(DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables, String userID, boolean doCount, boolean forCsvExport) {
+		
+		String sql = "select ";
+		if (forCsvExport) {
+			sql += "case when Disposizioni_RID.StatoConvalida=-1 then 'Corretta' when Disposizioni_RID.StatoConvalida=2 then 'Warning' else 'Errata' end as statoConvalida," + 
+					" iddisposizione, DataInserimentoDisposizione, IDDisposizioneFunzioneOrdinante, Data_Valuta_Destinatario,Data_Decorrenza_Garanzia,cd1.descrizione as tipoIncasso," + 
+					" importo, Descrizione_Disposizione, denominazioneDestinatario, Codice_Abi_Destinatario, Cab_Destinatario, Banca_Sportello_Domic, Codice_Abi_Ordinante, conto_ordinante," + 
+					" IDDistintaBanca, DescrizioneEsito, cd2.descrizione as codiceStornoSepa,CoordinateIBANbeneficiario,DataEsitoDisposizione,NomeSupportoFlussoInputCBI,MsgIdEsitoXML	";
+		} else {
+		sql += (doCount  
+				? "Count(*)"
+				: "Disposizioni_RID.* ");
+		}
+		sql += " from Disposizioni_RID WITH (NOLOCK)" ;
+		
+		if (forCsvExport) 
+			sql += " left join Combo_Disposizioni cd1 on cd1.tipologia='RID' and cd1.campo='Tipo_Incasso_Rid' and cd1.codice=Disposizioni_RID.tipo_incasso_rid" + 
+					" left join Combo_Disposizioni cd2 on cd2.tipologia='RID' and cd2.campo='CodiceStornoSEPA' and cd2.codice=Disposizioni_RID.CodiceStornoSEPA";
+
+		
+		
+		if ("ListaDisposizioni".equalsIgnoreCase(disposizioniFiltroBean.getTipoChiamata()) || 
+			"ListaDisposizioniDanni".equalsIgnoreCase(disposizioniFiltroBean.getTipoChiamata())||
+			"ListaDisposizioniEst".equalsIgnoreCase(disposizioniFiltroBean.getTipoChiamata())
+			) {
+			
+				sql+= " LEFT JOIN DistintaFlussiInput WITH (NOLOCK) ON DistintaFlussiInput.IDDistintaFlusso = Disposizioni_RID.IDDistintaFlussoInput where 1=1 ";
+			
+				if ("UO".equals(appVariables.getProfiloLocale())) {
+					sql += " and FunzioneOrdinante = :funzioneOrdinante";
+					sql += " AND (StatoDisposizione='Inserita' OR StatoDisposizione='Approvata' OR StatoDisposizione='Confermata')";
+					sql += " AND (ProvenienzaDisposizione='Manuale')";
+					sql += " AND (ISNULL(DistintaFlussiInput.MassiveLoadStatus,3) = 3)";
+				} else if ("UR".equals(appVariables.getProfiloLocale())) {
+					sql += addUserFilters(userID, appVariables.getGuid());
+		            sql += " AND (StatoDisposizione='Inserita' OR StatoDisposizione='Approvata' OR StatoDisposizione='Confermata')";
+		            sql += " AND (ProvenienzaDisposizione='Manuale')";
+		            sql += " AND (ISNULL(DistintaFlussiInput.MassiveLoadStatus,3) = 3)";
+		            sql += " ORDER BY Disposizioni_RID.ID";
+				} else if ("TO".equals(appVariables.getProfiloLocale()) || "TR".equals(appVariables.getProfiloLocale()) || "VI".equals(appVariables.getProfiloLocale())) {
+					sql +=  " and (StatoDisposizione='Approvata' OR StatoDisposizione='Confermata')";
+		            sql += " AND (ISNULL(DistintaFlussiInput.MassiveLoadStatus,3) = 3)";
+				}
+				
+			
+		} else if ("DistinteBanca".equalsIgnoreCase(disposizioniFiltroBean.getTipoChiamata())) {
+				sql += " where (StatoDisposizione='Predisposta' OR StatoDisposizione='Validata' OR StatoDisposizione='Disposta' OR StatoDisposizione='Inviata' OR StatoDisposizione='Scartata' OR StatoDisposizione='Esitata' OR StatoDisposizione='Cancellata')";
+				sql += " and IDDistintaBanca=" + disposizioniFiltroBean.getIdDistintaBanca();
+		} else if ("DistinteFlussiInput".equalsIgnoreCase(disposizioniFiltroBean.getTipoChiamata())) {
+			if ("UO".equals(appVariables.getProfiloLocale())||
+					"TR".equals(appVariables.getProfiloLocale())||
+					"VI".equals(appVariables.getProfiloLocale())||
+					"UR".equals(appVariables.getProfiloLocale())) {
+
+				sql += " where (StatoDisposizione='Approvata' OR StatoDisposizione='Confermata' OR StatoDisposizione='Predisposta' OR StatoDisposizione='Validata' OR StatoDisposizione='Scartata' OR StatoDisposizione='Disposta' OR StatoDisposizione='Inviata' OR StatoDisposizione='Esitata' OR StatoDisposizione='Cancellata') AND";
+				sql += " IDDistintaFlussoInput=" + disposizioniFiltroBean.getIdDistintaFlusso();
+			}
+		} else if ("FiltroDisposizioni".equalsIgnoreCase(disposizioniFiltroBean.getTipoChiamata())||
+				"FiltroDisposizioniReadOnly".equalsIgnoreCase(disposizioniFiltroBean.getTipoChiamata())||
+				disposizioniFiltroBean.getTipoChiamata()==null) {
+				
+				sql += " where 1=1 ";
+				
+		} else
+			sql += " where 1=1 ";
+
+		sql += addFiltriDisposizione(disposizioniFiltroBean);
+
+		if (disposizioniFiltroBean.getSelectedIds()!=null && disposizioniFiltroBean.getSelectedIds().length>0 && disposizioniFiltroBean.getSelectedIds()[0]!=-1)
+			sql += " and Disposizioni_RID.id in (:ids) ";
+		
+		return sql;
+		
+	}
+
+	private String addFiltriDisposizione(DisposizioniFiltroBean disposizioniFiltroBean) {
+		String sql = "";
+		if (disposizioniFiltroBean.getDestinatario()!=null && !"".equals(disposizioniFiltroBean.getDestinatario()))
+			sql += " and denominazioneDestinatario like '%" + disposizioniFiltroBean.getDestinatario() + "%'"; 
+		if (!"".equals(disposizioniFiltroBean.getStatoDisposizioni()))
+			sql += " and statoDisposizione = '" + disposizioniFiltroBean.getStatoDisposizioni() + "'";
+		if (!"".equals(disposizioniFiltroBean.getIdFunzioneOrdinante()))
+			sql += " and iddisposizioneFunzioneOrdinante =" + disposizioniFiltroBean.getIdFunzioneOrdinante();
+		String importo = toDouble(disposizioniFiltroBean.getImporto());
+		if (!"0".equals(importo))
+			sql += " and importodbgrid=" + importo.replace(',','.');
+		if (!"".equals(disposizioniFiltroBean.getStatoConvalida()))
+			 sql += " and statoConvalida='" +disposizioniFiltroBean.getStatoConvalida() + "'";
+
+		
+		if (disposizioniFiltroBean.getInErrore()) {
+			sql += " and StatoConvalida<>-1";
+		}
+		
+		if ("ListaDisposizioniEst".equals(disposizioniFiltroBean.getTipoChiamata()))
+			sql += " and regolarizzazioneSepa='3'";
+		
+		if (!StringUtilities.empty(disposizioniFiltroBean.getCodiceClienteDebitore()))
+			sql += " and codiceClienteDebitore='" + disposizioniFiltroBean.getCodiceClienteDebitore()+"' ";
+		return sql;
+	}
+	
+	@SuppressWarnings("rawtypes")
+	private String addUserFilters(String userID, String guid) {
+		Query q = currentSession().createSQLQuery("EXEC spSecurityUtenteFunzioni :userid, :guid");
+		q
+			.setParameter("userid", userID)
+			.setParameter("guid", guid)
+		 	.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);		
+		
+		List res = q.list();
+		
+		String filters="";
+		
+		if (res.size()>0) {
+			filters += "(FunzioneOrdinante='"+((Map)res.get(0)).get("FunzioneOrdinante")+"'";
+			for (int i=1;i<res.size();i++) {
+				
+				Map row = (Map) res.get(i);
+				filters += " OR (FunzioneOrdinante=" + row.get("FunzioneOrdinante") + "'";						
+				
+			}
+			filters += ")";
+		}
+		
+		return filters;
+		
+	
+	}
+
+	private Criteria addFilters(Criteria crit, DisposizioniFiltroBean disposizioniFiltroBean, String profiloUtente, AppVariables appVariables) {
+		
+		
+		if (!"".equals(disposizioniFiltroBean.getDestinatario()))
+			crit.add(Restrictions.ilike("denominazioneDestinatario", "%" + disposizioniFiltroBean.getDestinatario() + "%"));
+		if (!"".equals(disposizioniFiltroBean.getStatoDisposizioni()))
+			crit.add(Restrictions.eq("statoDisposizione", disposizioniFiltroBean.getStatoDisposizioni()));
+		if (!"".equals(disposizioniFiltroBean.getIdFunzioneOrdinante()))
+			crit.add(Restrictions.eq("iddisposizioneFunzioneOrdinante", disposizioniFiltroBean.getIdFunzioneOrdinante()));
+		String importo = toDouble(disposizioniFiltroBean.getImporto());
+		if (!"0".equals(importo))
+			crit.add(Restrictions.eq("importo",importo));
+		if (!"".equals(disposizioniFiltroBean.getStatoConvalida()))
+			crit.add(Restrictions.eq("statoConvalida", disposizioniFiltroBean.getStatoConvalida()));
+		
+		
+		
+		return crit;				
+	}
+	
+	public String toDouble(String importo) {
+		DecimalFormat df = new DecimalFormat("#.00"); 
+		try {
+			Double dbl = Double.parseDouble(importo.replace(",", "."));
+			String res = df.format(dbl);
+			return res.replace(".", ",");
+		} catch (Exception ex) {
+			return "0";
+		}
+	}
+
+
+	public List<LogModificheBean> logStati(Integer id) {
+		boolean tx = startTransaction();
+		
+		try{
+			String sql = "select id, userId, data, ora, utente, nomeCampo, cast(campoPreModifica as nvarchar(255)) campoPreModifica, cast(campoPostModifica as nvarchar(255)) as campoPostModifica " +
+						" from LogModificheDisposizioni where iddisposizione=:id and NomeCampo='StatoDisposizione'"+
+						" order by Data, Ora, id";
+					
+			Query q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(LogModificheBean.class));
+			
+			q.setParameter("id", id);	
+			@SuppressWarnings("unchecked")
+			List<LogModificheBean> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	public List<LogModificheBean> logVariazioni(Integer id) {
+		boolean tx = startTransaction();
+		try {
+			String sql = "select id, userId, data, ora, utente, nomeCampo, cast(campoPreModifica as varchar(255)) campoPreModifica, cast(campoPostModifica as varchar(255)) as campoPostModifica " +
+						" from LogModificheDisposizioni where iddisposizione=:id and NomeCampo<>'StatoDisposizione'"+
+						" order by Data, Ora, id";
+					
+			Query q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(LogModificheBean.class));
+			
+			q.setParameter("id", id);	
+			@SuppressWarnings("unchecked")
+			List<LogModificheBean> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+		
+
+	public int saveDisposizione(DisposizioniRid disposizioneRid, UserData userdata, AppVariables appVariables) {
+		
+		boolean tx = startTransaction();
+		Integer res=1;
+		try {
+			ProcedureCall call = currentSession().createStoredProcedureCall("spModifyDisposizioni_RID");
+			
+	
+			call.registerParameter("Result",  Integer.class, ParameterMode.OUT);
+	
+			
+			call.registerParameter("SecurityUserId", String.class, ParameterMode.IN).bindValue(appVariables.getUserId().trim());
+			call.registerParameter("SecurityGuid", String.class, ParameterMode.IN).bindValue(appVariables.getGuid());
+			call.registerParameter("ID", Integer.class, ParameterMode.IN).bindValue(disposizioneRid.getId());
+			call.registerParameter("IDDisposizione", Integer.class, ParameterMode.IN).bindValue(disposizioneRid.getIddisposizione());
+			call.registerParameter("IDDistintaBanca", Integer.class, ParameterMode.IN).bindValue(disposizioneRid.getIddistintaBanca());
+			call.registerParameter("FlagIDDistintaBanca", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.getFlagIddistintaBanca());
+			call.registerParameter("IDOrdinante", Integer.class, ParameterMode.IN).bindValue(disposizioneRid.getIdordinante());
+			call.registerParameter("IDDestinatario", Integer.class, ParameterMode.IN).bindValue(disposizioneRid.getIddestinatario());
+			call.registerParameter("IDDistintaFlussoInput", Integer.class, ParameterMode.IN).bindValue(disposizioneRid.getIddistintaFlussoInput());
+			call.registerParameter("NumeroDisposizioneDistinta", Integer.class, ParameterMode.IN).bindValue(disposizioneRid.getNumeroDisposizioneDistinta());
+			call.registerParameter("Causale", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCausale());
+			call.registerParameter("FlagCausale", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCausale());
+			call.registerParameter("Codice_Abi_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceAbiOrdinante());
+			call.registerParameter("FlagCodice_Abi_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceAbiOrdinante());
+			call.registerParameter("Cab_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCabOrdinante());
+			call.registerParameter("FlagCab_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCabOrdinante());
+			call.registerParameter("Conto_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getContoOrdinante());
+			call.registerParameter("FlagConto_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagContoOrdinante());
+			call.registerParameter("Codice_Abi_Destinatario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceAbiDestinatario());
+			call.registerParameter("FlagCodice_Abi_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceAbiDestinatario());
+			call.registerParameter("Cab_Destinatario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCabDestinatario());
+			call.registerParameter("FlagCab_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCabDestinatario());
+			call.registerParameter("Conto_Destinatario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getContoDestinatario());
+			call.registerParameter("FlagConto_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagContoDestinatario());
+			call.registerParameter("StatoConvalida", Short.class, ParameterMode.IN).bindValue(disposizioneRid.getStatoConvalida());
+			call.registerParameter("Banca_Sportello_Domic", String.class, ParameterMode.IN).bindValue(disposizioneRid.getBancaSportelloDomic());
+			call.registerParameter("FlagBanca_Sportello_Domic", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagBancaSportelloDomic());
+			call.registerParameter("Cin", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCin());
+			
+			call.registerParameter("FlagCin", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCin());
+			call.registerParameter("Codice_Sia_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceSiaOrdinante());
+			call.registerParameter("FlagCodice_Sia_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceSiaOrdinante());
+			call.registerParameter("TipoCodice", String.class, ParameterMode.IN).bindValue(disposizioneRid.getTipoCodice());
+			call.registerParameter("FlagTipoCodice", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagTipoCodice());
+			call.registerParameter("Indirizzo_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getIndirizzoOrdinante());
+			call.registerParameter("FlagIndirizzo_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagIndirizzoOrdinante());
+			call.registerParameter("Località_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getLocalitaOrdinante());
+			call.registerParameter("FlagLocalità_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagLocalitaOrdinante());
+			call.registerParameter("Codice_Fiscale_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceFiscaleOrdinante());
+			call.registerParameter("FlagCodice_Fiscale_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceFiscaleOrdinante());
+			call.registerParameter("DenominazioneDestinatario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getDenominazioneDestinatario());
+			call.registerParameter("FlagDenominazioneDestinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDenominazioneDestinatario());
+			call.registerParameter("Codice_Fiscale_Destinatario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceFiscaleDestinatario());
+			call.registerParameter("FlagCodice_Fiscale_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceFiscaleDestinatario());
+			call.registerParameter("Indirizzo_Destinatario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getIndirizzoDestinatario());
+			call.registerParameter("FlagIndirizzo_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagIndirizzoDestinatario());
+			call.registerParameter("Cap_Destinatario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCapDestinatario());
+			call.registerParameter("FlagCap_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCapDestinatario());
+			call.registerParameter("Città_Destinatario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCittaDestinatario());
+			call.registerParameter("FlagCittà_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCittaDestinatario());
+			call.registerParameter("Provincia_Destinatario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getProvinciaDestinatario());
+			call.registerParameter("FlagProvincia_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagProvinciaDestinatario());
+			call.registerParameter("CodiceClienteDebitore", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceClienteDebitore());
+			call.registerParameter("FlagCodiceClienteDebitore", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceClienteDebitore());
+			call.registerParameter("Azienda_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getAziendaOrdinante());
+			call.registerParameter("FlagAzienda_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagAziendaOrdinante());
+			call.registerParameter("ErroriCampiObbligatori", Short.class, ParameterMode.IN).bindValue(disposizioneRid.getErroriCampiObbligatori());
+			call.registerParameter("ErroriCongruenza", Short.class, ParameterMode.IN).bindValue(disposizioneRid.getErroriCongruenza());
+			call.registerParameter("ErroriCampiData", Short.class, ParameterMode.IN).bindValue(disposizioneRid.getErroriCampiData());
+			call.registerParameter("ErroriPiazzatura", Short.class, ParameterMode.IN).bindValue(disposizioneRid.getErroriPiazzatura());
+			call.registerParameter("FlagStampa", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagStampa());
+			call.registerParameter("CoordinateIBANordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCoordinateIbanordinante());
+			call.registerParameter("FlagCoordinateIBANordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCoordinateIbanordinante());
+			call.registerParameter("CoordinateIBANbeneficiario", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCoordinateIbanbeneficiario());
+			call.registerParameter("FlagCoordinateIBANbeneficiario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCoordinateIbanbeneficiario());
+			call.registerParameter("DescrizioneConto", String.class, ParameterMode.IN).bindValue(disposizioneRid.getDescrizioneConto());
+			call.registerParameter("FlagDescrizioneConto", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDescrizioneConto());
+			call.registerParameter("Esito", String.class, ParameterMode.IN).bindValue(disposizioneRid.getEsito());
+			call.registerParameter("FlagEsito", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagEsito());
+			call.registerParameter("TipoCodiceRiferimento", String.class, ParameterMode.IN).bindValue(disposizioneRid.getTipoCodiceRiferimento());
+			call.registerParameter("FlagTipoCodiceRiferimento", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagTipoCodiceRiferimento());
+			call.registerParameter("DescrizioneEsito", String.class, ParameterMode.IN).bindValue(disposizioneRid.getDescrizioneEsito());
+			call.registerParameter("FlagDescrizioneEsito", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDescrizioneEsito());
+	
+	
+			call.registerParameter("TipoAnomalia", String.class, ParameterMode.IN).bindValue(disposizioneRid.getTipoAnomalia());
+			call.registerParameter("FlagTipoAnomalia", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagTipoAnomalia());
+			call.registerParameter("ValutaOrdinante", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getValutaOrdinante());
+			call.registerParameter("FlagValutaOrdinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagValutaOrdinante());
+			call.registerParameter("ValutaBeneficiario", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getValutaBeneficiario());
+			call.registerParameter("FlagValutaBeneficiario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagValutaBeneficiario());
+			call.registerParameter("DataOrdine", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataOrdine());
+			call.registerParameter("FlagDataOrdine", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataOrdine());
+	
+			call.registerParameter("DataContabileAddebito", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataContabileAddebito());
+			call.registerParameter("FlagDataContabileAddebito", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataContabileAddebito());
+			call.registerParameter("DataEsecuzione", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataEsecuzione());
+			call.registerParameter("FlagDataEsecuzione", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataEsecuzione());
+			
+			call.registerParameter("ImportoCommissioni", String.class, ParameterMode.IN).bindValue(disposizioneRid.getImportoCommissioni());
+			call.registerParameter("FlagImportoCommissioni", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagImportoCommissioni());
+			call.registerParameter("ImportoSpese", String.class, ParameterMode.IN).bindValue(disposizioneRid.getImportoSpese());
+			call.registerParameter("FlagImportoSpese", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagImportoSpese());
+			
+			call.registerParameter("ImportoPenali", String.class, ParameterMode.IN).bindValue(disposizioneRid.getImportoPenali());
+			call.registerParameter("FlagImportoPenali", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagImportoPenali());
+			call.registerParameter("NumeroAssegnoEmesso", String.class, ParameterMode.IN).bindValue(disposizioneRid.getNumeroAssegnoEmesso());
+			call.registerParameter("FlagNumeroAssegnoEmesso", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagNumeroAssegnoEmesso());
+			call.registerParameter("UserID", String.class, ParameterMode.IN).bindValue(disposizioneRid.getUserId());
+			call.registerParameter("ProvenienzaDisposizione", String.class, ParameterMode.IN).bindValue(disposizioneRid.getProvenienzaDisposizione());
+			call.registerParameter("TipoFlussoInput", String.class, ParameterMode.IN).bindValue(disposizioneRid.getTipoFlussoInput());
+			call.registerParameter("IDDisposizioneFunzioneOrdinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getIddisposizioneFunzioneOrdinante());
+			call.registerParameter("DataInserimentoDisposizione", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataInserimentoDisposizione());
+			
+			call.registerParameter("DataFlussoDisposizione", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataFlussoDisposizione());
+			call.registerParameter("DataEsitoDisposizione", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataEsitoDisposizione());
+			call.registerParameter("FlagDataEsitoDisposizione", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataEsitoDisposizione());
+			call.registerParameter("StatoDisposizione", String.class, ParameterMode.IN).bindValue(disposizioneRid.getStatoDisposizione());
+			call.registerParameter("FlagStatoDisposizione", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagStatoDisposizione());
+			call.registerParameter("CodiceSocietà", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceSocieta());
+			call.registerParameter("FlagCodiceSocietà", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceSocieta());
+			call.registerParameter("FunzioneOrdinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getFunzioneOrdinante());
+			call.registerParameter("FlagFunzioneOrdinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagFunzioneOrdinante());
+			call.registerParameter("ContabilizzazioneMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isContabilizzazioneMovimento());
+			call.registerParameter("FlagContabilizzazioneMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagContabilizzazioneMovimento());
+			call.registerParameter("ForzaStatoAR", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isForzaStatoAr());
+			
+			call.registerParameter("LastSaved", byte[].class, ParameterMode.IN).bindValue(disposizioneRid.getLastSaved());
+			
+			call.registerParameter("Divisa_Conto_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getDivisaContoOrdinante());
+			call.registerParameter("FlagDivisa_Conto_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.getFlagDivisaContoOrdinante());
+			call.registerParameter("NoteFunzioneOrdinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getNoteFunzioneOrdinante());
+			call.registerParameter("FlagNoteFunzioneOrdinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagNoteFunzioneOrdinante());
+			call.registerParameter("NoteTesoreria", String.class, ParameterMode.IN).bindValue(disposizioneRid.getNoteTesoreria());
+			call.registerParameter("FlagNoteTesoreria", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagNoteTesoreria());
+			call.registerParameter("CodicePaese", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodicePaese());
+			call.registerParameter("FlagCodicePaese", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodicePaese());
+			call.registerParameter("CheckDigit", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCheckDigit());
+			call.registerParameter("FlagCheckDigit", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCheckDigit());
+			call.registerParameter("FacoltàStorno", String.class, ParameterMode.IN).bindValue(disposizioneRid.getFacoltaStorno());
+			call.registerParameter("FlagFacoltàStorno", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagFacoltaStorno());
+			call.registerParameter("StatoAllineamento", String.class, ParameterMode.IN).bindValue(disposizioneRid.getStatoAllineamento());
+			call.registerParameter("FlagStatoAllineamento", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagStatoAllineamento());
+			call.registerParameter("DataCreazioneFlussoOriginario", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataCreazioneFlussoOriginario());
+			call.registerParameter("DataUltimoEsitoAcquisito", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataUltimoEsitoAcquisito());
+			call.registerParameter("FlagDataUltimoEsitoAcquisito", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataUltimoEsitoAcquisito());
+			call.registerParameter("CodiceRiferimento", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceRiferimento());
+			call.registerParameter("FlagCodiceRiferimento", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceRiferimento());
+			call.registerParameter("Data_Valuta_Destinatario", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataValutaDestinatario());
+			call.registerParameter("FlagData_Valuta_Destinatario", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataValutaDestinatario());
+			call.registerParameter("Data_Limite_Pagamento", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataLimitePagamento());
+			call.registerParameter("FlagData_Limite_Pagamento", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataLimitePagamento());
+			call.registerParameter("Data_Decorrenza_Garanzia", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataDecorrenzaGaranzia());
+			call.registerParameter("FlagData_Decorrenza_Garanzia", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataDecorrenzaGaranzia());
+			
+			call.registerParameter("Tipo_Incasso_Rid", String.class, ParameterMode.IN).bindValue(disposizioneRid.getTipoIncassoRid());
+			call.registerParameter("FlagTipo_Incasso_Rid", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagTipoIncassoRid());
+			call.registerParameter("Descrizione_Disposizione", String.class, ParameterMode.IN).bindValue(disposizioneRid.getDescrizioneDisposizione());
+			call.registerParameter("FlagDescrizione_Disposizione", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDescrizioneDisposizione());
+			call.registerParameter("TrasferimentoPosizione", String.class, ParameterMode.IN).bindValue(disposizioneRid.getTrasferimentoPosizione());
+			call.registerParameter("FlagTrasferimentoPosizione", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagTrasferimentoPosizione());
+			call.registerParameter("Importo", String.class, ParameterMode.IN).bindValue(disposizioneRid.getImporto());
+			call.registerParameter("FlagImporto", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagImporto());
+			call.registerParameter("ImportoDBGrid", Double.class, ParameterMode.IN).bindValue(disposizioneRid.getImportoDbgrid());
+			
+			call.registerParameter("CausaleStorno", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCausaleStorno());
+			call.registerParameter("FlagCausaleStorno", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCausaleStorno());
+			call.registerParameter("FacoltàStornoEsito", String.class, ParameterMode.IN).bindValue(disposizioneRid.getFacoltaStornoEsito());
+			call.registerParameter("FlagFacoltàStornoEsito", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagFacoltaStornoEsito());
+			call.registerParameter("NumeroPolizza", String.class, ParameterMode.IN).bindValue(disposizioneRid.getNumeroPolizza());
+			call.registerParameter("FlagNumeroPolizza", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagNumeroPolizza());
+			
+			call.registerParameter("NoTabellaContabilizzazione", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isNoTabellaContabilizzazione());
+			call.registerParameter("FlagNoTabellaContabilizzazione", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagNoTabellaContabilizzazione());
+			call.registerParameter("ContoPerCassa", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isContoPerCassa());
+			call.registerParameter("FlagContoPerCassa", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagContoPerCassa());
+			
+			call.registerParameter("ClassificazioneConto", String.class, ParameterMode.IN).bindValue(disposizioneRid.getClassificazioneConto());
+			call.registerParameter("FlagClassificazioneConto", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagClassificazioneConto());
+			call.registerParameter("TipoSequenza", String.class, ParameterMode.IN).bindValue(disposizioneRid.getTipoSequenza());
+			call.registerParameter("FlagTipoSequenza", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagTipoSequenza());
+			call.registerParameter("Data_Sottoscrizione_Mandato", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataSottoscrizioneMandato());
+			call.registerParameter("FlagData_Sottoscrizione_Mandato", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataSottoscrizioneMandato());
+			
+			call.registerParameter("RegolarizzazioneSEPA", String.class, ParameterMode.IN).bindValue(disposizioneRid.getRegolarizzazioneSepa());
+			call.registerParameter("FlagRegolarizzazioneSEPA", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagRegolarizzazioneSepa());
+			call.registerParameter("Identificativo_Creditore", String.class, ParameterMode.IN).bindValue(disposizioneRid.getIdentificativoCreditore());
+			call.registerParameter("FlagIdentificativo_Creditore", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagIdentificativoCreditore());
+			call.registerParameter("Identificativo_EndToEnd", String.class, ParameterMode.IN).bindValue(disposizioneRid.getIdentificativoEndToEnd());
+			call.registerParameter("FlagIdentificativo_EndToEnd", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagIdentificativoEndToEnd());
+			
+			call.registerParameter("Data_Scadenza_Originaria", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataScadenzaOriginaria());
+			call.registerParameter("FlagData_Scadenza_Originaria", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataScadenzaOriginaria());
+			call.registerParameter("Identificativo_Mandato", String.class, ParameterMode.IN).bindValue(disposizioneRid.getIdentificativoMandato());
+			call.registerParameter("FlagIdentificativo_Mandato", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagIdentificativoMandato());
+			call.registerParameter("CausaleMovimento", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCausaleMovimento());
+			call.registerParameter("FlagCausaleMovimento", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCausaleMovimento());
+			
+			call.registerParameter("RamoMinisteriale", String.class, ParameterMode.IN).bindValue(disposizioneRid.getRamoMinisteriale());
+			call.registerParameter("FlagRamoMinisteriale", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagRamoMinisteriale());
+			call.registerParameter("DebitoreEffettivo", String.class, ParameterMode.IN).bindValue(disposizioneRid.getDebitoreEffettivo());
+			call.registerParameter("FlagDebitoreEffettivo", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDebitoreEffettivo());
+			call.registerParameter("Codice_CUC_Ordinante", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceCucOrdinante());
+			call.registerParameter("FlagCodice_CUC_Ordinante", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceCucOrdinante());
+			
+			call.registerParameter("CodiceStornoCBI", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceStornoCbi());
+			call.registerParameter("FlagCodiceStornoCBI", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceStornoCbi());
+			call.registerParameter("CodiceStornoSEPA", String.class, ParameterMode.IN).bindValue(disposizioneRid.getCodiceStornoSepa());
+			call.registerParameter("FlagCodiceStornoSEPA", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagCodiceStornoSepa());
+			call.registerParameter("InformazioniAggiuntiveStorno", String.class, ParameterMode.IN).bindValue(disposizioneRid.getInformazioniAggiuntiveStorno());
+			call.registerParameter("FlagInformazioniAggiuntiveStorno", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagInformazioniAggiuntiveStorno());
+			
+			call.registerParameter("TagXmlErrato", String.class, ParameterMode.IN).bindValue(disposizioneRid.getTagXmlErrato());
+			call.registerParameter("FlagTagXmlErrato", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagTagXmlErrato());
+			call.registerParameter("StatoDisposizioneNasDanni", String.class, ParameterMode.IN).bindValue(disposizioneRid.getStatoDisposizioneNasDanni());
+			call.registerParameter("FlagStatoDisposizioneNasDanni", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagStatoDisposizioneNasDanni());
+			call.registerParameter("DataCambioStatoDisposizioneNasDanni", Date.class, ParameterMode.IN).bindValue(disposizioneRid.getDataCambioStatoDisposizioneNasDanni());
+			call.registerParameter("FlagDataCambioStatoDisposizioneNasDanni", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagDataCambioStatoDisposizioneNasDanni());
+			
+			call.registerParameter("NomeSupportoFlussoInputCBI", String.class, ParameterMode.IN).bindValue(disposizioneRid.getNomeSupportoFlussoInputCbi());
+			call.registerParameter("FlagNomeSupportoFlussoInputCBI", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagNomeSupportoFlussoInputCbi());
+			call.registerParameter("BIC_Creditore", String.class, ParameterMode.IN).bindValue(disposizioneRid.getBicCreditore());
+			call.registerParameter("FlagBIC_Creditore", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagBicCreditore());
+			call.registerParameter("MsgIdEsitoXML", String.class, ParameterMode.IN).bindValue(disposizioneRid.getMsgIdEsitoXml());
+			call.registerParameter("FlagMsgIdEsitoXML", Boolean.class, ParameterMode.IN).bindValue(disposizioneRid.isFlagMsgIdEsitoXml());
+			call.registerParameter("DisposizioneGuid", String.class, ParameterMode.IN).bindValue(disposizioneRid.getDisposizioneGuid());
+			
+			
+			
+			//int rows = call.executeUpdate();
+			
+			//Outputs outputs = call.getOutputs();
+			
+			try {	
+				Integer result = (Integer)call.getOutputs().getOutputParameterValue("Result");
+				
+				if (result==1)
+					res = 0;
+				
+				
+				//UpdateCountOutput output = (UpdateCountOutput) outputs.getCurrent();
+			
+			//	if (output.getUpdateCount()>0)
+			//		res = 0;
+			//	else
+			//		res = 1;
+			} catch (Exception ex) {
+				res = 4;
+			}
+			
+			 if (disposizioneRid.getIddistintaBanca()!=null && disposizioneRid.getIddistintaBanca()!=0) {
+				 	Connection connection = getConnection();
+					CallableStatement proc;
+					try {
+						proc = connection.prepareCall("{? = call spRecalcDistinta (?,?,?)}");
+							
+						proc.registerOutParameter(1, Types.VARCHAR);
+						proc.setString(2, appVariables.getUserId());
+						proc.setString(3, appVariables.getGuid());
+						proc.setObject(4, disposizioneRid.getIddistintaBanca());
+						
+						proc.execute();
+						proc.getMoreResults();
+							
+						proc.getInt(1);
+							
+					} catch (SQLException e) {
+						// TODO Auto-generated catch block
+						e.printStackTrace();
+						return -1;
+					}
+			 }
+			 
+			 
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+		
+	}
+
+	public List<DisposizioniRid> listByDistintaBancaNoTransaction(Integer idDistintaBanca) {
+		Query q = currentSession().createSQLQuery("select {d.*} from Disposizioni_Rid d where iddistintabanca=" + idDistintaBanca)
+				.addEntity("d", DisposizioniRid.class);
+		
+		List<DisposizioniRid> res = q.list();
+		return res;
+	}
+
+
+	
+	
+
+}

+ 1280 - 0
sicura.business/src/dao/DistintaBancaDAO.java

@@ -0,0 +1,1280 @@
+package dao;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.math.BigDecimal;
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.ParameterMode;
+
+import org.hibernate.Criteria;
+import org.hibernate.Query;
+import org.hibernate.SQLQuery;
+import org.hibernate.Session;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
+import org.hibernate.engine.spi.SessionFactoryImplementor;
+import org.hibernate.jdbc.ReturningWork;
+import org.hibernate.jdbc.Work;
+import org.hibernate.procedure.ProcedureCall;
+import org.hibernate.result.Output;
+import org.hibernate.result.Outputs;
+import org.hibernate.result.ResultSetOutput;
+import org.hibernate.result.UpdateCountOutput;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.hibernate.transform.Transformers;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.CallableStatementCreator;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.SqlParameter;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.MultiValueMap;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import bean.AnnullaDistintaBean;
+import bean.AppVariables;
+import bean.LogModificheBean;
+import bean.ModificaContoDistintaBean;
+import bean.ModificaDataDisposizioneBean;
+import bean.StoredProcResult;
+import bean.filters.DistinteFilterBean;
+import bean.query.DistintaBancaBean;
+import common.bean.UserData;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import common.utility.DateUtils;
+import common.utility.StringUtilities;
+import sicura.entities.DisposizioniAea;
+import sicura.entities.DisposizioniBonifici;
+import sicura.entities.DisposizioniRid;
+import sicura.entities.DistintaBanca;
+import utils.ConvalidaClass;
+import utils.DettaglioErrori;
+
+@Repository
+public class DistintaBancaDAO extends GenericDAO<DistintaBanca, Integer> implements IDAO<DistintaBanca, Integer> {
+
+//	@Autowired
+//	private JdbcTemplate jdbcTemplate;
+//	
+	@Autowired
+	DisposizioneAeaDAO disposizioniAeaDAO;
+
+	@Autowired
+	DisposizioniRidDAO disposizioniRidDAO;
+	
+	@Autowired
+	DisposizioniBonificiDAO disposizioniBonificiDAO;
+
+	@Autowired
+	ConvalidaClass convalidaClass;
+	
+	private enum StatiValidazione {OK, OtherError, ErrorConflict, RecordDeleted, NoMoreItems}
+	
+	public List<DistintaBancaBean> getDistinteBanca(AppVariables appVariables, DistinteFilterBean filterBean, Integer startFrom, Integer length) {
+		return getDistinteBanca(appVariables, filterBean, startFrom, length, false);
+	}
+		
+	public DistintaBanca getByIdDistintaBanca(Integer idDistintaBanca) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(DistintaBanca.class).add(Restrictions.eq("iddistintaBanca", idDistintaBanca));
+			
+			List<DistintaBanca> res = crit.list();
+	
+			if (res.size()>0)
+				return res.get(0);
+			else
+				return null;
+		} finally {
+			if (tx)
+				commit();
+			
+		}
+	}
+	
+	public DistintaBanca getByIdDistintaBancaNoTransaction(Integer idDistintaBanca) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(DistintaBanca.class).add(Restrictions.eq("iddistintaBanca", idDistintaBanca));
+			
+			List<DistintaBanca> res = crit.list();
+	
+			if (res.size()>0)
+				return res.get(0);
+			else
+				return null;
+		} finally {
+			if (tx)
+				commit();
+			
+		}
+	}
+
+	public List<DistintaBancaBean> getDistinteBanca(AppVariables appVariables, DistinteFilterBean filterBean, Integer startFrom, Integer length, boolean daEsportare) {
+		boolean tx = startTransaction();
+		try {
+			String sql = getQuery(appVariables, filterBean, false, daEsportare);
+			
+			if (filterBean.getOrderField()==null || "".equals(filterBean.getOrderField()))
+				sql += " ORDER BY ID DESC";
+			else
+				sql += getSQLOrderBy(filterBean.getOrderField());
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			if (sql.contains(":userId"))
+				q.setParameter("userId", appVariables.getUserId());
+			
+			
+			if (sql.contains(":daDataCreazione"))
+					q.setParameter("daDataCreazione", filterBean.getDaDataCreazione());
+			if (sql.contains(":aDataCreazione"))
+				q.setParameter("aDataCreazione", filterBean.getaDataCreazione());
+			
+			if (sql.contains(":daDataValuta"))
+				q.setParameter("daDataValuta", filterBean.getDaDataValuta());
+			if (sql.contains(":aDataValuta"))
+				q.setParameter("aDataValuta", filterBean.getaDataValuta());
+	
+			if (startFrom!=null)
+				q.setFirstResult(startFrom);
+			if (length!=null)
+				q.setMaxResults(length);
+			
+			q
+				.addScalar("GiorniScadenza")
+				.addScalar("id")
+				.addScalar("iddistintaBanca")
+				.addScalar("iddistintaFlussoInput")
+				.addScalar("insertReference")
+				.addScalar("codiceSocietà")
+				.addScalar("dataCreazione")
+				.addScalar("provenienzaR2")
+				.addScalar("dataEmissioneFlusso")
+				.addScalar("tipologia")
+				.addScalar("tipologiaDbgrid")
+				.addScalar("userIdcreazione")
+				.addScalar("userIddelegatoFirma")
+				.addScalar("denominazioneDelegatoFirma")
+				.addScalar("CodiceAbiOrdinante")
+				.addScalar("cabOrdinante")
+				.addScalar("contoOrdinante")
+				.addScalar("divisaContoOrdinante")
+				.addScalar("coordinateIbanordinante")
+				.addScalar("codiceBicordinante")
+				.addScalar("descrizioneConto")
+				.addScalar("dataValutaDestinatario")
+				.addScalar("numeroDisposizioni")
+				.addScalar("importoDisposizioni")
+				.addScalar("importoDisposizioniDecimal")
+				.addScalar("divisaImporto")
+				.addScalar("divisa")
+				.addScalar("statoDistinta")
+				.addScalar("statoValidazione")
+				.addScalar("flagStampa")
+				.addScalar("flagBir")
+				.addScalar("trasferimentoPosizioneRid")
+				.addScalar("lastSaved")
+				.addScalar("contoPerCassa")
+				.addScalar("flagGrandine")
+				.addScalar("flagNas")
+				.addScalar("flagDanni")
+				.addScalar("pathFlussoPerFirmaDigitale")
+				.addScalar("nomeSupportoFlussoPerFirmaDigitale")
+				.addScalar("serialNumberCertificatoFd")
+				.addScalar("hashCodeCertificatoFd")
+				.addScalar("flagChiusuraPartitaSep")
+				.addScalar("dataChiusuraPartitaSep")
+				.addScalar("numDisposizioniPagatePartitaSep")
+				.addScalar("impDisposizioniPagatePartitaSep")
+				.addScalar("numDisposizioniInsolutePartitaSep")
+				.addScalar("impDisposizioniiInsolutePartitaSep")
+				.addScalar("tpflusso")
+				.addScalar("prefissoFlusso")
+				.addScalar("requiresFirmatario")
+				.addScalar("tipoSequenzaRid")
+				.addScalar("userIdfirmatario1")
+				.addScalar("userIdfirmatario2")
+				.addScalar("nomeSupportoCBI")
+				.addScalar("msgId")
+			;
+			q.setResultTransformer(new AliasToBeanResultTransformer(DistintaBancaBean.class));
+	
+			
+			List<DistintaBancaBean> res=null;
+			try  {
+					res = q.list();
+			} catch(Exception ex) {
+				ex.printStackTrace();
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+		
+	}
+	
+	public Integer getCountDistinteBanca(AppVariables appVariables, DistinteFilterBean filterBean) {
+		boolean tx = startTransaction();
+		try {
+			String sql = getQuery(appVariables, filterBean, true, false);
+					
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			if (sql.contains(":userId"))
+				q.setParameter("userId", appVariables.getUserId().trim());
+					
+			if (sql.contains(":daDataCreazione"))
+				q.setParameter("daDataCreazione", filterBean.getDaDataCreazione());
+		if (sql.contains(":aDataCreazione"))
+			q.setParameter("aDataCreazione", filterBean.getaDataCreazione());
+		
+		if (sql.contains(":daDataValuta"))
+			q.setParameter("daDataValuta", filterBean.getDaDataValuta());
+		if (sql.contains(":aDataValuta"))
+			q.setParameter("aDataValuta", filterBean.getaDataValuta());
+
+		
+			Integer res = (Integer)q.uniqueResult();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+		
+	}
+
+	private String getQuery(AppVariables appVariables, DistinteFilterBean filterBean,boolean isCount, boolean daEsportare) {
+		
+		String sql  = "";
+		if (isCount)
+			sql = "SELECT count(*)";
+		else
+			sql = "SELECT " + 
+					"dbo.DayBeforeValueDate( data_valuta_destinatario, FlagDanni, 1, DistintaBanca.StatoDistinta ) as GiorniScadenza,DistintaBanca.ID id, IDDistintaBanca iddistintaBanca, IDDistintaFlussoInput iddistintaFlussoInput, InsertReference insertReference, DistintaBanca.CodiceSocietà codiceSocietà, DistintaBanca.DataCreazione dataCreazione, " + 
+					"ProvenienzaR2 provenienzaR2, DataEmissioneFlusso dataEmissioneFlusso, DistintaBanca.tipologia, DistintaBanca.tipologiaDbgrid, DistintaBanca.userIdcreazione, userIddelegatoFirma, denominazioneDelegatoFirma, Codice_Abi_Ordinante codiceAbiOrdinante, Cab_Ordinante cabOrdinante, Conto_Ordinante contoOrdinante, Divisa_Conto_Ordinante divisaContoOrdinante, CoordinateIBANordinante coordinateIbanordinante, codiceBicordinante, descrizioneConto, Data_Valuta_Destinatario dataValutaDestinatario, DistintaBanca.numeroDisposizioni, DistintaBanca.importoDisposizioni, importoDisposizioniDecimal,Divisa_Importo divisaImporto, " + 
+					"DistintaBanca.divisa, DistintaBanca.statoDistinta, statoValidazione, DistintaBanca.flagStampa, flagBIR, trasferimentoPosizioneRID, DistintaBanca.lastSaved, contoPerCassa, flagGrandine, flagNas, flagDanni, pathFlussoPerFirmaDigitale, nomeSupportoFlussoPerFirmaDigitale, serialNumberCertificatoFD, hashCodeCertificatoFD, flagChiusuraPartitaSep, dataChiusuraPartitaSep, " + 
+					"numDisposizioniPagatePartitaSep,impDisposizioniPagatePartitaSep, numDisposizioniInsolutePartitaSep, impDisposizioniiInsolutePartitaSep, tpflusso, prefissoFlusso, " + 
+					"DistintaBanca.requiresFirmatario, tipoSequenzaRid, userIdfirmatario1, userIdfirmatario2, msgId, nomeSupportoCBI"  
+					
+					
+					
+//					"dbo.DayBeforeValueDate( DistintaBanca.data_valuta_destinatario, DistintaBanca.FlagDanni, 1, DistintaBanca.StatoDistinta ) as GiorniScadenza," + 
+//					"DistintaBanca.ID id, DistintaBanca.IDDistintaBanca iddistintaBanca, DistintaBanca.IDDistintaFlussoInput iddistintaFlussoInput, DistintaBanca.InsertReference insertReference, "+
+//					"DistintaBanca.CodiceSocietà codiceSocietà, DistintaBanca.DataCreazione dataCreazione,"+
+//					" DistintaBanca.ProvenienzaR2 provenienzaR2, DistintaBanca.DataEmissioneFlusso dataEmissioneFlusso, "+
+//					"DistintaBanca.tipologia, DistintaBanca.tipologiaDbgrid, DistintaBanca.userIdcreazione, DistintaBanca.userIddelegatoFirma, DistintaBanca.denominazioneDelegatoFirma, DistintaBanca.Codice_Abi_Ordinante DistintaBanca.codiceAbiOrdinante, "+
+//					"DistintaBanca.Cab_Ordinante cabOrdinante, DistintaBanca.Conto_Ordinante contoOrdinante, DistintaBanca.Divisa_Conto_Ordinante DistintaBanca.divisaContoOrdinante, DistintaBanca.CoordinateIBANordinante DistintaBanca.coordinateIbanordinante, "+
+//					"DistintaBanca.codiceBicordinante, DistintaBanca.descrizioneConto, DistintaBanca.Data_Valuta_Destinatario DistintaBanca.dataValutaDestinatario, DistintaBanca.numeroDisposizioni, DistintaBanca.importoDisposizioni, DistintaBanca.importoDisposizioniDecimal,"+
+//					"DistintaBanca.Divisa_Importo divisaImporto, DistintaBanca.divisa, DistintaBanca.statoDistinta, DistintaBanca.statoValidazione, DistintaBanca.flagStampa, DistintaBanca.flagBIR, DistintaBanca.trasferimentoPosizioneRID, DistintaBanca.lastSaved, "+
+//					"DistintaBanca.contoPerCassa, DistintaBanca.flagGrandine, DistintaBanca.flagNas, DistintaBanca.flagDanni, DistintaBanca.pathFlussoPerFirmaDigitale, DistintaBanca.nomeSupportoFlussoPerFirmaDigitale, DistintaBanca.serialNumberCertificatoFD, "+
+//					"DistintaBanca.hashCodeCertificatoFD, DistintaBanca.flagChiusuraPartitaSep, DistintaBanca.dataChiusuraPartitaSep, DistintaBanca.numDisposizioniPagatePartitaSep, DistintaBanca.impDisposizioniPagatePartitaSep, "+
+//					"DistintaBanca.numDisposizioniInsolutePartitaSep, DistintaBanca.impDisposizioniiInsolutePartitaSep, DistintaBanca.tpflusso, DistintaBanca.prefissoFlusso, DistintaBanca.requiresFirmatario, DistintaBanca.tipoSequenzaRid, "+
+//					"DistintaBanca.userIdfirmatario1, DistintaBanca.userIdfirmatario2, DistintaBanca.msgId, DistintaFlussiInput.nomeSupportoCBI";
+				
+				;	
+		//sql += " from DistintaBanca WITH (NOLOCK) ";
+		sql += " from vDistinteBanca as DistintaBanca WITH (NOLOCK) ";
+		sql += " left join DistintaFlussiInput on DistintaFlussiInput.IDDistintaFlusso = DistintaBanca.IDDistintaFlussoInput ";
+		
+		sql += " WHERE 1=1 " ;
+
+		if (daEsportare)
+			sql += " and FlagChiusuraPartitaSep=0";
+		
+		if(filterBean.getVistaGenerale()) {
+			if ("DF".equals(appVariables.getProfiloLocale())) {
+				sql += " and ISNUlL(UserIDFirmatario1,'')<>:userId and IsNULL(userIdfirmatario2,'')<>:userId  ";
+			}
+		} else {		
+			if ("TO".equals(appVariables.getProfiloLocale())|| "TR".equals(appVariables.getProfiloLocale())|| "VI".equals(appVariables.getProfiloLocale())) {
+				sql += " and (DistintaBanca.StatoDistinta='Predisposta' OR DistintaBanca.StatoDistinta='Autorizzata' OR DistintaBanca.StatoDistinta='Validata' OR DistintaBanca.StatoDistinta='Emessa' OR DistintaBanca.StatoDistinta='Disposta' OR DistintaBanca.StatoDistinta='Scartata' OR DistintaBanca.StatoDistinta='In Generazione')";
+			} else if ("DF".equals(appVariables.getProfiloLocale())) {
+				sql += " and DistintaBanca.StatoDistinta='Validata'";
+				sql += " and ISNUlL(DistintaBanca.UserIDFirmatario1,'')<>:userId and IsNULL(DistintaBanca.userIdfirmatario2,'')<>:userId and DistintaBanca.RequiresFirmatario=1 ";
+			}
+		}			
+		
+		
+		if(!StringUtilities.empty(filterBean.getProvenienza())) {
+			if ("Formula".equals(filterBean.getProvenienza()))
+				sql += " and ProvenienzaR2=1";
+			else if ("Nas".equals(filterBean.getProvenienza()))
+				sql += " and FlagNas=1";
+			else if ("Danni".equals(filterBean.getProvenienza()))
+				sql += " and FlagDanni=1";
+			else if ("Grandine".equals(filterBean.getProvenienza()))
+				sql += " and FlagGrandine=1";
+			else if ("BIR".equals(filterBean.getProvenienza()))
+				sql += " and FlagBIR=1";
+		}
+		
+		if (filterBean.getFlagAbilitaDaDataCreazione()!=null && filterBean.getFlagAbilitaDaDataCreazione() && filterBean.getDaDataCreazione()!=null)
+			sql += " and DistintaBanca.DataCreazione>=:daDataCreazione";
+			
+		if (filterBean.getFlagAbilitaADataCreazione() !=null && filterBean.getFlagAbilitaADataCreazione() && filterBean.getaDataCreazione()!=null)
+			sql += " and DistintaBanca.DataCreazione<=:aDataCreazione";
+			
+		if (!StringUtilities.empty(filterBean.getNomeSupportoCBI()))
+			sql += " and nomeSupportoCBI like '%" + filterBean.getNomeSupportoCBI() + "%' "; 
+			
+		if (filterBean.getFlagAbilitaDaDataValuta() !=null && filterBean.getFlagAbilitaDaDataValuta() && filterBean.getaDataValuta()!=null)
+			sql += " and DistintaBanca.Data_Valuta_Destinatario>=:daDataValuta";
+			
+		if (filterBean.getFlagAbilitaADataValuta() !=null && filterBean.getFlagAbilitaADataValuta() && filterBean.getaDataValuta()!=null)
+			sql += " and DistintaBanca.Data_Valuta_Destinatario<=:aDataValuta";
+			
+		
+		if (!StringUtilities.empty(filterBean.getNomeSupportoCBI()))
+			sql += " and nomeSupportoCBI like '%" + filterBean.getNomeSupportoCBI() + "%' "; 
+
+		String importo = toDouble(filterBean.getDaImporto());
+		if (!"0".equals(importo))
+			sql += " and importoDisposizioniDecimal >= " + importo.replace(',','.');
+		
+		importo = toDouble(filterBean.getaImporto());
+		if (!"0".equals(importo))
+			sql += " and importoDisposizioniDecimal <= " + importo.replace(',','.');
+
+		if (!StringUtilities.empty(filterBean.getDaDistinta()))
+			sql += " and IDDistintaBanca >=" + filterBean.getDaDistinta(); 
+
+		if (!StringUtilities.empty(filterBean.getaDistinta()))
+			sql += " and IDDistintaBanca <=" + filterBean.getaDistinta(); 
+
+		if (!StringUtilities.empty(filterBean.getContoOrdinante()))
+			sql += " and Conto_Ordinante like '%" + filterBean.getContoOrdinante() + "%'";
+		
+		if (!StringUtilities.empty(filterBean.getStatoDisposizione()))
+			sql += " and DistintaBanca.StatoDistinta='"  + filterBean.getStatoDisposizione() +"'";
+		
+		List<String> filters=new ArrayList<String>();
+		//if (filterBean.getSdd() || filterBean.getSeda()||filterBean.getSct()||filterBean.getDom()||filterBean.getSct_int()) {
+			if (filterBean.getSdd())
+				//filters.add(" DistintaBanca.Tipologia='RID'");
+				filters.add(" DistintaBanca.TipologiaDBGRID='SDD'");
+			if (filterBean.getSeda())
+				filters.add(" DistintaBanca.Tipologia='AEA'");
+			if (filterBean.getSct())
+				filters.add(" DistintaBanca.TipologiaDBGRID='SCT'");
+			if (filterBean.getDom())
+				filters.add(" DistintaBanca.TipologiaDBGRID='DOM'");
+			if (filterBean.getSct_int())
+				filters.add(" DistintaBanca.TipologiaDBGRID='SCT_INT'");
+			if (filterBean.getSct_inps())
+				filters.add(" DistintaBanca.TipologiaDBGRID='SCT_INPS'");
+			if (filterBean.getAssegni())
+				filters.add(" DistintaBanca.TipologiaDBGRID='ASSEGNI'");
+			if (filterBean.getSct_esteri())
+				filters.add(" DistintaBanca.TipologiaDBGRID='SCT_ESTERI'");
+			if (filterBean.getAssegni())
+				filters.add(" DistintaBanca.TipologiaDBGRID='ASSEGNI_INTESA'");
+			if (filterBean.getSdd_esteri())
+				filters.add(" DistintaBanca.TipologiaDBGRID='SDD_ESTERI'");
+			//}
+		
+		if (filters.size()>0) {
+			sql += " and (";
+			for (int i=0;i<filters.size();i++)
+				sql += filters.get(i) + (i<filters.size()-1?" or ": "");
+			sql += ")";
+		}
+		return sql;
+	}
+
+	
+	public String toDouble(String importo) {
+		DecimalFormat df = new DecimalFormat("#.00"); 
+		try {
+			Double dbl = Double.parseDouble(importo.replace(",","."));
+			String res = df.format(dbl);
+			return res.replace(".", ",");
+		} catch (Exception ex) {
+			return "0";
+		}
+	}
+	
+	public Boolean annullaDistinta(final AnnullaDistintaBean annullaDistintaBean, final AppVariables appVariables) throws Exception {
+		boolean tx = startTransaction();
+		boolean res = false;
+		try {
+			
+			SQLQuery q = currentSession().createSQLQuery("exec spAnnullaDistinta :SecurityUserId, :SecurityGuid, :IDDistinta, :IDDistintaBanca, :UserID, :Utente, :LastSaved, :Tipologia, :FromCBI");
+			
+			q
+				.setParameter("SecurityUserId", appVariables.getUserId())
+				.setParameter("SecurityGuid", appVariables.getGuid())
+				.setParameter("IDDistinta",annullaDistintaBean.getId())
+				.setParameter("IDDistintaBanca", annullaDistintaBean.getIdDistintaBanca())
+				.setParameter("UserID", appVariables.getUserId())
+				.setParameter("Utente", appVariables.getDenominazioneUtente())
+				.setParameter("LastSaved", annullaDistintaBean.getLastSaved())
+				.setParameter("Tipologia", annullaDistintaBean.getTipologia())
+				.setParameter("FromCBI", annullaDistintaBean.isFlagDanni())
+				.setResultTransformer(Transformers.aliasToBean(StoredProcResult.class))
+			;
+			
+			Integer r = q.executeUpdate();
+			
+			res = r>0;
+
+	//		annullaDistintaBean.setId(-100009);
+/*			
+			
+			ProcedureCall call = currentSession().createStoredProcedureCall("spAnnullaDistinta");
+			
+			call.registerParameter("SecurityUserId", String.class, ParameterMode.IN).bindValue(appVariables.getUserId());
+			call.registerParameter("SecurityGuid", String.class, ParameterMode.IN).bindValue(appVariables.getGuid());	
+			call.registerParameter("IDDistinta", Integer.class, ParameterMode.IN).bindValue(annullaDistintaBean.getId());
+			call.registerParameter("IDDistintaBanca", Integer.class, ParameterMode.IN).bindValue(annullaDistintaBean.getIdDistintaBanca());
+			call.registerParameter("UserId", String.class, ParameterMode.IN).bindValue(appVariables.getUserId());
+			call.registerParameter("Utente", String.class, ParameterMode.IN).bindValue(appVariables.getDenominazioneUtente());
+			call.registerParameter("Tipologia", String.class, ParameterMode.IN).bindValue(annullaDistintaBean.getTipologia());
+			call.registerParameter("FromCBI", Boolean.class, ParameterMode.IN).bindValue(annullaDistintaBean.isFlagDanni());
+			call.registerParameter("LastSaved", byte[].class, ParameterMode.IN).bindValue(annullaDistintaBean.getLastSaved());
+			
+	//		call.registerParameter("RETURN_VALUE", Integer.class, ParameterMode.OUT);
+			
+			Outputs outputs = call.getOutputs();		
+			
+			//call.getParameterRegistration("RETURN_VALUE");
+			
+			Output output = outputs.getCurrent();
+			if (output instanceof UpdateCountOutput) {
+				res = ((UpdateCountOutput) output).getUpdateCount()>0;
+			}
+			if (output.isResultSet()) {
+				ResultSetOutput resultSetOutput = (org.hibernate.result.ResultSetOutput) output;
+				
+				List<Object> result = resultSetOutput.getResultList();
+	            
+			}StatiValidazione
+*/			
+			
+		} catch (Exception ex) {
+			if (tx)
+				tx = rollback();
+			throw ex;
+			
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+	
+	public List<LogModificheBean> logStati(Integer id) {
+		boolean tx = startTransaction();
+		
+		try {
+			String sql = "select id, userId, data, ora, utente,cast(campoPostModifica as varchar) as campoPostModifica " +
+						" from LogDistintaBanca where IDDistintaBanca=:id "+
+						" order by Data, Ora, id";
+					
+			Query q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(LogModificheBean.class));
+			
+			q.setParameter("id", id);	
+			@SuppressWarnings("unchecked")
+			List<LogModificheBean> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public Boolean modificaContoDistinta(final ModificaContoDistintaBean modificaContoDistintaBean, final AppVariables appVariables) throws Throwable {
+		boolean tx = startTransaction();
+		boolean res = false;
+		try {
+			
+			SQLQuery q = currentSession().createSQLQuery("exec spModificaContoAddebito :SecurityUserId, :SecurityGuid, :IDDistintaBanca, :LastSaved, :UserID, :Utente, :IDContoOrdinante, :Tipologia");
+			
+			q
+				.setParameter("SecurityUserId", appVariables.getUserId())
+				.setParameter("SecurityGuid", appVariables.getGuid())
+				.setParameter("IDDistintaBanca", modificaContoDistintaBean.getIdDistintaBanca())
+				.setParameter("UserID", appVariables.getUserId())
+				.setParameter("Utente", appVariables.getDenominazioneUtente() + " su distinta")
+				.setParameter("LastSaved", modificaContoDistintaBean.getLastSaved())
+				.setParameter("IDContoOrdinante",modificaContoDistintaBean.getIdContoOrdinante())
+				.setParameter("Tipologia", modificaContoDistintaBean.getTipologia())
+			;
+			
+			Integer r = q.executeUpdate();
+			
+			res = r>0;
+	
+		} catch (Exception ex) {
+			if (tx)
+				tx = rollback();
+			// hack per estrarre il vero motivo dell'errore
+			if ("could not execute statement".equalsIgnoreCase(ex.getMessage()))
+				throw ex.getCause();
+			else
+				throw ex;
+			
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+
+	public Boolean modificaDataValuta(ModificaDataDisposizioneBean modificaDataValutaBean, UserData userData, AppVariables appVariables) throws Throwable {
+			boolean tx = startTransaction();
+			boolean res = false;
+			try {
+				// TODO Auto-generated method stub
+				SQLQuery q = currentSession().createSQLQuery("exec spModificaValutaBeneficiario :SecurityUserId, :SecurityGuid, :IDDistintaBanca, :LastSaved, :UserID, :Utente, :inserMultiData");
+				
+				q
+					.setParameter("SecurityUserId", appVariables.getUserId())
+					.setParameter("SecurityGuid", appVariables.getGuid())
+					.setParameter("IDDistintaBanca", modificaDataValutaBean.getIdDistintaBanca())
+					.setParameter("UserID", appVariables.getUserId())
+					.setParameter("Utente", appVariables.getDenominazioneUtente() + " su distinta")
+					.setParameter("LastSaved", modificaDataValutaBean.getLastSaved())
+					.setParameter("inserMultiData",modificaDataValutaBean.getData())
+					;
+				
+				Integer r = q.executeUpdate();
+				
+				res = r>0;
+				
+				if (r>0) {
+					DistintaBanca distinta = getByIdDistintaBancaNoTransaction(modificaDataValutaBean.getIdDistintaBanca());
+					if (distinta!=null) {
+						if ("BONIFICI".equalsIgnoreCase(distinta.getTipologia()))
+							updateBonifici(modificaDataValutaBean.getIdDistintaBanca(), userData, appVariables);
+						else if ("AEA".equalsIgnoreCase(distinta.getTipologia()))
+							updateSeda(modificaDataValutaBean.getIdDistintaBanca(), userData, appVariables);
+						else if ("RID".equalsIgnoreCase(distinta.getTipologia()))
+							updateRid(modificaDataValutaBean.getIdDistintaBanca(), userData, appVariables);
+								
+					}
+				}
+				
+		
+			} catch (Exception ex) {
+				if (tx)
+					tx = rollback();
+				// hack per estrarre il vero motivo dell'errore
+				if ("could not execute statement".equalsIgnoreCase(ex.getMessage()))
+					throw ex.getCause();
+				else
+					throw ex;
+				
+			} finally {
+				if (tx)
+					commit();
+			}
+			return res;
+	}
+	
+	private void updateRid(Integer idDistintaBanca, UserData userData, AppVariables appVariables) {
+		List<DisposizioniRid> disposizioni = disposizioniRidDAO.listByDistintaBancaNoTransaction(idDistintaBanca);
+		for(DisposizioniRid disposizioneRid: disposizioni) {
+			ObjectMapper oMapper = new ObjectMapper();
+			Map<String, Object> disposizione = oMapper.convertValue(disposizioneRid, Map.class);
+			
+			try {
+				DettaglioErrori errori = convalidaClass.eseguiConvalida(appVariables, 1, "RID",disposizione, true, false);
+				 disposizioneRid = oMapper.convertValue(disposizione, DisposizioniRid.class);
+			} catch (Exception e) {
+				// TODO Auto-generated catch block  disposizione.get("importo")   disposizione.get("flagImporto") disposizioneRid.isFlagImporto()
+				e.printStackTrace();
+			}
+			
+			int res = disposizioniRidDAO.saveDisposizione(disposizioneRid, userData, appVariables);
+		}
+	}
+
+	private void updateSeda(Integer idDistintaBanca, UserData userData, AppVariables appVariables) {
+		List<DisposizioniAea> disposizioni = disposizioniAeaDAO.listByDistintaBancaNoTransaction(idDistintaBanca);
+		for(DisposizioniAea disposizione: disposizioni) {
+			ObjectMapper oMapper = new ObjectMapper();
+			Map<String, Object> DisposizioniAea = oMapper.convertValue(disposizione, Map.class);
+			
+			try {
+				DettaglioErrori errori = convalidaClass.eseguiConvalida(appVariables, 1, "AEA",DisposizioniAea, true, false);
+				 disposizione = oMapper.convertValue(DisposizioniAea, DisposizioniAea.class);
+			} catch (Exception e) {
+				// TODO Auto-generated catch block  disposizione.get("importo")   disposizione.get("flagImporto") disposizioneRid.isFlagImporto()
+				e.printStackTrace();
+			}
+			
+			int res = disposizioniAeaDAO.save(disposizione, userData, appVariables);
+		}
+		
+	}
+
+	private void updateBonifici(Integer idDistintaBanca, UserData userData, AppVariables appVariables) {
+		List<DisposizioniBonifici> disposizioni = disposizioniBonificiDAO.listByDistintaBancaNoTransaction(idDistintaBanca);
+		for(DisposizioniBonifici disposizioneBonifici: disposizioni) {
+			ObjectMapper oMapper = new ObjectMapper();
+			Map<String, Object> disposizione = oMapper.convertValue(disposizioneBonifici, Map.class);
+			
+			try {
+				DettaglioErrori errori = convalidaClass.eseguiConvalida(appVariables, 1, "BONIFICI",disposizione, true, false);
+				 disposizioneBonifici = oMapper.convertValue(disposizione, DisposizioniBonifici.class);
+			} catch (Exception e) {
+				// TODO Auto-generated catch block  disposizione.get("importo")   disposizione.get("flagImporto") disposizioneRid.isFlagImporto()
+				e.printStackTrace();
+			}
+			
+			
+			disposizioniBonificiDAO.saveDisposizione(disposizioneBonifici, userData, appVariables, convalidaClass);
+			
+		}
+		
+	}
+
+	public Boolean modificaDataEsecuzione(ModificaDataDisposizioneBean modificaDataValutaBean, UserData userData, AppVariables appVariables) throws Throwable {
+		boolean tx = startTransaction();
+		boolean res = false;
+		try {
+			
+			SQLQuery q = currentSession().createSQLQuery("exec spModificaDataEsecuzione :SecurityUserId, :SecurityGuid, :IDDistintaBanca, :LastSaved, :UserID, :Utente, :inserMultiData");
+			
+			q
+				.setParameter("SecurityUserId", appVariables.getUserId())
+				.setParameter("SecurityGuid", appVariables.getGuid())
+				.setParameter("IDDistintaBanca", modificaDataValutaBean.getIdDistintaBanca())
+				.setParameter("UserID", appVariables.getUserId())
+				.setParameter("Utente", appVariables.getDenominazioneUtente() + " su distinta")
+				.setParameter("LastSaved", modificaDataValutaBean.getLastSaved())
+				.setParameter("inserMultiData",modificaDataValutaBean.getData())
+				;
+			
+			Integer r = q.executeUpdate();
+			
+			res = r>0;
+			
+			if (r>0) {
+				DistintaBanca distinta = getByIdDistintaBancaNoTransaction(modificaDataValutaBean.getIdDistintaBanca());
+				if (distinta!=null) {
+					if ("BONIFICI".equalsIgnoreCase(distinta.getTipologia()))
+						updateBonifici(modificaDataValutaBean.getIdDistintaBanca(), userData, appVariables);
+					else if ("AEA".equalsIgnoreCase(distinta.getTipologia()))
+						updateSeda(modificaDataValutaBean.getIdDistintaBanca(), userData, appVariables);
+					else if ("RID".equalsIgnoreCase(distinta.getTipologia()))
+						updateRid(modificaDataValutaBean.getIdDistintaBanca(), userData, appVariables);
+							
+				}
+			}
+
+	
+		} catch (Exception ex) {
+			if (tx)
+				tx = rollback();
+			// hack per estrarre il vero motivo dell'errore
+			if ("could not execute statement".equalsIgnoreCase(ex.getMessage())||
+				"could not execute native bulk manipulation query".equalsIgnoreCase(ex.getMessage()))
+				throw ex.getCause();
+			else
+				throw ex;
+			
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+
+	public String validaEGenera(Integer id,AppVariables appVariables) {
+		String res = null;
+
+		boolean tx = startTransaction();
+		try {		
+			DistintaBanca distinta = readNoTransaction(id);
+			
+			if (!"Autorizzata".equals(distinta.getStatoDistinta())) 
+				return "Distinta in stato non congruente con l'attività di validazione";
+			
+			int resValidazione = validaDistinta(distinta, appVariables);
+		    
+			if (tx) {
+				if (resValidazione==0)
+					tx = commit();
+				else
+					tx = rollback();
+			}
+			
+		    switch (resValidazione) {
+		    case 0:
+		    	return "Generazione Flusso Attivata";
+		    case 1:
+		    	return "";
+		    case 4:
+		    	return "La distinta è stata modificata da un altro utente";
+		    case 5:
+		    	return "I dati della distinta sono stati eliminati da un altro utente";
+		    case 6:
+		    	return "La distinta si trova in uno stato non congruente con l'attività di validazione";
+		    			
+		    }
+			return null;
+		
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public String genera(Integer id,AppVariables appVariables) {
+		String res = null;
+
+		boolean tx = startTransaction();
+		try {
+			DistintaBanca distinta = readNoTransaction(id);
+			
+			if (!"Validata".equals(distinta.getStatoDistinta())) 
+				return "Distinta in stato non congruente con l'attività di generazione flusso";
+			
+			String resValidazione = generaDistinta(distinta, appVariables);
+		    
+			if (tx) {
+				if ("0".equals(resValidazione))
+					tx = commit();
+				else
+					tx = rollback();
+			}
+			
+		    if ("0".equals(resValidazione)) 
+		    	return "Generazione Flusso Attivata";
+		    else if ("4".equals(resValidazione))
+		    	return "La distinta è stata modificata da un altro utente";
+		    else if ("5".equals(resValidazione))
+		    	return "I dati della distinta sono stati eliminati da un altro utente";
+		    else if ("6".equals(resValidazione))
+		    	return "La distinta si trova in uno stato non congruente con l'attività di validazione";
+		    else
+	    		return resValidazione;
+	    	
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+		
+	}
+	
+	private int validaDistinta(final DistintaBanca distinta,final AppVariables appVariables) {
+
+		int res = -1;
+		Connection connection = currentSession().doReturningWork(new ReturningWork<Connection>() {
+	        @Override
+	        public Connection execute(Connection conn) throws SQLException {
+	            return conn;
+	        }
+	    });
+
+			/*
+			  CREATE PROCEDURE [dbo].[spValidaDistinta]
+					@SecurityUserId VARCHAR(15),
+					@SecurityGuid UNIQUEIDENTIFIER,
+				
+					@IDDistinta int,
+					@IDDistintaBanca int,
+					@UserID varchar(10),
+					@Utente varchar(50),
+					@LastSaved TIMESTAMP,
+					@UpdateStatoDisposizione bit = 1
+			 */
+		CallableStatement proc;
+		try {
+			proc = connection.prepareCall("{? = call spValidaDistinta (?,?,?,?,?,?,?,?)}");
+				
+			proc.registerOutParameter(1, Types.INTEGER);
+			proc.setString(2, appVariables.getUserId());
+			proc.setString(3, appVariables.getGuid());
+			proc.setObject(4, distinta.getId());
+			proc.setObject(5, distinta.getIddistintaBanca());
+			proc.setString(6, appVariables.getUserId());
+			proc.setString(7,  appVariables.getDenominazioneUtente());
+			proc.setBytes(8, distinta.getLastSaved());
+			proc.setBoolean(9, true);
+			
+			proc.execute();
+				
+			res = proc.getInt(1);
+				
+			
+		} catch (SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			res = -2;
+		}
+		
+		return res;
+	}
+	
+	private String generaDistinta(final DistintaBanca distinta,final AppVariables appVariables) {
+
+		Integer res = -1;
+		Connection connection = getConnection();
+
+			/*
+			  CREATE PROCEDURE [dbo].[spGenerazioneFlussoDistinta]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@IDDistinta int,
+				@IDDistintaBanca int,
+				@UserID varchar(10),
+				@Utente varchar(50),
+				@LastSaved TIMESTAMP
+			 */
+		CallableStatement proc;
+		try {
+			proc = connection.prepareCall("{? = call spGenerazioneFlussoDistinta (?,?,?,?,?,?,?)}");
+				
+			proc.registerOutParameter(1, Types.INTEGER);
+			proc.setString(2, appVariables.getUserId());
+			proc.setString(3, appVariables.getGuid());
+			proc.setObject(4, distinta.getId());
+			proc.setObject(5, distinta.getIddistintaBanca());
+			proc.setString(6, appVariables.getUserId());
+			proc.setString(7,  appVariables.getDenominazioneUtente());
+			proc.setBytes(8, distinta.getLastSaved());
+			
+			proc.execute();
+				
+			res = proc.getInt(1);
+				
+			
+		} catch (SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			return e.getMessage();
+		}
+		
+		return res.toString();
+	}
+
+	private String getAppParam (String nomeParametro, AppVariables appVariables) {
+		//boolean tx = startTransaction();
+		
+		try {
+			String res = null;
+			Connection connection = getConnection();
+	
+			/*
+			  CREATE PROC [dbo].[spGetAppParam]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+				@Parametro varchar(50)
+			 */
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spGetAppParam (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setString(4, nomeParametro);
+				
+				proc.execute();
+				
+				ResultSet rs = proc.getResultSet();
+				rs.next();
+				res = rs.getString(1);
+//				proc.getMoreResults();
+//					
+//				res = proc.getString(1);
+					
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return null;
+			}
+			
+			return res;
+		} finally {
+//			if (tx)
+//				tx = commit();
+		}
+	}
+	
+	public String getNomeFlusso(String tipologia, Integer idDistintaBanca) {
+		//boolean tx = startTransaction();
+		try {
+			String sql = "SELECT TOP 1 NomeSupportoFlussoInputCBI FROM Disposizioni_" + tipologia + " WHERE IDDistintaBanca=" + idDistintaBanca;
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			String res = (String) q.uniqueResult();
+			if (res==null)
+				res = "";
+			
+			if (res.startsWith("0000_EBRXFND6")) {
+				sql = "SELECT TOP 1 DenominazioneDestinatario FROM Disposizioni_" + tipologia + " WHERE IDDistintaBanca=" + idDistintaBanca;
+				q = currentSession().createSQLQuery(sql);
+				res = (String) q.uniqueResult();
+			}
+			return res.trim();
+		} finally {
+			//if (tx)
+			//	tx = commit();
+		}
+	}
+	
+	public List<String> esportaTASC(AppVariables appVariables, DistinteFilterBean filterBean) throws Exception {
+		List<DistintaBancaBean> distinte = getDistinteBanca(appVariables, filterBean, null, null, true);
+
+		if (distinte.size()==0)
+			return null;
+			//throw new Exception("Nessuna distinta da esportare");
+
+		
+		boolean tx = startTransaction();
+		try {
+		
+			List<String> res = new ArrayList<String>(); 
+			
+			try {
+				// Genera CSV di esportazione
+				
+				
+				res.add("N° Distinta;Tipologia;ABI;CAB;Conto;Divisa;Valuta Beneficiario;Stato Distinta;N° Disposizioni;Importo;Divisa;Data Creazione;Richiede Firmatario;From CBI;Exported TASC;BIR;# Giorni Scadenza;Nome Supporto;Payment Information ID");
+				
+				
+				SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+
+				String pathExportDistinteTasc = getAppParam("PathExportDistinteTasc", appVariables);
+				PrintWriter pw = new PrintWriter(new File(pathExportDistinteTasc, generateExportFileName()));
+				
+				for(DistintaBancaBean distinta:distinte) {
+					String linea = 
+							safeString(distinta.getIddistintaBanca().toString())+";"
+							+ safeString(distinta.getTipologiaDbgrid()) + ";"
+							+ safeString(distinta.getCodiceAbiOrdinante()) + ";"
+							+ safeString(distinta.getCabOrdinante()) + ";"
+							+ safeString(distinta.getContoOrdinante()) + ";"
+							+ safeString(distinta.getDivisaContoOrdinante()) + ";"
+							+ (distinta.getDataValutaDestinatario()!=null?sdf.format(distinta.getDataValutaDestinatario()):"") + ";"
+							+ safeString(distinta.getStatoDistinta()) + ";"
+							+ safeString(distinta.getNumeroDisposizioni().toString())+";"
+							+ safeString(distinta.getImportoDisposizioni()) + ";"
+							+ (distinta.getDivisa()!=null?distinta.getDivisa():"") + ";"
+							+ sdf.format(distinta.getDataCreazione())+";"
+							+ (distinta.getRequiresFirmatario()!=0?"Vero":"Falso")+";"
+							+ (distinta.isFlagDanni()?"Vero":"Falso")+";"
+							+ (distinta.isFlagChiusuraPartitaSep()?"Vero":"Falso")+";"
+							+ (distinta.isFlagBir()?"Vero":"Falso")+";"
+							+ (distinta.getGiorniScadenza()!=null?distinta.getGiorniScadenza():"")+";"
+							+ getNomeFlusso(distinta.getTipologia(), distinta.getIddistintaBanca())+";"
+							+ (distinta.getMsgId()!=null?distinta.getMsgId():"");
+							
+							;
+							res.add(linea);
+							
+							marcaDistintaEsportata(distinta, appVariables);
+				}
+
+				try {
+					for (String line: res) 
+						pw.println(line);
+				} finally {
+					pw.close();
+				}
+				
+				return res;
+			} catch(Exception ex) {
+				if (tx)
+					rollback();
+				tx = false;
+				throw ex;
+			}
+		}
+		finally {
+			if (tx)
+				commit();
+		}
+			
+	}
+
+	private void marcaDistintaEsportata(DistintaBancaBean distinta, AppVariables appVariables) {
+		
+		distinta.setFlagChiusuraPartitaSep(true);
+		
+		saveDistinta(distinta, appVariables, true);
+		
+		
+	}
+
+
+	private String generateExportFileName() {
+		Date dt = new Date();
+		SimpleDateFormat sdf = new SimpleDateFormat("ddmmyyyy_HHmmssSS");
+		String filename = sdf.format(new Date());
+		filename = filename.substring(0,filename.length()-1);
+		return "ExportDistinteTasc_" + filename +".csv";
+	
+	}
+
+	public String saveDistinta(DistintaBancaBean distinta, AppVariables appVariables, boolean transactionAlreadyActive) {
+		boolean tx = false; 
+		if (!transactionAlreadyActive)
+			tx = startTransaction();
+		
+		try {
+			String res = null;
+			Connection connection = getConnection();
+	
+			/*
+				CREATE PROC [dbo].[spModifyDistintaBanca]
+					@SecurityUserId VARCHAR(15),
+					@SecurityGuid UNIQUEIDENTIFIER,
+				
+					@ID int,
+					@IDDistintaBanca int,
+					@IDDistintaFlussoInput int,
+					@InsertReference int,
+					@CodiceSocietà varchar(3),
+					@DataCreazione datetime,
+					@ProvenienzaR2 bit,
+					@DataEmissioneFlusso datetime,
+					@Tipologia varchar(20),
+					@TipologiaDBGRID varchar(20),
+					@UserIDCreazione varchar(10),
+					@UserIDDelegatoFirma varchar(10),
+					@DenominazioneDelegatoFirma varchar(50),
+					@Codice_Abi_Ordinante varchar(5),
+					@Cab_Ordinante varchar(5),
+					@Conto_Ordinante varchar(12),
+					@Divisa_Conto_Ordinante varchar(3),
+					@CoordinateIBANordinante varchar(42),
+					@CodiceBICordinante varchar(11),
+					@DescrizioneConto varchar(30),
+					@Data_Valuta_Destinatario datetime,
+					@NumeroDisposizioni int,
+					@ImportoDisposizioni varchar(50),
+					@ImportoDisposizioniDecimal decimal(18,3),
+					@Divisa_Importo varchar(3),
+					@Divisa varchar(3),
+					@StatoDistinta varchar(15),
+					@StatoValidazione varchar(15),
+					@FlagStampa bit,
+					@FlagBIR bit,
+					@TrasferimentoPosizioneRID varchar(1),
+					@LastSaved timestamp,
+					@ContoPerCassa bit,
+					@FlagGrandine bit,
+					@FlagNas bit,
+					@FlagDanni bit,
+					@PathFlussoPerFirmaDigitale varchar(200),
+					@NomeSupportoFlussoPerFirmaDigitale varchar(20),
+					@SerialNumberCertificatoFD varchar(50),
+					@HashCodeCertificatoFD varchar(100),
+					@FlagChiusuraPartitaSep bit,
+					@DataChiusuraPartitaSep datetime,
+					@NumDisposizioniPagatePartitaSep varchar(7),
+					@ImpDisposizioniPagatePartitaSep varchar(20),
+					@NumDisposizioniInsolutePartitaSep varchar(7),
+					@ImpDisposizioniiInsolutePartitaSep varchar(20),
+					@TPFlusso int,
+					@PrefissoFlusso varchar(255),
+					@RequiresFirmatario INT = NULL,
+					@TipoSequenzaRID varchar(4) = NULL,
+					@UserIDFirmatario1 varchar(10),
+					@UserIDFirmatario2 varchar(10),
+					@MsgId varchar(35)
+							  
+			 */
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spModifyDistintaBanca(" 
+					+ "?,?,?,?,?,?,?,?,?,?,"
+					+ "?,?,?,?,?,?,?,?,?,?,"
+					+ "?,?,?,?,?,?,?,?,?,?,"
+					+ "?,?,?,?,?,?,?,?,?,?,"
+					+ "?,?,?,?,?,?,?,?,?,?,"
+					+ "?,?,?,?,?"
+						+ ")}");
+				
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId()); //@SecurityUserId VARCHAR(15),
+				proc.setString(3, appVariables.getGuid());  //@SecurityGuid UNIQUEIDENTIFIER,
+				
+				proc.setObject(4, distinta.getId()); //@ID int,
+				proc.setObject(5, distinta.getIddistintaBanca());// @IDDistintaBanca int,
+				proc.setObject(6, distinta.getIddistintaFlussoInput());// @IDDistintaFlussoInput int,
+				proc.setObject(7, distinta.getInsertReference());// @InsertReference int,
+				proc.setString(8,  distinta.getCodiceSocietà());// @CodiceSocietà varchar(3),
+				proc.setDate(9,  dateToSqlDate(distinta.getDataCreazione()));// @DataCreazione datetime,
+				proc.setBoolean(10, distinta.isProvenienzaR2());// @ProvenienzaR2 bit,
+				proc.setDate(11, dateToSqlDate(distinta.getDataEmissioneFlusso()));// @DataEmissioneFlusso datetime,
+				proc.setString(12, distinta.getTipologia());// @Tipologia varchar(20),
+				proc.setString(13, distinta.getTipologiaDbgrid());// @TipologiaDBGRID varchar(20),
+				proc.setString(14, distinta.getUserIdcreazione());// @UserIDCreazione varchar(10),
+				proc.setString(15, distinta.getUserIddelegatoFirma());// @UserIDDelegatoFirma varchar(10),
+				proc.setString(16, distinta.getDenominazioneDelegatoFirma());// @DenominazioneDelegatoFirma varchar(50),
+				proc.setString(17, distinta.getCodiceAbiOrdinante());// @Codice_Abi_Ordinante varchar(5),
+				proc.setString(18, distinta.getCabOrdinante());// @Cab_Ordinante varchar(5),
+				proc.setString(19, distinta.getContoOrdinante());// @Conto_Ordinante varchar(12),
+				proc.setString(20, distinta.getDivisaContoOrdinante());// @Divisa_Conto_Ordinante varchar(3),
+				proc.setString(21, distinta.getCoordinateIbanordinante());// @CoordinateIBANordinante varchar(42),
+				proc.setString(22, distinta.getCodiceBicordinante());// @CodiceBICordinante varchar(11),
+				proc.setString(23, distinta.getDescrizioneConto());// @DescrizioneConto varchar(30),
+				proc.setDate(24, dateToSqlDate(distinta.getDataValutaDestinatario()));// @Data_Valuta_Destinatario datetime,
+				proc.setObject(25, distinta.getNumeroDisposizioni());// @NumeroDisposizioni int,
+				proc.setString(26, distinta.getImportoDisposizioni());// @ImportoDisposizioni varchar(50),
+				proc.setBigDecimal(27, distinta.getImportoDisposizioniDecimal());// @ImportoDisposizioniDecimal decimal(18,3),
+				proc.setString(28, distinta.getDivisaImporto());// @Divisa_Importo varchar(3),
+				proc.setString(29,  distinta.getDivisa());// @Divisa varchar(3),
+				proc.setString(30, distinta.getStatoDistinta());// @StatoDistinta varchar(15),
+				proc.setString(31,distinta.getStatoValidazione());// @StatoValidazione varchar(15),
+				proc.setBoolean(32, distinta.isFlagStampa());// @FlagStampa bit,
+				proc.setBoolean(33,distinta.isFlagBir());// @FlagBIR bit,
+				proc.setString(34, distinta.getTrasferimentoPosizioneRid());// @TrasferimentoPosizioneRID varchar(1),
+				proc.setBytes(35, distinta.getLastSaved());// @LastSaved timestamp,
+				proc.setBoolean(36, distinta.isContoPerCassa());// @ContoPerCassa bit,
+				proc.setBoolean(37, distinta.isFlagGrandine());// @FlagGrandine bit,
+				proc.setBoolean(38, distinta.isFlagNas());// @FlagNas bit,
+				proc.setBoolean(39, distinta.isFlagDanni());// @FlagDanni bit,
+				proc.setString(40, distinta.getPathFlussoPerFirmaDigitale());// @PathFlussoPerFirmaDigitale varchar(200),
+				proc.setString(41, distinta.getNomeSupportoFlussoPerFirmaDigitale());// @NomeSupportoFlussoPerFirmaDigitale varchar(20),
+				proc.setString(42, distinta.getSerialNumberCertificatoFd());// @SerialNumberCertificatoFD varchar(50),
+				proc.setString(43, distinta.getHashCodeCertificatoFd());// @HashCodeCertificatoFD varchar(100),
+				proc.setBoolean(44, distinta.isFlagChiusuraPartitaSep());// @DataChiusuraPartitaSep datetime,
+				proc.setDate(45, dateToSqlDate(distinta.getDataChiusuraPartitaSep()));// @DataChiusuraPartitaSep datetime,
+				proc.setString(46, distinta.getNumDisposizioniPagatePartitaSep());// @NumDisposizioniPagatePartitaSep varchar(7),
+				proc.setString(47,  distinta.getImpDisposizioniPagatePartitaSep());// @ImpDisposizioniPagatePartitaSep varchar(20),
+				proc.setString(48, distinta.getNumDisposizioniInsolutePartitaSep());// @NumDisposizioniInsolutePartitaSep varchar(7),
+				proc.setString(49, distinta.getImpDisposizioniiInsolutePartitaSep());// @ImpDisposizioniiInsolutePartitaSep varchar(20),
+				proc.setObject(50, distinta.getTpflusso());// @TPFlusso int,
+				proc.setString(51, distinta.getPrefissoFlusso());// @PrefissoFlusso varchar(255),
+				proc.setObject(52, distinta.getRequiresFirmatario());// @RequiresFirmatario INT = NULL,
+				proc.setString(53, distinta.getTipoSequenzaRid());// @TipoSequenzaRID varchar(4) = NULL,
+				proc.setString(54, distinta.getUserIdfirmatario1());// @UserIDFirmatario1 varchar(10),
+				proc.setString(55, distinta.getUserIdfirmatario2());// @UserIDFirmatario2 varchar(10),
+				proc.setString(56, distinta.getMsgId());// @MsgId varchar(35)
+				
+				proc.execute();
+				
+				res = proc.getString(1);
+					
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				if (tx)
+					tx = rollback();
+				return null;
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+
+	public String firmaDistinta(String tipoFirma, Boolean generaFlusso, Integer idDistintaBanca, AppVariables appVariables) {
+		
+		String res = null;
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(DistintaBanca.class);
+			crit.add(Restrictions.eq("iddistintaBanca", idDistintaBanca));
+			DistintaBanca distinta = (DistintaBanca) crit.uniqueResult(); 
+			
+			Connection connection = getConnection();
+			
+			//CREATE PROCEDURE [dbo].[spFirmaDistinta]
+			//		@SecurityUserId VARCHAR(15),
+			//		@SecurityGuid UNIQUEIDENTIFIER,l
+			//
+			//		@IDDistinta int,
+			//		@IDDistintaBanca int,
+			//		@UserID varchar(10),
+			//		@Utente varchar(50),
+			//		@StepFirma varchar(1),
+			//		@EseguiGenerazioneFlusso bit = 0,
+			//		@LastSaved TIMESTAMP
+	
+			
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spFirmaDistinta(?,?,?,?,?,?,?,?,?)}");
+				
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId()); //@SecurityUserId VARCHAR(15),
+				proc.setString(3, appVariables.getGuid());  //@SecurityGuid UNIQUEIDENTIFIER,
+				proc.setObject(4, distinta.getId());
+				proc.setObject(5, distinta.getIddistintaBanca());
+				proc.setString(6, appVariables.getUserId());
+				proc.setString(7, appVariables.getDenominazioneUtente());
+				proc.setString(8, tipoFirma);
+				proc.setBoolean(9, generaFlusso);
+				proc.setBytes(10, distinta.getLastSaved());
+	
+				proc.execute();
+				
+				res = proc.getString(1);
+						  
+				
+			} catch (Exception e) {
+				res = e.getMessage();
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	
+	public Integer forzaturaInviata(AppVariables appVariables, Integer idDistintaBanca) {
+		boolean tx = startTransaction();
+		
+		try {
+			Connection connection = getConnection();
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spForzaStatoInviataDistinta (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setObject(2, idDistintaBanca);
+				proc.setString(3, appVariables.getUserId());
+				proc.setString(4, appVariables.getDenominazioneUtente());
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				return proc.getInt(1);
+					
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return -1;
+			}
+		} finally {
+			if (tx)
+				commit();
+		}
+
+	}
+}
+

+ 156 - 0
sicura.business/src/dao/DistintaFlussiInputDAO.java

@@ -0,0 +1,156 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.Query;
+import org.hibernate.SQLQuery;
+import org.hibernate.jdbc.ReturningWork;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import bean.LogModificheBean;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.DistintaFlussiInput;
+
+@Repository
+public class DistintaFlussiInputDAO extends GenericDAO<DistintaFlussiInput, Integer> implements IDAO<DistintaFlussiInput, Integer> {
+
+	public Integer getFlussiCount(AppVariables appVariables) {
+		boolean tx=startTransaction();
+		try {
+			String sql = generateQuery(appVariables, true);
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			Integer res = (Integer)q.uniqueResult();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	public List<DistintaFlussiInput> getFlussi(AppVariables appVariables, Integer startFrom, Integer size, String orderField) {
+		boolean tx=startTransaction();
+		try {
+			
+			String sql = generateQuery(appVariables, false);
+			if (orderField==null || "".equals(orderField))
+				sql += " ORDER BY DataCreazione DESC, ID DESC";
+			else
+				sql += getSQLOrderBy(orderField);	
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+		
+			q
+				.addEntity(DistintaFlussiInput.class);
+			if (startFrom!=null && size!=null)  { 
+				q
+					.setFirstResult(startFrom)
+					.setMaxResults(size);
+			}
+	
+			List<DistintaFlussiInput> res = null;
+			try {
+				res = q.list();
+			} catch(Exception ex) {
+				ex.printStackTrace();
+			}
+			
+			return res;		
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	private String generateQuery(AppVariables appVariables, boolean doCount) {
+		String sql;
+		if ("UR".equalsIgnoreCase(appVariables.getProfiloLocale()) || "UO".equalsIgnoreCase(appVariables.getProfiloLocale())) {
+			sql = String.format("Select %s from DistintaFlussiInput WHERE MassiveLoadStatus = 3 AND ( Tipologia='AEA' OR Tipologia='RID' )",
+					(doCount? "count(*)" : "*"));
+		} else {
+			sql = String.format("Select %s from DistintaFlussiInput WHERE MassiveLoadStatus = 3",
+					(doCount? "count(*)" : "*"));
+		}
+		return sql;
+	}
+
+	public String annullaFlusso(Integer id, AppVariables appVariables) {
+		Integer res = -1;
+		//boolean tx = true;
+
+		boolean tx = startTransaction();
+		Connection connection = getConnection();
+		try {
+			DistintaFlussiInput distinta = readNoTransaction(id);
+			
+	
+				/*
+				  CREATE PROCEDURE [dbo].[spAnnullaFlussiInput]
+						@SecurityUserId VARCHAR(15),
+						@SecurityGuid UNIQUEIDENTIFIER,
+					
+						@IDDistintaFlussoInput int,
+						@LastSaved timestamp,
+						@UserID varchar(10),
+						@Utente varchar(50),
+						@Tipologia varchar(20)
+				 */
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spAnnullaFlussiInput (?,?,?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, distinta.getIddistintaFlusso());
+				proc.setBytes(5, distinta.getLastSaved());
+				proc.setString(6, appVariables.getUserId());
+				proc.setString(7,  appVariables.getDenominazioneUtente());
+				proc.setString(8,  distinta.getTipologia());
+	
+				proc.execute();
+				
+				res = proc.getInt(1);
+					
+			} catch (SQLException e) {
+				tx = rollback();
+				e.printStackTrace();
+				return e.getMessage();
+			}
+			
+			return res.toString();
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public List<LogModificheBean> logStati(Integer id) {
+		boolean tx = startTransaction();
+		try {
+			String sql = "select id, userId, data, ora, utente, null as nomeCampo,null as campoPreModifica, cast(campoPostModifica as varchar) as campoPostModifica " +
+						" from LogDistintaFlussiInput where IDDistintaFlusso=:id"+
+						" order by Data, Ora, id";
+					
+			Query q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(LogModificheBean.class));
+			
+			q.setParameter("id", id);	
+			@SuppressWarnings("unchecked")
+			List<LogModificheBean> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+}

+ 151 - 0
sicura.business/src/dao/DistintaFlussiInputNotSedaDAO.java

@@ -0,0 +1,151 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Clob;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import bean.query.TabellaFlussiNonSedaBean;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.DistintaFlussiInputNotSeda;
+
+@Repository
+public class DistintaFlussiInputNotSedaDAO extends GenericDAO<DistintaFlussiInputNotSeda, Integer> implements IDAO<DistintaFlussiInputNotSeda, Integer> {
+
+	public List<TabellaFlussiNonSedaBean> list(){
+		boolean tx = startTransaction();
+		try {
+			String sql = "Select id,tipologia,ltrim(rtrim(NomeSupporto)) nomeSupporto,nonAderenteSEDA,ltrim(rtrim(cast(Descrizione as varchar(2048)))) as descrizione from DistintaFlussiInput_Not_SEDA";
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(TabellaFlussiNonSedaBean.class));
+			q
+				.addScalar("id")
+				.addScalar("tipologia")
+				.addScalar("nomeSupporto")
+				.addScalar("nonAderenteSeda")
+				.addScalar("descrizione");
+			
+			List<TabellaFlussiNonSedaBean> res = q.list();
+
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}			
+	}
+
+	public Integer count(){
+		boolean tx = startTransaction();
+		try {
+			String sql = "Select count(*) from DistintaFlussiInput_Not_SEDA";
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			
+			Integer res = (Integer) q.uniqueResult();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	public Integer delete(Integer id, AppVariables appVariables) {
+		boolean tx = startTransaction();
+		try {
+			
+			/*
+				CREATE PROC [dbo].[spUCBase_DistintaFlussiInput_Not_SEDA_delete]
+					@SecurityUserId VARCHAR(15),
+					@SecurityGuid UNIQUEIDENTIFIER,
+					@ID int
+			 */
+			Integer res = null;
+			Connection connection = getConnection();
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spUCBase_DistintaFlussiInput_Not_SEDA_delete (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, id);
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return null;
+			}
+			
+			return res;
+			
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public Integer save(TabellaFlussiNonSedaBean tbl, AppVariables appVariables) throws Exception {
+		boolean tx = startTransaction();
+		try {
+			Integer res = null;
+			Connection connection = getConnection();
+	
+			/*
+			  CREATE PROC [dbo].[spUCBase_DistintaFlussiInput_Not_SEDA_update]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@ID int,
+				@Tipologia varchar(20),
+				@NomeSupporto varchar(20),
+				@NonAderenteSEDA BIT,
+				@Descrizione varchar(Max)
+			 */
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spUCBase_DistintaFlussiInput_Not_SEDA_update (?,?,?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, tbl.getId());
+				proc.setString(5, tbl.getTipologia());
+				proc.setString(6, tbl.getNomeSupporto());
+				proc.setBoolean(7, tbl.isNonAderenteSeda());
+				proc.setString(8, tbl.getDescrizione());
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+				
+			} catch (SQLException e) {
+				e.printStackTrace();
+				return null;
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}		
+	}
+
+}

+ 168 - 0
sicura.business/src/dao/FirmaDao.java

@@ -0,0 +1,168 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Clob;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import bean.query.TabellaFirmeBean;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.DistintaFlussiInputRequiresFirmatario;
+
+@Repository
+public class FirmaDao extends GenericDAO<DistintaFlussiInputRequiresFirmatario, Integer> implements IDAO<DistintaFlussiInputRequiresFirmatario, Integer> {
+
+	public List<TabellaFirmeBean> list(){
+		boolean tx = startTransaction();
+		try {
+			String sql = "Select id,tipologia,ltrim(rtrim(prefissoFlussoInput)) prefissoFlussoInput,attivaRequiresFirmatario,ltrim(rtrim(cast(Descrizione as varchar(2048)))) as descrizione from DistintaFlussiInput_RequiresFirmatario";
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(TabellaFirmeBean.class));
+			q
+				.addScalar("id")
+				.addScalar("tipologia")
+				.addScalar("prefissoFlussoInput")
+				.addScalar("attivaRequiresFirmatario")
+				.addScalar("descrizione");
+			
+			List<TabellaFirmeBean> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public Integer count(){
+		boolean tx = startTransaction();
+		try {
+			String sql = "Select count(*) from DistintaFlussiInput_RequiresFirmatario";
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			
+			Integer res = (Integer) q.uniqueResult();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+		
+		public Integer delete(Integer id, AppVariables appVariables) {
+			boolean tx = startTransaction();
+			try {
+				
+				/*
+					CREATE PROC [dbo].[spUCBase_DistintaFlussiInput_RequiresFirmatario_delete]
+							@SecurityUserId VARCHAR(15),
+							@SecurityGuid UNIQUEIDENTIFIER,
+						
+							@ID int
+				 */
+				Integer res = null;
+				Connection connection = getConnection();
+				CallableStatement proc;
+				try {
+					proc = connection.prepareCall("{? = call spUCBase_DistintaFlussiInput_RequiresFirmatario_delete (?,?,?)}");
+						
+					proc.registerOutParameter(1, Types.VARCHAR);
+					proc.setString(2, appVariables.getUserId());
+					proc.setString(3, appVariables.getGuid());
+					proc.setObject(4, id);
+					
+					proc.execute();
+					proc.getMoreResults();
+						
+					res = proc.getInt(1);
+						
+				} catch (SQLException e) {
+					e.printStackTrace();
+					return null;
+				}
+				
+				return res;
+
+				
+			} finally {
+				if (tx)
+					tx = commit();
+			}
+			
+//		boolean tx = startTransaction();
+//		try {
+//			String sql = "delete from DistintaFlussiInput_RequiresFirmatario where id=:id";
+//			
+//			SQLQuery q = currentSession().createSQLQuery(sql);
+//			q.setParameter("id", id);
+//			
+//			q.executeUpdate();
+//			
+//		} finally {
+//			if (tx)
+//				tx = commit();
+//		}
+	}
+
+	public String save(TabellaFirmeBean tbl, AppVariables appVariables) throws Exception {
+		boolean tx = startTransaction();
+		try {
+			Integer res = null;
+			Connection connection = getConnection();
+	
+			/*
+			  CREATE PROC [dbo].[spUCBase_DistintaFlussiInput_RequiresFirmatario_update]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@ID int,
+				@Tipologia varchar(20),
+				@PrefissoFlussoInput varchar(255),
+				@AttivaRequiresFirmatario BIT,
+				@Descrizione varchar(Max)
+			 */
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spUCBase_DistintaFlussiInput_RequiresFirmatario_update (?,?,?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, tbl.getId());
+				proc.setString(5, tbl.getTipologia());
+				proc.setString(6, tbl.getPrefissoFlussoInput());
+				proc.setBoolean(7, tbl.isAttivaRequiresFirmatario());
+				proc.setString(8, tbl.getDescrizione());
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+				
+			} catch (SQLException e) {
+				e.printStackTrace();
+				return e.getMessage();
+			}
+			
+			return res.toString();
+		} finally {
+			if (tx)
+				tx = commit();
+		}		
+
+	}
+
+}

+ 222 - 0
sicura.business/src/dao/FunzioniOrdinantiDAO.java

@@ -0,0 +1,222 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.MultiValueMap;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.FunzioniOrdinanti;
+
+@Repository
+public class FunzioniOrdinantiDAO extends SicuraDAO<FunzioniOrdinanti, Integer> implements IDAO<FunzioniOrdinanti, Integer>{
+
+	public List<FunzioniOrdinanti> list(Integer startFrom, Integer size, String filter, String orderField) {
+		boolean tx = startTransaction();
+		try {
+			String sql = generateSql(filter, false);
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			
+			if (filter!=null && !"".equals(filter))
+				q.setParameter("filter", "%" + filter +"%");
+			
+			q.addEntity(FunzioniOrdinanti.class);
+			
+			List<FunzioniOrdinanti> res = null;
+			
+			try {
+				res = q.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	public Integer count(String filter) {
+		boolean tx = startTransaction();
+		
+		try {
+			String sql = generateSql(filter, true);
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			
+			if (filter!=null && !"".equals(filter))
+				q.setParameter("filter", "%" + filter +"%");
+			
+			Integer res = (Integer) q.uniqueResult();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	private String generateSql(String filter, boolean doCount) {
+		String sql = "select " 
+				+ (doCount? "count(*)": "*") + 
+				" from FunzioniOrdinanti ";
+		
+		if (filter!=null && !"".equals(filter))
+			sql += " where FunzioneOrdinante like :filter or Descrizione like :filter";
+		
+		if (!doCount)
+			sql += " order by id asc";
+		return sql;
+	}
+	
+	public List<FunzioniOrdinanti> listForUser(String userId, String guid) {
+		boolean tx = startTransaction();
+		try {
+			//String sql = "exec spSecurityUtenteFunzioni (:userId, :guid)";
+			
+			String sql = "select distinct F.* from FunzioniOrdinanti F join UtentiFunzioni UF on UF.UserId='" + userId + "'";
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			
+			
+			q
+				.addEntity(FunzioniOrdinanti.class)
+			//	.setParameter("userId", userId)
+			//	.setParameter("guid", guid)
+			;
+			
+			List<FunzioniOrdinanti> res;
+			try {
+				 res = q.list();
+			} catch (Exception ex) {
+				res = new ArrayList<FunzioniOrdinanti> ();
+			}
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public Integer delete(Integer id, AppVariables appVariables) {
+		
+		boolean tx = startTransaction();
+		try {
+			
+			/*
+				CREATE PROC [dbo].[spUCBase_FunzioniOrdinanti_delete]
+					@SecurityUserId VARCHAR(15),
+					@SecurityGuid UNIQUEIDENTIFIER,
+				
+					@ID int
+			 */
+			Integer res = null;
+			Connection connection = getConnection();
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spUCBase_FunzioniOrdinanti_delete (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, id);
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+			} catch (SQLException e) {
+				e.printStackTrace();
+				return null;
+			}
+			
+			return res;
+			
+			
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public String save(FunzioniOrdinanti funzione, AppVariables appVariables) {
+		boolean tx = startTransaction();
+		try {
+			
+			
+			Connection connection = getConnection();
+	
+			/*
+			  CREATE PROC [dbo].[spUCBase_FunzioniOrdinanti_update]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@ID int,
+				@FunzioneOrdinante varchar(10),
+				@Descrizione varchar(50),
+				@AbilitaCausali bit,
+				@GestioneDatiContabili bit,
+				@ApprovazioneAutomatica bit,
+				@AbilitaGiroconti bit,
+				@AbilitaCircuitoCassa bit,
+				@AbilitaCircuitoPoste bit
+			 */
+			CallableStatement proc;
+			try {
+
+				if (funzione.getId()!=null && funzione.getId()!=0) {
+					Integer checkResult = checkRecord(appVariables.getUserId(), appVariables.getGuid(), "FunzioniOrdinanti", funzione.getId(), funzione.getLastSaved(), "ID");
+
+					if (checkResult==K_RECORD_MODIFICATO) 
+						return "Record modificato da un altro utente";
+					if (checkResult == K_RECORD_ELIMINATO) {
+						return "Record eliminato da un altro utente";
+					}
+				}
+			
+				proc = connection.prepareCall("{? = call spUCBase_FunzioniOrdinanti_update (?,?,?,?,?,?,?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, funzione.getId());
+				proc.setString(5, funzione.getFunzioneOrdinante());
+				proc.setString(6, funzione.getDescrizione());
+				proc.setBoolean(7, funzione.isAbilitaCausali());
+				proc.setBoolean(8, funzione.isGestioneDatiContabili());
+				proc.setBoolean(9, funzione.isApprovazioneAutomatica());
+				proc.setBoolean(10, funzione.isAbilitaGiroconti());
+				proc.setBoolean(11, funzione.isAbilitaCircuitoCassa());
+				proc.setBoolean(12, funzione.isAbilitaCircuitoPoste());
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				proc.getInt(1);
+					
+				
+			} catch (Exception e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return e.getMessage();
+			}
+			return null;
+		} finally {
+			if (tx)
+				tx = commit();
+		}		
+	}	
+}

+ 87 - 0
sicura.business/src/dao/GenericComboDAO.java

@@ -0,0 +1,87 @@
+package dao;
+
+import java.util.List;
+
+import org.hibernate.SQLQuery;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.context.support.ServletContextParameterFactoryBean;
+
+import bean.BeanSelect;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.ComboDisposizioni;
+
+@Repository
+public class GenericComboDAO extends GenericDAO<ComboDisposizioni, Integer> implements IDAO<ComboDisposizioni, Integer> {
+
+	public List<BeanSelect> getComboValues(String tableName, String tipologia, String campo) {
+		String sql = String.format("select codice, descrizione from %s where Tipologia=:tipologia And Campo=:campo ORDER BY ID",
+				tableName);
+		
+		boolean tx = startTransaction();
+		try {
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(BeanSelect.class));
+			q
+				.setParameter("tipologia", tipologia)
+				.setParameter("campo", campo);		
+			
+			List<BeanSelect> res = q.list();
+			
+			return res;
+			
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}	
+	
+	
+
+	public  List<BeanSelect> getCausaliEsiti() {
+		String sql = "SELECT causale Codice, Descrizione FROM Causali_Esiti WHERE Tipologia='AEA' And Insoluto=1";
+		boolean tx = startTransaction();
+		try {
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(BeanSelect.class));
+			q
+				.addScalar("Codice")
+				.addScalar("Descrizione")
+			;
+			
+			List<BeanSelect> res = q.list();
+			
+			return res;
+			
+		} finally {
+			if (tx)
+				tx = commit();
+		}			
+	}		
+	
+	public String getComboValue(String tableName, String tipologia, String campo, String codice) {
+		String sql = String.format("select descrizione from %s where Tipologia=:tipologia And Campo=:campo and Codice=:codice",
+				tableName);
+		
+//		boolean tx = startTransaction();
+		try {
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q
+				.setParameter("tipologia", tipologia)
+				.setParameter("campo", campo)		
+				.setParameter("codice",codice);
+			
+			String res = (String)q.uniqueResult();
+			
+			return res;
+			
+		} finally {
+//			if (tx)
+//				tx = commit();
+		}
+	}
+
+
+}

+ 191 - 0
sicura.business/src/dao/IstruzioniEstrazioneDistinteBancaDAO.java

@@ -0,0 +1,191 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.annotations.OrderBy;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.IstruzioniEstrazioneDistinteBanca;
+
+@Repository
+public class IstruzioniEstrazioneDistinteBancaDAO 
+		extends GenericDAO<IstruzioniEstrazioneDistinteBanca, Integer> 
+		implements IDAO<IstruzioniEstrazioneDistinteBanca, Integer>{
+			
+		
+	public List<IstruzioniEstrazioneDistinteBanca> getIstruzioni(Integer idPiano) {
+		boolean tx = startTransaction();
+		
+		try {
+			Criteria crit = currentSession().createCriteria(IstruzioniEstrazioneDistinteBanca.class);
+			crit
+				.add(Restrictions.eq("idpianoEstrazione", idPiano))
+				.addOrder(Order.asc("rowNumber"));
+			
+			List<IstruzioniEstrazioneDistinteBanca> res = crit.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	public List<IstruzioniEstrazioneDistinteBanca> getIstruzioniNoTrasaction(Integer idPiano) {
+		
+		Criteria crit = currentSession().createCriteria(IstruzioniEstrazioneDistinteBanca.class);
+		crit
+			.add(Restrictions.eq("idpianoEstrazione", idPiano))
+			.addOrder(Order.asc("rowNumber"));
+		
+		List<IstruzioniEstrazioneDistinteBanca> res = crit.list();
+		
+		return res;
+	}
+	
+	
+	public void zapIstruzioni(Integer idPiano, List<Integer> ids, AppVariables appVariables) {
+
+		/*
+		 CREATE PROC [dbo].[spUCBase_IstruzioniEstrazioneDistinteBanca_delete]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@ID int
+		 */
+		try {
+			Integer res = null;
+			Connection connection = getConnection();
+			
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spUCBase_IstruzioniEstrazioneDistinteBanca_delete (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				
+				
+				for (Integer id:ids) {
+					proc.setObject(4, id);
+					proc.execute();
+					proc.getMoreResults();
+						
+					res = proc.getInt(1);
+				}
+		
+			
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+
+		} finally {
+		}
+			
+	//		if (ids.size()>0) {
+	//		String sql = "delete from IstruzioniEstrazioneDistinteBanca where idPianoEstrazione=:idPiano and id not in (:ids)";
+	//		SQLQuery q = currentSession().createSQLQuery(sql);
+	//		q.setParameter("idPiano", idPiano);
+	//		q.setParameterList("ids", ids);
+	//		q.executeUpdate();
+	//	}
+	
+
+	}
+
+	public Integer saveNoTransaction(IstruzioniEstrazioneDistinteBanca istruzione, AppVariables appVariables) throws Exception{
+		/*
+		 CREATE PROC [dbo].[spUCBase_IstruzioniEstrazioneDistinteBanca_update]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@ID int,
+			@IDPianoEstrazione int,
+			@RowNumber int,
+			@Tipologia varchar(30),
+			@TipoDisposizione varchar(3),
+			@Provenienza varchar(30),
+			@FunzioneOrdinante varchar(50),
+			@SignRangeImportoDa varchar(2),
+			@RangeImportoDa float,
+			@SignRangeImportoA varchar(2),
+			@RangeImportoA float,
+			@ImportoLimiteDistinta float,
+			@MaxNumberDisposizioni varchar(10),
+			@SearchBancaOrdinanteStep1 varchar(2),
+			@SearchBancaOrdinanteStep2 varchar(2),
+			@SearchBancaOrdinanteStep3 varchar(2),
+			@SearchBancaOrdinanteStep4 varchar(2),
+			@SearchBancaOrdinanteStep5 varchar(2),
+			@SearchBancaOrdinanteStep6 varchar(2),
+			@SearchBancaOrdinanteStep7 varchar(2),
+			@SearchBancaOrdinanteStep8 varchar(2),
+			@SearchBancaOrdinanteStep9 varchar(2),
+			@SearchBancaOrdinanteStep10 varchar(2)
+		 */
+		try {
+			Integer res = null;
+			Connection connection = getConnection();
+			
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spUCBase_IstruzioniEstrazioneDistinteBanca_update (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, istruzione.getId());
+				proc.setObject(5, istruzione.getIdpianoEstrazione());
+				proc.setObject(6, istruzione.getRowNumber());
+				proc.setString(7, istruzione.getTipologia());
+				proc.setString(8, istruzione.getTipoDisposizione());
+				proc.setString(9, istruzione.getProvenienza());
+				proc.setString(10, istruzione.getFunzioneOrdinante());
+				proc.setString(11, istruzione.getSignRangeImportoDa());
+				proc.setObject(12, istruzione.getRangeImportoDa());
+				proc.setString(13, istruzione.getSignRangeImportoA());
+				proc.setObject(14, istruzione.getRangeImportoA());
+				proc.setObject(15, istruzione.getImportoLimiteDistinta());
+				proc.setString(16, istruzione.getMaxNumberDisposizioni());
+				proc.setString(17,istruzione.getSearchBancaOrdinanteStep1());
+				proc.setString(18,istruzione.getSearchBancaOrdinanteStep2());
+				proc.setString(19,istruzione.getSearchBancaOrdinanteStep3());
+				proc.setString(20,istruzione.getSearchBancaOrdinanteStep4());
+				proc.setString(21,istruzione.getSearchBancaOrdinanteStep5());
+				proc.setString(22,istruzione.getSearchBancaOrdinanteStep6());
+				proc.setString(23,istruzione.getSearchBancaOrdinanteStep7());
+				proc.setString(24,istruzione.getSearchBancaOrdinanteStep8());
+				proc.setString(25,istruzione.getSearchBancaOrdinanteStep9());
+				proc.setString(26,istruzione.getSearchBancaOrdinanteStep10());
+				
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+				
+			} catch (SQLException ex) {
+				throw ex;
+			}
+			return res;
+		} finally {
+		}		
+		
+	}
+
+}

+ 98 - 0
sicura.business/src/dao/LogSicuraSchedulerDAO.java

@@ -0,0 +1,98 @@
+package dao;
+
+
+import java.util.Date;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.Hibernate;
+import org.hibernate.Query;
+import org.hibernate.SQLQuery;
+import org.hibernate.context.spi.CurrentTenantIdentifierResolver;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.transform.AliasToBeanConstructorResultTransformer;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.hibernate.transform.Transformers;
+import org.hibernate.type.DateType;
+import org.hibernate.type.IntegerType;
+import org.hibernate.type.StringType;
+import org.springframework.stereotype.Repository;
+
+import bean.LogModificheBean;
+import bean.LogServizioBean;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import javassist.bytecode.analysis.Type;
+import sicura.entities.LogSicuraScheduler;
+
+@Repository
+public class LogSicuraSchedulerDAO extends GenericDAO<LogSicuraScheduler, Integer>
+		implements IDAO<LogSicuraScheduler, Integer> {
+	
+	
+	public Integer count(String inputFile) {
+		boolean tx = startTransaction();
+		try {
+			String sql = generateSQL(true, inputFile, null);
+			Query q = currentSession().createSQLQuery(sql);
+					
+			Integer res = ((Integer) q.uniqueResult());
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public List<LogSicuraScheduler> list(int startRecord, int length, String inputFile, String orderBy)  {
+		boolean tx = startTransaction();
+
+		try {
+			String sql = generateSQL(false, inputFile, orderBy);
+			SQLQuery q = currentSession().createSQLQuery(sql).addEntity(LogSicuraScheduler.class);
+			//q.setResultTransformer(new AliasToBeanResultTransformer(LogServizioBean.class));
+			//q.setResultTransformer(Transformers.aliasToBean(LogServizioBean.class));
+			q.setFirstResult(startRecord).setMaxResults(length);
+			
+
+//			q.addScalar("id",IntegerType.INSTANCE);
+//			q.addScalar("dataAcquisizione",DateType.INSTANCE);
+//			q.addScalar("tipoAcquisizione",StringType.INSTANCE);
+//			q.addScalar("esito",StringType.INSTANCE);
+//			q.addScalar("descrizioneEsito",StringType.INSTANCE);
+//			q.addScalar("inputFile",StringType.INSTANCE);
+//			q.addScalar("backupFile",StringType.INSTANCE);
+//			q.addScalar("logServizio",StringType.INSTANCE);
+//			
+			@SuppressWarnings("unchecked")
+			List<LogSicuraScheduler> res = null;
+			try{
+				res = q.list();
+			} catch(Exception ex) {
+				ex.printStackTrace();
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public String generateSQL(boolean count, String inputFile, String orderBy) {
+		String sql = "Select " + 
+					(count
+							? "count(*)"
+							:"*") //id,dataAcquisizione,tipoAcquisizione,esito,descrizioneEsito,inputFile,backupFile,Cast(logServizio as varchar) logServizio")
+			+ " from LogSicuraScheduler ";
+		if (inputFile!=null && !"".equals(inputFile))
+			sql += " where inputFile like '%" + inputFile +"%'";
+		if (orderBy!=null && !"".equals(orderBy))
+			sql += getSQLOrderBy(orderBy);
+		return sql;
+	}
+	
+}

+ 109 - 0
sicura.business/src/dao/LogVariazioniDAO.java

@@ -0,0 +1,109 @@
+package dao;
+
+import java.sql.Clob;
+import java.sql.SQLException;
+import java.util.List;
+
+import javax.sql.rowset.serial.SerialClob;
+import javax.sql.rowset.serial.SerialException;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+
+import bean.LogModificheBean;
+import bean.LogVariazioniBean;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.LogModificheDisposizioni;
+
+@Repository
+public class LogVariazioniDAO extends GenericDAO<LogModificheDisposizioni, Integer> implements IDAO<LogModificheDisposizioni, Integer> {
+
+	public List<LogModificheDisposizioni> listVariazioni(Integer idDisposizione) {
+		
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(LogModificheDisposizioni.class);
+			crit
+				.add(Restrictions.eq("iddisposizione",idDisposizione))
+				.addOrder(Order.asc("data"));
+		    	
+			
+			List<LogModificheDisposizioni> res = crit.list();
+		    
+		    return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	
+	public LogModificheDisposizioni save (LogModificheDisposizioni logModificheDisposizioni) throws Exception {
+		return saveOrUpdate(logModificheDisposizioni);
+	}
+
+
+	public List<LogModificheDisposizioni> saveAll(List<LogModificheDisposizioni> logModificheDisposizioni) throws Exception {
+		boolean tx = startTransaction();
+		try {
+			for(LogModificheDisposizioni log: logModificheDisposizioni) {
+				try {
+					log = saveOrUpdateNoTransaction(log);
+				} catch (Exception ex) {
+					tx = rollback();
+					throw ex;
+				}
+			}
+			return logModificheDisposizioni;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+
+	private Clob clobFromString(String string) throws SerialException, SQLException {
+		Clob clob;
+		clob = new SerialClob(string.toCharArray());
+		return clob;
+	}
+	
+	public void saveAll(String userId, String denominazioneUtente, Integer idDisposizione,List<LogVariazioniBean> logModificheDisposizioni) throws Exception {
+		boolean tx = startTransaction();
+		try {
+		
+			SQLQuery q = currentSession().createSQLQuery("insert into LogModificheDisposizioni(iddisposizione, userid, data, ora, Utente, NomeCampo, CampoPreModifica, CampoPostModifica)" +
+			" values (:iddisposizione, :userid, :data, :ora, :Utente, :NomeCampo, :CampoPreModifica, :CampoPostModifica)");
+			
+			for(LogVariazioniBean log: logModificheDisposizioni) {
+				try {
+					
+					q
+						.setParameter("iddisposizione", idDisposizione)
+						.setParameter("userid", userId)
+						.setParameter("data", log.getTimestamp())
+						.setParameter("ora", log.getTimestamp())
+						.setParameter("Utente", denominazioneUtente)
+						.setParameter("NomeCampo", log.getFieldName())
+						.setParameter("CampoPreModifica", (log.getOldValue()==null?"":log.getOldValue()))
+						.setParameter("CampoPostModifica", (log.getNewValue()==null?"":log.getNewValue()));
+					
+					q.executeUpdate();
+					
+				} catch (Exception ex) {
+					tx = rollback();
+					throw ex;
+				}
+			}
+			
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+}

+ 271 - 0
sicura.business/src/dao/OrdinantiDao.java

@@ -0,0 +1,271 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import javax.persistence.ParameterMode;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.procedure.ProcedureCall;
+import org.hibernate.result.Outputs;
+import org.hibernate.result.UpdateCountOutput;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.MultiValueMap;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.ContiDestinatari;
+import sicura.entities.Ordinanti;
+
+@Repository
+public class OrdinantiDao extends GenericDAO<Ordinanti, Integer> implements IDAO<Ordinanti, Integer> {
+
+	public List<Ordinanti> list(Integer startFrom, Integer length, String filter, String orderField) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(Ordinanti.class);
+			crit
+				.setFirstResult(startFrom)
+				.setMaxResults(length);
+			
+			if (filter!=null)
+				crit.add(Restrictions.ilike("ordinante", "%"+filter+"%"));
+			
+			if (orderField==null || "".equals(orderField))
+				crit.addOrder(Order.asc("id"));
+			else
+				crit.addOrder(getOrderBy(orderField));
+			
+			List<Ordinanti> res = null;
+			
+			try {
+				res = crit.list();
+			} catch(Exception ex) {
+				ex.printStackTrace();
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	public Integer count(String filter) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(Ordinanti.class);
+
+			if (filter!=null)
+				crit.add(Restrictions.ilike("ordinante", "%"+filter+"%"));
+
+			crit
+				.setProjection(Projections.rowCount());			
+			
+			Integer res = ((Long) crit.uniqueResult()).intValue();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public Integer save(Ordinanti ordinante,AppVariables appVariables) throws Exception {
+		
+		/*
+		 CREATE PROCEDURE [dbo].[spModifyOrdinanti]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@IDOrdinante	int,
+			@Ordinante	varchar(96),
+			@CodiceSocietà	varchar(3),
+			@Indirizzo	varchar(30),
+			@Località	varchar(30),
+			@Comune	varchar(30),
+			@Cap	varchar(5),
+			@Provincia	varchar(2),
+			@Abi	varchar(5),
+			@Cab	varchar(5),
+			@Conto	varchar(12),
+			@CodiceFiscale	varchar(16),
+			@CodiceSia	varchar(5),
+			@CodiceSiaRIDutenze	varchar(5),
+			@Firma_Emittente	varchar(20),
+			@TipoRiferimentoCreditore	varchar,
+			@CounterRiferimentoCreditore	varchar(10),
+			@ChiaveProfili	varchar(120),
+			@FlagAggiornaDistintadaArchivio	bit,
+			@FlagAggiornaArchiviodaDistinta	bit,
+			@FlagStampa	bit,
+			@FlagNuoviEsiti	bit,
+			@IdentificativoCreditore varchar(35),
+			@Codice_CUC_Ordinante varchar(35),
+			@LastSaved	timestamp
+		 */
+		
+		boolean tx = startTransaction();
+		Integer res = null;
+
+		byte[] lastSaved;
+		
+		try {
+			
+			try {
+				try {
+					
+					 if (ordinante.getIdordinante()==null || ordinante.getIdordinante()==0) {
+						Integer id=addOrdinante(ordinante, appVariables);
+						ordinante.setIdordinante(id);
+						Ordinanti newOrd = readNoTransaction(id);
+						ordinante.setLastSaved(newOrd.getLastSaved());
+						lastSaved = newOrd.getLastSaved();
+					} else
+						lastSaved = ordinante.getLastSaved();
+
+					 				 
+					Connection connection = getConnection();
+					
+					CallableStatement proc;
+
+					proc = connection.prepareCall("{? = call spModifyOrdinanti (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
+						
+					proc.registerOutParameter(1, Types.VARCHAR);
+					proc.setString(2, appVariables.getUserId());
+					proc.setString(3, appVariables.getGuid());	
+					proc.setObject(4, ordinante.getIdordinante());
+					proc.setString(5, ordinante.getOrdinante());
+					proc.setString(6, ordinante.getCodiceSocietà());
+					proc.setString(7, ordinante.getIndirizzo());
+					proc.setString(8, ordinante.getLocalità());
+					proc.setString(9, ordinante.getComune());
+					proc.setString(10, ordinante.getCap());
+					proc.setString(11, ordinante.getProvincia());
+					proc.setString(12, ordinante.getAbi());
+					proc.setString(13, ordinante.getCab());
+					proc.setString(14, ordinante.getConto());
+					proc.setString(15, ordinante.getCodiceFiscale());
+					proc.setString(16, ordinante.getCodiceSia());
+					proc.setString(17, ordinante.getCodiceSiaRidutenze());
+					proc.setString(18, ordinante.getFirmaEmittente());
+					proc.setString(19, ordinante.getTipoRiferimentoCreditore());
+					proc.setString(20, ordinante.getCounterRiferimentoCreditore());
+					proc.setString(21, ordinante.getChiaveProfili());
+					proc.setBoolean(22, ordinante.isFlagAggiornaDistintadaArchivio());
+					proc.setBoolean(23, ordinante.isFlagAggiornaArchiviodaDistinta());
+					proc.setBoolean(24, ordinante.isFlagStampa());
+					proc.setBoolean(25, ordinante.isFlagNuoviEsiti());
+					proc.setString(26, ordinante.getIdentificativoCreditore());
+					proc.setString(27, ordinante.getCodiceCucOrdinante());
+					proc.setString(28, ordinante.getCodiceSocietaBancoPosta());
+					proc.setBytes(29, lastSaved);
+					
+					
+					proc.execute();
+					proc.getMoreResults();
+						
+					res = proc.getInt(1);					
+					
+				} catch (SQLException ex) {
+					Logger.getRootLogger().error ("Exception in OrdinantiDao.save: "+ex);
+					ex.printStackTrace();
+					throw ex;
+				}
+				return res;
+			} finally {
+			}		
+					
+		
+		} finally {
+			if (tx) {
+				commit();
+				Logger.getRootLogger().error ("OrdinantiDao.save: Transaction committed: ");
+			}
+		}
+	}
+	private Integer addOrdinante(Ordinanti ordinante, AppVariables appVariables) throws SQLException {
+	
+		/*
+		 CREATE PROCEDURE [dbo].[spAddOrdinanti]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER
+		 */
+		
+		Connection connection = getConnection();
+		
+		CallableStatement proc;
+		proc = connection.prepareCall("{? = call spAddOrdinanti (?,?)}");
+		
+		proc.registerOutParameter(1, Types.VARCHAR);
+		proc.setString(2, appVariables.getUserId());
+		proc.setString(3, appVariables.getGuid());	
+		
+		
+		proc.execute();
+		proc.getMoreResults();
+			
+		int res = proc.getInt(1);
+		
+//		commit();
+//		startTransaction();
+//		
+		return res;
+	}
+
+	public Integer delete(Integer idOrdinante,AppVariables appVariables) throws Exception {
+		/*
+		 CREATE PROCEDURE spDeleteOrdinanti
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+			
+			@IDOrdinante INT
+		 */
+		
+		boolean tx = startTransaction();
+		Integer res = null;
+
+		try {
+			
+			try {
+				Connection connection = getConnection();
+				
+				CallableStatement proc;
+				try {
+					proc = connection.prepareCall("{? = call spDeleteOrdinanti (?,?,?)}");
+						
+					proc.registerOutParameter(1, Types.VARCHAR);
+					proc.setString(2, appVariables.getUserId());
+					proc.setString(3, appVariables.getGuid());	
+					proc.setObject(4, idOrdinante);
+					proc.execute();
+					proc.getMoreResults();
+						
+					res = proc.getInt(1);
+						
+					
+				} catch (SQLException ex) {
+					throw ex;
+				}
+				return res;
+			} finally {
+			}		
+					
+		
+		} finally {
+			if (tx)
+				commit();
+		}				
+					
+	}
+	
+}

+ 162 - 0
sicura.business/src/dao/ParamDAO.java

@@ -0,0 +1,162 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import bean.ParamBean;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.Destinatari;
+
+@Repository
+public class ParamDAO extends GenericDAO<ParamBean, String> implements IDAO<ParamBean, String> {
+	
+	private final String K_PATH_EXPORT_TASC = "PathExportDistinteTasc";
+	private final String K_PATH_EXPORT_REMUNEARATION_SEDA = "PathExportRemunerationSeda";
+	private final String K_EMAIL_ALERT = "@mailServiceTo";
+	private final String K_EMAIL_ERRORS = "@mailServiceToWithLogErrori";
+	private final String K_ORE_GIACENZA = "@OreGiacenzaDistEmesse";
+	
+	public ParamBean getParams(AppVariables appVariables) {
+		ParamBean params = new ParamBean();
+		
+		boolean tx = startTransaction();
+		try {
+			params.setPathExportTASC(getAppParam(K_PATH_EXPORT_TASC, appVariables));
+			params.setPathExportRemunerationSEDA(getAppParam(K_PATH_EXPORT_REMUNEARATION_SEDA, appVariables));
+			params.setEmailAlert(getAppParam(K_EMAIL_ALERT, appVariables));
+			params.setEmailToServiceWithLogErrori(getAppParam(K_EMAIL_ERRORS, appVariables));
+			try {
+				params.setOreGiacenzaDistEmesse(Integer.parseInt(getAppParam(K_ORE_GIACENZA, appVariables)));
+			} catch(NumberFormatException ex) {
+				params.setOreGiacenzaDistEmesse(null);
+			}
+
+		} catch (Exception e) {
+			Logger.getRootLogger().error("Errore in lettura parametri applicazione: ", e);
+			e.printStackTrace();
+			
+			tx = false;
+			rollback();
+		} finally {
+			if (tx)
+				commit();
+		}
+		return params;		
+	}
+	
+	public String setParams (ParamBean params, AppVariables appVariables) {
+		boolean tx = startTransaction();
+		String res = null;
+		try {
+			res = setAppParam(K_PATH_EXPORT_TASC, params.getPathExportTASC(), appVariables);
+			//if (res!=null)
+				res = setAppParam(K_PATH_EXPORT_REMUNEARATION_SEDA, params.getPathExportRemunerationSEDA(), appVariables);
+			//if (res!=null)
+				res = setAppParam(K_EMAIL_ALERT, params.getEmailAlert(), appVariables);
+			//if (res!=null)
+				res = setAppParam(K_EMAIL_ERRORS, params.getEmailToServiceWithLogErrori(), appVariables);
+			//if (res!=null)
+				res = setAppParam(K_ORE_GIACENZA, params.getOreGiacenzaDistEmesse().toString(), appVariables);			
+			
+		} catch (Exception e) {
+			Logger.getRootLogger().error("Errore in salvataggio parametri applicazione: ", e);
+			e.printStackTrace();
+			
+			tx = false;
+			rollback();
+		} finally {
+			if (tx)
+				commit();
+		}
+		
+		return res;
+	}
+	
+
+	private String getAppParam (String nomeParametro, AppVariables appVariables) {
+		//boolean tx = startTransaction();
+		
+		try {
+			String res = null;
+			Connection connection = getConnection();
+	
+			/*
+			  CREATE PROC [dbo].[spGetAppParam]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+				@Parametro varchar(50)
+			 */
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spGetAppParam (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setString(4, nomeParametro);
+				
+				proc.execute();
+				
+				ResultSet rs = proc.getResultSet();
+				rs.next();
+				res = rs.getString(1);
+//				proc.getMoreResults();
+//					
+//				res = proc.getString(1);
+					
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return null;
+			}
+			
+			return res;
+		} finally {
+//			if (tx)
+//				tx = commit();
+		}
+	}
+	
+	private String setAppParam(String paramName, String paramValue,AppVariables appVariables) throws SQLException {
+		/*
+ 			CREATE PROC [dbo].[spUCBase_AppParam_update]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+		
+				@Parametro varchar(50),
+				@Valore varchar(200)
+		*/
+		
+		String res = null;
+		Connection connection = getConnection();
+		
+		CallableStatement proc;
+		proc = connection.prepareCall("{? = call spUCBase_AppParam_update (?,?,?,?)}");
+		
+		proc.registerOutParameter(1, Types.VARCHAR);
+		proc.setString(2, appVariables.getUserId());
+		proc.setString(3, appVariables.getGuid());	
+		proc.setString(4, paramName);
+		proc.setString(5, paramValue);
+		
+		
+		boolean bres = proc.execute();
+		if (bres)
+			res = "OK";
+		if (proc.getMoreResults())
+			res = proc.getString(1);
+			
+		return res;
+	}
+	
+	
+}

+ 297 - 0
sicura.business/src/dao/PianiEstrazioneDistinteBancaDAO.java

@@ -0,0 +1,297 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.type.DateType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.MultiValueMap;
+
+import bean.AppVariables;
+import bean.PianoEstrattoreDistinte;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.DistintaFlussiInput;
+import sicura.entities.IstruzioniEstrazioneDistinteBanca;
+import sicura.entities.PianiEstrazioneDistinteBanca;
+
+@Repository
+public class PianiEstrazioneDistinteBancaDAO 
+			extends GenericDAO<PianiEstrazioneDistinteBanca, Integer> 
+			implements IDAO<PianiEstrazioneDistinteBanca, Integer> {
+	
+	@Autowired
+	IstruzioniEstrazioneDistinteBancaDAO istruzioniDAO;
+	
+	public List<PianiEstrazioneDistinteBanca> list() {
+		boolean tx = startTransaction();
+		try {
+		
+			Criteria crit = currentSession().createCriteria(PianiEstrazioneDistinteBanca.class);
+			crit.addOrder(Order.asc("id"));
+			
+			@SuppressWarnings("unchecked")
+			List<PianiEstrazioneDistinteBanca> res = crit.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	
+
+	
+	public PianoEstrattoreDistinte caricaPianoEstrattore(Integer id) {
+		boolean tx = startTransaction();
+		try {
+			PianoEstrattoreDistinte piano = new PianoEstrattoreDistinte();
+			PianiEstrazioneDistinteBanca pianoEstrazione = read(id);
+			piano.setPiano(pianoEstrazione);
+			
+			return piano;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public List<IstruzioniEstrazioneDistinteBanca> getIstruzioni(Integer id) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(IstruzioniEstrazioneDistinteBanca.class);
+			crit.add(Restrictions.eq("idpianoEstrazione", id))
+				.addOrder(Order.asc("rowNumber"));
+			
+			List<IstruzioniEstrazioneDistinteBanca> res = crit.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public IstruzioniEstrazioneDistinteBanca getNewIstruzione(Integer id) {
+		IstruzioniEstrazioneDistinteBanca res = new IstruzioniEstrazioneDistinteBanca();
+		res.setId(0);
+		res.setIdpianoEstrazione(id);
+		res.setRowNumber(countIstruzioni(id)+1);
+		return res;
+	}
+
+	private int countIstruzioni(Integer id) {
+		if (id==null)
+			return 0;
+		//boolean tx = startTransaction();
+		try{
+			String sql = "select coalesce(max (rowNumber),0) from IstruzioniEstrazioneDistinteBanca where idPianoEstrazione=" + id;
+			Integer res = (Integer) executeGenericQuerySingleRow(sql);
+			return res;
+		} finally {
+//			if (tx)
+//				tx = commit();
+		}
+	}
+
+	public String execute(Integer idPiano, AppVariables appVariables) {
+
+		/*
+		  CREATE PROCEDURE [dbo].[spEstraiByPiano]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@PianoID int,
+			@UserID varchar(10) = null,
+			@DenominazioneUtente varchar(50) = 'Sistema'
+		 */
+
+		Integer res = -1;
+		boolean tx = startTransaction();
+		try {
+			
+			Connection connection = getConnection();
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spEstraiByPiano (?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, idPiano);
+				proc.setString(5,  appVariables.getUserId());
+				proc.setString(6,  appVariables.getDenominazioneUtente());
+	
+				proc.execute();
+				
+				res = new Integer(proc.getInt(1));
+					
+			} catch (SQLException e) {
+				tx =rollback();
+				e.printStackTrace();
+				return e.getMessage();
+			}
+			
+			return res.toString();
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public Integer saveNoTransaction(PianiEstrazioneDistinteBanca pianoEstrazione,AppVariables appVariables) throws Exception{
+		/*
+		 CREATE PROC [dbo].[spUCBase_PianiEstrazioneDistinteBanca_update]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@ID int,
+				@Denominazione varchar(50),
+				@Enabled bit,
+				@ScheduledDay1 bit,
+				@ScheduledDay2 bit,
+				@ScheduledDay3 bit,
+				@ScheduledDay4 bit,
+				@ScheduledDay5 bit,
+				@ScheduledDay6 bit,
+				@ScheduledDay7 bit,
+				@StartTime datetime,
+				@StatoDisposizioneDaEstrarre varchar(15),
+				@CutOffDataCreazioneDisposizione datetime,
+				@StatusLastExecution int,
+				@LastExecution datetime,
+				@IDContoDefault1 int,
+				@IDContoDefault2 int,
+				@UsedByService bit,
+				@ABIOrdinante varchar(5),
+				@UsaTipoSequenzaRID BIT = 0
+		 */
+		
+		Integer res = null;
+		try {
+			Connection connection = getConnection();
+			
+			CallableStatement proc;
+			proc = connection.prepareCall("{? = call spUCBase_PianiEstrazioneDistinteBanca_update (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
+				
+			if (pianoEstrazione.getId()==null)
+				pianoEstrazione.setId(0);
+			
+			proc.registerOutParameter(1, Types.VARCHAR);
+			proc.setString(2, appVariables.getUserId());
+			proc.setString(3, appVariables.getGuid());
+			proc.setObject(4, pianoEstrazione.getId());
+			proc.setString(5, pianoEstrazione.getDenominazione());
+			proc.setBoolean(6, pianoEstrazione.isEnabled());
+			proc.setBoolean(7, pianoEstrazione.isScheduledDay1());
+			proc.setBoolean(8, pianoEstrazione.isScheduledDay2());
+			proc.setBoolean(9, pianoEstrazione.isScheduledDay3());
+			proc.setBoolean(10, pianoEstrazione.isScheduledDay4());
+			proc.setBoolean(11, pianoEstrazione.isScheduledDay5());
+			proc.setBoolean(12, pianoEstrazione.isScheduledDay6());
+			proc.setBoolean(13, pianoEstrazione.isScheduledDay7());
+			proc.setTimestamp(14, dateToSqlTimestamp(pianoEstrazione.getStartTime()));
+			proc.setString(15, pianoEstrazione.getStatoDisposizioneDaEstrarre());
+			proc.setTimestamp(16, dateToSqlTimestamp(pianoEstrazione.getCutOffDataCreazioneDisposizione()));
+			proc.setObject(17,pianoEstrazione.getStatusLastExecution());
+			proc.setDate(18, dateToSqlDate(pianoEstrazione.getLastExecution()));
+			proc.setObject(19, pianoEstrazione.getIdcontoDefault1());
+			proc.setObject(20, pianoEstrazione.getIdcontoDefault2());
+			proc.setBoolean(21, pianoEstrazione.isUsedByService());
+			proc.setString(22, pianoEstrazione.getAbiordinante());
+			proc.setBoolean(23, pianoEstrazione.isUsaTipoSequenzaRid());
+			
+			proc.execute();
+			proc.getMoreResults();
+				
+			res = proc.getInt(1);
+				
+		} catch (Exception ex) {
+			throw ex;
+		} 
+
+		return res;
+
+	}
+
+	public Integer delete(Integer id, AppVariables appVariables) {
+		/*
+		 CREATE PROC [dbo].[spUCBase_PianiEstrazioneDistinteBanca_delete]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@ID int
+		 */
+		Integer res = null;
+		boolean tx = startTransaction();
+		try {
+			try {
+				Connection connection = getConnection();
+				
+				deleteIstruzioni(id, appVariables);
+				
+				CallableStatement proc;
+				proc = connection.prepareCall("{? = call spUCBase_PianiEstrazioneDistinteBanca_delete (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4,id);
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+			} catch (Exception ex) {
+				res = -1;
+			} 
+		
+		} finally {
+			if (tx)
+				commit();
+		}
+		return res;
+	}
+
+
+
+
+	private void deleteIstruzioni(Integer id, AppVariables appVariables) throws SQLException {
+		/* 
+		  CREATE PROC [dbo].[spUCBase_IstruzioniEstrazioneDistinteBanca_delete]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@ID int
+		 */
+		
+		
+		List<IstruzioniEstrazioneDistinteBanca> istruzioni = istruzioniDAO.getIstruzioniNoTrasaction(id);
+		Connection connection = getConnection();
+		CallableStatement proc;
+		proc = connection.prepareCall("{? = call spUCBase_IstruzioniEstrazioneDistinteBanca_delete (?,?,?)}");
+			
+		for(IstruzioniEstrazioneDistinteBanca istruzione: istruzioni) {
+			proc.registerOutParameter(1, Types.VARCHAR);
+			proc.setString(2, appVariables.getUserId());
+			proc.setString(3, appVariables.getGuid());
+			proc.setObject(4,istruzione.getId());
+			
+			proc.execute();
+			proc.getMoreResults();
+		}
+		
+		
+			
+	}
+}

+ 177 - 0
sicura.business/src/dao/PianiEstrazioneTipoFlussoDao.java

@@ -0,0 +1,177 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hibernate.SQLQuery;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.PianiEstrazioneDistinteBancaTipoFlusso;
+
+@Repository
+public class PianiEstrazioneTipoFlussoDao extends GenericDAO<PianiEstrazioneDistinteBancaTipoFlusso, Integer> implements IDAO<PianiEstrazioneDistinteBancaTipoFlusso, Integer> {
+
+	public List<PianiEstrazioneDistinteBancaTipoFlusso> listFor(Integer idPiano) {
+		
+		boolean tx = startTransaction();
+		try {
+			String sql = "Select * from PianiEstrazioneDistinteBanca_TipoFlusso WHERE PianiEstrazioneDistinteBancaID=:idPiano ORDER BY ID ASC";
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q
+				.addEntity(PianiEstrazioneDistinteBancaTipoFlusso.class)
+				.setParameter("idPiano", idPiano);
+	
+			List<PianiEstrazioneDistinteBancaTipoFlusso> res = q.list();
+			
+			
+	//		Criteria crit = currentSession().createCriteria(VdelegatoFirmaEstrattoreDistinte.class);
+	//		//crit
+	//		//	.addOrder(Order.asc("id.importoLimiteFirma"));
+	//	    	
+	//		//  res.get(0).getId()
+	//		
+	//		List<VdelegatoFirmaEstrattoreDistinte> res = crit.list();
+		    
+		    return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public PianiEstrazioneDistinteBancaTipoFlusso newInstance(Integer idPiano) {
+		PianiEstrazioneDistinteBancaTipoFlusso res = new PianiEstrazioneDistinteBancaTipoFlusso();
+		res.setPianiEstrazioneDistinteBancaId(idPiano);
+		return res;
+	}
+
+	public Integer delete(Integer id, AppVariables appVariables) {
+		/*
+		 CREATE PROC [dbo].[spUCBase_PianiEstrazioneDistinteBanca_delete]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@ID int
+		 */
+
+		boolean tx = startTransaction();
+		try {
+
+			Integer res = null;
+			Connection connection = getConnection();
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spUCBase_PianiEstrazioneDistinteBanca_TipoFlusso_delete (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, id);
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return null;
+			}
+			
+			return res;
+			
+			
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public boolean save(Integer idPiano, List<PianiEstrazioneDistinteBancaTipoFlusso> pianiEstrazioneDistinteBancaTipoFlusso, List<Integer> idCancellati, AppVariables appVariables) {
+		boolean tx = startTransaction();
+		try {
+			boolean res;
+			
+			try {
+				for(Integer id: idCancellati)
+					delete(id, appVariables);
+				
+				for (PianiEstrazioneDistinteBancaTipoFlusso opzione: pianiEstrazioneDistinteBancaTipoFlusso)
+					save(opzione, appVariables);
+				
+				res = true;
+			} catch (Exception ex) {
+				ex.printStackTrace();
+				res = false;
+				if (tx)
+					tx = rollback();
+			}			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	private void save(PianiEstrazioneDistinteBancaTipoFlusso opzione, AppVariables appVariables) {
+		/* 
+		 CREATE PROC [dbo].[spUCBase_PianiEstrazioneDistinteBanca_TipoFlusso_update]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@ID int,
+			@PianiEstrazioneDistinteBancaID int,
+			@TipologiaEstrazione int,
+			@ABIOrdinante varchar(5),
+			@Attivo bit,
+			@Valore varchar(255)
+		 */
+		
+		boolean tx = startTransaction();
+		try {
+
+			Integer res = null;
+			Connection connection = getConnection();				
+
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spUCBase_PianiEstrazioneDistinteBanca_TipoFlusso_update (?,?,?,?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, opzione.getId());
+				proc.setObject(5, opzione.getPianiEstrazioneDistinteBancaId());
+				proc.setObject(6, opzione.getTipologiaEstrazione());
+				proc.setString(7, opzione.getAbiordinante());
+				proc.setBoolean(8, opzione.isAttivo());
+				proc.setString(9, opzione.getValore());
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+			
+			
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+		
+	}
+
+}

+ 30 - 0
sicura.business/src/dao/ProvenienzaDAO.java

@@ -0,0 +1,30 @@
+package dao;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hibernate.SQLQuery;
+import org.springframework.stereotype.Repository;
+
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+
+@Repository
+public class ProvenienzaDAO extends GenericDAO<String, Integer> implements IDAO<String, Integer> {
+
+	public List<String> getProvenienze(String tipo) {
+		boolean tx = startTransaction();
+		try {
+			String sql = "select distinct provenienzaDisposizione from disposizioni_" + tipo + " order by provenienzaDisposizione";
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			
+			List<String> res=q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+}

+ 411 - 0
sicura.business/src/dao/RemunerationDao.java

@@ -0,0 +1,411 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projection;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.MultiValueMap;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import common.utility.StringUtilities;
+import sicura.entities.ApAbi;
+import sicura.entities.RemunerationDetail;
+import sicura.entities.RemunerationHeader;
+import sicura.entities.RemunerationPrevisioning;
+
+@Repository
+public class RemunerationDao extends GenericDAO<RemunerationHeader, Integer> implements IDAO<RemunerationHeader, Integer> {
+
+	public List<RemunerationHeader> getHeader(String codiceSia, int startFrom, int length) {
+		
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(RemunerationHeader.class);
+			crit
+				.addOrder(Order.desc("idremuneration"))
+				.setFirstResult(startFrom)
+				.setMaxResults(length);
+		    	
+			if (codiceSia!=null && !"".equals(codiceSia))
+				crit.add(Restrictions.eq("codiceSia", codiceSia));
+				
+			List<RemunerationHeader> res = crit.list();
+		    
+		    return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	public Integer getHeaderCount(String codiceSia) {
+		
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(RemunerationHeader.class);
+			
+			if (codiceSia!=null && !"".equals(codiceSia))
+				crit.add(Restrictions.eq("codiceSia", codiceSia));
+	
+			crit.setProjection(Projections.rowCount());
+			
+			Integer res = ((Long)crit.uniqueResult()).intValue();
+		    
+		    return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	
+	public List<RemunerationPrevisioning> getProvisioning(int idRemuneration, int startFrom, int length) {
+		
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(RemunerationPrevisioning.class);
+			
+			//SELECT * FROM Remuneration_Previsioning WHERE IDRemuneration=? ORDER BY DataRendi DESC,Anno DESC,Trimestre DESC,CreditorID,BIC_Creditore,BIC_Debitore
+			crit.add(Restrictions.eq("idremuneration", idRemuneration))
+				.addOrder(Order.desc("datarendi"))
+				.addOrder(Order.desc("anno"))
+				.addOrder(Order.desc("trimestre"))
+				.addOrder(Order.asc("creditorId"))
+				.addOrder(Order.asc("bicCreditore"))
+				.addOrder(Order.asc("bicDebitore"));
+			
+			if (startFrom>=0 && length>0)
+				crit.setFirstResult(startFrom)
+					.setMaxResults(length);
+		    	
+			List<RemunerationPrevisioning> res = crit.list();
+		    
+		    return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public List<RemunerationDetail> getDetails(int idPrevisioning, int startFrom, int length, String orderBy) {
+		
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(RemunerationDetail.class);
+			
+			if (StringUtilities.empty(orderBy))
+				orderBy = "iddetail";
+			
+			//SELECT * FROM Remuneration_Previsioning WHERE IDRemuneration=? ORDER BY DataRendi DESC,Anno DESC,Trimestre DESC,CreditorID,BIC_Creditore,BIC_Debitore
+			crit.add(Restrictions.eq("idprevisioning", idPrevisioning))
+				.addOrder(getOrderBy(orderBy));
+			
+			
+			if (startFrom>0 && length>0)
+				crit
+					.setFirstResult(startFrom)
+					.setMaxResults(length);
+		    	
+			
+			List<RemunerationDetail> res = null;
+			
+			try {
+				res = crit.list();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+			}
+		    
+		    return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	
+	public Integer getDetailsCount(int idPrevisioning) {
+		
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(RemunerationDetail.class);
+			
+			crit.add(Restrictions.eq("idprevisioning", idPrevisioning))
+				.setProjection(Projections.rowCount());	    	
+			
+			Integer res = ((Long)crit.uniqueResult()).intValue();
+		    
+		    return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+
+	public Integer getProvisioningCount(int idRemuneration) {
+		
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(RemunerationPrevisioning.class);
+			
+			crit.add(Restrictions.eq("idremuneration", idRemuneration))
+				.setProjection(Projections.rowCount());	    	
+			
+			Integer res = ((Long)crit.uniqueResult()).intValue();
+		    
+		    return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public List<String> getCodiciSia() {
+		boolean tx = startTransaction();
+		try {
+			SQLQuery q=currentSession().createSQLQuery("Select DISTINCT CodiceSIA from Remuneration_Header ORDER BY CodiceSIA");
+			List<String> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public String generaRichiestaDettaglioMandati(AppVariables appVariables,Integer id, Integer idDettaglio, Boolean all, String tipoDettaglio, String tipoRichiesta) {
+		
+		String parametri = (all? "1" : "0") + "|";
+		parametri += id.toString() + "|";
+		parametri += (idDettaglio!=null? idDettaglio : "") + "|"; // non c'e' il dettaglio in questa richiesta
+		parametri += tipoDettaglio + "|" + tipoRichiesta;
+		
+		// CREATE PROCEDURE [dbo].[spMI_NewServiceOperation]
+		//   @SecurityUserId VARCHAR(15),
+		//   @SecurityGuid UNIQUEIDENTIFIER,
+		//   @NomeAttivita VARCHAR(255),
+		//   @Parametri VARCHAR(MAX)
+		
+		boolean tx = startTransaction();
+		try {
+			Connection connection = getConnection();
+			String res = "-1";
+			
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spMI_NewServiceOperation (?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setString(4, "GENERAREMUNERATION");
+				proc.setString(5, parametri);
+				
+				proc.execute();
+					
+				//res = new Integer(proc.getInt(1)).toString();
+				
+				res = "";
+				return res;
+				
+			} catch (SQLException e) {
+				if (tx)
+					tx = rollback();
+				e.printStackTrace();
+				return e.getMessage();
+			}
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+		
+	}
+
+	public String quadra(AppVariables appVariables, Integer id, Integer idDetail) {
+		
+		// CREATE PROCEDURE [dbo].[spQuadraRemuneration_Previsioning]
+		//	@SecurityUserId VARCHAR(15),
+		//	@SecurityGuid UNIQUEIDENTIFIER,
+		//	@IDRemuneration INT = NULL,
+		//	@IDPrevisioning INT = NULL
+		
+		boolean tx = startTransaction();
+		try {
+			Connection connection = getConnection();
+			String res = "-1";
+			
+			CallableStatement proc;
+			try {
+				if (idDetail==null)
+					proc = connection.prepareCall("{? = call spQuadraRemuneration_Previsioning (?,?,?)}");
+				else
+					proc = connection.prepareCall("{? = call spQuadraRemuneration_Previsioning (?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, id);
+				if (idDetail!=null)
+					proc.setObject(5,idDetail);
+				
+				proc.execute();
+					
+				res = new Integer(proc.getInt(1)).toString();
+				
+			} catch (SQLException e) {
+				if (tx)
+					tx = rollback();
+				e.printStackTrace();
+				return e.getMessage();
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public List<String> exportMessaggi(AppVariables appVariables, Integer idRemuneration) {
+		List<RemunerationPrevisioning> data = getProvisioning(idRemuneration, 0, 99999);
+		
+		
+		List<String> res = new ArrayList<String>();
+				
+		res.add("Data Messaggio Banca;Anno;Trimestre;Identificativo Creditore;BIC Creditore;BIC Debitore;N° CMF;Prezzo Unitario CMF;Totale CMF;N° DMF;Prezzo Unitario DMF;Totale DMF;Totale Flat;"+
+				"Costo Totale Trimestre;Quadratura trimestre;N.CMF+DMF acquisiti;N.CMF+DMF calcolati;Data ultima quadratura;Richiesta Dettaglio;Esito;Descrizione Esito Richiesta Mandati;Data Richiesta;"+
+				"Tipo Dettaglio;Tipo Richiesta;Data Esito;Identificativo Rendiconto Previsionale");
+	
+		SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
+		
+		for (RemunerationPrevisioning prov: data) {
+				res.add(exportCsvField(safeDate(prov.getDatarendi(), sdf)) +
+						exportCsvField(prov.getAnno()) +
+						exportCsvField(prov.getTrimestre()) + 
+						exportCsvField(prov.getCreditorId())+
+						exportCsvField(prov.getBicCreditore())+ 
+						exportCsvField(prov.getBicDebitore())+ 
+						exportCsvField(prov.getNumeroCmf())+ 
+						exportCsvField(prov.getPrezzoUnitarioCmf())+
+						exportCsvField(prov.getTotaleCmfUnitOrFlat()) +
+						exportCsvField(prov.getNumeroDmf())+
+						exportCsvField(prov.getPrezzoUnitarioDmf())+
+						exportCsvField(prov.getTotaleDmfUnitOrFlat())+
+						exportCsvField(prov.getPrezzoFlatTotale())+
+						exportCsvField(prov.getImportoTotaleRemuneration())+
+						exportCsvField(prov.getTotaleCmfDmfQuadratura())+
+						exportCsvField(prov.getTotaleCmfDmf())+
+						exportCsvField(prov.getTotaleCmfDmfCarico())+
+						exportCsvField(prov.getDataUltimaQuadratura(),sdf)+
+						exportCsvField(prov.isFlagRichiestaDetail()) +
+						exportCsvField(prov.getEsitoRichiestaDetail())+
+						exportCsvField(prov.getDescrizioneEsitoRichiestaDetail())+
+						exportCsvField(prov.getDataRichiestaDetail())+
+						exportCsvField(decodeTipoDettaglio(prov.getRichiestaMndtTp()))+
+						exportCsvField(decodeTipoRichiesta(prov.getRichiestaRqstTp()))+
+						exportCsvField(prov.getDataEsitoRichiestaDetail())+
+						exportCsvField(prov.getPrevisioningIdentification())
+			);			
+		}
+
+		marcaComeEsportato(idRemuneration, appVariables);
+		
+		return res;
+	}
+
+	
+	private void marcaComeEsportato(Integer idRemuneration, AppVariables appVariables) {
+		boolean tx = startTransaction();
+		try {
+			Connection connection = getConnection();
+			String res = "-1";
+			
+			/*
+			 CREATE PROCEDURE [dbo].[spMI_SetExportRemuneration_Header]
+				@SecurityUserId VARCHAR(15),
+				@SecurityGuid UNIQUEIDENTIFIER,
+			
+				@IDRemuneration INT
+			 */
+			
+			CallableStatement proc;
+			try {
+					proc = connection.prepareCall("{? = call spMI_SetExportRemuneration_Header (?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, idRemuneration);
+				
+				proc.execute();
+					
+				res = new Integer(proc.getInt(1)).toString();
+				
+			} catch (SQLException e) {
+				if (tx)
+					tx = rollback();
+				e.printStackTrace();
+			}
+			
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+		
+	}
+
+	private String decodeTipoDettaglio(String tipo) {
+		if ("CMF".equals(tipo))
+			return "Solo mandati rilasciati presso il beneficiario";
+		if ("DMF".equals(tipo))
+			return "Solo mandati rilasciati presso PSP (Banca) del pagatore";
+		if ("ALL".equals(tipo))
+			return "Tutti i mandati";
+		return "";
+	}
+		
+	private String decodeTipoRichiesta(String tipo) {
+		if ("ALL".equalsIgnoreCase(tipo))
+			return "Tutti i Mandati attivi nel periodo di riferimento";
+		if ("CHG".equalsIgnoreCase(tipo))
+			return "Mandati attivati nel periodo di riferimento e mandati revocati o disattivati nel periodo di riferimento precedente";
+		return "";
+	}
+
+	public RemunerationPrevisioning getProvisioning(Integer idPrevisioning) {
+		boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(RemunerationPrevisioning.class);
+			crit
+				.add(Restrictions.eq("idprevisioning", idPrevisioning));
+		    	
+			List<RemunerationPrevisioning> res = crit.list();
+		    
+			if (res.size()>0)
+				return res.get(0);
+			else 
+				return null;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+
+
+	
+}
+ 

+ 178 - 0
sicura.business/src/dao/ServiceUIDAO.java

@@ -0,0 +1,178 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Query;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import bean.FileBean;
+import bean.query.ServiceUIBean;
+import common.bean.UserData;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.ServiceUI;
+
+@Repository
+public class ServiceUIDAO extends GenericDAO<ServiceUI, Integer> implements IDAO<ServiceUI, Integer> {
+
+	public Integer count(UserData userdata, AppVariables appVariables){
+
+		Integer res=0;
+		boolean tx = startTransaction();
+		try {
+			String sql = generateSQL(userdata.getUserId(), true);
+			
+			Query q = currentSession().createSQLQuery(sql);
+			res = (Integer) q.uniqueResult();
+			
+		} finally {
+			if (tx)
+				commit();
+		}
+		
+		return res;
+	}
+	
+	public List<ServiceUI> list(UserData userdata, AppVariables appVariables){
+	
+		List<ServiceUI> res;
+		
+		boolean tx = startTransaction();
+		try {
+			String sql = generateSQL(userdata.getUserId(), false);
+			
+			Query q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(ServiceUIBean.class));
+			res = q.list();
+			
+		} finally {
+			if (tx)
+				commit();
+		}
+		
+		return res;
+	}
+	
+	public FileBean  getFile(int idServiceUI) {
+		
+		FileBean res = null;
+		
+		ServiceUI serviceUI = read(idServiceUI);
+		
+		if (serviceUI!=null && serviceUI.getFileOut()!=null) {
+			res = new FileBean();
+			try {
+				res.setBytes(serviceUI.getFileOut().getBytes(1, (int) serviceUI.getFileOut().length()));
+				res.setFilename(serviceUI.getFilenameOut());
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return null;
+			}
+			return res;
+		} else
+			return null;
+		
+		
+		/*
+		boolean tx = startTransaction();
+		String res="";
+		try {
+			String sql = "select fileOut from serviceUI where idServiceUI=" + idServiceUI;
+			Query q = currentSession().createSQLQuery(sql);
+			
+			res = (String) q.uniqueResult();
+			
+			return res;
+			
+		} finally {
+			if (tx)
+				commit();
+		}
+		*/
+	}
+	
+	private String generateSQL(long userID,boolean doCount) {
+		return "select " + (doCount? "count(*)":
+			" idServiceUI," + 
+			" tipoRichiesta," + 
+			" userIDRichiesta," + 
+			" filenameIn, " +
+			" filenameOut," + 
+			" dataRichiesta," + 
+			" dataCancellazioneFiles," + 
+			" dataInizioEsecuzione," + 
+			" dataFineEsecuzione," + 
+			" cast(esitoEsecuzione as varchar(2048)) esitoEsecuzione," +
+			" cast(logEsecuzione as varchar(2048)) as logEsecuzione," +
+			" statoRichiesta "
+			) +" from ServiceUI with (nolock) "+ //where DataCancellazioneFiles is null and UserIdRichiesta=" + userID;
+			(doCount? "": " order by idServiceUI desc");
+	}
+
+	public boolean addFile(UserData userData, AppVariables appVariables, byte[] bytes, String filename) {
+		
+		try {
+			Integer res = null;
+			boolean tx = startTransaction();
+			try {
+			
+				Connection connection = getConnection();
+				
+				CallableStatement proc;
+		
+				// crea richiesta
+				proc = connection.prepareCall("{? = call spAddServiceUI (?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				
+				proc.setString(2, "EXPORTSCTLISTA"); // tipo richiesta
+				proc.setObject(3, null); //parametri 1
+				proc.setBytes(4, bytes); //parametri 1
+				proc.setString(5, appVariables.getUserId());	
+				proc.setString(6, filename);
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);	
+				
+				// invia richiesta
+				proc = connection.prepareCall("{? = call spMI_NewServiceOperation (?,?,?,?)}");
+				
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());	
+	
+				proc.setString(4, "EXPORTSCTLISTA"); // nome attività
+				proc.setObject(5, res); //parametri 1
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);	
+				
+				return true;
+			} finally {
+				if (tx)
+					commit();
+			}
+			
+		} catch (SQLException ex) {
+			Logger.getRootLogger().error ("Exception in ServiceUIDAO.addFile: "+ex);
+			ex.printStackTrace();
+			return false;
+		}
+		
+	
+		
+	}
+}

+ 55 - 0
sicura.business/src/dao/SicuraDAO.java

@@ -0,0 +1,55 @@
+package dao;
+
+import java.io.Serializable;
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.Types;
+
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+
+public class SicuraDAO<T, ID extends Serializable>  extends GenericDAO<T, ID> implements IDAO<T, ID> {
+	
+	public final Integer K_RECORD_MODIFICATO=4;
+	public final Integer K_RECORD_ELIMINATO=5;
+	
+	public Integer checkRecord(String SecurityUserId, String guid, String entityName, Integer id, byte[] lastSaved, String idFieldName) 
+		throws Exception{
+		/*
+		 CREATE PROCEDURE [dbo].[spCheckRecord]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@TableName	varchar(255),
+			@ID	int,
+			@LastSaved	timestamp,
+			@CampoID varchar(20)
+		 */
+		
+		Integer res = null;
+		try {
+			Connection connection = getConnection();
+			
+			CallableStatement proc;
+			proc = connection.prepareCall("{? = call spCheckRecord(?,?,?,?,?,?)}");
+			
+			proc.registerOutParameter(1, Types.VARCHAR);
+			proc.setString(2, SecurityUserId);
+			proc.setString(3, guid);
+			proc.setString(4, entityName);
+			proc.setObject(5, id);
+			proc.setBytes(6, lastSaved);
+			proc.setString(7, idFieldName);
+			
+			proc.execute();
+			proc.getMoreResults();
+				
+			res = proc.getInt(1);
+		}catch (Exception ex) {
+			throw ex;
+		}	
+
+		return res;
+	}
+
+}

+ 35 - 0
sicura.business/src/dao/SicuraSQLServerDialectResolver.java

@@ -0,0 +1,35 @@
+package dao;
+
+import org.hibernate.dialect.Dialect;
+import org.hibernate.dialect.SQLServer2012Dialect;
+import org.hibernate.engine.jdbc.dialect.internal.StandardDialectResolver;
+import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
+import org.hibernate.engine.jdbc.dialect.spi.DialectResolver;
+
+public class SicuraSQLServerDialectResolver implements DialectResolver {
+
+
+	private static final long serialVersionUID = 1L;
+
+	    @Override
+	    public Dialect resolveDialect(DialectResolutionInfo info) {
+	        Dialect customDialectResolver = customDialectResolver(info);
+	        //Log.getInstance().logInfo(Thread.currentThread().getStackTrace(), customDialectResolver.getClass().getName());
+	        return customDialectResolver;
+	    }
+
+	    private Dialect customDialectResolver(DialectResolutionInfo info) {
+	        final String databaseName = info.getDatabaseName();
+	        final int majorVersion = info.getDatabaseMajorVersion();
+	        if (isSqlServer2014(databaseName, majorVersion)) {
+	            return new SQLServer2012Dialect(); 
+	        } else {
+	            return StandardDialectResolver.INSTANCE.resolveDialect(info);
+	        }
+	    }
+
+	    private boolean isSqlServer2014(final String databaseName, final int majorVersion) {
+	        return databaseName.startsWith("Microsoft SQL Server") && majorVersion == 12;
+	    }
+
+}

+ 112 - 0
sicura.business/src/dao/TipologiaDao.java

@@ -0,0 +1,112 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.Tipologia;
+
+@Repository
+public class TipologiaDao extends GenericDAO<Tipologia, Integer> implements IDAO<Tipologia, Integer> {
+
+	public List<Tipologia> list(){
+		boolean tx = startTransaction();
+		try {
+			String sql = "Select * from Tipologia" ;// WHERE Tipologia = 'BONIFICI' OR Tipologia = 'RID' OR Tipologia = 'AEA' OR Tipologia = 'DOM' OR Tipologia = 'SCT_INT' OR Tipologia = 'SCT_INPS' OR Tipologia = 'SCT_ESTERI' OR Tipologia = 'ASSEGNI_INTESA'" ;
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.addEntity(Tipologia.class);
+			
+			List<Tipologia> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = rollback();
+		}
+	}
+
+	public Integer count(){
+		boolean tx = startTransaction();
+		try {
+			String sql = "Select count(*) from Tipologia"; // WHERE Tipologia = 'BONIFICI' OR Tipologia = 'RID' OR Tipologia = 'AEA' OR Tipologia = 'DOM' OR Tipologia = 'SCT_INT' OR Tipologia = 'SCT_INPS' OR Tipologia = 'ASSEGNI_INTESA'";
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			
+			Integer res = (Integer) q.uniqueResult();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+
+	public Integer save(Tipologia tbl, AppVariables appVariables) {
+		/*
+		  CREATE PROC [dbo].[spUCBase_Tipologia_update]
+			@SecurityUserId VARCHAR(15),
+			@SecurityGuid UNIQUEIDENTIFIER,
+		
+			@ID int,
+			@Tipologia varchar(20),
+			@Descrizione varchar(50),
+			@MIGeneraFlusso BIT,
+			@OverrideTipoSequenzaRID varchar(4),
+			@OverrideRichiestaEsitoSCT varchar(3)
+		 */
+		boolean tx = startTransaction();
+		try {
+			Integer res = null;
+			Connection connection = getConnection();
+	
+			
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spUCBase_Tipologia_update (?,?,?,?,?,?,?,?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.VARCHAR);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, tbl.getId());
+				proc.setString(5, tbl.getTipologia());
+				proc.setString(6, tbl.getDescrizione());
+				proc.setBoolean(7, tbl.isMigeneraFlusso());
+				proc.setString(8, tbl.getOverrideTipoSequenzaRid());
+				proc.setString(9, tbl.getOverrideRichiestaEsitoSct());
+				proc.setObject(10,tbl.getNumGiorniGenFlusso());
+				proc.setBoolean(11, tbl.isSoloGiorniLavorativi());
+				proc.setObject(12, dateToSqlTimestamp(tbl.getOraGenerazioneFlusso()));
+				
+				proc.execute();
+				proc.getMoreResults();
+					
+				res = proc.getInt(1);
+					
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return null;
+			}
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}	
+	}
+	
+	
+	
+}

+ 485 - 0
sicura.business/src/dao/UserDAO.java

@@ -0,0 +1,485 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.ParameterMode;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.StoredProcedureQuery;
+
+import org.hibernate.Criteria;
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.jdbc.ReturningWork;
+import org.hibernate.procedure.ProcedureCall;
+import org.hibernate.result.Output;
+import org.hibernate.result.ResultSetOutput;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.jdbc.core.CallableStatementCreator;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.SqlParameter;
+import org.springframework.ldap.core.AttributesMapper;
+import org.springframework.ldap.core.LdapTemplate;
+import org.springframework.ldap.core.support.LdapContextSource;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.MultiValueMap;
+
+import bean.LogModificheBean;
+import bean.SecurityLogUserBean;
+import bean.UserRoleBean;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.Utenti;
+
+@Repository
+public class UserDAO 	extends GenericDAO<Utenti, Integer> 
+						implements IDAO<Utenti, Integer> {
+
+	@Value("#{appProperties[LDAPHost] ?: 'ldaps://findomestic.local:636'}")
+	String LDAPHost;
+	@Value("#{appProperties[NamingContext] ?: 'dc=findomestic,dc=local'}")
+	String NamingContext;
+	
+//	@Autowired
+//	private JdbcTemplate jdbcTemplate;
+
+//	@PersistenceUnit
+//	public void setEntityManagerFactory(EntityManagerFactory emf) {
+//	        this.emf = emf;
+//	}
+	
+	public List<UserRoleBean> getRoles (String username, String password) {
+		List<UserRoleBean> res = new ArrayList<UserRoleBean>();
+		
+		List<String> roles = getADRoles(username, password);
+		
+		for(String role:roles) {
+			if (role.startsWith("CN="))
+				res.add(new UserRoleBean(role,decodeRole(role.substring(Math.max(role.length() - 2, 0)))));
+		}
+	
+		return res;
+	}
+
+		private String decodeRole(String code) {
+			
+			if ("TR".equals(code))
+				return "Tesoriere Responsabile";
+			if ("AS".equals(code))
+				return "Amministratore di sistema";
+			if ("GI".equals(code))
+				return "Gestore informatico";
+			if ("DF".equals(code))
+				return "Delegato alla firma";
+			if ("VI".equals(code))
+				return "Utente visualizzatore";
+			return "";
+		}
+	
+	private Session getLDAPSession(String username, String password) {
+	
+		Configuration cfg = new Configuration();
+		cfg.configure("hibernate.cfg.xml"); //hibernate config xml file name
+		String newUserName,newPassword;//set them as per your needs
+		cfg.getProperties().setProperty("hibernate.connection.username",username);
+		cfg.getProperties().setProperty("hibernate.connection.password",password);
+		sessionFactory = cfg.buildSessionFactory();
+		return sessionFactory.getCurrentSession();
+	}
+	
+	public List<String> getADRoles(String username, String password) {
+		
+		
+		LdapContextSource ctxSrc = new LdapContextSource();
+	    ctxSrc.setUrl(LDAPHost);
+	    ctxSrc.setBase(NamingContext);
+	    ctxSrc.setUserDn(username);
+	    ctxSrc.setPassword(password);
+	    
+		ctxSrc.afterPropertiesSet(); // this method should be called.
+	
+		LdapTemplate tmpl = new LdapTemplate(ctxSrc);
+		
+		@SuppressWarnings({ "unchecked", "rawtypes" })
+		List<String> memberOf = tmpl.search("",  "(objectClass=person)",
+				new AttributesMapper() {
+
+					@Override
+					public Object mapFromAttributes(Attributes attr) throws NamingException {
+						// TODO Auto-generated method stub
+						return attr.get("memberOf");
+					}
+			
+				}
+		);
+
+		return memberOf;
+		
+		
+/*		
+		
+		SQLQuery query = getLDAPSession(username, password).createSQLQuery(arg0);		
+
+	.doReturningWork(new ReturningWork<Connection>() {
+	        @Override
+	        public Connection execute(Connection conn) throws SQLException {
+	            return conn;
+	        }
+	    });
+		Hashtable env = new Hashtable();
+	      env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
+	      env.put(Context.PROVIDER_URL, "ldap://localhost:389/dc=example,dc=com");
+
+	      DirContext ctx;
+	      try {
+	         ctx = new InitialDirContext(env);
+	      } catch (NamingException e) {
+	         throw new RuntimeException(e);
+	      }
+
+	      List<String> list = new LinkedList<String>();
+	      NamingEnumeration results = null;
+	      try {
+	         SearchControls controls = new SearchControls();
+	         controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+	         results = ctx.search("", "(objectclass=person)", controls);
+
+	         while (results.hasMore()) {
+	            SearchResult searchResult = (SearchResult) results.next();
+	            Attributes attributes = searchResult.getAttributes();
+	            Attribute attr = attributes.get("cn");
+	            String cn = attr.get().toString();
+	            list.add(cn);
+	         }
+	      } catch (NameNotFoundException e) {
+	         // .doReturningWork(new ReturningWork<Connection>() {
+	        @Override
+	        public Connection execute(Connection conn) throws SQLException {
+	            return conn;
+	        }
+	    });The base context was not found.
+	         // Just clean up and exit.
+	      } catch (NamingException e) {
+	         throw new RuntimeException(e);
+	      } finally {
+	         if (results != null) {
+	            try {
+	               results.close();
+	            } catch (Exception e) {
+	               // Never mind this.
+	            }
+	         }
+	         if (ctx != null) {
+	            try {
+	               ctx.close();
+	            } catch (Exception e) {
+	               // Never mind this.
+	            }
+	         }
+	      }
+*/	      
+		
+	}
+
+	public Utenti login(String username, String password) {
+		boolean tx = startTransaction();
+		
+		try {
+			Criteria crit = currentSession().createCriteria(Utenti.class);
+			crit
+				.add(Restrictions.eq("userId", username))
+				.add(Restrictions.eq("password", password));
+			
+			List<Utenti> res = crit.list();
+			if (res.size()>0)
+				return res.get(0);
+			else
+				return null;
+		} finally {
+			if (tx)
+				commit();
+		}
+			
+	}
+	
+	public Utenti getByUsername(String username, String profiloLocale) {
+		//boolean tx = startTransaction();
+		try {
+			Criteria crit = currentSession().createCriteria(Utenti.class);
+			crit
+				.add(Restrictions.eq("userId", username))
+				.add(Restrictions.eq("profiloLocale", profiloLocale));
+			
+			List<Utenti> res = crit.list();
+			if (res.size()>0)
+				return res.get(0);
+			else
+				return null;
+		} finally {
+//			if (tx)
+//				tx = commit();
+		}
+	}
+	
+	
+	public /*Map<String, Object>*/ CallableStatement getSecurityLogUser(final String username, final String salt, final String authenticationMode, final String profiloUtente) {
+//		boolean.doReturningWork(new ReturningWork<Connection>() {
+//	        @Override
+//	        public Connection execute(Connection conn) throws SQLException {
+//	            return conn;
+//	        }
+//	    }); tx = startTransaction();
+		 	
+		// Fabio --- per debug
+//		executeSQL("delete from SecuritySalt where saltvalue='" + username.trim()+"'");
+//		if (tx)
+//			commit();
+//		tx = startTransaction();
+		
+		// Fabio --- fine per debug
+		
+		
+		
+		int res = -1;
+		Connection connection = getConnection();
+
+			/*
+			 CREATE PROCEDURE [dbo].[spSecurityLogUser]
+				@UserID VARCHAR(10),
+				@Password VARCHAR(120),
+				@AuthenticationMode VARCHAR(3) = 'INT',
+				@ProfiloLocale VARCHAR(2) = ''
+				
+			 */
+		CallableStatement proc;
+		try {
+			proc = connection.prepareCall("{call spSecurityLogUser(?,?,?,?)}");
+				
+			proc.setString(1, username.trim());
+			proc.setString(2, salt.trim());
+			proc.setString(3, authenticationMode.trim());
+			proc.setString(4, profiloUtente.trim());
+			
+			boolean isResultSet = proc.execute();
+			
+			return proc;
+//			rs = proc.getResultSet(); 
+//			
+//			rs.first();
+				
+		} catch (Exception ex) {
+			
+			ex.printStackTrace();
+		}
+		
+		return null;
+/*		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		final String procedureCall = "exec spSecurityLogUser(?,?,?,?)";
+		List<SqlParameter> paramList = new ArrayList<SqlParameter>();
+		SqlParameter userID = new SqlParameter("@UserID", Types.VARCHAR);
+		SqlParameter password = new SqlParameter("@Password", Types.VARCHAR);
+		SqlParameter pAuthenticationMode = new SqlParameter("@AuthenticationMode", Types.VARCHAR);
+		List<SqlParameter> paramList = new ArrayList<SqlParameter>();
+		SqlParameter userID = new SqlParameter("@UserID", Types.VARCHAR);
+		SqlParameter password = new SqlParameter("@Password", Types.VARCHAR);
+		SqlParameter pAuthenticationMode = new SqlParameter("@AuthenticationMode", Types.VARCHAR);
+		SqlParameter profiloLocale = new SqlParameter("@ProfiloLocale", Types.VARCHAR);
+		
+		paramList.add(userID);
+		paramList.add(password);
+		paramList.add(pAuthenticationMode);
+		paramList.add(profiloLocale);
+		
+	
+		Map<String, Object> resultMap = jdbcTemplate.call(new CallableStatementCreator() {
+			@Override
+			public CallableStatement createCallableStatement(Connection connection) throws SQLException {
+
+				CallableStatement callableStatement = connection.prepareCall(procedureCall);
+				callableStatement.setString("@UserID", username.trim());
+				callableStatement.setString("@Password", salt.trim());
+				callableStatement.setString("@AuthenticationMode", authenticationMode.trim());
+				callableStatement.setString("@ProfiloLocale", profiloUtente.trim());
+				return callableStatement;
+
+			}
+		}, paramList);
+		
+		return resultMap;
+*/		
+	/*	
+		for(String str: resultMap.keySet()) {
+			ArrayList<Object> submap = (ArrayList<Object>) resultMap.get(str);
+			
+			System.out.println(submap.size());
+			
+		}
+		
+		
+//		StoredProcedureQuery spq = entityManager.createStoredProcedureQuery("spSecurityLogUser");
+//		spq.registerStoredProcedureParameter("@UserID", String.class, ParameterMode.IN);
+//		spq.registerStoredProcedureParameter("@Password", String.class, ParameterMode.IN);
+//		spq.registerStoredProcedureParameter("@AuthenticationMode", String.class, ParameterMode.IN);
+//		spq.registerStoredProcedureParameter("@ProfiloLocale", String.class, ParameterMode.IN);
+//		
+//		spq.setParameter("@UserID", username.trim());
+//		spq.setParameter("@Password", salt.trim());
+//		spq.setParameter("@AuthenticationMode", authenticationMode);
+//		spq.setParameter("@ProfiloLocale", profiloUtente);
+//		
+//		boolean isResultSet = spq.execute(); // returns true when we have a result set from the proc
+//		List results1 = spq.getResultList(); // get the first result set
+//		List results2;
+//		if (spq.hasMoreResults())
+//		{
+//		    results2 = spq.getResultList(); // get the second result set
+//		}
+//		
+//		ProcedureCall call = currentSession().createStoredProcedureCall("spSecurityLogUser");
+//		call.registerParameter("@UserID", String.class, ParameterMode.IN).bindValue(username.trim());
+//		call.registerParameter("@Password", String.class, ParameterMode.IN).bindValue(salt.trim());
+//		call.registerParameter("@AuthenticationMode", String.class, ParameterMode.IN).bindValue(authenticationMode);
+//		call.registerParameter("@ProfiloLocale", String.class, ParameterMode.IN).bindValue(profiloUtente);
+//		
+//		Output output = call.getOutputs().getCurrent();
+//		
+//		 List<Object[]> dataset=null;;
+//		
+//		if (output.isResultSet()) {
+//			dataset =((ResultSetOutput) output).getResultList();
+//		}
+//		
+	
+
+		
+//		Object pippo = dataset.get(0);
+		
+		String sql = String.format("EXEC spSecurityLogUser '%s','%s','%s','%s'", username.trim(), salt.trim(), authenticationMode, profiloUtente);
+		Query q = currentSession().createSQLQuery(sql);
+		//q.setResultTransformer(new AliasToBeanResultTransformer(SecurityLogUserBean.class));
+		q.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
+		
+		List res = q.list();
+		
+		if (tx)
+			commit();
+		
+		if (res.size()>0)
+			return res;
+		else
+			return null;
+			
+*/			
+	}
+	
+	public Utenti getCurrentUser(Integer userID) {
+		boolean tx = startTransaction();
+		
+		try {
+		Criteria crit = currentSession().createCriteria(Utenti.class);
+		crit.add(Restrictions.eq("id", userID));
+		
+		
+		List<Utenti> res = crit.list();
+		
+		if (res.size()>0)
+			return res.get(0);
+		else
+			return null;
+		} finally {
+			if (tx)
+				tx = commit();
+		}		
+	}
+
+	public Integer count(String filter) {
+		boolean tx = startTransaction();
+		
+		try {
+			Criteria crit = currentSession().createCriteria(Utenti.class);
+			if (filter!=null && !"".equals(filter))
+				crit.add(Restrictions.like("userId", "%"+filter+"%"));
+			Integer res = ((Long) crit.setProjection(Projections.rowCount()).uniqueResult()).intValue();
+			
+			return res;
+		} finally {
+			if (tx)
+				tx = commit();
+		}
+	}
+	
+	public List<Utenti> list(Integer startFrom, Integer length,String filter,String orderField) {
+		boolean tx = startTransaction();
+		
+		try {
+			try {
+				Criteria crit = currentSession().createCriteria(Utenti.class);
+				if (filter!=null && !"".equals(filter))
+					crit.add(Restrictions.like("userId", "%"+filter+"%"));
+				crit.setFirstResult(startFrom);
+				crit.setMaxResults(length);
+				crit.addOrder(getOrderBy(orderField));
+				
+				List<Utenti> res = crit.list();
+				
+				return res;
+			} catch (Exception ex) {
+				ex.printStackTrace();
+				return null;
+			}
+		} finally {
+			if (tx)
+				tx = commit();
+		}		
+	}
+
+	public Utenti newInstance() {
+		return new Utenti();
+	}
+
+	public void eliminaUtente(Integer id) {
+		boolean tx = startTransaction();
+		
+		try {
+			Utenti u = readNoTransaction(id);
+			if (u!=null) {
+				executeSQL("DELETE FROM UtentiFunzioni WHERE UserID='"+u.getUserId()+"'");
+				executeSQL("DELETE FROM Utenti WHERE ID="+id);
+			}
+		} finally {
+			if (tx)
+				tx = commit();
+		}	
+	}
+
+}

+ 97 - 0
sicura.business/src/dao/VdelegatoFirmaEstrattoreDistinteDao.java

@@ -0,0 +1,97 @@
+package dao;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SQLQuery;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.jdbc.ReturningWork;
+import org.hibernate.transform.AliasToBeanResultTransformer;
+import org.springframework.stereotype.Repository;
+
+import bean.AppVariables;
+import common.dao.GenericDAO;
+import common.dao.IDAO;
+import sicura.entities.VdelegatoFirmaEstrattoreDistinte;
+import sicura.entities.VdelegatoFirmaEstrattoreDistinteId;
+
+@Repository
+public class VdelegatoFirmaEstrattoreDistinteDao extends GenericDAO<VdelegatoFirmaEstrattoreDistinte, Integer> implements IDAO<VdelegatoFirmaEstrattoreDistinte, Integer> {
+
+	public List<VdelegatoFirmaEstrattoreDistinteId> list() {
+		
+		boolean tx = startTransaction();
+		try {
+			String sql = "Select * from vDelegatoFirmaEstrattoreDistinte order by importoLimiteFirma";
+			
+			SQLQuery q = currentSession().createSQLQuery(sql);
+			q.setResultTransformer(new AliasToBeanResultTransformer(VdelegatoFirmaEstrattoreDistinteId.class));
+			q
+				.addScalar("abilitaDelegatoFirmaEstrattoreDistinte")
+				.addScalar("denominazione")
+				.addScalar("funzioneOrdinante")
+				.addScalar("importoLimiteFirma")
+				.addScalar("id")
+				.addScalar("dbgridSelect")
+				.addScalar("emailResponsabile")
+				.addScalar("userId");
+			
+			List<VdelegatoFirmaEstrattoreDistinteId> res = q.list();
+			
+			return res;
+		} finally {
+			if (tx)
+		    	commit();
+		}
+	}
+
+	public int setActive(Integer id, Boolean status, AppVariables appVariables) {
+		boolean tx = startTransaction();
+
+		try {
+			int res = -1;
+			Connection connection = getConnection();
+	
+				/*
+				  CREATE PROCEDURE spAbilitaDelegatoFirmaEstrattoreDistinte
+						@SecurityUserId VARCHAR(15),
+						@SecurityGuid UNIQUEIDENTIFIER,
+						
+						@ID INT,
+						@Abilitato BIT
+				 */
+			CallableStatement proc;
+			try {
+				proc = connection.prepareCall("{? = call spAbilitaDelegatoFirmaEstrattoreDistinte (?,?,?,?)}");
+					
+				proc.registerOutParameter(1, Types.INTEGER);
+				proc.setString(2, appVariables.getUserId());
+				proc.setString(3, appVariables.getGuid());
+				proc.setObject(4, id);
+				proc.setBoolean(5, getBoolean(status));
+	
+				proc.execute();
+					
+				res = proc.getInt(1);
+					
+				
+			} catch (SQLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				res = -2;
+			}
+			return res;
+		} finally {			
+			if (tx)
+				commit();
+		}
+	}
+		
+	
+}

+ 26 - 0
sicura.business/src/reportprovider/DisposizioniAeaProvider.java

@@ -0,0 +1,26 @@
+package reportprovider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import bean.query.DisposizioniAeaDecoded;
+import dao.DisposizioneAeaDAO;
+
+public class DisposizioniAeaProvider {
+
+	@Autowired
+	static DisposizioneAeaDAO dao;
+	
+	private List<DisposizioniAeaDecoded> disposizioni;
+	
+	public DisposizioniAeaProvider(List<DisposizioniAeaDecoded> disposizioni) {
+		this.disposizioni = disposizioni;
+	}
+	public static List<DisposizioniAeaDecoded> getDisposizioniAea() {
+		//return dao.listAll().subList(0, 100);
+		return new ArrayList<DisposizioniAeaDecoded>();
+	}
+}

+ 25 - 0
sicura.business/src/reportprovider/DisposizioniBonificiProvider.java

@@ -0,0 +1,25 @@
+package reportprovider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import bean.query.DisposizioniBonificiDecoded;
+import dao.DisposizioniBonificiDAO;
+
+public class DisposizioniBonificiProvider {
+
+	@Autowired
+	static DisposizioniBonificiDAO dao;
+	
+	private List<DisposizioniBonificiDecoded> disposizioni;
+	
+	public DisposizioniBonificiProvider(List<DisposizioniBonificiDecoded> disposizioni) {
+		this.disposizioni = disposizioni;
+	}
+	public static List<DisposizioniBonificiDecoded> getDisposizioniBonifici() {
+		//return dao.listAll().subList(0, 100);
+		return new ArrayList<DisposizioniBonificiDecoded>();
+	}
+}

+ 26 - 0
sicura.business/src/reportprovider/DisposizioniRidProvider.java

@@ -0,0 +1,26 @@
+package reportprovider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import dao.DisposizioniRidDAO;
+import sicura.entities.DisposizioniRid;
+
+public class DisposizioniRidProvider {
+
+	@Autowired
+	static DisposizioniRidDAO dao;
+	
+	private List<DisposizioniRid> disposizioni;
+	
+	public DisposizioniRidProvider(List<DisposizioniRid> disposizioni) {
+		this.disposizioni = disposizioni;
+	}
+	public static List<DisposizioniRid> getDisposizioniRid() {
+		return dao.listAll().subList(0, 100);
+		//return new ArrayList<DisposizioniRid>();
+	}
+}

+ 27 - 0
sicura.business/src/reportprovider/RendicontoSedaReportProvider.java

@@ -0,0 +1,27 @@
+package reportprovider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import dao.DisposizioniRidDAO;
+import dao.RemunerationDao;
+import sicura.entities.DisposizioniRid;
+import sicura.entities.RemunerationPrevisioning;
+
+public class RendicontoSedaReportProvider {
+
+	@Autowired
+	static RemunerationDao dao;
+	
+	private List<RemunerationPrevisioning> previsioning;
+	
+	public RendicontoSedaReportProvider(List<RemunerationPrevisioning> previsioning) {
+		this.previsioning = previsioning;
+	}
+	public static List<RemunerationPrevisioning> getPrevisioning() {
+		return dao.getProvisioning(0,0,100).subList(0, 100);
+	}
+}

+ 159 - 0
sicura.business/src/utils/ColumnNamingStrategy.java

@@ -0,0 +1,159 @@
+package utils;
+
+import org.hibernate.cfg.DefaultComponentSafeNamingStrategy;
+
+import java.util.StringTokenizer;
+
+public class ColumnNamingStrategy extends DefaultComponentSafeNamingStrategy {
+    private static final long serialVersionUID = -3020615242092992933L;
+
+    protected static String addUnderscores(String name) {
+        if (name == null)
+            return null;
+        StringBuffer buf = new StringBuffer(name.replace('.', '_'));
+        for (int i = 1; i < buf.length() - 1; i++) {
+            if ((isLowerToUpper(buf, i)) || (isMultipleUpperToLower(buf, i))
+
+            ) {
+                buf.insert(i++, '_');
+            }
+        }
+        return buf.toString().toLowerCase();
+    }
+
+    private static boolean isMultipleUpperToLower(StringBuffer buf, int i) {
+        return i > 1 && Character.isUpperCase(buf.charAt(i - 1))
+                && Character.isUpperCase(buf.charAt(i - 2))
+                && Character.isLowerCase(buf.charAt(i));
+    }
+
+    private static boolean isLowerToUpper(StringBuffer buf, int i) {
+        return Character.isLowerCase(buf.charAt(i - 1))
+                && Character.isUpperCase(buf.charAt(i));
+    }
+
+    @Override
+    public String collectionTableName(String ownerEntity,
+            String ownerEntityTable, String associatedEntity,
+            String associatedEntityTable, String propertyName) {
+        return abbreviateName(super.collectionTableName(
+                addUnderscores(ownerEntity), addUnderscores(ownerEntityTable),
+                addUnderscores(associatedEntity),
+                addUnderscores(associatedEntityTable),
+                addUnderscores(propertyName)));
+    }
+
+    @Override
+    public String foreignKeyColumnName(String propertyName,
+            String propertyEntityName, String propertyTableName,
+            String referencedColumnName) {
+        return abbreviateName(super.foreignKeyColumnName(
+                addUnderscores(propertyName),
+                addUnderscores(propertyEntityName),
+                addUnderscores(propertyTableName),
+                addUnderscores(referencedColumnName)));
+    }
+
+    @Override
+    public String logicalCollectionColumnName(String columnName,
+            String propertyName, String referencedColumn) {
+        return abbreviateName(super.logicalCollectionColumnName(
+                addUnderscores(columnName), addUnderscores(propertyName),
+                addUnderscores(referencedColumn)));
+    }
+
+    @Override
+    public String logicalCollectionTableName(String tableName,
+            String ownerEntityTable, String associatedEntityTable,
+            String propertyName) {
+        return abbreviateName(super.logicalCollectionTableName(
+                addUnderscores(tableName), addUnderscores(ownerEntityTable),
+                addUnderscores(associatedEntityTable),
+                addUnderscores(propertyName)));
+    }
+
+    @Override
+    public String logicalColumnName(String columnName, String propertyName) {
+        return abbreviateName(super.logicalColumnName(
+                addUnderscores(columnName), addUnderscores(propertyName)));
+    }
+
+    @Override
+    public String propertyToColumnName(String propertyName) {
+        return abbreviateName(super
+                .propertyToColumnName(addUnderscores(propertyName)));
+    }
+
+    private static final int MAX_LENGTH = 30;
+
+    public static String abbreviateName(String someName) {
+        if (someName.length() <= MAX_LENGTH)
+            return someName;
+
+        String[] tokens = splitName(someName);
+        shortenName(someName, tokens);
+
+        return assembleResults(tokens);
+    }
+
+    private static String[] splitName(String someName) {
+        StringTokenizer toki = new StringTokenizer(someName, "_");
+        String[] tokens = new String[toki.countTokens()];
+        int i = 0;
+        while (toki.hasMoreTokens()) {
+            tokens[i] = toki.nextToken();
+            i++;
+        }
+        return tokens;
+    }
+
+    private static void shortenName(String someName, String[] tokens) {
+        int currentLength = someName.length();
+        while (currentLength > MAX_LENGTH) {
+            int tokenIndex = getIndexOfLongest(tokens);
+            String oldToken = tokens[tokenIndex];
+            tokens[tokenIndex] = abbreviate(oldToken);
+            currentLength -= oldToken.length() - tokens[tokenIndex].length();
+        }
+    }
+
+    private static String assembleResults(String[] tokens) {
+        StringBuilder result = new StringBuilder(tokens[0]);
+        for (int j = 1; j < tokens.length; j++) {
+            result.append("_").append(tokens[j]);
+        }
+        return result.toString();
+    }
+
+    private static String abbreviate(String token) {
+        final String VOWELS = "AEIOUaeiou";
+        boolean vowelFound = false;
+        for (int i = token.length() - 1; i >= 0; i--) {
+            if (!vowelFound)
+                vowelFound = VOWELS.contains(String.valueOf(token.charAt(i)));
+            else if (!VOWELS.contains(String.valueOf(token.charAt(i))))
+                return token.substring(0, i + 1);
+        }
+        return "";
+    }
+
+    private static int getIndexOfLongest(String[] tokens) {
+        int maxLength = 0;
+        int index = -1;
+        for (int i = 0; i < tokens.length; i++) {
+            String string = tokens[i];
+            if (maxLength < string.length()) {
+                maxLength = string.length();
+                index = i;
+            }
+        }
+        return index;
+    }
+
+    @Override
+    public String classToTableName(String aClassName) {
+
+        return abbreviateName(super
+                .classToTableName(addUnderscores(aClassName)));
+    }
+}

+ 218 - 0
sicura.business/src/utils/CommonFunctions.java

@@ -0,0 +1,218 @@
+package utils;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.DecimalFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+import org.apache.commons.lang.StringUtils;
+
+public class CommonFunctions {
+
+	/// <summary>
+	/// Check if a String in ONLY number
+	/// </summary>
+	/// <param name="theValue">String to check</param>
+	/// <returns></returns>
+	public static Boolean IsInteger(String theValue)
+	{
+		int res;
+		try {
+			int i = Integer.parseInt(theValue);
+			return true;
+		} catch (Exception ex) {
+			return false;
+		}		
+	}
+
+	/// <summary>
+	/// Controlla se la data fornita è esatta
+	/// </summary>
+	/// <param name="day">Giorno</param>
+	/// <param name="month">Mese</param>
+	/// <param name="year">Anno</param>
+	/// <returns>False se la data è invalida</returns>
+	public static boolean IsDate( int day, int month, int year ) 
+	{
+		boolean isDate = true;
+		try 
+		{
+			  Calendar calendar = GregorianCalendar.getInstance();
+			    calendar.set(Calendar.DAY_OF_MONTH, day);
+			    calendar.set(Calendar.MONTH, month);
+			    calendar.set(Calendar.YEAR, year);
+			    calendar.set(Calendar.MILLISECOND, 0);
+			    calendar.set(Calendar.SECOND, 0);
+			    calendar.set(Calendar.MINUTE, 0);
+			    calendar.set(Calendar.HOUR_OF_DAY, 0);
+		}
+		catch (Exception ex)
+		{
+			isDate = false;
+		} 
+		return isDate;
+	} 
+
+	/// <summary>
+	/// Check if a String in a double
+	/// </summary>
+	/// <param name="theValue">String to check</param>
+	/// <returns></returns>
+	public static boolean Double(String theValue)
+	{
+		double res;
+		try {
+			Double.parseDouble(theValue);
+			return true;
+		} catch(Exception ex) {
+			return false;
+		}
+	}
+
+	//public static StatoSezione OrOperation( StatoSezione op1, StatoSezione op2 )
+	//{
+	//  if( op1 == StatoSezione.StatoRosso || op2 == StatoSezione.StatoRosso )
+	//    return StatoSezione.StatoRosso;
+
+	//  if( op1 == StatoSezione.StatoGiallo || op2 == StatoSezione.StatoGiallo )
+	//    return StatoSezione.StatoGiallo;
+
+	//  return StatoSezione.StatoVerde;
+	//}
+
+	public static String NumToLet(BigDecimal numero)
+	{
+		// Stringa da restituire
+		String lettere = "";
+		// conversione in Stringa lunga 21 caratteri comunque
+		String snumero = String.format("%21s",numero.toString());
+		// verifica se numero troppo lungo (forma esponenziale)
+		int i = snumero.indexOf("E");
+		if (i != -1)
+			throw new NumberFormatException("Numero troppo lungo per essere convertito");
+		// verifica dei decimali
+		BigDecimal decimali =numero.subtract(numero.setScale(0, RoundingMode.DOWN));
+		if (decimali.compareTo(BigDecimal.ZERO) > 0)
+		{
+			// se ci sono vengono letti e separati
+			snumero = decimali.toString().substring(2);
+			lettere = (NumToLet(numero.setScale(0, RoundingMode.DOWN)) + " e " +
+				NumToLet(BigDecimal.valueOf(Double.valueOf(snumero))));
+		}
+		else
+		{
+			// verifica se zero
+			if (numero.compareTo(BigDecimal.ZERO)==0)
+				lettere = "zero";
+			else
+			{
+				// formattazione a 21 caratteri per avere comunque tutti i gruppi
+				snumero = StringUtils.leftPad(snumero,21,"0");
+				String terzina;
+				byte groups = 0;
+				// per ogni gruppo estraggo e risolvo la terzina ed il gruppo
+				for (i = 0; i <= 18; i += 3)
+				{
+					groups += 1;
+					terzina = snumero.substring(i, 3);
+					if (Integer.parseInt(terzina) > 0)
+						lettere += RisolviTerzina(terzina) + GrpToParola(groups, (Integer.parseInt(terzina) == 1));
+				}
+			}
+		}
+		return lettere;
+	}
+
+	// versione per Euro (max 2 decimali, non convertiti in lettere)
+	public static String EurToLet(Double numero)
+	{
+		DecimalFormat df = new DecimalFormat("0.00");
+		
+		return df.format(numero).replace('.','/');
+	}
+
+	private static String ToProper(String Stringa)
+	{
+		return Stringa.substring(0, 1).toUpperCase() + Stringa.substring(1).toUpperCase();
+	}
+
+	// traduce una terzina di cifre in lettere
+	private static String RisolviTerzina(String cifre)
+	{
+		// caso particolare
+		if (Integer.parseInt(cifre) == 1)
+			return "";
+		else
+		{
+			byte cifra1 = Byte.parseByte(cifre.substring(0, 1));
+			byte cifra2 = Byte.parseByte(cifre.substring(1,1));
+			byte cifra3 = Byte.parseByte(cifre.substring(2,1));
+			String lettere = "";
+			String depo = "cento";
+  
+			// prima cifra
+			if (cifra1 == 1) 
+				lettere = depo;
+			if (cifra1 > 1)
+				lettere = NumToParola(cifra1) + depo;
+
+			// seconda cifra: test per troncare l'ultima vocale
+			if( cifra2 > 0 ) depo = NumToParola((byte)(cifra2 * 10));
+
+			if ((cifra2 > 1) & ((cifra3 == 1) | (cifra3 == 8)))
+				lettere += depo.substring(0, depo.length() - 1);
+			else if ((cifra2 > 1) & (cifra3 > 1))
+				lettere += depo;
+
+			else if (cifra2 > 0)
+			{
+				lettere += NumToParola((byte)(cifra2 * 10 + cifra3));
+				cifra3 = 0; // in quanto già elaborata
+			}
+  
+			// terza cifra
+			if (cifra3 > 0)
+				lettere += NumToParola(cifra3);
+
+			return ToProper(lettere);
+		}
+	}
+
+	// restituisce la parola corrispondente alla cifra
+	private static String NumToParola(byte cifra)
+	{
+		if (cifra <= 19)
+			return (new String[] {
+														 "uno","due","tre","quattro","cinque","sei","sette","otto",
+														 "nove","dieci","undici","dodici","tredici","quattordici",
+														 "quindici","sedici","diciassette","diciotto","diciannove"
+													 }
+				)[cifra-1];
+		else
+			return (new String[] {
+														 "venti","trenta","quaranta","cinquanta","sessanta","settanta",
+														 "ottanta","novanta"
+													 }
+				)[cifra/10-2];
+	}
+
+	// restituisce la parola corrispondente al gruppo
+	private static String GrpToParola(byte grp, Boolean uno)
+	{
+		if (uno)
+			return (new String[] {
+														 "Unmiliardodimiliardi","Unmilionedimiliardi","Millemiliardi",
+														 "Unmiliardo","Unmilione","Mille","Uno"
+													 }
+				)[grp-1];
+		else
+			return (new String[] {
+														 "miliardidimiliardi","milionidimiliardi","milamiliardi",
+														 "miliardi","milioni","mila",""
+													 }
+				)[grp-1];
+	}
+
+}

+ 778 - 0
sicura.business/src/utils/ConvalidaClass.java

@@ -0,0 +1,778 @@
+package utils;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.joda.time.DateTime;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.stereotype.Repository;
+import org.springframework.beans.factory.annotation.Autowire;
+
+import bean.AppVariables;
+import bean.query.CondizioniCtrlBean;
+import common.utility.CodiceFiscale;
+import common.utility.DateUtils;
+import dao.ApCabDao;
+import dao.CondizioniCtrlDAO;
+import sicura.entities.CondizioniCtrlRid;
+
+@Repository
+public class ConvalidaClass {
+
+	@Autowired
+	CondizioniCtrlDAO condizioniCtrlDao;
+	@Autowired
+	ApCabDao abiCabDao;
+
+	List<CondizioniCtrlRid> condizioni;
+
+	public ConvalidaClass() {
+
+	}
+
+//	 public ConvalidaClass(int securityOrganizationUnitId, String tipologia,CondizioniCtrlDAO condizioniCtrlDao,ApCabDao abiCabDao) {
+//		 //this.condizioniCtrlDao  = condizioniCtrlDao;
+//		 //this.abiCabDao = abiCabDao;
+//		 
+//	 }
+
+	private String normalizzaNome(String nome) {
+		String res = "";
+		if (nome != null && nome.length() > 0) {
+
+			res += Character.toLowerCase(nome.charAt(0));
+			for (int i = 1; i < nome.length(); i++) {
+				if (nome.charAt(i) == '_') {
+					i++;
+					if (res.length() > 1
+							&& Character.toUpperCase(res.charAt(res.length() - 1)) != res.charAt(res.length() - 1))
+						res += Character.toUpperCase(nome.charAt(i));
+					else
+						res += Character.toLowerCase(nome.charAt(i));
+				} else
+				// se il carattere è maiuscolo, e lo era anche il precedente nella stringa
+				// originale, forza il lowercase
+				if (i > 1 && Character.toUpperCase(nome.charAt(i)) == nome.charAt(i)
+						&& Character.toUpperCase(nome.charAt(i - 1)) == nome.charAt(i - 1))
+					res += Character.toLowerCase(nome.charAt(i));
+				else
+					res += nome.charAt(i);
+			}
+
+		}
+		return res;
+	}
+
+	private String capitalize(String nome) {
+		String res = "";
+		if (nome != null && nome.length() > 0) {
+			res += Character.toUpperCase(nome.charAt(0));
+			for (int i = 1; i < nome.length(); i++)
+				res += nome.charAt(i);
+		}
+		return res;
+	}
+
+	public DettaglioErrori eseguiConvalida(AppVariables appVariables, int securityOrganizationUnitId, String tipologia,
+			Map<String, Object> disposizione, boolean mustResetFlag, boolean useTransactions) throws Exception {
+
+		condizioni = this.condizioniCtrlDao.getCondizioni(appVariables, securityOrganizationUnitId, tipologia,
+				useTransactions);
+		DettaglioErrori dettaglioErrori = new DettaglioErrori();
+
+		if (condizioni == null || condizioni.size() == 0)
+			return dettaglioErrori;
+
+		if (mustResetFlag)
+			disposizione = resetFlags(disposizione);
+
+		try {
+
+			boolean CondRisultato = false;
+			String StatementAttuale = "";
+			boolean CondizioneAttuale = false;
+			boolean SkipToNextField = false;
+			String NomeAttualeCampoControllo = "";
+
+			NomeAttualeCampoControllo = condizioni.get(0).getCampoChiave();
+			for (int countRow = 0; countRow < condizioni.size(); countRow++) {
+				CondizioniCtrlRid condizione = condizioni.get(countRow);
+
+				//condizione.setFlagErrore(false);
+
+				// statement1
+				String statement1 = condizione.getStatement1();
+
+				if ("IF".equalsIgnoreCase(statement1) || "ELSE IF".equalsIgnoreCase(statement1)
+						|| "ELSE".equalsIgnoreCase(statement1))
+					CondRisultato = controllaCondizioni(disposizione, condizione, dettaglioErrori);
+				else if ("END".equalsIgnoreCase(statement1)) {
+					StatementAttuale = "";
+					CondRisultato = false;
+				} else {
+
+					if ((CondRisultato && "AND".equalsIgnoreCase(StatementAttuale))
+							|| (!CondRisultato && "OR".equalsIgnoreCase(StatementAttuale))) {
+						CondizioneAttuale = controllaCondizioni(disposizione, condizione, dettaglioErrori);
+
+						if (!CondizioneAttuale && "AND".equalsIgnoreCase(StatementAttuale))
+							CondRisultato = false;
+						else if (CondizioneAttuale && "OR".equalsIgnoreCase(StatementAttuale))
+							CondRisultato = true;
+					}
+				}
+
+				// statement2
+				String statement2 = condizione.getStatement2();
+				if ("THEN".equalsIgnoreCase(statement2)) {
+					if (CondRisultato) {
+						String campoFlag = "flag" + condizione.getCampoChiave();
+
+						if ("IMPORTODBGRID".equalsIgnoreCase(condizione.getCampoChiave()))
+							campoFlag = "FlagImporto";
+						if (campoFlag.contains("à") && !disposizione.containsKey(normalizzaNome(campoFlag)))
+							campoFlag = "flag" + condizione.getCampoChiave().replace("à", "a");
+
+						// Double check
+
+						if (!ControllaConvalida(disposizione, condizione, dettaglioErrori, useTransactions)) {
+							if (disposizione.containsKey(normalizzaNome(campoFlag)))
+								disposizione.put(normalizzaNome(campoFlag), true); // KO
+							else
+								throw new Exception("Flag not found: " + campoFlag);
+						} else {
+							if (disposizione.containsKey(normalizzaNome(campoFlag)))
+								disposizione.put(normalizzaNome(campoFlag), false); // OK
+																					// //disposizione.get(normalizzaNome(campoFlag));
+
+						}
+
+						StatementAttuale = "";
+						CondRisultato = false;
+						SkipToNextField = true;
+
+					}
+				} else if ("OR".equalsIgnoreCase(statement2)) {
+					StatementAttuale = "OR";
+					if (CondRisultato) {
+						countRow = findStat2Then(countRow);
+						if (countRow == -1)
+							break;
+						condizione = condizioni.get(countRow);
+					}
+				} else if ("AND".equalsIgnoreCase(statement2)) {
+					StatementAttuale = "AND";
+					if (!CondRisultato) {
+						countRow = findStat2Then(countRow);
+						if (countRow == -1)
+							break;
+						condizione = condizioni.get(countRow);
+					}
+				}
+
+				// Fine statement2
+				if (SkipToNextField) {
+					countRow = findCampoChiave(countRow, NomeAttualeCampoControllo);
+					if (countRow == -1)
+						break;
+					condizione = condizioni.get(countRow);
+
+					SkipToNextField = false;
+					NomeAttualeCampoControllo = condizione.getCampoChiave();
+					countRow--;
+					continue;
+				}
+			}
+
+		} catch (Exception ex) {
+			throw ex;
+		} finally {
+			disposizione.put("erroriCampiObbligatori", (short) dettaglioErrori.getErroriCampiObbligatori());
+			disposizione.put("erroriCampiData", (short) dettaglioErrori.getErroriCampiData());
+			disposizione.put("erroriCongruenza", (short) dettaglioErrori.getErroriCongruenza());
+			disposizione.put("erroriPiazzatura", (short) dettaglioErrori.getErroriPiazzatura());
+		}
+
+		if (dettaglioErrori.getErroriCampiData() > 0 || dettaglioErrori.getErroriCampiObbligatori() > 0
+				|| dettaglioErrori.getErroriCongruenza() > 0 || dettaglioErrori.getErroriPiazzatura() > 0) {
+
+			dettaglioErrori.setLivelloErrore(DettaglioErrori.LivelliErrore.BLOCCANTE);
+			disposizione.put("statoConvalida", (short) 0);
+		} else if (dettaglioErrori.getErroriWarning() == 0) {
+			dettaglioErrori.setLivelloErrore(DettaglioErrori.LivelliErrore.OK);
+			disposizione.put("statoConvalida", (short) -1);
+		} else {
+			dettaglioErrori.setLivelloErrore(DettaglioErrori.LivelliErrore.WARNING);
+			disposizione.put("statoConvalida", (short) 2);
+		}
+
+		return dettaglioErrori;
+	}
+
+	private Map<String, Object> resetFlags(Map<String, Object> disposizione) {
+		if (disposizione != null) {
+			for (String key : disposizione.keySet()) {
+				String flag = "flag" + capitalize(key);
+				if (disposizione.containsKey(flag))
+					disposizione.put(flag, false);
+			}
+		}
+		return disposizione;
+	}
+
+	private boolean controllaCondizioni(Map<String, Object> disposizione, CondizioniCtrlRid condizione,
+			DettaglioErrori dettaglioErrori) {
+		String vNomeCampo = condizione.getCampoChiave();
+		if ("IMPORTO".equalsIgnoreCase(vNomeCampo))
+			vNomeCampo = "ImportoDbgrid";
+		if (vNomeCampo != null && vNomeCampo.contains("à")) {
+			if (!disposizione.containsKey(normalizzaNome(vNomeCampo))) {
+
+			}
+		}
+
+		String vCondizione1 = condizione.getCondizione1();
+		String vCongruenzaCondizione1 = condizione.getCongruenzaCondizione1();
+
+		if (StringUtils.isEmpty(vNomeCampo) || StringUtils.isEmpty(vCondizione1)
+				|| StringUtils.isEmpty(vCongruenzaCondizione1))
+			return true;
+
+		if (StringUtils.isEmpty(condizione.getDataSistemaCond())) {
+			boolean statusCongruenza1 = false;
+			boolean statusCongruenza2 = false;
+
+			if (!disposizione.containsKey(normalizzaNome(vNomeCampo)))
+				statusCongruenza1 = false;
+			else
+				statusCongruenza1 = EseguiControlloCongruenza(vNomeCampo, disposizione,
+						disposizione.get(normalizzaNome(vNomeCampo)), vCongruenzaCondizione1, vCondizione1);
+
+			// In caso di congruenza con "=" o "<>" non vi può essere la seconda condizione
+			if ("=".equals(vCondizione1) || "<>".equals(vCondizione1)) {
+				statusCongruenza2 = true;
+			} else {
+				String vCondizione2 = condizione.getCondizione2();
+				String vCongruenzaCondizione2 = condizione.getCongruenzaCondizione2();
+
+				// Controllo Condizione 2
+				if (StringUtils.isEmpty(vCondizione2) || StringUtils.isEmpty(vCongruenzaCondizione2)) {
+					statusCongruenza2 = true;
+				} else {
+					statusCongruenza2 = EseguiControlloCongruenza(vNomeCampo, disposizione,
+							disposizione.get(normalizzaNome(vNomeCampo)), vCongruenzaCondizione2, vCondizione2);
+				}
+			}
+
+			if (statusCongruenza1 == false || statusCongruenza2 == false)
+				return false;
+			else
+				return true;
+		}
+
+		// Controllo per campi data
+		if (!StringUtils.isEmpty(condizione.getDataSistemaCond())) {
+			boolean StatusCongruenzaData1 = false;
+			boolean StatusCongruenzaData2 = false;
+
+			StatusCongruenzaData1 = eseguiControlloRangeDate(disposizione, disposizione.get(normalizzaNome(vNomeCampo)),
+					condizione.getDataSistemaCond(), vCongruenzaCondizione1, vCondizione1,
+					condizione.isLavorativoCond(), false);
+
+			if ("=".equals(vCondizione1) || "<>".equals(vCondizione1)) {
+				StatusCongruenzaData2 = true;
+			} else {
+				String vCondizione2 = condizione.getCondizione2();
+				String vCongruenzaCondizione2 = condizione.getCongruenzaCondizione2();
+
+				// Controllo Condizione 2
+				if (StringUtils.isEmpty(vCondizione2) || StringUtils.isEmpty(vCongruenzaCondizione2)) {
+					StatusCongruenzaData2 = true;
+				} else {
+					StatusCongruenzaData2 = eseguiControlloRangeDate(disposizione,
+							disposizione.get(normalizzaNome(vNomeCampo)), condizione.getDataSistemaCond(),
+							vCongruenzaCondizione2, vCondizione2, condizione.isLavorativoCond(), false);
+				}
+			}
+
+			if (StatusCongruenzaData1 == false || StatusCongruenzaData2 == false)
+				return false;
+			else
+				return true;
+		}
+
+		return false;
+
+	}
+
+	private boolean eseguiControlloRangeDate(Map<String, Object> source, Object valore, String CampoConfronto,
+			String ValoreConfronto, String Statement, boolean SoloGiorniLavorativi, boolean CheckGiornoLavorativo) {
+		if (valore == null)
+			return true;
+
+		Date valoreData = DateUtils.parse(valore);
+
+		Date DataConfronto = new Date(Long.MIN_VALUE);
+		if ("DATA DI SISTEMA".equalsIgnoreCase(CampoConfronto))
+			DataConfronto = new Date();
+		else {
+			DataConfronto = DateUtils.parse(CampoConfronto);
+			if (DataConfronto == null) {
+				return true;
+				// throw new ApplicationException(string.Format("EseguiControlloRangeDate: La
+				// data specificata non è valida ({0})", CampoConfronto));
+			}
+		}
+
+		// Calcolo valore di confronto
+		if (!StringUtils.isEmpty(ValoreConfronto) && CommonFunctions.IsInteger(ValoreConfronto)) {
+			// TODO
+			int somma = Integer.parseInt(ValoreConfronto);
+			DataConfronto = DateUtils.addDays(DataConfronto, somma);
+		}
+
+		boolean ok = false;
+
+		if ("=".equals(Statement))
+			ok = valoreData.compareTo(DataConfronto) == 0;
+		else if ("<>".equals(Statement))
+			ok = valoreData.compareTo(DataConfronto) != 0;
+		else if (">".equals(Statement))
+			ok = valoreData.compareTo(DataConfronto) > 0;
+		else if ("<".equals(Statement))
+			ok = valoreData.compareTo(DataConfronto) < 0;
+		else if (">=".equals(Statement))
+			ok = valoreData.compareTo(DataConfronto) >= 0;
+		else if ("<=".equals(Statement))
+			ok = valoreData.compareTo(DataConfronto) <= 0;
+
+		if (ok == true && CheckGiornoLavorativo == true) {
+			DateTime dt = new DateTime(valoreData);
+			if (dt.getDayOfWeek() == DateUtils.SATURDAY || dt.getDayOfWeek() == DateUtils.SUNDAY)
+				return false;
+		}
+
+		return ok;
+	}
+
+	private boolean EseguiControlloCongruenza(String vNomeCampo, Map<String, Object> source, Object value,
+			String ValoreConfronto, String Statement) {
+		if (value instanceof String) {
+			String valueString = (String) value;
+			if ("=".equals(Statement)) {
+				if ("NULL".equalsIgnoreCase(ValoreConfronto))
+					return StringUtils.isEmpty(value.toString());
+
+				if (valueString.equals(ValoreConfronto))
+					return true;
+				else {
+					if (StringUtils.isEmpty(valueString) == false && valueString.startsWith(ValoreConfronto))
+						return true;
+					return false;
+				}
+			} else if ("<>".equals(Statement)) {
+				if ("NULL".equalsIgnoreCase(ValoreConfronto))
+					return !StringUtils.isEmpty(value.toString());
+
+				return !valueString.equals(ValoreConfronto);
+			} else if (">=".equals(Statement))
+				return valueString.compareTo(ValoreConfronto) == 1 || valueString.equals(ValoreConfronto);
+			else if ("<=".equals(Statement))
+				return valueString.compareTo(ValoreConfronto) == -1 || valueString.equals(ValoreConfronto);
+			else if (">".equals(Statement))
+				return valueString.compareTo(ValoreConfronto) == 1;
+			else if ("<".equals(Statement))
+				return valueString.compareTo(ValoreConfronto) == -1;
+		} else if (value instanceof Integer || value instanceof Double) {
+			Double valoreDecimal = ToDecimal(value);
+			Double valoreConfrontoDecimal = ToDecimal(ValoreConfronto);
+
+			if ("=".equals(Statement))
+				return valoreDecimal.equals(valoreConfrontoDecimal);
+			else if ("<>".equals(Statement))
+				return !valoreDecimal.equals(valoreConfrontoDecimal);
+			else if (">".equals(Statement))
+				return valoreDecimal.compareTo(valoreConfrontoDecimal) > 0;
+			else if (">=".equals(Statement))
+				return valoreDecimal.compareTo(valoreConfrontoDecimal) >= 0;
+			else if ("<".equals(Statement))
+				return valoreDecimal.compareTo(valoreConfrontoDecimal) < 0;
+			else if ("<=".equals(Statement))
+				return valoreDecimal.compareTo(valoreConfrontoDecimal) <= 0;
+		} else if (value instanceof Date) {
+			Date valoreDateTime = ParseDate(value);
+			Date valoreConfrontoDateTime = ParseDate(ValoreConfronto);
+
+			if ("=".equals(Statement))
+				return valoreDateTime.equals(valoreConfrontoDateTime);
+			else if ("<>".equals(Statement))
+				return !valoreDateTime.equals(valoreConfrontoDateTime);
+			else if (">".equals(Statement))
+				return valoreDateTime.compareTo(valoreConfrontoDateTime) > 0;
+			else if (">=".equals(Statement))
+				return valoreDateTime.compareTo(valoreConfrontoDateTime) >= 0;
+			else if ("<".equals(Statement))
+				return valoreDateTime.compareTo(valoreConfrontoDateTime) < 0;
+			else if ("<=".equals(Statement))
+				return valoreDateTime.compareTo(valoreConfrontoDateTime) <= 0;
+		}
+
+		if (value == null)
+			return false;
+
+		return false;
+	}
+
+	private Double ToDecimal(Object value) {
+		if (value instanceof Integer)
+			return Double.valueOf((Integer) value);
+
+		else if (value instanceof Double)
+			return (Double) value;
+		else if (value instanceof String) {
+			Double v = 0.0;
+			try {
+				v = Double.parseDouble((String) value);
+			} catch (Exception ex) {
+				v = 0.0;
+			}
+			return v;
+		}
+
+		return 0.0;
+
+	}
+
+	private String ParseValue(Object v) {
+		if (v == null)
+			return "(vuoto)";
+		else
+			return v.toString();
+	}
+
+	private Date ParseDate(Object valore) {
+		if (valore == null)
+			return new Date(Long.MIN_VALUE);
+		if (valore instanceof Date)
+			return (Date) valore;
+		if (valore instanceof String && StringUtils.isEmpty((String) valore))
+			return new Date(Long.MIN_VALUE);
+		if (valore instanceof String && StringUtils.isEmpty((String) valore) == false
+				&& ("NULL".equals((String) valore)))
+			return new Date(Long.MIN_VALUE);
+
+		Date v = new Date(Long.MIN_VALUE);
+		try {
+			v = DateUtils.parse(valore);
+		} catch (Exception ex) {
+			v = new Date(Long.MIN_VALUE);
+		}
+		return v;
+	}
+
+	private boolean IsEmpty(Map<String, Object> source, String Campo) {
+		Campo = normalizzaNome(Campo);
+		if (source.containsKey(Campo) == false) {
+			return false;
+		}
+
+		if (source.get(Campo) == null)
+			return true;
+
+		Object v = source.get(Campo);
+		if (v instanceof String || v instanceof Integer || v instanceof Double || v instanceof Date
+				|| v instanceof java.sql.Date) {
+			if (v instanceof String && StringUtils.isEmpty((String) v) == true)
+				return true;
+			else if (v instanceof Integer && (Integer) v == 0)
+				return true;
+			else if (v instanceof Double && (Double) v == 0)
+				return true;
+			else if (v instanceof Date && (Date) v == new Date(Long.MIN_VALUE))
+				return true;
+			else if (v instanceof java.sql.Date && ((java.sql.Date) v).getTime() == new Date(Long.MIN_VALUE).getTime())
+				return true;
+		} else {
+		}
+
+		return false;
+	}
+
+	private boolean ControllaConvalida(Map<String, Object> source, CondizioniCtrlRid condizione,
+			DettaglioErrori dettaglioErrori, boolean useTransactions) {
+		String vCampo_Chiave = condizione.getCampoChiave();
+		if ("IMPORTO".equalsIgnoreCase(vCampo_Chiave))
+			vCampo_Chiave = "ImportoDbgrid";
+
+		if (vCampo_Chiave.contains("à") && source.containsKey(normalizzaNome(vCampo_Chiave)) == false)
+			vCampo_Chiave = vCampo_Chiave.replace("à", "a");
+
+		// Controllo per Flag Forzatura Errore
+		if (condizione.isFlagErrore()) {
+			dettaglioErrori.AggiungiErroriCongruenza(vCampo_Chiave, "Rilevato Errore",
+					ParseValue(source.get(vCampo_Chiave)));
+			// cct.ErroriCongruenza = cct.ErroriCongruenza + 1
+			// ccrc.ErroriCongruenza = True
+			// ccrc.CurrentError = ErrorEnum.ForzaturaErrore
+			// ccrc.CurrentValue = vv
+
+			return false;
+		}
+
+		boolean IsEmptyCampoChiave = IsEmpty(source, vCampo_Chiave);
+
+		// Controllo per campo obbligatorio
+		if (condizione.isObbligatorio()) {
+			if (IsEmptyCampoChiave == true) {
+				dettaglioErrori.AggiungiErroriCampiObbligatori(vCampo_Chiave, "(vuoto)");
+				// cct.ErroriCampiObbligatori = cct.ErroriCampiObbligatori + 1
+				// ccrc.ErroriCampiObbligatori = True
+				// ccrc.CurrentValue = "<nessun valore>"
+				// ccrc.CurrentError = ErrorEnum.CampoObbligatorio
+				return false;
+			}
+		}
+
+		// Controllo per range ( non di date )
+		if (StringUtils.isEmpty(condizione.getCampoDataSistema())
+				&& StringUtils.isEmpty(condizione.getCondizione3()) == false) {
+			boolean StatusCongruenza1 = false;
+			boolean StatusCongruenza2 = false;
+
+			// Controllo Condizione 3
+			String Condizione3 = condizione.getCondizione3();
+			StatusCongruenza1 = EseguiControlloCongruenza(vCampo_Chiave, source,
+					source.get(normalizzaNome(vCampo_Chiave)), condizione.getCongruenzaCondizione3(), Condizione3);
+			if ("=".equals(Condizione3) || "<>".equals(Condizione3)) {
+				StatusCongruenza2 = true;
+			} else {
+				// Controllo Condizione 4
+				if (StringUtils.isEmpty(condizione.getCondizione4())
+						&& StringUtils.isEmpty(condizione.getCongruenzaCondizione4())) {
+					StatusCongruenza2 = true;
+				} else {
+					StatusCongruenza2 = EseguiControlloCongruenza(vCampo_Chiave, source,
+							source.get(normalizzaNome(vCampo_Chiave)), condizione.getCongruenzaCondizione4(),
+							condizione.getCondizione4());
+				}
+			}
+
+			if (StatusCongruenza1 == false || StatusCongruenza2 == false) {
+				dettaglioErrori.AggiungiErroriCongruenza(vCampo_Chiave, "Condizione Errata",
+						ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+				// cct.ErroriCongruenza = cct.ErroriCongruenza + 1
+				// ccrc.ErroriCongruenza = True
+				// ccrc.CurrentError = ErrorEnum.FuoriRange
+				// ccrc.CurrentValue = vv
+				return false;
+			}
+		}
+
+		// Controllo per range (campi data)
+		if (StringUtils.isEmpty(condizione.getCampoDataSistema()) == false
+				&& StringUtils.isEmpty(condizione.getCondizione3()) == false) {
+			boolean StatusCongruenzaData1 = false;
+			boolean StatusCongruenzaData2 = false;
+			String Condizione3 = condizione.getCondizione3();
+			Object valore = source.get(normalizzaNome(vCampo_Chiave));
+
+			StatusCongruenzaData1 = eseguiControlloRangeDate(source, valore, condizione.getCampoDataSistema(),
+					condizione.getCongruenzaCondizione3(), Condizione3, condizione.isFlagLavorativo(),
+					condizione.isFlagSoloGiornoLavorativo());
+
+			if ("=".equals(Condizione3) || "<>".equals(Condizione3)) {
+				StatusCongruenzaData2 = true;
+			} else {
+				// Controllo Condizione 4
+				if (StringUtils.isEmpty(condizione.getCondizione4())
+						&& StringUtils.isEmpty(condizione.getCongruenzaCondizione4())) {
+					StatusCongruenzaData2 = true;
+				} else {
+					StatusCongruenzaData2 = eseguiControlloRangeDate(source, valore, condizione.getCampoDataSistema(),
+							condizione.getCongruenzaCondizione4(), condizione.getCondizione4(),
+							condizione.isFlagLavorativo(), condizione.isFlagSoloGiornoLavorativo());
+				}
+			}
+
+			if (StatusCongruenzaData1 == false || StatusCongruenzaData2 == false) {
+				dettaglioErrori.AggiungiErroriCampiData(vCampo_Chiave, ParseValue(valore));
+				// cct.ErroriCampiData = cct.ErroriCampiData + 1
+				// ccrc.ErroriCampiData = True
+				// ccrc.CurrentError = ErrorEnum.FuoriRange
+				// ccrc.CurrentValue = vv
+				return false;
+			}
+		}
+
+		// Controllo Banca Aderente (non legato alla configurazione di convalida ma
+		// forzato per RIB, RID E UTENZE)
+		// Controllo di Piazzatura
+		short FlagPiazzatura = condizione.getFlagPiazzatura();
+		if (IsEmptyCampoChiave == false && FlagPiazzatura != 0) {
+			boolean isinError = false;
+
+			if (StringUtils.isEmpty(condizione.getCampoReciprocoPiazzatura()) == false) {
+				if (!abiCabDao.existsAbiCab(
+						(String) source.get(normalizzaNome(condizione.getCampoReciprocoPiazzatura())),
+						(String) source.get(normalizzaNome(vCampo_Chiave)), useTransactions))
+					isinError = true;
+
+			} else {
+				if (!abiCabDao.existsAbi((String) source.get(normalizzaNome(vCampo_Chiave)), useTransactions))
+					isinError = true;
+			}
+
+			if (isinError == true) {
+				if (FlagPiazzatura == 2)
+					dettaglioErrori.AggiungiErroriWarning(vCampo_Chiave,
+							ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+				else
+					dettaglioErrori.AggiungiErroriPiazzatura(vCampo_Chiave,
+							ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+				return false;
+			}
+		}
+
+		// Controllo Codice Fiscale
+		short FlagControlloCodiceFiscale = condizione.getControlloCodiceFiscale();
+		if (IsEmptyCampoChiave == false && FlagControlloCodiceFiscale != 0) {
+			if (CodiceFiscale.ControllaCF((String) source.get(normalizzaNome(vCampo_Chiave))) != CodiceFiscale.CF_OK) {
+				if (FlagControlloCodiceFiscale == 2)
+					dettaglioErrori.AggiungiErroriWarning(vCampo_Chiave,
+							ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+				else
+					dettaglioErrori.AggiungiErroriCongruenza(vCampo_Chiave, "ControlloCodiceFiscale",
+							ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+				// cct.ErroriCongruenza = cct.ErroriCongruenza + 1
+				// ccrc.ErroriCongruenza = True
+				// ccrc.CurrentError = ErrorEnum.CodiceFiscaleErrato
+				// ccrc.CurrentValue = vv
+				return false;
+			}
+		}
+
+		// Controllo Cin
+		if (IsEmptyCampoChiave == false && condizione.isControlloCin() == true) {
+			if (Formalismi.CheckCin((String) source.get(normalizzaNome(vCampo_Chiave)),
+					(String) source.get(normalizzaNome(condizione.getAbiControlloCin())),
+					(String) source.get(normalizzaNome(condizione.getCabControlloCin())),
+					(String) source.get(normalizzaNome(condizione.getContoControlloCin()))) == false) {
+				dettaglioErrori.AggiungiErroriCongruenza(vCampo_Chiave, "ControlloCin",
+						ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+				// cct.ErroriCongruenza = cct.ErroriCongruenza + 1
+				// ccrc.ErroriCongruenza = True
+				// ccrc.CurrentError = ErrorEnum.CodiceFiscaleErrato
+				// ccrc.CurrentValue = vv
+				return false;
+			}
+		}
+
+		// Controllo IBAN
+
+		// if (IsEmptyCampoChiave == false && condizione.isControlloIban() == true)
+		if (condizione.isControlloIban()) {
+			if (!IsEmptyCampoChiave
+					&& !StringUtils.isEmpty(ParseValue(source.get(source.get(normalizzaNome(vCampo_Chiave)))))
+					&& !"CheckDigit".equals(vCampo_Chiave)) {
+				if (Formalismi.CheckIBAN((String) source.get(normalizzaNome(vCampo_Chiave))) == false) {
+					dettaglioErrori.AggiungiErroriCongruenza(vCampo_Chiave, "ControlloIBAN",
+							ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+					// cct.ErroriCongruenza = cct.ErroriCongruenza + 1
+					// ccrc.ErroriCongruenza = True
+					// ccrc.CurrentError = ErrorEnum.CodiceFiscaleErrato
+					// ccrc.CurrentValue = vv
+					return false;
+				}
+			}
+		}
+
+		if (condizione.isControlloIban()) {
+			if (!IsEmptyCampoChiave
+					&& !StringUtils.isEmpty(ParseValue(source.get(source.get(normalizzaNome(vCampo_Chiave)))))
+					&& "CheckDigit".equals(vCampo_Chiave)) {
+
+				if (Formalismi.CheckIBAN((String) source.get(normalizzaNome("CodicePaese"))
+						+ (String) source.get(normalizzaNome("CheckDigit")) + (String) source.get(normalizzaNome("Cin"))
+						+ (String) source.get(normalizzaNome("Codice_Abi_Destinatario"))
+						+ (String) source.get(normalizzaNome("Cab_Destinatario"))
+						+ (String) source.get(normalizzaNome("Conto_Destinatario"))) == false) {
+					dettaglioErrori.AggiungiErroriCongruenza(vCampo_Chiave, "ControlloIBAN-CheckDigit",
+							ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+					// cct.ErroriCongruenza = cct.ErroriCongruenza + 1
+					// ccrc.ErroriCongruenza = True
+					// ccrc.CurrentError = ErrorEnum.CodiceFiscaleErrato
+					// ccrc.CurrentValue = vv
+					return false;
+				}
+			}
+		}
+
+		// Controllo Caratteri Ammessi
+		if (IsEmptyCampoChiave == false && !StringUtils.isEmpty(condizione.getCaratteriAbilitati())) {
+			String caratteriValidi = condizione.getCaratteriAbilitati();
+			if (Formalismi.EseguiControlloCaratteriAmmessi((String) source.get(normalizzaNome(vCampo_Chiave)),
+					caratteriValidi) == false) {
+				dettaglioErrori.AggiungiErroriCongruenza(vCampo_Chiave,
+						String.format("CaratteriAbilitati=%s", caratteriValidi),
+						ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+				// cct.ErroriCongruenza = cct.ErroriCongruenza + 1
+				// ccrc.ErroriCongruenza = True
+				// ccrc.CurrentError = ErrorEnum.CodiceFiscaleErrato
+				// ccrc.CurrentValue = vv
+				return false;
+			}
+		}
+
+		// Controllo Lunghezza Campo Vincolante
+		if (IsEmptyCampoChiave == false && !StringUtils.isEmpty(condizione.getControlloLunghezzaCampo())) {
+			if (condizione.getControlloLunghezzaCampo() != null) {
+				String v = (String) source.get(normalizzaNome(vCampo_Chiave));
+				int num = 0;
+				try {
+					num = Integer.parseInt(condizione.getControlloLunghezzaCampo());
+					if (v.trim().length() != num) {
+						dettaglioErrori.AggiungiErroriCongruenza(vCampo_Chiave,
+								String.format("ControlloLunghezzaCampo=%d", num),
+								ParseValue(source.get(normalizzaNome(vCampo_Chiave))));
+						// cct.ErroriCongruenza = cct.ErroriCongruenza + 1
+						// ccrc.ErroriCongruenza = True
+						// ccrc.CurrentError = ErrorEnum.CodiceFiscaleErrato
+						// ccrc.CurrentValue = vv
+						return false;
+					}
+				} catch (Exception ex) {
+					num = 0;
+				}
+			}
+		}
+
+		// Controllo tipo bollettino mav
+		// Controllo valore univoco
+
+		return true;
+	}
+
+	private int findCampoChiave(int countRow, String CampoControllo) {
+		if (countRow + 1 >= condizioni.size())
+			return -1;
+		for (int row = countRow + 1; row != condizioni.size(); row++) {
+			if (!CampoControllo.equals(condizioni.get(row).getCampoChiave()))
+				return row;
+		}
+		return -1;
+	}
+
+	private int findStat2Then(int countRow) {
+		if (countRow + 1 >= condizioni.size())
+			return -1;
+		for (int row = countRow + 1; row != condizioni.size(); row++) {
+			if ("THEN".equals(condizioni.get(countRow).getStatement2()))
+				return row - 1;
+		}
+		return countRow;
+	}
+
+}

+ 178 - 0
sicura.business/src/utils/DettaglioErrori.java

@@ -0,0 +1,178 @@
+package utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DettaglioErrori {
+
+	public enum LivelliErrore {BLOCCANTE, OK, WARNING};
+
+	private class ErrorDescription
+	{
+		LivelliErrore Livello;
+		String Dettaglio;
+		
+		public ErrorDescription(LivelliErrore livello, String dettaglio) {
+			super();
+			this.Livello = livello;
+			this.Dettaglio = dettaglio;
+		}
+		
+		public LivelliErrore getLivello() {
+			return Livello;
+		}
+		public void setLivello(LivelliErrore livello) {
+			Livello = livello;
+		}
+		public String getDettaglio() {
+			return Dettaglio;
+		}
+		public void setDettaglio(String dettaglio) {
+			Dettaglio = dettaglio;
+		}
+		
+		
+	}
+
+	
+	
+	int erroriCampiObbligatori;
+	int erroriCampiData;
+	int erroriCongruenza;
+	int erroriPiazzatura;
+	int erroriWarning;
+
+	private LivelliErrore livello;
+	private List<ErrorDescription> _campiConErrore = new ArrayList<ErrorDescription>();
+
+	
+	public DettaglioErrori() {
+		this.erroriCampiObbligatori = 0;
+		this.erroriCampiData = 0;
+		this.erroriCongruenza = 0;
+		this.erroriPiazzatura = 0;
+		this.erroriWarning = 0;
+		this.livello = LivelliErrore.OK;
+	}
+	
+	
+	public int getErroriCampiObbligatori() {
+		return erroriCampiObbligatori;
+	}
+
+
+	public void setErroriCampiObbligatori(int erroriCampiObbligatori) {
+		this.erroriCampiObbligatori = erroriCampiObbligatori;
+	}
+
+
+	public int getErroriCampiData() {
+		return erroriCampiData;
+	}
+
+
+	public void setErroriCampiData(int erroriCampiData) {
+		this.erroriCampiData = erroriCampiData;
+	}
+
+
+	public int getErroriCongruenza() {
+		return erroriCongruenza;
+	}
+
+
+	public void setErroriCongruenza(int erroriCongruenza) {
+		this.erroriCongruenza = erroriCongruenza;
+	}
+
+
+	public int getErroriPiazzatura() {
+		return erroriPiazzatura;
+	}
+
+
+	public void setErroriPiazzatura(int erroriPiazzatura) {
+		this.erroriPiazzatura = erroriPiazzatura;
+	}
+
+
+	public List<ErrorDescription> get_campiConErrore() {
+		return _campiConErrore;
+	}
+
+
+	public void set_campiConErrore(List<ErrorDescription> _campiConErrore) {
+		this._campiConErrore = _campiConErrore;
+	}
+
+
+	public LivelliErrore getLivelloErrore() {
+		return livello;
+	}
+
+	public void setLivelloErrore(LivelliErrore livelloErrore) {
+		this.livello = livelloErrore;
+	}
+
+	public int getErroriWarning() {
+		return erroriWarning;
+	}
+
+	public void setErroriWarning(int erroriWarning) {
+		this.erroriWarning = erroriWarning;
+	}
+	
+
+	public void AggiungiErroriCampiObbligatori(String NomeCampo, String Valore )
+	{
+		erroriCampiObbligatori++;
+		_campiConErrore.add( 
+			new ErrorDescription(LivelliErrore.BLOCCANTE,String.format("Errore Campo Obbligatorio '%s=%s'", NomeCampo, Valore))
+		);
+	}
+	public void AggiungiErroriCampiData(String NomeCampo, String Valore )
+	{
+		erroriCampiData++;
+		_campiConErrore.add(
+			new ErrorDescription(LivelliErrore.BLOCCANTE,String.format("Errore Campo Data '%s=%s'", NomeCampo, Valore))
+		);
+	}
+	public void AggiungiErroriCongruenza( String NomeCampo, String SubError, String Valore )
+	{
+		erroriCongruenza++;
+		_campiConErrore.add(
+			new ErrorDescription(
+				LivelliErrore.BLOCCANTE,
+				String.format("Errore Congruenza '%s=%s : %s'", NomeCampo, Valore, SubError))
+			);
+	}
+	public void AggiungiErroriPiazzatura( String NomeCampo, String Valore )
+	{
+		erroriPiazzatura++;
+		_campiConErrore.add(
+			new ErrorDescription(
+				LivelliErrore.BLOCCANTE,
+				String.format("Errore Piazzatura '%s=%s'", NomeCampo, Valore))
+			);
+	}
+	public void AggiungiErroriWarning( String NomeCampo, String Valore )
+	{
+		erroriWarning++;
+		_campiConErrore.add(
+			new ErrorDescription(
+				LivelliErrore.WARNING,
+				String.format("Campo in Warning '%s=%s'", NomeCampo, Valore))
+			);
+	}
+
+	protected void Clear()
+	{
+		erroriCampiObbligatori = 0;
+		erroriCampiData = 0;
+		erroriCongruenza = 0;
+		erroriPiazzatura = 0;
+		erroriWarning = 0;
+		_campiConErrore = new ArrayList<ErrorDescription>();
+	}	
+	
+}

+ 553 - 0
sicura.business/src/utils/Formalismi.java

@@ -0,0 +1,553 @@
+package utils;
+
+import java.math.BigInteger;
+
+import org.apache.commons.lang.StringUtils;
+
+public class Formalismi {
+
+	
+	public static final int IBANNUMBER_MIN_SIZE = 15;
+    public static final int IBANNUMBER_MAX_SIZE = 34;
+    public static final BigInteger IBANNUMBER_MAGIC_NUMBER = new BigInteger("97");
+
+	/// <summary>
+	/// Get for the input String ONLY chars in pattern
+	/// </summary>
+	/// <param name="str">String to parse</param>
+	/// <param name="pat">Pattern</param>
+	/// <returns></returns>
+	public static String ONLY( String str, String pat )
+	{
+		String newStr = "";
+		int found;
+
+		for( int t=0; t!=str.length(); t++ ) 
+		{
+			found = pat.indexOf( str.charAt(t) );
+			if( found != -1 ) 
+				newStr += pat.charAt(found);
+		}
+
+		return newStr;
+	}
+
+	/// <summary>
+	/// Get fot the input String ONLY numeric chars
+	/// </summary>
+	/// <param name="str">String to parse</param>
+	/// <returns></returns>
+	public static String ONLYNumbers( String str )
+	{
+		if (str == null || "".equals(str)) 
+			return "";
+		//if( str == String.Empty ) return "0";
+		return ONLY(str, "0123456789");
+	}
+
+	public static boolean IsAlpha(String valore)
+	{
+		if( valore == null || "".equals(valore) ) 
+			return true;
+		return ONLY( valore, "ABCDEFGHJKLMNPQRSTUVWXYZ").length() == valore.length();
+	}
+
+	public static boolean IsNumeric(String valore)
+	{
+		if( valore == null || "".equals(valore) ) return true;
+		return ONLYNumbers( valore ).length() == valore.length();
+	}
+	
+	/// <summary>
+	/// Get the last (right) "len" chars of the String
+	/// </summary>
+	/// <param name="str">String to evaluate</param>
+	/// <param name="len">Length of result String</param>
+	/// <returns></returns>
+	public static String Right( String str, int len )
+	{
+		int l = str.length();
+
+		if( l < len )
+			return str;
+		else
+			return str.substring( l-len );
+	}
+
+	public static boolean ContaintsCBIInvalidsValues( String v )
+	{
+		if( v == null ) return false;
+
+		for(int i=0;i<v.length();i++)
+		{
+			char c =v.charAt(i);
+			if( !(c == ' ' ||
+				c == '"' ||
+				//(c >= 0x24 && c <= 0x2E) ||
+				(c >= 0x30 && c <= 0x39) ||
+				(c >= 0x41 && c <= 0x5A) ||
+				c == '_' || c == '.' || c == '/' || c == '&' ||
+				(c >= 0x61 && c <= 0x7A)) ) return true;
+		}
+		return false;
+	}
+
+
+	public static boolean CheckCin(String inCin, String inAbi, String inCab, String inConto)
+	{
+		String Coordinate = (StringUtils.leftPad(inAbi,5,'0') +
+												StringUtils.leftPad(inCab,5,'0') +
+												StringUtils.leftPad(inConto,12,'0').substring(0,12)).toUpperCase();
+		int SommaCaratteri = 0;
+
+		for( int i=0; i!=22; i++ ) 
+		{
+			boolean Pari = false;
+
+			if( (i+1) % 2 == 0 ) Pari = true;
+
+			if( Coordinate.substring(i,i+1).equals("A") ||Coordinate.substring(i,i+1).equals("0")) 
+					SommaCaratteri += (Pari == true) ? 0 : 1;
+			else if( Coordinate.substring(i,i+1).equals("B") ||Coordinate.substring(i,i+1).equals("1"))
+					SommaCaratteri += (Pari == true) ? 1 : 0;
+			else if( Coordinate.substring(i,i+1).equals("C") ||Coordinate.substring(i,i+1).equals("2"))
+					SommaCaratteri += (Pari == true) ? 2 : 5;
+			else if( Coordinate.substring(i,i+1).equals("D") ||Coordinate.substring(i,i+1).equals("3"))
+					SommaCaratteri += (Pari == true) ? 3 : 7;
+			else if( Coordinate.substring(i,i+1).equals("E") ||Coordinate.substring(i,i+1).equals("4"))
+					SommaCaratteri += (Pari == true) ? 4 : 9;
+			else if( Coordinate.substring(i,i+1).equals("F") ||Coordinate.substring(i,i+1).equals("5"))
+					SommaCaratteri += (Pari == true) ? 5 : 13;
+			else if( Coordinate.substring(i,i+1).equals("G") ||Coordinate.substring(i,i+1).equals("6"))
+					SommaCaratteri += (Pari == true) ? 6 : 15;
+			else if( Coordinate.substring(i,i+1).equals("H") ||Coordinate.substring(i,i+1).equals("7"))
+							SommaCaratteri += (Pari == true) ? 7 : 17;
+			else if( Coordinate.substring(i,i+1).equals("I") ||Coordinate.substring(i,i+1).equals("8"))
+					SommaCaratteri += (Pari == true) ? 8 : 19;
+			else if( Coordinate.substring(i,i+1).equals("J") ||Coordinate.substring(i,i+1).equals("9"))
+					SommaCaratteri += (Pari == true) ? 9 : 21;
+			else if( Coordinate.substring(i,i+1).equals("K"))
+					SommaCaratteri += (Pari == true) ? 10 : 2;
+			else if( Coordinate.substring(i,i+1).equals("L"))
+					SommaCaratteri += (Pari == true) ? 11 : 4;
+			else if( Coordinate.substring(i,i+1).equals("M"))
+				SommaCaratteri += (Pari == true) ? 12 : 18;
+			else if( Coordinate.substring(i,i+1).equals("N"))
+				SommaCaratteri += (Pari == true) ? 13 : 20;
+			else if( Coordinate.substring(i,i+1).equals("O"))
+				SommaCaratteri += (Pari == true) ? 14 : 11;
+			else if( Coordinate.substring(i,i+1).equals("P"))
+					SommaCaratteri += (Pari == true) ? 15 : 3;
+			else if( Coordinate.substring(i,i+1).equals("Q"))
+					SommaCaratteri += (Pari == true) ? 16 : 6;
+			else if( Coordinate.substring(i,i+1).equals("R"))
+					SommaCaratteri += (Pari == true) ? 17 : 8;
+			else if( Coordinate.substring(i,i+1).equals("S"))
+					SommaCaratteri += (Pari == true) ? 18 : 12;
+			else if( Coordinate.substring(i,i+1).equals("T"))
+					SommaCaratteri += (Pari == true) ? 19 : 14;
+			else if( Coordinate.substring(i,i+1).equals("U"))
+					SommaCaratteri += (Pari == true) ? 20 : 16;
+			else if( Coordinate.substring(i,i+1).equals("V"))
+					SommaCaratteri += (Pari == true) ? 21 : 10;
+			else if( Coordinate.substring(i,i+1).equals("W"))
+					SommaCaratteri += 22;
+			else if( Coordinate.substring(i,i+1).equals("X"))
+					SommaCaratteri += (Pari == true) ? 23 : 25;
+			else if( Coordinate.substring(i,i+1).equals("Y"))
+					SommaCaratteri += 24;
+			else if( Coordinate.substring(i,i+1).equals("Z"))
+					SommaCaratteri += (Pari == true) ? 25 : 23;
+			else if( Coordinate.substring(i,i+1).equals("-"))
+					SommaCaratteri += (Pari == true) ? 26 : 27;
+			else if( Coordinate.substring(i,i+1).equals("."))
+					SommaCaratteri += (Pari == true) ? 27 : 28;
+			else if( Coordinate.substring(i,i+1).equals(" "))
+					SommaCaratteri += (Pari == true) ? 28 : 26;
+			
+		}
+
+		switch( SommaCaratteri % 26 ) 
+		{
+			case 0:
+				return inCin.equals("A");
+			case 1:
+				return inCin.equals("B");
+			case 2:
+				return inCin.equals("C");
+			case 3:
+				return inCin.equals("D");
+			case 4:
+				return inCin.equals("E");
+			case 5:
+				return inCin.equals("F");
+			case 6:
+				return inCin.equals("G");
+			case 7:
+				return inCin.equals("H");
+			case 8:
+				return inCin.equals("I");
+			case 9:
+				return inCin.equals("J");
+			case 10:
+				return inCin.equals("K");
+			case 11:
+				return inCin.equals("L");
+			case 12:
+				return inCin.equals("M");
+			case 13:
+				return inCin.equals("N");
+			case 14:
+				return inCin.equals("O");
+			case 15:
+				return inCin.equals("P");
+			case 16:
+				return inCin.equals("Q");
+			case 17:
+				return inCin.equals("R");
+			case 18:
+				return inCin.equals("S");
+			case 19:
+				return inCin.equals("T");
+			case 20:
+				return inCin.equals("U");
+			case 21:
+				return inCin.equals("V");
+			case 22:
+				return inCin.equals("W"); 
+			case 23:
+				return inCin.equals("X");
+			case 24:
+				return inCin.equals("Y");
+			case 25:
+				return inCin.equals("Z");
+
+			default:
+				return false;
+		}
+	}
+
+	public static String ValidazioneCin(String bufStringa)
+	{
+		int cinStringa = 0;
+
+		for( int i=0; i != bufStringa.length(); i++ )
+		{
+			// For i = 1 To Len(bufStringa)
+			//   cinStringa = cinStringa + (Val(Asc(Mid(bufStringa, i, 1))) * i)
+			// Next i
+			cinStringa += ((int)bufStringa.charAt(i)) * (i+1);
+		}
+		cinStringa = cinStringa % 36;
+		return ConvertiNumeroValore(cinStringa);
+	}
+
+	private static String ConvertiNumeroValore(int cinStringa)
+	{
+		switch (cinStringa)
+		{
+			case 0: return "Z";
+			case 1: return "0";
+			case 2: return "1";
+			case 3: return "2";
+			case 4: return "3";
+			case 5: return "4";
+			case 6: return "5";
+			case 7: return "6";
+			case 8: return "7";
+			case 9: return "8";
+			case 10: return "9";
+			case 11: return "A";
+			case 12: return "B";
+			case 13: return "C";
+			case 14: return "D";
+			case 15: return "E";
+			case 16: return "F";
+			case 17: return "G";
+			case 18: return "H";
+			case 19: return "I";
+			case 20: return "J";
+			case 21: return "K";
+			case 22: return "L";
+			case 23: return "M";
+			case 24: return "N";
+			case 25: return "O";
+			case 26: return "P";
+			case 27: return "Q";
+			case 28: return "R";
+			case 29: return "S";
+			case 30: return "T";
+			case 31: return "U";
+			case 32: return "V";
+			case 33: return "W";
+			case 34: return "X";
+			case 35: return "Y";
+			case 36: return "Z";
+		}
+		return "0";
+	}
+
+
+	public static boolean CheckIBAN_Fast( String iban )
+	{
+		if (iban.length() < 2 || iban.charAt(0) == ' ' || iban.charAt(1) == ' ') return false;
+
+		int checksum = 0;
+		int ibanLength = iban.length();
+		for (int charIndex = 0; charIndex < ibanLength; charIndex++)
+		{
+			if (iban.charAt(charIndex) == ' ') continue;
+
+			int value;
+			int c = iban.charAt((charIndex + 4) % ibanLength);
+			if ((c >= '0') && (c <= '9'))
+			{
+				value = c - '0';
+			}
+			else if ((c >= 'A') && (c <= 'Z'))
+			{
+				value = c - 'A';
+				checksum = (checksum * 10 + (value / 10 + 1)) % 97;
+				value %= 10;
+			}
+			else if ((c >= 'a') && (c <= 'z'))
+			{
+				value = c - 'a';
+				checksum = (checksum * 10 + (value / 10 + 1)) % 97;
+				value %= 10;
+			}
+			else
+				return false;
+
+			checksum = (checksum * 10 + value) % 97;
+		}
+		return checksum == 1;
+	}
+
+	public static boolean CheckIBAN(String iban) {
+		
+		
+		String newIban = iban.replace(" ","").trim();
+
+        // Check that the total IBAN length is correct as per the country. If not, the IBAN is invalid. We could also check
+        // for specific length according to country, but for now we won't
+        if (newIban.length() < IBANNUMBER_MIN_SIZE || newIban.length() > IBANNUMBER_MAX_SIZE) {
+            return false;
+        }
+
+        // Move the four initial characters to the end of the string.
+        newIban = newIban.substring(4) + newIban.substring(0, 4);
+
+        // Replace each letter in the string with two digits, thereby expanding the string, where A = 10, B = 11, ..., Z = 35.
+        StringBuilder numericAccountNumber = new StringBuilder();
+        for (int i = 0;i < newIban.length();i++) {
+            numericAccountNumber.append(Character.getNumericValue(newIban.charAt(i)));
+        }
+
+        // Interpret the string as a decimal integer and compute the remainder of that number on division by 97.
+        BigInteger ibanNumber = new BigInteger(numericAccountNumber.toString());
+        return ibanNumber.mod(IBANNUMBER_MAGIC_NUMBER).intValue() == 1;
+	}
+	
+	public static boolean _CheckIBAN(String iban)
+	{
+		if (iban == null || iban.equals("")|| iban.trim().equals("1")) return false;
+		if (iban.trim().length() < 2) return false;
+
+		if (! "".equals(ONLYNumbers(iban.trim().substring(0, 2))))
+		{
+			return false;
+		}
+
+		String bufStringa = iban;
+		if( bufStringa.contains(" " ) ) bufStringa = iban.replace(" ", "").toUpperCase();
+		bufStringa = bufStringa.substring(4) + bufStringa.substring(0, 4); // Mid(bufStringa, 5) & Mid(bufStringa, 1, 4)
+
+		StringBuilder sb = new StringBuilder(); 
+		for (int i = 0; i < bufStringa.length(); i++)
+		{
+			char bsi = bufStringa.charAt(i); //.substring(i, 1);
+			switch (bsi)
+			{
+				case 'A':
+					sb.append("10");
+					break;
+				case 'B':
+					sb.append("11");
+					break;
+				case 'C':
+					sb.append("12");
+					break;
+				case 'D':
+					sb.append("13");
+					break;
+				case 'E':
+					sb.append("14");
+					break;
+				case 'F':
+					sb.append("15");
+					break;
+				case 'G':
+					sb.append("16");
+					break;
+				case 'H':
+					sb.append("17");
+					break;
+				case 'I':
+					sb.append("18");
+					break;
+				case 'J':
+					sb.append("19");
+					break;
+				case 'K':
+					sb.append("20");
+					break;
+				case 'L':
+					sb.append("21");
+					break;
+				case 'M':
+					sb.append("22");
+					break;
+				case 'N':
+					sb.append("23");
+					break;
+				case 'O':
+					sb.append("24");
+					break;
+				case 'P':
+					sb.append("25");
+					break;
+				case 'Q':
+					sb.append("26");
+					break;
+				case 'R':
+					sb.append("27");
+					break;
+				case 'S':
+					sb.append("28");
+					break;
+				case 'T':
+					sb.append("29");
+					break;
+				case 'U':
+					sb.append("30");
+					break;
+				case 'V':
+					sb.append("31");
+					break;
+				case 'W':
+					sb.append("32");
+					break;
+				case 'X':
+					sb.append("33");
+					break;
+				case 'Y':
+					sb.append("34");
+					break;
+				case 'Z':
+					sb.append("35");
+					break;
+				default:
+					sb.append(bsi);
+					break;
+			}
+		}
+
+		String chkIban = sb.toString();
+		int checkModulo = ValidateIBAN(chkIban, 97);
+		return checkModulo == 1;
+	}
+
+	private static int ValidateIBAN(String IBAN, int modulo)
+	{
+		int i = 1;
+		Integer bufModulo = 0;
+
+		do
+		{
+			int Numero;
+			if (i == 1)
+			{    //first time
+				try {
+					Numero = Integer.parseInt(IBAN.substring(i-1, i-1+9));
+				} catch (Exception ex) {
+					return 0;
+				}
+				i = 10;
+			}
+			else
+			{
+				//int v = 9 - bufModulo.toString().trim().length();
+				//if (IBAN.length() < (i + v)) v += (IBAN.length() - i - v);
+
+				try {
+					Numero = Integer.parseInt(bufModulo + IBAN.substring(i-1, Math.min(i-1+9-bufModulo.toString().trim().length(),IBAN.length())));	
+					i = i + (9-bufModulo.toString().trim().length());
+				} catch(Exception ex) {
+					return 0;
+				}
+				//i += v;
+				
+				//Numero = CLng(bufModulo + Mid(IBAN, i, 9 - Len(Util.Trim(Str(bufModulo)))));
+				//i = i + (9 - Len(Util.Trim(Str(bufModulo))));
+			}
+
+			bufModulo = Numero % modulo;
+		} while (i < IBAN.length());
+
+		return bufModulo;
+	}
+
+	//public static bool CheckIBAN(String iban, String abi)
+	//{
+	//	if( iban.IndexOf(" ")>=0 ) iban = iban.Replace(" ", String.Empty);
+	//	String sAbi = Mid(iban, 6, 5);
+	//	return sAbi.CompareTo(abi) == 0;
+
+	//	//String sAbi, sCab, sCC, sCin, CodicePaese, CheckDigit;
+	//	//ScorporoIBAN(iban, out sAbi, out sCab, out sCC, out sCin, out CodicePaese, out CheckDigit);
+	//	//return sAbi.CompareTo(abi) == 0;
+	//}
+
+	public static IBANScorporato ScorporoIBAN(String iban)
+	{
+		iban = iban.replace(" ", "");
+
+		IBANScorporato ibanScorporato = new IBANScorporato();
+		
+		ibanScorporato.setAbi(Mid(iban, 6, 5));
+		ibanScorporato.setCab( Mid(iban, 11, 5));
+		ibanScorporato.setCC (Mid(iban, 16, 12));
+		ibanScorporato.setCin (Mid(iban, 5, 1));
+		ibanScorporato.setCodicePaese (Mid(iban, 1, 2));
+		ibanScorporato.setCheckDigit (Mid(iban, 3, 2));
+		
+		return ibanScorporato;
+	}
+
+	private static String Mid(String Record, int Start, int Length)
+	{
+		if (Record == null || "".equals(Record)) 
+			return "";
+		if (Record.length() >= (Start + Length - 1)) 
+			return Record.substring(Start - 1, Length);
+		if (Record.length() > Start) 
+			return Record.substring(Start - 1);
+		return "";
+	}
+
+
+	public static boolean EseguiControlloCaratteriAmmessi(String inCampo, String inCaratteriValidi)
+	{
+		if ((ONLY(inCampo.toUpperCase(), inCaratteriValidi.toUpperCase())).length() != (inCampo.length()))
+		{
+			return false;
+		}
+		else
+		{
+			return true;
+		}
+	}
+}
+
+

+ 49 - 0
sicura.business/src/utils/IBANScorporato.java

@@ -0,0 +1,49 @@
+package utils;
+
+public class IBANScorporato{
+	private String Abi; 
+	private String Cab;
+	private String CC;
+	private String Cin; 
+	private String CodicePaese;
+	private String CheckDigit;
+	public String getAbi() {
+		return Abi;
+	}
+	public void setAbi(String abi) {
+		Abi = abi;
+	}
+	public String getCab() {
+		return Cab;
+	}
+	public void setCab(String cab) {
+		Cab = cab;
+	}
+	public String getCC() {
+		return CC;
+	}
+	public void setCC(String cC) {
+		CC = cC;
+	}
+	public String getCin() {
+		return Cin;
+	}
+	public void setCin(String cin) {
+		Cin = cin;
+	}
+	public String getCodicePaese() {
+		return CodicePaese;
+	}
+	public void setCodicePaese(String codicePaese) {
+		CodicePaese = codicePaese;
+	}
+	public String getCheckDigit() {
+		return CheckDigit;
+	}
+	public void setCheckDigit(String checkDigit) {
+		CheckDigit = checkDigit;
+	}
+	
+	
+}
+

+ 182 - 0
sicura.business/src/utils/Rand.java

@@ -0,0 +1,182 @@
+package utils;
+
+/**
+------------------------------------------------------------------------------
+Rand.java: By Bob Jenkins.  My random number generator, ISAAC.
+  rand.init() -- initialize
+  rand.val()  -- get a random value
+MODIFIED:
+  960327: Creation (addition of randinit, really)
+  970719: use context, not global variables, for internal state
+  980224: Translate to Java
+------------------------------------------------------------------------------
+*/
+
+public class Rand {
+  final static int SIZEL = 8;              /* log of size of rsl[] and mem[] */
+  final static int SIZE = 1<<SIZEL;               /* size of rsl[] and mem[] */
+  final static int MASK = (SIZE-1)<<2;            /* for pseudorandom lookup */
+  int count;                           /* count through the results in rsl[] */
+  int rsl[];                                /* the results given to the user */
+  private int mem[];                                   /* the internal state */
+  private int a;                                              /* accumulator */
+  private int b;                                          /* the last result */
+  private int c;              /* counter, guarantees cycle is at least 2^^40 */
+
+
+  /* no seed, equivalent to randinit(ctx,FALSE) in C */
+  Rand() {
+    mem = new int[SIZE];
+    rsl = new int[SIZE];
+    Init(false);
+  }
+
+  /* equivalent to randinit(ctx, TRUE) after putting seed in randctx in C */
+  Rand(int seed[]) {
+    mem = new int[SIZE];
+    rsl = new int[SIZE];
+    for (int i=0; i<seed.length; ++i) {
+      rsl[i] = seed[i];
+    }
+    Init(true);
+  }
+
+
+  /* Generate 256 results.  This is a fast (not small) implementation. */
+  public final void Isaac() {
+    int i, j, x, y;
+
+    b += ++c;
+    for (i=0, j=SIZE/2; i<SIZE/2;) {
+      x = mem[i];
+      a ^= a<<13;
+      a += mem[j++];
+      mem[i] = y = mem[(x&MASK)>>2] + a + b;
+      rsl[i++] = b = mem[((y>>SIZEL)&MASK)>>2] + x;
+
+      x = mem[i];
+      a ^= a>>>6;
+      a += mem[j++];
+      mem[i] = y = mem[(x&MASK)>>2] + a + b;
+      rsl[i++] = b = mem[((y>>SIZEL)&MASK)>>2] + x;
+
+      x = mem[i];
+      a ^= a<<2;
+      a += mem[j++];
+      mem[i] = y = mem[(x&MASK)>>2] + a + b;
+      rsl[i++] = b = mem[((y>>SIZEL)&MASK)>>2] + x;
+
+      x = mem[i];
+      a ^= a>>>16;
+      a += mem[j++];
+      mem[i] = y = mem[(x&MASK)>>2] + a + b;
+      rsl[i++] = b = mem[((y>>SIZEL)&MASK)>>2] + x;
+    }
+
+    for (j=0; j<SIZE/2;) {
+      x = mem[i];
+      a ^= a<<13;
+      a += mem[j++];
+      mem[i] = y = mem[(x&MASK)>>2] + a + b;
+      rsl[i++] = b = mem[((y>>SIZEL)&MASK)>>2] + x;
+
+      x = mem[i];
+      a ^= a>>>6;
+      a += mem[j++];
+      mem[i] = y = mem[(x&MASK)>>2] + a + b;
+      rsl[i++] = b = mem[((y>>SIZEL)&MASK)>>2] + x;
+
+      x = mem[i];
+      a ^= a<<2;
+      a += mem[j++];
+      mem[i] = y = mem[(x&MASK)>>2] + a + b;
+      rsl[i++] = b = mem[((y>>SIZEL)&MASK)>>2] + x;
+
+      x = mem[i];
+      a ^= a>>>16;
+      a += mem[j++];
+      mem[i] = y = mem[(x&MASK)>>2] + a + b;
+      rsl[i++] = b = mem[((y>>SIZEL)&MASK)>>2] + x;
+    }
+  }
+
+
+  /* initialize, or reinitialize, this instance of rand */
+  public final void Init(boolean flag) {
+    int i;
+    int a,b,c,d,e,f,g,h;
+    a=b=c=d=e=f=g=h=0x9e3779b9;                        /* the golden ratio */
+
+    for (i=0; i<4; ++i) {
+      a^=b<<11;  d+=a; b+=c;
+      b^=c>>>2;  e+=b; c+=d;
+      c^=d<<8;   f+=c; d+=e;
+      d^=e>>>16; g+=d; e+=f;
+      e^=f<<10;  h+=e; f+=g;
+      f^=g>>>4;  a+=f; g+=h;
+      g^=h<<8;   b+=g; h+=a;
+      h^=a>>>9;  c+=h; a+=b;
+    }
+
+    for (i=0; i<SIZE; i+=8) {              /* fill in mem[] with messy stuff */
+      if (flag) {
+	a+=rsl[i  ]; b+=rsl[i+1]; c+=rsl[i+2]; d+=rsl[i+3];
+	e+=rsl[i+4]; f+=rsl[i+5]; g+=rsl[i+6]; h+=rsl[i+7];
+      }
+      a^=b<<11;  d+=a; b+=c;
+      b^=c>>>2;  e+=b; c+=d;
+      c^=d<<8;   f+=c; d+=e;
+      d^=e>>>16; g+=d; e+=f;
+      e^=f<<10;  h+=e; f+=g;
+      f^=g>>>4;  a+=f; g+=h;
+      g^=h<<8;   b+=g; h+=a;
+      h^=a>>>9;  c+=h; a+=b;
+      mem[i  ]=a; mem[i+1]=b; mem[i+2]=c; mem[i+3]=d;
+      mem[i+4]=e; mem[i+5]=f; mem[i+6]=g; mem[i+7]=h;
+    }
+
+    if (flag) {           /* second pass makes all of seed affect all of mem */
+      for (i=0; i<SIZE; i+=8) {
+	a+=mem[i  ]; b+=mem[i+1]; c+=mem[i+2]; d+=mem[i+3];
+	e+=mem[i+4]; f+=mem[i+5]; g+=mem[i+6]; h+=mem[i+7];
+	a^=b<<11;  d+=a; b+=c;
+	b^=c>>>2;  e+=b; c+=d;
+	c^=d<<8;   f+=c; d+=e;
+	d^=e>>>16; g+=d; e+=f;
+	e^=f<<10;  h+=e; f+=g;
+	f^=g>>>4;  a+=f; g+=h;
+	g^=h<<8;   b+=g; h+=a;
+	h^=a>>>9;  c+=h; a+=b;
+	mem[i  ]=a; mem[i+1]=b; mem[i+2]=c; mem[i+3]=d;
+	mem[i+4]=e; mem[i+5]=f; mem[i+6]=g; mem[i+7]=h;
+      }
+    }
+
+    Isaac();
+    count = SIZE;
+  }
+
+
+  /* Call rand.val() to get a random value */
+  public final int  val() {
+    if (0 == count--) {
+      Isaac();
+      count = SIZE-1;
+    }
+    return rsl[count];
+  }
+
+  public static void main(String[] args) {
+    int  seed[] = new int[256];
+    Rand x = new Rand(seed);
+    for (int i=0; i<2; ++i) {
+      x.Isaac();
+      for (int j=0; j<Rand.SIZE; ++j) {
+	String z = Integer.toHexString(x.rsl[j]);
+	while (z.length() < 8) z = "0"+z;
+	System.out.print(z);
+        if ((j&7)==7) System.out.println("");
+      }
+    }
+  }
+}

+ 26 - 0
sicura.entities/.classpath

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="org.eclipse.jst.component.nondependency" value=""/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/classes" path="src">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path=".apt_generated">
+		<attributes>
+			<attribute name="optional" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

+ 6 - 0
sicura.entities/.factorypath

@@ -0,0 +1,6 @@
+<factorypath>
+    <factorypathentry kind="PLUGIN" id="com.ibm.jee.annotations.processor" enabled="true" runInBatchMode="false"/>
+    <factorypathentry kind="PLUGIN" id="com.ibm.etools.javaee.cdi.ext.ui" enabled="false" runInBatchMode="false"/>
+    <factorypathentry kind="PLUGIN" id="com.ibm.jaxrs.annotations.processor" enabled="false" runInBatchMode="false"/>
+    <factorypathentry kind="PLUGIN" id="org.eclipse.jst.ws.annotations.core" enabled="true" runInBatchMode="false"/>
+</factorypath>

+ 2 - 0
sicura.entities/.gitignore

@@ -0,0 +1,2 @@
+/.apt_generated/
+/target/

+ 48 - 0
sicura.entities/.project

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>sicura.entities</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.hibernate.eclipse.console.hibernateBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>com.jaspersoft.studio.babel.editor.rbeNature</nature>
+		<nature>org.hibernate.eclipse.console.hibernateNature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+	</natures>
+</projectDescription>

+ 4 - 0
sicura.entities/.settings/org.eclipse.core.resources.prefs

@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding/<project>=UTF-8
+encoding/src=UTF-8

+ 3 - 0
sicura.entities/.settings/org.eclipse.jdt.apt.core.prefs

@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=true
+org.eclipse.jdt.apt.reconcileEnabled=true

Некоторые файлы не были показаны из-за большого количества измененных файлов