Search in sources :

Example 11 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class DocumentoGenericoComponent method controllaCompetenzaCOGEDettagliObbligazione.

// ^^@@
/**
 * Quadratura delle scadenze obbligazioni di fattura passiva non estera o estera senza lettera di pagamento.
 * PreCondition:
 * La somma algebrica dei dettagli, storni e addebiti (metodo 'calcolaTotaleObbligazionePer') insistenti sull'elenco di dettagli associati
 * alla scadenza obbligazione è uguale all'importo della scadenza obbligazione stessa
 * PostCondition:
 * Permette la continuazione.
 * Quadratura delle scadenze obbligazioni di fattura passiva estera con lettera di pagamento.
 * PreCondition:
 * L'importo della lettera di pagamento è uguale all'importo della scadenza obbligazione
 * PostCondition:
 * Permette la continuazione.
 * Controlli non superati.
 * PreCondition:
 * Non vengono superate tutte le validazioni
 * PostCondition:
 * Emette errore con messaggio:"Quadratura non superata".
 */
// ^^@@
private void controllaCompetenzaCOGEDettagliObbligazione(UserContext aUC, Documento_genericoBulk documentoGenerico, ObbligazioniTable obbligazioniHash) throws it.cnr.jada.comp.ApplicationException {
    if (obbligazioniHash != null) {
        for (java.util.Enumeration e = obbligazioniHash.keys(); e.hasMoreElements(); ) {
            Obbligazione_scadenzarioBulk scadenza = (Obbligazione_scadenzarioBulk) e.nextElement();
            Iterator righeCollegate = ((List) obbligazioniHash.get(scadenza)).iterator();
            if (righeCollegate != null && righeCollegate.hasNext()) {
                Documento_generico_rigaBulk primaRiga = (Documento_generico_rigaBulk) righeCollegate.next();
                java.util.Calendar dtCompetenzaDa = Documento_genericoBulk.getDateCalendar(primaRiga.getDt_da_competenza_coge());
                java.util.Calendar dtCompetenzaA = Documento_genericoBulk.getDateCalendar(primaRiga.getDt_a_competenza_coge());
                while (righeCollegate.hasNext()) {
                    Documento_generico_rigaBulk rigaSuccessiva = (Documento_generico_rigaBulk) righeCollegate.next();
                    java.util.Calendar dtCompetenzaDaSuccessiva = Documento_genericoBulk.getDateCalendar(rigaSuccessiva.getDt_da_competenza_coge());
                    java.util.Calendar dtCompetenzaASuccessiva = Documento_genericoBulk.getDateCalendar(rigaSuccessiva.getDt_a_competenza_coge());
                    if (!dtCompetenzaDa.equals(dtCompetenzaDaSuccessiva) || !dtCompetenzaA.equals(dtCompetenzaASuccessiva))
                        throw new ApplicationException("I dettagli del documento collegati alla scadenza \"" + scadenza.getDs_scadenza() + "\"\nnon hanno lo stesso periodo di competenza! Impossibile salvare.");
                }
            }
        }
    }
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) java.util(java.util) RemoteIterator(it.cnr.jada.util.RemoteIterator)

Example 12 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class ElaboraFileIntraComponent method confermaElaborazione.

