Search in sources :

Example 1 with Scrittura_partita_doppiaBulk

use of it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaBulk 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);
    }
}
Also used : Scrittura_partita_doppiaHome(it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaHome) ComponentException(it.cnr.jada.comp.ComponentException) PersistencyException(it.cnr.jada.persistency.PersistencyException) BulkList(it.cnr.jada.bulk.BulkList) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) Scrittura_partita_doppiaBulk(it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaBulk) Configurazione_cnrHome(it.cnr.contab.config00.bulk.Configurazione_cnrHome) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException)

Example 2 with Scrittura_partita_doppiaBulk

use of it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaBulk in project sigla-main by consiglionazionaledellericerche.

the class ScritturaPartitaDoppiaComponent method validaAssociazioneAnagConto.

/**
 * valida la correttezza dell'associazione fra anagrafico e conto
 *
 * Nome: Nessuna associzione fra anagrafico-conto
 * Pre:  Per la scrittura in partita doppia e' stato selezionato un terzo le cui caratteristiche anagrafiche non
 *       sono state messe in relazione con neanche un conto definito per la scrittura (sia in avere che in dare)
 * Post: Una segnalazione di errore viene restituita all'utente
 *
 * Nome: Almeno un'associzione fra anagrafico-conto
 * Pre:  Per la scrittura in partita doppia e' stato selezionato un terzo le cui caratteristiche anagrafiche
 *       sono state messe in relazione con un conto definito per la scrittura (in avere o in dare)
 * Post: La scrittura supera la validazione anagrafica-conto
 *
 * @param userContext <code>UserContext</code>
 * @param scrittura <code>Scrittura_partita_doppiaBulk</code> da validare
 */
private void validaAssociazioneAnagConto(UserContext userContext, Scrittura_partita_doppiaBulk scrittura) throws ComponentException, PersistencyException {
    List result = ((Ass_anag_voce_epHome) getHome(userContext, Ass_anag_voce_epBulk.class)).findAssociazioniPerScrittura(scrittura);
    if (result == null || (result != null && result.size() == 0))
        throw new ApplicationException("Non esiste nessuna associazione fra l'anagrafica selezionata e i conti economico-patrimoniali");
    Ass_anag_voce_epBulk ass = (Ass_anag_voce_epBulk) result.get(0);
    Movimento_cogeBulk movimento;
    for (Iterator j = scrittura.getMovimentiAvereColl().iterator(); j.hasNext(); ) {
        movimento = (Movimento_cogeBulk) j.next();
        if (movimento.getConto().equalsByPrimaryKey(ass.getConto()))
            return;
    }
    for (Iterator j = scrittura.getMovimentiDareColl().iterator(); j.hasNext(); ) {
        movimento = (Movimento_cogeBulk) j.next();
        if (movimento.getConto().equalsByPrimaryKey(ass.getConto()))
            return;
    }
    throw new ApplicationException("Non esiste nessuna associazione fra l'anagrafica selezionata e i conti economico-patrimoniali");
}
Also used : Ass_anag_voce_epHome(it.cnr.contab.coepcoan00.tabrif.bulk.Ass_anag_voce_epHome) Ass_anag_voce_epBulk(it.cnr.contab.coepcoan00.tabrif.bulk.Ass_anag_voce_epBulk) BulkList(it.cnr.jada.bulk.BulkList)

Example 3 with Scrittura_partita_doppiaBulk

use of it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaBulk in project sigla-main by consiglionazionaledellericerche.

the class ScritturaPartitaDoppiaComponentSessionBean method proposeScritturaPartitaDoppia.

public Scrittura_partita_doppiaBulk proposeScritturaPartitaDoppia(UserContext param0, IDocumentoCogeBulk param1) throws ComponentException, RemoteException {
    pre_component_invocation(param0, componentObj);
    try {
        Scrittura_partita_doppiaBulk result = ((ScritturaPartitaDoppiaComponent) componentObj).proposeScritturaPartitaDoppia(param0, param1);
        component_invocation_succes(param0, componentObj);
        return result;
    } catch (it.cnr.jada.comp.NoRollbackException e) {
        component_invocation_succes(param0, componentObj);
        throw e;
    } catch (it.cnr.jada.comp.ComponentException e) {
        component_invocation_failure(param0, componentObj);
        throw e;
    } catch (RuntimeException e) {
        throw uncaughtRuntimeException(param0, componentObj, e);
    } catch (Error e) {
        throw uncaughtError(param0, componentObj, e);
    }
}
Also used : ScritturaPartitaDoppiaComponent(it.cnr.contab.coepcoan00.comp.ScritturaPartitaDoppiaComponent) Scrittura_partita_doppiaBulk(it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaBulk) ComponentException(it.cnr.jada.comp.ComponentException)

