use of it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk in project sigla-main by consiglionazionaledellericerche.
the class MandatoComponent method annullaMandato.
/**
* annullamento mandato e collegati PreCondition: E' stata generata la
* richiesta di annullare un Mandato E' stato richiesto l'annullamento dei
* doc. contabili collegati PostCondition: Viene impostata la data di
* annullamento del mandato con la data odierna e lo stato del mandato
* diventa ANNULLATO. Viene impostato lo stato ANNULLATO su tutte le righe
* del mandato. Per ogni riga inoltre viene aggiornato l'importo associato a
* doc.contabili della scadenza di obbligazione legata alla riga (metodo
* aggiornaImportoObbligazione), viene aggiornato lo stato del documento
* amministrativo legato alla riga (metodo aggiornaStatoFattura). Vengono
* aggiornati i saldi dei capitoli (metodo aggiornaCapitoloSaldoRiga). Per
* ogni associzione sospeso-mandato, viene aggiornato l'importo associato
* del sospeso (metodo annullaImportoSospesi). Se il mandato ha associate
* reversali o altri mandati viene eseguito il loro annullamento (metodo
* 'annullaDocContabiliCollegati') annullamento mandato PreCondition: E'
* stata generata la richiesta di annullare un Mandato Non e' necessario
* procedere all'annullamento dei doc. contabili collegati PostCondition:
* Viene impostata la data di annullamento del mandato con la data odierna e
* lo stato del mandato diventa ANNULLATO. Viene impostato lo stato
* ANNULLATO su tutte le righe del mandato. Per ogni riga inoltre viene
* aggiornato l'importo associato a doc.contabili della scadenza di
* obbligazione legata alla riga (metodo aggiornaImportoObbligazione), viene
* aggiornato lo stato del documento amministrativo legato alla riga (metodo
* aggiornaStatoFattura). Vengono aggiornati i saldi dei capitoli (metodo
* aggiornaCapitoloSaldoRiga). Per ogni associzione sospeso-mandato, viene
* aggiornato l'importo associato del sospeso (metodo
* annullaImportoSospesi). Se il mandato ha associate reversali o altri
* mandati NON viene eseguito il loro annullamento annullamento mandato di
* regolarizzazione PreCondition: E' stata generata la richiesta di
* annullare un Mandato di regolarizzazione PostCondition: Oltre alle
* PostCondition dell'annullamento di un mandato normale, viene anche
* annullati sia la reversale di regolarizzazione associata al mandato che
* il documento amministrativo generico di entrata creato dal sistema
* (metodo annullaReversaleRegolarizzazione) annullamento mandato di
* trasferimento PreCondition: E' stata generata la richiesta di annullare
* un Mandato di trasferimento PostCondition: Oltre alle PostCondition
* dell'annullamento di un mandato normale, viene anche annullato il
* documento amm. generico creato in automatico alla creazione del mandato
* (metodo annullaDocumentoGenerico) e viene annullata sia la reversale di
* trasferimento associata al mandato che il relativo documento generico di
* entrata (metodo annullaReversaleTrasferimento) errore riscontri associati
* PreCondition: E' stata generata la richiesta di annullare un Mandato che
* ha riscontri associati PostCondition: Una segnalazione di errore comunica
* all'utente l'impossibilità di eseguire l'annullamento annullamento
* mandato su anticipo associato a missione PreCondition: E' stata generata
* la richiesta di annullare un Mandato Il mandato non supera la validazione
* effettuata dal metodo 'verificaMandatoSuAnticipo' in quanto include un
* anticipo associato a missione PostCondition: Una segnalazione di errore
* comunica all'utente l'impossibilità di eseguire l'annullamento
* annullamento mandato di compenso su riscontro PreCondition: E' stata
* generata la richiesta di annullare un Mandato Il mandato si riferisce a
* compensi inclusi in conguagli PostCondition: Una segnalazione richiede
* all'utente se intende comunque proseguire all'annullamento del mandato
*
* @param userContext lo <code>UserContext</code> che ha generato la richiesta
* @param mandato <code>MandatoBulk</code> il mandato da annullare
* @param p il parametro che indica se il controllo sul compenso e'
* necessario
* @param annullaCollegati valore booleano che indica se procedere o meno con
* l'annullamento dei doc. contabili collegati al mandato
* @return mandato <code>MandatoBulk</code> il Mandato annullato
*/
public MandatoBulk annullaMandato(UserContext userContext, MandatoBulk mandato, CompensoOptionRequestParameter p, boolean annullaCollegati, boolean riemissione) throws ComponentException {
try {
if (mandato.isAnnullato())
throw new ApplicationException("Il mandato e' già stato annullato");
verificaStatoEsercizio(userContext, mandato.getEsercizio(), mandato.getCd_cds());
BigDecimal totdettagli = ((Sospeso_det_uscHome) getHome(userContext, Sospeso_det_uscBulk.class)).calcolaTotDettagli(new V_mandato_reversaleBulk(mandato.getEsercizio(), mandato.getCd_tipo_documento_cont(), mandato.getCd_cds(), mandato.getPg_mandato()));
if (totdettagli.compareTo(new BigDecimal(0)) > 0 && Optional.ofNullable(mandato.getStatoVarSos()).map(s -> !s.equalsIgnoreCase(StatoVariazioneSostituzione.ANNULLATO_PER_SOSTITUZIONE.value())).orElse(Boolean.TRUE))
throw new ApplicationException("Annullamento impossibile! Il mandato e' già stato associato ad un riscontro");
Sospeso_det_uscBulk sdu;
for (Iterator i = mandato.getSospeso_det_uscColl().iterator(); i.hasNext(); ) {
sdu = (Sospeso_det_uscBulk) i.next();
if (sdu.isToBeCreated() || sdu.isToBeUpdated() || sdu.isToBeDeleted())
throw new ApplicationException("Annullamento impossibile! Sono state fatte delle modifiche ai sospesi che devono essere ancora salvate");
}
if (MandatoBulk.TIPO_REGOLARIZZAZIONE.equals(mandato.getTi_mandato())) {
if (mandato instanceof MandatoIBulk) {
Var_bilancioBulk varBilancio = ((Var_bilancioHome) getHome(userContext, Var_bilancioBulk.class)).findByMandato(mandato);
if (varBilancio != null)
throw new ApplicationException("Annullamento impossibile! Esiste una variazione di bilancio Ente associata al mandato di regolarizzazione");
}
}
verificaMandatoSuAnticipo(userContext, mandato);
checkAnnullabilita(userContext, mandato);
if (isMandatoCollegatoAnnullodaRiemettere(userContext, mandato).booleanValue())
throw new ApplicationException("Annullamento impossibile! Esiste un mandato annullato associato al mandato.");
if (isAnnullabile(userContext, mandato).compareTo("N") == 0)
throw new ApplicationException("Verificare lo stato di trasmissione del mandato. Annullamento impossibile!");
lockBulk(userContext, mandato);
// modifica 16/01/2017 messa sempre o sysdate o 31/12
mandato.setDt_annullamento(DateServices.getTs_valido(userContext));
if (mandato.getStato_coge().equals(MandatoBulk.STATO_COGE_C))
mandato.setStato_coge(MandatoBulk.STATO_COGE_R);
if (!MandatoBulk.TIPO_REGOLARIZZAZIONE.equals(mandato.getTi_mandato())) {
mandato.setFl_riemissione(riemissione);
mandato.setStato_trasmissione_annullo(MandatoIBulk.STATO_TRASMISSIONE_NON_INSERITO);
}
mandato.annulla();
annullaImportoSospesi(userContext, mandato);
Mandato_rigaBulk riga;
SaldoComponentSession session = createSaldoComponentSession();
for (Iterator i = mandato.getMandato_rigaColl().iterator(); i.hasNext(); ) {
riga = (Mandato_rigaBulk) i.next();
riga.annulla();
aggiornaCapitoloSaldoRiga(userContext, riga, session);
}
aggiornaImportoObbligazioni(userContext, mandato);
makeBulkPersistent(userContext, mandato);
aggiornaStatoFattura(userContext, mandato, ANNULLAMENTO_MANDATO_ACTION);
if (mandato.getTi_mandato().equals(MandatoBulk.TIPO_ACCREDITAMENTO) && mandato.getReversaliColl().size() > 0) {
annullaDocumentoGenerico(userContext, mandato);
annullaReversaleDiTrasferimento(userContext, mandato);
} else if (mandato.getTi_mandato().equals(MandatoBulk.TIPO_REGOLARIZZAZIONE) && mandato.getReversaliColl().size() > 0) {
aggiornaSaldoPagato(userContext, mandato, ANNULLAMENTO_MANDATO_ACTION);
annullaReversaleDiRegolarizzazione(userContext, mandato);
} else if (mandato.getDoc_contabili_collColl().size() > 0 && ((MandatoIBulk) mandato).hasFattura_passiva()) {
/**
* Nel caso di annullamento per sostituzione non annullo le reversali collegate
*/
if (Optional.ofNullable(mandato.getStatoVarSos()).map(s -> !s.equalsIgnoreCase(StatoVariazioneSostituzione.ANNULLATO_PER_SOSTITUZIONE.value())).orElse(Boolean.TRUE)) {
annullaReversaleDiIncassoIVA(userContext, (MandatoIBulk) mandato);
}
} else if (annullaCollegati) {
annullaDocContabiliCollegati(userContext, mandato);
}
return mandato;
} catch (Exception e) {
throw handleException(mandato, e);
}
}
use of it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk in project sigla-main by consiglionazionaledellericerche.
the class DistintaCassiereComponent method aggiungiMandatiEReversaliCollegati.
/**
* Nome: Aggiungi mandati reversali collegati Pre: E' stata generata la
* richiesta di inserire in distinta un mandato/reversale Post: Per ogni
* mandato/reversale dipendente da quello da inserire in distinta viene
* creato automaticamente un altro dettaglio distinta e lo stato di tale
* doc.contabile viene aggiornato a INSERITO IN DISTINTA ( metodo
* 'inserisciDettaglioDistinta')
*
* @param userContext lo UserContext che ha generato la richiesta
* @param distinta la Distinta_cassiereBulk in cui inserire i doc. contabili
* collegati
* @param docContabilePadre il V_mandato_reversaleBulk per cui ricercare i doc. contabili
* dièpendenti
* @param last_pg_dettaglio , il progressivo dell'ultimo dettaglio inserito in distinta
* @return il progressivo aggiornato dell'ultimo dettaglio inserito in
* distinta
*/
protected Long aggiungiMandatiEReversaliCollegati(UserContext userContext, Distinta_cassiereBulk distinta, V_mandato_reversaleBulk docContabilePadre, Long last_pg_dettaglio) throws PersistencyException, ComponentException {
/*
* aggiungo in automatico i mandati già trasmessi e successivamente
* annullati
*/
Collection docContabili = ((V_mandato_reversaleHome) getHome(userContext, V_mandato_reversaleBulk.class)).findDocContabiliCollegati(docContabilePadre);
V_mandato_reversaleBulk docContabile;
if (Optional.ofNullable(docContabilePadre.getStatoVarSos()).map(s -> !Arrays.asList(StatoVariazioneSostituzione.ANNULLATO_PER_SOSTITUZIONE.value(), StatoVariazioneSostituzione.SOSTITUZIONE_DEFINITIVA.value()).contains(s)).orElse(Boolean.TRUE)) {
for (Iterator i = docContabili.iterator(); i.hasNext(); ) {
docContabile = (V_mandato_reversaleBulk) i.next();
last_pg_dettaglio = inserisciDettaglioDistinta(userContext, distinta, docContabile, last_pg_dettaglio);
inserisciDettaglioDistinteCollegate(userContext, distinta, docContabile);
}
}
return last_pg_dettaglio;
}
use of it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk in project sigla-main by consiglionazionaledellericerche.
the class DistintaCassiereComponent method creaReversaleFlussoSiopeplus.
private it.siopeplus.Reversale creaReversaleFlussoSiopeplus(UserContext userContext, V_mandato_reversaleBulk bulk) throws ComponentException, RemoteException, BusinessProcessException {
try {
final ObjectFactory objectFactory = new ObjectFactory();
it.siopeplus.Reversale reversale = objectFactory.createReversale();
List list = findDocumentiFlusso(userContext, bulk);
reversale.setTipoOperazione(getTipoOperazione(userContext, bulk));
GregorianCalendar gcdi = new GregorianCalendar();
it.cnr.contab.doccont00.intcass.bulk.VDocumentiFlussoBulk docContabile = null;
for (Iterator i = list.iterator(); i.hasNext(); ) {
it.siopeplus.Reversale.InformazioniVersante infover = objectFactory.createReversaleInformazioniVersante();
docContabile = (it.cnr.contab.doccont00.intcass.bulk.VDocumentiFlussoBulk) i.next();
reversale.setNumeroReversale(docContabile.getPgDocumento().intValue());
gcdi.setTime(docContabile.getDtEmissione());
XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar(gcdi);
xgc.setMillisecond(DatatypeConstants.FIELD_UNDEFINED);
xgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
xgc.setSecond(DatatypeConstants.FIELD_UNDEFINED);
xgc.setMinute(DatatypeConstants.FIELD_UNDEFINED);
xgc.setHour(DatatypeConstants.FIELD_UNDEFINED);
reversale.setDataReversale(xgc);
reversale.setImportoReversale(docContabile.getImDocumento().setScale(2, BigDecimal.ROUND_HALF_UP));
// Dovrebbe essere sempre 1 ?
infover.setProgressivoVersante(1);
infover.setImportoVersante(docContabile.getImDocumento().setScale(2, BigDecimal.ROUND_HALF_UP));
final String modalitaPagamento = docContabile.getModalitaPagamento();
final Rif_modalita_pagamentoBulk rif_modalita_pagamentoBulk = Optional.ofNullable(findByPrimaryKey(userContext, new Rif_modalita_pagamentoBulk(modalitaPagamento))).filter(Rif_modalita_pagamentoBulk.class::isInstance).map(Rif_modalita_pagamentoBulk.class::cast).orElseThrow(() -> new ApplicationMessageFormatException("Modalità di pagamento non trovata: {0}", modalitaPagamento));
if (docContabile.getTiDocumento().compareTo(ReversaleBulk.TIPO_REGOLAM_SOSPESO) == 0) {
if (Optional.ofNullable(bulk.getTi_cc_bi()).filter(s -> s.equals("B")).isPresent() && Optional.ofNullable(rif_modalita_pagamentoBulk.getTi_pagamento()).filter(s -> s.equals(Rif_modalita_pagamentoBulk.BANCA_ITALIA)).isPresent()) {
infover.setTipoRiscossione(REGOLARIZZAZIONE_ACCREDITO_BANCA_D_ITALIA);
} else {
infover.setTipoRiscossione(REGOLARIZZAZIONE);
}
} else if (docContabile.getTiDocumento().compareTo(ReversaleBulk.TIPO_INCASSO) == 0) {
if (!bulk.getPg_documento_cont_padre().equals(bulk.getPg_documento_cont())) {
infover.setTipoRiscossione(COMPENSAZIONE);
} else {
infover.setTipoRiscossione(CASSA);
}
} else if (!bulk.getPg_documento_cont_padre().equals(bulk.getPg_documento_cont())) {
infover.setTipoRiscossione(COMPENSAZIONE);
}
// Classificazioni
infover.setTipoEntrata(INFRUTTIFERO);
infover.setDestinazione(LIBERA);
List listClass = findDocumentiFlussoClassReversali(userContext, bulk);
VDocumentiFlussoBulk oldDoc = null;
for (Iterator c = listClass.iterator(); c.hasNext(); ) {
VDocumentiFlussoBulk doc = (VDocumentiFlussoBulk) c.next();
if (doc.getCdSiope() != null && oldDoc != null && oldDoc.getCdSiope() != null) {
if ((oldDoc.getCdSiope().compareTo(doc.getCdSiope()) != 0) || (oldDoc.getCdTipoDocumentoAmm() != null && oldDoc.getCdTipoDocumentoAmm().compareTo(doc.getCdTipoDocumentoAmm()) != 0) || (oldDoc.getPgDocAmm() != null && oldDoc.getPgDocAmm().compareTo(doc.getPgDocAmm()) != 0)) {
it.siopeplus.Reversale.InformazioniVersante.Classificazione clas = objectFactory.createReversaleInformazioniVersanteClassificazione();
clas.setCodiceCge(doc.getCdSiope());
clas.setImporto(doc.getImportoCge().setScale(2, BigDecimal.ROUND_HALF_UP));
CtClassificazioneDatiSiopeEntrate ctClassificazioneDatiSiopeEntrate = objectFactory.createCtClassificazioneDatiSiopeEntrate();
ctClassificazioneDatiSiopeEntrate.getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateTipoDebitoSiopeNc(StTipoDebitoNonCommerciale.NON_COMMERCIALE));
clas.setClassificazioneDatiSiopeEntrate(ctClassificazioneDatiSiopeEntrate);
infover.getClassificazione().add(clas);
oldDoc = doc;
}
} else if (doc.getCdSiope() != null) {
it.siopeplus.Reversale.InformazioniVersante.Classificazione clas = objectFactory.createReversaleInformazioniVersanteClassificazione();
clas.setCodiceCge(doc.getCdSiope());
clas.setImporto(doc.getImportoCge().setScale(2, BigDecimal.ROUND_HALF_UP));
CtClassificazioneDatiSiopeEntrate ctClassificazioneDatiSiopeEntrate = objectFactory.createCtClassificazioneDatiSiopeEntrate();
ctClassificazioneDatiSiopeEntrate.getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateTipoDebitoSiopeNc(StTipoDebitoNonCommerciale.NON_COMMERCIALE));
clas.setClassificazioneDatiSiopeEntrate(ctClassificazioneDatiSiopeEntrate);
infover.getClassificazione().add(clas);
oldDoc = doc;
}
if (infover.getCausale() != null && doc.getCdCup() != null) {
if (!infover.getCausale().contains(doc.getCdCup()))
infover.setCausale(infover.getCausale() + "-" + doc.getCdCup());
} else if (doc.getCdCup() != null) {
infover.setCausale("CUP " + doc.getCdCup());
}
}
// Fine classificazioni
it.siopeplus.Reversale.InformazioniVersante.Bollo bollo = objectFactory.createReversaleInformazioniVersanteBollo();
bollo.setAssoggettamentoBollo(docContabile.getAssoggettamentoBollo());
bollo.setCausaleEsenzioneBollo(docContabile.getCausaleBollo());
infover.setBollo(bollo);
it.siopeplus.Versante versante = objectFactory.createVersante();
versante.setAnagraficaVersante(RemoveAccent.convert(docContabile.getDenominazioneSede()).replace('"', ' ').replace('\u00b0', ' '));
infover.setVersante(versante);
// gestito inserimento cup nella CAUSALE
if (infover.getCausale() != null && (infover.getCausale() + docContabile.getDsDocumento()).length() > MAX_LENGTH_CAUSALE)
infover.setCausale((infover.getCausale() + " " + docContabile.getDsDocumento()).substring(0, MAX_LENGTH_CAUSALE - 1));
else if (infover.getCausale() != null)
infover.setCausale(infover.getCausale() + " " + docContabile.getDsDocumento());
else if (docContabile.getDsDocumento().length() > MAX_LENGTH_CAUSALE)
infover.setCausale(docContabile.getDsDocumento().substring(0, MAX_LENGTH_CAUSALE - 1));
else
infover.setCausale(docContabile.getDsDocumento());
infover.setCausale(RemoveAccent.convert(infover.getCausale()).replace('"', ' ').replace('\u00b0', ' '));
// SOSPESO
if (docContabile.getTiDocumento().compareTo(ReversaleBulk.TIPO_REGOLAM_SOSPESO) == 0) {
List listSosp = findDocumentiFlussoSospeso(userContext, bulk);
for (Iterator c = listSosp.iterator(); c.hasNext(); ) {
boolean sospesoTrovato = false;
VDocumentiFlussoBulk doc = (VDocumentiFlussoBulk) c.next();
if (doc.getCdSospeso() != null) {
if (Optional.ofNullable(doc.getCdSospeso()).isPresent() && isSospesoFromAccreditamento(userContext, doc)) {
final V_mandato_reversaleBulk mandatoReversale = findMandatoReversale(userContext, findSospeso(userContext, doc).get().getMandatoRiaccredito());
final CtClassificazioneDatiSiopeUscite classificazioneDatiSiope = getClassificazioneDatiSiope(userContext, objectFactory, mandatoReversale, null);
final Optional<Reversale.InformazioniVersante.Classificazione> any = infover.getClassificazione().stream().findAny();
final Optional<StTipoDebitoCommerciale> stTipoDebitoCommerciale = classificazioneDatiSiope.getTipoDebitoSiopeNcAndCodiceCigSiopeOrMotivoEsclusioneCigSiope().stream().filter(StTipoDebitoCommerciale.class::isInstance).map(StTipoDebitoCommerciale.class::cast).findAny();
final Optional<StTipoDebitoNonCommerciale> stTipoDebitoNonCommerciale = classificazioneDatiSiope.getTipoDebitoSiopeNcAndCodiceCigSiopeOrMotivoEsclusioneCigSiope().stream().filter(StTipoDebitoNonCommerciale.class::isInstance).map(StTipoDebitoNonCommerciale.class::cast).findAny();
final Optional<CtFatturaSiope> ctFatturaSiope = classificazioneDatiSiope.getTipoDebitoSiopeNcAndCodiceCigSiopeOrMotivoEsclusioneCigSiope().stream().filter(CtFatturaSiope.class::isInstance).map(CtFatturaSiope.class::cast).findAny();
if (any.isPresent()) {
final Reversale.InformazioniVersante.Classificazione classificazione = any.get();
classificazione.getClassificazioneDatiSiopeEntrate().getContent().clear();
if (stTipoDebitoCommerciale.isPresent())
classificazione.getClassificazioneDatiSiopeEntrate().getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateTipoDebitoSiopeC(stTipoDebitoCommerciale.get()));
if (stTipoDebitoNonCommerciale.isPresent())
classificazione.getClassificazioneDatiSiopeEntrate().getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateTipoDebitoSiopeNc(stTipoDebitoNonCommerciale.get()));
if (ctFatturaSiope.isPresent()) {
CtFatturaSiope ctFatturaSiope1 = ctFatturaSiope.get();
ctFatturaSiope1.getDatiFatturaSiope().setImportoSiope(classificazione.getImporto());
classificazione.getClassificazioneDatiSiopeEntrate().getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateFatturaSiope(ctFatturaSiope1));
}
}
}
for (Iterator it = infover.getSospeso().iterator(); it.hasNext(); ) {
it.siopeplus.Reversale.InformazioniVersante.Sospeso presente = (it.siopeplus.Reversale.InformazioniVersante.Sospeso) it.next();
Long l = new Long(doc.getCdSospeso().substring(0, doc.getCdSospeso().indexOf(".")).replace(" ", "")).longValue();
if (l.compareTo(presente.getNumeroProvvisorio()) == 0) {
presente.setImportoProvvisorio(presente.getImportoProvvisorio().add(doc.getImAssociato()));
sospesoTrovato = true;
break;
}
}
if (!sospesoTrovato) {
it.siopeplus.Reversale.InformazioniVersante.Sospeso sosp = objectFactory.createReversaleInformazioniVersanteSospeso();
try {
sosp.setNumeroProvvisorio(new Long(doc.getCdSospeso().substring(0, doc.getCdSospeso().indexOf(".")).replace(" ", "")).longValue());
} catch (NumberFormatException e) {
throw new ApplicationException("Formato del codice del sospeso non compatibile.");
}
sosp.setImportoProvvisorio(doc.getImAssociato().setScale(2, BigDecimal.ROUND_HALF_UP));
infover.getSospeso().add(sosp);
}
}
}
}
reversale.getInformazioniVersante().add(infover);
}
return reversale;
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk in project sigla-main by consiglionazionaledellericerche.
the class DistintaCassiereComponent method generaFlussoSiopeplus.
public StorageObject generaFlussoSiopeplus(UserContext userContext, Distinta_cassiereBulk distinta) throws ComponentException, RemoteException {
try {
final DocumentiContabiliService documentiContabiliService = SpringUtil.getBean("documentiContabiliService", DocumentiContabiliService.class);
DateTimeFormatter formatterTime = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
JAXBContext jc = JAXBContext.newInstance("it.siopeplus");
// creo i file del flusso
// Testata
final ObjectFactory objectFactory = new ObjectFactory();
it.siopeplus.FlussoOrdinativi currentFlusso = objectFactory.createFlussoOrdinativi();
Configurazione_cnrComponentSession sess = (Configurazione_cnrComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRCONFIG00_EJB_Configurazione_cnrComponentSession");
String codiceAbi = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_ABI_BT)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_ABI_BT]"));
String codiceA2A = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_A2A)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_A2A]"));
String codiceEnte = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_ENTE)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_ENTE]"));
String codiceEnteBT = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_ENTE_BT)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_ENTE_BT]"));
String codiceTramiteBT = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_TRAMITE_BT)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_TRAMITE_BT]"));
String codiceIstatEnte = Optional.ofNullable(sess.getVal01(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI, Configurazione_cnrBulk.SK_CODICE_ISTAT_ENTE)).orElseThrow(() -> new ApplicationException("Configurazione mancante per flusso Ordinativo [CODICE_ISTAT_ENTE]"));
final CtTestataFlusso testataFlusso = objectFactory.createCtTestataFlusso();
testataFlusso.setCodiceABIBT(codiceAbi);
testataFlusso.setRiferimentoEnte(codiceA2A);
testataFlusso.setIdentificativoFlusso(distinta.getIdentificativoFlusso());
testataFlusso.setDataOraCreazioneFlusso(DatatypeFactory.newInstance().newXMLGregorianCalendar(formatterTime.format(it.cnr.jada.util.ejb.EJBCommonServices.getServerTimestamp().toLocalDateTime())));
testataFlusso.setCodiceEnte(codiceEnte);
testataFlusso.setCodiceEnteBT(codiceEnteBT);
testataFlusso.setCodiceTramiteEnte(codiceA2A);
testataFlusso.setCodiceTramiteBT(codiceTramiteBT);
AnagraficoComponentSession component = (AnagraficoComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRANAGRAF00_EJB_AnagraficoComponentSession");
AnagraficoBulk uoEnte = component.getAnagraficoEnte(userContext);
testataFlusso.setDescrizioneEnte(uoEnte.getRagione_sociale());
testataFlusso.setCodiceIstatEnte(codiceIstatEnte);
testataFlusso.setCodiceFiscaleEnte(uoEnte.getCodice_fiscale());
currentFlusso.getContent().add(objectFactory.createTestataFlusso(testataFlusso));
currentFlusso.getContent().add(objectFactory.createEsercizio(CNRUserContext.getEsercizio(userContext)));
List dettagliRev = dettagliDistinta(userContext, distinta, it.cnr.contab.doccont00.core.bulk.Numerazione_doc_contBulk.TIPO_REV);
// Elaboriamo prima le reversali
Reversale currentReversale = null;
for (Iterator i = dettagliRev.iterator(); i.hasNext(); ) {
V_mandato_reversaleBulk bulk = (V_mandato_reversaleBulk) i.next();
currentFlusso.getContent().add(objectFactory.createReversale(creaReversaleFlussoSiopeplus(userContext, bulk)));
}
List dettagliMan = dettagliDistinta(userContext, distinta, it.cnr.contab.doccont00.core.bulk.Numerazione_doc_contBulk.TIPO_MAN);
// Mandati
Mandato currentMandato = null;
for (Iterator i = dettagliMan.iterator(); i.hasNext(); ) {
V_mandato_reversaleBulk bulk = (V_mandato_reversaleBulk) i.next();
currentFlusso.getContent().add(objectFactory.createMandato(creaMandatoFlussoSiopeplus(userContext, bulk)));
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Marshaller jaxbMarshaller = jc.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
jaxbMarshaller.marshal(currentFlusso, byteArrayOutputStream);
// FIX per firma xml
String out = new String(byteArrayOutputStream.toByteArray(), StandardCharsets.UTF_8);
out = out.replace("</flusso_ordinativi>", "\n</flusso_ordinativi>");
StorageFile storageFile = new StorageFile(out.getBytes(StandardCharsets.UTF_8), MimeTypes.XML.mimetype(), distinta.getFileNameXML());
final StorageObject storageObject = documentiContabiliService.getStorageObjectBykey(documentiContabiliService.restoreSimpleDocument(storageFile, new ByteArrayInputStream(storageFile.getBytes()), storageFile.getContentType(), storageFile.getFileName(), distinta.getStorePath(), true).getKey());
final BigInteger dimension = storageObject.<BigInteger>getPropertyValue(StoragePropertyNames.CONTENT_STREAM_LENGTH.value()).divide(BigInteger.valueOf(1024));
if (dimension.add(BigInteger.valueOf(7)).compareTo(DistintaCassiereComponentSession.MAX_OPI_DIMENSION) > 0) {
throw new ApplicationMessageFormatException("La dimensione del flusso {0}kbytes supera la dimensione massima consentita {1}kbytes!", dimension.add(BigInteger.valueOf(7)), DistintaCassiereComponentSession.MAX_OPI_DIMENSION);
}
return storageObject;
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.contab.doccont00.intcass.bulk.V_mandato_reversaleBulk in project sigla-main by consiglionazionaledellericerche.
the class CRUDDistintaCassiereBP method scaricaDocumento.
public void scaricaDocumento(ActionContext actioncontext) throws Exception {
Integer esercizio = Integer.valueOf(((HttpActionContext) actioncontext).getParameter("esercizio"));
String cds = ((HttpActionContext) actioncontext).getParameter("cds");
Long numero_documento = Long.valueOf(((HttpActionContext) actioncontext).getParameter("numero_documento"));
String tipo = ((HttpActionContext) actioncontext).getParameter("tipo");
InputStream is = documentiContabiliService.getStreamDocumento((StatoTrasmissione) getComponentSession().findByPrimaryKey(actioncontext.getUserContext(), new V_mandato_reversaleBulk(esercizio, tipo, cds, numero_documento)));
if (is != null) {
((HttpActionContext) actioncontext).getResponse().setContentType("application/pdf");
OutputStream os = ((HttpActionContext) actioncontext).getResponse().getOutputStream();
((HttpActionContext) actioncontext).getResponse().setDateHeader("Expires", 0);
byte[] buffer = new byte[((HttpActionContext) actioncontext).getResponse().getBufferSize()];
int buflength;
while ((buflength = is.read(buffer)) > 0) {
os.write(buffer, 0, buflength);
}
is.close();
os.flush();
}
}
Aggregations