public void confermaElaborazione(UserContext context, VIntrastatBulk bulk) throws ComponentException, PersistencyException {
    Fattura_passiva_intraHome home = (Fattura_passiva_intraHome) getHome(context, Fattura_passiva_intraBulk.class);
    Fattura_attiva_intraHome home_att = (Fattura_attiva_intraHome) getHome(context, Fattura_attiva_intraBulk.class);
    FatturaPassivaIntraSHome home_s = (FatturaPassivaIntraSHome) getHome(context, FatturaPassivaIntraSBulk.class);
    FatturaAttivaIntraSHome home_att_s = (FatturaAttivaIntraSHome) getHome(context, FatturaAttivaIntraSBulk.class);
    String prot = null;
    Integer conta = 0;
    if (bulk.getNrProtocolloAcq() == null && bulk.getNrProtocolloVen() == null)
        throw new ApplicationException("Non sono stati indicati ne il numero Protocollo Acq/Serv. ricevuti, ne il numero Protocollo Cessioni/Serv. resi.");
    if (bulk.getNrProtocolloAcq() != null) {
        prot = bulk.getNrProtocolloAcq();
        // per gestire caso in cui un solo flusso viene accettato
        for (Iterator i = (SezioneUnoAcquisti(context, bulk)).iterator(); i.hasNext(); ) {
            conta = conta + 1;
            VIntrastatBulk det = (VIntrastatBulk) i.next();
            Fattura_passiva_intraBulk fat = (Fattura_passiva_intraBulk) home.findByPrimaryKey(new Fattura_passiva_intraBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra()));
            fat.setNr_protocollo(prot);
            fat.setNr_progressivo(conta);
            fat.setFl_inviato(Boolean.TRUE);
            fat.setToBeUpdated();
            updateBulk(context, fat);
        }
        conta = 0;
        for (Iterator i = (SezioneDueAcquisti(context, bulk)).iterator(); i.hasNext(); ) {
            conta = conta + 1;
            VIntrastatBulk det = (VIntrastatBulk) i.next();
            if (det.getPgStorico() == 0) {
                Fattura_passiva_intraBulk fat = (Fattura_passiva_intraBulk) home.findByPrimaryKey(new Fattura_passiva_intraBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra()));
                if (fat != null) {
                    fat.setNr_protocollo(prot);
                    fat.setNr_progressivo(conta);
                    fat.setFl_inviato(Boolean.TRUE);
                    fat.setToBeUpdated();
                    updateBulk(context, fat);
                }
            } else {
                FatturaPassivaIntraSBulk fats = (FatturaPassivaIntraSBulk) home_s.findByPrimaryKey(new FatturaPassivaIntraSBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra(), det.getPgStorico()));
                fats.setNrProtocollo(prot);
                fats.setNrProgressivo(conta);
                fats.setFlInviato(Boolean.TRUE);
                fats.setToBeUpdated();
                updateBulk(context, fats);
            }
        }
        conta = 0;
        for (Iterator i = (SezioneTreAcquisti(context, bulk)).iterator(); i.hasNext(); ) {
            conta = conta + 1;
            VIntrastatBulk det = (VIntrastatBulk) i.next();
            Fattura_passiva_intraBulk fat = (Fattura_passiva_intraBulk) home.findByPrimaryKey(new Fattura_passiva_intraBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra()));
            fat.setNr_protocollo(prot);
            fat.setNr_progressivo(conta);
            fat.setFl_inviato(Boolean.TRUE);
            fat.setToBeUpdated();
            updateBulk(context, fat);
        }
        conta = 0;
        for (Iterator i = (SezioneQuattroAcquisti(context, bulk)).iterator(); i.hasNext(); ) {
            conta = conta + 1;
            VIntrastatBulk det = (VIntrastatBulk) i.next();
            if (det.getPgStorico() == 0) {
                Fattura_passiva_intraBulk fat = (Fattura_passiva_intraBulk) home.findByPrimaryKey(new Fattura_passiva_intraBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra()));
                if (fat != null) {
                    fat.setNr_protocollo(prot);
                    fat.setNr_progressivo(conta);
                    fat.setFl_inviato(Boolean.TRUE);
                    fat.setToBeUpdated();
                    updateBulk(context, fat);
                }
            } else {
                FatturaPassivaIntraSBulk fats = (FatturaPassivaIntraSBulk) home_s.findByPrimaryKey(new FatturaPassivaIntraSBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra(), det.getPgStorico()));
                fats.setNrProtocollo(prot);
                fats.setNrProgressivo(conta);
                fats.setFlInviato(Boolean.TRUE);
                fats.setToBeUpdated();
                updateBulk(context, fats);
            }
        }
    }
    // fine (bulk.getNrProtocolloAcq()!=null
    conta = 0;
    // per gestire caso in cui un solo flusso viene accettato
    if (bulk.getNrProtocolloVen() != null) {
        prot = bulk.getNrProtocolloVen();
        // throw new ApplicationException("Non è stato indicato il numero Protocollo Cessioni/Serv. resi");
        for (Iterator i = (SezioneUnoVendite(context, bulk)).iterator(); i.hasNext(); ) {
            conta = conta + 1;
            VIntrastatBulk det = (VIntrastatBulk) i.next();
            Fattura_attiva_intraBulk fat = (Fattura_attiva_intraBulk) home_att.findByPrimaryKey(new Fattura_attiva_intraBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra()));
            fat.setNr_protocollo(prot);
            fat.setNr_progressivo(conta);
            fat.setFl_inviato(Boolean.TRUE);
            fat.setToBeUpdated();
            updateBulk(context, fat);
        }
        conta = 0;
        for (Iterator i = (SezioneDueVendite(context, bulk)).iterator(); i.hasNext(); ) {
            conta = conta + 1;
            VIntrastatBulk det = (VIntrastatBulk) i.next();
            if (det.getPgStorico() == 0) {
                Fattura_attiva_intraBulk fat = (Fattura_attiva_intraBulk) home_att.findByPrimaryKey(new Fattura_attiva_intraBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra()));
                if (fat != null) {
                    fat.setNr_protocollo(prot);
                    fat.setNr_progressivo(conta);
                    fat.setFl_inviato(Boolean.TRUE);
                    fat.setToBeUpdated();
                    updateBulk(context, fat);
                }
            } else {
                FatturaAttivaIntraSBulk fats = (FatturaAttivaIntraSBulk) home_att_s.findByPrimaryKey(new FatturaAttivaIntraSBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra(), det.getPgStorico()));
                fats.setNrProtocollo(prot);
                fats.setNrProgressivo(conta);
                fats.setFlInviato(Boolean.TRUE);
                fats.setToBeUpdated();
                updateBulk(context, fats);
            }
        }
        conta = 0;
        for (Iterator i = (SezioneTreVendite(context, bulk)).iterator(); i.hasNext(); ) {
            conta = conta + 1;
            VIntrastatBulk det = (VIntrastatBulk) i.next();
            Fattura_attiva_intraBulk fat = (Fattura_attiva_intraBulk) home_att.findByPrimaryKey(new Fattura_attiva_intraBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra()));
            fat.setToBeUpdated();
            fat.setNr_protocollo(prot);
            fat.setNr_progressivo(conta);
            fat.setFl_inviato(Boolean.TRUE);
            fat.setToBeUpdated();
            updateBulk(context, fat);
        }
        conta = 0;
        for (Iterator i = (SezioneQuattroVendite(context, bulk)).iterator(); i.hasNext(); ) {
            conta = conta + 1;
            VIntrastatBulk det = (VIntrastatBulk) i.next();
            if (det.getPgStorico() == 0) {
                Fattura_attiva_intraBulk fat = (Fattura_attiva_intraBulk) home_att.findByPrimaryKey(new Fattura_attiva_intraBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra()));
                if (fat != null) {
                    fat.setNr_protocollo(prot);
                    fat.setNr_progressivo(conta);
                    fat.setFl_inviato(Boolean.TRUE);
                    fat.setToBeUpdated();
                    updateBulk(context, fat);
                }
            } else {
                FatturaAttivaIntraSBulk fats = (FatturaAttivaIntraSBulk) home_att_s.findByPrimaryKey(new FatturaAttivaIntraSBulk(det.getCd_cds(), det.getCd_unita_organizzativa(), det.getEsercizio(), det.getPg_fattura(), det.getPg_riga_intra(), det.getPgStorico()));
                fats.setNrProtocollo(prot);
                fats.setNrProgressivo(conta);
                fats.setFlInviato(Boolean.TRUE);
                fats.setToBeUpdated();
                updateBulk(context, fats);
            }
        }
    }
    // fine (bulk.getNrProtocollVen()!=null
    it.cnr.contab.config00.bulk.Configurazione_cnrBulk config = null;
    try {
        config = Utility.createConfigurazioneCnrComponentSession().getConfigurazione(context, it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context), null, it.cnr.contab.config00.bulk.Configurazione_cnrBulk.PK_COSTANTI, it.cnr.contab.config00.bulk.Configurazione_cnrBulk.SK_MODELLO_INTRASTAT);
        config.setIm01(new BigDecimal(bulk.getNrProtocollo()));
        config.setToBeUpdated();
        updateBulk(context, config);
        // se ribaltata la configurazione aggiorno il valore anche per esercizio +1
        config = Utility.createConfigurazioneCnrComponentSession().getConfigurazione(context, it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context) + 1, null, it.cnr.contab.config00.bulk.Configurazione_cnrBulk.PK_COSTANTI, it.cnr.contab.config00.bulk.Configurazione_cnrBulk.SK_MODELLO_INTRASTAT);
        if (config != null) {
            config.setIm01(new BigDecimal(bulk.getNrProtocollo()));
            config.setToBeUpdated();
            updateBulk(context, config);
        }
    } catch (RemoteException e) {
        throw new ComponentException(e);
    } catch (EJBException e) {
        throw new ComponentException(e);
    }
}
Also used : Fattura_attiva_intraHome(it.cnr.contab.docamm00.intrastat.bulk.Fattura_attiva_intraHome) FatturaAttivaIntraSHome(it.cnr.contab.docamm00.intrastat.bulk.FatturaAttivaIntraSHome) Fattura_passiva_intraBulk(it.cnr.contab.docamm00.intrastat.bulk.Fattura_passiva_intraBulk) Fattura_passiva_intraHome(it.cnr.contab.docamm00.intrastat.bulk.Fattura_passiva_intraHome) FatturaAttivaIntraSBulk(it.cnr.contab.docamm00.intrastat.bulk.FatturaAttivaIntraSBulk) BigDecimal(java.math.BigDecimal) FatturaPassivaIntraSBulk(it.cnr.contab.docamm00.intrastat.bulk.FatturaPassivaIntraSBulk) ApplicationException(it.cnr.jada.comp.ApplicationException) VIntrastatBulk(it.cnr.contab.docamm00.docs.bulk.VIntrastatBulk) Iterator(java.util.Iterator) ComponentException(it.cnr.jada.comp.ComponentException) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) FatturaPassivaIntraSHome(it.cnr.contab.docamm00.intrastat.bulk.FatturaPassivaIntraSHome) Fattura_attiva_intraBulk(it.cnr.contab.docamm00.intrastat.bulk.Fattura_attiva_intraBulk)

