SDIFatturaUtils.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.protocol.sdi.utils;

  21. import java.io.ByteArrayInputStream;
  22. import java.util.List;

  23. import org.openspcoop2.message.OpenSPCoop2Message;
  24. import org.openspcoop2.protocol.sdi.config.SDIProperties;
  25. import org.openspcoop2.protocol.sdi.constants.SDICostanti;
  26. import org.openspcoop2.protocol.sdi.constants.SDICostantiServizioRicezioneFatture;
  27. import org.openspcoop2.protocol.sdi.validator.SDIValidazioneUtils;
  28. import org.openspcoop2.protocol.sdk.Busta;
  29. import org.openspcoop2.protocol.sdk.Eccezione;
  30. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  31. import org.openspcoop2.protocol.sdk.constants.CodiceErroreCooperazione;
  32. import org.openspcoop2.utils.xml.AbstractValidatoreXSD;

  33. /**
  34.  * SDIFatturaUtils
  35.  *
  36.  * @author Andrea Poli (apoli@link.it)
  37.  * @author $Author$
  38.  * @version $Rev$, $Date$
  39.  */
  40. public class SDIFatturaUtils {

  41.     public static void validazioneFattura(byte[] fattura, SDIProperties sdiProperties, List<Eccezione> eccezioniValidazione,
  42.             SDIValidazioneUtils validazioneUtils, IProtocolFactory<?> protocolFactory,
  43.             Busta busta,OpenSPCoop2Message msg,boolean addMsgInContextIfEnabled,
  44.             boolean validaDatiTrasmissione, boolean forceDisableValidazioneXSD) throws Exception{
  45.            
  46.         boolean forceEccezioneLivelloInfo = false;
  47.         if(validaDatiTrasmissione) {
  48.             if(sdiProperties.isEnableAccessoFattura() == false) {
  49.                 return;
  50.             }
  51.             else if(sdiProperties.isEnableAccessoFatturaWarningMode()) {
  52.                 forceEccezioneLivelloInfo = true;
  53.             }
  54.         }
  55.        
  56.         // Valori letti nel file Metadati o come parametro nel caso di fattura da inviare
  57.         String versioneFattura = busta.getProperty(SDICostanti.SDI_BUSTA_EXT_VERSIONE_FATTURA_PA);
  58.                
  59.         String codiceDestinatario = busta.getProperty(SDICostanti.SDI_BUSTA_EXT_CODICE_DESTINATARIO);
  60.        
  61.         // validazione XSD file Fattura
  62.         if(forceDisableValidazioneXSD==false && sdiProperties.isEnableValidazioneXsdFattura()){
  63.             try{
  64.                 AbstractValidatoreXSD validatore = null;
  65.                 if(SDICostanti.SDI_VERSIONE_FATTURA_PA_10.equals(versioneFattura)){
  66.                     validatore = it.gov.fatturapa.sdi.fatturapa.v1_0.utils.XSDValidatorWithSignature.getOpenSPCoop2MessageXSDValidator(protocolFactory.getLogger());
  67.                 }
  68.                 else if(SDICostanti.SDI_VERSIONE_FATTURA_PA_11.equals(versioneFattura)){
  69.                     validatore = it.gov.fatturapa.sdi.fatturapa.v1_1.utils.XSDValidatorWithSignature.getOpenSPCoop2MessageXSDValidator(protocolFactory.getLogger());
  70.                 }
  71.                 else if(SDICostanti.SDI_VERSIONE_FATTURA_SEMPLIFICATA_10.equals(versioneFattura)){
  72.                     validatore = it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.utils.XSDValidatorWithSignature.getOpenSPCoop2MessageXSDValidator(protocolFactory.getLogger());
  73.                 }
  74.                 else{
  75.                     validatore = it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.utils.XSDValidatorWithSignature.getOpenSPCoop2MessageXSDValidator(protocolFactory.getLogger());
  76.                 }
  77.                 validatore.valida(new ByteArrayInputStream(fattura));
  78.             }catch(Exception e){
  79.                 String msgErrore = "Elemento ["+SDICostantiServizioRicezioneFatture.RICEVI_FATTURE_RICHIESTA_ELEMENT_FILE+"] contiene un file Fattura("+versioneFattura+") non valido rispetto allo schema XSD: "+e.getMessage();
  80.                 eccezioniValidazione.add(
  81.                         validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,msgErrore,e,forceEccezioneLivelloInfo));
  82.                 return;  // esco anche in caso di forceEccezioneLivelloInfo poiche' la fattura non e' ben formata e non ha senso andare avanti
  83.             }
  84.         }
  85.        
  86.         // Lettura fattura
  87.         String attributoVersione = null;
  88.         String trasmittenteIdPaese = null;
  89.         String trasmittenteIdCodice = null;
  90.         String trasmissioneProgressivoInvio = null;
  91.         String trasmissioneFormatoTrasmissione = null;
  92.         String trasmissioneCodiceDestinatario = null;
  93.         String trasmissionePECDestinatario = null; // solo per versione 1.2
  94.         String cedentePrestatoreIdPaese = null;
  95.         String cedentePrestatoreIdCodice = null;
  96.         String cedentePrestatoreDenominazione = null;
  97.         String cedentePrestatoreNome = null;
  98.         String cedentePrestatoreCognome = null;
  99.         String cedentePrestatoreCodiceFiscale = null;
  100.         String cessionarioCommittenteIdPaese = null;
  101.         String cessionarioCommittenteIdCodice = null;
  102.         String cessionarioCommittenteDenominazione = null;
  103.         String cessionarioCommittenteNome = null;
  104.         String cessionarioCommittenteCognome = null;
  105.         String cessionarioCommittenteCodiceFiscale = null;
  106.         String terzoIdPaese = null;
  107.         String terzoIdCodice = null;
  108.         String terzoDenominazione = null;
  109.         String terzoNome = null;
  110.         String terzoCognome = null;
  111.         String terzoCodiceFiscale = null;
  112.         String soggettoEmittente = null;
  113.         try{
  114.             // Fattura v1.0
  115.             if(SDICostanti.SDI_VERSIONE_FATTURA_PA_10.equals(versioneFattura)){
  116.                 it.gov.fatturapa.sdi.fatturapa.v1_0.utils.serializer.JaxbDeserializer deserializer =
  117.                         new it.gov.fatturapa.sdi.fatturapa.v1_0.utils.serializer.JaxbDeserializer();
  118.                
  119.                 it.gov.fatturapa.sdi.fatturapa.v1_0.FatturaElettronicaType fatturaObject = deserializer.readFatturaElettronicaType(fattura);
  120.                 if(addMsgInContextIfEnabled && sdiProperties.isSaveFatturaInContext()){
  121.                     msg.addContextProperty(SDICostanti.SDI_MESSAGE_CONTEXT_FATTURA, fatturaObject);
  122.                 }
  123.                 it.gov.fatturapa.sdi.fatturapa.v1_0.FatturaElettronicaHeaderType fatturaHeaderObject = fatturaObject.getFatturaElettronicaHeader();
  124.                
  125.                 // Attributo Versione
  126.                 attributoVersione = fatturaObject.getVersione();
  127.                
  128.                 // Fattura.DatiTrasmissione.IdTrasmittente
  129.                 trasmittenteIdPaese = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdPaese();
  130.                 trasmittenteIdCodice = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdCodice();
  131.                
  132.                 // Fattura.DatiTrasmissione.ProgressivoInvio
  133.                 trasmissioneProgressivoInvio = fatturaHeaderObject.getDatiTrasmissione().getProgressivoInvio();
  134.                
  135.                 // Fattura.DatiTrasmissione.FormatoTrasmissione
  136.                 trasmissioneFormatoTrasmissione = fatturaHeaderObject.getDatiTrasmissione().getFormatoTrasmissione().name();
  137.                
  138.                 // Fattura.DatiTrasmissione.CodiceDestinatario
  139.                 trasmissioneCodiceDestinatario = fatturaHeaderObject.getDatiTrasmissione().getCodiceDestinatario();
  140.                
  141.                 if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici()!=null){
  142.                     if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA()!=null){
  143.                         // Fattura.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA
  144.                         cedentePrestatoreIdPaese = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
  145.                         cedentePrestatoreIdCodice = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
  146.                     }
  147.                     if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale()!=null){
  148.                         cedentePrestatoreCodiceFiscale = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale();
  149.                     }
  150.                     if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica()!=null){
  151.                         // Fattura.CedentePrestatore.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  152.                         cedentePrestatoreDenominazione = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getDenominazione();
  153.                         cedentePrestatoreNome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getNome();
  154.                         cedentePrestatoreCognome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getCognome();
  155.                     }
  156.                 }
  157.                
  158.                 if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici()!=null){
  159.                     if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
  160.                         // Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
  161.                         cessionarioCommittenteIdPaese = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
  162.                         cessionarioCommittenteIdCodice = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
  163.                     }
  164.                     if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale()!=null){
  165.                         cessionarioCommittenteCodiceFiscale = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale();
  166.                     }
  167.                     if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica()!=null){
  168.                         // Fattura.CessionarioCommittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  169.                         cessionarioCommittenteDenominazione = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
  170.                         cessionarioCommittenteNome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getNome();
  171.                         cessionarioCommittenteCognome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getCognome();
  172.                     }
  173.                 }
  174.                 if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente()!=null &&
  175.                         fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici()!=null){
  176.                     if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
  177.                         // Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.IdFiscaleIVA
  178.                         terzoIdPaese = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
  179.                         terzoIdCodice = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
  180.                     }
  181.                     if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale()!=null){
  182.                         terzoCodiceFiscale = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale();
  183.                     }
  184.                     if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica()!=null){
  185.                         // Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  186.                         terzoDenominazione = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
  187.                         terzoNome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getNome();
  188.                         terzoCognome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getCognome();
  189.                     }
  190.                 }
  191.                 if(fatturaHeaderObject.getSoggettoEmittente()!=null){
  192.                     // Fattura.SoggettoEmittente
  193.                     soggettoEmittente = fatturaHeaderObject.getSoggettoEmittente().name();
  194.                 }
  195.                
  196.             }
  197.            
  198.             // Fattura v1.1
  199.             else if(SDICostanti.SDI_VERSIONE_FATTURA_PA_11.equals(versioneFattura)){
  200.                 it.gov.fatturapa.sdi.fatturapa.v1_1.utils.serializer.JaxbDeserializer deserializer =
  201.                         new it.gov.fatturapa.sdi.fatturapa.v1_1.utils.serializer.JaxbDeserializer();
  202.                 it.gov.fatturapa.sdi.fatturapa.v1_1.FatturaElettronicaType fatturaObject = deserializer.readFatturaElettronicaType(fattura);
  203.                 if(addMsgInContextIfEnabled && sdiProperties.isSaveFatturaInContext()){
  204.                     msg.addContextProperty(SDICostanti.SDI_MESSAGE_CONTEXT_FATTURA, fatturaObject);
  205.                 }
  206.                 it.gov.fatturapa.sdi.fatturapa.v1_1.FatturaElettronicaHeaderType fatturaHeaderObject = fatturaObject.getFatturaElettronicaHeader();
  207.                
  208.                 // Attributo Versione
  209.                 attributoVersione = fatturaObject.getVersione();
  210.                
  211.                 // Fattura.DatiTrasmissione.IdTrasmittente
  212.                 trasmittenteIdPaese = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdPaese();
  213.                 trasmittenteIdCodice = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdCodice();
  214.                
  215.                 // Fattura.DatiTrasmissione.ProgressivoInvio
  216.                 trasmissioneProgressivoInvio = fatturaHeaderObject.getDatiTrasmissione().getProgressivoInvio();
  217.                
  218.                 // Fattura.DatiTrasmissione.FormatoTrasmissione
  219.                 trasmissioneFormatoTrasmissione = fatturaHeaderObject.getDatiTrasmissione().getFormatoTrasmissione().name();
  220.                
  221.                 // Fattura.DatiTrasmissione.CodiceDestinatario
  222.                 trasmissioneCodiceDestinatario = fatturaHeaderObject.getDatiTrasmissione().getCodiceDestinatario();
  223.                
  224.                 if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici()!=null){
  225.                     if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA()!=null){
  226.                         // Fattura.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA
  227.                         cedentePrestatoreIdPaese = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
  228.                         cedentePrestatoreIdCodice = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
  229.                     }
  230.                     if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale()!=null){
  231.                         cedentePrestatoreCodiceFiscale = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale();
  232.                     }
  233.                     if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica()!=null){
  234.                         // Fattura.CedentePrestatore.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  235.                         cedentePrestatoreDenominazione = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getDenominazione();
  236.                         cedentePrestatoreNome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getNome();
  237.                         cedentePrestatoreCognome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getCognome();
  238.                     }
  239.                 }
  240.                    
  241.                 if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici()!=null){
  242.                     if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
  243.                         // Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
  244.                         cessionarioCommittenteIdPaese = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
  245.                         cessionarioCommittenteIdCodice = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
  246.                     }
  247.                     if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale()!=null){
  248.                         cessionarioCommittenteCodiceFiscale = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale();
  249.                     }
  250.                     if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica()!=null){
  251.                         // Fattura.CessionarioCommittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  252.                         cessionarioCommittenteDenominazione = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
  253.                         cessionarioCommittenteNome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getNome();
  254.                         cessionarioCommittenteCognome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getCognome();
  255.                     }
  256.                 }
  257.                    
  258.                 if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente()!=null &&
  259.                         fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici()!=null){
  260.                     if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
  261.                         // Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.IdFiscaleIVA
  262.                         terzoIdPaese = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
  263.                         terzoIdCodice = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
  264.                     }
  265.                     if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale()!=null){
  266.                         terzoCodiceFiscale = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale();
  267.                     }
  268.                     if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica()!=null){
  269.                         // Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  270.                         terzoDenominazione = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
  271.                         terzoNome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getNome();
  272.                         terzoCognome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getCognome();
  273.                     }
  274.                 }
  275.                 if(fatturaHeaderObject.getSoggettoEmittente()!=null){
  276.                     // Fattura.SoggettoEmittente
  277.                     soggettoEmittente = fatturaHeaderObject.getSoggettoEmittente().name();
  278.                 }
  279.                
  280.             }
  281.            
  282.             // FatturaSemplificata v1.0
  283.             else if(SDICostanti.SDI_VERSIONE_FATTURA_SEMPLIFICATA_10.equals(versioneFattura)){
  284.                 it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.utils.serializer.JaxbDeserializer deserializer =
  285.                         new it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.utils.serializer.JaxbDeserializer();
  286.                 it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.FatturaElettronicaType fatturaObject = deserializer.readFatturaElettronicaType(fattura);
  287.                 if(addMsgInContextIfEnabled && sdiProperties.isSaveFatturaInContext()){
  288.                     msg.addContextProperty(SDICostanti.SDI_MESSAGE_CONTEXT_FATTURA, fatturaObject);
  289.                 }
  290.                 it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_0.FatturaElettronicaHeaderType fatturaHeaderObject = fatturaObject.getFatturaElettronicaHeader();
  291.                
  292.                 // Attributo Versione
  293.                 if(fatturaObject.getVersione()!=null) {
  294.                     attributoVersione = fatturaObject.getVersione().name();
  295.                 }
  296.                
  297.                 // Fattura.DatiTrasmissione.IdTrasmittente
  298.                 trasmittenteIdPaese = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdPaese();
  299.                 trasmittenteIdCodice = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdCodice();
  300.                
  301.                 // Fattura.DatiTrasmissione.ProgressivoInvio
  302.                 trasmissioneProgressivoInvio = fatturaHeaderObject.getDatiTrasmissione().getProgressivoInvio();
  303.                
  304.                 // Fattura.DatiTrasmissione.FormatoTrasmissione
  305.                 trasmissioneFormatoTrasmissione = fatturaHeaderObject.getDatiTrasmissione().getFormatoTrasmissione().name();
  306.                
  307.                 // Fattura.DatiTrasmissione.CodiceDestinatario
  308.                 trasmissioneCodiceDestinatario = fatturaHeaderObject.getDatiTrasmissione().getCodiceDestinatario();
  309.                
  310.                 if(fatturaHeaderObject.getCedentePrestatore()!=null){
  311.                     if(fatturaHeaderObject.getCedentePrestatore().getIdFiscaleIVA()!=null){
  312.                         // Fattura.CedentePrestatore.IdFiscaleIVA
  313.                         cedentePrestatoreIdPaese = fatturaHeaderObject.getCedentePrestatore().getIdFiscaleIVA().getIdPaese();
  314.                         cedentePrestatoreIdCodice = fatturaHeaderObject.getCedentePrestatore().getIdFiscaleIVA().getIdCodice();
  315.                     }
  316.                     if(fatturaHeaderObject.getCedentePrestatore().getCodiceFiscale()!=null){
  317.                         cedentePrestatoreCodiceFiscale = fatturaHeaderObject.getCedentePrestatore().getCodiceFiscale();
  318.                     }
  319.                     // Fattura.CedentePrestatore.[Denominazione,Nome/Cognome] sono in choice
  320.                     if(fatturaHeaderObject.getCedentePrestatore().getDenominazione()!=null){
  321.                         cedentePrestatoreDenominazione = fatturaHeaderObject.getCedentePrestatore().getDenominazione();
  322.                     }
  323.                     if(fatturaHeaderObject.getCedentePrestatore().getNome()!=null){
  324.                         cedentePrestatoreNome = fatturaHeaderObject.getCedentePrestatore().getNome();
  325.                     }
  326.                     if(fatturaHeaderObject.getCedentePrestatore().getCognome()!=null){
  327.                         cedentePrestatoreCognome = fatturaHeaderObject.getCedentePrestatore().getCognome();
  328.                     }
  329.                 }
  330.                    
  331.                 if(fatturaHeaderObject.getCessionarioCommittente()!=null){
  332.                     if(fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali()!=null) {
  333.                         if(fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getIdFiscaleIVA()!=null){
  334.                             // Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
  335.                             cessionarioCommittenteIdPaese = fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getIdFiscaleIVA().getIdPaese();
  336.                             cessionarioCommittenteIdCodice = fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getIdFiscaleIVA().getIdCodice();
  337.                         }
  338.                         if(fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getCodiceFiscale()!=null){
  339.                             cessionarioCommittenteCodiceFiscale = fatturaHeaderObject.getCessionarioCommittente().getIdentificativiFiscali().getCodiceFiscale();
  340.                         }
  341.                     }
  342.                     if(fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi()!=null) {
  343.                         // Fattura.CessionarioCommittente.AltriDatiIdentificativi.[Denominazione,Nome/Cognome] sono in choice
  344.                         if(fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getDenominazione()!=null){
  345.                             cessionarioCommittenteDenominazione = fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getDenominazione();
  346.                         }
  347.                         if(fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getNome()!=null){
  348.                             cessionarioCommittenteNome = fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getNome();
  349.                         }
  350.                         if(fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getCognome()!=null){
  351.                             cessionarioCommittenteCognome = fatturaHeaderObject.getCessionarioCommittente().getAltriDatiIdentificativi().getCognome();
  352.                         }
  353.                     }
  354.                 }
  355.                
  356.                 if(fatturaHeaderObject.getSoggettoEmittente()!=null){
  357.                     // Fattura.SoggettoEmittente
  358.                     soggettoEmittente = fatturaHeaderObject.getSoggettoEmittente().name();
  359.                 }
  360.                
  361.             }
  362.            
  363.             // Fattura v1.2
  364.             else{
  365.                
  366.                 it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.utils.serializer.JaxbDeserializer deserializer =
  367.                         new it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.utils.serializer.JaxbDeserializer();
  368.                 it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.FatturaElettronicaType fatturaObject = deserializer.readFatturaElettronicaType(fattura);
  369.                 if(addMsgInContextIfEnabled && sdiProperties.isSaveFatturaInContext()){
  370.                     msg.addContextProperty(SDICostanti.SDI_MESSAGE_CONTEXT_FATTURA, fatturaObject);
  371.                 }
  372.                 it.gov.agenziaentrate.ivaservizi.docs.xsd.fatture.v1_2.FatturaElettronicaHeaderType fatturaHeaderObject = fatturaObject.getFatturaElettronicaHeader();
  373.                
  374.                 // Attributo Versione
  375.                 if(fatturaObject.getVersione()!=null){
  376.                     attributoVersione = fatturaObject.getVersione().getValue();
  377.                 }
  378.                
  379.                 // Fattura.DatiTrasmissione.IdTrasmittente
  380.                 trasmittenteIdPaese = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdPaese();
  381.                 trasmittenteIdCodice = fatturaHeaderObject.getDatiTrasmissione().getIdTrasmittente().getIdCodice();
  382.                
  383.                 // Fattura.DatiTrasmissione.ProgressivoInvio
  384.                 trasmissioneProgressivoInvio = fatturaHeaderObject.getDatiTrasmissione().getProgressivoInvio();
  385.                
  386.                 // Fattura.DatiTrasmissione.FormatoTrasmissione
  387.                 trasmissioneFormatoTrasmissione = fatturaHeaderObject.getDatiTrasmissione().getFormatoTrasmissione().name();
  388.                
  389.                 // Fattura.DatiTrasmissione.CodiceDestinatario
  390.                 trasmissioneCodiceDestinatario = fatturaHeaderObject.getDatiTrasmissione().getCodiceDestinatario();
  391.                
  392.                 // Fattura.DatiTrasmissione.PECDestinatario
  393.                 trasmissionePECDestinatario = fatturaHeaderObject.getDatiTrasmissione().getPecDestinatario();
  394.                
  395.                 if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici()!=null){
  396.                     if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA()!=null){
  397.                         // Fattura.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA
  398.                         cedentePrestatoreIdPaese = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
  399.                         cedentePrestatoreIdCodice = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
  400.                     }
  401.                     if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale()!=null){
  402.                         cedentePrestatoreCodiceFiscale = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getCodiceFiscale();
  403.                     }
  404.                     if(fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica()!=null){
  405.                         // Fattura.CedentePrestatore.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  406.                         cedentePrestatoreDenominazione = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getDenominazione();
  407.                         cedentePrestatoreNome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getNome();
  408.                         cedentePrestatoreCognome = fatturaHeaderObject.getCedentePrestatore().getDatiAnagrafici().getAnagrafica().getCognome();
  409.                     }
  410.                 }
  411.                    
  412.                 if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici()!=null){
  413.                     if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
  414.                         // Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
  415.                         cessionarioCommittenteIdPaese = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
  416.                         cessionarioCommittenteIdCodice = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
  417.                     }
  418.                     if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale()!=null){
  419.                         cessionarioCommittenteCodiceFiscale = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getCodiceFiscale();
  420.                     }
  421.                     if(fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica()!=null){
  422.                         // Fattura.CessionarioCommittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  423.                         cessionarioCommittenteDenominazione = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
  424.                         cessionarioCommittenteNome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getNome();
  425.                         cessionarioCommittenteCognome = fatturaHeaderObject.getCessionarioCommittente().getDatiAnagrafici().getAnagrafica().getCognome();
  426.                     }
  427.                 }
  428.                    
  429.                 if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente()!=null &&
  430.                         fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici()!=null){
  431.                     if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA()!=null){
  432.                         // Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.IdFiscaleIVA
  433.                         terzoIdPaese = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdPaese();
  434.                         terzoIdCodice = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getIdFiscaleIVA().getIdCodice();
  435.                     }
  436.                     if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale()!=null){
  437.                         terzoCodiceFiscale = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getCodiceFiscale();
  438.                     }
  439.                     if(fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica()!=null){
  440.                         // Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  441.                         terzoDenominazione = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getDenominazione();
  442.                         terzoNome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getNome();
  443.                         terzoCognome = fatturaHeaderObject.getTerzoIntermediarioOSoggettoEmittente().getDatiAnagrafici().getAnagrafica().getCognome();
  444.                     }
  445.                 }
  446.                 if(fatturaHeaderObject.getSoggettoEmittente()!=null){
  447.                     // Fattura.SoggettoEmittente
  448.                     soggettoEmittente = fatturaHeaderObject.getSoggettoEmittente().name();
  449.                 }
  450.             }
  451.            
  452.         }catch(Exception e){
  453.             String msgErrore = "Elemento ["+SDICostantiServizioRicezioneFatture.RICEVI_FATTURE_RICHIESTA_ELEMENT_FILE+"] contiene un file Fattura("+versioneFattura+") non valido: "+e.getMessage();
  454.             eccezioniValidazione.add(
  455.                     validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,msgErrore,e,forceEccezioneLivelloInfo));
  456.             return;  // esco anche in caso di forceEccezioneLivelloInfo poiche' la fattura non e' ben formata e non ha senso andare avanti
  457.         }
  458.        
  459.         // Attributo Versione
  460.         String attributoAtteso = null;
  461.         boolean attributoVersioneNonCorretto = false;
  462.         if(SDICostanti.SDI_VERSIONE_FATTURA_PA_10.equals(versioneFattura)){
  463.             if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_10.equals(attributoVersione)){
  464.                 attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_10;
  465.                 attributoVersioneNonCorretto = true;
  466.             }
  467.         }
  468.         else if(SDICostanti.SDI_VERSIONE_FATTURA_PA_11.equals(versioneFattura)){
  469.             if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_11.equals(attributoVersione)){
  470.                 attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_11;
  471.                 attributoVersioneNonCorretto = true;
  472.             }
  473.         }
  474.         else if(SDICostanti.SDI_VERSIONE_FATTURA_SEMPLIFICATA_10.equals(versioneFattura)){
  475.             if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_SEMPLIFICATA_10.equals(attributoVersione)){
  476.                 attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_SEMPLIFICATA_10;
  477.                 attributoVersioneNonCorretto = true;
  478.             }
  479.         }
  480.         else if(SDICostanti.SDI_VERSIONE_FATTURA_PA_12.equals(versioneFattura)){
  481.             if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_12.equals(attributoVersione)){
  482.                 attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PA_12;
  483.                 attributoVersioneNonCorretto = true;
  484.             }
  485.         }
  486.         else if(SDICostanti.SDI_VERSIONE_FATTURA_PR_12.equals(versioneFattura)){
  487.             if(!SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PR_12.equals(attributoVersione)){
  488.                 attributoAtteso = SDICostanti.SDI_ATTRIBUTE_VERSION_FATTURA_PR_12;
  489.                 attributoVersioneNonCorretto = true;
  490.             }
  491.         }
  492.         if(attributoVersioneNonCorretto){
  493.             eccezioniValidazione.add(
  494.                     validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
  495.                             "Attributo versione presente ["+attributoVersione+
  496.                             "] differente da quello atteso ["+attributoAtteso+"] per la versione della fattura ["+versioneFattura+"]",
  497.                             !sdiProperties.isEnableValidazioneCampiInterniFattura()));
  498.             if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
  499.                 return;
  500.             }
  501.         }
  502.        
  503.         // Fattura.DatiTrasmissione.IdTrasmittente (la validazione del nome file e' stata effettuata nella validazione sintattica)
  504.         if(validaDatiTrasmissione){
  505.             String nomeFileSdi = busta.getProperty(SDICostanti.SDI_BUSTA_EXT_NOME_FILE);
  506.             String [] nomeFileSdiSplit = nomeFileSdi.split("_");
  507.             String idPaese = nomeFileSdiSplit[0].substring(0, 2);
  508.             String idCodice = nomeFileSdiSplit[0].substring(2);
  509.             if(idPaese.equals(trasmittenteIdPaese)==false){
  510.                 eccezioniValidazione.add(
  511.                         validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
  512.                                 "NomeFile presente nel messaggio SdI ["+nomeFileSdi+
  513.                                 "] possiede un idPaese["+idPaese+"] differente da quello presente nella fattura ["+trasmittenteIdPaese+"]",
  514.                                 !sdiProperties.isEnableValidazioneCampiInterniFattura()));
  515.                 if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
  516.                     return;
  517.                 }
  518.             }
  519.             if(idCodice.equals(trasmittenteIdCodice)==false){
  520.                 eccezioniValidazione.add(
  521.                         validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
  522.                                 "NomeFile presente nel messaggio SdI ["+nomeFileSdi+
  523.                                 "] possiede un idCodice["+idCodice+"] differente da quello presente nella fattura ["+trasmittenteIdCodice+"]",
  524.                                 !sdiProperties.isEnableValidazioneCampiInterniFattura()));
  525.                 if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
  526.                     return;
  527.                 }
  528.             }
  529.         }
  530.         busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TRASMITTENTE_ID_PAESE, trasmittenteIdPaese);
  531.         busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TRASMITTENTE_ID_CODICE, trasmittenteIdCodice);
  532.        
  533.         // Fattura.DatiTrasmissione.progressivoInvio (la validazione del nome file e' stata effettuata nella validazione sintattica)
  534. // NOTA: Si tratta di due progressivi differenti.
  535. //      if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
  536. //          String nomeFileSdi = busta.getProperty(SDICostanti.SDI_BUSTA_EXT_NOME_FILE);
  537. //          String [] nomeFileSdiSplit = nomeFileSdi.split("_");
  538. //          String progressivoInvio = nomeFileSdiSplit[1].split("\\.")[0];
  539. //          if(progressivoInvio.equals(trasmissioneProgressivoInvio)==false){
  540. //              eccezioniValidazione.add(
  541. //                      validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
  542. //                              "NomeFile presente nel messaggio SdI ["+nomeFileSdi+
  543. //                              "] possiede un progressivoInvio["+progressivoInvio+"] differente da quello presente nella fattura ["+trasmissioneProgressivoInvio+"]"));
  544. //              return;
  545. //          }
  546. //      }
  547.         busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TRASMISSIONE_PROGRESSIVO_INVIO, trasmissioneProgressivoInvio);
  548.        
  549.         // Fattura.DatiTrasmissione.FormatoTrasmissione
  550.         if(validaDatiTrasmissione){
  551.             if(versioneFattura.equals(trasmissioneFormatoTrasmissione)==false){
  552.                 eccezioniValidazione.add(
  553.                         validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
  554.                                 "Formato di trasmissione indicato nel file Metadati ["+versioneFattura+
  555.                                 "] differente da quello presente nella fattura ["+trasmissioneFormatoTrasmissione+"]",
  556.                                 !sdiProperties.isEnableValidazioneCampiInterniFattura()));
  557.                 if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
  558.                     return;
  559.                 }
  560.             }
  561.         }
  562.        
  563.         // Fattura.DatiTrasmissione.CodiceDestinatario
  564.         if(validaDatiTrasmissione){
  565.             if(codiceDestinatario.equals(trasmissioneCodiceDestinatario)==false){
  566.                 eccezioniValidazione.add(
  567.                         validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
  568.                                 "Codice Destinatario indicato nel file Metadati ["+codiceDestinatario+
  569.                                 "] differente da quello presente nella fattura ["+trasmissioneCodiceDestinatario+"]",
  570.                                 !sdiProperties.isEnableValidazioneCampiInterniFattura()));
  571.                 if(sdiProperties.isEnableValidazioneCampiInterniFattura()){
  572.                     return;
  573.                 }
  574.             }
  575.         }
  576.        
  577.         // Fattura.DatiTrasmissione.PECDestinatario
  578.         busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TRASMISSIONE_PEC_DESTINATARIO, trasmissionePECDestinatario);
  579.        
  580.         // Fattura.CedentePrestatore.DatiAnagrafici.IdFiscaleIVA
  581.         if(cedentePrestatoreIdPaese!=null){
  582.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_ID_PAESE, cedentePrestatoreIdPaese);
  583.         }
  584.         if(cedentePrestatoreIdCodice!=null){
  585.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_ID_CODICE, cedentePrestatoreIdCodice);
  586.         }
  587.        
  588.         // Fattura.CedentePrestatore.DatiAnagrafici.CodiceFiscale
  589.         if(cedentePrestatoreCodiceFiscale!=null){
  590.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_CODICE_FISCALE, cedentePrestatoreCodiceFiscale);
  591.         }
  592.        
  593.         // Fattura.CedentePrestatore.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  594.         if(cedentePrestatoreDenominazione!=null){
  595.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_DENOMINAZIONE, cedentePrestatoreDenominazione);
  596.         }
  597.         if(cedentePrestatoreNome!=null){
  598.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_NOME, cedentePrestatoreNome);
  599.         }
  600.         if(cedentePrestatoreCognome!=null){
  601.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CEDENTE_PRESTATORE_COGNOME, cedentePrestatoreCognome);
  602.         }
  603.        
  604.         // Fattura.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA
  605.         if(cessionarioCommittenteIdPaese!=null){
  606.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_ID_PAESE, cessionarioCommittenteIdPaese);
  607.         }
  608.         if(cessionarioCommittenteIdCodice!=null){
  609.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_ID_CODICE, cessionarioCommittenteIdCodice);
  610.         }
  611.        
  612.         // Fattura.CessionarioCommittente.DatiAnagrafici.CodiceFiscale
  613.         if(cessionarioCommittenteCodiceFiscale!=null){
  614.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_CODICE_FISCALE, cessionarioCommittenteCodiceFiscale);
  615.         }
  616.        
  617.         // Fattura.CessionarioCommittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  618.         if(cessionarioCommittenteDenominazione!=null){
  619.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_DENOMINAZIONE, cessionarioCommittenteDenominazione);
  620.         }
  621.         if(cessionarioCommittenteNome!=null){
  622.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_NOME, cessionarioCommittenteNome);
  623.         }
  624.         if(cessionarioCommittenteCognome!=null){
  625.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_CESSIONARIO_COMMITTENTE_COGNOME, cessionarioCommittenteCognome);
  626.         }
  627.        
  628.         // Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.IdFiscaleIVA
  629.         if(terzoIdPaese!=null){
  630.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_ID_PAESE, terzoIdPaese);
  631.         }
  632.         if(terzoIdCodice!=null){
  633.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_ID_CODICE, terzoIdCodice);
  634.         }
  635.        
  636.         // Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.CodiceFiscale
  637.         if(terzoCodiceFiscale!=null){
  638.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_CODICE_FISCALE, terzoCodiceFiscale);
  639.         }
  640.        
  641.         // Fattura.TerzoIntermediarioOSoggettoEmittente.DatiAnagrafici.Anagrafica.[Denominazione,Nome/Cognome] sono in choice
  642.         if(terzoDenominazione!=null){
  643.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_DENOMINAZIONE, terzoDenominazione);
  644.         }
  645.         if(terzoNome!=null){
  646.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_NOME, terzoNome);
  647.         }
  648.         if(terzoCognome!=null){
  649.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_TERZO_INTERMEDIARIO_O_SOGGETTO_EMITTENTE_COGNOME, terzoCognome);
  650.         }
  651.        
  652.         // Fattura.SoggettoEmittente
  653.         if(soggettoEmittente!=null){
  654.             busta.addProperty(SDICostanti.SDI_BUSTA_EXT_SOGGETTO_EMITTENTE, soggettoEmittente);
  655.         }

  656.     }
  657.    
  658. }