From 772e5cd20b2e4eca28065a41c6a8b8a413f70960 Mon Sep 17 00:00:00 2001 From: Gianfranco Gasparro Date: Wed, 5 Apr 2017 10:51:01 +0200 Subject: [PATCH] Conclusa gestione allegati alla missione --- .../contab/cmis/service/SiglaCMISService.java | 19 ++ .../comp/ConsultazioniRestComponent.java | 312 +++++++++--------- .../actions/CRUDMissioneAction.java | 149 +++++---- .../contab/missioni00/bp/CRUDMissioneBP.java | 225 ++++++++----- .../missioni00/comp/MissioneComponent.java | 131 ++++---- .../docs/bulk/AllegatoMissioneBulk.java | 12 + .../missioni00/docs/bulk/MissioneBase.java | 9 + .../missioni00/docs/bulk/MissioneBulk.java | 54 ++- .../service/MissioniCMISService.java | 217 +++++------- .../cnr/contab/util00/bp/AllegatiCRUDBP.java | 49 ++- .../missioni-sigla-attachmentModel.xml | 45 +++ .../model/missioni/missioni-sigla-model.xml | 63 ++++ .../cmis/service/cmis-service-context.xml | 3 + .../missioni00/bp/CRUDMissioneBP.properties | 12 +- .../docs/bulk/AllegatoMissioneBulkInfo.xml | 6 + .../docs/bulk/MissioneBasePersistentInfo.xml | 8 + .../missioni00/docs/bulk/MissioneBulkInfo.xml | 12 +- .../cnr/contab/web/rest/MissioneResource.java | 1 + .../main/webapp/missioni00/main_missione.jsp | 2 +- .../missioni00/tab_missione_allegati.jsp | 2 +- 20 files changed, 800 insertions(+), 531 deletions(-) create mode 100644 sigla-ejb/src/main/resources/cmis/model/missioni/missioni-sigla-attachmentModel.xml create mode 100644 sigla-ejb/src/main/resources/cmis/model/missioni/missioni-sigla-model.xml diff --git a/sigla-ejb/src/main/java/it/cnr/contab/cmis/service/SiglaCMISService.java b/sigla-ejb/src/main/java/it/cnr/contab/cmis/service/SiglaCMISService.java index 75aed644e0..bb619d6134 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/cmis/service/SiglaCMISService.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/cmis/service/SiglaCMISService.java @@ -247,6 +247,25 @@ public CMISPath createFolderIfNotPresent(CMISPath cmisPath, String folderName, S return createFolderIfNotPresent(cmisPath, folderName, title, description, oggettoBulk, null); } + public CMISPath createFolderIfNotPresent(CMISPath cmisPath, Map metadataProperties, List aspectsToAdd, String folderName) throws ApplicationException { + CmisObject cmisObject = getNodeByPath(cmisPath); + try{ + metadataProperties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, aspectsToAdd); + Folder folder = (Folder) getNodeByNodeRef(getSiglaSession().createFolder(metadataProperties, cmisObject).getId()); + return CMISPath.construct(folder.getPath()); + }catch(CmisContentAlreadyExistsException _ex){ + Folder folder = (Folder) getNodeByPath(cmisPath.getPath()+(cmisPath.getPath().equals("/")?"":"/")+sanitizeFilename(folderName).toLowerCase()); + List aspects = folder.getPropertyValue(PropertyIds.SECONDARY_OBJECT_TYPE_IDS); + aspects.addAll(aspectsToAdd); + metadataProperties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, aspects); + folder.updateProperties(metadataProperties, true); + return CMISPath.construct(folder.getPath()); + } catch (Exception e) { + logger.error("Errore nella creazione della folder.", e); + throw new RuntimeException(e); + } + } + public CMISPath createFolderIfNotPresent(CMISPath cmisPath, String folderName, String title, String description, OggettoBulk oggettoBulk, String objectTypeName) throws ApplicationException{ CmisObject cmisObject = getNodeByPath(cmisPath); Map metadataProperties = new HashMap(); diff --git a/sigla-ejb/src/main/java/it/cnr/contab/consultazioni/comp/ConsultazioniRestComponent.java b/sigla-ejb/src/main/java/it/cnr/contab/consultazioni/comp/ConsultazioniRestComponent.java index da6fa1edfe..63f5cd893e 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/consultazioni/comp/ConsultazioniRestComponent.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/consultazioni/comp/ConsultazioniRestComponent.java @@ -25,19 +25,11 @@ import it.cnr.contab.docamm00.consultazioni.bulk.VFatturaAttivaRigaBrevettiHome; import it.cnr.contab.docamm00.consultazioni.bulk.VFatturaPassivaRigaBrevettiBulk; import it.cnr.contab.docamm00.consultazioni.bulk.VFatturaPassivaRigaBrevettiHome; -import it.cnr.contab.docamm00.docs.bulk.Fattura_attiva_rigaBulk; -import it.cnr.contab.docamm00.docs.bulk.Fattura_attiva_rigaHome; -import it.cnr.contab.docamm00.docs.bulk.Fattura_passiva_rigaBulk; -import it.cnr.contab.docamm00.docs.bulk.Fattura_passiva_rigaHome; import it.cnr.contab.doccont00.consultazioni.bulk.VConsObbligazioniBulk; import it.cnr.contab.doccont00.consultazioni.bulk.VConsObbligazioniGaeBulk; import it.cnr.contab.doccont00.core.bulk.Mandato_rigaBulk; import it.cnr.contab.doccont00.core.bulk.Mandato_rigaHome; import it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk; -import it.cnr.contab.missioni00.docs.bulk.AnticipoBulk; -import it.cnr.contab.missioni00.docs.bulk.AnticipoHome; -import it.cnr.contab.missioni00.docs.bulk.MissioneBulk; -import it.cnr.contab.missioni00.docs.bulk.MissioneHome; import it.cnr.contab.missioni00.docs.bulk.RimborsoBulk; import it.cnr.contab.missioni00.docs.bulk.RimborsoHome; import it.cnr.contab.missioni00.ejb.MissioneComponentSession; @@ -54,7 +46,6 @@ import it.cnr.jada.persistency.PersistencyException; import it.cnr.jada.persistency.sql.CompoundFindClause; import it.cnr.jada.persistency.sql.FindClause; -import it.cnr.jada.persistency.sql.PersistentHome; import it.cnr.jada.persistency.sql.Query; import it.cnr.jada.persistency.sql.SQLBuilder; import it.cnr.jada.persistency.sql.SimpleFindClause; @@ -83,11 +74,14 @@ protected Query select(UserContext userContext, CompoundFindClause compoundfindc Boolean trovataCondizioneCdAnagrafica = false; Enumeration e = compoundfindclause.getClauses(); while(e.hasMoreElements() ){ - SimpleFindClause clause = (SimpleFindClause) e.nextElement(); - int operator = clause.getOperator(); - if (clause.getPropertyName() != null && clause.getPropertyName().equals("cd_anag") && - operator == 8192){ - trovataCondizioneCdAnagrafica = true; + FindClause findClause = (FindClause) e.nextElement(); + if (findClause instanceof SimpleFindClause){ + SimpleFindClause clause = (SimpleFindClause)findClause; + int operator = clause.getOperator(); + if (clause.getPropertyName() != null && clause.getPropertyName().equals("cd_anag") && + operator == 8192){ + trovataCondizioneCdAnagrafica = true; + } } } if (!trovataCondizioneCdAnagrafica){ @@ -101,21 +95,24 @@ protected Query select(UserContext userContext, CompoundFindClause compoundfindc Enumeration e = compoundfindclause.getClauses(); SQLBuilder sqlExists = null; while(e.hasMoreElements() ){ - SimpleFindClause clause = (SimpleFindClause) e.nextElement(); - int operator = clause.getOperator(); - if (clause.getPropertyName() != null && clause.getPropertyName().equals("pgTrovato") && - operator == 8192){ - trovataCondizioneTrovato = true; - VFatturaAttivaRigaBrevettiHome home = (VFatturaAttivaRigaBrevettiHome) getHome(userContext, VFatturaAttivaRigaBrevettiBulk.class); - sqlExists = home.createSQLBuilder(); - sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.ESERCIZIO", "V_FATTURA_ATTIVA_RIGA_BREVETTI.ESERCIZIO"); - sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.CD_CDS", "V_FATTURA_ATTIVA_RIGA_BREVETTI.CD_CDS"); - sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.CD_UNITA_ORGANIZZATIVA", "V_FATTURA_ATTIVA_RIGA_BREVETTI.CD_UNITA_ORGANIZZATIVA"); - sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.PG_FATTURA_ATTIVA", "V_FATTURA_ATTIVA_RIGA_BREVETTI.PG_FATTURA_ATTIVA"); - sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.TIPO_FATTURA", "V_FATTURA_ATTIVA_RIGA_BREVETTI.TIPO_FATTURA"); - sqlExists.addSQLClause("AND","V_FATTURA_ATTIVA_RIGA_BREVETTI.PG_TROVATO",SQLBuilder.EQUALS, clause.getValue() ); - } else { - newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); + FindClause findClause = (FindClause) e.nextElement(); + if (findClause instanceof SimpleFindClause){ + SimpleFindClause clause = (SimpleFindClause)findClause; + int operator = clause.getOperator(); + if (clause.getPropertyName() != null && clause.getPropertyName().equals("pgTrovato") && + operator == 8192){ + trovataCondizioneTrovato = true; + VFatturaAttivaRigaBrevettiHome home = (VFatturaAttivaRigaBrevettiHome) getHome(userContext, VFatturaAttivaRigaBrevettiBulk.class); + sqlExists = home.createSQLBuilder(); + sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.ESERCIZIO", "V_FATTURA_ATTIVA_RIGA_BREVETTI.ESERCIZIO"); + sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.CD_CDS", "V_FATTURA_ATTIVA_RIGA_BREVETTI.CD_CDS"); + sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.CD_UNITA_ORGANIZZATIVA", "V_FATTURA_ATTIVA_RIGA_BREVETTI.CD_UNITA_ORGANIZZATIVA"); + sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.PG_FATTURA_ATTIVA", "V_FATTURA_ATTIVA_RIGA_BREVETTI.PG_FATTURA_ATTIVA"); + sqlExists.addSQLJoin("V_DOC_AMM_ATTIVI_BREVETTI.TIPO_FATTURA", "V_FATTURA_ATTIVA_RIGA_BREVETTI.TIPO_FATTURA"); + sqlExists.addSQLClause("AND","V_FATTURA_ATTIVA_RIGA_BREVETTI.PG_TROVATO",SQLBuilder.EQUALS, clause.getValue() ); + } else { + newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); + } } } if (trovataCondizioneTrovato){ @@ -140,35 +137,38 @@ protected Query select(UserContext userContext, CompoundFindClause compoundfindc Boolean ammissibileConRimborso = null; while(e1.hasMoreElements() ){ - SimpleFindClause clause = (SimpleFindClause) e1.nextElement(); - int operator = clause.getOperator(); - if (clause.getPropertyName() != null && clause.getPropertyName().equals("nazione") && - operator == 8192){ - NazioneHome nazionehome=(NazioneHome)getHome(userContext,NazioneBulk.class); - Integer str = (Integer)clause.getValue(); - nazioneBulk = new NazioneBulk(new Long(str)); - nazioneBulk = (NazioneBulk)nazionehome.findByPrimaryKey(nazioneBulk); - }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("inquadramento") && - operator == 8192) { - Integer str = (Integer)clause.getValue(); - inquadramento = new Long(str); - }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("data") && - operator == 8192) { - SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); - Date parsedDate; - try { - parsedDate = dateFormat.parse((String) clause.getValue()); - dataTappa = new Timestamp(parsedDate.getTime()); - } catch (ParseException e2) { - e2.printStackTrace(); - } - }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("ammissibileRimborso") && - operator == 8192) { - Boolean str = (Boolean)clause.getValue(); - ammissibileConRimborso = str; + FindClause findClause = (FindClause) e.nextElement(); + if (findClause instanceof SimpleFindClause){ + SimpleFindClause clause = (SimpleFindClause)findClause; + int operator = clause.getOperator(); + if (clause.getPropertyName() != null && clause.getPropertyName().equals("nazione") && + operator == 8192){ + NazioneHome nazionehome=(NazioneHome)getHome(userContext,NazioneBulk.class); + Integer str = (Integer)clause.getValue(); + nazioneBulk = new NazioneBulk(new Long(str)); + nazioneBulk = (NazioneBulk)nazionehome.findByPrimaryKey(nazioneBulk); + }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("inquadramento") && + operator == 8192) { + Integer str = (Integer)clause.getValue(); + inquadramento = new Long(str); + }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("data") && + operator == 8192) { + SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); + Date parsedDate; + try { + parsedDate = dateFormat.parse((String) clause.getValue()); + dataTappa = new Timestamp(parsedDate.getTime()); + } catch (ParseException e2) { + e2.printStackTrace(); + } + }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("ammissibileRimborso") && + operator == 8192) { + Boolean str = (Boolean)clause.getValue(); + ammissibileConRimborso = str; - } else { - newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); + } else { + newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); + } } } if (nazioneBulk != null && dataTappa != null && inquadramento != null && ammissibileConRimborso != null){ @@ -194,30 +194,33 @@ protected Query select(UserContext userContext, CompoundFindClause compoundfindc String tipoAuto = null; while(e1.hasMoreElements() ){ - SimpleFindClause clause = (SimpleFindClause) e1.nextElement(); - int operator = clause.getOperator(); - if (clause.getPropertyName() != null && clause.getPropertyName().equals("nazione") && - operator == 8192){ - NazioneHome nazionehome=(NazioneHome)getHome(userContext,NazioneBulk.class); - Integer str = (Integer)clause.getValue(); - nazioneBulk = new NazioneBulk(new Long(str)); - nazioneBulk = (NazioneBulk)nazionehome.findByPrimaryKey(nazioneBulk); - }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("tipoAuto") && - operator == 8192) { - String str = (String)clause.getValue(); - tipoAuto = str; - }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("data") && - operator == 8192) { - SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); - Date parsedDate; - try { - parsedDate = dateFormat.parse((String) clause.getValue()); - dataTappa = new Timestamp(parsedDate.getTime()); - } catch (ParseException e2) { - e2.printStackTrace(); + FindClause findClause = (FindClause) e.nextElement(); + if (findClause instanceof SimpleFindClause){ + SimpleFindClause clause = (SimpleFindClause)findClause; + int operator = clause.getOperator(); + if (clause.getPropertyName() != null && clause.getPropertyName().equals("nazione") && + operator == 8192){ + NazioneHome nazionehome=(NazioneHome)getHome(userContext,NazioneBulk.class); + Integer str = (Integer)clause.getValue(); + nazioneBulk = new NazioneBulk(new Long(str)); + nazioneBulk = (NazioneBulk)nazionehome.findByPrimaryKey(nazioneBulk); + }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("tipoAuto") && + operator == 8192) { + String str = (String)clause.getValue(); + tipoAuto = str; + }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("data") && + operator == 8192) { + SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); + Date parsedDate; + try { + parsedDate = dateFormat.parse((String) clause.getValue()); + dataTappa = new Timestamp(parsedDate.getTime()); + } catch (ParseException e2) { + e2.printStackTrace(); + } + } else { + newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); } - } else { - newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); } } if (nazioneBulk != null && dataTappa != null && tipoAuto != null){ @@ -242,30 +245,33 @@ protected Query select(UserContext userContext, CompoundFindClause compoundfindc Long inquadramento = null; while(e1.hasMoreElements() ){ - SimpleFindClause clause = (SimpleFindClause) e1.nextElement(); - int operator = clause.getOperator(); - if (clause.getPropertyName() != null && clause.getPropertyName().equals("nazione") && - operator == 8192){ - NazioneHome nazionehome=(NazioneHome)getHome(userContext,NazioneBulk.class); - Integer str = (Integer)clause.getValue(); - nazioneBulk = new NazioneBulk(new Long(str)); - nazioneBulk = (NazioneBulk)nazionehome.findByPrimaryKey(nazioneBulk); - }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("inquadramento") && - operator == 8192) { - Integer str = (Integer)clause.getValue(); - inquadramento = new Long(str); - }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("data") && - operator == 8192) { - SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); - Date parsedDate; - try { - parsedDate = dateFormat.parse((String) clause.getValue()); - dataTappa = new Timestamp(parsedDate.getTime()); - } catch (ParseException e2) { - e2.printStackTrace(); + FindClause findClause = (FindClause) e.nextElement(); + if (findClause instanceof SimpleFindClause){ + SimpleFindClause clause = (SimpleFindClause)findClause; + int operator = clause.getOperator(); + if (clause.getPropertyName() != null && clause.getPropertyName().equals("nazione") && + operator == 8192){ + NazioneHome nazionehome=(NazioneHome)getHome(userContext,NazioneBulk.class); + Integer str = (Integer)clause.getValue(); + nazioneBulk = new NazioneBulk(new Long(str)); + nazioneBulk = (NazioneBulk)nazionehome.findByPrimaryKey(nazioneBulk); + }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("inquadramento") && + operator == 8192) { + Integer str = (Integer)clause.getValue(); + inquadramento = new Long(str); + }else if (clause.getPropertyName() != null && clause.getPropertyName().equals("data") && + operator == 8192) { + SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); + Date parsedDate; + try { + parsedDate = dateFormat.parse((String) clause.getValue()); + dataTappa = new Timestamp(parsedDate.getTime()); + } catch (ParseException e2) { + e2.printStackTrace(); + } + } else { + newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); } - } else { - newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); } } if (nazioneBulk != null && dataTappa != null && inquadramento != null){ @@ -321,38 +327,41 @@ protected Query select(UserContext userContext, CompoundFindClause compoundfindc SQLBuilder sqlExists = null; SQLBuilder sqlNotExists = null; while(e.hasMoreElements() ){ - SimpleFindClause clause = (SimpleFindClause) e.nextElement(); - int operator = clause.getOperator(); - if (clause.getPropertyName() != null && clause.getPropertyName().equals("soloAnticipi") && - operator == 8192){ - trovataCondizioneSoloAnticipi = true; - Mandato_rigaHome home = (Mandato_rigaHome) getHome(userContext, Mandato_rigaBulk.class); - sqlExists = home.createSQLBuilder(); - sqlExists.addTableToHeader("ANTICIPO"); - sqlExists.addSQLJoin("V_MANDATO_REVERSALE.ESERCIZIO", "MANDATO_RIGA.ESERCIZIO"); - sqlExists.addSQLJoin("V_MANDATO_REVERSALE.CD_CDS", "MANDATO_RIGA.CD_CDS"); - sqlExists.addSQLJoin("V_MANDATO_REVERSALE.PG_DOCUMENTO_CONT", "MANDATO_RIGA.PG_MANDATO"); - sqlExists.addSQLJoin("ANTICIPO.CD_CDS", "MANDATO_RIGA.CD_CDS_DOC_AMM"); - sqlExists.addSQLJoin("ANTICIPO.ESERCIZIO", "MANDATO_RIGA.ESERCIZIO_DOC_AMM"); - sqlExists.addSQLJoin("ANTICIPO.CD_UNITA_ORGANIZZATIVA", "MANDATO_RIGA.CD_UO_DOC_AMM"); - sqlExists.addSQLJoin("ANTICIPO.PG_ANTICIPO", "MANDATO_RIGA.PG_DOC_AMM"); - sqlExists.addSQLClause("AND","MANDATO_RIGA.CD_TIPO_DOCUMENTO_AMM",SQLBuilder.EQUALS, "ANTICIPO" ); - sqlExists.addSQLClause("AND","ANTICIPO.FL_ASSOCIATO_MISSIONE",SQLBuilder.EQUALS, "N" ); + FindClause findClause = (FindClause) e.nextElement(); + if (findClause instanceof SimpleFindClause){ + SimpleFindClause clause = (SimpleFindClause)findClause; + int operator = clause.getOperator(); + if (clause.getPropertyName() != null && clause.getPropertyName().equals("soloAnticipi") && + operator == 8192){ + trovataCondizioneSoloAnticipi = true; + Mandato_rigaHome home = (Mandato_rigaHome) getHome(userContext, Mandato_rigaBulk.class); + sqlExists = home.createSQLBuilder(); + sqlExists.addTableToHeader("ANTICIPO"); + sqlExists.addSQLJoin("V_MANDATO_REVERSALE.ESERCIZIO", "MANDATO_RIGA.ESERCIZIO"); + sqlExists.addSQLJoin("V_MANDATO_REVERSALE.CD_CDS", "MANDATO_RIGA.CD_CDS"); + sqlExists.addSQLJoin("V_MANDATO_REVERSALE.PG_DOCUMENTO_CONT", "MANDATO_RIGA.PG_MANDATO"); + sqlExists.addSQLJoin("ANTICIPO.CD_CDS", "MANDATO_RIGA.CD_CDS_DOC_AMM"); + sqlExists.addSQLJoin("ANTICIPO.ESERCIZIO", "MANDATO_RIGA.ESERCIZIO_DOC_AMM"); + sqlExists.addSQLJoin("ANTICIPO.CD_UNITA_ORGANIZZATIVA", "MANDATO_RIGA.CD_UO_DOC_AMM"); + sqlExists.addSQLJoin("ANTICIPO.PG_ANTICIPO", "MANDATO_RIGA.PG_DOC_AMM"); + sqlExists.addSQLClause("AND","MANDATO_RIGA.CD_TIPO_DOCUMENTO_AMM",SQLBuilder.EQUALS, "ANTICIPO" ); + sqlExists.addSQLClause("AND","ANTICIPO.FL_ASSOCIATO_MISSIONE",SQLBuilder.EQUALS, "N" ); - RimborsoHome homeRimborso = (RimborsoHome) getHome(userContext, RimborsoBulk.class); - sqlNotExists = homeRimborso.createSQLBuilder(); - sqlNotExists.addTableToHeader("MANDATO_RIGA"); - sqlNotExists.addSQLJoin("V_MANDATO_REVERSALE.ESERCIZIO", "MANDATO_RIGA.ESERCIZIO"); - sqlNotExists.addSQLJoin("V_MANDATO_REVERSALE.CD_CDS", "MANDATO_RIGA.CD_CDS"); - sqlNotExists.addSQLJoin("V_MANDATO_REVERSALE.PG_DOCUMENTO_CONT", "MANDATO_RIGA.PG_MANDATO"); - sqlNotExists.addSQLJoin("RIMBORSO.CD_CDS", "MANDATO_RIGA.CD_CDS_DOC_AMM"); - sqlNotExists.addSQLJoin("RIMBORSO.ESERCIZIO", "MANDATO_RIGA.ESERCIZIO_DOC_AMM"); - sqlNotExists.addSQLJoin("RIMBORSO.CD_UNITA_ORGANIZZATIVA", "MANDATO_RIGA.CD_UO_DOC_AMM"); - sqlNotExists.addSQLJoin("RIMBORSO.PG_ANTICIPO", "MANDATO_RIGA.PG_DOC_AMM"); - sqlNotExists.addSQLClause("AND","MANDATO_RIGA.CD_TIPO_DOCUMENTO_AMM",SQLBuilder.EQUALS, "ANTICIPO" ); - } else { - newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); + RimborsoHome homeRimborso = (RimborsoHome) getHome(userContext, RimborsoBulk.class); + sqlNotExists = homeRimborso.createSQLBuilder(); + sqlNotExists.addTableToHeader("MANDATO_RIGA"); + sqlNotExists.addSQLJoin("V_MANDATO_REVERSALE.ESERCIZIO", "MANDATO_RIGA.ESERCIZIO"); + sqlNotExists.addSQLJoin("V_MANDATO_REVERSALE.CD_CDS", "MANDATO_RIGA.CD_CDS"); + sqlNotExists.addSQLJoin("V_MANDATO_REVERSALE.PG_DOCUMENTO_CONT", "MANDATO_RIGA.PG_MANDATO"); + sqlNotExists.addSQLJoin("RIMBORSO.CD_CDS", "MANDATO_RIGA.CD_CDS_DOC_AMM"); + sqlNotExists.addSQLJoin("RIMBORSO.ESERCIZIO", "MANDATO_RIGA.ESERCIZIO_DOC_AMM"); + sqlNotExists.addSQLJoin("RIMBORSO.CD_UNITA_ORGANIZZATIVA", "MANDATO_RIGA.CD_UO_DOC_AMM"); + sqlNotExists.addSQLJoin("RIMBORSO.PG_ANTICIPO", "MANDATO_RIGA.PG_DOC_AMM"); + sqlNotExists.addSQLClause("AND","MANDATO_RIGA.CD_TIPO_DOCUMENTO_AMM",SQLBuilder.EQUALS, "ANTICIPO" ); + } else { + newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); + } } } if (trovataCondizioneSoloAnticipi){ @@ -371,23 +380,26 @@ protected Query select(UserContext userContext, CompoundFindClause compoundfindc CompoundFindClause newClauses = new CompoundFindClause(); Enumeration e = compoundfindclause.getClauses(); SQLBuilder sqlExists = null; - while(e.hasMoreElements() ){ - SimpleFindClause clause = (SimpleFindClause) e.nextElement(); - int operator = clause.getOperator(); - if (clause.getPropertyName() != null && clause.getPropertyName().equals("pgTrovato") && - operator == 8192){ - trovataCondizioneTrovato = true; - VFatturaPassivaRigaBrevettiHome home = (VFatturaPassivaRigaBrevettiHome) getHome(userContext, VFatturaPassivaRigaBrevettiBulk.class); - sqlExists = home.createSQLBuilder(); - sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.ESERCIZIO", "V_FATTURA_PASSIV_RIGA_BREVETTI.ESERCIZIO"); - sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.CD_CDS", "V_FATTURA_PASSIV_RIGA_BREVETTI.CD_CDS"); - sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.CD_UNITA_ORGANIZZATIVA", "V_FATTURA_PASSIV_RIGA_BREVETTI.CD_UNITA_ORGANIZZATIVA"); - sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.PG_FATTURA_PASSIVA", "V_FATTURA_PASSIV_RIGA_BREVETTI.PG_FATTURA_PASSIVA"); - sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.TIPO_FATTURA_COMPENSO", "V_FATTURA_PASSIV_RIGA_BREVETTI.TIPO_FATTURA_COMPENSO"); - sqlExists.addSQLClause("AND","V_FATTURA_PASSIV_RIGA_BREVETTI.PG_TROVATO",SQLBuilder.EQUALS, clause.getValue() ); - } else { - newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); - } + while(e.hasMoreElements() ){ + FindClause findClause = (FindClause) e.nextElement(); + if (findClause instanceof SimpleFindClause){ + SimpleFindClause clause = (SimpleFindClause)findClause; + int operator = clause.getOperator(); + if (clause.getPropertyName() != null && clause.getPropertyName().equals("pgTrovato") && + operator == 8192){ + trovataCondizioneTrovato = true; + VFatturaPassivaRigaBrevettiHome home = (VFatturaPassivaRigaBrevettiHome) getHome(userContext, VFatturaPassivaRigaBrevettiBulk.class); + sqlExists = home.createSQLBuilder(); + sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.ESERCIZIO", "V_FATTURA_PASSIV_RIGA_BREVETTI.ESERCIZIO"); + sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.CD_CDS", "V_FATTURA_PASSIV_RIGA_BREVETTI.CD_CDS"); + sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.CD_UNITA_ORGANIZZATIVA", "V_FATTURA_PASSIV_RIGA_BREVETTI.CD_UNITA_ORGANIZZATIVA"); + sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.PG_FATTURA_PASSIVA", "V_FATTURA_PASSIV_RIGA_BREVETTI.PG_FATTURA_PASSIVA"); + sqlExists.addSQLJoin("V_DOC_AMM_BREVETTI.TIPO_FATTURA_COMPENSO", "V_FATTURA_PASSIV_RIGA_BREVETTI.TIPO_FATTURA_COMPENSO"); + sqlExists.addSQLClause("AND","V_FATTURA_PASSIV_RIGA_BREVETTI.PG_TROVATO",SQLBuilder.EQUALS, clause.getValue() ); + } else { + newClauses.addClause(clause.getLogicalOperator(), clause.getPropertyName(), clause.getOperator(), clause.getValue()); + } + } } if (trovataCondizioneTrovato){ sql = getHome(userContext, oggettobulk).selectByClause(userContext, newClauses); diff --git a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/actions/CRUDMissioneAction.java b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/actions/CRUDMissioneAction.java index 3fb857a0a2..fc8cfe24fd 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/actions/CRUDMissioneAction.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/actions/CRUDMissioneAction.java @@ -1,26 +1,45 @@ package it.cnr.contab.missioni00.actions; -import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoSpesaBP; -import it.cnr.contab.anagraf00.core.bulk.*; -import it.cnr.contab.anagraf00.tabrif.bulk.*; +import java.util.GregorianCalendar; + +import it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk; +import it.cnr.contab.anagraf00.core.bulk.BancaBulk; +import it.cnr.contab.anagraf00.core.bulk.TerzoBulk; +import it.cnr.contab.anagraf00.tabrif.bulk.Rif_inquadramentoBulk; +import it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk; +import it.cnr.contab.anagraf00.tabrif.bulk.Rif_termini_pagamentoBulk; +import it.cnr.contab.anagraf00.tabrif.bulk.Tipo_rapportoBulk; import it.cnr.contab.anagraf00.tabter.bulk.NazioneBulk; -import it.cnr.contab.missioni00.ejb.*; -import it.cnr.contab.missioni00.docs.bulk.*; -import it.cnr.contab.missioni00.tabrif.bulk.*; -import it.cnr.contab.missioni00.bp.CRUDMissioneBP; -import it.cnr.contab.utenze00.bulk.UtenteBulk; +import it.cnr.contab.compensi00.docs.bulk.CompensoBulk; +import it.cnr.contab.compensi00.docs.bulk.V_terzo_per_compensoBulk; +import it.cnr.contab.compensi00.tabrif.bulk.Tipo_trattamentoBulk; +import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoBP; +import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoSpesaBP; import it.cnr.contab.docamm00.docs.bulk.Filtro_ricerca_obbligazioniVBulk; import it.cnr.contab.docamm00.tabrif.bulk.DivisaBulk; -import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoBP; -import it.cnr.contab.compensi00.tabrif.bulk.Tipo_trattamentoBulk; -import it.cnr.contab.compensi00.bp.CRUDMinicarrieraBP; -import it.cnr.contab.compensi00.docs.bulk.*; - -import java.util.GregorianCalendar; -import it.cnr.contab.doccont00.core.bulk.*; -import it.cnr.jada.action.*; -import it.cnr.jada.bulk.*; +import it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk; +import it.cnr.contab.doccont00.core.bulk.OptionRequestParameter; +import it.cnr.contab.missioni00.bp.CRUDMissioneBP; +import it.cnr.contab.missioni00.docs.bulk.AnticipoBulk; +import it.cnr.contab.missioni00.docs.bulk.MissioneBulk; +import it.cnr.contab.missioni00.docs.bulk.Missione_dettaglioBulk; +import it.cnr.contab.missioni00.docs.bulk.Missione_tappaBulk; +import it.cnr.contab.missioni00.ejb.MissioneComponentSession; +import it.cnr.contab.missioni00.tabrif.bulk.Missione_rimborso_kmBulk; +import it.cnr.contab.missioni00.tabrif.bulk.Missione_tipo_pastoBulk; +import it.cnr.contab.missioni00.tabrif.bulk.Missione_tipo_spesaBulk; +import it.cnr.contab.utenze00.bulk.UtenteBulk; +import it.cnr.jada.action.ActionContext; +import it.cnr.jada.action.ActionPerformingError; +import it.cnr.jada.action.BusinessProcessException; +import it.cnr.jada.action.Forward; +import it.cnr.jada.action.HookForward; +import it.cnr.jada.action.MessageToUser; +import it.cnr.jada.bulk.OggettoBulk; +import it.cnr.jada.bulk.PrimaryKeyHashMap; +import it.cnr.jada.bulk.ValidationException; import it.cnr.jada.util.action.BulkBP; +import it.cnr.jada.util.action.FormBP; import it.cnr.jada.util.action.OptionBP; import it.cnr.jada.util.action.SelezionatoreListaBP; @@ -1166,41 +1185,6 @@ public Forward doConfermaTipoRapportoChange(ActionContext context,OptionBP optio return handleException(context, ex); } } -/** - * A fronte del salvataggio di una missione provvisoria viene chiesto all'utente se salvarla in modo definitivo o meno. - * Il metodo gestisce la risposta dell'utente. - * NO : verifico che ci sia il compenso o l'obbligazione e salvo la missione con stato definitivo - * SI : salvo la missione come provvisoria - */ - -public Forward doConfermaTipoSalvataggio(ActionContext context,OptionBP option) -{ - try - { - MissioneBulk missione = (MissioneBulk)option.getAttribute( "missione" ); - - // Salvataggio PROVVISORIO della missione - if(option.getOption() == OptionBP.YES_BUTTON) - missione.setMissioneProvvisoria(); - - // Salvataggio DEFINITIVO della missione - if(option.getOption() == OptionBP.NO_BUTTON) - { - // Se sono nel caso di obbligatorieta' dell'obbligazione ma questa non e' stata - // associata alla missione dall'utente blocco il salvataggio - if(missione.isObbligazioneObbligatoria() && !missione.isMissioneConObbligazione()) - throw new it.cnr.jada.comp.ApplicationException("Associare una scadenza di impegno alla missione !"); - - missione.setMissioneDefinitiva(); - } - - return doOnSalvataggio(context, missione); - } - catch(Throwable ex) - { - return handleException(context, ex); - } -} /** * A seguito della configurazione delle tappe il sistema verifica se mantenere o meno il compenso o la scadenza * eventualmente associati alla missione : @@ -2582,6 +2566,24 @@ public Forward doOnTipoAnagraficoChange(ActionContext context) return handleException(context, t); } } +public OptionBP openConfirm(ActionContext actioncontext, String message, int type, String action) throws BusinessProcessException{ + OptionBP optionbp = createOptionBP(actioncontext, message, FormBP.QUESTION_MESSAGE, type, action); + return (OptionBP)actioncontext.addBusinessProcess(optionbp); +} +public OptionBP createOptionBP(ActionContext actioncontext, String message, int icon, int type, String action){ + try{ + OptionBP optionbp = (OptionBP)actioncontext.createBusinessProcess("OptionBP"); + optionbp.setMessage(icon, message); + optionbp.setType(type); + HookForward hookforward = actioncontext.addHookForward("option", this, "doOption"); + hookforward.addParameter("bp", optionbp); + if(action != null) + hookforward.addParameter("action", action); + return optionbp; + }catch(BusinessProcessException businessprocessexception){ + throw new ActionPerformingError(businessprocessexception); + } +} /** * Il metodo gestisce la selezione del Tipo Rapporto. * La modifica è consentita se l'evetuale compenso associato e' modificabile (es. non pagato) @@ -2976,16 +2978,10 @@ public Forward doSalva(ActionContext context) throws java.rmi.RemoteException MissioneBulk missione = (MissioneBulk)bp.getModel(); + if(missione.isObbligazioneObbligatoria() && !missione.isMissioneConObbligazione()) + throw new it.cnr.jada.comp.ApplicationException("Associare una scadenza di impegno alla missione !"); if(!missione.isMissioneDefinitiva()) { - // La missione e' in fase di creazione o in stato provvisorio - if(missione.isCompensoObbligatorio() || (missione.isObbligazioneObbligatoria() && !missione.isMissioneConObbligazione())) - { - // La missione richiede un compenso o una obbligazione che non e' stata agganciata alla missione - OptionBP option = openConfirm(context,"Premere SI per salvataggio provvisorio, NO per salvataggio definitivo!",OptionBP.CONFIRM_YES_NO,"doConfermaTipoSalvataggio"); - option.addAttribute("missione", missione); - return option; - } // - La missione e' in stato provvisorio ma l'utente ha finalmente agganciato l'obbligazione // che risulta essere obbligatoria --> la missione diventa definitiva // - La missione non prevede ne' compenso ne' obbligazione quindi procedo direttamente con @@ -3002,6 +2998,36 @@ public Forward doSalva(ActionContext context) throws java.rmi.RemoteException return handleException(context, t); } } + +public Forward doSalvaProvvisorio(ActionContext context) throws java.rmi.RemoteException +{ + CRUDMissioneBP bp = (CRUDMissioneBP)getBusinessProcess(context); + + try + { + fillModel(context); + + MissioneBulk missione = (MissioneBulk)bp.getModel(); + + if(!missione.isMissioneDefinitiva()) + { + // La missione e' in fase di creazione o in stato provvisorio + if(missione.isCompensoObbligatorio() || (missione.isObbligazioneObbligatoria() && !missione.isMissioneConObbligazione())){ + missione.setMissioneProvvisoria(); + } else { + throw new it.cnr.jada.comp.ApplicationException("Non è possibile salvare una missione in provvisorio quando non sono obbligatori il compenso e l'obbligazione"); + } + } else { + throw new it.cnr.jada.comp.ApplicationException("Non è possibile salvare una missione in provvisorio quando è già definitiva"); + } + return doOnSalvataggio(context, missione); + } + catch (Throwable t) + { + return handleException(context, t); + } +} + /** * Il metodo salva la missione e la ricarica in modifica */ @@ -3352,5 +3378,6 @@ public Forward doSelezionaStatoLiquidazione(ActionContext context){ { return handleException(context,e); } - } +} + } \ No newline at end of file diff --git a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/bp/CRUDMissioneBP.java b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/bp/CRUDMissioneBP.java index 40d5cddd28..11451e46e8 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/bp/CRUDMissioneBP.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/bp/CRUDMissioneBP.java @@ -1,7 +1,5 @@ package it.cnr.contab.missioni00.bp; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -9,10 +7,11 @@ import java.math.BigDecimal; import java.rmi.RemoteException; import java.text.ParseException; -import java.util.HashSet; +import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Set; +import java.util.Map; import java.util.Vector; import javax.servlet.ServletException; @@ -22,18 +21,16 @@ import org.apache.chemistry.opencmis.client.api.Folder; import org.apache.chemistry.opencmis.client.api.ItemIterable; import org.apache.chemistry.opencmis.client.api.SecondaryType; +import org.apache.chemistry.opencmis.commons.PropertyIds; import org.apache.chemistry.opencmis.commons.enums.BaseTypeId; import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException; -import org.apache.pdfbox.util.PDFMergerUtility; -import it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk; import it.cnr.contab.anagraf00.tabter.bulk.NazioneBulk; import it.cnr.contab.chiusura00.ejb.RicercaDocContComponentSession; import it.cnr.contab.cmis.CMISAspect; import it.cnr.contab.cmis.service.CMISPath; import it.cnr.contab.cmis.service.SiglaCMISService; import it.cnr.contab.config00.bulk.Parametri_cnrBulk; -import it.cnr.contab.config00.contratto.bulk.AllegatoContrattoDocumentBulk; import it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession; import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoSpesaBP; import it.cnr.contab.docamm00.docs.bulk.IDocumentoAmministrativoBulk; @@ -46,7 +43,6 @@ import it.cnr.contab.doccont00.core.bulk.Accertamento_scadenzarioBulk; import it.cnr.contab.doccont00.core.bulk.ObbligazioneResBulk; import it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk; -import it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk; import it.cnr.contab.missioni00.docs.bulk.AllegatoMissioneBulk; import it.cnr.contab.missioni00.docs.bulk.MissioneBulk; import it.cnr.contab.missioni00.docs.bulk.Missione_dettaglioBulk; @@ -139,6 +135,8 @@ public CRUDMissioneBP(String function) * Se i dettagli del rimborso sono già stati creati li cancello */ + + public void addTappa(ActionContext context) throws it.cnr.jada.bulk.ValidationException, BusinessProcessException, it.cnr.jada.comp.ApplicationException { MissioneBulk missione = (MissioneBulk) getModel(); @@ -689,12 +687,13 @@ public void create(it.cnr.jada.action.ActionContext context) throws it.cnr.jada. protected it.cnr.jada.util.jsp.Button[] createToolbar() { Button[] toolbar = super.createToolbar(); - Button[] newToolbar = new Button[ toolbar.length + 2]; + Button[] newToolbar = new Button[ toolbar.length + 3]; int i; for ( i = 0; i < toolbar.length; i++ ) newToolbar[i] = toolbar[i]; newToolbar[ i ] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.riportaAvanti"); newToolbar[ i+1 ] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.riportaIndietro"); + newToolbar[ i+2 ] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.salvaProvvisorio"); return newToolbar; } /** @@ -1681,6 +1680,24 @@ public boolean isPrintButtonHidden() && missione.getCd_cds() != null && missione.getCd_unita_organizzativa() != null && missione.getCd_terzo() != null && missione.getEsercizio() != null)); } +/** + * Il metodo stabilisce se il bottone di salva provvisorio debba essere + * abilitato o meno. + * Il bottone è abilitato se ho appena riportato indietro il documento o se la scadenza non risulta riportata. + */ +public boolean isSalvaProvvisorioButtonEnabled() +{ + MissioneBulk missione = (MissioneBulk)getModel(); + return !missione.isMissioneDefinitiva() && (missione.isCompensoObbligatorio() || (missione.isObbligazioneObbligatoria() && !missione.isMissioneConObbligazione())); + +} +/** + * Il metodo stabilisce se il bottone di riporta avanti debba essere visualizzato + */ +public boolean isSalvaProvvisorioButtonHidden() +{ + return !isSalvaProvvisorioButtonEnabled(); +} /** * Il metodo stabilisce se il bottone di riporto avanti del documento contabile debba essere * abilitato o meno. @@ -2236,6 +2253,7 @@ public void update(ActionContext context) throws it.cnr.jada.action.BusinessProc { try { + archiviaAllegati(context, null); getModel().setToBeUpdated(); setModel( context, ((MissioneComponentSession)createComponentSession()).modificaConBulk( context.getUserContext(), @@ -2521,27 +2539,27 @@ protected void initialize(ActionContext actioncontext) throws BusinessProcessExc @Override protected CMISPath getCMISPath(MissioneBulk allegatoParentBulk, boolean create) throws BusinessProcessException{ try { - CMISPath cmisPath = SpringUtil.getBean("cmisPathComunicazioniAlCNR",CMISPath.class); -// cmisPath = cmisService.createFolderIfNotPresent(cmisPath, allegatoParentBulk.getCd_uo_origine(), allegatoParentBulk.getCd_uo_origine(), allegatoParentBulk.getCd_uo_origine()); -// cmisPath = cmisService.createFolderIfNotPresent(cmisPath, "Fatture Attive", "Fatture Attive", "Fatture Attive"); -// cmisPath = cmisService.createFolderIfNotPresent(cmisPath, allegatoParentBulk.getEsercizio().toString(), "Esercizio "+allegatoParentBulk.getEsercizio().toString(), "Esercizio "+allegatoParentBulk.getEsercizio().toString()); - - String folderName = "Missione " -// +allegatoParentBulk.getEsercizio().toString()+Utility.lpad(allegatoParentBulk.getPg_fattura_attiva().toString(),10,'0') - ; - if (create) { - cmisPath = cmisService.createFolderIfNotPresent(cmisPath, folderName, - folderName, folderName); + CMISPath cmisPath = null; + if (allegatoParentBulk.isMissioneFromGemis() && allegatoParentBulk.getIdFolderRimborsoMissione() != null){ + cmisPath = missioniCMISService.getCMISPathFromFolderRimborso(allegatoParentBulk); } else { - try { - cmisPath = cmisPath.appendToPath(folderName); - cmisService.getNodeByPath(cmisPath); - } catch (CmisObjectNotFoundException _ex) { - return null; - } - } + cmisPath = SpringUtil.getBean("cmisPathMissioni",CMISPath.class); + + if (create) { + cmisPath = missioniCMISService.createFolderIfNotPresent(cmisPath, allegatoParentBulk.getCd_unita_organizzativa(), allegatoParentBulk.getCd_unita_organizzativa(), allegatoParentBulk.getCd_unita_organizzativa()); + cmisPath = missioniCMISService.createFolderIfNotPresent(cmisPath, "Rimborso Missione", "Rimborso Missione", "Rimborso Missione"); + cmisPath = missioniCMISService.createFolderIfNotPresent(cmisPath, "Anno "+allegatoParentBulk.getEsercizio().toString(), "Anno "+allegatoParentBulk.getEsercizio().toString(), "Anno "+allegatoParentBulk.getEsercizio().toString()); + cmisPath = missioniCMISService.createLastFolderIfNotPresent(cmisPath, allegatoParentBulk); + } else { + try { + missioniCMISService.getNodeByPath(cmisPath); + } catch (CmisObjectNotFoundException _ex) { + return null; + } + } + } return cmisPath; - } catch (ApplicationException e) { + } catch (ComponentException e) { throw new BusinessProcessException(e); } } @@ -2555,39 +2573,90 @@ public OggettoBulk initializeModelForEditAllegati(ActionContext actioncontext, O MissioneBulk allegatoParentBulk = (MissioneBulk)oggettobulk; try { - ItemIterable files = missioniCMISService.getFilesOrdineMissione(allegatoParentBulk); - if (files != null){ - for (CmisObject cmisObject : files) { - if (cmisService.hasAspect(cmisObject, CMISAspect.SYS_ARCHIVED.value())) - continue; - if (excludeChild(cmisObject)) - continue; - if (cmisObject.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT)) { - Document document = (Document) cmisObject; + if (allegatoParentBulk.getIdRimborsoMissione() != null){ + ItemIterable files = missioniCMISService.getFilesOrdineMissione(allegatoParentBulk); + if (files != null){ + for (CmisObject cmisObject : files) { + if (missioniCMISService.hasAspect(cmisObject, CMISAspect.SYS_ARCHIVED.value())) + continue; + if (excludeChild(cmisObject)) + continue; + if (cmisObject.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT)) { + Document document = (Document) cmisObject; + AllegatoMissioneBulk allegato = (AllegatoMissioneBulk) Introspector.newInstance(getAllegatoClass(), document); + allegato.setContentType(document.getContentStreamMimeType()); + allegato.setNome(cmisObject.getName()); + allegato.setDescrizione((String)document.getPropertyValue(SiglaCMISService.PROPERTY_DESCRIPTION)); + allegato.setTitolo((String)document.getPropertyValue(SiglaCMISService.PROPERTY_TITLE)); + completeAllegato(allegato); + allegato.setCrudStatus(OggettoBulk.NORMAL); + allegatoParentBulk.addToArchivioAllegati(allegato); + } + } + } + ItemIterable filesRimborso = missioniCMISService.getFilesRimborsoMissione(allegatoParentBulk); + if (files != null){ + for (CmisObject cmisObject : filesRimborso) { + if (missioniCMISService.hasAspect(cmisObject, CMISAspect.SYS_ARCHIVED.value())) + continue; + if (excludeChild(cmisObject)) + continue; + if (cmisObject.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT)) { + Document document = (Document) cmisObject; + if (document != null){ + AllegatoMissioneBulk allegato = (AllegatoMissioneBulk) Introspector.newInstance(getAllegatoClass(), document); + allegato.setContentType(document.getContentStreamMimeType()); + allegato.setNome(document.getName()); + allegato.setDescrizione((String)document.getPropertyValue(SiglaCMISService.PROPERTY_DESCRIPTION)); + allegato.setTitolo((String)document.getPropertyValue(SiglaCMISService.PROPERTY_TITLE)); + completeAllegato(allegato); + allegato.setCrudStatus(OggettoBulk.NORMAL); + allegatoParentBulk.addToArchivioAllegati(allegato); + } + } + } + } + if (allegatoParentBulk.getIdFlusso() != null){ + Document document = missioniCMISService.recuperoFlows(allegatoParentBulk.getIdFlusso()); + if (document != null){ AllegatoMissioneBulk allegato = (AllegatoMissioneBulk) Introspector.newInstance(getAllegatoClass(), document); allegato.setContentType(document.getContentStreamMimeType()); - allegato.setNome(cmisObject.getName()); - allegato.setDescrizione((String)document.getPropertyValue(SiglaCMISService.PROPERTY_DESCRIPTION)); + allegato.setNome(document.getName()); + allegato.setAspectName(AllegatoMissioneBulk.FLUSSO_RIMBORSO); + allegato.setDescrizione("Flusso di Approvazione della richiesta di rimborso"); allegato.setTitolo((String)document.getPropertyValue(SiglaCMISService.PROPERTY_TITLE)); completeAllegato(allegato); allegato.setCrudStatus(OggettoBulk.NORMAL); allegatoParentBulk.addToArchivioAllegati(allegato); } } - } - ItemIterable filesRimborso = missioniCMISService.getFilesRimborsoMissione(allegatoParentBulk); - if (files != null){ - for (CmisObject cmisObject : filesRimborso) { - if (cmisService.hasAspect(cmisObject, CMISAspect.SYS_ARCHIVED.value())) - continue; - if (excludeChild(cmisObject)) - continue; - if (cmisObject.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT)) { - Document document = (Document) cmisObject; - if (document != null){ + if (allegatoParentBulk.getIdFlussoOrdineMissione() != null){ + Document documentOrdine = missioniCMISService.recuperoFlows(allegatoParentBulk.getIdFlussoOrdineMissione()); + if (documentOrdine != null){ + AllegatoMissioneBulk allegato = (AllegatoMissioneBulk) Introspector.newInstance(getAllegatoClass(), documentOrdine); + allegato.setContentType(documentOrdine.getContentStreamMimeType()); + allegato.setNome(documentOrdine.getName()); + allegato.setAspectName(AllegatoMissioneBulk.FLUSSO_ORDINE); + allegato.setDescrizione("Flusso di Approvazione dell'Ordine di missione"); + allegato.setTitolo((String)documentOrdine.getPropertyValue(SiglaCMISService.PROPERTY_TITLE)); + completeAllegato(allegato); + allegato.setCrudStatus(OggettoBulk.NORMAL); + allegatoParentBulk.addToArchivioAllegati(allegato); + } + } + } else { + ItemIterable files = missioniCMISService.getFilesMissioneSigla(allegatoParentBulk); + if (files != null){ + for (CmisObject cmisObject : files) { + if (missioniCMISService.hasAspect(cmisObject, CMISAspect.SYS_ARCHIVED.value())) + continue; + if (excludeChild(cmisObject)) + continue; + if (cmisObject.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT)) { + Document document = (Document) cmisObject; AllegatoMissioneBulk allegato = (AllegatoMissioneBulk) Introspector.newInstance(getAllegatoClass(), document); allegato.setContentType(document.getContentStreamMimeType()); - allegato.setNome(document.getName()); + allegato.setNome(cmisObject.getName()); allegato.setDescrizione((String)document.getPropertyValue(SiglaCMISService.PROPERTY_DESCRIPTION)); allegato.setTitolo((String)document.getPropertyValue(SiglaCMISService.PROPERTY_TITLE)); completeAllegato(allegato); @@ -2597,34 +2666,6 @@ public OggettoBulk initializeModelForEditAllegati(ActionContext actioncontext, O } } } - if (allegatoParentBulk.getIdFlusso() != null){ - Document document = missioniCMISService.recuperoFlows(allegatoParentBulk.getIdFlusso()); - if (document != null){ - AllegatoMissioneBulk allegato = (AllegatoMissioneBulk) Introspector.newInstance(getAllegatoClass(), document); - allegato.setContentType(document.getContentStreamMimeType()); - allegato.setNome(document.getName()); - allegato.setAspectName(AllegatoMissioneBulk.FLUSSO_RIMBORSO); - allegato.setDescrizione("Flusso di Approvazione della richiesta di rimborso"); - allegato.setTitolo((String)document.getPropertyValue(SiglaCMISService.PROPERTY_TITLE)); - completeAllegato(allegato); - allegato.setCrudStatus(OggettoBulk.NORMAL); - allegatoParentBulk.addToArchivioAllegati(allegato); - } - } - if (allegatoParentBulk.getIdFlussoOrdineMissione() != null){ - Document documentOrdine = missioniCMISService.recuperoFlows(allegatoParentBulk.getIdFlussoOrdineMissione()); - if (documentOrdine != null){ - AllegatoMissioneBulk allegato = (AllegatoMissioneBulk) Introspector.newInstance(getAllegatoClass(), documentOrdine); - allegato.setContentType(documentOrdine.getContentStreamMimeType()); - allegato.setNome(documentOrdine.getName()); - allegato.setAspectName(AllegatoMissioneBulk.FLUSSO_ORDINE); - allegato.setDescrizione("Flusso di Approvazione dell'Ordine di missione"); - allegato.setTitolo((String)documentOrdine.getPropertyValue(SiglaCMISService.PROPERTY_TITLE)); - completeAllegato(allegato); - allegato.setCrudStatus(OggettoBulk.NORMAL); - allegatoParentBulk.addToArchivioAllegati(allegato); - } - } } catch (ApplicationException e) { throw handleException(e); } catch (ComponentException e) { @@ -2644,7 +2685,7 @@ public OggettoBulk initializeModelForEditAllegati(ActionContext actioncontext, O } @Override protected void completeAllegato(AllegatoMissioneBulk allegato) throws ApplicationException { - for (SecondaryType secondaryType : allegato.getDocument(cmisService).getSecondaryTypes()) { + for (SecondaryType secondaryType : allegato.getDocument(missioniCMISService).getSecondaryTypes()) { if (AllegatoMissioneBulk.aspectNamesKeys.get(secondaryType.getId()) != null){ allegato.setAspectName(secondaryType.getId()); break; @@ -2690,12 +2731,16 @@ private Document recuperoDocumentoGiustificativoDettaglio() throws ApplicationEx Missione_dettaglioBulk dettaglio = (Missione_dettaglioBulk)getSpesaController().getModel(); if (dettaglio != null && dettaglio.isMissioneFromGemis()){ if (dettaglio.getDs_giustificativo() != null){ - Folder node = (Folder)missioniCMISService.getNodeByNodeRef(dettaglio.getDs_giustificativo()); - if (node != null){ - for (CmisObject cmisObject : node.getChildren()) { - Document document = (Document)cmisObject; - return document; + try { + Folder node = (Folder)missioniCMISService.getNodeByNodeRef(dettaglio.getDs_giustificativo()); + if (node != null){ + for (CmisObject cmisObject : node.getChildren()) { + Document document = (Document)cmisObject; + return document; + } } + } catch (CmisObjectNotFoundException e) { + return null; } } } @@ -2721,4 +2766,14 @@ public void scaricaGiustificativiCollegati(ActionContext actioncontext) throws E throw new it.cnr.jada.action.MessageToUser( "Giustificativi non presenti sul documentale per la riga selezionata" ); } } +@Override +protected Boolean isPossibileCancellazione(AllegatoGenericoBulk allegato) { + AllegatoMissioneBulk all =(AllegatoMissioneBulk)allegato; + if (!all.getAspectName().equals(MissioniCMISService.ASPECT_ALLEGATI_MISSIONE_SIGLA)){ + setMessage("Cancellazione non possibile!"); + return false; + } + return true; +} + } diff --git a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/comp/MissioneComponent.java b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/comp/MissioneComponent.java index aaffd0b25b..b55ef472e8 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/comp/MissioneComponent.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/comp/MissioneComponent.java @@ -830,6 +830,11 @@ private void caricaTipoTrattamento(MissioneBulk missione) public RemoteIterator cercaObbligazioni(UserContext context, Filtro_ricerca_obbligazioniVBulk filtro) throws ComponentException { + SQLBuilder sql = prepareQueryObbligazioni(context, filtro); + + return iterator(context, sql, Obbligazione_scadenzarioBulk.class, "default"); +} +private SQLBuilder prepareQueryObbligazioni(UserContext context, Filtro_ricerca_obbligazioniVBulk filtro) throws ComponentException { Obbligazione_scadenzarioHome home = (Obbligazione_scadenzarioHome)getHome(context, Obbligazione_scadenzarioBulk.class); it.cnr.jada.persistency.sql.SQLBuilder sql = home.createSQLBuilder(); sql.setDistinctClause(true); @@ -896,8 +901,8 @@ else if (ObbligazioneBulk.TIPO_RESIDUO_IMPROPRIO.equals(filtro.getTipo_obbligazi //filtro su Numero obbligazione if (filtro.getFl_nr_obbligazione().booleanValue() && filtro.getNr_obbligazione() != null) sql.addSQLClause("AND","OBBLIGAZIONE.PG_OBBLIGAZIONE",sql.EQUALS, filtro.getNr_obbligazione()); - - return iterator(context, sql, Obbligazione_scadenzarioBulk.class, "default"); + + return sql; } private boolean checkEleggibilitaAnticipo(UserContext aUC, MissioneBulk missione) throws ComponentException { @@ -1030,6 +1035,8 @@ public OggettoBulk creaConBulk(UserContext userContext,OggettoBulk bulk, it.cnr. if (missioneTemp.getDefferredSaldi() != null) aTempDiffSaldi=(PrimaryKeyHashMap)missioneTemp.getDefferredSaldi().clone(); + impostaDatiRimborsoDaCompletare(missioneTemp); + if(missioneTemp.getPg_missione() == null) { // Salvo missione, le spese, le tappe in modo temporaneo @@ -1063,9 +1070,13 @@ public OggettoBulk creaConBulk(UserContext userContext,OggettoBulk bulk, it.cnr. // Salvo missione/tappe/spese in modo definitivo // Cerco un progressivo definitivo per la missione Long pg = null; - ProgressiviAmmComponentSession progressiviSession = (ProgressiviAmmComponentSession)it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRDOCAMM00_EJB_ProgressiviAmmComponentSession", ProgressiviAmmComponentSession.class); - Numerazione_doc_ammBulk numerazione = new Numerazione_doc_ammBulk(missioneTemp); - pg = progressiviSession.getNextPG(userContext, numerazione); + if (missioneTemp.isMissioneFromGemis() && missioneTemp.getPgMissioneFromGeMis() != null){ + pg = missioneTemp.getPgMissioneFromGeMis(); + } else { + ProgressiviAmmComponentSession progressiviSession = (ProgressiviAmmComponentSession)it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRDOCAMM00_EJB_ProgressiviAmmComponentSession", ProgressiviAmmComponentSession.class); + Numerazione_doc_ammBulk numerazione = new Numerazione_doc_ammBulk(missioneTemp); + pg = progressiviSession.getNextPG(userContext, numerazione); + } // Inserisco la missione, le spese, le tappe in modo definitivo MissioneHome home = (MissioneHome)getHome(userContext, missioneTemp); @@ -1095,6 +1106,13 @@ public OggettoBulk creaConBulk(UserContext userContext,OggettoBulk bulk, it.cnr. throw handleException(e); } } +private void impostaDatiRimborsoDaCompletare(MissioneBulk missioneTemp) { + if (!missioneTemp.isMissioneProvvisoria() && missioneTemp.isMissioneFromGemis()){ + missioneTemp.setDaRimborsoDaCompletare(true); + } else { + missioneTemp.setDaRimborsoDaCompletare(false); + } +} private void controlloTrovato(UserContext aUC, Obbligazione_scadenzarioBulk scadenza) throws ComponentException, @@ -2800,6 +2818,8 @@ public OggettoBulk modificaConBulk(it.cnr.jada.UserContext userContext,OggettoBu aggiornaObbligazione(userContext, missione, status); + impostaDatiRimborsoDaCompletare(missione); + missione = (MissioneBulk) super.modificaConBulk(userContext, missione); @@ -2906,42 +2926,19 @@ public Obbligazione_scadenzarioBulk recuperoObbligazioneDaGemis(UserContext aUC, Obbligazione_scad_voceHome scadenzaHome = (Obbligazione_scad_voceHome)getHome(aUC, Obbligazione_scad_voceBulk.class); SQLBuilder sql = scadenzaHome.createSQLBuilder(); - GregorianCalendar ggRegistrazione = (GregorianCalendar)missione.getGregorianCalendar(getDataRegistrazione(aUC, missione)).clone(); - ggRegistrazione.set(GregorianCalendar.HOUR_OF_DAY, 0); - ggRegistrazione.set(GregorianCalendar.MINUTE, 0); - ggRegistrazione.set(GregorianCalendar.SECOND, 0); - java.sql.Timestamp dataRegistrazione = new java.sql.Timestamp(ggRegistrazione.getTime().getTime()); - - sql.setDistinctClause(true); - sql.addTableToHeader("OBBLIGAZIONE_SCADENZARIO"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.CD_CDS","OBBLIGAZIONE_SCAD_VOCE.CD_CDS"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.ESERCIZIO","OBBLIGAZIONE_SCAD_VOCE.ESERCIZIO"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.ESERCIZIO_ORIGINALE","OBBLIGAZIONE_SCAD_VOCE.ESERCIZIO_ORIGINALE"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.PG_OBBLIGAZIONE","OBBLIGAZIONE_SCAD_VOCE.PG_OBBLIGAZIONE"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.PG_OBBLIGAZIONE_SCADENZARIO","OBBLIGAZIONE_SCAD_VOCE.PG_OBBLIGAZIONE_SCADENZARIO"); - - sql.addTableToHeader("OBBLIGAZIONE"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.CD_CDS","OBBLIGAZIONE.CD_CDS"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.ESERCIZIO","OBBLIGAZIONE.ESERCIZIO"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.ESERCIZIO_ORIGINALE","OBBLIGAZIONE.ESERCIZIO_ORIGINALE"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.PG_OBBLIGAZIONE","OBBLIGAZIONE.PG_OBBLIGAZIONE"); - - sql.addSQLClause("AND","OBBLIGAZIONE.CD_CDS", sql.EQUALS, missione.getCdsObblGeMis()); - sql.addSQLClause("AND","OBBLIGAZIONE.ESERCIZIO", sql.EQUALS, missione.getEsercizioObblGeMis()); - sql.addSQLClause("AND","OBBLIGAZIONE.ESERCIZIO_ORIGINALE", sql.EQUALS, missione.getEsercizioOriObblGeMis()); - sql.addSQLClause("AND","OBBLIGAZIONE.PG_OBBLIGAZIONE", sql.EQUALS, missione.getPgObblGeMis()); - sql.addSQLClause("AND","OBBLIGAZIONE.STATO_OBBLIGAZIONE", sql.EQUALS, "D"); - sql.addSQLClause("AND","OBBLIGAZIONE.DT_CANCELLAZIONE", sql.ISNULL, null); - sql.addSQLClause("AND","OBBLIGAZIONE.CD_TERZO",sql.EQUALS, missione.getCd_terzo()); - - sql.addSQLClause("AND","OBBLIGAZIONE_SCAD_VOCE.CD_LINEA_ATTIVITA",sql.GREATER_EQUALS, missione.getGaeGeMis()); - - sql.addSQLClause("AND","OBBLIGAZIONE_SCADENZARIO.DT_SCADENZA",sql.GREATER_EQUALS, dataRegistrazione); - sql.addSQLClause("AND","OBBLIGAZIONE_SCADENZARIO.IM_ASSOCIATO_DOC_AMM = ? OR OBBLIGAZIONE_SCADENZARIO.IM_ASSOCIATO_DOC_AMM IS NULL"); - sql.addParameter(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP),java.sql.Types.DECIMAL,2); - sql.addSQLClause("AND","OBBLIGAZIONE_SCADENZARIO.IM_ASSOCIATO_DOC_CONTABILE = ? OR OBBLIGAZIONE_SCADENZARIO.IM_ASSOCIATO_DOC_CONTABILE IS NULL"); - sql.addParameter(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP),java.sql.Types.DECIMAL,2); + sql.addSQLClause("AND","OBBLIGAZIONE_SCAD_VOCE.CD_LINEA_ATTIVITA",sql.EQUALS, missione.getGaeGeMis()); + + SQLBuilder sqlExists = impostaFiltroQueryObbligazioniFromGemis(aUC, missione); + + sqlExists.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.CD_CDS","OBBLIGAZIONE_SCAD_VOCE.CD_CDS"); + sqlExists.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.ESERCIZIO","OBBLIGAZIONE_SCAD_VOCE.ESERCIZIO"); + sqlExists.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.ESERCIZIO_ORIGINALE","OBBLIGAZIONE_SCAD_VOCE.ESERCIZIO_ORIGINALE"); + sqlExists.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.PG_OBBLIGAZIONE","OBBLIGAZIONE_SCAD_VOCE.PG_OBBLIGAZIONE"); + sqlExists.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.PG_OBBLIGAZIONE_SCADENZARIO","OBBLIGAZIONE_SCAD_VOCE.PG_OBBLIGAZIONE_SCADENZARIO"); + sql.addSQLExistsClause("AND", sqlExists); + sql.addOrderBy("OBBLIGAZIONE_SCAD_VOCE.PG_OBBLIGAZIONE_SCADENZARIO"); + it.cnr.jada.bulk.BulkList scadVoces = new it.cnr.jada.bulk.BulkList(scadenzaHome.fetchAll( sql )); if((scadVoces != null) && (!scadVoces.isEmpty())){ Obbligazione_scad_voceBulk scadVoce = (Obbligazione_scad_voceBulk)scadVoces.get(0); @@ -2954,34 +2951,9 @@ public Obbligazione_scadenzarioBulk recuperoObbligazioneDaGemis(UserContext aUC, } } else { Obbligazione_scadenzarioHome scadenzaHome = (Obbligazione_scadenzarioHome)getHome(aUC, Obbligazione_scadenzarioBulk.class); - SQLBuilder sql = scadenzaHome.createSQLBuilder(); - - GregorianCalendar ggRegistrazione = (GregorianCalendar)missione.getGregorianCalendar(getDataRegistrazione(aUC, missione)).clone(); - ggRegistrazione.set(GregorianCalendar.HOUR_OF_DAY, 0); - ggRegistrazione.set(GregorianCalendar.MINUTE, 0); - ggRegistrazione.set(GregorianCalendar.SECOND, 0); - java.sql.Timestamp dataRegistrazione = new java.sql.Timestamp(ggRegistrazione.getTime().getTime()); - - sql.setDistinctClause(true); - sql.addTableToHeader("OBBLIGAZIONE"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.CD_CDS","OBBLIGAZIONE.CD_CDS"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.ESERCIZIO","OBBLIGAZIONE.ESERCIZIO"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.ESERCIZIO_ORIGINALE","OBBLIGAZIONE.ESERCIZIO_ORIGINALE"); - sql.addSQLJoin("OBBLIGAZIONE_SCADENZARIO.PG_OBBLIGAZIONE","OBBLIGAZIONE.PG_OBBLIGAZIONE"); - - sql.addSQLClause("AND","OBBLIGAZIONE.ESERCIZIO", sql.EQUALS, missione.getEsercizio()); - sql.addSQLClause("AND","OBBLIGAZIONE.CD_CDS", sql.EQUALS, missione.getCd_cds()); - sql.addSQLClause("AND","OBBLIGAZIONE.STATO_OBBLIGAZIONE", sql.EQUALS, "D"); - sql.addSQLClause("AND","OBBLIGAZIONE.DT_CANCELLAZIONE", sql.ISNULL, null); - sql.addSQLClause("AND","OBBLIGAZIONE.CD_TERZO",sql.EQUALS, missione.getCd_terzo()); - sql.addSQLClause("AND","OBBLIGAZIONE.RIPORTATO",sql.EQUALS, "N"); - - sql.addSQLClause("AND","OBBLIGAZIONE_SCADENZARIO.DT_SCADENZA",sql.GREATER_EQUALS, dataRegistrazione); - sql.addSQLClause("AND","OBBLIGAZIONE_SCADENZARIO.IM_ASSOCIATO_DOC_AMM = ? OR OBBLIGAZIONE_SCADENZARIO.IM_ASSOCIATO_DOC_AMM IS NULL"); - sql.addParameter(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP),java.sql.Types.DECIMAL,2); - sql.addSQLClause("AND","OBBLIGAZIONE_SCADENZARIO.IM_ASSOCIATO_DOC_CONTABILE = ? OR OBBLIGAZIONE_SCADENZARIO.IM_ASSOCIATO_DOC_CONTABILE IS NULL"); - sql.addParameter(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP),java.sql.Types.DECIMAL,2); + SQLBuilder sql = impostaFiltroQueryObbligazioniFromGemis(aUC, missione); sql.addOrderBy("OBBLIGAZIONE_SCADENZARIO.PG_OBBLIGAZIONE_SCADENZARIO"); + it.cnr.jada.bulk.BulkList scadenzario = new it.cnr.jada.bulk.BulkList(scadenzaHome.fetchAll( sql )); if((scadenzario != null) && (!scadenzario.isEmpty())){ Obbligazione_scadenzarioBulk scad = (Obbligazione_scadenzarioBulk)scadenzario.get(0); @@ -3001,6 +2973,31 @@ public Obbligazione_scadenzarioBulk recuperoObbligazioneDaGemis(UserContext aUC, return null; } +private SQLBuilder impostaFiltroQueryObbligazioniFromGemis(UserContext aUC, MissioneBulk missione) throws PersistencyException, ComponentException, ApplicationException { + Filtro_ricerca_obbligazioniVBulk filtro = new Filtro_ricerca_obbligazioniVBulk(); + + filtro.setCd_unita_organizzativa(missione.getCd_unita_organizzativa()); + filtro.setFl_data_scadenziario(false); + filtro.setFl_fornitore(false); + filtro.setFl_importo(false); + filtro.setFl_nr_obbligazione(true); + TerzoBulk terzo = new TerzoBulk(); + terzo.setCd_terzo(missione.getCd_terzo()); + filtro.setFornitore(terzo); + filtro.setEsercizio_ori_obbligazione(missione.getEsercizioOriObblGeMis()); + filtro.setNr_obbligazione(missione.getPgObblGeMis()); + + SQLBuilder sql = prepareQueryObbligazioni(aUC, filtro); + +// GregorianCalendar ggRegistrazione = (GregorianCalendar)missione.getGregorianCalendar(getDataRegistrazione(aUC, missione)).clone(); +// ggRegistrazione.set(GregorianCalendar.HOUR_OF_DAY, 0); +// ggRegistrazione.set(GregorianCalendar.MINUTE, 0); +// ggRegistrazione.set(GregorianCalendar.SECOND, 0); +// java.sql.Timestamp dataRegistrazione = new java.sql.Timestamp(ggRegistrazione.getTime().getTime()); + + return sql; +} + public AnticipoBulk recuperoAnticipoDaGemis(UserContext aUC, MissioneBulk missione) throws ComponentException { try diff --git a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/AllegatoMissioneBulk.java b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/AllegatoMissioneBulk.java index b35645d9e3..69a67cc4de 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/AllegatoMissioneBulk.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/AllegatoMissioneBulk.java @@ -7,6 +7,7 @@ import org.apache.chemistry.opencmis.commons.PropertyIds; import it.cnr.contab.cmis.annotation.CMISProperty; +import it.cnr.contab.missioni00.service.MissioniCMISService; import it.cnr.contab.util00.bulk.cmis.AllegatoGenericoBulk; import it.cnr.jada.bulk.ValidationException; import it.cnr.jada.util.OrderedHashtable; @@ -15,6 +16,7 @@ public class AllegatoMissioneBulk extends AllegatoGenericoBulk { private static final long serialVersionUID = 1L; public static final String FLUSSO_ORDINE = "FLUSSO_ORDINE"; public static final String FLUSSO_RIMBORSO = "FLUSSO_RIMBORSO"; + public static OrderedHashtable aspectNamesKeys = new OrderedHashtable(); static { @@ -29,15 +31,18 @@ public class AllegatoMissioneBulk extends AllegatoGenericoBulk { aspectNamesKeys.put("P:missioni_rimborso_attachment:rimborso","Rimborso Missione"); aspectNamesKeys.put(FLUSSO_ORDINE,"Flusso Ordine di Missione"); aspectNamesKeys.put(FLUSSO_RIMBORSO,"Flusso Rimborso Missione"); + aspectNamesKeys.put(MissioniCMISService.ASPECT_ALLEGATI_MISSIONE_SIGLA,"Allegati vari alla Missione SIGLA"); } private String aspectName; public AllegatoMissioneBulk() { super(); + setAspectName(MissioniCMISService.ASPECT_ALLEGATI_MISSIONE_SIGLA); } public AllegatoMissioneBulk(Document node) { super(node); + setAspectName(MissioniCMISService.ASPECT_ALLEGATI_MISSIONE_SIGLA); } public String getAspectName() { @@ -65,4 +70,11 @@ public void validate() throws ValidationException { } super.validate(); } + public boolean isAllegatoEsistente() + { + if(this.isToBeCreated()) + return false; + + return true; + } } diff --git a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/MissioneBase.java b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/MissioneBase.java index 433e24c720..139c792e08 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/MissioneBase.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/MissioneBase.java @@ -183,6 +183,9 @@ public class MissioneBase extends MissioneKey implements Keyed { // ID_FOLDER_ORDINE_MISSIONE VARCHAR(100) private String idFolderOrdineMissione; + // TI_ISTITUZ_COMMERC CHAR(1) NOT NULL + private java.lang.Boolean daRimborsoDaCompletare; + public MissioneBase() { super(); } @@ -843,4 +846,10 @@ public String getIdFolderOrdineMissione() { public void setIdFolderOrdineMissione(String idFolderOrdineMissione) { this.idFolderOrdineMissione = idFolderOrdineMissione; } +public java.lang.Boolean getDaRimborsoDaCompletare() { + return daRimborsoDaCompletare; +} +public void setDaRimborsoDaCompletare(java.lang.Boolean daRimborsoDaCompletare) { + this.daRimborsoDaCompletare = daRimborsoDaCompletare; +} } diff --git a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/MissioneBulk.java b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/MissioneBulk.java index 7ec7bf8c01..1357f4c710 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/MissioneBulk.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/docs/bulk/MissioneBulk.java @@ -1,5 +1,21 @@ package it.cnr.contab.missioni00.docs.bulk; +import java.math.BigDecimal; +import java.text.ParseException; +import java.util.Collections; +import java.util.Comparator; +import java.util.Dictionary; +import java.util.Enumeration; +import java.util.GregorianCalendar; +import java.util.Iterator; +import java.util.List; +import java.util.Optional; +import java.util.Vector; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + import it.cnr.contab.anagraf00.core.bulk.BancaBulk; import it.cnr.contab.anagraf00.tabrif.bulk.Rif_inquadramentoBulk; import it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk; @@ -33,24 +49,9 @@ import it.cnr.jada.bulk.PrimaryKeyHashtable; import it.cnr.jada.bulk.ValidationException; import it.cnr.jada.util.OrderedHashtable; +import it.cnr.jada.util.StrServ; import it.cnr.jada.util.action.CRUDBP; -import java.math.BigDecimal; -import java.text.ParseException; -import java.util.Collections; -import java.util.Comparator; -import java.util.Dictionary; -import java.util.Enumeration; -import java.util.GregorianCalendar; -import java.util.Iterator; -import java.util.List; -import java.util.Optional; -import java.util.Vector; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; - @CMISType(name="D:emppay:missione", parentName="D:emppay:document") @JsonInclude(value=Include.NON_NULL) public class MissioneBulk extends MissioneBase implements IDefferUpdateSaldi, IDocumentoAmministrativoSpesaBulk,AllegatoParentBulk @@ -60,6 +61,7 @@ public class MissioneBulk extends MissioneBase implements IDefferUpdateSaldi, ID private int annoSolare; private int esercizioScrivania; private java.util.Vector collectionGiorni; + public final static Dictionary DA_GEMIS_DA_COMPLETARE; private java.util.List collectionGiorniSpese; private java.util.List collectionGiorniSpeseSelezionati; protected Tipo_missioneBulk tipo_missione; @@ -82,6 +84,11 @@ public class MissioneBulk extends MissioneBase implements IDefferUpdateSaldi, ID ti_salvataggioKeys.put("D", "Definitiva"); ti_salvataggioKeys.put("P", "Provvisoria"); ti_salvataggioKeys.put("T", ""); + + DA_GEMIS_DA_COMPLETARE = new it.cnr.jada.util.OrderedHashtable(); + DA_GEMIS_DA_COMPLETARE.put(new Boolean(false), "N"); + DA_GEMIS_DA_COMPLETARE.put(new Boolean(true), "Y"); + } // Tappe @@ -158,6 +165,7 @@ public class MissioneBulk extends MissioneBase implements IDefferUpdateSaldi, ID private String cdsAnticipoGeMis; private Long pgAnticipoGeMis; private String gaeGeMis; + private Long pgMissioneFromGeMis; // Fondo Economale public final static Dictionary STATO_FONDO_ECO; @@ -3628,4 +3636,18 @@ public Long getPgAnticipoGeMis() { public void setPgAnticipoGeMis(Long pgAnticipoGeMis) { this.pgAnticipoGeMis = pgAnticipoGeMis; } + public java.util.Dictionary getDaRimborsoDaCompletareKeys() { + return DA_GEMIS_DA_COMPLETARE; + } + public Long getPgMissioneFromGeMis() { + return pgMissioneFromGeMis; + } + public void setPgMissioneFromGeMis(Long pgMissioneFromGeMis) { + this.pgMissioneFromGeMis = pgMissioneFromGeMis; + } + public String constructCMISNomeFile() { + StringBuffer nomeFile = new StringBuffer(); + nomeFile = nomeFile.append(StrServ.lpad(this.getPg_missione().toString(),9,"0")); + return nomeFile.toString(); + } } diff --git a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/service/MissioniCMISService.java b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/service/MissioniCMISService.java index bde33de81f..dee87d8274 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/missioni00/service/MissioniCMISService.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/missioni00/service/MissioniCMISService.java @@ -1,5 +1,10 @@ package it.cnr.contab.missioni00.service; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.apache.chemistry.opencmis.client.api.CmisObject; import org.apache.chemistry.opencmis.client.api.Document; import org.apache.chemistry.opencmis.client.api.Folder; @@ -9,6 +14,7 @@ import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException; import org.springframework.util.StringUtils; +import it.cnr.contab.cmis.service.CMISPath; import it.cnr.contab.cmis.service.SiglaCMISService; import it.cnr.contab.missioni00.docs.bulk.MissioneBulk; import it.cnr.jada.DetailedException; @@ -17,13 +23,11 @@ public class MissioniCMISService extends SiglaCMISService { - private final static String ALLEGATI = "allegati"; - private final static String ALLEGATI_ANTICIPO = "allegati_anticipo"; - private final static String RICHIESTA_AUTO_PROPRIA = "uso_auto_propria"; - private final static String RICHIESTA_ANTICIPO = "richiesta_anticipo"; - private final static String ORDINE_MISSIONE = "ordine"; - private final static String SCONTRINI = "scontrini"; - private final static String RIMBORSO_MISSIONE = "rimborso"; + public static final String ASPECT_ALLEGATI_MISSIONE_SIGLA = "P:missioni_sigla_attachment:allegati"; + public static final String ASPECT_CMIS_MISSIONE_SIGLA = "P:missioni_sigla:missione_sigla"; + public static final String CMIS_MISSIONE_SIGLA_ANNO = "missioni_sigla:anno"; + public static final String CMIS_MISSIONE_SIGLA_NUMERO = "missioni_sigla:numero"; + public static final String CMIS_MISSIONE_SIGLA_OGGETTO = "missioni_sigla:oggetto"; @@ -47,6 +51,18 @@ public ItemIterable getFilesOrdineMissione(MissioneBulk missione) th } return null; } + + public CMISPath getCMISPathFromFolderRimborso(MissioneBulk missione) throws ComponentException{ + Folder folderRimborso = (Folder) getNodeByNodeRef(missione.getIdFolderRimborsoMissione()); + return getCMISPathFromFolder(folderRimborso); + } + + private CMISPath getCMISPathFromFolder(Folder folderRimborso) { + if (folderRimborso != null){ + return CMISPath.construct(folderRimborso.getPath()); + } + return null; + } public ItemIterable getFilesRimborsoMissione(MissioneBulk missione) throws ComponentException{ if (!StringUtils.isEmpty(missione.getIdFolderRimborsoMissione())){ @@ -59,64 +75,30 @@ public ItemIterable getFilesRimborsoMissione(MissioneBulk missione) } if (folderRimborso != null){ ItemIterable children = folderRimborso.getChildren(); - ItemIterable results = getDocuments(missione.getIdFolderRimborsoMissione(), null); - for (QueryResult nodeFile : results) { - String file = nodeFile.getPropertyValueById(PropertyIds.OBJECT_ID); - } return children; } } return null; } -// public List getNodeRefDocumentoAttivo(Integer esercizio, String cds, String cdUo, Long pgFattura)throws DetailedException{ -// List ids = new ArrayList(); -// String folder = getFolderDocumentoAttivo(esercizio, cds, cdUo, pgFattura); -// ItemIterable results = getDocuments(folder, TIPO_ALLEGATO_FATTURA_DOPO_PROTOCOLLO); -// if (results.getTotalNumItems() == 0){ -// results = getDocuments(folder, TIPO_ALLEGATO_FATTURA_PRIMA_PROTOCOLLO); -// if (results.getTotalNumItems() == 0){ -// return null; -// } else{ -// getIds(ids, results); -// } -// } else { -// getIds(ids, results); -// } -// return ids; -// } -// -// private List getNodeRefFatturaAttivaXmlFirmato(Integer esercizio, String cds, String cdUo, Long pgFattura)throws DetailedException{ -// List ids = new ArrayList(); -// String folder = getFolderDocumentoAttivo(esercizio, cds, cdUo, pgFattura); -// ItemIterable results = getDocuments(folder, FILE_FATTURA_XML_FIRMATO); -// if (results.getTotalNumItems() == 0) -// return null; -// else { -// for (QueryResult nodeFile : results) { -// String file = nodeFile.getPropertyValueById(PropertyIds.OBJECT_ID); -// ids.add(file); -// } -// } -// return ids; -// } -// -// public List getNodeRefAllegatiDocumentoAttivo(Integer esercizio, String cds, String cdUo, Long pgFattura)throws DetailedException{ -// List ids = new ArrayList(); -// String folder = getFolderDocumentoAttivo(esercizio, cds, cdUo, pgFattura); -// ItemIterable results = getDocuments(folder, TIPO_ALLEGATO_NON_INVIATO_SDI); -// if (results.getTotalNumItems() == 0){ -// return null; -// } else{ -// getIds(ids, results); -// } -// return ids; -// } -// + public ItemIterable getFilesMissioneSigla(MissioneBulk missione) throws ComponentException{ + Folder folderMissione; + try { + folderMissione = recuperoFolderMissioneSigla(missione); + } catch (DetailedException e) { + throw new ComponentException(e); + } + + if (folderMissione != null){ + ItemIterable children = folderMissione.getChildren(); + return children; + } + return null; + } + private ItemIterable getDocuments(String folder, String tipoAllegato) throws ApplicationException { StringBuffer query = new StringBuffer("select doc.cmis:objectId from cmis:document doc "); -// query.append(" join sigla_fatture_attachment:"+tipoAllegato+" allegati on doc.cmis:objectId = allegati.cmis:objectId"); query.append(" where IN_FOLDER(doc, '").append(folder).append("')"); ItemIterable results = search(query); for (QueryResult nodeFile : results) { @@ -124,30 +106,6 @@ private ItemIterable getDocuments(String folder, String tipoAllegat } return results; } -// -// private String getFolderDocumentoAttivo(Integer esercizio, String cds, String cdUo, -// Long pgFattura) throws DetailedException, ApplicationException { -// Folder node = getNodeFolderDocumentoAttivo(esercizio, cds, cdUo, pgFattura); -// String folder = (String) node.getPropertyValue(PropertyIds.OBJECT_ID); -// return folder; -// } -// -// private Folder getNodeFolderDocumentoAttivo(Integer esercizio, String cds, String cdUo, -// Long pgFattura) throws DetailedException, ApplicationException { -// Folder node = recuperoFolderFattura(esercizio, cds, cdUo, pgFattura); -// if (node == null){ -// throw new ApplicationException("Non esistono documenti collegati alla fattura. Anno:"+ esercizio+ " cds:" +cds +" uo:"+cdUo+" numero:"+pgFattura); -// } -// return node; -// } -// -// private void getIds(List ids, ItemIterable results) { -// for (QueryResult nodeFile : results) { -// String file = nodeFile.getPropertyValueById(PropertyIds.OBJECT_ID); -// ids.add(file); -// } -// } -// public Document recuperoFlows(String idFlusso)throws DetailedException{ StringBuffer query = new StringBuffer("SELECT alfcmis:nodeRef,cmis:name from wfcnr:parametriFlusso "); @@ -165,55 +123,52 @@ else if (resultsFolder.getTotalNumItems() > 1){ } return null; } -// -// public InputStream getStreamDocumentoAttivo(Integer esercizio, String cds, String cdUo, Long pgFattura) throws Exception{ -// List ids = getNodeRefDocumentoAttivo(esercizio, cds, cdUo, pgFattura); -// return getStream(ids); -// } -// -// public InputStream getStreamAllegatiDocumentoAttivo(Integer esercizio, String cds, String cdUo, Long pgFattura) throws Exception{ -// List ids = getNodeRefAllegatiDocumentoAttivo(esercizio, cds, cdUo, pgFattura); -// return getStream(ids); -// } -// -// private InputStream getStream(List ids) -// throws ApplicationException, COSVisitorException, IOException { -// if (ids != null){ -// if (ids.size() == 1){ -// try{ -// return getResource(getNodeByNodeRef(ids.get(0))); -// }catch (CmisObjectNotFoundException _ex){ -// } -// }else{ -// PDFMergerUtility ut = new PDFMergerUtility(); -// ut.setDestinationStream(new ByteArrayOutputStream()); -// try { -// for (String id : ids) { -// ut.addSource(getResource(getNodeByNodeRef(id))); -// } -// ut.mergeDocuments(); -// return new ByteArrayInputStream(((ByteArrayOutputStream)ut.getDestinationStream()).toByteArray()); -// } catch (COSVisitorException e) { -// throw e; -// } catch (IOException e) { -// throw e; -// }catch (CmisObjectNotFoundException _ex){ -// } -// } -// } -// return null; -// } -// -// public InputStream getStreamXmlFirmatoFatturaAttiva(Integer esercizio, String cds, String cdUo, Long pgFattura) throws Exception{ -// List ids = getNodeRefFatturaAttivaXmlFirmato(esercizio, cds, cdUo, pgFattura); -// return getStream(ids); -// } -// -// public InputStream getStreamDocumento(Fattura_attivaBulk fattura) throws Exception{ -// return getStreamDocumentoAttivo(fattura.getEsercizio(), fattura.getCd_cds(), fattura.getCd_uo(), fattura.getPg_fattura_attiva()); -// } -// -// public InputStream getStreamAllegatiDocumento(Fattura_attivaBulk fattura) throws Exception{ -// return getStreamAllegatiDocumentoAttivo(fattura.getEsercizio(), fattura.getCd_cds(), fattura.getCd_uo(), fattura.getPg_fattura_attiva()); -// } + + public Folder recuperoFolderMissioneSigla(MissioneBulk missione)throws DetailedException{ + int posizionePunto = missione.getCd_unita_organizzativa().indexOf("."); + StringBuffer query = new StringBuffer("select mis.cmis:objectId from missioni_sigla:main mis join strorg:uo uo on mis.cmis:objectId = uo.cmis:objectId "); + query.append(" join strorg:cds cds on mis.cmis:objectId = cds.cmis:objectId "); + query.append(" where mis.missioni_sigla:anno = ").append(missione.getEsercizio()); + query.append(" and mis.missioni_sigla:numero = ").append(missione.getPg_missione()); + query.append(" and uo.strorguo:codice like '").append(missione.getCd_unita_organizzativa().substring(0, posizionePunto)+"%").append("'"); + query.append(" and cds.strorgcds:codice = '").append(missione.getCd_cds()).append("'"); + ItemIterable resultsFolder = search(query); + if (resultsFolder.getTotalNumItems() == 0) + return null; + else if (resultsFolder.getTotalNumItems() > 1){ + throw new ApplicationException("Errore di sistema, esistono sul documentale piu' Missioni. Anno:"+ missione.getEsercizio()+ " cds:" +missione.getCd_cds() +" uo:"+missione.getCd_unita_organizzativa()+ + " numero:"+missione.getPg_missione()); + } else { + for (QueryResult queryResult : resultsFolder) { + return (Folder) getNodeByNodeRef((String) queryResult.getPropertyValueById(PropertyIds.OBJECT_ID)); + } + } + return null; + } + + public CMISPath createLastFolderIfNotPresent(CMISPath cmisPath, MissioneBulk missione) throws ApplicationException{ + Map metadataProperties = new HashMap(); + String name = missione.constructCMISNomeFile(); + String folderName = name; + folderName = sanitizeFolderName(folderName); + metadataProperties.put(PropertyIds.OBJECT_TYPE_ID, "F:missioni_sigla:main"); + metadataProperties.put(MissioniCMISService.PROPERTY_DESCRIPTION, folderName); + metadataProperties.put(PropertyIds.NAME, folderName); + metadataProperties.put(MissioniCMISService.PROPERTY_TITLE, folderName); + metadataProperties.put(MissioniCMISService.CMIS_MISSIONE_SIGLA_NUMERO, missione.getPg_missione()); + metadataProperties.put(MissioniCMISService.CMIS_MISSIONE_SIGLA_ANNO, missione.getEsercizio()); + metadataProperties.put(MissioniCMISService.CMIS_MISSIONE_SIGLA_OGGETTO, missione.getDs_missione()); + + metadataProperties.put("sigla_commons_aspect:utente_applicativo", missione.getUtuv()); + metadataProperties.put("strorguo:codice", missione.getCd_unita_organizzativa()); + metadataProperties.put("strorgcds:codice", missione.getCd_cds()); + List aspectsToAdd = new ArrayList(); + aspectsToAdd.add("P:cm:titled"); + aspectsToAdd.add("P:strorg:cds"); + aspectsToAdd.add("P:strorg:uo"); + aspectsToAdd.add("P:sigla_commons_aspect:utente_applicativo_sigla"); + aspectsToAdd.add(MissioniCMISService.ASPECT_CMIS_MISSIONE_SIGLA); + cmisPath = createFolderIfNotPresent(cmisPath, metadataProperties, aspectsToAdd, folderName); + return cmisPath; + } } diff --git a/sigla-ejb/src/main/java/it/cnr/contab/util00/bp/AllegatiCRUDBP.java b/sigla-ejb/src/main/java/it/cnr/contab/util00/bp/AllegatiCRUDBP.java index 97c826aa07..1bd0598ecb 100644 --- a/sigla-ejb/src/main/java/it/cnr/contab/util00/bp/AllegatiCRUDBP.java +++ b/sigla-ejb/src/main/java/it/cnr/contab/util00/bp/AllegatiCRUDBP.java @@ -1,20 +1,5 @@ package it.cnr.contab.util00.bp; -import it.cnr.contab.cmis.CMISAspect; -import it.cnr.contab.cmis.service.CMISPath; -import it.cnr.contab.cmis.service.SiglaCMISService; -import it.cnr.contab.service.SpringUtil; -import it.cnr.contab.util00.bulk.cmis.AllegatoGenericoBulk; -import it.cnr.contab.util00.cmis.bulk.AllegatoParentBulk; -import it.cnr.jada.action.ActionContext; -import it.cnr.jada.action.BusinessProcessException; -import it.cnr.jada.action.HttpActionContext; -import it.cnr.jada.bulk.OggettoBulk; -import it.cnr.jada.comp.ApplicationException; -import it.cnr.jada.util.Introspector; -import it.cnr.jada.util.action.SimpleCRUDBP; -import it.cnr.jada.util.action.SimpleDetailCRUDController; - import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; @@ -22,6 +7,7 @@ import java.io.OutputStream; import java.lang.reflect.InvocationTargetException; import java.util.Iterator; +import java.util.List; import javax.servlet.ServletException; @@ -31,10 +17,26 @@ import org.apache.chemistry.opencmis.commons.enums.BaseTypeId; import org.apache.chemistry.opencmis.commons.exceptions.CmisContentAlreadyExistsException; +import it.cnr.contab.cmis.CMISAspect; +import it.cnr.contab.cmis.service.CMISPath; +import it.cnr.contab.cmis.service.SiglaCMISService; +import it.cnr.contab.service.SpringUtil; +import it.cnr.contab.util00.bulk.cmis.AllegatoGenericoBulk; +import it.cnr.contab.util00.cmis.bulk.AllegatoParentBulk; +import it.cnr.jada.action.ActionContext; +import it.cnr.jada.action.BusinessProcessException; +import it.cnr.jada.action.HttpActionContext; +import it.cnr.jada.bulk.OggettoBulk; +import it.cnr.jada.comp.ApplicationException; +import it.cnr.jada.util.Introspector; +import it.cnr.jada.util.action.SimpleCRUDBP; +import it.cnr.jada.util.action.SimpleDetailCRUDController; + public abstract class AllegatiCRUDBP extends SimpleCRUDBP { private static final long serialVersionUID = 1L; protected SiglaCMISService cmisService; private CRUDArchivioAllegati crudArchivioAllegati = new CRUDArchivioAllegati(getAllegatoClass(), this) { + public int addDetail(OggettoBulk oggettobulk) throws BusinessProcessException { addChildDetail(oggettobulk); return super.addDetail(oggettobulk); @@ -47,6 +49,19 @@ protected OggettoBulk getDetail(int i) { public boolean isGrowable() { return isChildGrowable(super.isGrowable()); }; + + public OggettoBulk removeDetail(int i) { + if (!getModel().isNew()){ + List list = getDetails(); + AllegatoGenericoBulk all =(AllegatoGenericoBulk)list.get(i); + if (isPossibileCancellazione(all)) { + return super.removeDetail(i); + } else { + return null; + } + } + return super.removeDetail(i); + } }; protected abstract CMISPath getCMISPath(K allegatoParentBulk, boolean create) throws BusinessProcessException; @@ -55,6 +70,10 @@ public boolean isGrowable() { public AllegatiCRUDBP() { super(); } + + protected Boolean isPossibileCancellazione(AllegatoGenericoBulk allegato){ + return true; + } public AllegatiCRUDBP(String s) { super(s); diff --git a/sigla-ejb/src/main/resources/cmis/model/missioni/missioni-sigla-attachmentModel.xml b/sigla-ejb/src/main/resources/cmis/model/missioni/missioni-sigla-attachmentModel.xml new file mode 100644 index 0000000000..2a4def5e1b --- /dev/null +++ b/sigla-ejb/src/main/resources/cmis/model/missioni/missioni-sigla-attachmentModel.xml @@ -0,0 +1,45 @@ + + + Sigla Dynamic Model + gianfranco.gasparro + 1.0 + + + + + + + + + + Allegati alla Missione SIGLA + Allegati alla Missione SIGLA + cm:content + + + Nome Originale del File + Nome Originale del File + d:text + + + Id Collegato + Id Collegato + d:text + + + + + + + Allegati alla Missione SIGLA + Allegati alla Missione SIGLA + + + Scontrini collegati alla Missione SIGLA + Scontrini collegati alla Missione SIGLA + + + diff --git a/sigla-ejb/src/main/resources/cmis/model/missioni/missioni-sigla-model.xml b/sigla-ejb/src/main/resources/cmis/model/missioni/missioni-sigla-model.xml new file mode 100644 index 0000000000..db3de1d9f9 --- /dev/null +++ b/sigla-ejb/src/main/resources/cmis/model/missioni/missioni-sigla-model.xml @@ -0,0 +1,63 @@ + + + + + + Missioni SIGLA extension Content Model - Missioni + Gianfranco Gasparro + 2.0 + + + + + + + + + + + + + + + + + + + Dati Generali Documento Missione + Dati Generali Documento Missione + cm:folder + + + Anno + d:int + + + Numero Missione + d:long + + + Oggetto Missione + d:text + + + + strorg:cds + strorg:uo + sigla_commons_aspect:utente_applicativo_sigla + + + + + + Missione inserita da SIGLA + Missione inserita da SIGLA + + + diff --git a/sigla-ejb/src/main/resources/it/cnr/contab/cmis/service/cmis-service-context.xml b/sigla-ejb/src/main/resources/it/cnr/contab/cmis/service/cmis-service-context.xml index eb4a0b1590..30fb839b55 100644 --- a/sigla-ejb/src/main/resources/it/cnr/contab/cmis/service/cmis-service-context.xml +++ b/sigla-ejb/src/main/resources/it/cnr/contab/cmis/service/cmis-service-context.xml @@ -58,6 +58,9 @@ + + + diff --git a/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/bp/CRUDMissioneBP.properties b/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/bp/CRUDMissioneBP.properties index 20f50cdccb..6481b5b7fe 100644 --- a/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/bp/CRUDMissioneBP.properties +++ b/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/bp/CRUDMissioneBP.properties @@ -17,4 +17,14 @@ CRUDToolbar.riportaAvanti.style=width:60px; CRUDToolbar.riportaAvanti.hiddenProperty=riportaAvantiButtonHidden CRUDToolbar.riportaAvanti.enabledProperty=riportaAvantiButtonEnabled CRUDToolbar.riportaAvanti.title=Riporta avanti -CRUDToolbar.riportaAvanti.accessKey=a \ No newline at end of file +CRUDToolbar.riportaAvanti.accessKey=a + +CRUDToolbar.salvaProvvisorio.img=img/save24.gif +CRUDToolbar.salvaProvvisorio.disabledImg=img/save24.gif +CRUDToolbar.salvaProvvisorio.label=Salva
provvisorio +CRUDToolbar.salvaProvvisorio.href=javascript:submitForm('doSalvaProvvisorio') +CRUDToolbar.salvaProvvisorio.style=width:60px; +CRUDToolbar.salvaProvvisorio.hiddenProperty=salvaProvvisorioButtonHidden +CRUDToolbar.salvaProvvisorio.enabledProperty=salvaProvvisorioButtonEnabled +CRUDToolbar.salvaProvvisorio.title=Salva provvisorio +CRUDToolbar.salvaProvvisorio.accessKey=p diff --git a/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/docs/bulk/AllegatoMissioneBulkInfo.xml b/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/docs/bulk/AllegatoMissioneBulkInfo.xml index ff35ff3d25..bde4863f79 100644 --- a/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/docs/bulk/AllegatoMissioneBulkInfo.xml +++ b/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/docs/bulk/AllegatoMissioneBulkInfo.xml @@ -10,6 +10,8 @@ keysProperty="aspectNamesKeys" inputSize="40" nullable="false" + enabledOnInsert="false" + enabledOnEdit="false" label="Tipologia" /> + diff --git a/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/docs/bulk/MissioneBasePersistentInfo.xml b/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/docs/bulk/MissioneBasePersistentInfo.xml index f3a74a3a5d..aba51a4e75 100644 --- a/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/docs/bulk/MissioneBasePersistentInfo.xml +++ b/sigla-ejb/src/main/resources/it/cnr/contab/missioni00/docs/bulk/MissioneBasePersistentInfo.xml @@ -370,6 +370,12 @@ propertyName="idFolderRimborsoMissione" sqlTypeName="VARCHAR" columnSize="100"/> + @@ -381,6 +387,8 @@ name="pg_obbligazione" /> + + - + @@ -1015,7 +1021,6 @@ - @@ -1030,6 +1035,7 @@ + @@ -1039,7 +1045,7 @@ - + diff --git a/sigla-web/src/main/java/it/cnr/contab/web/rest/MissioneResource.java b/sigla-web/src/main/java/it/cnr/contab/web/rest/MissioneResource.java index ca8c72e832..cd74d1fff4 100644 --- a/sigla-web/src/main/java/it/cnr/contab/web/rest/MissioneResource.java +++ b/sigla-web/src/main/java/it/cnr/contab/web/rest/MissioneResource.java @@ -110,6 +110,7 @@ public Response insert(@Context HttpServletRequest request, MissioneBulk mission Optional.ofNullable(missioneBulk.getCd_unita_organizzativa()).filter(x -> userContext.getCd_unita_organizzativa().equals(x)). orElseThrow(() -> new RestException(Status.BAD_REQUEST, "Unità Organizzativa del contesto diversa da quella della Missione")); } + missioneBulk.setObbligazione_scadenzario(Optional.ofNullable(missioneComponentSession.recuperoObbligazioneDaGemis(userContext, missioneBulk)).orElse(null)); missioneBulk.setAnticipo(Optional.ofNullable(missioneComponentSession.recuperoAnticipoDaGemis(userContext, missioneBulk)).orElse(null)); final MissioneBulk missione = (MissioneBulk) missioneComponentSession.inizializzaBulkPerInserimento( diff --git a/sigla-web/src/main/webapp/missioni00/main_missione.jsp b/sigla-web/src/main/webapp/missioni00/main_missione.jsp index 0e428d1dee..4f87a0b761 100644 --- a/sigla-web/src/main/webapp/missioni00/main_missione.jsp +++ b/sigla-web/src/main/webapp/missioni00/main_missione.jsp @@ -64,7 +64,7 @@ <% String[][] pages = null; - if((missione != null) && (missione.isMissioneFromGemis())){ + if(missione != null && missione.getPg_missione() != null){ pages = new String[][] { { "tabTestata","Testata","/missioni00/tab_missione_testata.jsp" }, { "tabAnagrafico","Anagrafico","/missioni00/tab_missione_anagrafico.jsp" }, diff --git a/sigla-web/src/main/webapp/missioni00/tab_missione_allegati.jsp b/sigla-web/src/main/webapp/missioni00/tab_missione_allegati.jsp index c42402bd3f..4ef7f87eb2 100644 --- a/sigla-web/src/main/webapp/missioni00/tab_missione_allegati.jsp +++ b/sigla-web/src/main/webapp/missioni00/tab_missione_allegati.jsp @@ -7,7 +7,7 @@ function doScaricaAllegato() { doPrint('genericdownload/<%=bp.getNomeAllegato()%>?methodName=scaricaAllegatoGenerico&it.cnr.jada.action.BusinessProcess=<%=bp.getPath()%>'); } -<% bp.getCrudArchivioAllegati().writeHTMLTable(pageContext,bp.getAllegatiFormName(),false,false,false,"100%","150px"); %> +<% bp.getCrudArchivioAllegati().writeHTMLTable(pageContext,bp.getAllegatiFormName(),true,false,true,"100%","150px"); %>
<% bp.getCrudArchivioAllegati().writeForm(out, bp.getAllegatiFormName()); %>