it.cnr.contab.incarichi00.comp.IncarichiEstrazioneFpComponent Maven / Gradle / Ivy
/*
* Copyright (C) 2019 Consiglio Nazionale delle Ricerche
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
package it.cnr.contab.incarichi00.comp;
/**
* Insert the type's description here.
* Creation date: (08/10/2001 15:39:09)
* @author: CNRADM
*/
import it.cnr.contab.anagraf00.tabrif.bulk.Tipo_rapportoBulk;
import it.cnr.contab.compensi00.docs.bulk.CompensoBulk;
import it.cnr.contab.compensi00.docs.bulk.CompensoHome;
import it.cnr.contab.compensi00.docs.bulk.V_terzo_per_compensoBulk;
import it.cnr.contab.compensi00.docs.bulk.V_terzo_per_compensoHome;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk;
import it.cnr.contab.doccont00.core.bulk.MandatoBulk;
import it.cnr.contab.doccont00.core.bulk.Mandato_rigaBulk;
import it.cnr.contab.doccont00.core.bulk.Mandato_rigaHome;
import it.cnr.contab.doccont00.core.bulk.Mandato_rigaIBulk;
import it.cnr.contab.incarichi00.bulk.Incarichi_proceduraBulk;
import it.cnr.contab.incarichi00.bulk.Incarichi_repertorioBulk;
import it.cnr.contab.incarichi00.bulk.V_incarichi_elenco_fpBulk;
import it.cnr.contab.incarichi00.xmlfp.Comunicazione;
import it.cnr.contab.incarichi00.xmlfp.EsitoComunicazione;
import it.cnr.contab.incarichi00.xmlfp.bulk.Incarichi_archivio_xml_fpBulk;
import it.cnr.contab.incarichi00.xmlfp.bulk.Incarichi_archivio_xml_fpHome;
import it.cnr.contab.incarichi00.xmlfp.bulk.Incarichi_comunicati_fpBulk;
import it.cnr.contab.incarichi00.xmlfp.bulk.Incarichi_comunicati_fpHome;
import it.cnr.contab.incarichi00.xmlfp.bulk.Incarichi_comunicati_fp_detBulk;
import it.cnr.contab.incarichi00.xmlfp.bulk.Incarichi_comunicati_fp_detHome;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.jada.UserContext;
import it.cnr.jada.bulk.BulkList;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.CRUDComponent;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.persistency.IntrospectionException;
import it.cnr.jada.persistency.PersistencyException;
import it.cnr.jada.persistency.sql.FindClause;
import it.cnr.jada.persistency.sql.SQLBuilder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.math.BigDecimal;
import java.sql.Blob;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
import javax.ejb.EJBException;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import com.googlecode.jcsv.reader.CSVReader;
import com.googlecode.jcsv.reader.internal.CSVReaderBuilder;
import org.apache.commons.io.IOUtils;
/**
* @author rpagano
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class IncarichiEstrazioneFpComponent extends CRUDComponent {
public V_incarichi_elenco_fpBulk completaIncaricoElencoFP(UserContext userContext, V_incarichi_elenco_fpBulk bulk) throws ComponentException{
try {
Incarichi_repertorioBulk incaricoRepertorio = (Incarichi_repertorioBulk)getHome(userContext, Incarichi_repertorioBulk.class).findByPrimaryKey(new Incarichi_repertorioBulk(bulk.getEsercizio(), bulk.getPg_repertorio()));
Incarichi_proceduraBulk incaricoProcedura = (Incarichi_proceduraBulk)getHome(userContext, Incarichi_proceduraBulk.class).findByPrimaryKey(new Incarichi_proceduraBulk(bulk.getEsercizio_procedura(), bulk.getPg_procedura()));
V_terzo_per_compensoHome home = (V_terzo_per_compensoHome)getHome(userContext, V_terzo_per_compensoBulk.class, "DISTINCT_TERZO");
incaricoRepertorio.setV_terzo(home.loadVTerzo(userContext,Tipo_rapportoBulk.ALTRO, incaricoRepertorio.getCd_terzo(), incaricoRepertorio.getDt_inizio_validita(), incaricoRepertorio.getDt_inizio_validita()));
incaricoRepertorio.setIncarichi_procedura(incaricoProcedura);
bulk.setIncaricoRepertorio(incaricoRepertorio);
return bulk;
} catch (EJBException ex) {
throw handleException(ex);
} catch (PersistencyException ex) {
throw handleException(ex);
}
}
public void aggiornaIncarichiComunicatiFP(UserContext userContext, List list) throws ComponentException{
for (Iterator iterator = list.iterator(); iterator.hasNext();)
aggiornaIncarichiComunicatiFP(userContext, iterator.next());
}
public void aggiornaIncarichiComunicatiFP(UserContext userContext, Incarichi_comunicati_fpBulk bulk) throws ComponentException{
try {
Incarichi_comunicati_fpHome incFpHome = (Incarichi_comunicati_fpHome)getTempHome(userContext, Incarichi_comunicati_fpBulk.class);
Incarichi_comunicati_fp_detHome incFpDetHome = (Incarichi_comunicati_fp_detHome)getTempHome(userContext, Incarichi_comunicati_fp_detBulk.class);
Incarichi_comunicati_fpBulk incaricoPrincFpDB = null;
incaricoPrincFpDB = (Incarichi_comunicati_fpBulk)incFpHome.findIncaricoComunicatoAggFP(bulk);
//recupero l'ultimo progressivo necessario per verificare che l'ultimo record inserito non sia un record identico
Long maxProg = (Long)incFpHome.findMax(bulk,"pg_record");
//Recupero il record principale
if (incaricoPrincFpDB!=null){
if (!incaricoPrincFpDB.getId_incarico().equals(bulk.getId_incarico()))
return;
//è stato già comunicato un nuovo incarico......devo aggiornarlo
incaricoPrincFpDB.updateFrom(userContext, bulk);
incaricoPrincFpDB.setToBeUpdated();
updateBulk(userContext,incaricoPrincFpDB);
for (Iterator iterator = bulk.getIncarichi_comunicati_fp_detColl().iterator(); iterator.hasNext();) {
Incarichi_comunicati_fp_detBulk pagam = iterator.next();
if (pagam.getAnno_pag()!=null && pagam.getSemestre_pag()!=null && pagam.getImporto_pag()!=null){
Incarichi_comunicati_fp_detBulk pagamPrincDB = (Incarichi_comunicati_fp_detBulk)incFpDetHome.findByPrimaryKey(new Incarichi_comunicati_fp_detBulk(incaricoPrincFpDB.getEsercizio_repertorio(), incaricoPrincFpDB.getPg_repertorio(), Incarichi_comunicati_fpBulk.TIPO_RECORD_AGGIORNATO, incaricoPrincFpDB.getPg_record(), pagam.getAnno_pag(), pagam.getSemestre_pag()));
if (pagamPrincDB!=null){
if (pagam.getImporto_pag()!=null) pagamPrincDB.setImporto_pag(pagam.getImporto_pag());
pagamPrincDB.setToBeUpdated();
pagamPrincDB.setUser(CNRUserContext.getUser(userContext));
updateBulk(userContext,pagamPrincDB);
} else {
pagamPrincDB = (Incarichi_comunicati_fp_detBulk)pagam.clone();
pagamPrincDB.setIncarichi_comunicati_fp(incaricoPrincFpDB);
pagamPrincDB.setUser(CNRUserContext.getUser(userContext));
pagamPrincDB.setToBeCreated();
insertBulk(userContext,pagamPrincDB);
}
}
}
} else {
if (maxProg!=null) {
Incarichi_comunicati_fpBulk otherIncaricoPrincFp = (Incarichi_comunicati_fpBulk)incFpHome.findByPrimaryKey(new Incarichi_comunicati_fpBulk(bulk.getEsercizio_repertorio(), bulk.getPg_repertorio(), bulk.getTipo_record(), Incarichi_comunicati_fpBulk.PG_RECORD_PRINCIPALE));
if (!otherIncaricoPrincFp.getId_incarico().equals(bulk.getId_incarico()))
return;
}
incaricoPrincFpDB = (Incarichi_comunicati_fpBulk)bulk.clone();
incaricoPrincFpDB.setEsercizio_repertorio(bulk.getEsercizio_repertorio());
incaricoPrincFpDB.setPg_repertorio(bulk.getPg_repertorio());
incaricoPrincFpDB.setTipo_record(Incarichi_comunicati_fpBulk.TIPO_RECORD_AGGIORNATO);
incaricoPrincFpDB.setPg_record(Incarichi_comunicati_fpBulk.PG_RECORD_PRINCIPALE);
incaricoPrincFpDB.setToBeCreated();
insertBulk(userContext,incaricoPrincFpDB);
for (Iterator iterator = bulk.getIncarichi_comunicati_fp_detColl().iterator(); iterator.hasNext();) {
Incarichi_comunicati_fp_detBulk pagam = iterator.next();
if (pagam.getAnno_pag()!=null && pagam.getSemestre_pag()!=null && pagam.getImporto_pag()!=null){
Incarichi_comunicati_fp_detBulk pagamPrincDB = (Incarichi_comunicati_fp_detBulk)pagam.clone();
pagamPrincDB.setIncarichi_comunicati_fp(incaricoPrincFpDB);
pagamPrincDB.setUser(CNRUserContext.getUser(userContext));
pagamPrincDB.setToBeCreated();
insertBulk(userContext, pagamPrincDB);
}
}
}
Incarichi_comunicati_fpBulk incFpLast = null;
if (maxProg!=null && maxProg>1)
incFpLast = (Incarichi_comunicati_fpBulk)incFpHome.findByPrimaryKey(new Incarichi_comunicati_fpBulk(bulk.getEsercizio_repertorio(), bulk.getPg_repertorio(), bulk.getTipo_record(), maxProg));
if (incFpLast==null || !incFpLast.similar(bulk)){
if (maxProg==null)
bulk.setPg_record(Incarichi_comunicati_fpBulk.PG_RECORD_PRINCIPALE+1);
bulk.setUser(CNRUserContext.getUser(userContext));
bulk.setToBeCreated();
insertBulk(userContext,bulk);
for (Iterator iterator = bulk.getIncarichi_comunicati_fp_detColl().iterator(); iterator.hasNext();) {
Incarichi_comunicati_fp_detBulk pagam = iterator.next();
if (pagam.getAnno_pag()!=null && pagam.getSemestre_pag()!=null && pagam.getImporto_pag()!=null){
pagam.setUser(CNRUserContext.getUser(userContext));
pagam.setToBeCreated();
insertBulk(userContext, pagam);
}
}
}
} catch (EJBException ex) {
throw handleException(ex);
} catch (PersistencyException ex) {
throw handleException(ex);
} catch (IntrospectionException ex) {
throw handleException(ex);
}
}
public Incarichi_comunicati_fpBulk getIncarichiComunicatiAggFP(UserContext userContext, V_incarichi_elenco_fpBulk incaricoElenco) throws ComponentException{
try {
Incarichi_comunicati_fpHome incFpHome = (Incarichi_comunicati_fpHome)getTempHome(userContext, Incarichi_comunicati_fpBulk.class);
Incarichi_comunicati_fpBulk bulk = new Incarichi_comunicati_fpBulk();
bulk.setIncarichi_repertorio(incaricoElenco.getIncaricoRepertorio());
Incarichi_comunicati_fpBulk incaricoComunicatoAgg = incFpHome.findIncaricoComunicatoAggFP(bulk);
if (incaricoComunicatoAgg!=null)
incaricoComunicatoAgg.setIncarichi_comunicati_fp_detColl(new BulkList(incFpHome.findIncarichiComunicatiFpDet(incaricoComunicatoAgg)));
return incaricoComunicatoAgg;
} catch (PersistencyException ex) {
throw handleException(ex);
} catch (IntrospectionException ex) {
throw handleException(ex);
}
}
public Incarichi_comunicati_fpBulk getIncarichiComunicatiAggFP(UserContext userContext, Incarichi_comunicati_fpBulk incaricoComunicato) throws ComponentException{
try {
Incarichi_comunicati_fpHome incFpHome = (Incarichi_comunicati_fpHome)getTempHome(userContext, Incarichi_comunicati_fpBulk.class);
Incarichi_comunicati_fpBulk incaricoComunicatoAgg = incFpHome.findIncaricoComunicatoAggFP(incaricoComunicato);
if (incaricoComunicatoAgg!=null)
incaricoComunicatoAgg.setIncarichi_comunicati_fp_detColl(new BulkList(incFpHome.findIncarichiComunicatiFpDet(incaricoComunicatoAgg)));
return incaricoComunicatoAgg;
} catch (PersistencyException ex) {
throw handleException(ex);
} catch (IntrospectionException ex) {
throw handleException(ex);
}
}
public List getIncarichiComunicatiEliminatiFP(UserContext userContext, Integer esercizio, Integer semestre) throws ComponentException{
try {
Incarichi_comunicati_fpHome incFpHome = (Incarichi_comunicati_fpHome)getTempHome(userContext, Incarichi_comunicati_fpBulk.class);
return incFpHome.findIncarichiComunicatiEliminatiFP(esercizio, semestre);
} catch (PersistencyException ex) {
throw handleException(ex);
} catch (IntrospectionException ex) {
throw handleException(ex);
}
}
@Override
protected OggettoBulk eseguiCreaConBulk(UserContext usercontext, OggettoBulk oggettobulk) throws ComponentException, PersistencyException {
oggettobulk = super.eseguiCreaConBulk(usercontext, oggettobulk);
if (oggettobulk instanceof Incarichi_archivio_xml_fpBulk) {
Incarichi_archivio_xml_fpBulk archivio = (Incarichi_archivio_xml_fpBulk)oggettobulk;
if (archivio.getFl_merge_perla().equals(Boolean.FALSE))
archiviaAllegati(usercontext,archivio);
else
mergePerla(usercontext, archivio);
}
return oggettobulk;
}
private void archiviaAllegati(UserContext userContext, Incarichi_archivio_xml_fpBulk incaricoArchivioXmlFp) throws ComponentException{
Incarichi_archivio_xml_fpHome archiveHome = (Incarichi_archivio_xml_fpHome)getHome(userContext,Incarichi_archivio_xml_fpBulk.class);
if (!(incaricoArchivioXmlFp.getFile_inv() == null || incaricoArchivioXmlFp.getFile_inv().getName().equals("") ||
incaricoArchivioXmlFp.getFile_ric() == null || incaricoArchivioXmlFp.getFile_ric().getName().equals(""))) {
incaricoArchivioXmlFp.setToBeUpdated();
try{
List listIncarichiComunicati = new ArrayList();
if (!incaricoArchivioXmlFp.getFl_perla()) {
JAXBContext jc = JAXBContext.newInstance("it.cnr.contab.incarichi00.xmlfp");
Comunicazione comunicazione = (Comunicazione)jc.createUnmarshaller().unmarshal(incaricoArchivioXmlFp.getFile_inv());
EsitoComunicazione esitoComunicazione = (EsitoComunicazione)jc.createUnmarshaller().unmarshal(incaricoArchivioXmlFp.getFile_ric());
for (Iterator iterator = comunicazione.getConsulenti().getNuovoIncarico().iterator(); iterator.hasNext();) {
Comunicazione.Consulenti.NuovoIncarico nuovoIncarico = (Comunicazione.Consulenti.NuovoIncarico) iterator.next();
Incarichi_comunicati_fpBulk incaricoComunicato = Incarichi_comunicati_fpBulk.copyFrom(userContext, nuovoIncarico);
listIncarichiComunicati.add(incaricoComunicato);
}
for (Iterator iterator = comunicazione.getConsulenti().getModificaIncarico().iterator(); iterator.hasNext();) {
Comunicazione.Consulenti.ModificaIncarico modificaIncarico = (Comunicazione.Consulenti.ModificaIncarico) iterator.next();
Incarichi_comunicati_fpBulk incaricoComunicato = Incarichi_comunicati_fpBulk.copyFrom(userContext, modificaIncarico);
listIncarichiComunicati.add(incaricoComunicato);
}
for (Iterator iterator = comunicazione.getConsulenti().getCancellaIncarico().iterator(); iterator.hasNext();) {
Comunicazione.Consulenti.CancellaIncarico cancellaIncarico = (Comunicazione.Consulenti.CancellaIncarico) iterator.next();
Incarichi_comunicati_fpBulk incaricoComunicato = Incarichi_comunicati_fpBulk.copyFrom(userContext, cancellaIncarico);
listIncarichiComunicati.add(incaricoComunicato);
}
for (Iterator iterator = esitoComunicazione.getConsulenti().getNuovoIncarico().iterator(); iterator.hasNext();) {
EsitoComunicazione.Consulenti.NuovoIncarico nuovoIncarico = (EsitoComunicazione.Consulenti.NuovoIncarico) iterator.next();
Incarichi_comunicati_fpBulk incaricoRicevuto = Incarichi_comunicati_fpBulk.copyFrom(userContext, nuovoIncarico);
listIncarichiComunicati.add(incaricoRicevuto);
}
for (Iterator iterator = esitoComunicazione.getConsulenti().getModificaIncarico().iterator(); iterator.hasNext();) {
EsitoComunicazione.Consulenti.ModificaIncarico modificaIncarico = (EsitoComunicazione.Consulenti.ModificaIncarico) iterator.next();
Incarichi_comunicati_fpBulk incaricoRicevuto = Incarichi_comunicati_fpBulk.copyFrom(userContext, modificaIncarico);
listIncarichiComunicati.add(incaricoRicevuto);
}
for (Iterator iterator = esitoComunicazione.getConsulenti().getCancellaIncarico().iterator(); iterator.hasNext();) {
EsitoComunicazione.Consulenti.CancellaIncarico cancellaIncarico = (EsitoComunicazione.Consulenti.CancellaIncarico) iterator.next();
Incarichi_comunicati_fpBulk incaricoRicevuto = Incarichi_comunicati_fpBulk.copyFrom(userContext, cancellaIncarico);
listIncarichiComunicati.add(incaricoRicevuto);
}
} else { //sistema PERLA
JAXBContext jc = JAXBContext.newInstance(it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ObjectFactory.class, it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ObjectFactory.class, it.perla.accenture.com.anagrafeprestazioni_cancellazioneincarichi.ObjectFactory.class);
JAXBElement> JAXBcomunicazione;
try{
JAXBcomunicazione = (JAXBElement>)jc.createUnmarshaller().unmarshal(incaricoArchivioXmlFp.getFile_inv());
} catch (ClassCastException e) {
throw new ValidationException("File inviato alla funzione pubblica non di tipo corretto. "+e.getMessage());
} catch (JAXBException e) {
throw new ValidationException("Errore generico in fase di caricamento del file inviato alla funzione pubblica. "+e.getMessage());
}
JAXBElement> JAXBesitoComunicazione;
try{
JAXBesitoComunicazione = (JAXBElement>)jc.createUnmarshaller().unmarshal(incaricoArchivioXmlFp.getFile_ric());
} catch (ClassCastException e) {
throw new ValidationException("File ricevuto dalla funzione pubblica non di tipo corretto. "+e.getMessage());
} catch (JAXBException e) {
throw new ValidationException("Errore generico in fase di caricamento del file ricevuto dalla funzione pubblica. "+e.getMessage());
}
if (JAXBcomunicazione==null)
throw new ValidationException("Errore nel caricamento del file inviato alla Funzione Pubblica.");
else if (JAXBesitoComunicazione==null)
throw new ValidationException("Errore nel caricamento del file ricevuto dalla Funzione Pubblica.");
if (JAXBcomunicazione.getDeclaredType().equals(it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ComunicazioneType.class)) {
it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ComunicazioneType comunicazione = ((JAXBElement)jc.createUnmarshaller().unmarshal(incaricoArchivioXmlFp.getFile_inv())).getValue();
it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ComunicazioneType esitoComunicazione = ((JAXBElement)jc.createUnmarshaller().unmarshal(incaricoArchivioXmlFp.getFile_ric())).getValue();
for (Iterator iterator = comunicazione.getInserimentoIncarichi().getNuoviIncarichi().getConsulente().iterator(); iterator.hasNext();) {
it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ConsulenteType nuovoConsulente = (it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ConsulenteType) iterator.next();
Incarichi_comunicati_fpBulk incaricoComunicato = Incarichi_comunicati_fpBulk.copyFrom(userContext, comunicazione, nuovoConsulente);
listIncarichiComunicati.add(incaricoComunicato);
}
for (Iterator iterator = esitoComunicazione.getEsitoInserimentoIncarichi().getEsitoNuoviIncarichi().getConsulente().iterator(); iterator.hasNext();) {
it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.EsitoConsulenteType nuovoConsulenteEsito = (it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.EsitoConsulenteType) iterator.next();
for (Iterator iterator2 = comunicazione.getInserimentoIncarichi().getNuoviIncarichi().getConsulente().iterator(); iterator2.hasNext();) {
it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ConsulenteType nuovoConsulente = (it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ConsulenteType) iterator2.next();
if (nuovoConsulente.getIdMittente().equals(nuovoConsulenteEsito.getIdMittente())) {
Incarichi_comunicati_fpBulk incaricoRicevuto = Incarichi_comunicati_fpBulk.copyFrom(userContext, comunicazione, nuovoConsulente, nuovoConsulenteEsito);
listIncarichiComunicati.add(incaricoRicevuto);
}
}
}
} else if (JAXBcomunicazione.getDeclaredType().equals(it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ComunicazioneType.class)) {
it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ComunicazioneType comunicazione = ((JAXBElement)jc.createUnmarshaller().unmarshal(incaricoArchivioXmlFp.getFile_inv())).getValue();
it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ComunicazioneType esitoComunicazione = ((JAXBElement)jc.createUnmarshaller().unmarshal(incaricoArchivioXmlFp.getFile_ric())).getValue();
for (Iterator iterator = comunicazione.getVariazioneIncarichi().getModificaIncarichi().getConsulente().iterator(); iterator.hasNext();) {
it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ConsulenteType modificaConsulente = (it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ConsulenteType) iterator.next();
Incarichi_comunicati_fpBulk incaricoComunicato = Incarichi_comunicati_fpBulk.copyFrom(userContext, comunicazione, modificaConsulente);
listIncarichiComunicati.add(incaricoComunicato);
}
for (Iterator iterator = esitoComunicazione.getEsitoVariazioneIncarichi().getEsitoModificaIncarichi().getConsulente().iterator(); iterator.hasNext();) {
it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.EsitoConsulenteType modificaConsulenteEsito = (it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.EsitoConsulenteType) iterator.next();
for (Iterator iterator2 = comunicazione.getVariazioneIncarichi().getModificaIncarichi().getConsulente().iterator(); iterator2.hasNext();) {
it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ConsulenteType modificaConsulente = (it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ConsulenteType) iterator2.next();
if (modificaConsulente.getIdMittente().equals(modificaConsulenteEsito.getIdMittente())) {
Incarichi_comunicati_fpBulk incaricoModificato = Incarichi_comunicati_fpBulk.copyFrom(userContext, comunicazione, modificaConsulente, modificaConsulenteEsito);
listIncarichiComunicati.add(incaricoModificato);
}
}
}
}
}
aggiornaIncarichiComunicatiFP(userContext, listIncarichiComunicati);
} catch (Exception e){
throw new ComponentException(e);
}
}
}
private void mergePerla(UserContext userContext, Incarichi_archivio_xml_fpBulk incaricoArchivioXmlFp) throws ComponentException{
Incarichi_archivio_xml_fpHome archiveHome = (Incarichi_archivio_xml_fpHome)getHome(userContext,Incarichi_archivio_xml_fpBulk.class);
if (!(incaricoArchivioXmlFp.getFile_ric() == null || incaricoArchivioXmlFp.getFile_ric().getName().equals(""))) {
incaricoArchivioXmlFp.setToBeUpdated();
List listIncarichiComunicati = new ArrayList();
List righeScartate = new ArrayList();
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("dd/MM/yy");
try
{
//read csv file
Reader reader = new FileReader(incaricoArchivioXmlFp.getFile_ric());
CSVReader csvParser = CSVReaderBuilder.newDefaultReader(reader);
List csvAllLine = csvParser.readAll();
int lineNumber = 0;
Incarichi_comunicati_fpBulk firstIncaricoComunicato = null;
Incarichi_comunicati_fpBulk incaricoComunicato = null;
//read comma separated file line by line
for (String[] csvLine : csvAllLine) {
lineNumber++;
//salto la prima riga che è l'intestazione
if (lineNumber>1 && !csvLine[1].replace(" ","").equals("") && (csvLine.length==20 || csvLine.length==21)){
System.out.println("lineNumber: "+lineNumber);
incaricoComunicato = new Incarichi_comunicati_fpBulk();
incaricoComunicato.setTipo_record(Incarichi_comunicati_fpBulk.TIPO_RECORD_AGGIORNATO);
incaricoComunicato.setToBeCreated();
String nominativo=null, tipoImporto=null;
BigDecimal importoPagamento=null;
int annoPagamento=0, semestrePagamento=0;
//display csv values
Unita_organizzativaBulk uo = (Unita_organizzativaBulk)findByPrimaryKey(userContext, new Unita_organizzativaBulk(csvLine[0].substring(0, 3)));
incaricoComunicato.setCodice_ente(uo.getId_funzione_pubblica());
incaricoComunicato.setId_incarico(csvLine[1]);
incaricoComunicato.setAnno_riferimento(new Integer(csvLine[2]));
if (csvLine[3].toUpperCase().equals("PRIMO SEMESTRE"))
incaricoComunicato.setSemestre_riferimento(1);
else if (csvLine[3].toUpperCase().equals("SECONDO SEMESTRE"))
incaricoComunicato.setSemestre_riferimento(2);
incaricoComunicato.setCodice_fiscale_partita_iva(csvLine[4]);
nominativo = csvLine[6];
incaricoComunicato.setTi_sesso(csvLine[7]);
incaricoComunicato.setDescrizione_incarico(csvLine[8]);
if (csvLine[8].indexOf("(")==0) {
int esercizio_repertorio = new Integer(csvLine[8].substring(1,5));
Long pg_repertorio = new Long(csvLine[8].substring(6,csvLine[8].indexOf(")")));
Incarichi_repertorioBulk incaricoRepertorio = (Incarichi_repertorioBulk)findByPrimaryKey(userContext, new Incarichi_repertorioBulk(esercizio_repertorio, pg_repertorio));
if (incaricoRepertorio!=null){
V_terzo_per_compensoHome home = (V_terzo_per_compensoHome)getHome(userContext, V_terzo_per_compensoBulk.class, "DISTINCT_TERZO");
incaricoRepertorio.setV_terzo(home.loadVTerzo(userContext,Tipo_rapportoBulk.ALTRO, incaricoRepertorio.getCd_terzo(), incaricoRepertorio.getDt_inizio_validita(), incaricoRepertorio.getDt_inizio_validita()));
incaricoComunicato.setIncarichi_repertorio(incaricoRepertorio);
}
}
if (csvLine[9].toUpperCase().equals("DI NATURA DISCREZIONALE"))
incaricoComunicato.setModalita_acquisizione("10");
else if (csvLine[9].toUpperCase().equals("PREVISTO DA NORMA DI LEGGE"))
incaricoComunicato.setModalita_acquisizione("1");
if (csvLine[10].toUpperCase().equals("COLLABORAZIONE COORDINATA E CONTINUATIVA"))
incaricoComunicato.setTipo_rapporto("2");
else if (csvLine[10].toUpperCase().equals("PRESTAZIONE OCCASIONALE"))
incaricoComunicato.setTipo_rapporto("1");
if (csvLine[11].toUpperCase().equals("ALTRE ATTIVITA' PROFESSIONALI ED IMPRENDITORIALI"))
incaricoComunicato.setAttivita_economica("74");
else if (csvLine[11].toUpperCase().equals("ATTIVITA' DI STUDIO E RICERCA"))
incaricoComunicato.setAttivita_economica("963");
else if (csvLine[11].toUpperCase().equals("CONSULENZA TECNICA"))
incaricoComunicato.setAttivita_economica("956");
//dal secondo semestre 2016 i file prodotti dalla FP hanno questo campo non valorizzato
//o valorizzato solo con uno spazio. Per permettere l'inserimento testo il campo
if (!csvLine[12].isEmpty() && csvLine[12].length()>1)
incaricoComunicato.setDt_inizio(new Timestamp(formatter.parse(csvLine[12]).getTime()));
incaricoComunicato.setDt_fine(new Timestamp(formatter.parse(csvLine[13]).getTime()));
if (csvLine[14].toUpperCase().equals("PREVISTO"))
tipoImporto = "1";
else if (csvLine[15].toUpperCase().equals("PRESUNTO"))
tipoImporto = "2";
incaricoComunicato.setImporto_previsto(new BigDecimal(csvLine[15].replace(".", "").replace(",", ".")));
if (!csvLine[16].replace(" ","").equals(""))
importoPagamento = new BigDecimal(csvLine[16].replace(".", "").replace(",", "."));
if (!csvLine[17].replace(" ","").equals(""))
annoPagamento = new Integer(csvLine[17]);
if (!csvLine[18].replace(" ","").equals("")) {
if (csvLine[18].toUpperCase().equals("PRIMO SEMESTRE"))
semestrePagamento = 1;
else if (csvLine[18].toUpperCase().equals("SECONDO SEMESTRE"))
semestrePagamento = 2;
}
if (csvLine[19].toUpperCase().equals("SI"))
incaricoComunicato.setFl_saldo(Boolean.TRUE);
else if (csvLine[19].toUpperCase().equals("NO"))
incaricoComunicato.setFl_saldo(Boolean.FALSE);
if (incaricoComunicato.getIncarichi_repertorio()!=null) {
if (firstIncaricoComunicato!=null && firstIncaricoComunicato.getId_incarico().equals(incaricoComunicato.getId_incarico())) {
if (importoPagamento!=null && annoPagamento!=0 && semestrePagamento!=0) {
Incarichi_comunicati_fp_detBulk incaricoComunicatoDet = new Incarichi_comunicati_fp_detBulk();
incaricoComunicatoDet.setIncarichi_comunicati_fp(firstIncaricoComunicato);
incaricoComunicatoDet.setTipo_record_det(Incarichi_comunicati_fpBulk.TIPO_RECORD_AGGIORNATO);
incaricoComunicatoDet.setAnno_pag(annoPagamento);
incaricoComunicatoDet.setSemestre_pag(semestrePagamento);
incaricoComunicatoDet.setImporto_pag(importoPagamento);
incaricoComunicatoDet.setToBeCreated();
firstIncaricoComunicato.addToIncarichi_comunicati_fp_detColl(incaricoComunicatoDet);
}
} else {
if (nominativo!=null) {
try{
String cognome, nome;
Calendar dtNascita;
if (incaricoComunicato.getIncarichi_repertorio().getCd_terzo().equals(107796)) {
cognome = "RAMONDELLI";
nome = "GIUSEPPE";
dtNascita = new GregorianCalendar(1943,Calendar.DECEMBER,22);
} else {
cognome = incaricoComunicato.getIncarichi_repertorio().getTerzo().getAnagrafico().getCognome();
nome = incaricoComunicato.getIncarichi_repertorio().getTerzo().getAnagrafico().getNome();
dtNascita = new GregorianCalendar(1943,Calendar.DECEMBER,22);
}
if (cognome.toUpperCase().concat(" "+nome.toUpperCase()).equals(nominativo.toUpperCase())) {
incaricoComunicato.setCognome(cognome);
incaricoComunicato.setNome(nome);
incaricoComunicato.setData_nascita(Timestamp.from(dtNascita.toInstant()));
}
} catch (NullPointerException e) {
throw e;
}
}
if (importoPagamento!=null && annoPagamento!=0 && semestrePagamento!=0) {
Incarichi_comunicati_fp_detBulk incaricoComunicatoDet = new Incarichi_comunicati_fp_detBulk();
incaricoComunicatoDet.setIncarichi_comunicati_fp(incaricoComunicato);
incaricoComunicatoDet.setTipo_record_det(Incarichi_comunicati_fpBulk.TIPO_RECORD_AGGIORNATO);
incaricoComunicatoDet.setAnno_pag(annoPagamento);
incaricoComunicatoDet.setSemestre_pag(semestrePagamento);
incaricoComunicatoDet.setImporto_pag(importoPagamento);
incaricoComunicatoDet.setToBeCreated();
incaricoComunicato.addToIncarichi_comunicati_fp_detColl(incaricoComunicatoDet);
}
listIncarichiComunicati.add(incaricoComunicato);
firstIncaricoComunicato = incaricoComunicato;
}
} else {
righeScartate.add(csvLine);
}
}
}
aggiornaIncarichiComunicatiFP(userContext, listIncarichiComunicati);
}
catch(Exception e)
{
System.out.println("Exception while reading csv file: " + e);
throw new ComponentException(e);
}
for (Iterator iterator = righeScartate.iterator(); iterator.hasNext();) {
System.out.println("Riga Esclusa: " + (String[]) iterator.next());
}
}
}
@Override
public OggettoBulk inizializzaBulkPerModifica(UserContext usercontext, OggettoBulk oggettobulk) throws ComponentException {
oggettobulk = super.inizializzaBulkPerModifica(usercontext, oggettobulk);
if (oggettobulk instanceof Incarichi_archivio_xml_fpBulk) {
try{
Incarichi_archivio_xml_fpBulk allegato = (Incarichi_archivio_xml_fpBulk)oggettobulk;
if (!allegato.getFl_perla()) {
JAXBContext jc = JAXBContext.newInstance("it.cnr.contab.incarichi00.xmlfp");
if (allegato.getNome_file_inv()!=null) {
File fileInv = getFile(usercontext, allegato, "BDATA_INV", System.getProperty("tmp.dir.SIGLAWeb")+"/tmp/", allegato.getNome_file_inv());
allegato.setFile_inv(fileInv);
allegato.setComunicazione((Comunicazione)jc.createUnmarshaller().unmarshal(fileInv));
}
if (allegato.getNome_file_ric()!=null) {
File fileRic = getFile(usercontext, allegato, "BDATA_RIC", System.getProperty("tmp.dir.SIGLAWeb")+"/tmp/", allegato.getNome_file_ric());
allegato.setFile_ric(fileRic);
allegato.setEsitoComunicazione((EsitoComunicazione)jc.createUnmarshaller().unmarshal(fileRic));
}
} else {
JAXBContext jc = JAXBContext.newInstance(it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ObjectFactory.class, it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ObjectFactory.class, it.perla.accenture.com.anagrafeprestazioni_cancellazioneincarichi.ObjectFactory.class);
if (allegato.getNome_file_inv()!=null) {
File fileInv = getFile(usercontext, allegato, "BDATA_INV", System.getProperty("tmp.dir.SIGLAWeb")+"/tmp/", allegato.getNome_file_inv());
allegato.setFile_inv(fileInv);
JAXBElement> comunicazione = (JAXBElement>)jc.createUnmarshaller().unmarshal(fileInv);
if (comunicazione.getDeclaredType().equals(it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ComunicazioneType.class))
allegato.setComunicazioneNuovoIncaricoPerla((JAXBElement)jc.createUnmarshaller().unmarshal(fileInv));
else if (comunicazione.getDeclaredType().equals(it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ComunicazioneType.class))
allegato.setComunicazioneModificaIncaricoPerla((JAXBElement)jc.createUnmarshaller().unmarshal(fileInv));
else if (comunicazione.getDeclaredType().equals(it.perla.accenture.com.anagrafeprestazioni_cancellazioneincarichi.ComunicazioneType.class))
allegato.setComunicazioneCancellaIncaricoPerla((JAXBElement)jc.createUnmarshaller().unmarshal(fileInv));
}
if (allegato.getNome_file_ric()!=null) {
File fileRic = getFile(usercontext, allegato, "BDATA_RIC", System.getProperty("tmp.dir.SIGLAWeb")+"/tmp/", allegato.getNome_file_ric());
allegato.setFile_ric(fileRic);
if (!allegato.getFl_merge_perla()) {
JAXBElement> esitoComunicazione = (JAXBElement>)jc.createUnmarshaller().unmarshal(fileRic);
if (esitoComunicazione.getDeclaredType().equals(it.perla.accenture.com.anagrafeprestazioni_inserimentoincarichi.ComunicazioneType.class))
allegato.setEsitoComunicazioneNuovoIncaricoPerla((JAXBElement)jc.createUnmarshaller().unmarshal(fileRic));
else if (esitoComunicazione.getDeclaredType().equals(it.perla.accenture.com.anagrafeprestazioni_variazioneincarichi.ComunicazioneType.class))
allegato.setEsitoComunicazioneModificaIncaricoPerla((JAXBElement)jc.createUnmarshaller().unmarshal(fileRic));
else if (esitoComunicazione.getDeclaredType().equals(it.perla.accenture.com.anagrafeprestazioni_cancellazioneincarichi.ComunicazioneType.class))
allegato.setEsitoComunicazioneCancellaIncaricoPerla((JAXBElement)jc.createUnmarshaller().unmarshal(fileRic));
}
}
}
} catch(JAXBException e){
throw new ComponentException(e);
}
}
return oggettobulk;
}
public File getFile(UserContext usercontext, Incarichi_archivio_xml_fpBulk allegato, String tipoBlob, String pathFile, String nomeFile) throws ComponentException {
try{
Incarichi_archivio_xml_fpHome home = (Incarichi_archivio_xml_fpHome)getHome(usercontext,Incarichi_archivio_xml_fpBulk.class);
File outputBinaryFile = new File(pathFile, nomeFile);
Blob blob = home.getSQLBlob(allegato, tipoBlob);
IOUtils.copyLarge(blob.getBinaryStream(), new FileOutputStream(outputBinaryFile));
return outputBinaryFile;
} catch (PersistencyException|SQLException e) {
throw new ComponentException(e);
} catch (FileNotFoundException e) {
throw new ComponentException(e);
} catch (IOException e) {
throw new ComponentException(e);
}
}
/**
* Ritorna il pagato di un incarico nell'anno e semestre indicato
* @param userContext
* @param incarico_anno
* @param annoPag
* @param semestrePag
* @return
* @throws ComponentException
*/
public List getPagatoPerSemestre(UserContext userContext, Incarichi_repertorioBulk incarico) throws ComponentException
{
List listPagato = new ArrayList();
CompensoHome cHome = (CompensoHome)getHome(userContext, CompensoBulk.class);
Mandato_rigaHome mrHome = (Mandato_rigaHome)getHome(userContext, Mandato_rigaIBulk.class);
Iterator listacomp_incarico;
try {
listacomp_incarico = cHome.findCompensoIncaricoList(userContext,incarico).iterator();
Calendar cal = Calendar.getInstance();
for (Iterator x =listacomp_incarico;x.hasNext();){
CompensoBulk dett =(CompensoBulk)x.next();
SQLBuilder sqlMr = mrHome.createSQLBuilder();
sqlMr.addClause(FindClause.AND, "esercizio_obbligazione", SQLBuilder.EQUALS, dett.getEsercizio_obbligazione());
sqlMr.addClause(FindClause.AND, "pg_obbligazione", SQLBuilder.EQUALS, dett.getPg_obbligazione());
sqlMr.addClause(FindClause.AND, "pg_obbligazione_scadenzario", SQLBuilder.EQUALS, dett.getPg_obbligazione_scadenzario());
sqlMr.addClause(FindClause.AND, "esercizio_ori_obbligazione", SQLBuilder.EQUALS, dett.getEsercizio_ori_obbligazione());
sqlMr.addClause(FindClause.AND, "cd_cds_doc_amm", SQLBuilder.EQUALS, dett.getCd_cds());
sqlMr.addClause(FindClause.AND, "cd_uo_doc_amm", SQLBuilder.EQUALS, dett.getCd_unita_organizzativa());
sqlMr.addClause(FindClause.AND, "esercizio_doc_amm", SQLBuilder.EQUALS, dett.getEsercizio());
sqlMr.addClause(FindClause.AND, "pg_doc_amm", SQLBuilder.EQUALS, dett.getPg_compenso());
List listMr = mrHome.fetchAll(sqlMr);
getHomeCache(userContext).fetchAll(userContext);
Timestamp dataPagamento = null;
for (Iterator iterator = listMr.iterator(); iterator.hasNext();) {
Mandato_rigaBulk mrBulk = (Mandato_rigaBulk) iterator.next();
if (!mrBulk.getMandato().getStato().equals(MandatoBulk.STATO_MANDATO_ANNULLATO) &&
mrBulk.getMandato().getDt_trasmissione()!=null) {
dataPagamento=mrBulk.getMandato().getDt_trasmissione();
break;
}
}
if (dataPagamento!=null) {
cal.setTime(dataPagamento);
boolean trovato=false;
int annoCompenso = cal.get(Calendar.YEAR);
int meseCompenso = cal.get(Calendar.MONTH);
int semestreCompenso;
if (meseCompenso==Calendar.JANUARY || meseCompenso==Calendar.FEBRUARY || meseCompenso==Calendar.MARCH||
meseCompenso==Calendar.APRIL || meseCompenso==Calendar.MAY || meseCompenso==Calendar.JUNE)
semestreCompenso=1;
else
semestreCompenso=2;
for (Iterator iterator = listPagato.iterator(); iterator.hasNext();) {
Incarichi_comunicati_fp_detBulk pagato = iterator.next();
if (annoCompenso==pagato.getAnno_pag().intValue() && semestreCompenso==pagato.getSemestre_pag().intValue()) {
pagato.setImporto_pag(pagato.getImporto_pag().add(dett.getIm_lordo_percipiente()));
trovato=true;
break;
}
}
if (!trovato){
Incarichi_comunicati_fp_detBulk pagato = new Incarichi_comunicati_fp_detBulk();
pagato.setAnno_pag(annoCompenso);
pagato.setSemestre_pag(semestreCompenso);
pagato.setImporto_pag(dett.getIm_lordo_percipiente());
listPagato.add(pagato);
}
}
}
} catch (it.cnr.jada.persistency.PersistencyException e) {
throw handleException(e);
} catch (it.cnr.jada.persistency.IntrospectionException e) {
throw handleException(e);
}
return listPagato;
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy