use of it.cnr.jada.bulk.BulkList 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);
}
}
use of it.cnr.jada.bulk.BulkList in project sigla-main by consiglionazionaledellericerche.
the class CRUDFatturaPassivaBP method sdoppiaDettaglioInAutomatico.
public void sdoppiaDettaglioInAutomatico(ActionContext context) throws ValidationException, BusinessProcessException {
try {
it.cnr.contab.doccont00.ejb.ObbligazioneAbstractComponentSession h = it.cnr.contab.doccont00.bp.CRUDVirtualObbligazioneBP.getVirtualComponentSession(context, true);
FatturaPassivaComponentSession session = (FatturaPassivaComponentSession) createComponentSession();
Fattura_passivaBulk documento = (Fattura_passivaBulk) getModel();
Fattura_passiva_rigaIBulk dettaglioSelezionato = (Fattura_passiva_rigaIBulk) getDettaglio().getModel();
Obbligazione_scadenzarioBulk scadenzaNuova = null;
if (dettaglioSelezionato == null)
return;
if (documento.getStato_cofi() != null && documento.getStato_cofi().equals(documento.STATO_PAGATO))
setMessage("Non è possibile sdoppiare righe in un documento pagato.");
if (dettaglioSelezionato.getIm_riga_sdoppia() == null || dettaglioSelezionato.getIm_riga_sdoppia().equals(Utility.ZERO) || dettaglioSelezionato.getIm_riga_sdoppia().compareTo(dettaglioSelezionato.getSaldo()) != -1) {
setMessage("Il nuovo importo della riga da sdoppiare deve essere positivo ed inferiore " + "al saldo originario.");
return;
}
Obbligazione_scadenzarioBulk scadenzaVecchia = dettaglioSelezionato.getObbligazione_scadenziario();
BigDecimal newImportoRigaVecchia = dettaglioSelezionato.getIm_riga_sdoppia().add(dettaglioSelezionato.getIm_diponibile_nc().subtract(dettaglioSelezionato.getSaldo()));
BigDecimal newImportoRigaNuova = dettaglioSelezionato.getSaldo().subtract(dettaglioSelezionato.getIm_riga_sdoppia());
BigDecimal newPrezzoRigaVecchia = newImportoRigaVecchia.divide(documento.getCambio(), 2, BigDecimal.ROUND_HALF_UP).divide(dettaglioSelezionato.getQuantita().multiply(dettaglioSelezionato.getVoce_iva().getPercentuale().divide(new BigDecimal(100)).add(new java.math.BigDecimal(1))), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal newPrezzoRigaNuova = dettaglioSelezionato.getPrezzo_unitario().subtract(newPrezzoRigaVecchia);
BigDecimal oldImportoIvaVecchia = BigDecimal.ZERO;
BigDecimal tot_imp = BigDecimal.ZERO;
if (dettaglioSelezionato.getVoce_iva().getFl_autofattura() || documento.quadraturaInDeroga()) {
oldImportoIvaVecchia = dettaglioSelezionato.getIm_iva();
tot_imp = newPrezzoRigaVecchia.multiply(documento.getCambio()).multiply(dettaglioSelezionato.getQuantita()).setScale(2, BigDecimal.ROUND_HALF_UP);
} else
tot_imp = dettaglioSelezionato.getIm_riga_sdoppia();
if (dettaglioSelezionato.getObbligazione_scadenziario() != null) {
scadenzaNuova = (Obbligazione_scadenzarioBulk) h.sdoppiaScadenzaInAutomatico(context.getUserContext(), scadenzaVecchia, scadenzaVecchia.getIm_scadenza().subtract(dettaglioSelezionato.getSaldo().subtract(oldImportoIvaVecchia)).add(tot_imp));
// ricarico obbligazione e recupero i riferimenti alle scadenze
ObbligazioneBulk obbligazione = (ObbligazioneBulk) h.inizializzaBulkPerModifica(context.getUserContext(), scadenzaNuova.getObbligazione());
if (!obbligazione.getObbligazione_scadenzarioColl().containsByPrimaryKey(scadenzaVecchia) || !obbligazione.getObbligazione_scadenzarioColl().containsByPrimaryKey(scadenzaNuova))
throw new ValidationException("Errore nello sdoppiamento della scadenza dell'impegno.");
scadenzaVecchia = (Obbligazione_scadenzarioBulk) obbligazione.getObbligazione_scadenzarioColl().get(obbligazione.getObbligazione_scadenzarioColl().indexOfByPrimaryKey(scadenzaVecchia));
scadenzaNuova = (Obbligazione_scadenzarioBulk) obbligazione.getObbligazione_scadenzarioColl().get(obbligazione.getObbligazione_scadenzarioColl().indexOfByPrimaryKey(scadenzaNuova));
}
// creo la nuova riga di dettaglio e la associo al documento
Fattura_passiva_rigaIBulk nuovoDettaglio = new Fattura_passiva_rigaIBulk();
getDettaglio().addDetail(nuovoDettaglio);
nuovoDettaglio = copyByRigaDocumento(context, nuovoDettaglio, dettaglioSelezionato);
nuovoDettaglio.setQuantita(dettaglioSelezionato.getQuantita());
nuovoDettaglio.setPrezzo_unitario(newPrezzoRigaNuova);
nuovoDettaglio.calcolaCampiDiRiga();
// setto im_diponibile prime per la verifica e dopo
nuovoDettaglio.setIm_diponibile_nc(nuovoDettaglio.getSaldo());
if (nuovoDettaglio.getIm_diponibile_nc().compareTo(newImportoRigaNuova) != 0) {
nuovoDettaglio.setIm_iva(nuovoDettaglio.getIm_iva().add(newImportoRigaNuova.subtract(nuovoDettaglio.getIm_diponibile_nc())));
nuovoDettaglio.setIm_totale_divisa(newImportoRigaNuova.subtract(nuovoDettaglio.getIm_iva()));
nuovoDettaglio.setFl_iva_forzata(Boolean.TRUE);
nuovoDettaglio.calcolaCampiDiRiga();
}
nuovoDettaglio.setIm_diponibile_nc(nuovoDettaglio.getSaldo());
// Aggiorno la vecchia riga di dettaglio ed in particolare l'importo
// della riga da sdoppiare
// del doc amministrativo
BigDecimal oldImpTotaleDivisa = dettaglioSelezionato.getIm_totale_divisa();
dettaglioSelezionato.setPrezzo_unitario(newPrezzoRigaVecchia);
dettaglioSelezionato.calcolaCampiDiRiga();
// setto im_diponibile prime per la verifica e dopo
dettaglioSelezionato.setIm_diponibile_nc(dettaglioSelezionato.getSaldo());
if (dettaglioSelezionato.getIm_diponibile_nc().compareTo(newImportoRigaVecchia) != 0) {
dettaglioSelezionato.setIm_iva(dettaglioSelezionato.getIm_iva().add(newImportoRigaVecchia.subtract(dettaglioSelezionato.getIm_diponibile_nc())));
dettaglioSelezionato.setIm_totale_divisa(newImportoRigaVecchia.subtract(dettaglioSelezionato.getIm_iva()));
dettaglioSelezionato.setFl_iva_forzata(Boolean.TRUE);
dettaglioSelezionato.calcolaCampiDiRiga();
}
dettaglioSelezionato.setIm_diponibile_nc(dettaglioSelezionato.getSaldo());
dettaglioSelezionato.setToBeUpdated();
if (scadenzaVecchia != null) {
for (Iterator i = documento.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaIBulk riga = (Fattura_passiva_rigaIBulk) i.next();
if (riga.getObbligazione_scadenziario() != null && riga.getObbligazione_scadenziario().equalsByPrimaryKey(scadenzaVecchia)) {
riga.setObbligazione_scadenziario(scadenzaVecchia);
documento.addToDefferredSaldi(scadenzaVecchia.getObbligazione(), scadenzaVecchia.getObbligazione().getSaldiInfo());
}
}
}
if (scadenzaNuova != null) {
BulkList selectedModels = new BulkList();
selectedModels.add(nuovoDettaglio);
documento = session.contabilizzaDettagliSelezionati(context.getUserContext(), documento, selectedModels, scadenzaNuova);
documento.addToFattura_passiva_obbligazioniHash(scadenzaNuova, nuovoDettaglio);
documento.addToDefferredSaldi(scadenzaNuova.getObbligazione(), scadenzaNuova.getObbligazione().getSaldiInfo());
// Sdoppia associazione inventario in automatico
if (nuovoDettaglio.isInventariato()) {
// r.p. Prendo il progressivo dalla fattura_passivaBulk
// perchè viene aggiornato
BuonoCaricoScaricoComponentSession r = (it.cnr.contab.inventario01.ejb.BuonoCaricoScaricoComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRINVENTARIO01_EJB_BuonoCaricoScaricoComponentSession", it.cnr.contab.inventario01.ejb.BuonoCaricoScaricoComponentSession.class);
Ass_inv_bene_fatturaBulk newAss = r.sdoppiaAssociazioneFor(context.getUserContext(), (Fattura_passiva_rigaBulk) dettaglioSelezionato, (Fattura_passiva_rigaBulk) nuovoDettaglio);
documento.addToAssociazioniInventarioHash(newAss, nuovoDettaglio);
}
}
documento = (Fattura_passivaBulk) session.rebuildDocumento(context.getUserContext(), documento);
getObbligazioniController().getSelection().clear();
getObbligazioniController().setModelIndex(context, -1);
getObbligazioniController().setModelIndex(context, it.cnr.jada.bulk.BulkCollections.indexOfByPrimaryKey(getObbligazioniController().getDetails(), dettaglioSelezionato));
documento.setDetailDoubled(true);
setModel(context, documento);
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.bulk.BulkList in project sigla-main by consiglionazionaledellericerche.
the class CRUDDocumentoGenericoAttivoBP method sdoppiaDettaglioInAutomatico.
public void sdoppiaDettaglioInAutomatico(ActionContext context) throws ValidationException, BusinessProcessException {
try {
it.cnr.contab.doccont00.ejb.AccertamentoAbstractComponentSession h = it.cnr.contab.doccont00.bp.CRUDVirtualAccertamentoBP.getVirtualComponentSession(context, true);
DocumentoGenericoComponentSession session = (DocumentoGenericoComponentSession) createComponentSession();
Documento_genericoBulk documento = (Documento_genericoBulk) getModel();
Documento_generico_rigaBulk dettaglioSelezionato = (Documento_generico_rigaBulk) getDettaglio().getModel();
Accertamento_scadenzarioBulk scadenzaNuova = null;
if (dettaglioSelezionato == null)
return;
if (documento.getStato_cofi() != null && documento.getStato_cofi().equals(Documento_genericoBulk.STATO_PAGATO))
setMessage("Non è possibile sdoppiare righe in un documento pagato");
if (dettaglioSelezionato.getIm_riga() == null) {
setMessage("Non è possibile sdoppiare righe in cui l'importo di origine non è valorizzato");
return;
}
if (dettaglioSelezionato.getIm_riga_sdoppia() == null || dettaglioSelezionato.getIm_riga_sdoppia().equals(Utility.ZERO) || dettaglioSelezionato.getIm_riga_sdoppia().compareTo(dettaglioSelezionato.getIm_riga()) != -1) {
setMessage("L'importo nuovo della riga da sdoppiare deve essere positivo ed inferiore " + "all'importo originario del riga stessa");
return;
}
Accertamento_scadenzarioBulk scadenzaVecchia = dettaglioSelezionato.getAccertamento_scadenziario();
java.math.BigDecimal newImportoRigaVecchia = dettaglioSelezionato.getIm_riga_sdoppia();
java.math.BigDecimal newImportoRigaNuova = dettaglioSelezionato.getIm_riga().subtract(dettaglioSelezionato.getIm_riga_sdoppia());
if (dettaglioSelezionato.getAccertamento_scadenziario() != null) {
/*
* L'importo della scadenza vecchia sarà pari al valore iniziale diminuito del valore originario del
* dettaglio e aumentato del valore nuovo.
* Ciò al fine di gestire il caso di utenti che collegano più dettagli di documento alla stessa scadenza
*/
scadenzaNuova = (Accertamento_scadenzarioBulk) h.sdoppiaScadenzaInAutomatico(context.getUserContext(), scadenzaVecchia, scadenzaVecchia.getIm_scadenza().subtract(Utility.nvl(dettaglioSelezionato.getIm_riga())).add(Utility.nvl(dettaglioSelezionato.getIm_riga_sdoppia())));
// ricarico l'accertamento e recupero i riferimenti alle scadenze
AccertamentoBulk accertamento = (AccertamentoBulk) h.inizializzaBulkPerModifica(context.getUserContext(), scadenzaNuova.getAccertamento());
if (!accertamento.getAccertamento_scadenzarioColl().containsByPrimaryKey(scadenzaVecchia) || !accertamento.getAccertamento_scadenzarioColl().containsByPrimaryKey(scadenzaNuova))
throw new ValidationException("Errore nello sdoppiamento della scadenza dell'accertamento.");
scadenzaVecchia = accertamento.getAccertamento_scadenzarioColl().get(accertamento.getAccertamento_scadenzarioColl().indexOfByPrimaryKey(scadenzaVecchia));
scadenzaNuova = accertamento.getAccertamento_scadenzarioColl().get(accertamento.getAccertamento_scadenzarioColl().indexOfByPrimaryKey(scadenzaNuova));
}
// creo la nuova riga di dettaglio e la associo al documento
Documento_generico_rigaBulk nuovoDettaglio = new Documento_generico_rigaBulk();
getDettaglio().addDetail(nuovoDettaglio);
nuovoDettaglio = copyByRigaDocumento(context, nuovoDettaglio, dettaglioSelezionato);
// Aggiorno la vecchia riga di dettaglio ed in particolare l'importo della riga da sdoppiare
// del doc amministrativo
dettaglioSelezionato.setIm_riga(newImportoRigaVecchia);
dettaglioSelezionato.setIm_riga_divisa(newImportoRigaVecchia);
dettaglioSelezionato.setToBeUpdated();
if (scadenzaVecchia != null) {
dettaglioSelezionato.setAccertamento_scadenziario(scadenzaVecchia);
documento.addToDefferredSaldi(scadenzaVecchia.getAccertamento(), scadenzaVecchia.getAccertamento().getSaldiInfo());
}
if (scadenzaNuova != null) {
BulkList selectedModels = new BulkList();
selectedModels.add(nuovoDettaglio);
documento = session.contabilizzaDettagliSelezionati(context.getUserContext(), documento, selectedModels, scadenzaNuova);
documento.addToDefferredSaldi(scadenzaNuova.getAccertamento(), scadenzaNuova.getAccertamento().getSaldiInfo());
}
documento = session.rebuildDocumento(context.getUserContext(), documento);
getAccertamentiController().getSelection().clear();
getAccertamentiController().setModelIndex(context, -1);
getAccertamentiController().setModelIndex(context, it.cnr.jada.bulk.BulkCollections.indexOfByPrimaryKey(getAccertamentiController().getDetails(), dettaglioSelezionato));
documento.setDetailDoubled(true);
setModel(context, documento);
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.bulk.BulkList in project sigla-main by consiglionazionaledellericerche.
the class ReversaleComponent method setCodiciSIOPECollegabili.
/**
* caricamento codici SIOPE collegabili alla riga della reversale
* PreCondition:
* E' stata generata la richiesta di caricare in automatico i codici SIOPE da proporre per l'associazione
* alla riga della reversale
* PostCondition:
* Vengono caricati i codici SIOPE disponibili per l'associazione della riga della reversale
*
* @param userContext lo <code>UserContext</code> che ha generato la richiesta
* @param riga <code>Reversale_rigaBulk</code> la riga reversale da aggiornare
* @return riga <code>Reversale_rigaBulk</code> la riga reversale aggiornata
*/
private Reversale_rigaBulk setCodiciSIOPECollegabili(UserContext userContext, Reversale_rigaBulk riga) throws ComponentException {
try {
Reversale_rigaHome reversale_rigaHome = (Reversale_rigaHome) getHome(userContext, Reversale_rigaBulk.class);
Collection codiciCollegatiSIOPE;
if (riga.getReversale_siopeColl().isEmpty() && !riga.isToBeCreated())
codiciCollegatiSIOPE = reversale_rigaHome.findCodiciCollegatiSIOPE(userContext, riga);
else
codiciCollegatiSIOPE = riga.getReversale_siopeColl();
boolean trovato = false;
riga.setCodici_siopeColl(new BulkList());
for (java.util.Iterator collegabile = reversale_rigaHome.findCodiciCollegabiliSIOPE(userContext, riga).iterator(); collegabile.hasNext(); ) {
Codici_siopeBulk codiceCollegabile = (Codici_siopeBulk) collegabile.next();
trovato = false;
for (java.util.Iterator collegati = codiciCollegatiSIOPE.iterator(); collegati.hasNext(); ) {
Reversale_siopeBulk codiceCollegato = (Reversale_siopeBulk) collegati.next();
if (codiceCollegato.getCodice_siope().equalsByPrimaryKey(codiceCollegabile)) {
trovato = true;
break;
}
}
if (!trovato)
riga.addToCodici_siopeColl(codiceCollegabile);
}
return riga;
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.bulk.BulkList in project sigla-main by consiglionazionaledellericerche.
the class ReversaleComponent method aggiornaLegameSIOPE.
/**
* creazione legame Riga Reversale/Codici SIOPE
* PreCondition:
* E' stata generata la richiesta di caricare in automatico i codici SIOPE alla riga della reversale
* per l'importo complessivo
* PostCondition:
* Se esiste un unico Codice SIOPE associabile alla riga della reversale viene creata una nuova
* istanza di Reversale_siopeBulk per l'importo complessivo della riga della reversale
*
* @param userContext lo <code>UserContext</code> che ha generato la richiesta
* @param riga <code>Reversale_rigaBulk</code> la riga reversale da aggiornare
* @return riga <code>Reversale_rigaBulk</code> la riga reversale aggiornata
*/
private Reversale_rigaBulk aggiornaLegameSIOPE(UserContext userContext, Reversale_rigaBulk riga) throws ComponentException {
try {
if (riga.getReversale().isRequiredSiope()) {
Reversale_rigaHome reversale_rigaHome = (Reversale_rigaHome) getHome(userContext, Reversale_rigaBulk.class);
if (riga.isToBeCreated() || reversale_rigaHome.findCodiciCollegatiSIOPE(userContext, riga).isEmpty()) {
BulkList list = new BulkList(reversale_rigaHome.findCodiciCollegabiliSIOPE(userContext, riga));
if (list.size() == 1) {
Reversale_siopeIBulk reversale_siope = new Reversale_siopeIBulk();
reversale_siope.setCodice_siope((Codici_siopeBulk) list.get(0));
reversale_siope.setImporto(riga.getIm_reversale_riga());
reversale_siope.setToBeCreated();
riga.addToReversale_siopeColl(reversale_siope);
}
}
}
return riga;
} catch (Exception e) {
throw handleException(e);
}
}
Aggregations