Example 4 with Scrittura_partita_doppiaBulk

use of it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaBulk in project sigla-main by consiglionazionaledellericerche.

the class CostiDipendenteComponent method innerContabilizzaFlussoStipendialeMensile.

public void innerContabilizzaFlussoStipendialeMensile(UserContext userContext, int aEsercizio, int aMese) throws ComponentException {
    try {
        boolean isCNR = Utility.createParametriEnteComponentSession().getParametriEnte(userContext).isEnteCNR();
        Stipendi_cofiHome stipendi_cofiHome = (Stipendi_cofiHome) getHome(userContext, it.cnr.contab.pdg00.cdip.bulk.Stipendi_cofiBulk.class);
        java.util.Collection<Stipendi_cofiBulk> stipendiCofi = stipendi_cofiHome.findStipendiCofiAnno(aEsercizio);
        int lastMesePagato = stipendiCofi.stream().filter(el -> el.getMese().compareTo(15) < 0).filter(Stipendi_cofiBulk::isLiquidato).mapToInt(Stipendi_cofiBulk::getMese).max().orElse(0);
        if (aMese > 15) {
            if (isCNR)
                throw new ApplicationException("Il mese deve avere un valore compreso tra 1 e 15");
            if (lastMesePagato == 0)
                throw new ApplicationException("Non è possibile effettuare pagamenti 'Straordinari' senza aver effettuato almeno un pagamento stipendiale nell'anno" + aEsercizio);
        } else if (aMese != 15) {
            if (aMese < 1 || aMese > 13)
                throw new ApplicationException("Il mese deve essere compreso tra 1 (Gennaio) e 13 (Mese Tredicesima)");
            // se il mese è > 1 verifico che la liquidazione del mese precedente sia stata fatta
            if (lastMesePagato == aMese)
                throw new ApplicationException("Dati stipendiali non trovati o contabilizzazione già effettuata per mese n." + aMese + " es." + aEsercizio);
            if (lastMesePagato != aMese - 1)
                throw new ApplicationException("Dati stipendiali non trovati o ultimo mese pagato (" + lastMesePagato + ") diverso da quello precedente al corrente (" + aMese + ")");
        }
        Stipendi_cofiBulk stipendiCofiBulk = stipendiCofi.stream().filter(el -> el.getEsercizio().equals(aEsercizio)).filter(el -> el.getMese().equals(aMese)).findAny().orElseThrow(() -> new ApplicationRuntimeException("StipendiCofi non esistente per mese n. " + aMese + " es. " + aEsercizio + "."));
        String cdrPersonale = Optional.ofNullable(((Configurazione_cnrHome) getHome(userContext, Configurazione_cnrBulk.class)).getCdrPersonale(aEsercizio)).orElseThrow(() -> new ComponentException("Non è possibile individuare il codice CDR del Personale nell'anno " + aEsercizio + "."));
        CdrBulk cdrPersonaleBulk = (CdrBulk) getHome(userContext, CdrBulk.class).findByPrimaryKey(new CdrBulk(cdrPersonale));
        cdrPersonaleBulk.setUnita_padre((Unita_organizzativaBulk) getHome(userContext, Unita_organizzativaBulk.class).findByPrimaryKey(cdrPersonaleBulk.getUnita_padre()));
        GregorianCalendar aDateInizioComp = new GregorianCalendar();
        GregorianCalendar aDateFineComp = new GregorianCalendar();
        if (aMese == 13) {
            aDateInizioComp = new GregorianCalendar(aEsercizio, 11, 1);
            aDateFineComp = new GregorianCalendar(aEsercizio, 11, 31);
        } else if (aMese < 13) {
            aDateInizioComp = new GregorianCalendar(aEsercizio, aMese - 1, 1);
            aDateFineComp = new GregorianCalendar(aEsercizio, aMese - 1, 1);
            aDateFineComp.set(Calendar.DAY_OF_MONTH, aDateFineComp.getActualMaximum(Calendar.DAY_OF_MONTH));
        }
        GregorianCalendar aDateCont = new GregorianCalendar();
        if (LocalDate.now().getYear() == aEsercizio + 1)
            aDateCont = new GregorianCalendar(aEsercizio, 11, 31);
        else if (LocalDate.now().getYear() < aEsercizio)
            aDateCont = new GregorianCalendar(aEsercizio, 0, 1);
        else if (LocalDate.now().getYear() > aEsercizio) {
            java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("dd/MM/yyyy");
            throw new ApplicationException("La data di sistema (" + formatter.format(aDateCont) + ") è superiore all''esercizio di scrivania (" + aEsercizio + ") di almeno 2 anni");
        }
        aDateCont.set(Calendar.HOUR_OF_DAY, aDateCont.getActualMinimum(Calendar.HOUR_OF_DAY));
        aDateCont.set(Calendar.MINUTE, aDateCont.getActualMinimum(Calendar.MINUTE));
        aDateCont.set(Calendar.SECOND, aDateCont.getActualMinimum(Calendar.SECOND));
        aDateCont.set(Calendar.MILLISECOND, aDateCont.getActualMinimum(Calendar.MILLISECOND));
        aDateInizioComp.set(Calendar.HOUR_OF_DAY, aDateCont.getActualMinimum(Calendar.HOUR_OF_DAY));
        aDateInizioComp.set(Calendar.MINUTE, aDateInizioComp.getActualMinimum(Calendar.MINUTE));
        aDateInizioComp.set(Calendar.SECOND, aDateInizioComp.getActualMinimum(Calendar.SECOND));
        aDateInizioComp.set(Calendar.MILLISECOND, aDateInizioComp.getActualMinimum(Calendar.MILLISECOND));
        aDateFineComp.set(Calendar.HOUR_OF_DAY, aDateCont.getActualMinimum(Calendar.HOUR_OF_DAY));
        aDateFineComp.set(Calendar.MINUTE, aDateFineComp.getActualMinimum(Calendar.MINUTE));
        aDateFineComp.set(Calendar.SECOND, aDateFineComp.getActualMinimum(Calendar.SECOND));
        aDateFineComp.set(Calendar.MILLISECOND, aDateFineComp.getActualMinimum(Calendar.MILLISECOND));
        MandatoAutomaticoWizardBulk mandatoWizard = new MandatoAutomaticoWizardBulk();
        mandatoWizard.setTi_automatismo(MandatoAutomaticoWizardBulk.AUTOMATISMO_DA_IMPEGNI);
        mandatoWizard.setEsercizio(aEsercizio);
        mandatoWizard.setCds(cdrPersonaleBulk.getUnita_padre().getUnita_padre());
        mandatoWizard.setUnita_organizzativa(cdrPersonaleBulk.getUnita_padre());
        mandatoWizard.setCd_cds_origine(cdrPersonaleBulk.getUnita_padre().getUnita_padre().getCd_unita_organizzativa());
        mandatoWizard.setCd_uo_origine(cdrPersonaleBulk.getUnita_padre().getCd_unita_organizzativa());
        mandatoWizard.setDt_emissione(new java.sql.Timestamp(aDateCont.getTime().getTime()));
        mandatoWizard.setUser(CNRUserContext.getUser(userContext));
        mandatoWizard.setDs_mandato("Mandato di liquidazione stipendi_cofi mese:" + aMese);
        DocumentoGenericoWizardBulk modelloDocumento = new DocumentoGenericoWizardBulk();
        modelloDocumento.setEsercizio(aEsercizio);
        modelloDocumento.setCd_cds(cdrPersonaleBulk.getUnita_padre().getUnita_padre().getCd_unita_organizzativa());
        modelloDocumento.setCd_unita_organizzativa(cdrPersonaleBulk.getUnita_padre().getCd_unita_organizzativa());
        modelloDocumento.setCd_cds_origine(cdrPersonaleBulk.getUnita_padre().getUnita_padre().getCd_unita_organizzativa());
        modelloDocumento.setCd_uo_origine(cdrPersonaleBulk.getUnita_padre().getCd_unita_organizzativa());
        modelloDocumento.setTipo_documento(new Tipo_documento_ammBulk(TipoDocumentoEnum.GEN_STIPENDI_SPESA.getValue()));
        modelloDocumento.setData_registrazione(new java.sql.Timestamp(aDateCont.getTime().getTime()));
        modelloDocumento.setDt_da_competenza_coge(new java.sql.Timestamp(aDateInizioComp.getTime().getTime()));
        modelloDocumento.setDt_a_competenza_coge(new java.sql.Timestamp(aDateFineComp.getTime().getTime()));
        modelloDocumento.setDs_documento_generico("Generico di versamento stipendi mese:" + aMese);
        modelloDocumento.setTi_istituz_commerc(TipoIVA.ISTITUZIONALE.value());
        modelloDocumento.setUser(CNRUserContext.getUser(userContext));
        mandatoWizard.setModelloDocumento(modelloDocumento);
        /**
         ***************** CREO IL MANDATO *************
         */
        // Per il mandato non setto il terzo in quanto deve essere creato con quelli indicati sugli impegni di spesa
        Mandato_terzoBulk mandatoTerzo = new Mandato_terzoIBulk();
        mandatoTerzo.setTipoBollo(((Tipo_bolloHome) getHome(userContext, Tipo_bolloBulk.class)).findTipoBolloStipendi(Tipo_bolloBulk.TIPO_SPESA));
        mandatoWizard.setMandato_terzo(mandatoTerzo);
        MandatoBulk mandatoStipendio = this.createMandatoStipendio(userContext, stipendiCofiBulk, mandatoWizard);
        /**
         ***************** CREO IL COMPENSO *************
         */
        // Per il compenso setto come terzo quello diversi per stipendi
        MandatoAutomaticoWizardBulk compensoWizard = MandatoAutomaticoWizardBulk.createBy(mandatoWizard);
        Integer cdTerzoStipendi = Utility.createConfigurazioneCnrComponentSession().getCdTerzoDiversiStipendi(userContext);
        compensoWizard.getMandato_terzo().setTerzo((TerzoBulk) (getHome(userContext, TerzoBulk.class)).findByPrimaryKey(new TerzoBulk(cdTerzoStipendi)));
        CompensoBulk compensoBulk = this.createCompensoStipendio(userContext, stipendiCofiBulk, compensoWizard, mandatoStipendio);
        /**
         ***************** CREO LE RITENUTE *************
         */
        ReversaleAutomaticaWizardBulk reversaleWizard = ReversaleAutomaticaWizardBulk.createBy(mandatoWizard);
        reversaleWizard.setStato_coge(MandatoBulk.STATO_COGE_X);
        reversaleWizard.getModelloDocumento().setTipo_documento(new Tipo_documento_ammBulk(TipoDocumentoEnum.GEN_CORI_ACCANTONAMENTO_ENTRATA.getValue()));
        reversaleWizard.getModelloDocumento().setTerzoWizardBulk(mandatoStipendio.getMandato_terzo().getTerzo());
        reversaleWizard.getModelloDocumento().setDs_documento_generico("CORI - mese:" + stipendiCofiBulk.getMese() + " es:" + stipendiCofiBulk.getEsercizio());
        // Imposto le variabili da utilizzare per il caricamento degli oggetti
        Documento_generico_rigaBulk docRiga = new Documento_generico_rigaBulk();
        docRiga.setTerzo_uo_cds(((TerzoHome) getHome(userContext, TerzoBulk.class)).findTerzoPerUo(cdrPersonaleBulk.getUnita_padre()));
        docRiga.setModalita_pagamento_uo_cds(((TerzoHome) getHome(userContext, TerzoBulk.class)).findModalitaPagamentoPerUo(userContext, cdrPersonaleBulk.getUnita_padre()).getRif_modalita_pagamento());
        docRiga.setBanca_uo_cds(((TerzoHome) getHome(userContext, TerzoBulk.class)).findBancaPerUo(userContext, cdrPersonaleBulk.getUnita_padre()));
        reversaleWizard.getModelloDocumento().addToDocumento_generico_dettColl(docRiga);
        Mandato_rigaBulk mandatoRiga = mandatoStipendio.getMandato_rigaColl().stream().findFirst().get();
        reversaleWizard.getReversale_terzo().setTerzo(mandatoStipendio.getMandato_terzo().getTerzo());
        reversaleWizard.setModalita_pagamento(mandatoRiga.getModalita_pagamento());
        reversaleWizard.setBanca(mandatoRiga.getBanca());
        this.createRitenuteStipendio(userContext, stipendiCofiBulk, reversaleWizard, mandatoWizard, mandatoStipendio, compensoBulk);
        // Aggiorno la riga della liquidazione
        stipendiCofiBulk.setEsercizio_mandato(mandatoStipendio.getEsercizio());
        stipendiCofiBulk.setCd_cds_mandato(mandatoStipendio.getCd_cds());
        stipendiCofiBulk.setPg_mandato(mandatoStipendio.getPg_mandato());
        Mandato_rigaBulk riga = mandatoStipendio.getMandato_rigaColl().stream().findFirst().get();
        stipendiCofiBulk.setEsercizio_doc_gen(riga.getEsercizio_doc_amm());
        stipendiCofiBulk.setCd_tipo_doc_gen(riga.getCd_tipo_documento_amm());
        stipendiCofiBulk.setCd_cds_doc_gen(riga.getCd_cds_doc_amm());
        stipendiCofiBulk.setCd_uo_doc_gen(riga.getCd_uo_doc_amm());
        stipendiCofiBulk.setPg_doc_gen(riga.getPg_doc_amm());
        stipendiCofiBulk.setEsercizio_comp(compensoBulk.getEsercizio());
        stipendiCofiBulk.setCd_cds_comp(compensoBulk.getCd_cds());
        stipendiCofiBulk.setCd_uo_comp(compensoBulk.getCd_unita_organizzativa());
        stipendiCofiBulk.setPg_comp(compensoBulk.getPg_compenso());
        stipendiCofiBulk.setToBeUpdated();
        makeBulkPersistent(userContext, stipendiCofiBulk);
        // Effettuo scritture prima nota
        Scrittura_partita_doppiaBulk scritturaPartitaDoppiaBulk = Utility.createScritturaPartitaDoppiaComponentSession().proposeScritturaPartitaDoppia(userContext, compensoBulk);
        makeBulkPersistent(userContext, scritturaPartitaDoppiaBulk);
    } catch (Exception e) {
        throw handleException(e);
    }
}
Also used : EsercizioBulk(it.cnr.contab.config00.esercizio.bulk.EsercizioBulk) it.cnr.jada.comp(it.cnr.jada.comp) it.cnr.contab.anagraf00.core.bulk(it.cnr.contab.anagraf00.core.bulk) Scrittura_partita_doppiaBulk(it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaBulk) it.cnr.contab.compensi00.docs.bulk(it.cnr.contab.compensi00.docs.bulk) BigDecimal(java.math.BigDecimal) MandatoAutomaticoComponentSession(it.cnr.contab.doccont00.ejb.MandatoAutomaticoComponentSession) it.cnr.contab.config00.sto.bulk(it.cnr.contab.config00.sto.bulk) Configurazione_cnrHome(it.cnr.contab.config00.bulk.Configurazione_cnrHome) V_voce_f_partita_giroBulk(it.cnr.contab.config00.pdcfin.bulk.V_voce_f_partita_giroBulk) Pdg_modulo_gestBulk(it.cnr.contab.pdg01.bulk.Pdg_modulo_gestBulk) Tipo_rapportoHome(it.cnr.contab.anagraf00.tabrif.bulk.Tipo_rapportoHome) it.cnr.contab.docamm00.docs.bulk(it.cnr.contab.docamm00.docs.bulk) Pdg_modulo_speseBulk(it.cnr.contab.prevent01.bulk.Pdg_modulo_speseBulk) AccertamentoWizard(it.cnr.contab.doccont00.core.AccertamentoWizard) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk) Collectors(java.util.stream.Collectors) it.cnr.contab.compensi00.tabrif.bulk(it.cnr.contab.compensi00.tabrif.bulk) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) LocalDate(java.time.LocalDate) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Tipo_bolloBulk(it.cnr.contab.doccont00.tabrif.bulk.Tipo_bolloBulk) UserContext(it.cnr.jada.UserContext) it.cnr.jada.persistency.sql(it.cnr.jada.persistency.sql) java.util(java.util) Pdg_preventivoBulk(it.cnr.contab.pdg00.bulk.Pdg_preventivoBulk) it.cnr.contab.pdg00.cdip.bulk(it.cnr.contab.pdg00.cdip.bulk) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) Utility(it.cnr.contab.util.Utility) it.cnr.contab.doccont00.core.bulk(it.cnr.contab.doccont00.core.bulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) Progetto_sipBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_sipBulk) ObbligazioneWizard(it.cnr.contab.doccont00.core.ObbligazioneWizard) NaturaBulk(it.cnr.contab.config00.pdcfin.bulk.NaturaBulk) Elemento_voceHome(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome) TipoIVA(it.cnr.contab.util.enumeration.TipoIVA) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) PersistencyException(it.cnr.jada.persistency.PersistencyException) Rif_modalita_pagamentoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk) Pdg_moduloBulk(it.cnr.contab.prevent01.bulk.Pdg_moduloBulk) PdgAggregatoModuloComponentSession(it.cnr.contab.prevent01.ejb.PdgAggregatoModuloComponentSession) Tipo_bolloHome(it.cnr.contab.doccont00.tabrif.bulk.Tipo_bolloHome) DatiFinanziariScadenzeDTO(it.cnr.contab.doccont00.core.DatiFinanziariScadenzeDTO) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) AssTipoCORIEvComponentSession(it.cnr.contab.compensi00.ejb.AssTipoCORIEvComponentSession) EsercizioHome(it.cnr.contab.config00.esercizio.bulk.EsercizioHome) ReversaleAutomaticaComponentSession(it.cnr.contab.doccont00.ejb.ReversaleAutomaticaComponentSession) it.cnr.jada.bulk(it.cnr.jada.bulk) Pdg_esercizioBulk(it.cnr.contab.prevent01.bulk.Pdg_esercizioBulk) Tipo_rapportoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Tipo_rapportoBulk) Scrittura_partita_doppiaBulk(it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaBulk) it.cnr.jada.persistency.sql(it.cnr.jada.persistency.sql) UserContext(it.cnr.jada.UserContext) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) Configurazione_cnrHome(it.cnr.contab.config00.bulk.Configurazione_cnrHome) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) PersistencyException(it.cnr.jada.persistency.PersistencyException) java.util(java.util) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk)