Example 13 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class DocAmmFatturazioneElettronicaComponent method impostaDatiPagamento.

private DettaglioPagamentoType impostaDatiPagamento(UserContext userContext, TerzoBulk terzoCnr, ObjectFactory factory, Fattura_attivaBulk fattura) throws ComponentException, RemoteException, EJBException, PersistencyException {
    DettaglioPagamentoType dettaglioPagamento = factory.createDettaglioPagamentoType();
    Rif_modalita_pagamentoBulk modPag = ((Rif_modalita_pagamentoBulk) getHome(userContext, Rif_modalita_pagamentoBulk.class).findByPrimaryKey(fattura.getModalita_pagamento_uo()));
    if (modPag.getTipoPagamentoSdi() == null) {
        throw new ApplicationException("Impossibile Procedere! Per la modalità di Pagamento: " + fattura.getModalita_pagamento_uo().getCd_ds_modalita_pagamento() + " non è stato indicato il Tipo Pagamento per SDI");
    }
    dettaglioPagamento.setModalitaPagamento(ModalitaPagamentoType.fromValue(fattura.getModalita_pagamento_uo().getTipoPagamentoSdi()));
    if (fattura.getFl_liquidazione_differita() && fattura.getEsercizio() > 2014) {
        dettaglioPagamento.setImportoPagamento(fattura.getIm_totale_imponibile().setScale(2));
    } else {
        dettaglioPagamento.setImportoPagamento(fattura.getIm_totale_fattura().setScale(2));
    }
    if (fattura.getBanca_uo() != null && fattura.getBanca_uo().getAbi() != null) {
        dettaglioPagamento.setIstitutoFinanziario(fattura.getBanca_uo().getAbi_cab().getDs_abicab());
        dettaglioPagamento.setIBAN(fattura.getBanca_uo().getCodice_iban());
        dettaglioPagamento.setABI(fattura.getBanca_uo().getAbi());
        dettaglioPagamento.setCAB(fattura.getBanca_uo().getCab());
        dettaglioPagamento.setBIC(fattura.getBanca_uo().getCodice_swift());
    } else if (fattura.getModalita_pagamento_uo().isModalitaBancaItalia()) {
        String conto = Utility.createConfigurazioneCnrComponentSession().getVal01(userContext, it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_CONTO_CORRENTE_BANCA_ITALIA, Configurazione_cnrBulk.SK_CODICE);
        if (conto == null) {
            throw new ApplicationException("Impossibile Procedere! Nell'archivio CONFIGURAZIONE_CNR non è inserito il valore relativo al numero di conto in Banca d'Italia");
        }
        try {
            dettaglioPagamento.setIBAN(impostaCodicePaese(userContext, terzoCnr) + Utility.lpad(conto, 25, '0'));
        } catch (PersistencyException e) {
            throw new ComponentException(e);
        }
    }
    return dettaglioPagamento;
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) DettaglioPagamentoType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DettaglioPagamentoType) ComponentException(it.cnr.jada.comp.ComponentException) PersistencyException(it.cnr.jada.persistency.PersistencyException) Rif_modalita_pagamentoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk)

