use of it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.CessionarioCommittenteType 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);
}
}
use of it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1.CessionarioCommittenteType in project sigla-main by consiglionazionaledellericerche.
the class RicezioneFatture method elaboraFattura.
private void elaboraFattura(FatturaElettronicaType fatturaElettronicaType, BigInteger identificativoSdI, String nomeFile, String replyTo, String path) throws ApplicationException {
FatturaElettronicaPassivaComponentSession component = (FatturaElettronicaPassivaComponentSession) EJBCommonServices.createEJB("CNRDOCAMM00_EJB_FatturaElettronicaPassivaComponentSession");
UserContext userContext = createUserContext();
DatiTrasmissioneType datiTrasmissione = fatturaElettronicaType.getFatturaElettronicaHeader().getDatiTrasmissione();
IdFiscaleType idTrasmittente = datiTrasmissione.getIdTrasmittente();
CessionarioCommittenteType committente = fatturaElettronicaType.getFatturaElettronicaHeader().getCessionarioCommittente();
CedentePrestatoreType cedentePrestatore = fatturaElettronicaType.getFatturaElettronicaHeader().getCedentePrestatore();
RappresentanteFiscaleType rappresentante = fatturaElettronicaType.getFatturaElettronicaHeader().getRappresentanteFiscale();
TerzoIntermediarioSoggettoEmittenteType intermediario = fatturaElettronicaType.getFatturaElettronicaHeader().getTerzoIntermediarioOSoggettoEmittente();
DocumentoEleTrasmissioneBulk docTrasmissione = new DocumentoEleTrasmissioneBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue());
docTrasmissione.setProgressivoInvio(datiTrasmissione.getProgressivoInvio());
if (datiTrasmissione.getFormatoTrasmissione() != null)
docTrasmissione.setFormatoTrasmissione(datiTrasmissione.getFormatoTrasmissione().value());
else
docTrasmissione.setFormatoTrasmissione(FormatoTrasmissioneType.FPA_12.value());
docTrasmissione.setCodiceDestinatario(datiTrasmissione.getCodiceDestinatario());
docTrasmissione.setCodiceUnivocoSdi(identificativoSdI.longValue());
docTrasmissione.setDataRicezione(EJBCommonServices.getServerTimestamp());
docTrasmissione.setNomeFile(nomeFile);
StoreService storeService = SpringUtil.getBean("storeService", StoreService.class);
docTrasmissione.setCmisNodeRef(storeService.getStorageObjectByPath(path).getKey());
if (fatturaElettronicaType.getFatturaElettronicaHeader().getSoggettoEmittente() != null)
docTrasmissione.setSoggettoEmittente(fatturaElettronicaType.getFatturaElettronicaHeader().getSoggettoEmittente().name());
if (committente != null) {
if (committente.getDatiAnagrafici() != null) {
docTrasmissione.setCommittenteCodicefiscale(committente.getDatiAnagrafici().getCodiceFiscale());
if (committente.getDatiAnagrafici().getIdFiscaleIVA() != null) {
docTrasmissione.setCommittenteCodice(committente.getDatiAnagrafici().getIdFiscaleIVA().getIdCodice());
docTrasmissione.setCommittentePaese(committente.getDatiAnagrafici().getIdFiscaleIVA().getIdPaese());
}
if (committente.getDatiAnagrafici().getAnagrafica() != null) {
docTrasmissione.setCommittenteCognome(committente.getDatiAnagrafici().getAnagrafica().getCognome());
docTrasmissione.setCommittenteNome(committente.getDatiAnagrafici().getAnagrafica().getNome());
docTrasmissione.setCommittenteDenominazione(committente.getDatiAnagrafici().getAnagrafica().getDenominazione());
docTrasmissione.setCommittenteTitolo(committente.getDatiAnagrafici().getAnagrafica().getTitolo());
docTrasmissione.setCommittenteCodeori(committente.getDatiAnagrafici().getAnagrafica().getCodEORI());
}
}
if (committente.getSede() != null) {
docTrasmissione.setCommittenteCap(committente.getSede().getCAP());
docTrasmissione.setCommittenteComune(committente.getSede().getComune());
docTrasmissione.setCommittenteIndirizzo(committente.getSede().getIndirizzo());
docTrasmissione.setCommittenteNazione(committente.getSede().getNazione());
docTrasmissione.setCommittenteNumerocivico(committente.getSede().getNumeroCivico());
docTrasmissione.setCommittenteProvincia(committente.getSede().getProvincia());
}
}
if (intermediario != null) {
if (intermediario.getDatiAnagrafici() != null) {
docTrasmissione.setIntermediarioCodicefiscale(intermediario.getDatiAnagrafici().getCodiceFiscale());
if (intermediario.getDatiAnagrafici().getIdFiscaleIVA() != null) {
docTrasmissione.setIntermediarioCodice(intermediario.getDatiAnagrafici().getIdFiscaleIVA().getIdCodice());
docTrasmissione.setIntermediarioPaese(intermediario.getDatiAnagrafici().getIdFiscaleIVA().getIdPaese());
}
if (intermediario.getDatiAnagrafici().getAnagrafica() != null) {
docTrasmissione.setIntermediarioCodeori(intermediario.getDatiAnagrafici().getAnagrafica().getCodEORI());
docTrasmissione.setIntermediarioCognome(intermediario.getDatiAnagrafici().getAnagrafica().getCognome());
docTrasmissione.setIntermediarioDenominazione(intermediario.getDatiAnagrafici().getAnagrafica().getDenominazione());
docTrasmissione.setIntermediarioNome(intermediario.getDatiAnagrafici().getAnagrafica().getNome());
docTrasmissione.setIntermediarioTitolo(intermediario.getDatiAnagrafici().getAnagrafica().getTitolo());
}
}
}
if (cedentePrestatore != null) {
docTrasmissione.setRiferimentoAmministrazione(cedentePrestatore.getRiferimentoAmministrazione());
if (cedentePrestatore.getDatiAnagrafici() != null) {
if (cedentePrestatore.getDatiAnagrafici().getDataIscrizioneAlbo() != null)
docTrasmissione.setDataiscrizionealbo(convert(cedentePrestatore.getDatiAnagrafici().getDataIscrizioneAlbo()));
docTrasmissione.setAlboprofessionale(cedentePrestatore.getDatiAnagrafici().getAlboProfessionale());
docTrasmissione.setProvinciaalbo(cedentePrestatore.getDatiAnagrafici().getProvinciaAlbo());
docTrasmissione.setNumeroalbo(cedentePrestatore.getDatiAnagrafici().getNumeroIscrizioneAlbo());
docTrasmissione.setPrestatoreCodicefiscale(cedentePrestatore.getDatiAnagrafici().getCodiceFiscale());
if (cedentePrestatore.getDatiAnagrafici().getIdFiscaleIVA() != null) {
docTrasmissione.setPrestatoreCodice(cedentePrestatore.getDatiAnagrafici().getIdFiscaleIVA().getIdCodice());
docTrasmissione.setPrestatorePaese(cedentePrestatore.getDatiAnagrafici().getIdFiscaleIVA().getIdPaese());
}
if (cedentePrestatore.getDatiAnagrafici().getAnagrafica() != null) {
docTrasmissione.setPrestatoreCognome(cedentePrestatore.getDatiAnagrafici().getAnagrafica().getCognome());
docTrasmissione.setPrestatoreNome(cedentePrestatore.getDatiAnagrafici().getAnagrafica().getNome());
docTrasmissione.setPrestatoreDenominazione(cedentePrestatore.getDatiAnagrafici().getAnagrafica().getDenominazione());
docTrasmissione.setPrestatoreTitolo(cedentePrestatore.getDatiAnagrafici().getAnagrafica().getTitolo());
docTrasmissione.setPrestatoreCodeori(cedentePrestatore.getDatiAnagrafici().getAnagrafica().getCodEORI());
}
if (cedentePrestatore.getDatiAnagrafici().getRegimeFiscale() != null) {
docTrasmissione.setRegimefiscale(cedentePrestatore.getDatiAnagrafici().getRegimeFiscale().name());
}
}
if (cedentePrestatore.getSede() != null) {
docTrasmissione.setPrestatoreCap(cedentePrestatore.getSede().getCAP());
docTrasmissione.setPrestatoreComune(cedentePrestatore.getSede().getComune());
docTrasmissione.setPrestatoreIndirizzo(cedentePrestatore.getSede().getIndirizzo());
docTrasmissione.setPrestatoreNazione(cedentePrestatore.getSede().getNazione());
docTrasmissione.setPrestatoreNumerocivico(cedentePrestatore.getSede().getNumeroCivico());
docTrasmissione.setPrestatoreProvincia(cedentePrestatore.getSede().getProvincia());
}
if (cedentePrestatore.getStabileOrganizzazione() != null) {
docTrasmissione.setStabileorgCap(cedentePrestatore.getStabileOrganizzazione().getCAP());
docTrasmissione.setStabileorgComune(cedentePrestatore.getStabileOrganizzazione().getComune());
docTrasmissione.setStabileorgIndirizzo(cedentePrestatore.getStabileOrganizzazione().getIndirizzo());
docTrasmissione.setStabileorgNazione(cedentePrestatore.getStabileOrganizzazione().getNazione());
docTrasmissione.setStabileorgNumerocivico(cedentePrestatore.getStabileOrganizzazione().getNumeroCivico());
docTrasmissione.setStabileorgProvincia(cedentePrestatore.getStabileOrganizzazione().getProvincia());
}
if (cedentePrestatore.getContatti() != null) {
docTrasmissione.setPrestatoreEmail(cedentePrestatore.getContatti().getEmail());
docTrasmissione.setPrestatoreFax(cedentePrestatore.getContatti().getFax());
docTrasmissione.setPrestatoreTelefono(cedentePrestatore.getContatti().getTelefono());
}
if (cedentePrestatore.getIscrizioneREA() != null) {
docTrasmissione.setReaCapitalesociale(cedentePrestatore.getIscrizioneREA().getCapitaleSociale());
docTrasmissione.setReaNumerorea(cedentePrestatore.getIscrizioneREA().getNumeroREA());
if (cedentePrestatore.getIscrizioneREA().getSocioUnico() != null)
docTrasmissione.setReaSociounico(cedentePrestatore.getIscrizioneREA().getSocioUnico().name());
if (cedentePrestatore.getIscrizioneREA().getStatoLiquidazione() != null)
docTrasmissione.setReaStatoliquidazione(cedentePrestatore.getIscrizioneREA().getStatoLiquidazione().name());
docTrasmissione.setReaUfficio(cedentePrestatore.getIscrizioneREA().getUfficio());
}
}
if (rappresentante != null) {
if (rappresentante.getDatiAnagrafici() != null) {
docTrasmissione.setRappresentanteCodicefiscale(rappresentante.getDatiAnagrafici().getCodiceFiscale());
if (rappresentante.getDatiAnagrafici().getAnagrafica() != null) {
docTrasmissione.setRappresentanteCodeori(rappresentante.getDatiAnagrafici().getAnagrafica().getCodEORI());
docTrasmissione.setRappresentanteCognome(rappresentante.getDatiAnagrafici().getAnagrafica().getCognome());
docTrasmissione.setRappresentanteDenominazione(rappresentante.getDatiAnagrafici().getAnagrafica().getDenominazione());
docTrasmissione.setRappresentanteNome(rappresentante.getDatiAnagrafici().getAnagrafica().getNome());
docTrasmissione.setRappresentanteTitolo(rappresentante.getDatiAnagrafici().getAnagrafica().getTitolo());
}
if (rappresentante.getDatiAnagrafici().getIdFiscaleIVA() != null) {
docTrasmissione.setRappresentanteCodice(rappresentante.getDatiAnagrafici().getIdFiscaleIVA().getIdCodice());
docTrasmissione.setRappresentantePaese(rappresentante.getDatiAnagrafici().getIdFiscaleIVA().getIdPaese());
}
}
}
docTrasmissione.setTrasmittenteEmail(docTrasmissione.getTrasmittenteEmail());
docTrasmissione.setTrasmittenteTelefono(docTrasmissione.getTrasmittenteTelefono());
docTrasmissione.setReplyTo(replyTo);
docTrasmissione.setToBeCreated();
for (int progressivoTestata = 0; progressivoTestata < fatturaElettronicaType.getFatturaElettronicaBody().size(); progressivoTestata++) {
FatturaElettronicaBodyType fatturaElettronicaBody = fatturaElettronicaType.getFatturaElettronicaBody().get(progressivoTestata);
DocumentoEleTestataBulk docTestata = new DocumentoEleTestataBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue(), (long) progressivoTestata);
if (fatturaElettronicaBody.getDatiGenerali() != null) {
if (fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento() != null) {
docTestata.setTipoDocumento(fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getTipoDocumento().value());
docTestata.setDivisa(fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getDivisa());
docTestata.setDataDocumento(convert(fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getData()));
docTestata.setNumeroDocumento(fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getNumero());
if (fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getDatiBollo() != null) {
DatiBolloType datiBollo = fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getDatiBollo();
docTestata.setBolloVirtuale(datiBollo.getBolloVirtuale().value());
docTestata.setImportoBollo(truncBigDecimal(datiBollo.getImportoBollo()));
}
docTestata.setImportoDocumento(truncBigDecimal(fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getImportoTotaleDocumento()));
docTestata.setArrotondamento(truncBigDecimal(fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getArrotondamento()));
String causale = StringUtils.join(fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getCausale().toArray(), ",");
docTestata.setCausale(causale.length() > 2000 ? causale.substring(0, 2000) : causale);
if (fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getArt73() != null)
docTestata.setArt73(fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getArt73().value());
}
if (fatturaElettronicaBody.getDatiGenerali().getDatiTrasporto() != null) {
DatiTrasportoType datiTrasporto = fatturaElettronicaBody.getDatiGenerali().getDatiTrasporto();
if (datiTrasporto.getDatiAnagraficiVettore() != null) {
docTestata.setVettoreCodicefiscale(datiTrasporto.getDatiAnagraficiVettore().getCodiceFiscale());
docTestata.setVettoreNumerolicenza(datiTrasporto.getDatiAnagraficiVettore().getNumeroLicenzaGuida());
if (datiTrasporto.getDatiAnagraficiVettore().getAnagrafica() != null) {
docTestata.setVettoreDenominazione(datiTrasporto.getDatiAnagraficiVettore().getAnagrafica().getDenominazione());
docTestata.setVettoreNome(datiTrasporto.getDatiAnagraficiVettore().getAnagrafica().getNome());
docTestata.setVettoreCognome(datiTrasporto.getDatiAnagraficiVettore().getAnagrafica().getCognome());
docTestata.setVettoreTitolo(datiTrasporto.getDatiAnagraficiVettore().getAnagrafica().getTitolo());
docTestata.setVettoreCodeori(datiTrasporto.getDatiAnagraficiVettore().getAnagrafica().getCodEORI());
}
if (datiTrasporto.getDatiAnagraficiVettore().getIdFiscaleIVA() != null) {
docTestata.setVettorePaese(datiTrasporto.getDatiAnagraficiVettore().getIdFiscaleIVA().getIdPaese());
docTestata.setVettoreCodice(datiTrasporto.getDatiAnagraficiVettore().getIdFiscaleIVA().getIdCodice());
}
}
docTestata.setMezzoTrasporto(datiTrasporto.getMezzoTrasporto());
docTestata.setCausaleTrasporto(datiTrasporto.getCausaleTrasporto());
docTestata.setNumeroColli(datiTrasporto.getNumeroColli());
docTestata.setDescrizioneTrasporto(datiTrasporto.getDescrizione());
docTestata.setUnitaMisurapeso(datiTrasporto.getUnitaMisuraPeso());
docTestata.setPesoLordo(truncBigDecimal(datiTrasporto.getPesoLordo()));
docTestata.setPesoNetto(truncBigDecimal(datiTrasporto.getPesoNetto()));
docTestata.setDataoraRitiro(convert(datiTrasporto.getDataOraRitiro()));
docTestata.setDatainizioTrasporto(convert(datiTrasporto.getDataInizioTrasporto()));
docTestata.setTipoResa(datiTrasporto.getTipoResa());
if (datiTrasporto.getIndirizzoResa() != null) {
docTestata.setResaIndirizzo(datiTrasporto.getIndirizzoResa().getIndirizzo());
docTestata.setResaNumerocivico(datiTrasporto.getIndirizzoResa().getNumeroCivico());
docTestata.setResaCap(datiTrasporto.getIndirizzoResa().getCAP());
docTestata.setResaComune(datiTrasporto.getIndirizzoResa().getComune());
docTestata.setResaProvincia(datiTrasporto.getIndirizzoResa().getProvincia());
docTestata.setResaNazione(datiTrasporto.getIndirizzoResa().getNazione());
}
docTestata.setDataoraConsegna(convert(datiTrasporto.getDataOraConsegna()));
}
if (fatturaElettronicaBody.getDatiGenerali().getFatturaPrincipale() != null) {
docTestata.setNumeroFatturaprincipale(fatturaElettronicaBody.getDatiGenerali().getFatturaPrincipale().getNumeroFatturaPrincipale());
docTestata.setDataFatturaprincipale(convert(fatturaElettronicaBody.getDatiGenerali().getFatturaPrincipale().getDataFatturaPrincipale()));
}
if (fatturaElettronicaBody.getDatiVeicoli() != null) {
docTestata.setTotalePercorsoveicolo(fatturaElettronicaBody.getDatiVeicoli().getTotalePercorso());
docTestata.setDataImmatricolazioneveicolo(convert(fatturaElettronicaBody.getDatiVeicoli().getData()));
}
if (fatturaElettronicaBody.getDatiPagamento() != null && !fatturaElettronicaBody.getDatiPagamento().isEmpty()) {
if (fatturaElettronicaBody.getDatiPagamento().size() > 1) {
docTestata.setAnomalie("Sono presenti piu di un dettaglio di Pagamento!");
} else {
DatiPagamentoType datiPagamento = fatturaElettronicaBody.getDatiPagamento().get(0);
docTestata.setCodicePagamento(datiPagamento.getCondizioniPagamento().value());
if (datiPagamento.getDettaglioPagamento() != null && !datiPagamento.getDettaglioPagamento().isEmpty()) {
if (datiPagamento.getDettaglioPagamento().size() > 1) {
docTestata.setAnomalie("Sono presenti piu di un dettaglio di Pagamento!");
} else {
DettaglioPagamentoType dettaglioPagamento = datiPagamento.getDettaglioPagamento().get(0);
docTestata.setBeneficiarioPagamento(dettaglioPagamento.getBeneficiario());
docTestata.setBeneficiarioModPag(dettaglioPagamento.getModalitaPagamento().value());
docTestata.setDataterminiPagamento(convert(dettaglioPagamento.getDataRiferimentoTerminiPagamento()));
docTestata.setGiorniterminiPagamento(dettaglioPagamento.getGiorniTerminiPagamento());
docTestata.setDatascadenzaPagamento(convert(dettaglioPagamento.getDataScadenzaPagamento()));
docTestata.setImportoPagamento(truncBigDecimal(dettaglioPagamento.getImportoPagamento()));
docTestata.setCodufficiopostale(dettaglioPagamento.getCodUfficioPostale());
docTestata.setCognomeQuietanzante(dettaglioPagamento.getCognomeQuietanzante());
docTestata.setNomeQuietanzante(dettaglioPagamento.getNomeQuietanzante());
docTestata.setIstitutoFinanziario(dettaglioPagamento.getIstitutoFinanziario());
docTestata.setIban(dettaglioPagamento.getIBAN());
docTestata.setAbi(dettaglioPagamento.getABI());
docTestata.setCab(dettaglioPagamento.getCAB());
docTestata.setBic(dettaglioPagamento.getBIC());
docTestata.setScontoPagamentoAnt(truncBigDecimal(dettaglioPagamento.getScontoPagamentoAnticipato()));
docTestata.setDatalimitePagamentoAnt(convert(dettaglioPagamento.getDataLimitePagamentoAnticipato()));
docTestata.setPenalitaPagRitardati(truncBigDecimal(dettaglioPagamento.getPenalitaPagamentiRitardati()));
docTestata.setDataRicorrenzapenale(convert(dettaglioPagamento.getDataDecorrenzaPenale()));
}
}
}
}
}
docTestata.setStatoDocumento(StatoDocumentoEleEnum.INIZIALE.name());
docTestata.setFlDecorrenzaTermini("N");
docTestata.setFlIrregistrabile("N");
docTestata.setToBeCreated();
docTrasmissione.addToDocEleTestataColl(docTestata);
if (fatturaElettronicaBody.getDatiBeniServizi() != null) {
if (fatturaElettronicaBody.getDatiBeniServizi().getDettaglioLinee() != null) {
final List<Integer> numeroLineas = fatturaElettronicaBody.getDatiBeniServizi().getDettaglioLinee().stream().map(DettaglioLineeType::getNumeroLinea).collect(Collectors.toList());
Set<Integer> duplicates = numeroLineas.stream().filter(numeroLinea -> Collections.frequency(numeroLineas, numeroLinea) > 1).collect(Collectors.toSet());
for (DettaglioLineeType dettaglioLinea : fatturaElettronicaBody.getDatiBeniServizi().getDettaglioLinee()) {
DocumentoEleLineaBulk docEleLinea = new DocumentoEleLineaBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue(), (long) progressivoTestata, dettaglioLinea.getNumeroLinea());
/**
* FIX duplicate numero linea
*/
if (!duplicates.isEmpty())
docEleLinea.setNumeroLinea(fatturaElettronicaBody.getDatiBeniServizi().getDettaglioLinee().indexOf(dettaglioLinea));
if (dettaglioLinea.getTipoCessionePrestazione() != null)
docEleLinea.setTipoCessione(dettaglioLinea.getTipoCessionePrestazione().value());
List<String> anomalie = new ArrayList<String>();
if (dettaglioLinea.getCodiceArticolo() != null && !dettaglioLinea.getCodiceArticolo().isEmpty()) {
if (dettaglioLinea.getCodiceArticolo().size() > 1) {
anomalie.add("Sono presenti piu di un dettaglio di Articolo!");
} else {
docEleLinea.setArticoloTipo(dettaglioLinea.getCodiceArticolo().get(0).getCodiceTipo());
docEleLinea.setArticoloValore(dettaglioLinea.getCodiceArticolo().get(0).getCodiceValore());
}
}
docEleLinea.setLineaDescrizione(dettaglioLinea.getDescrizione());
docEleLinea.setLineaQuantita(truncBigDecimal(dettaglioLinea.getQuantita()));
docEleLinea.setLineaUnitamisura(dettaglioLinea.getUnitaMisura());
docEleLinea.setInizioDatacompetenza(convert(dettaglioLinea.getDataInizioPeriodo()));
docEleLinea.setFineDatacompetenza(convert(dettaglioLinea.getDataFinePeriodo()));
docEleLinea.setLineaPrezzounitario(truncBigDecimal(dettaglioLinea.getPrezzoUnitario(), 6));
if (dettaglioLinea.getScontoMaggiorazione() != null && !dettaglioLinea.getScontoMaggiorazione().isEmpty()) {
if (dettaglioLinea.getScontoMaggiorazione().size() == 1) {
if (dettaglioLinea.getScontoMaggiorazione().get(0).getTipo() != null)
docEleLinea.setTipoScontomag(dettaglioLinea.getScontoMaggiorazione().get(0).getTipo().value());
docEleLinea.setPercentualeScontomag(truncBigDecimal(dettaglioLinea.getScontoMaggiorazione().get(0).getPercentuale()));
docEleLinea.setImportoScontomag(truncBigDecimal(dettaglioLinea.getScontoMaggiorazione().get(0).getImporto()));
} else {
BigDecimal scontoMaggiorazioneImporto = BigDecimal.ZERO;
for (ScontoMaggiorazioneType scontoMaggiorazione : dettaglioLinea.getScontoMaggiorazione()) {
if (scontoMaggiorazione.getTipo() != null)
docEleLinea.setTipoScontomag(scontoMaggiorazione.getTipo().value());
if (scontoMaggiorazione.getImporto() != null)
scontoMaggiorazioneImporto = scontoMaggiorazioneImporto.add(scontoMaggiorazione.getImporto());
}
docEleLinea.setImportoScontomag(truncBigDecimal(scontoMaggiorazioneImporto));
}
}
docEleLinea.setLineaPrezzototale(truncBigDecimal(dettaglioLinea.getPrezzoTotale()));
docEleLinea.setLineaAliquotaiva(truncBigDecimal(dettaglioLinea.getAliquotaIVA()));
if (dettaglioLinea.getRitenuta() != null)
docEleLinea.setLineaRitenuta(dettaglioLinea.getRitenuta().value());
if (dettaglioLinea.getNatura() != null)
docEleLinea.setLineaNatura(dettaglioLinea.getNatura().value());
docEleLinea.setLineaRiferimentoamm(dettaglioLinea.getRiferimentoAmministrazione());
if (dettaglioLinea.getAltriDatiGestionali() != null && !dettaglioLinea.getAltriDatiGestionali().isEmpty()) {
if (dettaglioLinea.getAltriDatiGestionali().size() > 1) {
anomalie.add("Sono presenti piu di un dettaglio di Dati Gestionali!");
} else {
final AltriDatiGestionaliType altriDatiGestionaliType = dettaglioLinea.getAltriDatiGestionali().stream().findAny().orElse(null);
docEleLinea.setTipoDato(altriDatiGestionaliType.getTipoDato());
docEleLinea.setRiferimentoTesto(altriDatiGestionaliType.getRiferimentoTesto());
docEleLinea.setRiferimentoNumero(Optional.ofNullable(altriDatiGestionaliType.getRiferimentoNumero()).map(bigDecimal -> bigDecimal.setScale(2)).orElse(BigDecimal.ZERO));
docEleLinea.setRiferimentodata(convert(altriDatiGestionaliType.getRiferimentoData()));
}
}
if (!anomalie.isEmpty())
docEleLinea.setAnomalie(StringUtils.join(anomalie.toArray(), " - "));
docEleLinea.setToBeCreated();
docTestata.addToDocEleLineaColl(docEleLinea);
}
}
if (fatturaElettronicaBody.getDatiBeniServizi().getDatiRiepilogo() != null && !fatturaElettronicaBody.getDatiBeniServizi().getDatiRiepilogo().isEmpty()) {
List<String> anomalie = new ArrayList<String>();
int indexIva = 0;
for (DatiRiepilogoType datiRiepilogo : fatturaElettronicaBody.getDatiBeniServizi().getDatiRiepilogo()) {
DocumentoEleIvaBulk docEleIVA = new DocumentoEleIvaBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue(), (long) progressivoTestata, (long) ++indexIva);
docEleIVA.setAliquotaIva(datiRiepilogo.getAliquotaIVA());
if (datiRiepilogo.getNatura() != null)
docEleIVA.setNatura(datiRiepilogo.getNatura().value());
docEleIVA.setSpeseAccessorie(truncBigDecimal(datiRiepilogo.getSpeseAccessorie()));
docEleIVA.setArrotondamento(truncBigDecimal(datiRiepilogo.getArrotondamento()));
docEleIVA.setImponibileImporto(truncBigDecimal(datiRiepilogo.getImponibileImporto()));
docEleIVA.setImposta(datiRiepilogo.getImposta());
if (datiRiepilogo.getEsigibilitaIVA() != null)
docEleIVA.setEsigibilitaIva(datiRiepilogo.getEsigibilitaIVA().value());
docEleIVA.setRiferimentoNormativo(datiRiepilogo.getRiferimentoNormativo());
if (!anomalie.isEmpty())
docEleIVA.setAnomalie(StringUtils.join(anomalie.toArray(), " - "));
docEleIVA.setToBeCreated();
docTestata.addToDocEleIVAColl(docEleIVA);
}
}
}
if (fatturaElettronicaBody.getAllegati() != null && !fatturaElettronicaBody.getAllegati().isEmpty()) {
int progressivoAllegato = 0;
for (AllegatiType allegato : fatturaElettronicaBody.getAllegati()) {
progressivoAllegato++;
List<String> anomalie = new ArrayList<String>();
String nomeAllegato = progressivoAllegato + "-" + allegato.getNomeAttachment();
DocumentoEleAllegatiBulk docAllegato = new DocumentoEleAllegatiBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue(), (long) progressivoTestata, nomeAllegato);
docAllegato.setAlgoritmoCompressione(allegato.getAlgoritmoCompressione());
docAllegato.setFormatoAttachment(allegato.getFormatoAttachment());
docAllegato.setDescrizioneAttachment(allegato.getDescrizioneAttachment());
try {
Map<String, Object> fileProperties = new HashMap<String, Object>();
fileProperties.put(StoragePropertyNames.OBJECT_TYPE_ID.value(), "D:sigla_fatture_attachment:document");
fileProperties.put(StoragePropertyNames.NAME.value(), storeService.sanitizeFilename(nomeAllegato));
fileProperties.put(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value(), Arrays.asList("P:sigla_commons_aspect:utente_applicativo_sigla"));
fileProperties.put("sigla_commons_aspect:utente_applicativo", "SDI");
byte[] bytes = allegato.getAttachment();
try {
if (Base64.isArrayByteBase64(bytes))
bytes = Base64.decodeBase64(bytes);
} catch (ArrayIndexOutOfBoundsException _ex) {
}
StorageObject storageObject = SpringUtil.getBean("storeService", StoreService.class).storeSimpleDocument(new ByteArrayInputStream(bytes), "application/" + allegato.getFormatoAttachment(), path, fileProperties);
docAllegato.setCmisNodeRef(storageObject.getKey());
} catch (Exception _ex) {
anomalie.add("Errore nel salvataggio dell'allegato sul documentale! Identificativo:" + identificativoSdI + " " + _ex.getMessage());
LOGGER.error("Errore nel salvataggio dell'allegato sul documentale! Identificativo:" + identificativoSdI, _ex);
java.io.StringWriter sw = new java.io.StringWriter();
_ex.printStackTrace(new java.io.PrintWriter(sw));
SendMail.sendErrorMail("Errore nel salvataggio dell'allegato sul documentale!Identificativo:" + identificativoSdI, sw.toString());
}
if (!anomalie.isEmpty())
docAllegato.setAnomalie(StringUtils.join(anomalie.toArray(), " - "));
docAllegato.setToBeCreated();
docTestata.addToDocEleAllegatiColl(docAllegato);
}
}
/**
* Carico le Ritenute/Contributi
*/
if (fatturaElettronicaBody.getDatiGenerali() != null && fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento() != null) {
DatiGeneraliDocumentoType datiGeneraliDocumento = fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento();
int indexTributo = 0;
if (datiGeneraliDocumento.getDatiRitenuta() != null) {
List<String> anomalie = new ArrayList<String>();
for (DatiRitenutaType ritenutaType : datiGeneraliDocumento.getDatiRitenuta()) {
indexTributo++;
DocumentoEleTributiBulk docTributo = new DocumentoEleTributiBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue(), (long) progressivoTestata, (long) indexTributo);
docTributo.setTipoRiga("RIT");
if (ritenutaType.getTipoRitenuta() != null)
docTributo.setTipoTributo(ritenutaType.getTipoRitenuta().value());
docTributo.setImporto(truncBigDecimal(ritenutaType.getImportoRitenuta()));
docTributo.setAliquota(truncBigDecimal(ritenutaType.getAliquotaRitenuta()));
if (ritenutaType.getCausalePagamento() != null)
docTributo.setCausalePagamento(ritenutaType.getCausalePagamento().value());
if (!anomalie.isEmpty())
docTributo.setAnomalie(StringUtils.join(anomalie.toArray(), " - "));
docTributo.setToBeCreated();
docTestata.addToDocEleTributiColl(docTributo);
}
}
if (datiGeneraliDocumento.getDatiCassaPrevidenziale() != null && !datiGeneraliDocumento.getDatiCassaPrevidenziale().isEmpty()) {
for (DatiCassaPrevidenzialeType datiCassaPrevidenziale : datiGeneraliDocumento.getDatiCassaPrevidenziale()) {
List<String> anomalie = new ArrayList<String>();
indexTributo++;
DocumentoEleTributiBulk docTributo = new DocumentoEleTributiBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue(), (long) progressivoTestata, (long) indexTributo);
docTributo.setTipoRiga("CAS");
if (datiCassaPrevidenziale.getTipoCassa() != null)
docTributo.setTipoTributo(datiCassaPrevidenziale.getTipoCassa().value());
docTributo.setImporto(truncBigDecimal(datiCassaPrevidenziale.getImportoContributoCassa()));
docTributo.setAliquota(truncBigDecimal(datiCassaPrevidenziale.getAlCassa()));
docTributo.setImponibileCassa(truncBigDecimal(datiCassaPrevidenziale.getImponibileCassa()));
docTributo.setAliquotaIva(truncBigDecimal(datiCassaPrevidenziale.getAliquotaIVA()));
if (datiCassaPrevidenziale.getRitenuta() != null)
docTributo.setRitenutaCassa(datiCassaPrevidenziale.getRitenuta().value());
if (datiCassaPrevidenziale.getNatura() != null)
docTributo.setNatura(datiCassaPrevidenziale.getNatura().value());
docTributo.setRiferimentoAmministrazione(datiCassaPrevidenziale.getRiferimentoAmministrazione());
if (!anomalie.isEmpty())
docTributo.setAnomalie(StringUtils.join(anomalie.toArray(), " - "));
docTributo.setToBeCreated();
docTestata.addToDocEleTributiColl(docTributo);
}
}
}
/**
* Carico lo sconto
*/
if (fatturaElettronicaBody.getDatiGenerali() != null && fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento() != null) {
if (fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getScontoMaggiorazione() != null && !fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getScontoMaggiorazione().isEmpty()) {
int indexSconto = 0;
for (ScontoMaggiorazioneType scontoMaggiorazione : fatturaElettronicaBody.getDatiGenerali().getDatiGeneraliDocumento().getScontoMaggiorazione()) {
indexSconto++;
List<String> anomalie = new ArrayList<String>();
DocumentoEleScontoMaggBulk docSconto = new DocumentoEleScontoMaggBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue(), (long) progressivoTestata, (long) indexSconto);
if (scontoMaggiorazione.getTipo() != null)
docSconto.setTipoScontomagg(scontoMaggiorazione.getTipo().value());
docSconto.setPercentualeScontomagg(truncBigDecimal(scontoMaggiorazione.getPercentuale()));
docSconto.setImportoScontomagg(truncBigDecimal(scontoMaggiorazione.getImporto()));
if (!anomalie.isEmpty())
docSconto.setAnomalie(StringUtils.join(anomalie.toArray(), " - "));
docSconto.setToBeCreated();
docTestata.addToDocEleScontoMaggColl(docSconto);
}
}
}
/**
* Carico l'ordine di acquistoresponsabile2
*/
List<DocumentoEleAcquistoBulk> acquisti = new ArrayList<DocumentoEleAcquistoBulk>();
if (fatturaElettronicaBody.getDatiGenerali() != null) {
if (fatturaElettronicaBody.getDatiGenerali().getDatiOrdineAcquisto() != null && !fatturaElettronicaBody.getDatiGenerali().getDatiOrdineAcquisto().isEmpty()) {
for (DatiDocumentiCorrelatiType datiOrdineAcquisto : fatturaElettronicaBody.getDatiGenerali().getDatiOrdineAcquisto()) {
acquisti.addAll(caricaAcquisti(datiOrdineAcquisto, TipoAcquistoEnum.Ordine.name(), idTrasmittente, datiTrasmissione, (long) progressivoTestata, identificativoSdI.longValue()));
}
}
if (fatturaElettronicaBody.getDatiGenerali().getDatiContratto() != null && !fatturaElettronicaBody.getDatiGenerali().getDatiContratto().isEmpty()) {
for (DatiDocumentiCorrelatiType datiOrdineAcquisto : fatturaElettronicaBody.getDatiGenerali().getDatiContratto()) {
acquisti.addAll(caricaAcquisti(datiOrdineAcquisto, TipoAcquistoEnum.Contratto.name(), idTrasmittente, datiTrasmissione, (long) progressivoTestata, identificativoSdI.longValue()));
}
}
if (fatturaElettronicaBody.getDatiGenerali().getDatiConvenzione() != null && !fatturaElettronicaBody.getDatiGenerali().getDatiConvenzione().isEmpty()) {
for (DatiDocumentiCorrelatiType datiOrdineAcquisto : fatturaElettronicaBody.getDatiGenerali().getDatiConvenzione()) {
acquisti.addAll(caricaAcquisti(datiOrdineAcquisto, TipoAcquistoEnum.Convenzione.name(), idTrasmittente, datiTrasmissione, (long) progressivoTestata, identificativoSdI.longValue()));
}
}
if (fatturaElettronicaBody.getDatiGenerali().getDatiRicezione() != null && !fatturaElettronicaBody.getDatiGenerali().getDatiRicezione().isEmpty()) {
for (DatiDocumentiCorrelatiType datiOrdineAcquisto : fatturaElettronicaBody.getDatiGenerali().getDatiRicezione()) {
acquisti.addAll(caricaAcquisti(datiOrdineAcquisto, TipoAcquistoEnum.Ricezione.name(), idTrasmittente, datiTrasmissione, (long) progressivoTestata, identificativoSdI.longValue()));
}
}
if (fatturaElettronicaBody.getDatiGenerali().getDatiFattureCollegate() != null && !fatturaElettronicaBody.getDatiGenerali().getDatiFattureCollegate().isEmpty()) {
for (DatiDocumentiCorrelatiType datiOrdineAcquisto : fatturaElettronicaBody.getDatiGenerali().getDatiFattureCollegate()) {
acquisti.addAll(caricaAcquisti(datiOrdineAcquisto, TipoAcquistoEnum.Fatture_Collegate.name(), idTrasmittente, datiTrasmissione, (long) progressivoTestata, identificativoSdI.longValue()));
}
}
int progressivoAcquisto = 0;
for (DocumentoEleAcquistoBulk docAcquisto : acquisti) {
docAcquisto.setProgressivoAcquisto(new Long(progressivoAcquisto++));
docAcquisto.setToBeCreated();
docTestata.addToDocEleAcquistoColl(docAcquisto);
}
}
/**
* Carico il documento di trasporto
*/
if (fatturaElettronicaBody.getDatiGenerali() != null) {
if (fatturaElettronicaBody.getDatiGenerali().getDatiDDT() != null && !fatturaElettronicaBody.getDatiGenerali().getDatiDDT().isEmpty()) {
int progressivoDdt = 0;
for (DatiDDTType datiDDTT : fatturaElettronicaBody.getDatiGenerali().getDatiDDT()) {
progressivoDdt++;
for (Integer numeroLinea : datiDDTT.getRiferimentoNumeroLinea()) {
progressivoDdt++;
DocumentoEleDdtBulk docDDT = new DocumentoEleDdtBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue(), (long) progressivoTestata, (long) progressivoDdt);
docDDT.setNumeroLinea(numeroLinea);
docDDT.setDdtNumero(datiDDTT.getNumeroDDT());
docDDT.setDdtData(convert(datiDDTT.getDataDDT()));
docDDT.setToBeCreated();
docTestata.addToDocEleDdtColl(docDDT);
}
if (datiDDTT.getRiferimentoNumeroLinea().isEmpty()) {
DocumentoEleDdtBulk docDDT = new DocumentoEleDdtBulk(idTrasmittente.getIdPaese(), idTrasmittente.getIdCodice(), identificativoSdI.longValue(), (long) progressivoTestata, (long) progressivoDdt);
docDDT.setDdtNumero(datiDDTT.getNumeroDDT());
docDDT.setDdtData(convert(datiDDTT.getDataDDT()));
docDDT.setToBeCreated();
docTestata.addToDocEleDdtColl(docDDT);
}
}
}
}
/**
* Gestione del caso in cui arriva una fattura con dettaglio linea senza il numero linea progressivo
* ma sempre uguale
*/
List<Integer> numeroLinee = new ArrayList<Integer>();
for (int i = 0; i < docTestata.getDocEleLineaColl().size(); i++) {
DocumentoEleLineaBulk documentoEleLinea = docTestata.getDocEleLineaColl().get(i);
if (numeroLinee.contains(documentoEleLinea.getNumeroLinea())) {
documentoEleLinea.setNumeroLinea(i + 1);
documentoEleLinea.setAnomalie("Documento da rifiutare, il numero delle linee non è progressivo.");
}
numeroLinee.add(documentoEleLinea.getNumeroLinea());
}
}
// END FOR LOOP Fattura Elettronica Body
try {
docTrasmissione = (DocumentoEleTrasmissioneBulk) component.creaDocumento(userContext, docTrasmissione);
component.completaDocumento(userContext, docTrasmissione);
} catch (CRUDDuplicateKeyException _ex) {
LOGGER.warn("WS della ricezione delle fatture fattura gia presente !Identificativo: {}", identificativoSdI);
try {
DocumentoEleTrasmissioneBulk doc = (DocumentoEleTrasmissioneBulk) component.findByPrimaryKey(userContext, docTrasmissione);
doc.setToBeUpdated();
doc.setCmisNodeRef(storeService.getStorageObjectByPath(path).getKey());
component.modificaConBulk(userContext, doc);
} catch (ComponentException | RemoteException e) {
LOGGER.error("Errore nel WS della ricezione delle fatture!Identificativo:{}", identificativoSdI, e);
}
} catch (Exception e) {
LOGGER.error("Errore nel WS della ricezione delle fatture!Identificativo:{}", identificativoSdI, e);
java.io.StringWriter sw = new java.io.StringWriter();
e.printStackTrace(new java.io.PrintWriter(sw));
SendMail.sendErrorMail("Errore nel WS della ricezione delle fatture!Identificativo:" + identificativoSdI, sw.toString());
}
}
Aggregations