Example 5 with Scrittura_partita_doppiaBulk

use of it.cnr.contab.coepcoan00.core.bulk.Scrittura_partita_doppiaBulk in project sigla-main by consiglionazionaledellericerche.

the class ScritturaPartitaDoppiaComponent method proposeScritturaPartitaDoppiaMandatoCompenso.

private Scrittura_partita_doppiaBulk proposeScritturaPartitaDoppiaMandatoCompenso(UserContext userContext, MandatoBulk mandato) throws ComponentException, PersistencyException, RemoteException {
    if (!mandato.getMandato_rigaColl().stream().map(Mandato_rigaBulk::getCd_tipo_documento_amm).filter(el -> TipoDocumentoEnum.fromValue(el).isCompenso()).findAny().isPresent())
        throw new ApplicationException("Il mandato " + mandato.getEsercizio() + "/" + mandato.getCds() + "/" + mandato.getPg_mandato() + " non risulta pagare un compenso. Proposta di prima nota non possibile.");
    if (mandato.getMandato_rigaColl().isEmpty() || mandato.getMandato_rigaColl().size() > 1)
        throw new ApplicationException("Il mandato " + mandato.getEsercizio() + "/" + mandato.getCds() + "/" + mandato.getPg_mandato() + " ha un numero di righe non coerente con l'unica prevista per un mandato di compenso. Proposta di prima nota non possibile.");
    Mandato_rigaBulk rigaMandato = mandato.getMandato_rigaColl().get(0);
    TestataPrimaNota testataPrimaNota = new TestataPrimaNota(mandato.getMandato_terzo().getCd_terzo(), null, null);
    CompensoBulk compenso = (CompensoBulk) Utility.createCompensoComponentSession().inizializzaBulkPerModifica(userContext, new CompensoBulk(rigaMandato.getCd_cds_doc_amm(), rigaMandato.getCd_uo_doc_amm(), rigaMandato.getEsercizio_doc_amm(), rigaMandato.getPg_doc_amm()));
    List<Contributo_ritenutaBulk> righeCori = compenso.getChildren();
    // recupero la scrittura del compenso
    Scrittura_partita_doppiaBulk scritturaCompenso = this.proposeScritturaPartitaDoppiaCompenso(userContext, compenso);
    BigDecimal imSaldoPatrimoniale = scritturaCompenso.getAllMovimentiColl().stream().filter(el -> Movimento_cogeBulk.TipoRiga.DEBITO.value().equals(el.getTi_riga())).map(el -> el.isSezioneAvere() ? el.getIm_movimento() : el.getIm_movimento().negate()).reduce(BigDecimal.ZERO, BigDecimal::add);
    if (imSaldoPatrimoniale.compareTo(rigaMandato.getIm_mandato_riga()) != 0)
        throw new ApplicationException("La scrittura Prima Nota associata al compenso del mandato presenta in Avere movimenti di conti patrimoniali " + "per un importo non coincidente con quello del mandato stesso.");
    BigDecimal imRitenute = righeCori.stream().map(Contributo_ritenutaBulk::getAmmontare).reduce(BigDecimal.ZERO, BigDecimal::add);
    if (imRitenute.compareTo(rigaMandato.getIm_ritenute_riga()) != 0)
        throw new ApplicationException("L'importo delle righe ritenute del compenso associato al mandato non corrisponde con l'importo ritenute associato al mandato.");
    BigDecimal imNettoMandato = rigaMandato.getIm_mandato_riga().subtract(rigaMandato.getIm_ritenute_riga());
    // Chiudo il patrimoniale principale del compenso.... quello con la partita
    Voce_epBulk voceEpBanca = this.findContoBanca(userContext, CNRUserContext.getEsercizio(userContext));
    Voce_epBulk contoPatrimonialePartita = this.findPairCosto(userContext, compenso).getSecond();
    testataPrimaNota.closeDettaglioPatrimoniale(compenso, contoPatrimonialePartita.getCd_voce_ep(), imNettoMandato, true);
    testataPrimaNota.addDettaglio(Movimento_cogeBulk.TipoRiga.TESORERIA.value(), compenso.getTipoDocumentoEnum().getSezionePatrimoniale(), voceEpBanca.getCd_voce_ep(), imNettoMandato);
    // 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 contoPatrimonialeClose = cori.isContributoPercipiente() ? contoPatrimonialePartita : pairContoCori.getFirst();
            Voce_epBulk contoVersamentoCori = pairContoCori.getSecond();
            testataPrimaNota.closeDettaglioPatrimoniale(compenso, contoPatrimonialeClose.getCd_voce_ep(), imCori, cori.isContributoPercipiente());
            testataPrimaNota.openDettaglioPatrimoniale(compenso, contoVersamentoCori.getCd_voce_ep(), imCori, false);
        } catch (ComponentException | PersistencyException e) {
            throw new ApplicationRuntimeException(e);
        }
    });
    return this.generaScrittura(userContext, mandato, Arrays.asList(testataPrimaNota), true);
}
Also used : TerzoBulk(it.cnr.contab.anagraf00.core.bulk.TerzoBulk) UserContext(it.cnr.jada.UserContext) Liquidazione_ivaVBulk(it.cnr.contab.gestiva00.core.bulk.Liquidazione_ivaVBulk) it.cnr.jada.persistency.sql(it.cnr.jada.persistency.sql) AnticipoBulk(it.cnr.contab.missioni00.docs.bulk.AnticipoBulk) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) java.util(java.util) Stipendi_cofiBulk(it.cnr.contab.pdg00.cdip.bulk.Stipendi_cofiBulk) EsercizioBulk(it.cnr.contab.config00.esercizio.bulk.EsercizioBulk) it.cnr.jada.comp(it.cnr.jada.comp) LoggerFactory(org.slf4j.LoggerFactory) Utility(it.cnr.contab.util.Utility) Anagrafico_esercizioBulk(it.cnr.contab.anagraf00.core.bulk.Anagrafico_esercizioBulk) Ass_anag_voce_epHome(it.cnr.contab.coepcoan00.tabrif.bulk.Ass_anag_voce_epHome) Contributo_ritenutaBulk(it.cnr.contab.compensi00.docs.bulk.Contributo_ritenutaBulk) it.cnr.contab.doccont00.core.bulk(it.cnr.contab.doccont00.core.bulk) TerzoHome(it.cnr.contab.anagraf00.core.bulk.TerzoHome) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) BigDecimal(java.math.BigDecimal) SQLException(java.sql.SQLException) Ass_anag_voce_epBulk(it.cnr.contab.coepcoan00.tabrif.bulk.Ass_anag_voce_epBulk) Pair(org.springframework.data.util.Pair) Stipendi_cofiHome(it.cnr.contab.pdg00.cdip.bulk.Stipendi_cofiHome) Ass_tipo_cori_voce_epBulk(it.cnr.contab.compensi00.tabrif.bulk.Ass_tipo_cori_voce_epBulk) Anagrafico_esercizioHome(it.cnr.contab.anagraf00.core.bulk.Anagrafico_esercizioHome) it.cnr.contab.config00.sto.bulk(it.cnr.contab.config00.sto.bulk) TipoIVA(it.cnr.contab.util.enumeration.TipoIVA) RoundingMode(java.math.RoundingMode) MissioneBulk(it.cnr.contab.missioni00.docs.bulk.MissioneBulk) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) PersistencyException(it.cnr.jada.persistency.PersistencyException) Liquidazione_ivaBulk(it.cnr.contab.gestiva00.core.bulk.Liquidazione_ivaBulk) Timestamp(java.sql.Timestamp) it.cnr.contab.docamm00.docs.bulk(it.cnr.contab.docamm00.docs.bulk) Liquidazione_ivaHome(it.cnr.contab.gestiva00.core.bulk.Liquidazione_ivaHome) Ass_tipo_cori_voce_epHome(it.cnr.contab.compensi00.tabrif.bulk.Ass_tipo_cori_voce_epHome) BulkList(it.cnr.jada.bulk.BulkList) it.cnr.contab.config00.pdcep.bulk(it.cnr.contab.config00.pdcep.bulk) Tipo_contributo_ritenutaBulk(it.cnr.contab.compensi00.tabrif.bulk.Tipo_contributo_ritenutaBulk) Collectors(java.util.stream.Collectors) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) it.cnr.contab.coepcoan00.core.bulk(it.cnr.contab.coepcoan00.core.bulk) Serializable(java.io.Serializable) RemoteException(java.rmi.RemoteException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) Contributo_ritenutaHome(it.cnr.contab.compensi00.docs.bulk.Contributo_ritenutaHome) CompensoBulk(it.cnr.contab.compensi00.docs.bulk.CompensoBulk) RimborsoBulk(it.cnr.contab.missioni00.docs.bulk.RimborsoBulk) Contributo_ritenutaBulk(it.cnr.contab.compensi00.docs.bulk.Contributo_ritenutaBulk) BigDecimal(java.math.BigDecimal) PersistencyException(it.cnr.jada.persistency.PersistencyException) CompensoBulk(it.cnr.contab.compensi00.docs.bulk.CompensoBulk)