Example 14 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class DocAmmFatturazioneElettronicaComponent method recuperoCodiceUnivocoFile.

/* 
	 * Conversione da base 10 a base b.
	Si procede nel modo seguente: dividere il numero da convertire per la base b fino a quando l'ultimo quoziente e' minore della base stessa (b), dopodiche' il numero convertito si ottiene prendendo l'ultimo quoziente e tutti i resti delle divisioni, 
	procedendo dall'ultimo resto al primo e scrivendoli da sinistra verso destra.

	Esempio: Convertire il numero 12 da Base 10 a Base 2
	12 : 2 = 6 con resto=0
	6 : 2 = 3 con resto =0
	3 : 2 = 1 con resto =1
	1 : 2 = 0 con resto =1
	quindi: (1100)2

	Esempio: Convertire il numero 120 da Base 10 a Base 8
	120 : 8 = 15 con resto = 0
	15 : 8 = 1 con resto = 7
	1 : 8 = 0 con resto 1
	quindi: (170)8

	Esempio: Convertire il numero 520 da Base 10 a Base 16
	520 : 16 = 32 con resto = 8
	32 : 16 = 2 con resto = 0
	2 : 16 = 0 con resto 2
	quindi: (208)16
	 */
private String recuperoCodiceUnivocoFile(Fattura_attivaBulk fattura) throws ComponentException {
    StringBuffer result = new StringBuffer();
    if (fattura.getProgrUnivocoAnno() > 99999) {
        throw new ApplicationException("Impossibile Procedere! La Fattura: " + fattura.getEsercizio() + "-" + fattura.getPg_fattura_attiva() + " ha un progressivo univoco per anno troppo grande");
    } else {
        String stringaUnivoca = fattura.getEsercizio().toString() + Utility.lpad(fattura.getProgrUnivocoAnno().toString(), 5, '0');
        BigDecimal idUnivocoBigD = new BigDecimal(stringaUnivoca);
        Hashtable<Integer, Integer> risultati = new Hashtable<Integer, Integer>();
        BigDecimal base = new BigDecimal(62);
        for (int i = 4; i > 0; i--) {
            BigDecimal[] risultatoInteroEResto = idUnivocoBigD.divideAndRemainder(base);
            risultati.put(i, risultatoInteroEResto[1].intValue());
            idUnivocoBigD = risultatoInteroEResto[0];
        }
        risultati.put(0, idUnivocoBigD.intValue());
        for (int i = 0; i < 5; i++) {
            Integer resto = risultati.get(i);
            result.append(conversioneNumeriIdUnivocoNomeFile.get(resto));
        }
    }
    return result.toString();
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) BigDecimal(java.math.BigDecimal)

Example 15 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class DocAmmFatturazioneElettronicaComponent method preparaFattura.

