use of it.cnr.jada.persistency.PersistencyException in project sigla-main by consiglionazionaledellericerche.
the class ScritturaPartitaDoppiaComponent method proposeScritturaPartitaDoppiaMandatoStipendi.
private Scrittura_partita_doppiaBulk proposeScritturaPartitaDoppiaMandatoStipendi(UserContext userContext, MandatoBulk mandato) throws ComponentException, PersistencyException, RemoteException {
// recupero il documento generico passivo leggendolo dalla tabelle stipendiCofiBulk
Stipendi_cofiBulk stipendiCofiBulk = ((Stipendi_cofiHome) getHome(userContext, Stipendi_cofiBulk.class)).findStipendiCofi(mandato);
if (!Optional.ofNullable(stipendiCofiBulk).isPresent())
throw new ApplicationException("Il mandato " + mandato.getEsercizio() + "/" + mandato.getCds() + "/" + mandato.getPg_mandato() + " non risulta pagare uno stipendio. Proposta di prima nota non possibile.");
CompensoBulk compensoStipendi = (CompensoBulk) Utility.createCompensoComponentSession().inizializzaBulkPerModifica(userContext, new CompensoBulk(stipendiCofiBulk.getCd_cds_comp(), stipendiCofiBulk.getCd_uo_comp(), stipendiCofiBulk.getEsercizio_comp(), stipendiCofiBulk.getPg_comp()));
// Recupero dal compenso tutti i conti patrimoniali aperti
List<Movimento_cogeBulk> dettPnPatrimonialePartita = this.findContoAnag(userContext, compensoStipendi);
if (dettPnPatrimonialePartita == null || dettPnPatrimonialePartita.isEmpty())
throw new ApplicationException("Non รจ stato possibile individuare la riga di tipo debito/credito per il compenso " + stipendiCofiBulk.getEsercizio_comp() + "/" + stipendiCofiBulk.getCd_cds_comp() + "/" + stipendiCofiBulk.getCd_uo_comp() + "/" + stipendiCofiBulk.getPg_comp() + ". Proposta di prima nota non possibile.");
TestataPrimaNota testataPrimaNota = new TestataPrimaNota(mandato.getMandato_terzo().getCd_terzo(), null, null);
// Chiudo i conti patrimoniali
Voce_epBulk voceEpBanca = this.findContoBanca(userContext, CNRUserContext.getEsercizio(userContext));
for (Iterator<Movimento_cogeBulk> i = dettPnPatrimonialePartita.iterator(); i.hasNext(); ) {
Movimento_cogeBulk dettPN = i.next();
testataPrimaNota.addDettaglio(compensoStipendi.getTipoDocumentoEnum().getTipoPatrimoniale(), Movimento_cogeBulk.getControSezione(compensoStipendi.getTipoDocumentoEnum().getSezionePatrimoniale()), dettPN.getCd_voce_ep(), dettPN.getIm_movimento());
testataPrimaNota.addDettaglio(Movimento_cogeBulk.TipoRiga.TESORERIA.value(), compensoStipendi.getTipoDocumentoEnum().getSezionePatrimoniale(), voceEpBanca.getCd_voce_ep(), dettPN.getIm_movimento());
}
// Devo leggere la reversale vincolata
List<Contributo_ritenutaBulk> righeCori = compensoStipendi.getChildren();
BigDecimal imRitenute = righeCori.stream().map(Contributo_ritenutaBulk::getAmmontare).reduce(BigDecimal.ZERO, BigDecimal::add);
if (imRitenute.compareTo(mandato.getIm_ritenute()) != 0)
throw new ApplicationException("L'importo delle righe ritenute del compenso associato al mandato non corrisponde con l'importo ritenute associato al mandato.");
// Registrazione conto CONTRIBUTI-RITENUTE
righeCori.stream().forEach(cori -> {
try {
BigDecimal imCori = cori.getAmmontare();
Pair<Voce_epBulk, Voce_epBulk> pairContoCori = this.findPairContiMandato(userContext, cori);
Voce_epBulk contoVersamentoCori = pairContoCori.getSecond();
testataPrimaNota.openDettaglioPatrimoniale(compensoStipendi, contoVersamentoCori.getCd_voce_ep(), imCori, false);
testataPrimaNota.addDettaglio(Movimento_cogeBulk.TipoRiga.TESORERIA.value(), Movimento_cogeBulk.getControSezione(compensoStipendi.getTipoDocumentoEnum().getSezionePatrimoniale()), voceEpBanca.getCd_voce_ep(), imCori);
} catch (ComponentException | PersistencyException e) {
throw new ApplicationRuntimeException(e);
}
});
return this.generaScrittura(userContext, mandato, Arrays.asList(testataPrimaNota), true);
}
use of it.cnr.jada.persistency.PersistencyException in project sigla-main by consiglionazionaledellericerche.
the class ScritturaPartitaDoppiaComponent method getCORI.
private List<Contributo_ritenutaBulk> getCORI(UserContext userContext, Mandato_rigaBulk mandatoRiga) throws PersistencyException, ComponentException {
Documento_generico_rigaHome dgHome = (Documento_generico_rigaHome) getHome(userContext, Documento_generico_rigaBulk.class);
Ass_obb_acr_pgiroHome assObbAccHome = (Ass_obb_acr_pgiroHome) getHome(userContext, Ass_obb_acr_pgiroBulk.class);
Contributo_ritenutaHome coriHome = (Contributo_ritenutaHome) getHome(userContext, Contributo_ritenutaBulk.class);
List<Contributo_ritenutaBulk> coriList = new ArrayList<>();
Documento_generico_rigaBulk docRiga = (Documento_generico_rigaBulk) dgHome.findByPrimaryKey(new Documento_generico_rigaBulk(mandatoRiga.getEsercizio_doc_amm().toString(), mandatoRiga.getCd_tipo_documento_amm(), mandatoRiga.getCd_uo_doc_amm(), mandatoRiga.getEsercizio_doc_amm(), mandatoRiga.getPg_doc_amm(), BigDecimal.ONE.longValue()));
if (docRiga.getPg_obbligazione() != null) {
List<Ass_obb_acr_pgiroBulk> assObbAccList = (List<Ass_obb_acr_pgiroBulk>) assObbAccHome.findPgiroMandatoRiga(userContext, mandatoRiga);
assObbAccList.stream().forEach(assObbAcc -> {
try {
SQLBuilder sqlCori = coriHome.createSQLBuilder();
sqlCori.addClause(FindClause.AND, "cd_cds_accertamento", SQLBuilder.EQUALS, assObbAcc.getCd_cds());
sqlCori.addClause(FindClause.AND, "esercizio_accertamento", SQLBuilder.EQUALS, assObbAcc.getEsercizio());
sqlCori.addClause(FindClause.AND, "esercizio_ori_accertamento", SQLBuilder.EQUALS, assObbAcc.getEsercizio_ori_accertamento());
sqlCori.addClause(FindClause.AND, "pg_accertamento", SQLBuilder.EQUALS, assObbAcc.getPg_accertamento());
coriList.addAll(coriHome.fetchAll(sqlCori));
} catch (PersistencyException e) {
throw new ApplicationRuntimeException(e);
}
});
}
return coriList;
}
use of it.cnr.jada.persistency.PersistencyException in project sigla-main by consiglionazionaledellericerche.
the class ScritturaPartitaDoppiaComponent method proposeTestataPrimaNotaDocumento.
private List<TestataPrimaNota> proposeTestataPrimaNotaDocumento(UserContext userContext, IDocumentoAmministrativoBulk docamm) throws ComponentException {
try {
List<TestataPrimaNota> testataPrimaNotaList = new ArrayList<>();
// Le fatture generate da compenso non creano scritture di prima nota in quanto create direttamente dal compenso stesso
if (Optional.of(docamm).filter(Fattura_passivaBulk.class::isInstance).map(Fattura_passivaBulk.class::cast).map(Fattura_passivaBulk::isGenerataDaCompenso).orElse(Boolean.FALSE))
return null;
final boolean isCommercialeWithAutofattura = this.hasAutofattura(userContext, docamm);
final boolean registraIva = this.registraIvaCoge(docamm) || isCommercialeWithAutofattura;
List<IDocumentoAmministrativoRigaBulk> righeDocamm = docamm.getChildren();
Map<Integer, Map<Timestamp, Map<Timestamp, List<IDocumentoAmministrativoRigaBulk>>>> mapTerzo = righeDocamm.stream().collect(Collectors.groupingBy(IDocumentoAmministrativoRigaBulk::getCd_terzo, Collectors.groupingBy(IDocumentoAmministrativoRigaBulk::getDt_da_competenza_coge, Collectors.groupingBy(IDocumentoAmministrativoRigaBulk::getDt_a_competenza_coge))));
mapTerzo.keySet().stream().forEach(aCdTerzo -> {
mapTerzo.get(aCdTerzo).keySet().forEach(aDtDaCompCoge -> {
mapTerzo.get(aCdTerzo).get(aDtDaCompCoge).keySet().forEach(aDtACompCoge -> {
List<IDocumentoAmministrativoRigaBulk> righeDocammTerzo = mapTerzo.get(aCdTerzo).get(aDtDaCompCoge).get(aDtACompCoge);
TestataPrimaNota testataPrimaNota = new TestataPrimaNota(aCdTerzo, aDtDaCompCoge, aDtACompCoge);
testataPrimaNotaList.add(testataPrimaNota);
Map<Integer, Map<String, Map<String, Map<String, List<IDocumentoAmministrativoRigaBulk>>>>> mapVoce = righeDocammTerzo.stream().collect(Collectors.groupingBy(rigaDoc -> rigaDoc.getScadenzaDocumentoContabile().getFather().getEsercizio(), Collectors.groupingBy(rigaDoc2 -> rigaDoc2.getScadenzaDocumentoContabile().getFather().getTi_appartenenza(), Collectors.groupingBy(rigaDoc3 -> rigaDoc3.getScadenzaDocumentoContabile().getFather().getTi_gestione(), Collectors.groupingBy(rigaDoc4 -> rigaDoc4.getScadenzaDocumentoContabile().getFather().getCd_elemento_voce())))));
mapVoce.keySet().stream().forEach(aEseVoce -> {
mapVoce.get(aEseVoce).keySet().forEach(aTiAppartenenza -> {
mapVoce.get(aEseVoce).get(aTiAppartenenza).keySet().forEach(aTiGestione -> {
mapVoce.get(aEseVoce).get(aTiAppartenenza).get(aTiGestione).keySet().forEach(aCdVoce -> {
try {
List<IDocumentoAmministrativoRigaBulk> righeDocammVoce = mapVoce.get(aEseVoce).get(aTiAppartenenza).get(aTiGestione).get(aCdVoce);
BigDecimal imImponibile = righeDocammVoce.stream().map(IDocumentoAmministrativoRigaBulk::getIm_imponibile).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal imIva = righeDocammVoce.stream().map(iDocumentoAmministrativoRigaBulk -> Optional.ofNullable(iDocumentoAmministrativoRigaBulk.getIm_iva()).orElse(BigDecimal.ZERO)).reduce(BigDecimal.ZERO, BigDecimal::add);
// Registrazione IVA
if (registraIva) {
if (isCommercialeWithAutofattura) {
Pair<Voce_epBulk, Voce_epBulk> pairContoIva = this.findPairAutofatturaIva(userContext, righeDocammVoce.stream().findAny().get());
testataPrimaNota.openDettaglioIva(docamm, pairContoIva.getFirst().getCd_voce_ep(), imIva);
testataPrimaNota.closeDettaglioIva(docamm, pairContoIva.getSecond().getCd_voce_ep(), imIva);
} else {
Pair<Voce_epBulk, Voce_epBulk> pairContoIva = this.findPairIva(userContext, righeDocammVoce.stream().findAny().get());
testataPrimaNota.openDettaglioIva(docamm, pairContoIva.getFirst().getCd_voce_ep(), imIva);
testataPrimaNota.openDettaglioCostoRicavo(docamm, pairContoIva.getSecond().getCd_voce_ep(), imIva);
}
}
// Registrazione conto COSTO
BigDecimal imCosto = registraIva ? imImponibile : imImponibile.add(imIva);
Pair<Voce_epBulk, Voce_epBulk> pairContoCosto = this.findPairCosto(userContext, righeDocammVoce.stream().findAny().get());
testataPrimaNota.openDettaglioCostoRicavo(docamm, pairContoCosto.getFirst().getCd_voce_ep(), imCosto);
testataPrimaNota.openDettaglioPatrimoniale(docamm, pairContoCosto.getSecond().getCd_voce_ep(), imCosto, true);
} catch (ComponentException | PersistencyException | RemoteException e) {
throw new ApplicationRuntimeException(e);
}
});
});
});
});
});
});
});
return testataPrimaNotaList;
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.persistency.PersistencyException in project sigla-main by consiglionazionaledellericerche.
the class ScritturaPartitaDoppiaComponent method findContoAnag.
private Voce_epBulk findContoAnag(UserContext userContext, TerzoBulk terzo, String tipoConto) throws ComponentException, PersistencyException {
Voce_epBulk voceEpBulk = null;
TerzoHome terzohome = (TerzoHome) getHome(userContext, TerzoBulk.class);
TerzoBulk terzoDB = (TerzoBulk) terzohome.findByPrimaryKey(terzo);
if (Optional.ofNullable(terzo).isPresent()) {
Anagrafico_esercizioHome anagesehome = (Anagrafico_esercizioHome) getHome(userContext, Anagrafico_esercizioBulk.class);
Anagrafico_esercizioBulk anagEse = (Anagrafico_esercizioBulk) anagesehome.findByPrimaryKey(new Anagrafico_esercizioBulk(terzoDB.getCd_anag(), CNRUserContext.getEsercizio(userContext)));
if (tipoConto.equals(Movimento_cogeBulk.TipoRiga.DEBITO.value())) {
if (Optional.ofNullable(anagEse).flatMap(el -> Optional.ofNullable(el.getCd_voce_debito_ep())).isPresent()) {
Voce_epHome voceEpHome = (Voce_epHome) getHome(userContext, Voce_epBulk.class);
voceEpBulk = (Voce_epBulk) voceEpHome.findByPrimaryKey(new Voce_epBulk(anagEse.getCd_voce_debito_ep(), anagEse.getEsercizio_voce_debito_ep()));
}
} else {
if (Optional.ofNullable(anagEse).flatMap(el -> Optional.ofNullable(el.getCd_voce_credito_ep())).isPresent()) {
Voce_epHome voceEpHome = (Voce_epHome) getHome(userContext, Voce_epBulk.class);
voceEpBulk = (Voce_epBulk) voceEpHome.findByPrimaryKey(new Voce_epBulk(anagEse.getCd_voce_credito_ep(), anagEse.getEsercizio_voce_credito_ep()));
}
}
}
return Optional.ofNullable(voceEpBulk).orElseThrow(() -> new ApplicationRuntimeException("Conto " + (tipoConto.equals(Movimento_cogeBulk.TipoRiga.DEBITO.value()) ? "debito" : "credito") + " associato al codice terzo " + terzo.getCd_terzo() + " non individuato."));
}
use of it.cnr.jada.persistency.PersistencyException in project sigla-main by consiglionazionaledellericerche.
the class ScritturaPartitaDoppiaFromDocumentoComponent method caricaScrittura.
protected void caricaScrittura(UserContext userContext, IDocumentoCogeBulk documentoCogeBulk) throws ComponentException {
try {
if (Optional.ofNullable(getHome(userContext, Configurazione_cnrBulk.class)).filter(Configurazione_cnrHome.class::isInstance).map(Configurazione_cnrHome.class::cast).orElseThrow(() -> new DetailedRuntimeException("Configurazione Home not found")).isAttivaEconomicaParallela(userContext)) {
Scrittura_partita_doppiaHome partitaDoppiaHome = Optional.ofNullable(getHome(userContext, Scrittura_partita_doppiaBulk.class)).filter(Scrittura_partita_doppiaHome.class::isInstance).map(Scrittura_partita_doppiaHome.class::cast).orElseThrow(() -> new DetailedRuntimeException("Partita doppia Home not found"));
final Optional<Scrittura_partita_doppiaBulk> scritturaOpt = partitaDoppiaHome.findByDocumentoAmministrativo(documentoCogeBulk);
if (scritturaOpt.isPresent()) {
Scrittura_partita_doppiaBulk scrittura = scritturaOpt.get();
scrittura.setMovimentiDareColl(new BulkList(((Scrittura_partita_doppiaHome) getHome(userContext, scrittura.getClass())).findMovimentiDareColl(userContext, scrittura)));
scrittura.setMovimentiAvereColl(new BulkList(((Scrittura_partita_doppiaHome) getHome(userContext, scrittura.getClass())).findMovimentiAvereColl(userContext, scrittura)));
documentoCogeBulk.setScrittura_partita_doppia(scrittura);
}
}
} catch (PersistencyException | ComponentException e) {
throw handleException((OggettoBulk) documentoCogeBulk, e);
}
}
Aggregations