SDIFatturaUtils.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.protocol.sdi.utils;
import java.io.ByteArrayInputStream;
import java.util.List;
import org.openspcoop2.message.OpenSPCoop2Message;
import org.openspcoop2.protocol.sdi.config.SDIProperties;
import org.openspcoop2.protocol.sdi.constants.SDICostanti;
import org.openspcoop2.protocol.sdi.constants.SDICostantiServizioRicezioneFatture;
import org.openspcoop2.protocol.sdi.validator.SDIValidazioneUtils;
import org.openspcoop2.protocol.sdk.Busta;
import org.openspcoop2.protocol.sdk.Eccezione;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.constants.CodiceErroreCooperazione;
import org.openspcoop2.utils.xml.AbstractValidatoreXSD;
/**
* SDIFatturaUtils
*
* @author Andrea Poli (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class SDIFatturaUtils {
public static void validazioneFattura(byte[] fattura, SDIProperties sdiProperties, List<Eccezione> eccezioniValidazione,
SDIValidazioneUtils validazioneUtils, IProtocolFactory<?> protocolFactory,
Busta busta,OpenSPCoop2Message msg,boolean addMsgInContextIfEnabled,
boolean validaDatiTrasmissione, boolean forceDisableValidazioneXSD) throws Exception{
boolean forceEccezioneLivelloInfo = false;
if(validaDatiTrasmissione) {
if(sdiProperties.isEnableAccessoFattura() == false) {
return;
}
else if(sdiProperties.isEnableAccessoFatturaWarningMode()) {
forceEccezioneLivelloInfo = true;
}
}
// Valori letti nel file Metadati o come parametro nel caso di fattura da inviare
String versioneFattura = busta.getProperty(SDICostanti.SDI_BUSTA_EXT_VERSIONE_FATTURA_PA);
String codiceDestinatario = busta.getProperty(SDICostanti.SDI_BUSTA_EXT_CODICE_DESTINATARIO);
// validazione XSD file Fattura
if(forceDisableValidazioneXSD==false && sdiProperties.isEnableValidazioneXsdFattura()){
try{
AbstractValidatoreXSD validatore = null;
if(SDICostanti.SDI_VERSIONE_FATTURA_PA_10.equals(versioneFattura)){
validatore = it.gov.fatturapa.sdi.fatturapa.v1_0.utils.XSDValidatorWithSignature.getOpenSPCoop2MessageXSDValidator(protocolFactory.getLogger());
}
else if(SDICostanti.SDI_VERSIONE_FATTURA_PA_11.equals(versioneFattura)){
validatore = it.gov.fatturapa.sdi.fatturapa.v1_1.utils.XSDValidatorWithSignature.getOpenSPCoop2MessageXSDValidator(protocolFactory.getLogger());
}
else if(SDICostanti.SDI_VERSIONE_FATTURA_SEMPLIFICATA_10.equals(versioneFattura)){
validatore = it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.utils.XSDValidatorWithSignature.getOpenSPCoop2MessageXSDValidator(protocolFactory.getLogger());
}
else{
validatore = it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.utils.XSDValidatorWithSignature.getOpenSPCoop2MessageXSDValidator(protocolFactory.getLogger());
}
validatore.valida(new ByteArrayInputStream(fattura));
}catch(Exception e){
String msgErrore = "Elemento ["+SDICostantiServizioRicezioneFatture.RICEVI_FATTURE_RICHIESTA_ELEMENT_FILE+"] contiene un file Fattura("+versioneFattura+") non valido rispetto allo schema XSD: "+e.getMessage();
eccezioniValidazione.add(
validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,msgErrore,e,forceEccezioneLivelloInfo));
return; // esco anche in caso di forceEccezioneLivelloInfo poiche' la fattura non e' ben formata e non ha senso andare avanti
}
}
// Lettura fattura
String attributoVersione = null;
String trasmittenteIdPaese = null;
String trasmittenteIdCodice = null;
String trasmissioneProgressivoInvio = null;
String trasmissioneFormatoTrasmissione = null;
String trasmissioneCodiceDestinatario = null;
String trasmissionePECDestinatario = null; // solo per versione 1.2
String cedentePrestatoreIdPaese = null;
String cedentePrestatoreIdCodice = null;
String cedentePrestatoreDenominazione = null;
String cedentePrestatoreNome = null;
String cedentePrestatoreCognome = null;
String cedentePrestatoreCodiceFiscale = null;
String cessionarioCommittenteIdPaese = null;
String cessionarioCommittenteIdCodice = null;
String cessionarioCommittenteDenominazione = null;
String cessionarioCommittenteNome = null;
String cessionarioCommittenteCognome = null;
String cessionarioCommittenteCodiceFiscale = null;
String terzoIdPaese = null;
String terzoIdCodice = null;
String terzoDenominazione = null;
String terzoNome = null;
String terzoCognome = null;
String terzoCodiceFiscale = null;
String soggettoEmittente = null;
try{
// Fattura v1.0
if(SDICostanti.SDI_VERSIONE_FATTURA_PA_10.equals(versioneFattura)){
it.gov.fatturapa.sdi.fatturapa.v1_0.utils.serializer.JaxbDeserializer deserializer =
new it.gov.fatturapa.sdi.fatturapa.v1_0.utils.serializer.JaxbDeserializer();
it.gov.fatturapa.sdi.fatturapa.v1_0.FatturaElettronicaType fatturaObject = deserializer.readFatturaElettronicaType(fattura);
if(addMsgInContextIfEnabled && sdiProperties.isSaveFatturaInContext()){
msg.addContextProperty(SDICostanti.SDI_MESSAGE_CONTEXT_FATTURA, fatturaObject);
}
it.gov.fatturapa.sdi.fatturapa.v1_0.FatturaElettronicaHeaderType fatturaHeaderObject = fatturaObject.getFatturaElettronicaHeader();
// Attributo Versione
attributoVersione = fatturaObject.getVersione();
// Fattura.DatiTrasmissione.IdTrasmittente
trasmittenteIdPaese = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdPaese();
trasmittenteIdCodice = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdCodice();
// Fattura.DatiTrasmissione.ProgressivoInvio
trasmissioneProgressivoInvio = fatturaHeaderObject.getDatiTrasmissione().getProgressivoInvio();
// Fattura.DatiTrasmissione.FormatoTrasmissione
trasmissioneFormatoTrasmissione = fatturaHeaderObject.getDatiTrasmissione().getFormatoTrasmissione().name();
// Fattura.DatiTrasmissione.CodiceDestinatario
trasmissioneCodiceDestinatario = fatturaHeaderObject.getDatiTrasmissione().getCodiceDestinatario();
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici()!=null){
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA()!=null){
// Fattura.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA
cedentePrestatoreIdPaese = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
cedentePrestatoreIdCodice = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale()!=null){
cedentePrestatoreCodiceFiscale = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale();
}
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica()!=null){
// Fattura.CedentePrestatore.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
cedentePrestatoreDenominazione = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getDenominazione();
cedentePrestatoreNome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getNome();
cedentePrestatoreCognome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getCognome();
}
}
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici()!=null){
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
// Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
cessionarioCommittenteIdPaese = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
cessionarioCommittenteIdCodice = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale()!=null){
cessionarioCommittenteCodiceFiscale = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale();
}
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica()!=null){
// Fattura.CessionarioCommittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
cessionarioCommittenteDenominazione = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
cessionarioCommittenteNome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getNome();
cessionarioCommittenteCognome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getCognome();
}
}
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente()!=null &&
fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici()!=null){
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
// Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.IdFiscaleIVA
terzoIdPaese = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
terzoIdCodice = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale()!=null){
terzoCodiceFiscale = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale();
}
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica()!=null){
// Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
terzoDenominazione = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
terzoNome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getNome();
terzoCognome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getCognome();
}
}
if(fatturaHeaderObject.getSoggettoEmittente()!=null){
// Fattura.SoggettoEmittente
soggettoEmittente = fatturaHeaderObject.getSoggettoEmittente().name();
}
}
// Fattura v1.1
else if(SDICostanti.SDI_VERSIONE_FATTURA_PA_11.equals(versioneFattura)){
it.gov.fatturapa.sdi.fatturapa.v1_1.utils.serializer.JaxbDeserializer deserializer =
new it.gov.fatturapa.sdi.fatturapa.v1_1.utils.serializer.JaxbDeserializer();
it.gov.fatturapa.sdi.fatturapa.v1_1.FatturaElettronicaType fatturaObject = deserializer.readFatturaElettronicaType(fattura);
if(addMsgInContextIfEnabled && sdiProperties.isSaveFatturaInContext()){
msg.addContextProperty(SDICostanti.SDI_MESSAGE_CONTEXT_FATTURA, fatturaObject);
}
it.gov.fatturapa.sdi.fatturapa.v1_1.FatturaElettronicaHeaderType fatturaHeaderObject = fatturaObject.getFatturaElettronicaHeader();
// Attributo Versione
attributoVersione = fatturaObject.getVersione();
// Fattura.DatiTrasmissione.IdTrasmittente
trasmittenteIdPaese = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdPaese();
trasmittenteIdCodice = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdCodice();
// Fattura.DatiTrasmissione.ProgressivoInvio
trasmissioneProgressivoInvio = fatturaHeaderObject.getDatiTrasmissione().getProgressivoInvio();
// Fattura.DatiTrasmissione.FormatoTrasmissione
trasmissioneFormatoTrasmissione = fatturaHeaderObject.getDatiTrasmissione().getFormatoTrasmissione().name();
// Fattura.DatiTrasmissione.CodiceDestinatario
trasmissioneCodiceDestinatario = fatturaHeaderObject.getDatiTrasmissione().getCodiceDestinatario();
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici()!=null){
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA()!=null){
// Fattura.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA
cedentePrestatoreIdPaese = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
cedentePrestatoreIdCodice = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale()!=null){
cedentePrestatoreCodiceFiscale = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale();
}
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica()!=null){
// Fattura.CedentePrestatore.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
cedentePrestatoreDenominazione = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getDenominazione();
cedentePrestatoreNome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getNome();
cedentePrestatoreCognome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getCognome();
}
}
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici()!=null){
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
// Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
cessionarioCommittenteIdPaese = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
cessionarioCommittenteIdCodice = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale()!=null){
cessionarioCommittenteCodiceFiscale = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale();
}
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica()!=null){
// Fattura.CessionarioCommittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
cessionarioCommittenteDenominazione = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
cessionarioCommittenteNome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getNome();
cessionarioCommittenteCognome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getCognome();
}
}
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente()!=null &&
fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici()!=null){
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
// Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.IdFiscaleIVA
terzoIdPaese = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
terzoIdCodice = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale()!=null){
terzoCodiceFiscale = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale();
}
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica()!=null){
// Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
terzoDenominazione = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
terzoNome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getNome();
terzoCognome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getCognome();
}
}
if(fatturaHeaderObject.getSoggettoEmittente()!=null){
// Fattura.SoggettoEmittente
soggettoEmittente = fatturaHeaderObject.getSoggettoEmittente().name();
}
}
// FatturaSemplificata v1.0
else if(SDICostanti.SDI_VERSIONE_FATTURA_SEMPLIFICATA_10.equals(versioneFattura)){
it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.utils.serializer.JaxbDeserializer deserializer =
new it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.utils.serializer.JaxbDeserializer();
it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.FatturaElettronicaType fatturaObject = deserializer.readFatturaElettronicaType(fattura);
if(addMsgInContextIfEnabled && sdiProperties.isSaveFatturaInContext()){
msg.addContextProperty(SDICostanti.SDI_MESSAGE_CONTEXT_FATTURA, fatturaObject);
}
it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.FatturaElettronicaHeaderType fatturaHeaderObject = fatturaObject.getFatturaElettronicaHeader();
// Attributo Versione
if(fatturaObject.getVersione()!=null) {
attributoVersione = fatturaObject.getVersione().name();
}
// Fattura.DatiTrasmissione.IdTrasmittente
trasmittenteIdPaese = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdPaese();
trasmittenteIdCodice = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdCodice();
// Fattura.DatiTrasmissione.ProgressivoInvio
trasmissioneProgressivoInvio = fatturaHeaderObject.getDatiTrasmissione().getProgressivoInvio();
// Fattura.DatiTrasmissione.FormatoTrasmissione
trasmissioneFormatoTrasmissione = fatturaHeaderObject.getDatiTrasmissione().getFormatoTrasmissione().name();
// Fattura.DatiTrasmissione.CodiceDestinatario
trasmissioneCodiceDestinatario = fatturaHeaderObject.getDatiTrasmissione().getCodiceDestinatario();
if(fatturaHeaderObject.getCedentePrestatore()!=null){
if(fatturaHeaderObject.getCedentePrestatore().getIdFiscaleIVA()!=null){
// Fattura.CedentePrestatore.IdFiscaleIVA
cedentePrestatoreIdPaese = fatturaHeaderObject.getCedentePrestatore().getIdFiscaleIVA().getIdPaese();
cedentePrestatoreIdCodice = fatturaHeaderObject.getCedentePrestatore().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getCedentePrestatore().getCodiceFiscale()!=null){
cedentePrestatoreCodiceFiscale = fatturaHeaderObject.getCedentePrestatore().getCodiceFiscale();
}
// Fattura.CedentePrestatore.[Denominazione,Nome/Cognome] sono in choice
if(fatturaHeaderObject.getCedentePrestatore().getDenominazione()!=null){
cedentePrestatoreDenominazione = fatturaHeaderObject.getCedentePrestatore().getDenominazione();
}
if(fatturaHeaderObject.getCedentePrestatore().getNome()!=null){
cedentePrestatoreNome = fatturaHeaderObject.getCedentePrestatore().getNome();
}
if(fatturaHeaderObject.getCedentePrestatore().getCognome()!=null){
cedentePrestatoreCognome = fatturaHeaderObject.getCedentePrestatore().getCognome();
}
}
if(fatturaHeaderObject.getCessionarioCommittente()!=null){
if(fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali()!=null) {
if(fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getIdFiscaleIVA()!=null){
// Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
cessionarioCommittenteIdPaese = fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getIdFiscaleIVA().getIdPaese();
cessionarioCommittenteIdCodice = fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getCodiceFiscale()!=null){
cessionarioCommittenteCodiceFiscale = fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getCodiceFiscale();
}
}
if(fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi()!=null) {
// Fattura.CessionarioCommittente.AltriDatiIdentificativi.[Denominazione,Nome/Cognome] sono in choice
if(fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getDenominazione()!=null){
cessionarioCommittenteDenominazione = fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getDenominazione();
}
if(fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getNome()!=null){
cessionarioCommittenteNome = fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getNome();
}
if(fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getCognome()!=null){
cessionarioCommittenteCognome = fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getCognome();
}
}
}
if(fatturaHeaderObject.getSoggettoEmittente()!=null){
// Fattura.SoggettoEmittente
soggettoEmittente = fatturaHeaderObject.getSoggettoEmittente().name();
}
}
// Fattura v1.2
else{
it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.utils.serializer.JaxbDeserializer deserializer =
new it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.utils.serializer.JaxbDeserializer();
it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.FatturaElettronicaType fatturaObject = deserializer.readFatturaElettronicaType(fattura);
if(addMsgInContextIfEnabled && sdiProperties.isSaveFatturaInContext()){
msg.addContextProperty(SDICostanti.SDI_MESSAGE_CONTEXT_FATTURA, fatturaObject);
}
it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.FatturaElettronicaHeaderType fatturaHeaderObject = fatturaObject.getFatturaElettronicaHeader();
// Attributo Versione
if(fatturaObject.getVersione()!=null){
attributoVersione = fatturaObject.getVersione().getValue();
}
// Fattura.DatiTrasmissione.IdTrasmittente
trasmittenteIdPaese = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdPaese();
trasmittenteIdCodice = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdCodice();
// Fattura.DatiTrasmissione.ProgressivoInvio
trasmissioneProgressivoInvio = fatturaHeaderObject.getDatiTrasmissione().getProgressivoInvio();
// Fattura.DatiTrasmissione.FormatoTrasmissione
trasmissioneFormatoTrasmissione = fatturaHeaderObject.getDatiTrasmissione().getFormatoTrasmissione().name();
// Fattura.DatiTrasmissione.CodiceDestinatario
trasmissioneCodiceDestinatario = fatturaHeaderObject.getDatiTrasmissione().getCodiceDestinatario();
// Fattura.DatiTrasmissione.PECDestinatario
trasmissionePECDestinatario = fatturaHeaderObject.getDatiTrasmissione().getPecDestinatario();
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici()!=null){
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA()!=null){
// Fattura.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA
cedentePrestatoreIdPaese = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
cedentePrestatoreIdCodice = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale()!=null){
cedentePrestatoreCodiceFiscale = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale();
}
if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica()!=null){
// Fattura.CedentePrestatore.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
cedentePrestatoreDenominazione = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getDenominazione();
cedentePrestatoreNome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getNome();
cedentePrestatoreCognome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getCognome();
}
}
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici()!=null){
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
// Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
cessionarioCommittenteIdPaese = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
cessionarioCommittenteIdCodice = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale()!=null){
cessionarioCommittenteCodiceFiscale = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale();
}
if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica()!=null){
// Fattura.CessionarioCommittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
cessionarioCommittenteDenominazione = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
cessionarioCommittenteNome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getNome();
cessionarioCommittenteCognome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getCognome();
}
}
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente()!=null &&
fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici()!=null){
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
// Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.IdFiscaleIVA
terzoIdPaese = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
terzoIdCodice = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
}
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale()!=null){
terzoCodiceFiscale = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale();
}
if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica()!=null){
// Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
terzoDenominazione = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
terzoNome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getNome();
terzoCognome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getCognome();
}
}
if(fatturaHeaderObject.getSoggettoEmittente()!=null){
// Fattura.SoggettoEmittente
soggettoEmittente = fatturaHeaderObject.getSoggettoEmittente().name();
}
}
}catch(Exception e){
String msgErrore = "Elemento ["+SDICostantiServizioRicezioneFatture.RICEVI_FATTURE_RICHIESTA_ELEMENT_FILE+"] contiene un file Fattura("+versioneFattura+") non valido: "+e.getMessage();
eccezioniValidazione.add(
validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,msgErrore,e,forceEccezioneLivelloInfo));
return; // esco anche in caso di forceEccezioneLivelloInfo poiche' la fattura non e' ben formata e non ha senso andare avanti
}
// Attributo Versione
String attributoAtteso = null;
boolean attributoVersioneNonCorretto = false;
if(SDICostanti.SDI_VERSIONE_FATTURA_PA_10.equals(versioneFattura)){
if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_10.equals(attributoVersione)){
attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_10;
attributoVersioneNonCorretto = true;
}
}
else if(SDICostanti.SDI_VERSIONE_FATTURA_PA_11.equals(versioneFattura)){
if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_11.equals(attributoVersione)){
attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_11;
attributoVersioneNonCorretto = true;
}
}
else if(SDICostanti.SDI_VERSIONE_FATTURA_SEMPLIFICATA_10.equals(versioneFattura)){
if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_SEMPLIFICATA_10.equals(attributoVersione)){
attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_SEMPLIFICATA_10;
attributoVersioneNonCorretto = true;
}
}
else if(SDICostanti.SDI_VERSIONE_FATTURA_PA_12.equals(versioneFattura)){
if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_12.equals(attributoVersione)){
attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_12;
attributoVersioneNonCorretto = true;
}
}
else if(SDICostanti.SDI_VERSIONE_FATTURA_PR_12.equals(versioneFattura)){
if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PR_12.equals(attributoVersione)){
attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PR_12;
attributoVersioneNonCorretto = true;
}
}
if(attributoVersioneNonCorretto){
eccezioniValidazione.add(
validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
"Attributo versione presente ["+attributoVersione+
"] differente da quello atteso ["+attributoAtteso+"] per la versione della fattura ["+versioneFattura+"]",
!sdiProperties.isEnableValidazioneCampiInterniFattura()));
if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
return;
}
}
// Fattura.DatiTrasmissione.IdTrasmittente (la validazione del nome file e' stata effettuata nella validazione sintattica)
if(validaDatiTrasmissione){
String nomeFileSdi = busta.getProperty(SDICostanti.SDI_BUSTA_EXT_NOME_FILE);
String [] nomeFileSdiSplit = nomeFileSdi.split("_");
String idPaese = nomeFileSdiSplit[0].substring(0, 2);
String idCodice = nomeFileSdiSplit[0].substring(2);
if(idPaese.equals(trasmittenteIdPaese)==false){
eccezioniValidazione.add(
validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
"NomeFile presente nel messaggio SdI ["+nomeFileSdi+
"] possiede un idPaese["+idPaese+"] differente da quello presente nella fattura ["+trasmittenteIdPaese+"]",
!sdiProperties.isEnableValidazioneCampiInterniFattura()));
if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
return;
}
}
if(idCodice.equals(trasmittenteIdCodice)==false){
eccezioniValidazione.add(
validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
"NomeFile presente nel messaggio SdI ["+nomeFileSdi+
"] possiede un idCodice["+idCodice+"] differente da quello presente nella fattura ["+trasmittenteIdCodice+"]",
!sdiProperties.isEnableValidazioneCampiInterniFattura()));
if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
return;
}
}
}
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TRASMITTENTE_ID_PAESE, trasmittenteIdPaese);
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TRASMITTENTE_ID_CODICE, trasmittenteIdCodice);
// Fattura.DatiTrasmissione.progressivoInvio (la validazione del nome file e' stata effettuata nella validazione sintattica)
// NOTA: Si tratta di due progressivi differenti.
// if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
// String nomeFileSdi = busta.getProperty(SDICostanti.SDI_BUSTA_EXT_NOME_FILE);
// String [] nomeFileSdiSplit = nomeFileSdi.split("_");
// String progressivoInvio = nomeFileSdiSplit[1].split("\\.")[0];
// if(progressivoInvio.equals(trasmissioneProgressivoInvio)==false){
// eccezioniValidazione.add(
// validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
// "NomeFile presente nel messaggio SdI ["+nomeFileSdi+
// "] possiede un progressivoInvio["+progressivoInvio+"] differente da quello presente nella fattura ["+trasmissioneProgressivoInvio+"]"));
// return;
// }
// }
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TRASMISSIONE_PROGRESSIVO_INVIO, trasmissioneProgressivoInvio);
// Fattura.DatiTrasmissione.FormatoTrasmissione
if(validaDatiTrasmissione){
if(versioneFattura.equals(trasmissioneFormatoTrasmissione)==false){
eccezioniValidazione.add(
validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
"Formato di trasmissione indicato nel file Metadati ["+versioneFattura+
"] differente da quello presente nella fattura ["+trasmissioneFormatoTrasmissione+"]",
!sdiProperties.isEnableValidazioneCampiInterniFattura()));
if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
return;
}
}
}
// Fattura.DatiTrasmissione.CodiceDestinatario
if(validaDatiTrasmissione){
if(codiceDestinatario.equals(trasmissioneCodiceDestinatario)==false){
eccezioniValidazione.add(
validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
"Codice Destinatario indicato nel file Metadati ["+codiceDestinatario+
"] differente da quello presente nella fattura ["+trasmissioneCodiceDestinatario+"]",
!sdiProperties.isEnableValidazioneCampiInterniFattura()));
if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
return;
}
}
}
// Fattura.DatiTrasmissione.PECDestinatario
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TRASMISSIONE_PEC_DESTINATARIO, trasmissionePECDestinatario);
// Fattura.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA
if(cedentePrestatoreIdPaese!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_ID_PAESE, cedentePrestatoreIdPaese);
}
if(cedentePrestatoreIdCodice!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_ID_CODICE, cedentePrestatoreIdCodice);
}
// Fattura.CedentePrestatore.DatiAnagrafici.CodiceFiscale
if(cedentePrestatoreCodiceFiscale!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_CODICE_FISCALE, cedentePrestatoreCodiceFiscale);
}
// Fattura.CedentePrestatore.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
if(cedentePrestatoreDenominazione!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_DENOMINAZIONE, cedentePrestatoreDenominazione);
}
if(cedentePrestatoreNome!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_NOME, cedentePrestatoreNome);
}
if(cedentePrestatoreCognome!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_COGNOME, cedentePrestatoreCognome);
}
// Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
if(cessionarioCommittenteIdPaese!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_ID_PAESE, cessionarioCommittenteIdPaese);
}
if(cessionarioCommittenteIdCodice!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_ID_CODICE, cessionarioCommittenteIdCodice);
}
// Fattura.CessionarioCommittente.DatiAnagrafici.CodiceFiscale
if(cessionarioCommittenteCodiceFiscale!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_CODICE_FISCALE, cessionarioCommittenteCodiceFiscale);
}
// Fattura.CessionarioCommittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
if(cessionarioCommittenteDenominazione!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_DENOMINAZIONE, cessionarioCommittenteDenominazione);
}
if(cessionarioCommittenteNome!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_NOME, cessionarioCommittenteNome);
}
if(cessionarioCommittenteCognome!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_COGNOME, cessionarioCommittenteCognome);
}
// Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.IdFiscaleIVA
if(terzoIdPaese!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_ID_PAESE, terzoIdPaese);
}
if(terzoIdCodice!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_ID_CODICE, terzoIdCodice);
}
// Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.CodiceFiscale
if(terzoCodiceFiscale!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_CODICE_FISCALE, terzoCodiceFiscale);
}
// Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
if(terzoDenominazione!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_DENOMINAZIONE, terzoDenominazione);
}
if(terzoNome!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_NOME, terzoNome);
}
if(terzoCognome!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_COGNOME, terzoCognome);
}
// Fattura.SoggettoEmittente
if(soggettoEmittente!=null){
busta.addProperty(SDICostanti.SDI_BUSTA_EXT_SOGGETTO_EMITTENTE, soggettoEmittente);
}
}
}