public FatturaElettronicaType preparaFattura(UserContext userContext, Fattura_attivaBulk fattura) throws ComponentException {
    try {
        ObjectFactory factory = new ObjectFactory();
        FatturaElettronicaType fatturaType = factory.createFatturaElettronicaType();
        fatturaType.setSistemaEmittente(Utility.APPLICATION_TITLE.substring(0, 5));
        fatturaType.setVersione(fattura.getCodiceUnivocoUfficioIpa() == null ? FormatoTrasmissioneType.FPR_12 : FormatoTrasmissioneType.FPA_12);
        FatturaElettronicaHeaderType fatturaHeaderType = factory.createFatturaElettronicaHeaderType();
        TerzoBulk terzoCnr = ((TerzoHome) getHome(userContext, TerzoBulk.class)).findTerzoEnte();
        TerzoBulk cliente = fattura.getCliente();
        TerzoBulk terzoUo = fattura.getTerzo_uo();
        if (terzoCnr != null) {
            DatiTrasmissioneType datiTrasmissione = factory.createDatiTrasmissioneType();
            datiTrasmissione.setIdTrasmittente(impostaIdTrasmittente(userContext, factory, terzoCnr));
            datiTrasmissione.setProgressivoInvio(fattura.getEsercizio().toString() + Utility.lpad(fattura.getProgrUnivocoAnno().toString(), 6, '0'));
            if (fattura.getCodiceUnivocoUfficioIpa() != null) {
                datiTrasmissione.setCodiceDestinatario(fattura.getCodiceUnivocoUfficioIpa());
            } else {
                if (fattura.getCodiceDestinatarioFatt() != null) {
                    datiTrasmissione.setCodiceDestinatario(fattura.getCodiceDestinatarioFatt());
                } else {
                    if (fattura.isFatturaEstera()) {
                        datiTrasmissione.setCodiceDestinatario(CODICE_DESTINATARIO_ESTERO);
                    } else {
                        datiTrasmissione.setCodiceDestinatario(CODICE_DESTINATARIO_CON_PEC_O_NON_REGISTRATO);
                    }
                    datiTrasmissione.setPECDestinatario(fattura.getPecFatturaElettronica());
                }
            }
            ContattiTrasmittenteType contattiTrasmittenteType = factory.createContattiTrasmittenteType();
            String eMailReferente = Utility.createConfigurazioneCnrComponentSession().getVal01(userContext, it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FATTURAZIONE_ELETTRONICA, Configurazione_cnrBulk.SK_MAIL_REFERENTE_TECNICO);
            contattiTrasmittenteType.setEmail(eMailReferente);
            String telefonoReferente = Utility.createConfigurazioneCnrComponentSession().getVal01(userContext, it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_FATTURAZIONE_ELETTRONICA, Configurazione_cnrBulk.SK_TELEFONO_REFERENTE_TECNICO);
            contattiTrasmittenteType.setTelefono(telefonoReferente);
            datiTrasmissione.setContattiTrasmittente(contattiTrasmittenteType);
            datiTrasmissione.setFormatoTrasmissione(fattura.getCodiceUnivocoUfficioIpa() == null ? FormatoTrasmissioneType.FPR_12 : FormatoTrasmissioneType.FPA_12);
            fatturaHeaderType.setDatiTrasmissione(datiTrasmissione);
            CedentePrestatoreType cedentePrestatoreType = factory.createCedentePrestatoreType();
            DatiAnagraficiCedenteType anagraficiCedenteType = factory.createDatiAnagraficiCedenteType();
            if (terzoCnr.getAnagrafico() == null || terzoCnr.getAnagrafico().getPartita_iva() == null)
                throw new ApplicationException("Impossibile Procedere! Manca la Partita Iva per il codice Anagrafica: " + terzoCnr.getCd_anag() + " del terzo: " + terzoCnr.getCd_terzo());
            anagraficiCedenteType.setIdFiscaleIVA(impostaIdFiscale(userContext, factory, terzoCnr, null));
            if (terzoCnr.getAnagrafico().getCodice_fiscale() == null)
                throw new ApplicationException("Impossibile Procedere! Manca il Codice Fiscale per il codice Anagrafica: " + terzoCnr.getCd_anag() + " del terzo: " + terzoCnr.getCd_terzo());
            anagraficiCedenteType.setCodiceFiscale(terzoCnr.getAnagrafico().getCodice_fiscale());
            anagraficiCedenteType.setAnagrafica(impostaAnagrafica(factory, terzoCnr));
            anagraficiCedenteType.setRegimeFiscale(RegimeFiscaleType.RF_01);
            cedentePrestatoreType.setDatiAnagrafici(anagraficiCedenteType);
            cedentePrestatoreType.setSede(impostaIndirizzo(userContext, factory, terzoUo));
            // TODO: Per il momento non lo gestiamo. Il dato non è obbligatorio.
            // ContattiType contattiCedente = factory.createContattiType();
            // contattiCedente.setEmail(value);
            // cedentePrestatoreType.setContatti(contattiCedente);
            fatturaHeaderType.setCedentePrestatore(cedentePrestatoreType);
            CessionarioCommittenteType clienteType = factory.createCessionarioCommittenteType();
            DatiAnagraficiCessionarioType datiAnagraficiClienteType = factory.createDatiAnagraficiCessionarioType();
            datiAnagraficiClienteType.setAnagrafica(impostaAnagrafica(factory, cliente));
            if (fattura.getFl_intra_ue() && cliente.getAnagrafico().isPersonaGiuridica() && cliente.getCodiceUnivocoUfficioIpa() == null && cliente.getAnagrafico().getPartita_iva() == null) {
                throw new ApplicationException("Impossibile Procedere! E' necessario indicare la partita IVA");
            }
            if ((!fattura.isFatturaEstera() || !cliente.getAnagrafico().isPersonaGiuridica()) && (fattura.getCodice_fiscale() == null && !cliente.getAnagrafico().isGruppoIVA())) {
                throw new ApplicationException("Impossibile Procedere! Manca il Codice Fiscale per la Fattura: " + fattura.getEsercizio() + "-" + fattura.getPg_fattura_attiva());
            }
            if (!fattura.isFatturaEstera()) {
                datiAnagraficiClienteType.setCodiceFiscale(fattura.getCodice_fiscale());
            }
            if (cliente.getAnagrafico() != null && cliente.getAnagrafico().getPartita_iva() != null && (!cliente.getAnagrafico().isEntePubblico() || cliente.getAnagrafico().isPartitaIvaVerificata() || (fattura.getCodice_fiscale() != null && cliente.getAnagrafico().getPartita_iva().compareTo(fattura.getCodice_fiscale()) != 0))) {
                datiAnagraficiClienteType.setIdFiscaleIVA(impostaIdFiscale(userContext, factory, cliente, fattura));
            } else if (!StringUtils.hasLength(datiAnagraficiClienteType.getCodiceFiscale())) {
                datiAnagraficiClienteType.setIdFiscaleIVA(impostaIdFiscale(userContext, factory, cliente, fattura));
            } else if (fattura.isFatturaEstera() && cliente.getAnagrafico().isPersonaFisica()) {
                IdFiscaleType idFiscale = factory.createIdFiscaleType();
                idFiscale.setIdCodice("99999999999");
                idFiscale.setIdPaese(impostaCodicePaese(userContext, cliente));
                datiAnagraficiClienteType.setIdFiscaleIVA(idFiscale);
            }
            if (!StringUtils.hasLength(datiAnagraficiClienteType.getCodiceFiscale()) && !StringUtils.hasLength(datiAnagraficiClienteType.getIdFiscaleIVA().getIdCodice())) {
                datiAnagraficiClienteType.getIdFiscaleIVA().setIdCodice("99999999999");
            }
            clienteType.setDatiAnagrafici(datiAnagraficiClienteType);
            clienteType.setSede(impostaIndirizzo(userContext, factory, cliente, fattura));
            fatturaHeaderType.setCessionarioCommittente(clienteType);
            fatturaType.setFatturaElettronicaHeader(fatturaHeaderType);
            FatturaElettronicaBodyType fatturaBodyType = factory.createFatturaElettronicaBodyType();
            DatiGeneraliType datiGenerali = factory.createDatiGeneraliType();
            DatiGeneraliDocumentoType datiGeneraliDocumento = factory.createDatiGeneraliDocumentoType();
            datiGeneraliDocumento.setTipoDocumento(tipoDocumento.get(fattura.getTi_fattura()));
            datiGeneraliDocumento.setDivisa("EUR");
            datiGeneraliDocumento.setData(convertDateToXmlGregorian(it.cnr.jada.util.ejb.EJBCommonServices.getServerDate()));
            datiGeneraliDocumento.setNumero(fattura.recuperoIdFatturaAsString());
            List list = (List) ((FatturaAttivaSingolaComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRDOCAMM00_EJB_FatturaAttivaSingolaComponentSession", FatturaAttivaSingolaComponentSession.class)).findDettagli(userContext, fattura);
            if (list != null) {
                BulkList dettaglio = new BulkList(list);
                if (dettaglio == null || dettaglio.isEmpty()) {
                    throw new ApplicationException("Impossibile Procedere! La Fattura: " + fattura.getEsercizio() + "-" + fattura.getPg_fattura_attiva() + " non ha dettagli");
                }
                Boolean esisteBollo = gestioneBollo(userContext, factory, datiGeneraliDocumento, fattura, dettaglio);
                datiGeneraliDocumento.setImportoTotaleDocumento(fattura.getIm_totale_fattura().setScale(2));
                String descrizione = "";
                if (fattura.getDs_fattura_attiva() != null) {
                    descrizione = fattura.getDs_fattura_attiva();
                }
                List<String> listaCausali = new ArrayList<String>();
                if (fattura.getRiferimento_ordine() != null && fattura.getDt_ordine() == null) {
                    if (!descrizione.equals("")) {
                        descrizione += "  ";
                    }
                    descrizione += "Riferimento ordine:" + fattura.getRiferimento_ordine();
                }
                int lunghezzaStringaCausale = 200;
                int numeroCaratteriFinali = 0;
                for (int i = 0; i <= descrizione.length() / lunghezzaStringaCausale; i++) {
                    int numeroCaratteri = i * lunghezzaStringaCausale;
                    int numeroCaratteriOccorrenti = (numeroCaratteri + lunghezzaStringaCausale);
                    if (numeroCaratteriOccorrenti > descrizione.length()) {
                        numeroCaratteriFinali = numeroCaratteri + (descrizione.length() - numeroCaratteri);
                    } else {
                        numeroCaratteriFinali = numeroCaratteri + lunghezzaStringaCausale;
                    }
                    if (numeroCaratteri < numeroCaratteriFinali) {
                        String causale = descrizione.substring(numeroCaratteri, numeroCaratteriFinali);
                        listaCausali.add(RemoveAccent.convert(causale));
                    }
                }
                datiGeneraliDocumento.getCausale().addAll(listaCausali);
                datiGenerali.setDatiGeneraliDocumento(datiGeneraliDocumento);
                DatiBeniServiziType datiBeniServizi = factory.createDatiBeniServiziType();
                List<DettaglioLineeType> listaDettagli = new ArrayList<DettaglioLineeType>();
                List<RiepilogoPerAliquotaIVA> listaRiepilogo = new ArrayList<DocAmmFatturazioneElettronicaComponent.RiepilogoPerAliquotaIVA>();
                HashMap<ContrattoBulk, List<Integer>> mappaContratti = new HashMap<ContrattoBulk, List<Integer>>();
                HashMap<Fattura_attivaBulk, List<Integer>> dettagliNoteSenzaContratto = new HashMap<Fattura_attivaBulk, List<Integer>>();
                HashMap<Fattura_attivaBulk, HashMap<ContrattoBulk, List<Integer>>> mappaDocumentiCollegati = new HashMap<Fattura_attivaBulk, HashMap<ContrattoBulk, List<Integer>>>();
                List<Integer> listaTutteLinee = new ArrayList<>();
                for (Iterator<Fattura_attiva_rigaBulk> i = dettaglio.iterator(); i.hasNext(); ) {
                    Fattura_attiva_rigaBulk riga = (Fattura_attiva_rigaBulk) i.next();
                    listaTutteLinee.add(riga.getProgressivo_riga().intValue());
                    DettaglioLineeType rigaFattura = factory.createDettaglioLineeType();
                    rigaFattura.setNumeroLinea(riga.getProgressivo_riga().intValue());
                    if (riga.getDs_riga_fattura() != null) {
                        rigaFattura.setDescrizione(RemoveAccent.convert(riga.getDs_riga_fattura().replaceAll("\\u20AC", "E")));
                    } else {
                        rigaFattura.setDescrizione("Descrizione");
                    }
                    rigaFattura.setQuantita(riga.getQuantita().setScale(2));
                    if (riga.getTariffario() != null && riga.getTariffario().getCd_tariffario() != null) {
                        if (riga.getTariffario().getUnita_misura() == null)
                            riga.setTariffario((TariffarioBulk) findByPrimaryKey(userContext, riga.getTariffario()));
                        rigaFattura.setUnitaMisura(riga.getTariffario().getUnita_misura());
                    }
                    rigaFattura.setDataInizioPeriodo(convertDateToXmlGregorian(riga.getDt_da_competenza_coge()));
                    rigaFattura.setDataFinePeriodo(convertDateToXmlGregorian(riga.getDt_a_competenza_coge()));
                    rigaFattura.setPrezzoUnitario(riga.getPrezzo_unitario().setScale(2));
                    rigaFattura.setPrezzoTotale(rigaFattura.getPrezzoUnitario().multiply(rigaFattura.getQuantita()).setScale(2));
                    if (riga.getVoce_iva() != null && riga.getVoce_iva().getCd_voce_iva() != null && riga.getVoce_iva().getPercentuale() == null)
                        riga.setVoce_iva((Voce_ivaBulk) findByPrimaryKey(userContext, riga.getVoce_iva()));
                    rigaFattura.setAliquotaIVA(Utility.nvl(riga.getVoce_iva().getPercentuale()).setScale(2));
                    rigaFattura.setNatura(impostaDatiNatura(riga.getVoce_iva().getNaturaOperNonImpSdi()));
                    listaDettagli.add(rigaFattura);
                    if (fattura.getTi_fattura().equals(Fattura_attivaBulk.TIPO_NOTA_DI_CREDITO)) {
                        impostaDatiPerNoteCredito(userContext, mappaDocumentiCollegati, riga, dettagliNoteSenzaContratto);
                    }
                    preparaDatiContratto(userContext, mappaContratti, riga);
                    impostaDatiPerRiepilogoDatiIva(listaRiepilogo, riga);
                }
                datiBeniServizi.getDettaglioLinee().addAll(listaDettagli);
                impostaDatiContratto(factory, datiGenerali, mappaContratti);
                impostaDatiDocumentiCollegati(factory, datiGenerali, mappaDocumentiCollegati, dettagliNoteSenzaContratto);
                if (!fattura.isFatturaEstera() && fattura.getRiferimento_ordine() != null && fattura.getDt_ordine() != null) {
                    DatiDocumentiCorrelatiType datiOrdineAcquisto = factory.createDatiDocumentiCorrelatiType();
                    datiOrdineAcquisto.getRiferimentoNumeroLinea().addAll(listaTutteLinee);
                    datiOrdineAcquisto.setData(convertDateToXmlGregorian(fattura.getDt_ordine()));
                    datiOrdineAcquisto.setIdDocumento(substring(fattura.getRiferimento_ordine(), 20));
                    String soggettoOrdine = null;
                    if (!fattura.getFl_ordine_elettronico()) {
                        soggettoOrdine = "#NO#";
                    } else {
                        if (fattura.getCodiceUnivocoUfficioIpa() != null) {
                            soggettoOrdine = "#0201:" + fattura.getCodiceUnivocoUfficioIpa() + "#";
                        } else {
                            if (fattura.getPartita_iva() != null) {
                                soggettoOrdine = "#9906:";
                            } else {
                                soggettoOrdine = "#9907:";
                            }
                            if (fattura.getCodiceDestinatarioFatt() != null) {
                                soggettoOrdine += fattura.getCodiceDestinatarioFatt();
                            } else if (fattura.getPecFatturaElettronica() != null) {
                                soggettoOrdine += fattura.getPecFatturaElettronica();
                            } else {
                                soggettoOrdine += datiTrasmissione.getCodiceDestinatario();
                            }
                            soggettoOrdine += "#";
                        }
                    }
                    datiOrdineAcquisto.setCodiceCommessaConvenzione(soggettoOrdine);
                    datiGenerali.getDatiOrdineAcquisto().add(datiOrdineAcquisto);
                }
                fatturaBodyType.setDatiGenerali(datiGenerali);
                List<DatiRiepilogoType> listaRiepilogoType = new ArrayList<DatiRiepilogoType>();
                for (Iterator<RiepilogoPerAliquotaIVA> i = listaRiepilogo.iterator(); i.hasNext(); ) {
                    RiepilogoPerAliquotaIVA riepilogo = (RiepilogoPerAliquotaIVA) i.next();
                    DatiRiepilogoType datiRiepilogo = factory.createDatiRiepilogoType();
                    datiRiepilogo.setAliquotaIVA(riepilogo.getAliquota());
                    if (fattura.getFl_liquidazione_differita()) {
                        datiRiepilogo.setEsigibilitaIVA(fattura.getEsercizio() > 2014 ? EsigibilitaIVAType.S : EsigibilitaIVAType.D);
                    } else {
                        datiRiepilogo.setEsigibilitaIVA(EsigibilitaIVAType.I);
                    }
                    datiRiepilogo.setImponibileImporto(riepilogo.getImponibile().setScale(2));
                    datiRiepilogo.setImposta(riepilogo.getImposta().setScale(2));
                    impostaDatiNonImponibile(fattura, riepilogo, datiRiepilogo);
                    listaRiepilogoType.add(datiRiepilogo);
                }
                datiBeniServizi.getDatiRiepilogo().addAll(listaRiepilogoType);
                fatturaBodyType.setDatiBeniServizi(datiBeniServizi);
                DatiPagamentoType datiPagamento = factory.createDatiPagamentoType();
                datiPagamento.setCondizioniPagamento(CondizioniPagamentoType.TP_02);
                List<DettaglioPagamentoType> listaDettagliPagamento = new ArrayList<DettaglioPagamentoType>();
                if (fattura.getTi_fattura().equals(Fattura_attivaBulk.TIPO_NOTA_DI_CREDITO)) {
                    for (Iterator<Fattura_attivaBulk> y = mappaDocumentiCollegati.keySet().iterator(); y.hasNext(); ) {
                        Fattura_attivaBulk fatturaCollegata = y.next();
                        listaDettagliPagamento.add(impostaDatiPagamento(userContext, terzoCnr, factory, fatturaCollegata));
                    }
                } else {
                    DettaglioPagamentoType dettaglioPagamento = impostaDatiPagamento(userContext, terzoCnr, factory, fattura);
                    dettaglioPagamento.setCodicePagamento(fattura.recuperoIdFatturaAsString());
                    listaDettagliPagamento.add(dettaglioPagamento);
                }
                datiPagamento.getDettaglioPagamento().addAll(listaDettagliPagamento);
                List<DatiPagamentoType> listaDatiPagamento = new ArrayList<DatiPagamentoType>();
                listaDatiPagamento.add(datiPagamento);
                fatturaBodyType.getDatiPagamento().addAll(listaDatiPagamento);
                List<FatturaElettronicaBodyType> listaFattureBody = new ArrayList<FatturaElettronicaBodyType>();
                listaFattureBody.add(fatturaBodyType);
                fatturaType.getFatturaElettronicaBody().addAll(listaFattureBody);
            }
        }
        return fatturaType;
    } catch (Exception e) {
        throw handleException(e);
    }
}
Also used : DatiBeniServiziType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DatiBeniServiziType) CessionarioCommittenteType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.CessionarioCommittenteType) TariffarioBulk(it.cnr.contab.docamm00.tabrif.bulk.TariffarioBulk) ObjectFactory(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.ObjectFactory) TerzoBulk(it.cnr.contab.anagraf00.core.bulk.TerzoBulk) BulkList(it.cnr.jada.bulk.BulkList) DettaglioPagamentoType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DettaglioPagamentoType) DatiGeneraliType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DatiGeneraliType) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) DatiDocumentiCorrelatiType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DatiDocumentiCorrelatiType) DatiPagamentoType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DatiPagamentoType) DatiAnagraficiCessionarioType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DatiAnagraficiCessionarioType) DatiRiepilogoType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DatiRiepilogoType) ContattiTrasmittenteType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.ContattiTrasmittenteType) DatiTrasmissioneType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DatiTrasmissioneType) TerzoHome(it.cnr.contab.anagraf00.core.bulk.TerzoHome) Voce_ivaBulk(it.cnr.contab.docamm00.tabrif.bulk.Voce_ivaBulk) FatturaElettronicaType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.FatturaElettronicaType) DatiAnagraficiCedenteType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DatiAnagraficiCedenteType) BulkList(it.cnr.jada.bulk.BulkList) DettaglioLineeType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DettaglioLineeType) DatatypeConfigurationException(javax.xml.datatype.DatatypeConfigurationException) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) IOException(java.io.IOException) ComponentException(it.cnr.jada.comp.ComponentException) CedentePrestatoreType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.CedentePrestatoreType) ApplicationException(it.cnr.jada.comp.ApplicationException) DatiGeneraliDocumentoType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.DatiGeneraliDocumentoType) IdFiscaleType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.IdFiscaleType) FatturaElettronicaHeaderType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.FatturaElettronicaHeaderType) FatturaElettronicaBodyType(it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.FatturaElettronicaBodyType)

