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.");
}
}
}
}
}
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);
}
}
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;
}
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();
}
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);
}
}
Aggregations