Aggregations

Configurazione_cnrBulk (it.cnr.contab.config00.bulk.Configurazione_cnrBulk)6 DetailedRuntimeException (it.cnr.jada.DetailedRuntimeException)6 BulkList (it.cnr.jada.bulk.BulkList)6 PersistencyException (it.cnr.jada.persistency.PersistencyException)6 Ass_anag_voce_epBulk (it.cnr.contab.coepcoan00.tabrif.bulk.Ass_anag_voce_epBulk)5 Ass_anag_voce_epHome (it.cnr.contab.coepcoan00.tabrif.bulk.Ass_anag_voce_epHome)5 EsercizioBulk (it.cnr.contab.config00.esercizio.bulk.EsercizioBulk)5 Elemento_voceBulk (it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk)5 it.cnr.contab.config00.sto.bulk (it.cnr.contab.config00.sto.bulk)5 it.cnr.contab.docamm00.docs.bulk (it.cnr.contab.docamm00.docs.bulk)5 it.cnr.contab.doccont00.core.bulk (it.cnr.contab.doccont00.core.bulk)5 Anagrafico_esercizioBulk (it.cnr.contab.anagraf00.core.bulk.Anagrafico_esercizioBulk)4 Anagrafico_esercizioHome (it.cnr.contab.anagraf00.core.bulk.Anagrafico_esercizioHome)4 TerzoBulk (it.cnr.contab.anagraf00.core.bulk.TerzoBulk)4 TerzoHome (it.cnr.contab.anagraf00.core.bulk.TerzoHome)4 it.cnr.contab.coepcoan00.core.bulk (it.cnr.contab.coepcoan00.core.bulk)4 CompensoBulk (it.cnr.contab.compensi00.docs.bulk.CompensoBulk)4 Contributo_ritenutaBulk (it.cnr.contab.compensi00.docs.bulk.Contributo_ritenutaBulk)4 Contributo_ritenutaHome (it.cnr.contab.compensi00.docs.bulk.Contributo_ritenutaHome)4 Ass_tipo_cori_voce_epBulk (it.cnr.contab.compensi00.tabrif.bulk.Ass_tipo_cori_voce_epBulk)4