Aggregations

ApplicationException (it.cnr.jada.comp.ApplicationException)625 PersistencyException (it.cnr.jada.persistency.PersistencyException)302 ComponentException (it.cnr.jada.comp.ComponentException)288 RemoteException (java.rmi.RemoteException)186 IntrospectionException (it.cnr.jada.persistency.IntrospectionException)159 BigDecimal (java.math.BigDecimal)140 SQLException (java.sql.SQLException)133 SQLBuilder (it.cnr.jada.persistency.sql.SQLBuilder)122 EJBException (javax.ejb.EJBException)114 CNRUserContext (it.cnr.contab.utenze00.bp.CNRUserContext)86 UserContext (it.cnr.jada.UserContext)81 BulkList (it.cnr.jada.bulk.BulkList)81 DetailedRuntimeException (it.cnr.jada.DetailedRuntimeException)76 java.util (java.util)76 Iterator (java.util.Iterator)75 OggettoBulk (it.cnr.jada.bulk.OggettoBulk)73 ValidationException (it.cnr.jada.bulk.ValidationException)72 ApplicationRuntimeException (it.cnr.jada.comp.ApplicationRuntimeException)68 BusinessProcessException (it.cnr.jada.action.BusinessProcessException)63 Timestamp (java.sql.Timestamp)63