master 1b3da0aca667 cached
387 files
1.2 MB
331.5k tokens
1140 symbols
1 requests
Download .txt
Showing preview only (1,314K chars total). Download the full file or copy to clipboard to get everything.
Repository: FatturaElettronica/FatturaElettronica.NET
Branch: master
Commit: 1b3da0aca667
Files: 387
Total size: 1.2 MB

Directory structure:
gitextract_e56b_87i/

├── .editorconfig
├── .github/
│   └── workflows/
│       ├── publish.yml
│       └── test.yml
├── .gitignore
├── AUTHORS.md
├── CHANGES.md
├── CNAME
├── Common/
│   ├── Allegati.cs
│   ├── Anagrafica.cs
│   ├── DatiAnagrafici.cs
│   ├── DatiDocumento.cs
│   ├── DenominazioneNomeCognome.cs
│   ├── IdFiscaleIva.cs
│   ├── Località.cs
│   ├── RappresentanteFiscale.cs
│   ├── ScontoMaggiorazione.cs
│   └── StabileOrganizzazione.cs
├── Core/
│   ├── BaseClass.cs
│   ├── BaseClassSerializable.cs
│   ├── DataPropertyAttribute.cs
│   ├── IgnoreXmlDateFormat.cs
│   ├── JsonOptions.cs
│   ├── JsonParseException.cs
│   ├── TypeExtensions.cs
│   └── XmlOptions.cs
├── Defaults.cs
├── Extensions/
│   ├── DecimalRuleExtensions.cs
│   ├── FatturaElettronicaExtensions.cs
│   ├── FatturaElettronicaFileNameGenerator/
│   │   ├── FatturaElettronicaFileNameExtensionType.cs
│   │   └── FatturaElettronicaFileNameGenerator.cs
│   ├── HtmlExtensions.cs
│   ├── JsonExtensions.cs
│   ├── Resources/
│   │   ├── ErrorMessages.Designer.cs
│   │   ├── ErrorMessages.en.resx
│   │   └── ErrorMessages.resx
│   ├── SignatureException.cs
│   ├── SignedFileExtensions.cs
│   ├── StreamExtensions.cs
│   └── XmlExtensions.cs
├── FUNDING.yml
├── FatturaBase.cs
├── FatturaElettronica.csproj
├── FatturaElettronica.csproj.DotSettings
├── FatturaElettronica.sln
├── FatturaElettronica.sln.DotSettings
├── LICENSE.txt
├── Ordinaria/
│   ├── FatturaElettronicaBody/
│   │   ├── DatiBeniServizi/
│   │   │   ├── AltriDatiGestionali.cs
│   │   │   ├── CodiceArticolo.cs
│   │   │   ├── DatiBeniServizi.cs
│   │   │   ├── DatiRiepilogo.cs
│   │   │   └── DettaglioLinee.cs
│   │   ├── DatiGenerali/
│   │   │   ├── DatiAnagraficiVettore.cs
│   │   │   ├── DatiBollo.cs
│   │   │   ├── DatiCassaPrevidenziale.cs
│   │   │   ├── DatiContratto.cs
│   │   │   ├── DatiConvenzione.cs
│   │   │   ├── DatiDDT.cs
│   │   │   ├── DatiFattureCollegate.cs
│   │   │   ├── DatiGenerali.cs
│   │   │   ├── DatiGeneraliDocumento.cs
│   │   │   ├── DatiOrdineAcquisto.cs
│   │   │   ├── DatiRicezione.cs
│   │   │   ├── DatiRitenuta.cs
│   │   │   ├── DatiSAL.cs
│   │   │   ├── DatiTrasporto.cs
│   │   │   ├── FatturaPrincipale.cs
│   │   │   └── IndirizzoResa.cs
│   │   ├── DatiPagamento/
│   │   │   ├── DatiPagamento.cs
│   │   │   └── DettaglioPagamento.cs
│   │   ├── DatiVeicoli/
│   │   │   └── DatiVeicoli.cs
│   │   └── FatturaElettronicaBody.cs
│   ├── FatturaElettronicaHeader/
│   │   ├── CedentePrestatore/
│   │   │   ├── CedentePrestatore.cs
│   │   │   ├── Contatti.cs
│   │   │   ├── DatiAnagraficiCedentePrestatore.cs
│   │   │   ├── IscrizioneRea.cs
│   │   │   └── SedeCedentePrestatore.cs
│   │   ├── CessionarioCommittente/
│   │   │   ├── CessionarioCommittente.cs
│   │   │   ├── DatiAnagraficiCessionarioCommittente.cs
│   │   │   ├── RappresentanteFiscaleCessionarioCommittente.cs
│   │   │   └── SedeCessionarioCommittente.cs
│   │   ├── DatiTrasmissione/
│   │   │   ├── ContattiTrasmittente.cs
│   │   │   ├── DatiTrasmissione.cs
│   │   │   └── IdTrasmittente.cs
│   │   ├── FatturaElettronicaHeader.cs
│   │   ├── RappresentanteFiscale/
│   │   │   └── RappresentanteFiscale.cs
│   │   └── TerzoIntermediarioOSoggettoEmittente/
│   │       └── TerzoIntermediarioOSoggettoEmittente.cs
│   └── FatturaOrdinaria.cs
├── README.md
├── Resources/
│   ├── CausalePagamento.Designer.cs
│   ├── CausalePagamento.de.resx
│   ├── CausalePagamento.en.resx
│   ├── CausalePagamento.resx
│   ├── CondizioniPagamento.Designer.cs
│   ├── CondizioniPagamento.de.resx
│   ├── CondizioniPagamento.en.resx
│   ├── CondizioniPagamento.resx
│   ├── Divisa.Designer.cs
│   ├── Divisa.resx
│   ├── EsigibilitaIVA.Designer.cs
│   ├── EsigibilitaIVA.de.resx
│   ├── EsigibilitaIVA.en.resx
│   ├── EsigibilitaIVA.resx
│   ├── FormatoTrasmissione.Designer.cs
│   ├── FormatoTrasmissione.de.resx
│   ├── FormatoTrasmissione.en.resx
│   ├── FormatoTrasmissione.resx
│   ├── IdPaese.Designer.cs
│   ├── IdPaese.de.resx
│   ├── IdPaese.en.resx
│   ├── IdPaese.resx
│   ├── ModalitaPagamento.Designer.cs
│   ├── ModalitaPagamento.de.resx
│   ├── ModalitaPagamento.en.resx
│   ├── ModalitaPagamento.resx
│   ├── Natura.Designer.cs
│   ├── Natura.de.resx
│   ├── Natura.en.resx
│   ├── Natura.resx
│   ├── NaturaSemplificata.Designer.cs
│   ├── NaturaSemplificata.de.resx
│   ├── NaturaSemplificata.en.resx
│   ├── NaturaSemplificata.resx
│   ├── Provincia.Designer.cs
│   ├── Provincia.de.resx
│   ├── Provincia.en.resx
│   ├── Provincia.resx
│   ├── RegimeFiscale.Designer.cs
│   ├── RegimeFiscale.de.resx
│   ├── RegimeFiscale.en.resx
│   ├── RegimeFiscale.resx
│   ├── ScontoMaggiorazione.Designer.cs
│   ├── ScontoMaggiorazione.de.resx
│   ├── ScontoMaggiorazione.en.resx
│   ├── ScontoMaggiorazione.resx
│   ├── SocioUnico.Designer.cs
│   ├── SocioUnico.de.resx
│   ├── SocioUnico.en.resx
│   ├── SocioUnico.resx
│   ├── SoggettoEmittente.Designer.cs
│   ├── SoggettoEmittente.de.resx
│   ├── SoggettoEmittente.en.resx
│   ├── SoggettoEmittente.resx
│   ├── StatoLiquidazione.Designer.cs
│   ├── StatoLiquidazione.de.resx
│   ├── StatoLiquidazione.en.resx
│   ├── StatoLiquidazione.resx
│   ├── TipoCassa.Designer.cs
│   ├── TipoCassa.de.resx
│   ├── TipoCassa.en.resx
│   ├── TipoCassa.resx
│   ├── TipoCessionePrestazione.Designer.cs
│   ├── TipoCessionePrestazione.de.resx
│   ├── TipoCessionePrestazione.en.resx
│   ├── TipoCessionePrestazione.resx
│   ├── TipoDocumento.Designer.cs
│   ├── TipoDocumento.de.resx
│   ├── TipoDocumento.en.resx
│   ├── TipoDocumento.resx
│   ├── TipoDocumentoSemplificata.Designer.cs
│   ├── TipoDocumentoSemplificata.de.resx
│   ├── TipoDocumentoSemplificata.en.resx
│   ├── TipoDocumentoSemplificata.resx
│   ├── TipoResa.Designer.cs
│   ├── TipoResa.de.resx
│   ├── TipoResa.en.resx
│   ├── TipoResa.resx
│   ├── TipoRitenuta.Designer.cs
│   ├── TipoRitenuta.de.resx
│   ├── TipoRitenuta.en.resx
│   ├── TipoRitenuta.resx
│   ├── ValidatorMessages.Designer.cs
│   ├── ValidatorMessages.de.resx
│   ├── ValidatorMessages.en.resx
│   └── ValidatorMessages.resx
├── Semplificata/
│   ├── FatturaElettronicaBody/
│   │   ├── DatiBeniServizi/
│   │   │   ├── DatiBeniServizi.cs
│   │   │   └── DatiIVA.cs
│   │   ├── DatiGenerali/
│   │   │   ├── DatiFatturaRettificata.cs
│   │   │   ├── DatiGenerali.cs
│   │   │   └── DatiGeneraliDocumento.cs
│   │   └── FatturaElettronicaBody.cs
│   ├── FatturaElettronicaHeader/
│   │   ├── CedentePrestatore/
│   │   │   ├── CedentePrestatore.cs
│   │   │   ├── IscrizioneRea.cs
│   │   │   ├── RappresentanteFiscale.cs
│   │   │   └── SedeCedentePrestatore.cs
│   │   ├── CessionarioCommittente/
│   │   │   ├── AltriDatiIdentificativi.cs
│   │   │   ├── CessionarioCommittente.cs
│   │   │   ├── IdentificativiFiscali.cs
│   │   │   ├── RappresentanteFiscaleCessionarioCommittente.cs
│   │   │   └── SedeCessionarioCommittente.cs
│   │   ├── DatiTrasmissione/
│   │   │   ├── DatiTrasmissione.cs
│   │   │   └── IdTrasmittente.cs
│   │   └── FatturaElettronicaHeader.cs
│   └── FatturaSemplificata.cs
├── Tabelle/
│   ├── CausalePagamento.cs
│   ├── CondizioniPagamento.cs
│   ├── Divisa.cs
│   ├── EsigibilitaIVA.cs
│   ├── FormatoTrasmissione.cs
│   ├── IdPaese.cs
│   ├── ModalitaPagamento.cs
│   ├── Natura.cs
│   ├── NaturaSemplificata.cs
│   ├── Provincia.cs
│   ├── RegimeFiscale.cs
│   ├── ScontoMaggiorazione.cs
│   ├── SocioUnico.cs
│   ├── SoggettoEmittente.cs
│   ├── StatoLiquidazione.cs
│   ├── Tabella.cs
│   ├── TipoCassa.cs
│   ├── TipoCessionePrestazione.cs
│   ├── TipoDocumento.cs
│   ├── TipoDocumentoSemplificata.cs
│   ├── TipoResa.cs
│   └── TipoRitenuta.cs
├── Test/
│   ├── BaseClass.cs
│   ├── Common/
│   │   ├── AnagraficaValidator.cs
│   │   ├── IdFiscaleIva.cs
│   │   ├── IdFiscaleValidator.cs
│   │   ├── IdTrasmittenteValidator.cs
│   │   ├── ScontoMaggiorazioneValidator.cs
│   │   └── StabileOrganizzazioneValidator.cs
│   ├── Core/
│   │   ├── JsonTest.cs
│   │   ├── TestMe.cs
│   │   └── XmlTest.cs
│   ├── Extensions/
│   │   ├── FilenameGeneratorTest.cs
│   │   ├── HtmlExtensionsTest.cs
│   │   ├── JsonExtensionsTest.cs
│   │   ├── SignedFileExtensionsTest.cs
│   │   ├── StreamExtensionsTest.cs
│   │   └── XmlExtensionsTest.cs
│   ├── FatturaElettronica.Test.csproj
│   ├── JSONDeSerialize.cs
│   ├── Ordinaria/
│   │   ├── AllegatiValidator.cs
│   │   ├── AltriDatiGestionaliValidator.cs
│   │   ├── BaseDatiDocumentoValidator.cs
│   │   ├── BaseLocalitàValidator.cs
│   │   ├── CedentePrestatoreValidator.cs
│   │   ├── CessionarioCommittenteValidator.cs
│   │   ├── CodiceArticoloValidator.cs
│   │   ├── ContattiTrasmittenteValidator.cs
│   │   ├── ContattiValidator.cs
│   │   ├── DatiAnagraficiCedentePrestatoreValidator.cs
│   │   ├── DatiAnagraficiCessionarioCommittenteValidator.cs
│   │   ├── DatiAnagraficiVettoreValidator.cs
│   │   ├── DatiBeniServiziValidator.cs
│   │   ├── DatiBolloValidator.cs
│   │   ├── DatiCassaPrevidenzialeValidator.cs
│   │   ├── DatiContrattoValidator.cs
│   │   ├── DatiConvenzioneValidator.cs
│   │   ├── DatiDDTValidator.cs
│   │   ├── DatiFattureCollegateValidator.cs
│   │   ├── DatiGeneraliDocumentoValidator.cs
│   │   ├── DatiGeneraliValidator.cs
│   │   ├── DatiOrdineAcquistoValidator.cs
│   │   ├── DatiPagamentoValidator.cs
│   │   ├── DatiRicezioneValidator.cs
│   │   ├── DatiRiepilogoValidator.cs
│   │   ├── DatiRitenutaValidator.cs
│   │   ├── DatiSALValidator.cs
│   │   ├── DatiTrasmissioneValidator.cs
│   │   ├── DatiTrasportoValidator.cs
│   │   ├── DatiVeicoliValidator.cs
│   │   ├── DenominazioneNomeCognomeValidator.cs
│   │   ├── DettaglioLineeValidator.cs
│   │   ├── DettaglioPagamentoValidator.cs
│   │   ├── FatturaCreateInstance.cs
│   │   ├── FatturaElettronicaBodyValidator.cs
│   │   ├── FatturaElettronicaHeaderValidator.cs
│   │   ├── FatturaPrincipaleValidator.cs
│   │   ├── FatturaValidator.cs
│   │   ├── IscrizioneREAValidator.cs
│   │   ├── RappresentanteFiscaleCessionarioCommittenteValidator.cs
│   │   ├── RappresentanteFiscaleValidator.cs
│   │   ├── SedeCedentePrestatoreValidator.cs
│   │   ├── SedeCessionarioCommittenteValidator.cs
│   │   └── TerzoIntermediarioOSoggettoEmittenteValidator.cs
│   ├── Samples/
│   │   ├── IT01234567890_FPA02.xml
│   │   ├── IT01234567890_FPR02.xml
│   │   ├── IT01234567890_FSM10.xml
│   │   ├── IT02182030391_31.Base64.CRLF.xml.p7m
│   │   ├── IT02182030391_31.Base64.xml.p7m
│   │   ├── IT02182030391_31.xml.p7m
│   │   ├── IT02182030391_31_tampered.Base64.xml.p7m
│   │   ├── IT02182030391_31_tampered.xml.p7m
│   │   ├── IT02182030391_32.windows-1252.xml
│   │   ├── IT02182030391_32.xml
│   │   └── fatturaPA_v1.2.1.xsl
│   ├── Semplificata/
│   │   ├── AllegatiValidator.cs
│   │   ├── AltriDatiIdentificativiValidator.cs
│   │   ├── CedentePrestatoreValidator.cs
│   │   ├── CessionarioCommittenteValidator.cs
│   │   ├── DatiBeniServiziValidator.cs
│   │   ├── DatiGeneraliDocumentoValidator.cs
│   │   ├── DatiIVAValidator.cs
│   │   ├── DatiTrasmissioneValidator.cs
│   │   ├── FatturaCreateInstance.cs
│   │   ├── FatturaElettronicaBodyValidator.cs
│   │   ├── FatturaElettronicaHeaderValidator.cs
│   │   ├── FatturaSemplificataValidator.cs
│   │   ├── IdentificativiFiscaliValidator.cs
│   │   └── XMLDeSerialize.cs
│   ├── TestHelpers.cs
│   └── XMLDeSerialize.cs
├── Validators/
│   ├── AllegatiValidator.cs
│   ├── AltriDatiGestionaliValidator.cs
│   ├── AnagraficaValidator.cs
│   ├── CausaleValidator.cs
│   ├── CedentePrestatoreValidator.cs
│   ├── CessionarioCommittenteValidator.cs
│   ├── CodiceArticoloValidator.cs
│   ├── Constants.cs
│   ├── ContattiTrasmittenteValidator.cs
│   ├── ContattiValidator.cs
│   ├── DatiAnagraficiCedentePrestatoreValidator.cs
│   ├── DatiAnagraficiCessionarioCommittenteValidator.cs
│   ├── DatiAnagraficiRappresentanteFiscaleValidator.cs
│   ├── DatiAnagraficiTerzoIntermediarioValidator.cs
│   ├── DatiAnagraficiVettoreValidator.cs
│   ├── DatiBeniServiziValidator.cs
│   ├── DatiBolloValidator.cs
│   ├── DatiCassaPrevidenzialeValidator.cs
│   ├── DatiContrattoValidator.cs
│   ├── DatiConvenzioneValidator.cs
│   ├── DatiDDTValidator.cs
│   ├── DatiDocumentoValidator.cs
│   ├── DatiFattureCollegateValidator.cs
│   ├── DatiGeneraliDocumentoValidator.cs
│   ├── DatiGeneraliValidator.cs
│   ├── DatiOrdineAcquistoValidator.cs
│   ├── DatiPagamentoValidator.cs
│   ├── DatiRicezioneValidator.cs
│   ├── DatiRiepilogoValidator.cs
│   ├── DatiRitenutaValidator.cs
│   ├── DatiSALValidator.cs
│   ├── DatiTrasmissioneValidator.cs
│   ├── DatiTrasportoValidator.cs
│   ├── DatiVeicoliValidator.cs
│   ├── DenominazioneNomeCognomeValidator.cs
│   ├── DettaglioLineeValidator.cs
│   ├── DettaglioPagamentoValidator.cs
│   ├── FatturaElettronicaBodyValidator.cs
│   ├── FatturaElettronicaHeaderValidator.cs
│   ├── FatturaOrdinariaValidator.cs
│   ├── FatturaPrincipaleValidator.cs
│   ├── IdFiscaleIVAValidator.cs
│   ├── IdTrasmittenteValidator.cs
│   ├── IndirizzoResaValidator.cs
│   ├── IsValidValidator.cs
│   ├── IscrizioneREAValidator.cs
│   ├── LatinValidators.cs
│   ├── LocalitàBaseValidator.cs
│   ├── RappresentanteFiscaleCessionarioCommittenteValidator.cs
│   ├── RappresentanteFiscaleValidator.cs
│   ├── RegimeFiscaleValidator.cs
│   ├── ScontoMaggiorazioneValidator.cs
│   ├── SedeCedentePrestatoreValidator.cs
│   ├── SedeCessionarioCommittenteValidator.cs
│   ├── Semplificata/
│   │   ├── AllegatiValidator.cs
│   │   ├── AltriDatiIdentificativiValidator.cs
│   │   ├── CedentePrestatoreValidator.cs
│   │   ├── CessionarioCommittenteValidator.cs
│   │   ├── DatiBeniServiziValidator.cs
│   │   ├── DatiFatturaRettificataValidator.cs
│   │   ├── DatiGeneraliDocumentoValidator.cs
│   │   ├── DatiGeneraliValidator.cs
│   │   ├── DatiIVAValidator.cs
│   │   ├── DatiTrasmissioneValidator.cs
│   │   ├── DenominazioneNomeCognomeValidator.cs
│   │   ├── FatturaElettronicaBodyValidator.cs
│   │   ├── FatturaElettronicaHeaderValidator.cs
│   │   ├── FatturaSemplificataValidator.cs
│   │   ├── IdentificativiFiscaliValidator.cs
│   │   ├── IscrizioneREAValidator.cs
│   │   ├── RappresentanteFiscaleCessionarioCommittenteValidator.cs
│   │   ├── SedeCedentePrestatoreValidator.cs
│   │   ├── SedeCessionarioCommittenteValidator.cs
│   │   └── StabileOrganizzazioneValidator.cs
│   ├── StabileOrganizzazioneValidator.cs
│   └── TerzoIntermediarioOSoggettoEmittenteValidator.cs
└── docs/
    ├── authors.md
    ├── changelog.md
    ├── extensions.md
    ├── faq.md
    ├── index.md
    ├── toc.md
    └── tutorial.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# Suppress: EC103
# EditorConfig is awesome:http://EditorConfig.org

# top-most EditorConfig file
root = true

# Don't use tabs for indentation.
[*]
indent_style = space
# (Please don't specify an indent_size here; that has too many unintended consequences.)

# Code files
[*.{cs,csx,vb,vbx}]
indent_size = 4

# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
indent_size = 2

# Xml config files
[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
indent_size = 2

# JSON files
[*.json]
indent_size = 2

# Dotnet code style settings:
[*.{cs,vb}]
# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
# Avoid "this." and "Me." if not necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion

# Use language keywords instead of framework type names for type references
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion

# Suggest more modern language features when available
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion

# CSharp code style settings:
[*.cs]
# Prefer "var" everywhere
csharp_style_var_for_built_in_types = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = true:suggestion

# Prefer method-like constructs to have a block body
csharp_style_expression_bodied_methods = false:none
csharp_style_expression_bodied_constructors = false:none
csharp_style_expression_bodied_operators = false:none

# Prefer property-like constructs to have an expression-body
csharp_style_expression_bodied_properties = true:none
csharp_style_expression_bodied_indexers = true:none
csharp_style_expression_bodied_accessors = true:none

# Suggest more modern language features when available
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion

# Newline settings
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true


================================================
FILE: .github/workflows/publish.yml
================================================
name: Build and Publish NuGet Package

on:
  push:
    tags:
      - 'v*'

env:
  DOTNET_VERSION: '10.0.x'

jobs:
  build-and-publish:
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v5

      - name: Setup .NET
        uses: actions/setup-dotnet@v5
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }}

      - name: Build
        run: dotnet build --configuration Release

      - name: Run tests
        run: dotnet test --no-restore --verbosity normal

      - name: Pack
        run: dotnet pack --configuration Release --no-build --output nupkgs
        
      - name: Push to NuGet
        run: dotnet nuget push ./nupkgs/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} --skip-duplicate

================================================
FILE: .github/workflows/test.yml
================================================
name: Test

on:
  push:
    branches:
      - '**'
    tags-ignore:
      - '**'
  pull_request:

jobs:
  build:

    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macOS-latest, windows-latest]

    steps:
    - uses: actions/checkout@v5
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v5
      with:
        dotnet-version: 10.0.x
    - name: Install dependencies
      run: dotnet restore
    - name: Build
      run: dotnet build --configuration Release --no-restore
    - name: Test
      run: dotnet test --no-restore --verbosity normal


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results

[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/

# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
!packages/*/build/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
*.ncrunch*
.*crunch*.local.xml

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.Publish.xml

# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/

# Windows Azure Build Output
csx
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
App_Data/*.mdf
App_Data/*.ldf


#LightSwitch generated files
GeneratedArtifacts/
_Pvt_Extensions/
ModelManifest.xml

# =========================
# Windows detritus
# =========================

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Mac desktop service store files
.DS_Store

# packages folder
packages
!packages/respositories.config

# ConsoleApp, used for verifying README code
ConsoleApp/

# Visual Studio per-machine and per-user settings
.vs/
.vscode/
.idea
.ionide/


================================================
FILE: AUTHORS.md
================================================
Autori
======

FatturaElettronica.NET è un progetto [open source][li] aperto alla collaborazione
di tutti. Lo sviluppo avviene su [GitHub][gh].

Autore e maintainer
-------------------

- [Nicola Iarocci][NI]

Collaboratori
-------------

- Claudio Lepri
- Diego Artusio
- Diego Martelli
- Emanuele Curati
- Emanuele Zavallone
- Fabio Calvigioni
- Federico Dipuma
- Gaetano Pizzol
- Luca Borghini
- Luca Marcato
- Marco Checchin
- Marco Saltarelli
- Marco Tessitore
- Massimo Linossi
- Michael Mairegger
- Paolo Manili
- Paolo Tatoli
- Puma
- Seba
- ZephirPFS47
- gminutillo
- ilserd
- username77
- 
[NI]: https://nicolaiarocci.com
[gh]: https://github.com/FatturaElettronica/FatturaElettronica.NET
[li]: http://github.com/FatturaElettronica/FatturaElettronica.NET/blob/master/LICENSE.txt


================================================
FILE: CHANGES.md
================================================
# Changelog

## In Development

## Stable

### v 4.0.7

Released on April 2, 2026

- fix: gestione file P7M in formato Base64 con line breaks CRLF tramite `CreateInstanceFromXml`.

### v 4.0.6

Released on March 20, 2026

- fix: supporto encoding `windows-1252` nelle fatture XML e P7M ([#442][442]).

[442]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/442

### v 4.0.5

Released on March 19, 2026

- fix: supporto P7M con ASN.1 UniversalString nei certificati ([#442][442]).
- new: test suite migrata a .NET 10.

### v 4.0.4

Released on September 17, 2025

- fix: la fix introdotta con v4.0.3 per la validazione di PECDestinatario non copriva tutti i casi ([#440][440])

[440]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/440

### v 4.0.3

Released on September 2, 2025

- fix: migliorata validazione PECDestinatario ([#439][439])

[439]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/439

### v 4.0.2

Released on September 1, 2025

- fix: verifica codice IBAN imprecisa ([#438][438])
- Aggiunto riferimento a [Invoicetronic](http://invoicetronic.com) come progetto "gemello" di FatturaElettronica.NET per la gestione completa della fatturazione elettronica in Italia.

[438]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/438

### v 4.0.1

Released on June 18, 2025

- fix: if the input stream Position is not 0, and it is seekable, it will be rewound to Position 0 [#436][436]

[436]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/436

### v 4.0.0

Released on June 16, 2025

- BREAKING: attempting to read Tampered documents will now invariably throw `SignatureException` [#434][434]
- CI: do not execute the 'test' action on tag pushes (the 'publish' action includes tests)
- chore: we're switching to the English language for CHANGELOG updates.

[434]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/434

### v 3.6.3

Released on May 6, 2025

- fix: traduzione Inglese allineata a quella ufficiale ([#432][432])
- fix: README typos.

[432]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/432

### v 3.6.2

Released on April 2, 2025

-fix: non includere GitHub workflows nel package, per davvero.

### v 3.6.1

Released on March 17, 2025

- fix: non includere GitHub workflows nel package.
- new: supporto per lingua Inglese ([#430][430]).

[430]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/430

### v 3.6.0

Released on February 24, 2025

- new: supporto per le specifiche tecniche v1.9, in vigore dal 1 Aprile 2025 ([#426][426])
- new: icona per il nuget package, finalmente.
- new: package creato e pubblicato via CI.
- fix: UnitaMisura è opzionale ([#427][427])
- fix: CI test workflow deve girare su .NET 8

[427]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/427
[426]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/426

### v 3.5.2

Released on January 7, 2025

- fix: IVA oltre 100% non deve passare la convalida ([#424][424])
- fix: CVE 2024 30105 ([#423][423])
- fix: rimuovere reference a BouncyCastle nella documentazione ([#422][422])

[424]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/424
[423]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/423
[422]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/422

### v 3.5.1

Released on September 30, 2024

- fix: multi-lingua, migliorata accessibilità dei Resource file generati ([#420][420])
 
[420]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/420
 
### v 3.5.0

Released on September 30, 2024

- new: supporto multi-lingua ([#417][417]).

[417]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/417

### v 3.4.16

Released on July 25, 2024

- Abbandonata dipendenza da Portable.BouncyCastle ([#414][414])
- Bump Microsoft.NET.Test.Sdk a v17.6.2
- Bump MSTest.TestAdapter a v3.4.3
- Bump MSTest.TestFramework a v3.4.3

[414]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/414

### v 3.4.15

Released on May 24, 2024

- Fix: Nazione, valore di default non viene de-serializzato da XML ([#413][413])

[413]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/413

### v 3.4.14

Released on March 14, 2024

- Fix: CVE-2023-29331. ([#411][411])
- Fix: `GiorniTerminiPagamento`, `NumeroColli`, `RiferimentoNumeroLinea`, `RiferimentoFase` devono accettare solo valori inclusi nei rispettivi range numerici. ([#410][410])

[411]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/411
[410]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/410

### v 3.4.13

Released on January 8, 2024

- Fix: Controllo 00473: recepite novità introdotte dalle [specifiche v1.8](https://www.agenziaentrate.gov.it/portale/web/guest/specifiche-tecniche-versione-1.8) ([#407][407])

[407]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/407

### v 3.4.12

Released on December 5, 2023

- Fix: Controllo validità campi Email e PEC ([#405][405])
- Fix: CI workflow file rilasciato col package nuget ([#404][404])

[405]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/405
[404]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/404

### v 3.4.11

Released on October 27, 2023

- Fix: DettaglioLinee.NumeroLinea deve consentire solo valori da 1 a 9999 ([#403][403])

[403]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/403

### v 3.4.10

Released on August 3, 2023

- Fix: Scarto Fattura se presenta uno sconto a 3+ cifre decimali ([#401][401])
- Fix: typos nella documentazione ([#399][399])

[401]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/401
[399]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/399

### v 3.4.9

Released on June 19, 2023

- Fix: [Microsoft Security Advisory CVE-2023-29331: .NET Denial of Service vulnerability](https://github.com/advisories/GHSA-555c-2p6r-68mm)
- Fix: [Improper Handling of Exceptional Conditions in Newtonsoft.Json](https://github.com/advisories/GHSA-5crp-9r3c-p9vr)
- Fix: [.NET Core Information Disclosure](https://github.com/advisories/GHSA-7jgj-8wvc-jh57)
- Fix: [Regular Expression Denial of Service in System.Text.RegularExpressions](https://github.com/advisories/GHSA-cmhx-cq75-c4mj)

### v 3.4.8

Released on May 2, 2023

- Fix: Se IdFiscaleIva di Cessionario e Cedente corrispondono, la fattura deve convalidare anche se in Cessionario è assente il codice fiscale. ([#396][396])
 
[396]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/396

### v 3.4.7

Released on April 5, 2023

- Fix: controlli 00423 e 00421: tolleranza di 1 centesimo deve essere 'larga' ([#394][394])
- Test suite ora gira su .NET 7
- CI: aggiornate GitHub actions per non usare più Node 12, ora obsoleto
 
[394]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/394
 
### v 3.4.6

Released on October 28, 2022

- Fix: controllo 00472; supporto per ditta individuale che si fattura un prodotto ([#388][388])

[388]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/388

### v 3.4.5

Released on October 14, 2022

- Fix: controllo 00471; recepite novità introdotte dalle [specifiche v1.8](https://www.fatturapa.gov.it/export/documenti/Elenco-Controlli-versione-1.8.pdf) ([#387][387])
- Fix: controllo 00476; supporto per Cessionario.IdFiscaleIva non indicato ([#386][386])
- Fix: controllo 00473; TD28 può essere usato solo se IdPaese del cedente è uguale a "SM" ([#385][385])

[387]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/387
[386]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/386
[385]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/385

### v3.4.4

Released on October 1, 2022

- Fix: errore nella validazione dei controlli 00401 e 00430 introdotto in v3.4.3 ([#384][384])

[384]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/384

### v3.4.3

Released on October 1, 2022

- Fix: aggiornati i controlli 00401 e 00430 affinché escludano i documenti TD16 ([#382][382])

[382]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/382

### v3.4.2

Released on September 27, 2022

- Fix: Aggiornato messaggio di errore per il controllo 00472 ([#381][381])

[381]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/381

### v 3.4.1

Released on September 26, 2022

- Fix: correzione segnalazioni Controlli 00471 e 00473 ([#378][378] e [#379][379])

[378]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/378
[379]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/379

### v 3.4

Released on September 9, 2022

Questa beta release recepisce le specifiche tecniche v1.7.1 che entreranno in vigore il 1 Ottobre 2022.
Per maggiori informazioni vedi il ticket ([#376][376]).

- New: introdotto nuovo controllo sulle fatture con codice errore 00476 ([#376][376]).
- New: TD28, acquisti da San Marino con IVA (fattura cartacea) ([#376][376]).
- Fix: modificato il criterio di controllo per l'errore 00472 ([#376][376]).
- Fix: modificato il criterio di controllo per l’errore 00471 per i tipi documento TD01, TD02,TD03,TD06,TD24,TD25 e TD28 (fattura ordinaria) e TD07 (fattura semplificata) ([#376][376]).
- Fix: aggiornata descrizione dei codici di errore 00401, 00430, 00473, 00475 ([#376][376]).
- Fix: aggiornata descrizione della Natura N7 ([#376][376]).

[376]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/376


### v 3.3.4

Released on August 4, 2022

- 'EL' (Grecia) aggiunto ai valori convalidati per IdPaese, in alternativa a 'GR' ([#374][374]).
- 'OO' (Campione d'Italia e Livigno) aggiunto ai valori convalidati per IdPaese ([#370][370]).

[370]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/370
[374]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/374

### v 3.3.3

Released on July 11, 2022

- Fix: CodiceFiscale con caratteri minuscoli non deve passare la convalida ([#373][373])
- CI ora gira su dotnet 6.
- Bump FluentValidation a v11.1.0
- Bump System.Security.Cryptography.Pkcs a v6.0.1
- Bump System.Text.Json a v6.0.5

[373]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/373

### v 3.3.2

Released on May 24, 2022

- Fix: `WriteHtml` crea un file temporaneo che non viene eliminato in seguito ([#371][371])

[371]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/371

### v 3.3.1

Released on April 6, 2022

- Fix: CodiceArticolo va convalidato come `LatinExtType` ([#368][368])

[368]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/368
 
### v 3.3.0

Released on February 25, 2022

- New: supporto per tag 'Processing Instructions' in de-serializzazione XML ([#367][367])
- Fix: link rotto alle specifiche tecniche ([#362][362])
- Migrazione a System.Text.Json ([#360][360])
- Rimosso badge dependabot dal README

[367]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/367
[360]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/360
[362]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/362

### v 3.2.0

Released on November 25, 2021

- Questa versione si allinea alle regole di convalida in vigore dal 1 Gennaio 2022.
- Allentata convalida dei campi Email ([#358][358])
- Introdotta convalida per nuovo errore 00475 ([#354][354])
- Aggiornata descrizione per i tipi documento TD25 e TD25 ([#354][354])
- Aggiornata descrizione per il codice natura N6.2 ([#354][354])
- Fix: `ToJson()` usa nome sbagliato per proprietà `RappresentanteFiscale` ([#359][359])
- Fix: ripristinato un setter rimosso nella v3.1.5 ([#346][346])
- Aggiornata dipendenza FluentValidation a 10.3.4 ([#337][337])
- Aggiornata dipendenza Newtonsoft.Json a 13.0.1
- Aggiornata dipendenza System.Security.Cryptography.Pkcs to 6.0.0
- Aggiornata dipendenza Portable.BouncyCastle to 1.9.0

[359]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/359
[358]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/358
[337]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/337
[354]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/354
[346]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/346

### v 3.1.5

Released on May 14, 2021

- Risolo problema deserializzazione Json per la classe `Allegati` ([#344][344])

[344]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/344

### v 3.1.4

Released on March 21, 2021—Codename 'Spring'

- Fix: il codice per Irlanda del Nord è `XI`, non `IX` ([#314][314])

### v 3.1.3

Released on March 19, 2021

- Aggiunto supporto per il valore `IX` (Irlanda del Nord) al campo `IdPaese` ([#314][314])
  
 [314]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/314

### v 3.1.2

Released on February 20, 2021

- Rimosso warning di obsolescenza in preparazione per FluentValidation 10 ([#321][321])
- Risolto problema di compatibilità con FluentValidation 9.5.1 ([#320][320])
- Aggiornata dipendenza FluentValidation a 9.5.1

[321]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/321
[320]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/320

### v 3.1.1

Released on January 25, 2021

- Convalida `TipoResa` allineata a specifiche Incoterms 2020 ([#313][313])
- Validazione `CAP`: deve contenere solo valori numerici ([#310][310])

[313]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/313
[310]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/310

### v 3.1.0

Released on December 30, 2020

- Questa versione si allinea alle regole di convalida in vigore dal 1 Gennaio 2021.
- Rimosso supporto per valori N2, N3, N6 per il campo `DatiRiepiloto.Natura` ([#307][307])
- Aggiunta convalida per errore 00313 ([#300][300])
- `Defaults.RootElement.ExtraAttributes` diventa una read-write property ([#303][303])
- `Defaults.RootElement.Prefix` diventa una read-write property ([#303][303])
- Migrazione CI dà Azure Pipelines a GitHub Actions (`ubuntu-latest`, `windows-latest`, `macos-latest`) ([#298][298])
- Impostato target framework della test suite a `net5.0` ([#295][295])
- Aggiornata dipendenza Portable.BouncyCastle a 1.8.9
- Aggiornata dipendenza Microsoft.NET.Test.Sdk a 16.8.3
- Aggiornata dipendenza FluentValidation a 9.3.0
- Aggiornata dipendenza System.Security.Cryptography.Pkcs a 5.0.1


[300]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/300
[303]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/303
[307]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/307
[298]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/298
[295]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/295

### v 3.0.5

Released on November 26, 2020

- Fix: `SistemaEmittente` non va serializzato come elemento XML ([#294][294])
- Fix: rimossa convalida `DatiRiepilogo.RiferimentoNormativo` è richiesto quando `Natura` è valorizzato ([#284][284])

[294]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/294

### v 3.0.4

Released on November 3, 2020

- Fix: Migliorata la validazione errore 00444 in `DatiRiepilogo` ([#287][287])
- Fix: Migliorata la validazione errore 00443 in `DatiRiepilogo` ([#281][281])
- Fix: Aggiornato attributo `SchemaLocation` ([#282][282], [#286][286])
- Fix: Supporto per `SistemaEmittente` in deserializzazione ([#278][278])
- Fix: `DatiRiepilogo.RiferimentoNormativo` è richiesto quando `Natura` è valorizzato ([#284][284])
- Aggiornata dipendenza FluentValidation a 9.2.2
- Aggiornata dipendenza Newtonsoft.Json a 12.0.3
- Aggiornata dipendenza BouncyCastle a 1.8.8
- Aggiornata dipendenza MSTest.TestFramework a 2.1.2
- Aggiornata dipendenza MSTest.TestAdapter a 2.1.2
- Aggiornata dipendenza Microsoft.NET.Test.Sdk a 16.7.1
- Abbandonata dipendenza obsoleta da `System.Xml.XmlSerializer`

[287]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/287
[281]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/281
[286]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/286
[282]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/282
[278]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/278
[284]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/284

### v 3.0.3

Released on August 25, 2020

- Fix: I tipi decimali dovrebbero essere convalidati per verificare che abbiano 2 o 11 decimali ([#275][275])
- Fix: `CodiceDestinatario` dovrebbe essere maiuscolo e non contenere altri caratteri al di fuori di A-Z 0-9 ([#272][272])

[275]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/275
[272]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/272

### v 3.0.2

Released on July 7, 2020

- Aggiornata dipendenza FluentValidation a 9.0 ([#271][271])

[271]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/271

### v 3.0.1

Released on July 6, 2020

- Fix: Validazione per errore 00444 dovrebbe tenere conto dei valori null ([#269][269])

[269]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/269

### v 3.0

Released on June 5, 2020

- Fix: CessionarioCommittente.IdFiscaleIva va convalidato solo quando valorizzato ([#263][263])

[263]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/263

### v 3.0-beta.6

Released on May 21, 2020

- Passaggio a C# 8.0 e (piccolo) refactoring.

### v 3.0-beta.5

Released on April 20, 2020

- Tabella `CausalePagamento` accetta valori Y, K,V2,Z durante il periodo di transizione ([#259][259]) 

[259]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/259

### v 3.0-beta.4

Released on April 15, 2020

- `CreateInstanceFromXml` accetta argomento `validateSignature` con default a `false` ([#258][258]) 

[258]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/258

### v 3.0-beta.3

Released on April 9, 2020

- `CreateInstanceFromXml` ora leggere anche file firmati digitalmente (.p7m) ([#256][256]) 
- Incorporato FatturaElettronica.Core ([#255][255])
- Incorporato FatturaElettronica.Extensions ([#255][255])
- Persa dipendenza da FatturaElettronica.Core ([#255][255])
- Persa dipendenza da FatturaElettronica.Extensions ([#255][255])
- Ricordarsi di rimuovere le dipendenze da FatturaElettronica.Extensions e 
  FatturaElettronica.Core.
- La API di FatturaElettronica.Core, ora incorporata in questo package, è stata
  spostata dal namespace `FatturaElettronica.Common` a `FatturaElettronica.Core`.
  
[256]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/256

### v 3.0-beta.2

Released on April 6, 2020

- Fix: NullReferenceException nel metodo Equals ([Core#42][Core#42])
- Aggiornata dipendenza FatturaElettronica.Core a 2.0.1.

[255]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/255
[Core#42]: https://github.com/FatturaElettronica/FatturaElettronica.Core/issues/42

### v 3.0-beta.1

Released on March 20, 2020

- Supporto per le specifiche tecniche v1.6 aggiornate il 28.2.2020 e utilizzabili a partire dal 4 maggio 2020. Si veda:

  - [Allegato A - Specifiche tecniche versione 1.6 (pdf)](https://www.agenziaentrate.gov.it/portale/documents/20143/2370834/Allegato+A+-+Specifiche+tecniche+vers+1.6_.pdf/a9917ec2-29a3-4f4a-a7d0-93af96fcaad5)
  
### v 2.1.1

Released on March 20, 2020

- Fix: Attributo `schemaLocation` causava problemi con alcuni client Java. ([#250][250])

[250]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/250

### v 2.1.0

Released on February 7, 2020

- New: `FatturaBase.CreateInstanceFromXml()` carica stream XML e restituisce una istanza di FatturaOrdinaria o FatturaSemplificata ([#240][240])
- Fix: Semplificata.DatiBeniServizi.DatiIVA: Aliquota o Importo obbligatori ([#238][238])
- Fix: Semplificata.CessionarioCommittente.IdFiscaleIva va convalidato se valorizzato ([#242][242])

[240]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/240
[238]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/238
[242]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/242

### v2.0.8

Released on December 2, 2019

- Fix: convalida fattura semplificata, importo massimo portato a 400 euro ([#233][233])

### v2.0.7

Released on November 28, 2019

- Fix: errore nell'ordine dei campi CedentePrestatore in fattura semplificata ([#220][220])
- Test suite aggiornata a NetCore 3.0
- Fix: refuso in TOC.md ([#221][221])
- Fix: Aggiunto il Kosovo alla tabella IdPaese ([#214][214])
- Tutorial: Aggiunto `IgnoreProcessingInstructions` a `XmlReaderSettings` per evitare crash quando
  nodi "processing instructions" (es: `xml-stylesheet`) sono presenti nel XML. ([#209][209])

[233]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/233
[220]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/220
[221]: https://github.com/FatturaElettronica/FatturaElettronica.NET/pull/221
[214]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/214
[209]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/209

### v2.0.6

Released on May 24, 2019

- Fix: FatturaSemplificata convalidata con TipoDocumento valido per Ordinaria ([#205][205])
- Fix: FatturaSemplificata convalidata con Natura valida per Ordinaria ([#205][205])
- Fix: Validazione AltriDatiIdentificativi in FatturaSemplificata ([#203][203])
- Fix: UnitaMisura vuota deve sollevare errore di validazione ([#204][204])
- Fix: DatiFatturaRettificata.DataFR dovrebbe essere nullabile ([#200][200])
- Fix: CausalePagamento: ZO e M2 sostituiti rispettivamente da Z e M ([#191][191c])

[205]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/205
[203]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/203
[204]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/204
[200]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/200
[191c]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/191#issuecomment-493911791

### v2.0.5

Released on April 23, 2019

- Fix: validatore CausalePagamento da aggiornare per unico 2019 ([#191][191])
- Test refactoring and cleanup.

[191]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/191

### v2.0.4

Released on April 16, 2019

- Fix: falso errore 00418 "Data antecedente a data fattura rettificata" ([#190][190])
- Aggiunto badge NuGet al README ([#188][188])
- `LatinBaseValidator` ora indica quali sono i caratteri non accettati ([#185][185])

[190]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/190
[188]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/188
[185]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/185

### v2.0.3

Released on April 8, 2019

- Fix: errore validazione DettaglioLinee.TotalPrice ([#181][181])
- Refactoring: classe Allegati spostata in FatturaElettronica.Common ([#179][179])
- Docs: aggiunto folder `docs` con documentazione progetto.

[181]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/181
[179]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/179

### v2.0.2

Released on March 19, 2019

- Fix: il root node della fattura semplificata ha il namespace sbagliato. Addresses #176.

### v2.0.1

Released on March 19, 2019

- Fix: il root node della fattura semplificata ha il nome sbagliato. Closes #176.

### v2.0

Released on March 13, 2019

- New: Supporto per fattura semplificata (Gaetano Pizzol). Closes #137.
- BREAKING: classe Fattura (Fattura.cs) rinominata FatturaOrdinaria (Ordinaria/FatturaOrdinaria.cs).
- BREAKING: gerarchia di classi per fattura ordinaria spostata nel namespace FatturaElettronica.Ordinaria.

- Fix: warning NU5125: The 'licenseUrl' element will be deprecated. Closes #166.
- Fix: Proprietà di tipo oggetto opzionali sollevano "Object reference not set to an instance of an object" quando nulle. Closes #165.
- Fix: DatiTrasporto.PesoLordo e DatiTrasporto.PesoNetto non possono superare il valore 9999.99m. Closes #157.

- Bump FatturaElettronica.Core a 2.0.
- Bump Microsoft.NET.Test.Sdk to 16.0.1.
- Bump FluentValidation to 8.1.3.
- Bump Newtonsoft.Json to 12.0.1.
- Bump MSTest.TestAdapter to 1.4.0
- Bump MSTest.TestFramework to 1.4.0

- Switch CI da AppVeyor ad Azure Pipelines.

### v1.1.5

Released on February 2, 2019

- Fix: Tabella CausalePagamento aggiornata al 2019. Closes #151.

### v1.1.4

Released on January 31, 2019

- Fix: ScontoMaggiorazione può accettare sia Importo che Percentuale. Closes #146.
- Fix: IdPaese.Irlanda è duplicato mentre Islanda è assente. Closes #144.
- README: aggiunto esempio di inserimento elemento Body. Addresses #141.

### v1.1.3

Released on January 23, 2019

- New: nuovo logo per il progetto FatturaElettronica, by Roberto "Kalamun" Pasini. Closes 101.
- Fix: Link obsoleto alle specifiche tecniche ufficiali. Closes #139.
- Fix: ScontoMaggiorazione deve accettare Importo o Percentuale a 0. Addresses #136.
- Fix: ScontoMaggiorazione non deve accettare Importo e Percentuale entrambi valorizzati. Addresses #136.

### v1.1.2

Released on January 21, 2019

- Fix: Validazione ScontoMaggiorazione dovrebbe accettare Importo o Percentuale a 0. Closes #136.

### v1.1.1

Released on January 17, 2019

- Fix: Tabella CausalePagamento completata coi nomi di ogni pagamento (Michael Mairegger). Pull #127.
- Fix: Convalida Provincia non conforme ai controlli lato AgEntrate. Closes #129.
- Fix: CessionarioCommittente.RappresentanteFiscale, errore "sequenza tag errata". Closes #133.
- Fix: Supporto per 8 decimali nel PrezzoUnitario (Claudio Lepri). Pull #130; Closes #125.
- Bump FatturaElettronica.Core a 1.1.1.

### v1.1

Released on January 6, 2019

- New: NetStandard 2.0 aggiunto ai target framework (Federico Dipuma). Closes #119.
- New: costruttore classe Fattura ora è pubblico. Closes #99.
- New: performance migliorata (Federico Dipuma). See #120.
- Fix: Quantità non può assumere valore negativo. Closes #115.
- Fix: Small typos. Closes #116.

### v1.0.4

Released on January 2, 2019

- Fix: Aggiunta "Sud Sardegna" alla lista provincie (Massimo Linossi). Pull #111.

### v1.0.3

Released on December 30, 2018

- Fix: UnitaMisura è opzionale. Addresses #102.

### v1.0.2

Released on December 20, 2018.

- Fix: Titolo e CodEORI ignorano ordinamento. Closes #103.
- Fix: controllo UnitaMisura consente campo vuoto. Closes #102.

### v1.0.1

Released on November 9, 2018.

- Bump: FatturaElettronica.Core to 1.0.

### v1.0

Released on November 9, 2018.

- BREAKING: proprietà Fattura.Header rinominata in FatturaElettronicaHeader. Closes #83.
- BREAKING: proprietà Fattura.Body rinominata in FatturaElettronicaBody. Closes #83.
- BREAKING: namespace FatturaElettronica.Impostazioni rinominato FatturaElettronica.Defaults.

- Fix: Aggiornati codici INCOTERMS (Marco Tessitore). Pull #89; Pull #91.
- Fix: Rimosso controllo 00426 su campo PECDestinatario (Gaetano Pizzol). Pull #88.
- Fix: Anagrafica.CognomeNome non deve essere serializzato in JSON. Closes #86.
- Fix: DettaglioPagamento.IBAN deve essere formalmente corretto. Closes #84.
- Fix: Campo RiferimentoNumero dovrebbe essere opzionale (Gaetano Pizzol). Pull #82.
- Fix: Aggiunto setter mancante a DettaglioLinee.AltriDatiGestionali. Addresses #81.
- Fix: Header e Body vanno JSON-serializzati come FatturaElettronicaHeader e FatturaElettronicaBody. Closes #83.

- Bump: FatturaElettronica.Core to 0.5.
- Bump: Newtonsoft.Json to 11.0.2.
- Bump: MSTest.TestFramework to 1.3.2.
- Bump: MSTest.TestAdapter to 1.3.2.
- Bump: Microsoft.NET.Test.Sdk to 15.9.0.

### v0.9

Released on October 26, 2018.

- New: FromJson() de-serializza stream JSON.
- Fix: PECDestinatario può essere vuoto quando CodiceDestinatario è 0000000. Closes #75.
- Fix: Le proprietà di tipo Class non sono scrivibili. Closes #76.
- Fix: ToJson() serializza proprietà che non dovrebbero comparire nel JON.
- I test ora girano come app NetCore 2.1. Addresses FatturaElettronica/FatturaElettronica.Core#4.

### v0.8.5

Released on October 16, 2018.

- New: Validazione errore 00426 per campo 1.1.6 PECDestinatario. Closes #74.
- Fix: errore descrizione in RegimeFiscale "RF17". Closes #72.
- Fix: "Nullable object must have a value" in validazione di blocco ScontoMaggiorazione con Importo = 0. Closes #71.

### v0.8.4

Released on October 4, 2018.

- Upgrade: FluentValidation to v8.0.100.

### v0.8.3

Released on October 2, 2018.

- Fix: DettaglioLineeValidator: 00423 non supporta tolleranza di 1 centesimo. Closes #66.

### v0.8.2

Released on October 1, 2018.

- FatturaElettronica.Core dependency bumped to v0.2.
- Cleanup and refactoring: use auto-properties; remove unnecessary usings.

### v0.8.1

Rilasciata il 4.7.2018

- Fix: errore lunghezza PECDestinatario in v0.8. Closes #58.

### v0.8

Rilasciata il 3.7.2018

- Recepite specifiche tecniche Allegato A del 22.6.2018. Closes #52.
- New: rimossi controlli su campo PECDestinatario. Addresses #52.
- New: supporto per TipoDocumento TD020 autofattura. Addresses #52
- Passata la test suite da NET461 a NETCore. Closes #57.

### v0.7

Rilasciata il 4.10.2017

- Spostata serializzazione su package indipendente FatturaElettronica.Core.
- Abbandonato il profilo PCL in favore di NetStandard 1.1.

### v0.6.3

Rilasciata il 17.7.2017

- Fix: RappresentanteFiscale viene erroneamente serializzato come 'Rappresentante' causando errore convalida 200
  da parte del sistema PA. Closes #49.
- README: Aggiunta opzione IgnoreComments a XmlReader per evitare crash nel caso di commenti nel XML. Closes #45.

### v0.6.2

Rilasciata il 23.5.2017.

- Fix: Falso errore di convalida 00423 quando PrezzoTotale è valorizzato con piu di due decimali. Closes #45.

### v0.6.1

Rilasciata il 5.5.2017.

- Fix: Falso errore di convalida 00415 quando DatiCassaPrevidenziale è valorizzato ma non ha Ritenuta="SI". Closes #44.

### v0.6.0

Rilasciata il 27.4.2017.

- Assembly non più strong-named. Closes #41.
- README: aggiunti esempi di introspezione e modifica degli elementi FatturaElettronicaBody. Closes #38.

### v0.5.1

Rilasciata il 26.4.2017.

- Fix: Errore 00421 non tiene conto della tolleranza garantita di 0.01 centesimi. Closes #43.

### v0.5.0

Rilasciata il 30.3.2017.

Questa versione recepisce le modifiche introdotte con la v1.2.1 delle specifiche tecniche PA.

- Regime Fiscale RF03 è abrogato. Viene restituito errore 00459 se utilizzato.
- Natura N5: descrizione aggiornata a "regime del margine / IVA non esposta in fattura".
- Le proprietà e Nome della classe astratta Tabella non sono più protette in scrittura.

### v0.4.3

Rilasciata il 23.3.2017.

- Fix: Validazione conformità gruppi IsBasicLatin e IsLatin-1Supplement. Closes #29.
- Fix: Non includere il folder Artwork nel package NuGet. Closes #37.

### v0.4.2

Rilasciata il 17.3.2017.

- Fix: Convalida DatiCassaPrevidenziale.Natura va fatta solo quando Aliquota uguale a
  zero. Closes #36.

### v0.4.1

Rilasciata il 14.3.2017.

- Fix: Nomi delle nazioni ISO-3166 Alpha 2 sono in Inglese. Closes #35.
- Fix: Elementi FatturaElettronicaBody sono serializzati come 'Body'. Closes #34.
- Aggiunto file .editconfig

### v0.4.0

Rilasciata il 9.3.2017.

- Rinominata classe FatturaElettronica in Fattura.
- Rinominata classe FatturaElettronicaHeader in Header.
- Rinominata classe FatturaElettronicaBody in Body.
- Rinominata proprietà Fattura.FatturaElettronicaHeader in Fattura.Header.
- Rinominata proprietà Fattura.FatturaElettronicaBody in Fattura.Body.
- Alcune classi spostate da FatturaElettronica.Common a FatturaElettronica.Tabelle
- Classe BusinessObjects.BusinessObjectBase rinominata FatturaElettronica.BaseClass.
- Classe BusinessObjects.BusinessObject rinominata FatturaElettronica.BaseClassSerializable.
- Classe FatturaElettronica.Common.BusinessObject eliminata.
- Persa dipendenza dal package BusinessObjects.
- Acquisita dipendenza dal package FluentValidation.
- Aggiunto namespace FatturaElettronica.Validators.
- Aggiunta serie di classi dedicate alla convalida (FatturaValidator; HeaderValidator; ecc.)
- Rimosso metodo IsValid(). Al suo posto usare proprietà ValidationResult.IsValid.
- Rimossa proprietà Error. Al suo posto usare ValidationFailure.Errors.
- Nuovo extension method Fattura.Validate(). Equivalente a FatturaValidator.Validate() (shortcut).
- Consultare il README per esempi di codice aggiornati.

### v0.3.7

Rilasciata il 7.3.2017.

- Fix: Errore in convalida del campo Riferimento Testo: sono consentiti fino
  a 60 caratteri. Closes #33.

### v0.3.6

Rilasciata il 10.2.2017.

- Aggiunto supporto per .NET Core.
- Abbandonato supporto per .NET Framework 4.0 e Silverlight.
- Fix: Falso negativo (errore 423) in convalida DettaglioLinee. Closes #31.
- Fix: Correzione messaggio di errore per Divisa non corretta (Fabio Calvigioni).

### v0.3.5

Rilasciata il 2.2.2017.

- Fix: Crash con ScontoMaggiorazione.Importo non impostato (null). Closes #28.

### v0.3.4

Rilasciata il 1.2.2017.

- Fix: Crash quando ScontoMaggiorazione.Importo ha valore negativo. Closes #27.

### v0.3.3

Rilasciata il 18.1.2017.

- Fix: Consenti serializzazione di valori numerici fino a 5 decimali (minimo 2).
- Fix: Arrotonda valori numerici fino a 5 decimali (minimo 2).

### v0.3.2

Rilasciata il 17.1.2017.

- Fix: Convalida errore 00415. Se almeno un DatiCassaPrevidenziale ha Ritenuta = "SI", allora DatiRitenuta deve essere valorizzato. Closes #22.
- Fix: Convalida errore 00411. Se almeno un DettaglioLinee ha Ritenuta = "SI", allora DatiRitenuta deve essere valorizzato. Closes #22.
- Fix: Convalida errore 00423 nel caso di campo Quantità a null. Closes #20.

### v0.3.1

Rilasciata il 16.1.2017.

- New: aggiunte proprietà Sigla e Sigle[] alla classe FormatoTrasmissione
- New: aggiunta proprietà Descrizione alla classe FormatoTrasmissione

### v0.3

Rilasciata il 13.1.2017

#### BREAKING CHANGES

Questa release introduce una serie di cambianti importanti che rompono la
compatibilità con l'API precedente.

- Il package NuGet cambia nome. Ora si chiama FatturaElettronica (era FatturaElettronicaPA).
- Il namespace diventa FatturaElettronica (era FatturaElettronicaPA)
- Il package FatturaElettronicaPA verrà marcato come obsoleto su NuGet.
- Il costruttore della classe FatturaElettronica è ora protetto.
- Usare il factory method CreateInstance() per ottenere una istanza della classe.
- CreateInstance() consente di scegliere se ottenere una fattura tra soggetti privati o per la Pubblica Amministrazione.
- La fattura restituita da CreateInstance() ha già il campo FormatoTrasmissione correttamente impostato a FPA12 o FPR12.
- Nel caso di fattura tra privati, per default la fattura ha il CodiceDestinatario impostato a "0000000" (sarà cura del utente impostare in seguito il nuovo campo PECDestinatario o aggiornare il CodiceDestinatario col codice canale del destinatario)

#### Altre modifiche

- New: attributo xmlns:ds nel root elemento del documento xml.
- New: attributo xmlns:xsi nel root elemento del documento xml.
- New: attributo xsi:schemaLocation nel root elemento del documento xml.
- New: campo 1.4.4 RappresentanteFiscale.
- New: campo 1.4.3 StabileOrganizzazione.
- New: campo 1.1.6 PECDestinatario e relative convalide.
- Fix: modificato campo 2.4.2.13 IBAN per recepire da 15 a 34 caratteri.
- Fix: aggiunto valore N7 ai campi 2.2.2.2 e 2.1.1.7.7 Natura.
- Fix: aggiunto valore MP22 al campo 2.4.2.2 ModalitaPagamento.
- Fix: campo 1.1.4 FormatoTrasmissione supporta valori FPA12 (Pubblica Amministrazione) e FPR12 (Privati)
- Fix: campo 1.1.4 CodiceDestinatario, adeguate le convalide per tenere conto del FormatoTrasmissione impostato.
- Aggiunta la test suite. Mancano test delle convalide implementate prima della v0.3.

### v0.2.6

Rilasciata il 13.1.2017

- Questa release serve solo a segnalare su NuGet che FatturaElettronicaPA è obsoleto.
- Scaricare e installare il package FatturaElettronica v0.3 e successivi da ora in poi.

### v0.2.5

Rilasciata il 17.6.2016

- Fix: PrezzoTotale ora prevede tolleranza "accettabile" su seconda cifra
  decimale. Closes #19.

### v0.2.4

Rilasciata il 25.5.2016

- Fix: Validazione 00423: calcolo in base a percentuale sconto. Closes #18.

### v0.2.3

Rilasciata il 24.5.2016

- Fix: Serializzare valori decimali con piu' di 2 decimali.

### v0.2.2

Rilasciata il 24.5.2016

- New: Errore 00400 aggiunto alla convalida.
- New: Errore 00401 aggiunto alla convalida.
- Fix: Errore 00424 non consente aliquota IVA impostata al valore 1.

### v0.2.1

Rilasciata il 23.5.2016

- New: Errore 00422, aggiunta tolleranza di 1 Euro come da specifiche PA
  aggiornate.

### v0.2

Rilasciata il 20.5.2016

- New: Errore 00418 aggiunto alla convalida. Addresses #16.
- New: Errore 00419 aggiunto alla convalida. Addresses #16.
- New: Errore 00420 aggiunto alla convalida. Addresses #16.
- New: Errore 00421 aggiunto alla convalida. Addresses #16.
- New: Errore 00422 aggiunto alla convalida. Addresses #16.
- New: Errore 00423 aggiunto alla convalida. Closes #17. Addresses #16.
- New: Errore 00424 aggiunto alla convalida. Addresses #16.
- New: Errore 00425 aggiunto alla convalida. Addresses #16.

### v0.1.8

Rilasciata il 24.8.2015

- Fix: 2.1.8.3 RiferimentoNumeroLinea in deserializzazione manda applicazione in loop. Closes #14.

### v0.1.7

Rilasciata il 7.8.2015

- Fix: 2.1.9.4 NumeroColli in deserializzazione si ha errore conversione Nullable. Closes #12.
- Fix: 2.4.2.4 GiorniTerminiPagamento in deserializzazione si ha errore conversione Nullable. Closes #12.
- Upgrade to BusinessObjects v0.1.4

### v0.1.6

Rilasciata il 31.7.2015

- Upgrade to BusinessObjects v0.1.3
- New: Convalida per 2.1.1.11 Causale.
- Fix: 2.1.2.1 RiferimentoNumeroLinea non gestito come lista 0..N, ma come valore singolo.
- Fix: 2.1.2.1 RiferimentoNumeroLinea in deserializzazione si ha errore conversione Nullable. Closes #9.
- Fix: 2.1.1.11 Causale. Se sono presenti 2+ righe allora il codice va in loop. Closes #8.
- Fix: Crash in deserializzazione di tag XML vuoti (es: `<ContattiTrasmittente />`). Closes #7.
- Fix: 2.1.9.13 DataOraConsegna serializza a MinValue quando non valorizzato. Closes #10.
- Fix: 2.2.1.16.4 RiferimentoData serializza a MinValue quando non valorizzato.
- Fix: 2.4.2.5 DataScadenzaPagamento serializza a MinValue quando non valorizzato. Closes #10.
- Fix: 2.4.2.18 DataLimitePagamentoAnticipato è di tipo errato (decimal? invece di DateTime?).

### v0.1.5

Rilasciata il 15.7.2015

- Fix: 2.2.1.10.1 ScontoMaggiorazione.Tipo: convalida valori corretti SC e MG.
- Fix: 2.4.2.2 ModalitaPagamento: non veniva convalidato valore MP05.

### v0.1.4

Rilasciata il 14.7.2015

- Upgrade to BusinessObject v0.1.2
- Fix: Convalida di FatturaElettronicaBody. Chiude #4.

### v0.1.3

Rilasciata il 7.4.2015

- Upgrade to BusinessObject v0.1.1
- Upgrade to Json.NET v6.0.8
- Fix: ReadXML crash su valori Decimal?

### v0.1.2

Rilasciata il 16.2.2015

- Supporto per valori L1, M1, O1, V1 per DatiRitenuta.CausalePagamento.
- Risolto problema col validatore di DatiRitenuta.CausalePagamento.
- Supporto per valore RF19 per campo RegimeFiscale.

### v0.1.1

Rilasciata il 16.2.2015

- Supporto per Split Payment.

### v0.1

Rilasciata il 9.2.2015

- Release iniziale.


================================================
FILE: CNAME
================================================
fatturaelettronicaopensource.org

================================================
FILE: Common/Allegati.cs
================================================
using System.Xml;

namespace FatturaElettronica.Common
{
    /// <summary>
    /// Dati relativi ad eventuale allegato.
    /// </summary>
    public class Allegati : Core.BaseClassSerializable
    {
        public Allegati() { }
        public Allegati(XmlReader r) : base(r) { }

        /// <summary>
        /// Nome dell'allegato.
        /// </summary>
        [Core.DataProperty]
        public string NomeAttachment { get; set; }

        /// <summary>
        /// Algoritmo usato per comprimere l'attachment (ad es. ZIP, RAR, ...)
        /// </summary>
        [Core.DataProperty]
        public string AlgoritmoCompressione { get; set; }

        /// <summary>
        /// Formato dell'attachment (ad es: TXT, XML, DOC, PDF, ...)
        /// </summary>
        [Core.DataProperty]
        public string FormatoAttachment { get; set; }

        /// <summary>
        /// Descrizione del documento.
        /// </summary>
        [Core.DataProperty]
        public string DescrizioneAttachment { get; set; }

        /// <summary>
        /// Contiene il documento allegato alla fattura; il contenuto è demandato agli accordi tra PA e fornitore.
        /// </summary>
        [Core.DataProperty]
        public byte[] Attachment { get; set; }
    }
}


================================================
FILE: Common/Anagrafica.cs
================================================
using System.Xml;

namespace FatturaElettronica.Common
{

    /// <summary>
    /// Represents a Anagrafica object
    /// </summary>
    public class Anagrafica : DenominazioneNomeCognome
    {

        public Anagrafica() { }
        public Anagrafica(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Gets or sets the Titolo.
        /// </summary>
        [Core.DataProperty(order: 3)]
        public string Titolo { get; set; }

        /// <summary>
        /// Gets or sets the CodEORI.
        /// </summary>
        [Core.DataProperty(order: 4)]
        // ReSharper disable once InconsistentNaming
        public string CodEORI { get; set; }
    }
}


================================================
FILE: Common/DatiAnagrafici.cs
================================================
using System.Xml;

namespace FatturaElettronica.Common
{
    /// <summary>
    /// Represents a DatiAnagrafici object
    /// </summary>
    public class DatiAnagrafici : Core.BaseClassSerializable
    {
        /// <summary>
        /// Dati anagrafici, professionali e fiscali
        /// </summary>
        public DatiAnagrafici()
        {
            IdFiscaleIVA = new();
            Anagrafica = new();
        }
        public DatiAnagrafici(XmlReader r) : base(r) { }

        /// <summary>
        /// Numero di identificazione fiscale ai fini IVA; i primi due caratteri rappresentano il paese ed i restanti il codice
        /// vero e proprio che, per i residenti in Italia, corrisponde al numero di partita IVA.
        /// </summary>
        [Core.DataProperty(order: 0)]
        public IdFiscaleIVA IdFiscaleIVA { get; set; }

        /// <summary>
        /// Numero di Codice Fiscale.
        /// </summary>
        [Core.DataProperty(order: 1)]
        public string CodiceFiscale { get; set; }

        /// <summary>
        /// Dati anagrafici identificativi del soggetto. 
        /// </summary>
        [Core.DataProperty(order: 2)]
        public Anagrafica Anagrafica { get; set; }

    }
}


================================================
FILE: Common/DatiDocumento.cs
================================================
using System;
using System.Collections.Generic;
using System.Xml;

namespace FatturaElettronica.Common
{
    /// <summary>
    /// Informazioni relative ad un documento a cui si fa riferimento.
    /// </summary>
    public abstract class DatiDocumento : Core.BaseClassSerializable
    {
        protected DatiDocumento()
        {
            RiferimentoNumeroLinea = new();
        }
        protected DatiDocumento(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Linee di dettaglio della fattura a cui si fa riferimento.
        /// </summary>
        /// <remarks>Se il riferimento è all'intera fattura non viene valorizzato.</remarks>
        [Core.DataProperty]
        public List<int> RiferimentoNumeroLinea { get; set; }

        /// <summary>
        /// Numero del documento a cui si fa riferimento.
        /// </summary>
        [Core.DataProperty]
        public string IdDocumento { get; set; }

        /// <summary>
        /// Data del documento a cui si fa riferimento.
        /// </summary>
        [Core.DataProperty]
        public DateTime? Data { get; set; }

        /// <summary>
        /// Identificativo della singola voce all'interno del documento 
        /// (ad esempio, nel caso di ordine di acquisto, è il numero della linea dell'ordine di acquisto, oppure, nel caso di 
        /// contratto, è il numero della linea del contratto, etc.)
        /// </summary>
        [Core.DataProperty]
        public string NumItem { get; set; }

        /// <summary>
        /// Codice della commessa o della convenzione.
        /// </summary>
        [Core.DataProperty]
        public string CodiceCommessaConvenzione { get; set; }

        /// <summary>
        /// Codice gestito dal CIPE che caratterizza ogni progetto di investimento pubblico (Codice Unitario Progetto).
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public string CodiceCUP { get; set; }

        /// <summary>
        /// Codice Identificativo della Gara.
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public string CodiceCIG { get; set; }
    }
}


================================================
FILE: Common/DenominazioneNomeCognome.cs
================================================
using System.Text.Json.Serialization;
using System.Xml;

namespace FatturaElettronica.Common
{

    /// <summary>
    /// Represents a Anagrafica object
    /// </summary>
    public class DenominazioneNomeCognome : Core.BaseClassSerializable
    {

        public DenominazioneNomeCognome() { }
        public DenominazioneNomeCognome(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Gets or sets the Denominazione.
        /// </summary>
        [Core.DataProperty(order: 0)]
        public string Denominazione { get; set; }

        /// <summary>
        /// Gets or sets the Nome.
        /// </summary>
        [Core.DataProperty(order: 1)]
        public string Nome { get; set; }

        /// <summary>
        /// Gets or sets the Cognome.
        /// </summary>
        [Core.DataProperty(order: 2)]
        public string Cognome { get; set; }

        /// <summary>
        /// Returns Cognome and Nome as a single value.
        /// </summary>
        /// <remarks>This is not a OrderedDataProperty so it will not be serialized to XML.</remarks>
        [JsonIgnore]
        public string CognomeNome
        {
            get
            {
                var r = ((Cognome ?? string.Empty) + " " + (Nome ?? string.Empty)).Trim();
                return string.IsNullOrEmpty(r) ? null : r;
            }
        }
    }
}


================================================
FILE: Common/IdFiscaleIva.cs
================================================
using System.Xml;

namespace FatturaElettronica.Common
{
    /// <summary>
    /// Numero di identificazione fiscale ai fini IVA; i primi due caratteri rappresentano il paese ed i restanti il codice
    /// vero e proprio che, per i residenti in Italia, corrisponde al numero di partita IVA.
    /// </summary>
    public class IdFiscaleIVA : Core.BaseClassSerializable
    {
        public IdFiscaleIVA() { }
        public IdFiscaleIVA(XmlReader r) : base(r) { }

        /// <summary>
        /// Codice della nazione espresso secondo lo standard ISO 3166-1 alpha-2 code.
        /// </summary>
        [Core.DataProperty]
        public string IdPaese { get; set; }

        /// <summary>
        /// Codice identificativo fiscale.
        /// </summary>
        [Core.DataProperty]
        public string IdCodice { get; set; }

        public override string ToString()
        {
            return IdPaese + IdCodice;
        }
    }
}


================================================
FILE: Common/Località.cs
================================================
using System.ComponentModel;
using System.Xml;

namespace FatturaElettronica.Common
{

    /// <summary>
    /// Represents a Anagrafica object
    /// </summary>
    public abstract class Località : Core.BaseClassSerializable
    {
        /// <summary>
        /// Constructor.
        /// </summary>
        protected Località() { }
        protected Località(XmlReader r) : base(r) { } 

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Indirizzo (nome della via, piazza etc.)
        /// </summary>
        [Core.DataProperty]
        public string Indirizzo { get; set; }

        /// <summary>
        /// Numero civico riferito all'indirizzo (non indicare se già presente nel campo indirizzo).
        /// </summary>
        [Core.DataProperty]
        public string NumeroCivico { get; set; }

        /// <summary>
        /// Codice Avviamento Postale.
        /// </summary>
        [Core.DataProperty]
        public string CAP { get; set; }

        /// <summary>
        /// Comune.
        /// </summary>
        [Core.DataProperty]
        public string Comune { get; set; }

        /// <summary>
        /// Sigla della provincia di appartenenza del comune.
        /// </summary>
        [Core.DataProperty]
        public string Provincia { get; set; }

        /// <summary>
        /// Codice della nazione espresso secondo lo standard ISO 3166-1 alpha-2 code.
        /// </summary>
        [Core.DataProperty]
        [DefaultValue("IT")]
        public string Nazione { get; set; }
    }
}


================================================
FILE: Common/RappresentanteFiscale.cs
================================================
using System.Xml;

namespace FatturaElettronica.Common
{
    /// <summary>
    /// Dati relativi al rappresentante fiscale del cedente / prestatore.
    /// </summary>
    public abstract class RappresentanteFiscale : Core.BaseClassSerializable
    {

        /// <summary>
        /// Dati relativi al rappresentante fiscale del cedente / prestatore.
        /// </summary>
        public RappresentanteFiscale()
        {
            DatiAnagrafici = new();
        }
        public RappresentanteFiscale(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Dati anagrafici del rappresentante fiscale del cedente / prestatore.
        /// </summary>
        [Core.DataProperty]
        public DatiAnagrafici DatiAnagrafici { get; set; }
    }
}


================================================
FILE: Common/ScontoMaggiorazione.cs
================================================
namespace FatturaElettronica.Common
{
    /// <summary>
    /// Eventuale sconto o maggiorazione applicati sul totale documento.
    /// </summary>
    public class ScontoMaggiorazione : Core.BaseClassSerializable
    {
        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.
        
        /// <summary>
        /// Indica se trattasi di sconto o di maggiorazione.
        /// </summary>
        [Core.DataProperty]
        public string Tipo { get; set; }

        /// <summary>
        /// Percentuale di sconto o di maggiorazione.
        /// </summary>
        [Core.DataProperty]
        public decimal? Percentuale { get; set; }

        /// <summary>
        /// Importo dello sconto o della maggiorazione.
        /// </summary>
        [Core.DataProperty]
        public decimal? Importo { get; set; }
    }
}


================================================
FILE: Common/StabileOrganizzazione.cs
================================================
using System.Xml;

namespace FatturaElettronica.Common
{
    public class StabileOrganizzazione : Località
    {
        public StabileOrganizzazione() { } 
        public StabileOrganizzazione(XmlReader r) : base(r) { } 
    }
}


================================================
FILE: Core/BaseClass.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;

namespace FatturaElettronica.Core
{
    /// <summary>
    /// The class all domain objects must inherit from. 
    ///
    /// Currently supports:
    /// - IEquatable so you can easily compare complex BusinessObjects togheter.
    /// - Binding (INotififyPropertyChanged and IDataErrorInfo).
    /// 
    /// TODO:
    /// - BeginEdit()/EndEdit() combination, and rollbacks for cancels (IEditableObject).
    /// </summary>
    public abstract class BaseClass : INotifyPropertyChanged, IEquatable<BaseClass>
    {
        /// <summary>
        /// Occurs when any properties are changed on this object.
        /// </summary>
        public event PropertyChangedEventHandler PropertyChanged;

        protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
        {
            if (Equals(storage, value))
            {
                return false;
            }

            storage = value;
            OnPropertyChanged(propertyName);
            return true;
        }

        private void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new(propertyName));
        }

        /// <summary>
        /// Cleans a string by ensuring it isn't null and trimming it.
        /// </summary>
        /// <param name="s">The string to clean.</param>
        protected string CleanString(string s)
        {
            return (s ?? string.Empty).Trim();
        }

        /// <summary>
        /// Checks wether a BusinessObject instance is empty.
        /// </summary>
        /// <returns>Returns true if the object is empty; false otherwise.</returns>
        public virtual bool IsEmpty()
        {
            // TODO support more data types. Also refactor: can be improved.

            var props = GetAllDataProperties().ToList();
            var i = 0;
            foreach (var prop in props)
            {
                // Default value for Lists is Count
                if (prop.PropertyType.IsGenericList() &&
                    ((IList) prop.GetValue(this, null)).Count == 0)
                {
                    i++;
                    continue;
                }

                var v = prop.GetValue(this, null);
                switch (v)
                {
                    case null:
                        i++;
                        continue;
                    case string s when string.IsNullOrEmpty(s):
                        i++;
                        continue;
                }

                if (IsNumericType(prop.PropertyType) && v.Equals(0))
                {
                    i++;
                    continue;
                }

                switch (v)
                {
                    case DateTime _ when v.Equals(DateTime.MinValue):
                        i++;
                        continue;
                    case BaseClass @class when @class.IsEmpty():
                        i++;
                        break;
                }
            }

            return i == props.Count;
        }

        /// <summary>
        /// Provides a list of actual data properties for the current BusinessObject instance, sorted by writing order.
        /// </summary>
        /// <remarks>Only properties flagged with the OrderedDataProperty attribute will be returned.</remarks>
        /// <returns>A enumerable list of PropertyInfo instances.</returns>
        protected IEnumerable<PropertyInfo> GetAllDataProperties()
        {
            return GetType()
                .GetRuntimeProperties()
                .Where(pi => pi.GetCustomAttributes<DataProperty>(true).Any())
                .OrderBy(pi => pi.GetCustomAttribute<DataProperty>(true).Order);
        }

        protected PropertyInfo GetKnownNonDataProperty(string name)
        {
            var knownNonDataProperties = new[] {"SistemaEmittente"};

            return knownNonDataProperties.Contains(name) ? GetType().GetRuntimeProperty(name) : null;
        }


        public bool Equals(BaseClass other)
        {
            if (other == null)
                return false;

            foreach (var prop in GetAllDataProperties())
            {
                var v1 = prop.GetValue(this, null);
                var v2 = prop.GetValue(other, null);
                if (prop.PropertyType.IsGenericList()
                    && prop.PropertyType == typeof(List<string>))
                {
                    // We only support List<string>.
                    if (!((List<string>) v1).SequenceEqual((List<string>) v2))
                    {
                        return false;
                    }
                }
                else
                {
                    // Other types, and BusinessObject type.
                    if (v1 != null && v2 != null && v1 != v2 && !v1.Equals(v2))
                    {
                        return false;
                    }
                }
            }

            return true;
        }

        public override bool Equals(object obj)
        {
            if (obj == null)
                return false;

            var o = obj as BaseClass;
            return o != null && GetType().Name == o.GetType().Name && Equals(o);
        }

        public static bool operator ==(BaseClass o1, BaseClass o2)
        {
            if ((object) o1 == null || (object) o2 == null)
                return Equals(o1, o2);

            return o1.Equals(o2);
        }

        public static bool operator !=(BaseClass o1, BaseClass o2)
        {
            if (o1 == null || o2 == null)
                return !Equals(o1, o2);

            return !o1.Equals(o2);
        }

        public override int GetHashCode()
        {
            return ObjectExtensions.GetHashCodeFromFields(GetAllDataProperties());
        }

        private static readonly HashSet<Type> NumericTypes = new()
        {
            typeof(int), typeof(uint), typeof(double), typeof(decimal),
        };

        private static bool IsNumericType(Type type)
        {
            return NumericTypes.Contains(type) ||
                   NumericTypes.Contains(Nullable.GetUnderlyingType(type));
        }
    }

    public static class ObjectExtensions
    {
        private const int SeedPrimeNumber = 691;
        private const int FieldPrimeNumber = 397;

        /// <summary>
        /// Allows GetHashCode() method to return a Hash based ont the object properties.
        /// </summary>
        /// <param name="fields">The list of fields to include in the hash generation.</param>
        /// <returns></returns>
        public static int GetHashCodeFromFields(params object[] fields)
        {
            unchecked
            {
                //unchecked to prevent throwing overflow exception
                var hashCode = SeedPrimeNumber;
                foreach (var b in fields)
                    if (b != null)
                        hashCode *= FieldPrimeNumber + b.GetHashCode();
                return hashCode;
            }
        }
    }
}

================================================
FILE: Core/BaseClassSerializable.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text.Json;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;

namespace FatturaElettronica.Core
{
    /// <summary>
    /// - XML (de)serialization;
    /// - JSON (de)serialization.
    /// </summary>
    public class BaseClassSerializable : BaseClass, IXmlSerializable
    {
        /// <summary>
        /// Constructor.
        /// </summary>
        protected BaseClassSerializable()
        {
            XmlOptions = new() { DateTimeFormat = "yyyy-MM-dd", DecimalFormat = "0.00######" };
        }

        protected BaseClassSerializable(XmlReader r)
        {
            ReadXml(r);
        }

        protected XmlOptions XmlOptions { get; set; }

        private readonly Stack<JsonProperty> _stack = new();

        /// <summary>
        /// Deserializes the current BusinessObject from a json stream.
        /// </summary>
        /// <param name="r">Active json stream reader</param>
        /// <remarks>Side effects on parse handling</remarks>
        public virtual void FromJson(Utf8JsonReader r)
        {
            _stack.Clear();

            PropertyInfo prop = null;

            while (r.Read())
            {
                Type objectType;
                JsonProperty current;
                Type elementType;
                switch (r.TokenType)
                {
                    case JsonTokenType.StartObject:

                        current = null;
                        if (_stack.Any())
                            current = _stack.Peek();

                        if (current != null)
                        {
                            current.Child = prop;
                            if (current.Child != null)
                            {
                                objectType = current.Child.PropertyType;

                                if (objectType.IsGenericList())
                                {
                                    elementType = objectType.GetTypeInfo().GenericTypeArguments.Single();

                                    var newObject = Activator.CreateInstance(elementType);

                                    var add = objectType.GetMethod("Add");

                                    try
                                    {
                                        if (add != null) add.Invoke(current.Value, new[] { newObject });
                                    }
                                    catch (Exception)
                                    {
                                        throw new JsonParseException($"Unexpected element type {elementType}", r);
                                    }

                                    current = new(newObject);
                                }
                                else
                                {
                                    if (!objectType.IsSubclassOfBusinessObject())
                                        throw new JsonParseException(
                                            $"Unexpected property type {objectType.FullName}",
                                            r);

                                    current = new(current.Child.GetValue(current.Value, null));
                                }
                            }
                        }
                        else
                            current = new(this);

                        _stack.Push(current);

                        break;

                    case JsonTokenType.EndObject:

                        if (_stack.Count > 0)
                            _stack.Pop();

                        // Restore parent property from stack
                        prop = null;
                        if (_stack.Count > 1)
                            prop = _stack.ElementAt(1).Child;

                        break;

                    case JsonTokenType.PropertyName:

                        if (!_stack.Any())
                            throw new JsonParseException("Malformed JSON", r);

                        current = _stack.Peek();

                        var name = r.GetString();
                        prop = GetPropertyInfo((BaseClassSerializable)current.Value, name);

                        if (prop == null)
                            throw new JsonParseException($"Unexpected property {name}", r);

                        current.Child = prop;

                        break;

                    case JsonTokenType.StartArray:

                        current = null;
                        if (_stack.Any())
                            current = _stack.Peek();

                        if (current != null && current.Child != null)
                        {
                            objectType = current.Child.PropertyType;

                            if (!objectType.IsGenericList())
                                throw new JsonParseException($"Unexpected property type {objectType.FullName}", r);

                            var value = current.Child.GetValue(current.Value, null);

                            var clear = objectType.GetMethod("Clear");
                            if (clear != null) clear.Invoke(value, null);

                            current = new(current.Child, value);
                        }
                        else
                            current = new(this);

                        _stack.Push(current);

                        break;

                    case JsonTokenType.EndArray:

                        if (_stack.Count > 0)
                            _stack.Pop();

                        // Restore parent property from stack
                        prop = null;
                        if (_stack.Count > 1)
                            prop = _stack.ElementAt(1).Child;

                        break;

                    case JsonTokenType.Number:
                    case JsonTokenType.String:
                    case JsonTokenType.True:
                    case JsonTokenType.False:
                        current = null;
                        if (_stack.Any())
                            current = _stack.Peek();

                        if (current != null)
                        {
                            objectType = prop?.PropertyType;

                            if (current.Value.GetType().IsGenericList())
                            {
                                elementType = objectType.GetTypeInfo().GenericTypeArguments.Single();

                                var add = objectType?.GetMethod("Add");
                                var value = Cast(elementType, r);

                                try
                                {
                                    if (add != null) add.Invoke(current.Value, new[] { value });
                                }
                                catch (Exception)
                                {
                                    throw new JsonParseException($"Unexpected element type {elementType}", r);
                                }
                            }
                            else
                            {
                                var value = Cast(objectType, r);
                                current.Child.SetValue(current.Value, value, null);
                            }
                        }
                        else
                            throw new JsonParseException("Malformed JSON", r);
                        break;

                    case JsonTokenType.Null:

                        current = null;
                        if (_stack.Any())
                            current = _stack.Peek();

                        if (current != null)
                        {
                            objectType = prop?.PropertyType;

                            if (current.Value.GetType().IsGenericList())
                            {
                                elementType = objectType.GetTypeInfo().GenericTypeArguments.Single();

                                var add = objectType?.GetMethod("Add");

                                try
                                {
                                    if (add != null) add.Invoke(current.Value, null);
                                }
                                catch (Exception)
                                {
                                    throw new JsonParseException($"Unexpected element type {elementType}", r);
                                }
                            }
                            else
                            {
                                current.Child.SetValue(current.Value, null, null);
                            }
                        }
                        else
                            throw new JsonParseException("Malformed JSON", r);
                        break;

                    default:
                        throw new JsonParseException($"Unexpected token {r.TokenType}", r);
                }
            }
        }

        /// <summary>
        /// Helper method to cast json properties
        /// </summary>
        /// <param name="target">target type</param>
        /// <param name="r">Active json stream reader</param>
        /// <returns></returns>
        private static object Cast(Type target, Utf8JsonReader r)
        {
            if (target == typeof(int) || target == typeof(int?))
                return r.GetInt32();

            if (target == typeof(decimal) || target == typeof(decimal?))
                return r.GetDecimal();

            if (target == typeof(DateTime) || target == typeof(DateTime?))
                return r.GetDateTime();

            if (target == typeof(string))
                return r.GetString();

            if (target == typeof(bool))
                return r.GetBoolean();

            if (target == typeof(byte[]))
                return r.GetBytesFromBase64();

            return null;
        }

        /// <summary>
        /// Helper method to get a named property
        /// </summary>
        /// <param name="value"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        private static PropertyInfo GetPropertyInfo(BaseClassSerializable value, string name)
        {
            var property = value.GetKnownNonDataProperty(name);
            if (property != null)
                return property;

            var dataProperties = value.GetAllDataProperties().ToList();

            // XmlElementAttribute comes first
            property = dataProperties
                .FirstOrDefault(prop => prop.GetCustomAttributes(typeof(XmlElementAttribute), false)
                    .Any(ca => ((XmlElementAttribute)ca).ElementName.Equals(name,
                        StringComparison.OrdinalIgnoreCase)));

            // Fallback to property name
            if (property == null)
                property = dataProperties.FirstOrDefault(n => n.Name.Equals(name, StringComparison.OrdinalIgnoreCase));

            return property;
        }

        /// <summary>
        /// Serializes the instance to JSON
        /// </summary>
        /// <returns>A JSON string representing the class instance.</returns>
        public virtual string ToJson()
        {
            return ToJson(JsonOptions.None);
        }

        /// <summary>
        /// Serializes the class to JSON.
        /// </summary>
        /// <param name="jsonOptions">JSON formatting options.</param>
        /// <returns>A JSON string representing the class instance.</returns>
        public virtual string ToJson(JsonOptions jsonOptions)
        {
            var json = JsonSerializer.Serialize(this, GetType(), new JsonSerializerOptions { WriteIndented = jsonOptions == JsonOptions.Indented });
            return json;
        }

        public XmlSchema GetSchema()
        {
            return null;
        }

        /// <summary>
        /// Serializes the current BusinessObject instance to a XML stream.
        /// </summary>
        /// <param name="w">Active XML stream writer.</param>
        /// <remarks>Writes only its inner content, not the outer element. Leaves the writer at the same depth.</remarks>
        public virtual void WriteXml(XmlWriter w)
        {
            foreach (var property in GetAllDataProperties())
            {
                var attribute = property.GetCustomAttributes(typeof(XmlElementAttribute), false)
                    .Cast<XmlElementAttribute>()
                    .FirstOrDefault();
                var propertyName = attribute == null ? property.Name : attribute.ElementName;

                var value = property.GetValue(this, null);
                if (value == null && !XmlOptions.SerializeNullValues) continue;

                var child = value as BaseClassSerializable;
                if (child != null)
                {
                    if (child.IsEmpty() && XmlOptions.SerializeEmptyBusinessObjects == false) continue;

                    w.WriteStartElement(propertyName);
                    child.WriteXml(w);
                    w.WriteEndElement();

                    continue;
                }

                if (property.PropertyType.IsGenericList())
                {
                    WriteXmlList(propertyName, value, w);
                    continue;
                }

                switch (value)
                {
                    case string _:
                        {
                            if (!string.IsNullOrEmpty(value.ToString()) || XmlOptions.SerializeEmptyStrings)
                            {
                                w.WriteElementString(propertyName, value.ToString());
                            }

                            continue;
                        }
                    case DateTime dateTime when XmlOptions.DateTimeFormat != null &&
                                                !property.GetCustomAttributes<IgnoreXmlDateFormat>().Any():
                        w.WriteElementString(propertyName, dateTime.ToString(XmlOptions.DateTimeFormat));
                        continue;
                    case decimal decimalValue when XmlOptions.DecimalFormat != null:
                        w.WriteElementString(propertyName,
                            decimalValue.ToString(XmlOptions.DecimalFormat, CultureInfo.InvariantCulture));
                        continue;
                }

                // all else fail so just let the value flush straight to XML.
                w.WriteStartElement(propertyName);
                if (value != null)
                {
                    w.WriteValue(value);
                }

                w.WriteEndElement();
            }
        }

        /// <summary>
        /// Deserializes a List of BusinessObject or strings to one or more XML elements.
        /// </summary>
        /// <param name="propertyName">Property name.</param>
        /// <param name="value">Property value.</param>
        /// <param name="w">Active XML stream writer.</param>
        private static void WriteXmlList(string propertyName, object value, XmlWriter w)
        {
            var type = value.GetType();
            var e = type.GetMethod("GetEnumerator")?.Invoke(value, null) as IEnumerator;

            while (e != null && e.MoveNext())
            {
                if (e.Current == null) continue;
                var current = e.Current;
                w.WriteStartElement(propertyName);
                {
                    switch (current)
                    {
                        case BaseClassSerializable serializable:
                            serializable.WriteXml(w);
                            break;

                        case string s:
                            w.WriteString(s);
                            break;

                        default:
                            w.WriteValue(e.Current);
                            break;
                    }
                }
                w.WriteEndElement();
            }
        }

        protected virtual void ReadAndHandleXmlStartElement(XmlReader r)
        {
            r.ReadStartElement();
            if (r.NodeType == XmlNodeType.ProcessingInstruction) r.Skip();
        }

        /// <summary>
        /// Deserializes the current BusinessObject from a XML stream.
        /// </summary>
        /// <param name="r">Active XML stream reader.</param>
        /// <remarks>Reads the outer element. Leaves the reader at the same depth.</remarks>
        public virtual void ReadXml(XmlReader r)
        {
            var isEmpty = r.IsEmptyElement;

            ReadAndHandleXmlStartElement(r);

            if (isEmpty) return;

            var properties = GetAllDataProperties().ToList();
            while (r.NodeType == XmlNodeType.Element)
            {
                var property = properties
                    .FirstOrDefault(prop =>
                        prop
                            .GetCustomAttributes(typeof(XmlElementAttribute), false)
                            .Any(ca => ((XmlElementAttribute)ca).ElementName == r.Name));
                if (property == null)
                    property = properties.FirstOrDefault(n => n.Name.Equals(r.Name));
                if (property == null)
                {
                    r.Skip();
                    continue;
                }

                var type = property.PropertyType;
                var value = property.GetValue(this, null);

                if (type.IsSubclassOfBusinessObject())
                {
                    ((BaseClassSerializable)value).ReadXml(r);
                    continue;
                }

                // if property type is List<T>, try to fetch the list from XML.
                if (type.IsGenericList())
                {
                    ReadXmlList(value, type, r.Name, r);
                    continue;
                }

                // ReadElementContentAs won't accept a nullable type.
                if (type == typeof(DateTime?)) type = typeof(DateTime);
                if (type == typeof(decimal?)) type = typeof(decimal);
                if (type == typeof(int?)) type = typeof(int);

                var content = r.ReadElementContentAs(type, null);
                if (string.IsNullOrEmpty(content.ToString()))
                {
                    var defaultValue = property.GetCustomAttributes<DefaultValueAttribute>().FirstOrDefault()?.Value;
                    if (defaultValue is not null) content = defaultValue;
                }
                property.SetValue(this, content, null);
            }

            if (r.NodeType == XmlNodeType.Text) r.Skip();
            r.ReadEndElement();
        }

        /// <summary>
        /// Serializes one or more XML elements into a List of BusinessObjects.
        /// </summary>
        /// <param name="propertyValue">Property value. Must be a List of BusinessObject instances.</param>
        /// <param name="propertyType"></param>
        /// <param name="elementName">Element name.</param>
        /// <param name="r">Active XML stream reader.</param>
        private static void ReadXmlList(object propertyValue, Type propertyType, string elementName, XmlReader r)
        {
            var argumentType = propertyType.GetTypeInfo().GenericTypeArguments.Single();

            // note that the 'canonical' call to GetRuntimeMethod returns null for some reason,
            // see http://stackoverflow.com/questions/21307845/runtimereflectionextensions-getruntimemethod-does-not-work-as-expected
            //var method = propertyType.GetRuntimeMethod("Clear", new[] { propertyType });
            var clear = propertyType.GetMethod("Clear");
            if (clear != null) clear.Invoke(propertyValue, null);

            var add = propertyType.GetMethod("Add");

            while (r.NodeType == XmlNodeType.Element && r.Name == elementName)
            {
                if (argumentType.IsSubclassOfBusinessObject())
                {
                    // list items are expected to be of BusinessObject type.
                    var bo = Activator.CreateInstance(argumentType);
                    ((BaseClassSerializable)bo).ReadXml(r);
                    if (add != null) add.Invoke(propertyValue, new[] { bo });
                    continue;
                }

                if (argumentType == typeof(string))
                {
                    if (add != null) add.Invoke(propertyValue, new object[] { r.ReadElementContentAsString() });
                    continue;
                }

                if (argumentType != typeof(int)) continue;
                if (add != null) add.Invoke(propertyValue, new[] { r.ReadElementContentAs(argumentType, null) });
            }
        }

        private class JsonProperty
        {
            public PropertyInfo Child { get; set; }

            public object Value { get; set; }

            public JsonProperty(PropertyInfo property, object value)
            {
                Child = property;
                Value = value;
            }

            public JsonProperty(object value) : this(null, value)
            {
            }

            public override string ToString()
            {
                return $"Child {Child} - Value {Value}";
            }
        }
    }
}

================================================
FILE: Core/DataPropertyAttribute.cs
================================================
using System;
using System.Runtime.CompilerServices;

namespace FatturaElettronica.Core
{
    /// <summary>
    /// Use this attribute to flag DataObject properties which are meant to be represent actual Business Object values
    /// (i.e. LastName, but not IsValid). Also, in order for the Read/Write XML methods to work properly, remember
    /// that these properties should be defined in the same order with which they are expected to appear in the XML file. 
    /// </summary>
    [AttributeUsage(AttributeTargets.Property)]
    public sealed class DataProperty : Attribute
    {
        public DataProperty([CallerLineNumber] int order = 0)
        {
            Order = order;
        }

        public int Order { get; }
    }
}

================================================
FILE: Core/IgnoreXmlDateFormat.cs
================================================
using System;

namespace FatturaElettronica.Core
{
    /// <summary>
    /// Use this attribute to flag DateTime properties which should not be serialized to XML using the class XmlDateFormat property.
    /// </summary>
    [AttributeUsage(AttributeTargets.Property)]
    public sealed class IgnoreXmlDateFormat : Attribute
    {
    }
}

================================================
FILE: Core/JsonOptions.cs
================================================
namespace FatturaElettronica.Core
{
    /// <summary>
    /// Provides formatting optons for JSON output.
    /// </summary>
    /// <remarks>Currently a wrapper around Newtonsoft.Json.Formatting. We provide it so in the future we can remove json.net
    /// dependancy without changing the external API.</remarks>
    public enum JsonOptions
    {
        None = 0,
        Indented = 1,
    }
}

================================================
FILE: Core/JsonParseException.cs
================================================
using System;
using System.Text.Json;

namespace FatturaElettronica.Core
{
    /// <summary>
    /// Json parsing exception
    /// </summary>
    public class JsonParseException : Exception
    {
        private int LineNumber { get; }

        private int LinePosition { get; }

        public JsonParseException(string message, Utf8JsonReader reader) : base(message)
        {
            //Not available atm.
            //As mentioned here https://github.com/dotnet/runtime/issues/28482 will be available from System.Text.Json vers.7.0.0

            //LineNumber = textReader.LineNumber;
            //LinePosition = textReader.textReader;
        }
    }
}

================================================
FILE: Core/TypeExtensions.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace FatturaElettronica.Core
{
    public static class TypeExtensions
    {
        public static MethodInfo GetMethod(this Type type, string name)
        {
            return type.GetRuntimeMethods().First(x => x.Name.Contains(name));
        }

        public static bool IsSubclassOfBusinessObject(this Type type)
        {
            return typeof(BaseClassSerializable).GetTypeInfo().IsAssignableFrom(type.GetTypeInfo());
        }

        public static bool IsGenericList(this Type type)
        {
            return type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>);
        }
    }
}

================================================
FILE: Core/XmlOptions.cs
================================================
namespace FatturaElettronica.Core
{
    /// <summary>
    /// XML serialization options for BusinessObject instances.
    /// </summary>
    public class XmlOptions
    {
        /// <summary>
        /// Format string to be applied on DateTime properties. This format will be ignored if the IgnoreXmlDateFormat attribute has been set 
        /// for the property.
        /// </summary>
        public string DateTimeFormat { get; set; }

        /// <summary>
        /// Format string to be applied on Decimal properties.
        /// </summary>
        public string DecimalFormat { get; set; }

        /// <summary>
        /// Whether null properties should be serialized or not. Defaults to <value>false</value>.
        /// </summary>
        public bool SerializeNullValues { get; set; }

        /// <summary>
        /// Whether empty BusinessObject children should be serialized or not. Defaults to <value>false</value>.
        /// </summary>
        public bool SerializeEmptyBusinessObjects { get; set; }

        /// <summary>
        /// Wether emty strings should be serialized or not. Defaults to <value>false</value>.
        /// </summary>
        public bool SerializeEmptyStrings { get; set; }
    }
}

================================================
FILE: Defaults.cs
================================================
namespace FatturaElettronica.Defaults
{
    public enum Instance
    {
        PubblicaAmministrazione,
        Privati,
        Semplificata
    };

    public static class Versione
    {
        public static string Trasmissione
        {
            get { return "1.2"; }
        }

        public static string Controlli
        {
            get { return "1.4"; }
        }

        public static string TrasmissioneSemplificata
        {
            get { return "1.0"; }
        }
    }

    public static class FormatoTrasmissione
    {
        public static string PubblicaAmministrazione
        {
            get { return $"FPA{Versione.Trasmissione.Replace(".", "")}"; }
        }

        public static string Privati
        {
            get { return $"FPR{Versione.Trasmissione.Replace(".", "")}"; }
        }

        public static string Semplificata
        {
            get { return $"FSM{Versione.TrasmissioneSemplificata.Replace(".", "")}"; }
        }
    }

    public class RootElement
    {
        public static string Prefix { get; set; } = "p";

        public static XmlAttributeString[] ExtraAttributes { get; set; } = new XmlAttributeString[]
        {
            new()
            {
                Prefix = "xmlns", LocalName = "ds", ns = null, value = "http://www.w3.org/2000/09/xmldsig#"
            },
            new()
            {
                Prefix = "xmlns",
                LocalName = "xsi",
                ns = null,
                value = "http://www.w3.org/2001/XMLSchema-instance"
            },
            new()
            {
                Prefix = "xsi",
                LocalName = "schemaLocation",
                ns = null,
                value =
                    "http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 https://www.fatturapa.gov.it/export/documenti/fatturapa/v1.2.1/Schema_del_file_xml_FatturaPA_versione_1.2.1a.xsd"
            }
        };

        public class XmlAttributeString
        {
            public string Prefix;
            public string LocalName;
            public string ns;
            public string value;
        }
    }
}

================================================
FILE: Extensions/DecimalRuleExtensions.cs
================================================
using FluentValidation;

namespace FatturaElettronica.Extensions
{
    internal static class DecimalRuleExtensions
    {
        public static void ScalePrecision8DecimalType<T>(this IRuleBuilder<T, decimal> ruleBuilder)
        {
            ruleBuilder.PrecisionScale(19, 8, false);
        }

        public static void ScalePrecision2DecimalType<T>(this IRuleBuilder<T, decimal> ruleBuilder)
        {
            ruleBuilder.PrecisionScale(13, 2, false);
        }

        public static void ScalePrecision8DecimalType<T>(this IRuleBuilder<T, decimal?> ruleBuilder)
        {
            ruleBuilder.PrecisionScale(19, 8, false);
        }

        public static void ScalePrecision2DecimalType<T>(this IRuleBuilder<T, decimal?> ruleBuilder)
        {
            ruleBuilder.PrecisionScale(13, 2, false);
        }

        public static void ScalePrecisionPercentualeDecimalType<T>(this IRuleBuilder<T, decimal?> ruleBuilder)
        {
            ruleBuilder.PrecisionScale(6, 2, false);
        }
    }
}

================================================
FILE: Extensions/FatturaElettronicaExtensions.cs
================================================
using System;
using System.Collections.Concurrent;
using System.Reflection;
using FatturaElettronica.Core;
using FluentValidation;
using FluentValidation.Results;

namespace FatturaElettronica.Extensions
{
    public static class FatturaElettronicaExtensions
    {
        private static readonly ConcurrentDictionary<string, IValidator> ValidatorsCache = new();
        public static ValidationResult Validate<T>(this T obj) where T : BaseClassSerializable
        {
            var t = typeof(T);
            if(t.GetTypeInfo().IsAbstract) t = obj.GetType();
            var name = (t.FullName.Contains("Semplificata") ? "Semplificata." : string.Empty) + t.Name;

            var validator = ValidatorsCache.GetOrAdd(name, n =>
            {
                var type = Type.GetType($"FatturaElettronica.Validators.{n}Validator");
                return (IValidator)Activator.CreateInstance(type);
            });

            var context = new ValidationContext<T>(obj);
            return validator.Validate(context);
        }
    }
}


================================================
FILE: Extensions/FatturaElettronicaFileNameGenerator/FatturaElettronicaFileNameExtensionType.cs
================================================
namespace FatturaElettronica.Extensions
{
    public enum FatturaElettronicaFileNameExtensionType
    {
        Plain,
        Signed
    }
}


================================================
FILE: Extensions/FatturaElettronicaFileNameGenerator/FatturaElettronicaFileNameGenerator.cs
================================================
using FatturaElettronica.Common;
using FatturaElettronica.Extensions.Resources;
using System;

namespace FatturaElettronica.Extensions
{
    /// <summary>
    /// Factory per la creazione del filename
    /// </summary>
    public class FatturaElettronicaFileNameGenerator
    {
        private readonly IdFiscaleIVA _idFiscaleIVA;
        private readonly FatturaElettronicaFileNameExtensionType _fatturaExtensionType;

        public FatturaElettronicaFileNameGenerator(IdFiscaleIVA idFiscale,
            FatturaElettronicaFileNameExtensionType fatturaType = FatturaElettronicaFileNameExtensionType.Plain)
        {
            _idFiscaleIVA = idFiscale ?? throw new ArgumentNullException(ErrorMessages.IdFiscaleIsMissing);
            if (_idFiscaleIVA.IdPaese == null || _idFiscaleIVA.IdPaese.Length < 2)
                throw new ArgumentException(ErrorMessages.IdPaeseIsWrongOrMissing);
            if (_idFiscaleIVA.IdCodice == null)
                throw new ArgumentException(ErrorMessages.IdCodiceIsMissing);
            _fatturaExtensionType = fatturaType;
        }

        /// <summary>
        /// Restituisce il nome del file partendo dall'ultimo numero di fattura staccata
        /// </summary>
        /// <param name="lastBillingNumber"></param>
        /// <returns></returns>
        public string GetNextFileName(int lastBillingNumber) =>
            $"{_idFiscaleIVA.IdPaese}{_idFiscaleIVA.IdCodice}_{GetNext(lastBillingNumber)}{Extension}";

        /// <summary>
        /// Restituisce il nome del file partendo dall'ultimo nome del file generato
        /// </summary>
        /// <param name="lastBillingNumber"></param>
        /// <returns></returns>
        public string GetNextFileName(string lastBillingNumber) =>
            $"{_idFiscaleIVA.IdPaese}{_idFiscaleIVA.IdCodice}_{GetNext(lastBillingNumber)}{Extension}";

        private readonly char[] _baseChars = {
            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
            'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
        };

        public int? CurrentIndex { get; set; }

        private string Extension =>
            _fatturaExtensionType == FatturaElettronicaFileNameExtensionType.Plain ? ".xml" : ".xml.p7m";

        /// <summary>
        /// Restituisce il Progressivo Invio Successivo
        /// </summary>
        /// <param name="lastNumber"></param>
        /// <returns></returns>
        private string GetNext(int lastNumber)
        {
            CurrentIndex = ++lastNumber;
            var value = ToString(CurrentIndex.Value);
            if (value.Length > 5)
                throw new ArgumentException(ErrorMessages.LastBillingNumberIsTooLong);
            return value.PadLeft(5, '0');
        }

        /// <summary>
        /// Restituisce il Progressivo Invio Successivo
        /// </summary>
        /// <param name="lastStringNumber"></param>
        /// <returns></returns>
        private string GetNext(string lastStringNumber)
        {
            return GetNext(ToInteger(lastStringNumber));
        }

        /// <summary>
        /// Da numero a stringa valida
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        private string ToString(int value)
        {
            var i = 32;
            var buffer = new char[i];
            var targetBase = _baseChars.Length;

            do
            {
                buffer[--i] = _baseChars[value % targetBase];
                value = value / targetBase;
            } while (value > 0);

            var result = new char[32 - i];
            Array.Copy(buffer, i, result, 0, 32 - i);

            return new(result);
        }

        /// <summary>
        /// Da Stringa valida a numero
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        private int ToInteger(string value)
        {
            var k = value.Length - 1;
            value = Reverse(value);
            var targetBase = _baseChars.Length;
            var result = 0;

            do
            {
                for (var j = _baseChars.Length - 1; j > 0; j--)
                {
                    if (_baseChars[j] != value[k]) continue;
                    result = result + j * (int) Math.Pow(targetBase, k);
                    break;
                }

                k--;
            } while (k >= 0);

            return result;
        }

        /// <summary>
        /// String Reverse
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        private static string Reverse(string s)
        {
            var charArray = s.ToCharArray();
            Array.Reverse(charArray);
            return new(charArray);
        }
    }
}

================================================
FILE: Extensions/HtmlExtensions.cs
================================================
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

namespace FatturaElettronica.Extensions
{
    public static class HtmlExtensions
    {
        public static void WriteHtml(this FatturaBase fattura, string outPath, string xslPath)
        {
            if (outPath == null)
            {
                throw new ArgumentNullException(nameof(outPath));
            }
            
            if (xslPath == null)
            {
                throw new ArgumentNullException(nameof(xslPath));
            }

            var xt = new XslCompiledTransform();
            xt.Load(xslPath);
            
            using (var memoryStream = new MemoryStream())
            {
                using (var w = new XmlTextWriter(memoryStream, Encoding.UTF8) {Formatting = Formatting.Indented})
                {
                    fattura.WriteXml(w);
                    w.Flush();
                    
                    memoryStream.Seek(0, SeekOrigin.Begin);

                    var xPathDocument = new XPathDocument(memoryStream);
                    using (var writer = File.OpenWrite(outPath))
                    {
                        xt.Transform(xPathDocument, null, writer);
                    }
                }
            }
        }
    }
}

================================================
FILE: Extensions/JsonExtensions.cs
================================================
using System.Text;
using System.Text.Json;

namespace FatturaElettronica.Extensions
{
    public static class JsonExtensions
    {
        public static void FromJson(this FatturaBase fattura, string json)
        {
            fattura.FromJson(new Utf8JsonReader(Encoding.UTF8.GetBytes(json)));
        }
    }
}

================================================
FILE: Extensions/Resources/ErrorMessages.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace FatturaElettronica.Extensions.Resources {
    using System;
    
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    public class ErrorMessages {
        
        private static System.Resources.ResourceManager resourceMan;
        
        private static System.Globalization.CultureInfo resourceCulture;
        
        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal ErrorMessages() {
        }
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        public static System.Resources.ResourceManager ResourceManager {
            get {
                if (object.Equals(null, resourceMan)) {
                    System.Resources.ResourceManager temp = new System.Resources.ResourceManager("FatturaElettronica.Extensions.Resources.ErrorMessages", typeof(ErrorMessages).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        public static System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        public static string FirmaException {
            get {
                return ResourceManager.GetString("FirmaException", resourceCulture);
            }
        }
        
        public static string IdCodiceIsMissing {
            get {
                return ResourceManager.GetString("IdCodiceIsMissing", resourceCulture);
            }
        }
        
        public static string IdFiscaleIsMissing {
            get {
                return ResourceManager.GetString("IdFiscaleIsMissing", resourceCulture);
            }
        }
        
        public static string IdPaeseIsWrongOrMissing {
            get {
                return ResourceManager.GetString("IdPaeseIsWrongOrMissing", resourceCulture);
            }
        }
        
        public static string PfxIsMissing {
            get {
                return ResourceManager.GetString("PfxIsMissing", resourceCulture);
            }
        }
        
        public static string ProgressivoOverflow {
            get {
                return ResourceManager.GetString("ProgressivoOverflow", resourceCulture);
            }
        }
        
        public static string SignatureException {
            get {
                return ResourceManager.GetString("SignatureException", resourceCulture);
            }
        }
        public static string LastBillingNumberIsTooLong
        {
            get
            {
                return ResourceManager.GetString("ProgressivoOverflow", resourceCulture);
            }
        }
    }
}


================================================
FILE: Extensions/Resources/ErrorMessages.en.resx
================================================
<root>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>1.3</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>

================================================
FILE: Extensions/Resources/ErrorMessages.resx
================================================
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <data name="FirmaException" xml:space="preserve">
    <value>Impossibile firmare il contenuto del file</value>
  </data>
  <data name="IdCodiceIsMissing" xml:space="preserve">
    <value>IdCodice non specificato</value>
  </data>
  <data name="IdFiscaleIsMissing" xml:space="preserve">
    <value>IdFiscale non specificato</value>
  </data>
  <data name="IdPaeseIsWrongOrMissing" xml:space="preserve">
    <value>IdPaese non specificato oppure errato</value>
  </data>
  <data name="PfxIsMissing" xml:space="preserve">
    <value>Il file pfx non esiste</value>
  </data>
  <data name="ProgressivoOverflow" xml:space="preserve">
    <value>Il progressivo è troppo elevato</value>
  </data>
  <data name="SignatureException" xml:space="preserve">
    <value>Una firma non corrisponde al certificato contenuto nel file</value>
  </data>
</root>

================================================
FILE: Extensions/SignatureException.cs
================================================
using System;

namespace FatturaElettronica.Extensions
{
    public class SignatureException : Exception
    {
        public SignatureException(string message) : base(message) { }

        public SignatureException(string message, Exception innerException) : base(message, innerException)
        {
        }
    }
}


================================================
FILE: Extensions/SignedFileExtensions.cs
================================================
using System;
using System.IO;
using System.Security.Cryptography;
using System.Security.Cryptography.Pkcs;
using System.Security.Cryptography.X509Certificates;

namespace FatturaElettronica.Extensions
{

    public static class SignedFileExtensions
    {

        /// <summary>
        /// This method will Read the Signed XML whether it is Base64Encoded or plain
        /// </summary>
        /// <param name="fattura"></param>
        /// <param name="filePath"></param>
        /// <param name="validateSignature"></param>
        /// <exception cref="SignatureException">If there is an error validating invoice signature</exception>
        /// <exception cref="FormatException">If it is dealing with a Base64 input and it fails to decode it</exception>"
        public static void ReadXmlSigned(this FatturaBase fattura, string filePath, bool validateSignature = true)
        {
            using var inputStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            using var contentStream = StreamExtensions.PreprocessStreamEncoding(inputStream);
            ReadXmlSigned(fattura, contentStream, validateSignature);

        }

        public static void ReadXmlSignedBase64(this FatturaBase fattura, string filePath, bool validateSignature = true)
        {
            ReadXmlSigned(fattura, new MemoryStream(Convert.FromBase64String(File.ReadAllText(filePath))),
                validateSignature);
        }

        public static void ReadXmlSigned(this FatturaBase fattura, Stream stream, bool validateSignature = true)
        {
            using var parsed = ParseSignature(stream, validateSignature);
            fattura.ReadXml(parsed);
        }

        /// <summary>
        /// Retrieves the Fattura XML as a Stream from an input Signed content Stream. 
        /// It should be invoked on Signed content that is not base encoded, and supports signature validation
        /// </summary>
        /// <param name="stream">A Signed Content stream</param>
        /// <param name="validateSignature">If we should validate the content matches the signature</param>
        /// <returns>A Stream that can be Read into a Fattura object</returns>
        /// <exception cref="SignatureException">If ValidateSignature is true and the content doesn't match the signature</exception>
        /// <exception cref="CryptographicException">If the stream is encoded or there is an error Decoding the signature and ValidateSignature is false</exception>
        public static MemoryStream ParseSignature(Stream stream, bool validateSignature)
        {
            var fileContent = ReadAllBytes(stream);
            var content = new ContentInfo(fileContent);
            var signedFile = new SignedCms(SubjectIdentifierType.IssuerAndSerialNumber, content, false);

            try
            {
                signedFile.Decode(fileContent);
                if (validateSignature)
                {
                    signedFile.CheckSignature(true);
                }
            }
            catch (CryptographicException ce)
            {
                throw new SignatureException(Resources.ErrorMessages.SignatureException, ce);
            }

            var memoryStream = new MemoryStream();
            memoryStream.Write(signedFile.ContentInfo.Content, 0, signedFile.ContentInfo.Content.Length);

            return memoryStream;

            static byte[] ReadAllBytes(Stream stream)
            {
                if (stream is MemoryStream mem)
                    return mem.ToArray();

                using var ms = new MemoryStream();
                var buffer = new byte[8192];
                int bytesRead;

                while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
                    ms.Write(buffer, 0, bytesRead);

                return ms.ToArray();
            }
        }

        public static void WriteXmlSigned(this FatturaBase fattura, string pfxFile, string pfxPassword, string p7mFilePath)
        {
            if (!File.Exists(pfxFile))
                throw new SignatureException(Resources.ErrorMessages.PfxIsMissing);

            var cert = new X509Certificate2(pfxFile, pfxPassword);
            WriteXmlSigned(fattura, cert, p7mFilePath);
        }

        public static void WriteXmlSigned(this FatturaBase fattura, X509Certificate2 cert, string p7mFilePath)
        {
            var tempFile = Path.GetTempFileName();

            if (!p7mFilePath.ToLowerInvariant().EndsWith(".p7m"))
                p7mFilePath += ".p7m";

            try
            {
                fattura.WriteXml(tempFile);

                var content = new ContentInfo(new("1.2.840.113549.1.7.1", "PKCS 7 Data"),
                    File.ReadAllBytes(tempFile));
                var signedCms = new SignedCms(SubjectIdentifierType.IssuerAndSerialNumber, content, false);
                var signer = new CmsSigner(cert)
                {
                    IncludeOption = X509IncludeOption.EndCertOnly,
                    DigestAlgorithm = new("2.16.840.1.101.3.4.2.1", "SHA256")
                };
                signer.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));
                //PKCS7 format
                signedCms.ComputeSignature(signer, false);

                var signature = signedCms.Encode();
                File.WriteAllBytes(p7mFilePath, signature);
            }
            catch (Exception)
            {
                throw new SignatureException(Resources.ErrorMessages.FirmaException);
            }
            finally
            {
                if (File.Exists(tempFile))
                    File.Delete(tempFile);
            }
        }
    }
}

================================================
FILE: Extensions/StreamExtensions.cs
================================================
using System;
using System.IO;
using System.Text.RegularExpressions;

namespace FatturaElettronica.Extensions
{
    public static class StreamExtensions
    {
        /// <summary>
        /// This helper performs preliminary checks to determine if content is likely to be Base64 encoded and if it is it attempts to Decode it and returns.
        /// For better consistency with previous implementations if the input stream Position is not 0 and it is seekable, it will be rewound to Position = 0
        /// </summary>
        /// <param name="fileContents">The Stream to be processed</param>
        /// <returns>If the input stream was Base encoded and was successfully decoded it returns a new Stream containing the decoded data. 
        ///Else it rewinds and returns the original stream</returns>
        ///<exception cref="FormatException">Although unlikely, if provided with an invalid base encoded Stream that still got through the length check and regex it will throw a FormatException</exception>
        public static Stream PreprocessStreamEncoding(Stream fileContents)
        {
            ///Previous versions of the library worked independently of the stream position, so we should maintain this behavior where possible
            if (fileContents.Position != 0 && fileContents.CanSeek)
            {
                fileContents.Position = 0;
            }
            //Using the full constructor to prevent stream collection
            using var reader = new StreamReader(fileContents, System.Text.Encoding.UTF8, true, 1024, true);
            var content = reader.ReadToEnd();
            //The length check is a bit faster separate instead of inserted in the regex match
            if (content.Length % 4 != 0 || !Regex.IsMatch(content, "^[A-Za-z0-9+/]*([AQgw]==|[AEIMQUYcgkosw048]=)?$"))
            {
                //Unlikely to be B64,we rewind the stream for caller convenience
                fileContents.Position = 0;
                return fileContents;
            }
            //Returning a B64Decoded Stream
            return new MemoryStream(Convert.FromBase64String(content));
        }
    }
}

================================================
FILE: Extensions/XmlExtensions.cs
================================================
using System.IO;
using System.Xml;

namespace FatturaElettronica.Extensions
{
    public static class XmlExtensions
    {
        public static void ReadXml(this FatturaBase fattura, string filePath)
        {
            using var r = XmlReader.Create(filePath,
                new()
                {
                    IgnoreWhitespace = true, IgnoreComments = true, IgnoreProcessingInstructions = true
                });
            fattura.ReadXml(r);
        }

        public static void ReadXml(this FatturaBase fattura, Stream stream)
        {
            stream.Position = 0;
            using var r = XmlReader.Create(stream,
                new()
                {
                    IgnoreWhitespace = true, IgnoreComments = true, IgnoreProcessingInstructions = true
                });
            fattura.ReadXml(r);
        }

        public static void WriteXml(this FatturaBase fattura, string filePath)
        {
            using var w = XmlWriter.Create(filePath, new() {Indent = true});
            fattura.WriteXml(w);
        }
    }
}

================================================
FILE: FUNDING.yml
================================================
github: nicolaiarocci

================================================
FILE: FatturaBase.cs
================================================
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Xml;
using FatturaElettronica.Defaults;
using FatturaElettronica.Extensions;
using FatturaElettronica.Ordinaria;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica
{
    public abstract class FatturaBase : BaseClassSerializable
    {
        static FatturaBase()
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        }

        public override void ReadXml(XmlReader r)
        {
            r.MoveToContent();
            base.ReadXml(r);
        }

        public override void WriteXml(XmlWriter w)
        {
            w.WriteStartElement(RootElement.Prefix, GetLocalName(), GetNameSpace());
            w.WriteAttributeString("versione", GetFormatoTrasmissione());
            if (!string.IsNullOrEmpty(SistemaEmittente))
            {
                w.WriteAttributeString("SistemaEmittente", SistemaEmittente);
            }

            foreach (var a in RootElement.ExtraAttributes)
            {
                w.WriteAttributeString(a.Prefix, a.LocalName, a.ns, a.value);
            }

            base.WriteXml(w);
            w.WriteEndElement();
        }

        public static FatturaBase CreateInstanceFromXml(Stream stream, bool validateSignature = false)
        {
            using var contentStream = StreamExtensions.PreprocessStreamEncoding(stream);
            try
            {
                return CreateInstanceFromPlainXml(contentStream);
            }
            catch (XmlException)
            {
                stream.Position = 0;
                return CreateInstanceFromXmlSigned(contentStream, validateSignature);
            }
        }

        private static FatturaBase CreateInstanceFromPlainXml(Stream stream)
        {
            FatturaBase ret;
            using (var r = XmlReader.Create(stream,
                new()
                {
                    IgnoreWhitespace = true, IgnoreComments = true, IgnoreProcessingInstructions = true
                }))
            {
                while (r.Read() && !r.LocalName.Contains("Fattura"))
                {
                }

                var att = r.GetAttribute("versione");

                if (att == FormatoTrasmissione.Semplificata)
                    ret = Semplificata.FatturaSemplificata.CreateInstance(Instance.Semplificata);
                else
                    ret = FatturaOrdinaria.CreateInstance(
                        att == FormatoTrasmissione.PubblicaAmministrazione
                            ? Instance.PubblicaAmministrazione
                            : Instance.Privati);
                stream.Position = 0;
            }

            using (var r = XmlReader.Create(stream,
                new()
                {
                    IgnoreWhitespace = true, IgnoreComments = true, IgnoreProcessingInstructions = true
                }))
            {
                ret.ReadXml(r);
            }

            return ret;
        }

        private static FatturaBase CreateInstanceFromXmlSigned(Stream stream,
            bool validateSignature = true)
        {
            try
            {
                using var parsed = SignedFileExtensions.ParseSignature(stream, validateSignature);
                var newStream = new MemoryStream();
                parsed.WriteTo(newStream);
                newStream.Position = 0;
                return CreateInstanceFromXml(newStream);
            }
            catch (Exception ex) when (ex is CryptographicException or SignatureException)
            {
                stream.Position = 0;
                return CreateInstanceFromXmlSignedBase64(stream, validateSignature);
            }
        }

        private static FatturaBase CreateInstanceFromXmlSignedBase64(Stream stream,
            bool validateSignature = true)
        {
            byte[] converted;
            using (var reader = new StreamReader(stream))
            {
                converted = Convert.FromBase64String(reader.ReadToEnd());
            }

            return CreateInstanceFromXmlSigned(new MemoryStream(converted), validateSignature);
        }

        protected override void ReadAndHandleXmlStartElement(XmlReader r)
        {
            SistemaEmittente = r.GetAttribute("SistemaEmittente");
            base.ReadAndHandleXmlStartElement(r);
        }

        public string SistemaEmittente { get; set; }
        public abstract string GetFormatoTrasmissione();
        protected abstract string GetLocalName();
        protected abstract string GetNameSpace();
    }
}

================================================
FILE: FatturaElettronica.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <VersionPrefix>4.0.7</VersionPrefix>
    <PackageId>FatturaElettronica</PackageId>
    <Authors>Nicola Iarocci</Authors>
    <Company>CIR 2000</Company>
    <Product>FatturaElettronica.NET</Product>
    <Description>Fattura elettronica per le aziende e la pubblica amministrazione italiana</Description>
    <Copyright>Copyright © CIR2000 2017-2022</Copyright>
    <PackageProjectUrl>https://fatturaelettronicaopensource.org</PackageProjectUrl>
    <RepositoryUrl>https://github.com/FatturaElettronica/FatturaElettronica.NET</RepositoryUrl>
    <PackageLicenseFile>LICENSE.txt</PackageLicenseFile>
    <PackageReadmeFile>README.md</PackageReadmeFile>
    <LangVersion>latest</LangVersion>
    <PackageIcon>icon.png</PackageIcon>
  </PropertyGroup>

<ItemGroup>
    <None Include="LICENSE.txt" Pack="true" PackagePath="\"/>
    <None Include="README.md" Pack="true" PackagePath="\"/>
    <None Include=".github\workflows\**\*.*" Pack="false" />
  </ItemGroup>

  <ItemGroup>
    <Compile Remove="Tests\**"/>
    <Compile Remove="Test\**"/>
    <EmbeddedResource Remove="Tests\**"/>
    <EmbeddedResource Remove="Test\**"/>
    <None Remove="Tests\**"/>
    <None Remove="Test\**"/>

    <EmbeddedResource Update="Resources\**\*.resx">
      <Generator>PublicResXFileCodeGenerator</Generator>
      <LastGenOutput>%(Filename).Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="FluentValidation" Version="11.5.2"/>
    <PackageReference Include="System.Security.Cryptography.Pkcs" Version="9.0.0" />
    <PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.0" />
    <PackageReference Include="System.Text.Json" Version="9.0.0" />
  </ItemGroup>

  <ItemGroup>
    <None Include="Artwork/fattura_elettronica.png" Pack="true" PackagePath="/icon.png" />
  </ItemGroup>

</Project>


================================================
FILE: FatturaElettronica.csproj.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
	<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=extensions_005Cfatturaelettronicafilenamegenerator/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

================================================
FILE: FatturaElettronica.sln
================================================

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26730.12
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FatturaElettronica", "FatturaElettronica.csproj", "{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FatturaElettronica.Test", "Test\FatturaElettronica.Test.csproj", "{C2CAC490-0AF7-4435-8585-03236454FCCB}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|Any CPU = Release|Any CPU
		Release|x64 = Release|x64
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Debug|x64.ActiveCfg = Debug|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Debug|x64.Build.0 = Debug|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Debug|x86.ActiveCfg = Debug|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Debug|x86.Build.0 = Debug|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Release|Any CPU.Build.0 = Release|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Release|x64.ActiveCfg = Release|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Release|x64.Build.0 = Release|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Release|x86.ActiveCfg = Release|Any CPU
		{0A1CFCCB-0061-43E5-8392-C78B4156D2CA}.Release|x86.Build.0 = Release|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Debug|x64.ActiveCfg = Debug|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Debug|x64.Build.0 = Debug|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Debug|x86.ActiveCfg = Debug|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Debug|x86.Build.0 = Debug|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Release|Any CPU.Build.0 = Release|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Release|x64.ActiveCfg = Release|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Release|x64.Build.0 = Release|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Release|x86.ActiveCfg = Release|Any CPU
		{C2CAC490-0AF7-4435-8585-03236454FCCB}.Release|x86.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {D75DC96A-3736-41A2-8139-C56A1235CEC7}
	EndGlobalSection
EndGlobal


================================================
FILE: FatturaElettronica.sln.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ABI/@EntryIndexedValue">ABI</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BIC/@EntryIndexedValue">BIC</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CAB/@EntryIndexedValue">CAB</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CAP/@EntryIndexedValue">CAP</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CF/@EntryIndexedValue">CF</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CIG/@EntryIndexedValue">CIG</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CUP/@EntryIndexedValue">CUP</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DDT/@EntryIndexedValue">DDT</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FPA/@EntryIndexedValue">FPA</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FPR/@EntryIndexedValue">FPR</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IBAN/@EntryIndexedValue">IBAN</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IVA/@EntryIndexedValue">IVA</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PEC/@EntryIndexedValue">PEC</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=REA/@EntryIndexedValue">REA</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=XML/@EntryIndexedValue">XML</s:String></wpf:ResourceDictionary>

================================================
FILE: LICENSE.txt
================================================
Copyright (c) 2017 by Nicola Iarocci, Gestionali Amica and contributors. See 
AUTHORS for more details.

Some rights reserved.

Redistribution and use in source and binary forms of the software as well as
documentation, with or without modification, are permitted provided that the
following conditions are met:

* Redistributions of source code must retain the above copyright
  notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above
  copyright notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.

* The names of the contributors may not be used to endorse or
  promote products derived from this software without specific prior written
  permission.

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/AltriDatiGestionali.cs
================================================
using System;
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiBeniServizi
{
    /// <summary>
    /// Blocco che consente di inserire, con riferimento ad una linea di dettaglio, diverse tipologie di informazioni utili ai fini
    /// amministrativi, gestionali, etc.
    /// </summary>
    public class AltriDatiGestionali : BaseClassSerializable
    {

        public AltriDatiGestionali() { }
        public AltriDatiGestionali(XmlReader r) : base(r) { }

        /// <summary>
        /// Codice che identifica la tipologia di informazione
        /// </summary>
        [Core.DataProperty]
        public string TipoDato { get; set; }

        /// <summary>
        /// Campo in cui inserire un valore alfanumerico riferito alla tipologia di informazione.
        /// </summary>
        [Core.DataProperty]
        public string RiferimentoTesto { get; set; }

        /// <summary>
        /// Campo in cui inserire un valore numerico riferito alla tipologia di informazione.
        /// </summary>
        [Core.DataProperty]
        public decimal? RiferimentoNumero { get; set; }

        /// <summary>
        /// Campo in cui inserire una data riferita alla tiplogia di informazione.
        /// </summary>
        [Core.DataProperty]
        public DateTime? RiferimentoData { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/CodiceArticolo.cs
================================================
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiBeniServizi
{
    /// <summary>
    /// Eventuale codifica dell'articolo.
    /// </summary>
    public class CodiceArticolo : BaseClassSerializable
    {
        public CodiceArticolo() { }
        public CodiceArticolo(XmlReader r) : base(r) { }

        /// <summary>
        /// Indica la tipologia di codice articolo (TARIC, CPV, EAN, SSC, ...)
        /// </summary>
        [Core.DataProperty]
        public string CodiceTipo { get; set; }

        /// <summary>
        /// Indica il valore del codice articolo corrispondente alla tipologia riportata nel campo CodiceTipo.
        /// </summary>
        [Core.DataProperty]
        public string CodiceValore { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/DatiBeniServizi.cs
================================================
using System.Collections.Generic;
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiBeniServizi
{

    /// <summary>
    /// Blocco sempre obbligatorio contenente natura, qualità e quantità dei beni / servizi formanti oggetto dell'operazione.
    /// </summary>
    public class DatiBeniServizi : BaseClassSerializable
    {
        /// <summary>
        /// Blocco sempre obbligatorio contenente natura, qualità e quantità dei beni / servizi formanti oggetto dell'operazione.
        /// </summary>
        public DatiBeniServizi()
        {
            DettaglioLinee = new();
            DatiRiepilogo = new();
        }
        public DatiBeniServizi(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Dati generali del documento principale.
        /// </summary>
        [Core.DataProperty]
        public List<DettaglioLinee> DettaglioLinee { get; set; }

        /// <summary>
        /// Blocco sempre obbligatorio contenente i dati di riepilogo per ogni aliquota IVA o natura.
        /// </summary>
        [Core.DataProperty]
        public List<DatiRiepilogo> DatiRiepilogo { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo.cs
================================================
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiBeniServizi
{
    /// <summary>
    /// Blocco sempre obbligatorio contenente i dati di riepilogo per ogni aliquota IVA o natura.
    /// </summary>
    public class DatiRiepilogo : BaseClassSerializable
    {
        public DatiRiepilogo() { }
        public DatiRiepilogo(XmlReader r) : base(r) { }

        /// <summary>
        /// Aliquota (%) IVA.
        /// </summary>
        [Core.DataProperty]
        public decimal AliquotaIVA { get; set; }

        /// <summary>
        /// Natura delle operazioni qualora non rientrino tra quelle imponibili.
        /// </summary>
        [Core.DataProperty]
        public string Natura { get; set; }

        /// <summary>
        /// Corrispettivi relativi alle cessioni accessorie (es. imballaggi etc.) qualora presenti.
        /// </summary>
        [Core.DataProperty]
        public decimal? SpeseAccessorie { get; set; }

        /// <summary>
        /// Arrotondamento sull'imponibili o sull'imposta.
        /// </summary>
        [Core.DataProperty]
        public decimal? Arrotondamento { get; set; }

        /// <summary>
        /// Questo valore rappresenta: base imponibile per le operazioni soggette ad IVA; importo, per le operazioni che non 
        /// rientrano tra quelle imponibili.
        /// </summary>
        [Core.DataProperty]
        public decimal ImponibileImporto { get; set; }

        /// <summary>
        /// Imposta risultante dall'applicazione dell'aliquota IVA all'imponibile.
        /// </summary>
        [Core.DataProperty]
        public decimal Imposta { get; set; }

        /// <summary>
        /// Eseigibilità IVA (immediata ai sensi Art. 6 comma 5 del DPR 633 1972, oppure differita).
        /// </summary>
        [Core.DataProperty]
        public string EsigibilitaIVA { get; set; }

        /// <summary>
        /// Norma di riferimento (obbligatoria nei casi in cui Natura è valorizzato).
        /// </summary>
        [Core.DataProperty]
        public string RiferimentoNormativo { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee.cs
================================================
using System;
using System.Collections.Generic;
using System.Xml;
using FatturaElettronica.Common;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiBeniServizi
{
    /// <summary>
    /// Linee di dettaglio del documento (i campi del blocco si ripetono per ogni riga di dettaglio).
    /// </summary>
    public class DettaglioLinee : BaseClassSerializable
    {
        /// <summary>
        /// Linee di dettaglio del documento (i campi del blocco si ripetono per ogni riga di dettaglio).
        /// </summary>
        public DettaglioLinee()
        {
            CodiceArticolo = new();
            ScontoMaggiorazione = new();
            AltriDatiGestionali = new();
        }

        public DettaglioLinee(XmlReader r) : base(r) { }

        /// <summary>
        /// Numero della riga di dettaglio del documento.
        /// </summary>
        [Core.DataProperty]
        public int NumeroLinea { get; set; }

        /// <summary>
        /// Da valorizzare nei soli casi di sconto, premio, abbuono, spesa accessoria.
        /// </summary>
        [Core.DataProperty]
        public string TipoCessionePrestazione { get; set; }

        /// <summary>
        /// Eventuale codifica dell'articolo (la molteplicità N del blocco consente di gestire la presenza di più codifiche).
        /// </summary>
        [Core.DataProperty]
        public List<CodiceArticolo> CodiceArticolo { get; set; }

        /// <summary>
        /// Natura e quantità dell'oggetto della cessione/prestazione; può fare anche riferimento ad un precedente documento emesso
        /// a titolo di anticipo/acconto, nel qual caso il valore del campo PrezzoUnitario e PrezzoTotale sarà negativo.
        /// </summary>
        [Core.DataProperty]
        public string Descrizione { get; set; }

        /// <summary>
        /// Numero di unità cedute / prestate.
        /// </summary>
        [Core.DataProperty]
        public decimal? Quantita { get; set; }

        /// <summary>
        /// Unità di misura riferita alla quantità.
        /// </summary>
        [Core.DataProperty]
        public string UnitaMisura { get; set; }

        /// <summary>
        /// Data iniziale del periodo di riferimento cui si riferisce l'eventuale servizio prestato.
        /// </summary>
        [Core.DataProperty]
        public DateTime? DataInizioPeriodo { get; set; }

        /// <summary>
        /// Data finale del periodo di riferimento cui si riferisce l'eventuale servizio prestato.
        /// </summary>
        [Core.DataProperty]
        public DateTime? DataFinePeriodo { get; set; }

        /// <summary>
        /// Prezzo unitario del bene/servizio; nel caso di beni ceduti a titolo di sconto, premio o abbuono, l'importo indicato rappresenta il "valore normale".
        /// </summary>
        [Core.DataProperty]
        public decimal PrezzoUnitario { get; set; }

        /// <summary>
        /// Eventuale sconto o maggiorazione applicati (la molteciplità N del blocco consente di gestire la presenza di più sconti o 
        /// maggiorazioni a "cascata").
        /// </summary>
        [Core.DataProperty]
        public List<ScontoMaggiorazione> ScontoMaggiorazione { get; set; }

        /// <summary>
        /// Importo totale del bene/servizio (che tiene conto di eventuali sconti/maggiorazioni) IVA esclusa.
        /// </summary>
        [Core.DataProperty]
        public decimal PrezzoTotale { get; set; }

        /// <summary>
        /// Aliquota (%) IVA applicata al bene/servizio.
        /// </summary>
        [Core.DataProperty]
        public decimal AliquotaIVA { get; set; }

        /// <summary>
        /// Da valorizzare solo in caso di cessione/prestazione soggetta a ritenuta di acconto.
        /// </summary>
        [Core.DataProperty]
        public string Ritenuta { get; set; }

        /// <summary>
        /// Natura dell'operazione se non rientra tra quelle imponibili (il campo Aliquota IVA deve essere valorizzato a zero).
        /// </summary>
        [Core.DataProperty]
        public string Natura { get; set; }

        /// <summary>
        /// Codice identificativo ai fini amministrativo-contabili.
        /// </summary>
        [Core.DataProperty]
        public string RiferimentoAmministrazione { get; set; }

        /// <summary>
        /// Blocco che consente di inserire, con riferimento ad una linea di dettaglio, diverse tipologie di informazioni utili ai 
        /// fini amministrativi, gestionali, etc.
        /// </summary>
        [Core.DataProperty]
        public List<AltriDatiGestionali> AltriDatiGestionali { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiAnagraficiVettore.cs
================================================
using System.Xml;
using FatturaElettronica.Common;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    public class DatiAnagraficiVettore : DatiAnagrafici
    {
        public DatiAnagraficiVettore() { }
        public DatiAnagraficiVettore(XmlReader r) : base(r) { }

        /// <summary>
        /// Numero identificativo della licenza di guida (es. numero patente).
        /// </summary>
        [Core.DataProperty]
        public string NumeroLicenzaGuida { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiBollo.cs
================================================
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Dati relativi al bollo.
    /// </summary>
    public class DatiBollo : BaseClassSerializable
    {
        public DatiBollo() { }
        public DatiBollo(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Bollo virtuale.
        /// </summary>
        [Core.DataProperty]
        public string BolloVirtuale { get; set; }
        

        /// <summary>
        /// Importo del bollo.
        /// </summary>
        [Core.DataProperty]
        public decimal? ImportoBollo { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiCassaPrevidenziale.cs
================================================
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Dati relativi alla cassa previdenziale di appartenenza.
    /// </summary>
    public class DatiCassaPrevidenziale : BaseClassSerializable
    {
        public DatiCassaPrevidenziale() { }
        public DatiCassaPrevidenziale(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.
        
        /// <summary>
        /// Tipologia della cassa previdenziale di appartenenza.
        /// </summary>
        [Core.DataProperty]
        public string TipoCassa { get; set; }

        /// <summary>
        /// Aliquota (%) del contributo, se previsto, per la cassa di appartenenza.
        /// </summary>
        [Core.DataProperty]
        public decimal AlCassa { get; set; }

        /// <summary>
        /// Importo del contributo per la cassa di appartenenza.
        /// </summary>
        [Core.DataProperty]
        public decimal ImportoContributoCassa { get; set; }

        /// <summary>
        /// Importo sul quale applicare il contributo cassa previdenziale.
        /// </summary>
        [Core.DataProperty]
        public decimal ImponibileCassa { get; set; }

        /// <summary>
        /// Aliquota (%) IVA applicata.
        /// </summary>
        [Core.DataProperty]
        public decimal AliquotaIVA { get; set; }

        /// <summary>
        /// Indica se il contributo cassa è soggetto a ritenuta.
        /// </summary>
        [Core.DataProperty]
        public string Ritenuta { get; set; }

        /// <summary>
        /// Nei casi di Aliquota IVA pari a zero.
        /// </summary>
        [Core.DataProperty]
        public string Natura { get; set; }

        /// <summary>
        /// Codice identificativo ai fini amministrativo-contabili.
        /// </summary>
        [Core.DataProperty]
        public string RiferimentoAmministrazione { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiContratto.cs
================================================
using System.Xml;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Informazioni relative al contratto.
    /// </summary>
    public class DatiContratto : Common.DatiDocumento
    {
        public DatiContratto() { }
        public DatiContratto(XmlReader r) : base(r) { }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiConvenzione.cs
================================================
using System.Xml;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Informazioni relative alla convenzione.
    /// </summary>
    public class DatiConvenzione : Common.DatiDocumento
    {

        public DatiConvenzione() { }
        public DatiConvenzione(XmlReader r) : base(r) { }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiDDT.cs
================================================
using System;
using System.Collections.Generic;
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Nei casi di fattura differita per indicare il documento con cui è stato consegnato il bene.
    /// </summary>
    // ReSharper disable once InconsistentNaming
    public class DatiDDT : BaseClassSerializable
    {
        /// <summary>
        /// Nei casi di fattura differita per indicare il documento con cui è stato consegnato il bene.
        /// </summary>
        public DatiDDT()
        {
            RiferimentoNumeroLinea = new();
        }


        public DatiDDT(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Numero del documento di trasporto.
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public string NumeroDDT { get; set; }

        /// <summary>
        /// Data del documento di trasporto.
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public DateTime DataDDT { get; set; }

        /// <summary>
        /// Linea di dettaglio della fattura cui si riferisce il DDT (non viene valorizzato se il riferimento è all'intera fattura).
        /// </summary>
        [Core.DataProperty]
        public List<int> RiferimentoNumeroLinea { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiFattureCollegate.cs
================================================
using System.Xml;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Informazioni relative alle fatture precedentemente trasmesse e alle quali si collega il documento presente.
    /// </summary>
    /// <remarks>Riguarda i casi di invio di nota di credito e/o fatture di conguaglio a fronte di precedenti fatture di acconto.</remarks>
    public class DatiFattureCollegate : Common.DatiDocumento
    {
        public DatiFattureCollegate() { }
        public DatiFattureCollegate(XmlReader r) : base(r) { }

    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiGenerali.cs
================================================
using System.Collections.Generic;
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Dati generali del documento principale e dati dei documenti correlati.
    /// </summary>
    public class DatiGenerali : BaseClassSerializable
    {
        /// <summary>
        /// Dati generali del documento principale e dati dei documenti correlati.
        /// </summary>
        public DatiGenerali()
        {
            DatiGeneraliDocumento = new();
            DatiOrdineAcquisto = new();
            DatiContratto = new();
            DatiConvenzione = new();
            DatiRicezione = new();
            DatiFattureCollegate = new();
            DatiSAL = new();
            DatiDDT = new();
            DatiTrasporto = new();
            FatturaPrincipale = new();
        }
        public DatiGenerali(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Dati generali del documento principale.
        /// </summary>
        [Core.DataProperty]
        public DatiGeneraliDocumento DatiGeneraliDocumento { get; set; }

        /// <summary>
        /// Informazioni relative agli ordini di acquisto.
        /// </summary>
        [Core.DataProperty]
        public List<DatiOrdineAcquisto> DatiOrdineAcquisto { get; set; }

        /// <summary>
        /// Informazioni relative ai contratti.
        /// </summary>
        [Core.DataProperty]
        public List<DatiContratto> DatiContratto { get; set; }

        /// <summary>
        /// Informazioni relative alle convenzioni.
        /// </summary>
        [Core.DataProperty]
        public List<DatiConvenzione> DatiConvenzione { get; set; }

        /// <summary>
        /// Informazioni relative ai dati presenti sul sistema gestionale in uso presso la PA (Agenzie Fiscali) riguardanti la fase di ricezione.
        /// </summary>
        [Core.DataProperty]
        public List<DatiRicezione> DatiRicezione { get; set; }

        /// <summary>
        /// Informazioni relative alle fatture precedentemente trasmesse e alle quali si collega il documento presente.
        /// Riguarda i casi di invio di nota di credito e/o di fatture di conguaglio a fronte di precedenti fatture di accounto.
        /// </summary>
        [Core.DataProperty]
        public List<DatiFattureCollegate> DatiFattureCollegate { get; set; }

        /// <summary>
        /// Blocco da valorizzare nei casi di fattura per stato di avanzamento.
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public List<DatiSAL> DatiSAL { get; set; }

        /// <summary>
        /// Da valorizzarei nei casi di fattura differita per indicare il documento con cui è stato consegnato il bene.
        /// I campi del blocco possono essere ripetuti se la fattura fa riferimento a più consegne e quindi a più documenti di trasporto.
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public List<DatiDDT> DatiDDT { get; set; }

        /// <summary>
        /// Blocco da valorizzare nei casi di fattura accompagnatoria per inserire informazioni relative al trasporto.
        /// </summary>
        [Core.DataProperty]
        public DatiTrasporto DatiTrasporto { get; set; }

        /// <summary>
        /// Da valorizzare nei casi di fatture per operazioni accessorie, emesse dagli autotrasportatori per usufruire delle
        /// agevolazioni in materia di registrazioni e pagamento dell'IVA.
        /// </summary>
        [Core.DataProperty]
        public FatturaPrincipale FatturaPrincipale { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento.cs
================================================
using System;
using System.Collections.Generic;
using System.Xml;
using FatturaElettronica.Common;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Dati generali del documento principale ed i dati dei documenti correlati.
    /// </summary>
    public class DatiGeneraliDocumento : BaseClassSerializable
    {
        /// <summary>
        /// Dati generali del documento principale ed i dati dei documenti correlati.
        /// </summary>
        public DatiGeneraliDocumento()
        {
            DatiRitenuta = new();
            DatiBollo = new();
            DatiCassaPrevidenziale = new();
            ScontoMaggiorazione = new();
            Causale = new();
        }
        public DatiGeneraliDocumento(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Dati generali del documento principale.
        /// </summary>
        [Core.DataProperty]
        public string TipoDocumento { get; set; }

        /// <summary>
        /// Codice espresso secondo lo standard ISO 4217 alpha-3:2001 della valuta utilizzata per l'indicazione degli importi.
        /// </summary>
        [Core.DataProperty]
        public string Divisa { get; set; }

        /// <summary>
        /// Data del documento.
        /// </summary>
        [Core.DataProperty]
        public DateTime Data { get; set; }

        /// <summary>
        /// Numero progressivo del documento.
        /// </summary>
        [Core.DataProperty]
        public string Numero { get; set; }

        /// <summary>
        /// Dati della ritenuta.
        /// </summary>
        [Core.DataProperty]
        public List<DatiRitenuta> DatiRitenuta { get; set; }

        /// <summary>
        /// Dati del bollo.
        /// </summary>
        [Core.DataProperty]
        public DatiBollo DatiBollo { get; set; }

        /// <summary>
        /// Blocco dati relativi alla cassa previdenziale di appartenenenza.
        /// </summary>
        [Core.DataProperty]
        public List<DatiCassaPrevidenziale> DatiCassaPrevidenziale { get; set; }

        /// <summary>
        /// Eventuali sconti o maggiorazioni applicati sul totale documento.
        /// </summary>
        [Core.DataProperty]
        public List<ScontoMaggiorazione> ScontoMaggiorazione { get; set; }

        /// <summary>
        /// Importo totale del documento al netto dell'eventuale sconto e comprensivo di imposta a debito del cessionario /committente.
        /// </summary>
        [Core.DataProperty]
        public decimal? ImportoTotaleDocumento { get; set; }

        /// <summary>
        /// Eventuale arrotondamento sul totale documento (ammette anche il segno negativo).
        /// </summary>
        [Core.DataProperty]
        public decimal? Arrotondamento { get; set; }

        /// <summary>
        /// Descrizione della causale del documento.
        /// </summary>
        [Core.DataProperty]
        public List<string> Causale { get; set; }

        /// <summary>
        /// Indica se il documento è stato emesso secondo modalità e termini stabiliti con decreto ministeriale ai sensi art. 73
        /// DPR 633/72 (ciò consente al cedente/prestatore l'emissione nello stesso anno di più documenti aventi lo stesso numero).
        /// </summary>
        [Core.DataProperty]
        public string Art73 { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiOrdineAcquisto.cs
================================================
using System.Xml;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Informazioni relative all'ordine di acquisto.
    /// </summary>
    public class DatiOrdineAcquisto : Common.DatiDocumento
    {
        public DatiOrdineAcquisto() { }
        public DatiOrdineAcquisto(XmlReader r) : base(r) { }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiRicezione.cs
================================================
using System.Xml;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Informazioni relative ai dati presenti sul sistema gestionale in uso presso la PA (Agenzie Fiscali) riguardanti la fase di ricezione.
    /// </summary>
    public class DatiRicezione : Common.DatiDocumento
    {
        public DatiRicezione() { }
        public DatiRicezione(XmlReader r) : base(r) { }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiRitenuta.cs
================================================
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Dati relativi alla ritenuta.
    /// </summary>
    public class DatiRitenuta : BaseClassSerializable
    {
        public DatiRitenuta() { }
        public DatiRitenuta(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Tipologia della ritenuta.
        /// </summary>
        [Core.DataProperty]
        public string TipoRitenuta { get; set; }
        
        /// <summary>
        /// Importo dellla ritenuta.
        /// </summary>
        [Core.DataProperty]
        public decimal ImportoRitenuta { get; set; }
        
        /// <summary>
        /// Aliquota (%) della ritenuta.
        /// </summary>
        [Core.DataProperty]
        public decimal AliquotaRitenuta { get; set; }
        
        /// <summary>
        /// Causale del pagamento (quella del modello 770).
        /// </summary>
        [Core.DataProperty]
        public string CausalePagamento { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiSAL.cs
================================================
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Da valorizzare nei casi di fattura per stato di avanzamento.
    /// </summary>
    // ReSharper disable once InconsistentNaming
    public class DatiSAL : BaseClassSerializable
    {
        public DatiSAL() { }
        public DatiSAL(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.
        
        /// <summary>
        /// Fase dello stato di avanzamento cui il documento si riferisce.
        /// </summary>
        [Core.DataProperty]
        public int RiferimentoFase { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiTrasporto.cs
================================================
using System;
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Da valorizzare nel caso di fattura accompagnatoria per inserire informazioni relative al trasporto.
    /// </summary>
    public class DatiTrasporto : BaseClassSerializable
    {
        /// <summary>
        /// Da valorizzare nel caso di fattura accompagnatoria per inserire informazioni relative al trasporto.
        /// </summary>
        public DatiTrasporto()
        {
            DatiAnagraficiVettore = new();
            IndirizzoResa = new();
        }
        public DatiTrasporto(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Dati fiscali e anagrafici del vettore.
        /// </summary>
        [Core.DataProperty]
        public DatiAnagraficiVettore DatiAnagraficiVettore { get; set; }

        /// <summary>
        /// Mezzo utilizzato per il trasporto.
        /// </summary>
        [Core.DataProperty]
        public string MezzoTrasporto { get; set; }

        /// <summary>
        /// Causale del trasporto.
        /// </summary>
        [Core.DataProperty]
        public string CausaleTrasporto { get; set; }

        /// <summary>
        /// Numero dei colli trasportati.
        /// </summary>
        [Core.DataProperty]
        public int? NumeroColli { get; set; }

        /// <summary>
        /// Descrizione (natura, qualità, aspetto...) relativa ai colli trasportati.
        /// </summary>
        [Core.DataProperty]
        public string Descrizione { get; set; }

        /// <summary>
        /// Unità di misura riferita al peso della merce.
        /// </summary>
        [Core.DataProperty]
        public string UnitaMisuraPeso { get; set; }

        /// <summary>
        /// Peso lordo della merce.
        /// </summary>
        [Core.DataProperty]
        public decimal? PesoLordo { get; set; }

        /// <summary>
        /// Peso netto della merce.
        /// </summary>
        [Core.DataProperty]
        public decimal? PesoNetto { get; set; }

        /// <summary>
        /// Data e ora del ritiro della merce.
        /// </summary>
        [Core.DataProperty]
        [Core.IgnoreXmlDateFormat]
        public DateTime? DataOraRitiro { get; set; }

        /// <summary>
        /// Data e ora del trasporto.
        /// </summary>
        [Core.DataProperty]
        public DateTime? DataInizioTrasporto { get; set; }

        /// <summary>
        /// Codifica del termine di resa espresso secondo lo standard ICC-Camera di Commercio Internazionale (Incoterms).
        /// </summary>
        [Core.DataProperty]
        public string TipoResa { get; set; }


        /// <summary>
        /// Indirizzo di resa.
        /// </summary>
        [Core.DataProperty]
        public IndirizzoResa IndirizzoResa { get; set; }

        /// <summary>
        /// Data e ora della consegna della merce.
        /// </summary>
        [Core.DataProperty]
        [Core.IgnoreXmlDateFormat]
        public DateTime? DataOraConsegna { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/FatturaPrincipale.cs
================================================
using System;
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    /// <summary>
    /// Da valorizzare nei casi di fatture per operazione accessorie, emesse dagli autotraportatori per usufruire delle
    /// agevolazioni in mteria di registrazione e pagamento IVA.
    /// </summary>
    public class FatturaPrincipale : BaseClassSerializable
    {
        public FatturaPrincipale() { }
        public FatturaPrincipale(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.
        
        /// <summary>
        /// Numero della fattura relativa al trasporto di beni, da indicare sulle fatture emesse dagli autotrasportatori per
        /// certificare le operazioni accessorie.
        /// </summary>
        [Core.DataProperty]
        public string NumeroFatturaPrincipale { get; set; }
        

        /// <summary>
        /// Data della fattura relativa al trasporto di beni.
        /// </summary>
        [Core.DataProperty]
        public DateTime? DataFatturaPrincipale { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/IndirizzoResa.cs
================================================
using System.Xml;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali
{
    public class IndirizzoResa : Common.Località
    {
        public IndirizzoResa() { } 
        public IndirizzoResa(XmlReader r) : base(r) { } 
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiPagamento/DatiPagamento.cs
================================================
using System.Collections.Generic;
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiPagamento
{
    /// <summary>
    /// Dati relativi al pagamento.
    /// </summary>
    public class DatiPagamento : BaseClassSerializable
    {
        /// <summary>
        /// Dati relativi al pagamento.
        /// </summary>
        public DatiPagamento()
        {
            DettaglioPagamento = new();
        }

        public DatiPagamento(XmlReader r) : base(r) { }

        /// <summary>
        /// Condizioni di pagamento.
        /// </summary>
        [Core.DataProperty]
        public string CondizioniPagamento { get; set; }

        /// <summary>
        /// Dati di dettaglio del pagamento.
        /// </summary>
        [Core.DataProperty]
        public List<DettaglioPagamento> DettaglioPagamento { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiPagamento/DettaglioPagamento.cs
================================================
using System;
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiPagamento
{
    /// <summary>
    /// Dati di dettaglio del pagamento.
    /// </summary>
    public class DettaglioPagamento : BaseClassSerializable
    {
        public DettaglioPagamento() { }
        public DettaglioPagamento(XmlReader r) : base(r) { }

        /// <summary>
        /// Beneficiario del pagamento (utilizzabile se si intende indicare un beneficiario diverso dal cedente/prestatore).
        /// </summary>
        [Core.DataProperty]
        public string Beneficiario { get; set; }

        /// <summary>
        /// Modalità di pagamento.
        /// </summary>
        [Core.DataProperty]
        public string ModalitaPagamento { get; set; }

        /// <summary>
        /// Data dalla quale decorrono i termini di pagamento.
        /// </summary>
        [Core.DataProperty]
        public DateTime? DataRiferimentoTerminiPagamento { get; set; }

        /// <summary>
        /// Termini di pagamento espressi in giorni a partire dalla data di riferimento di cui al campo DataRiferimentoTerminiPagamento.
        /// Vale 0 per i gamenti a vista.
        /// </summary>
        [Core.DataProperty]
        public int? GiorniTerminiPagamento { get; set; }

        /// <summary>
        /// Data di scadenza del pagamento da indicare nei casi in cui ha senso sulla base delle condizioni di pagamento
        /// previste.
        /// </summary>
        [Core.DataProperty]
        public DateTime? DataScadenzaPagamento { get; set; }

        /// <summary>
        /// Importo relativo al pagamento.
        /// </summary>
        [Core.DataProperty]
        public decimal ImportoPagamento { get; set; }

        /// <summary>
        /// Nei casi di modalità di pagamento in cui ha senso l'indicazione dellìufficio postale.
        /// </summary>
        [Core.DataProperty]
        public string CodUfficioPostale { get; set; }

        /// <summary>
        /// Cognome del quietanziante (nel caso di campo ModalitaPagamento = MP04).
        /// </summary>
        [Core.DataProperty]
        public string CognomeQuietanzante { get; set; }

        /// <summary>
        /// Nome del quietanziante (nel caso di campo ModalitaPagamento = MP04).
        /// </summary>
        [Core.DataProperty]
        public string NomeQuietanzante { get; set; }

        /// <summary>
        /// Codice fiscale del quietanziante (nel caso di campo ModalitaPagamento = MP04).
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public string CFQuietanzante { get; set; }

        /// <summary>
        /// Titolo del quietanziante (nel caso di campo ModalitaPagamento = MP04).
        /// </summary>
        [Core.DataProperty]
        public string TitoloQuietanzante { get; set; }

        /// <summary>
        /// Nome dell'istituto finanziario.
        /// </summary>
        [Core.DataProperty]
        public string IstitutoFinanziario { get; set; }

        /// <summary>
        /// International Bank Account Number (coordinata bancaria internazionale che consente di identificare, in maniera standard,
        /// il conto corrente del beneficiario).
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public string IBAN { get; set; }

        /// <summary>
        /// Codice ABI.
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public string ABI { get; set; }

        /// <summary>
        /// Codice CAB.
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public string CAB { get; set; }

        /// <summary>
        /// Bank Identifier Code (codice che identifica la banca del destinatario).
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public string BIC { get; set; }

        /// <summary>
        /// Ammontare dello sconto per pagamento anticipato.
        /// </summary>
        [Core.DataProperty]
        public decimal? ScontoPagamentoAnticipato { get; set; }

        /// <summary>
        /// Data limite stabilita per il pagamento anticipato.
        /// </summary>
        [Core.DataProperty]
        public DateTime? DataLimitePagamentoAnticipato { get; set; }

        /// <summary>
        /// Ammontare della penalità dovuta per pagamenti ritardati.
        /// </summary>
        [Core.DataProperty]
        public decimal? PenalitaPagamentiRitardati { get; set; }

        /// <summary>
        /// Data di decorrenza della penale.
        /// </summary>
        [Core.DataProperty]
        public DateTime? DataDecorrenzaPenale { get; set; }

        /// <summary>
        /// Codice per la riconciliazione degli incassi da parte del cedente/prestatore.
        /// </summary>
        [Core.DataProperty]
        public string CodicePagamento { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/DatiVeicoli/DatiVeicoli.cs
================================================
using System;
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiVeicoli
{
    /// <summary>
    /// Dati relativi ai veicoli di cui all'art. 38 comma 4 del ddl 331 del 1993.
    /// </summary>
    public class DatiVeicoli : BaseClassSerializable
    {
        public DatiVeicoli() { }
        public DatiVeicoli(XmlReader r) : base(r) { }

        /// <summary>
        /// Data di prima immatricolazione o iscrizione nei pubblici registri.
        /// </summary>
        [Core.DataProperty]
        public DateTime? Data { get; set; }

        /// <summary>
        /// Totale chilometri percorsi, oppure totale ora navigate o volate.
        /// </summary>
        [Core.DataProperty]
        public string TotalePercorso { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaBody/FatturaElettronicaBody.cs
================================================
using System.Collections.Generic;
using System.Xml;
using FatturaElettronica.Common;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaBody
{
    public class FatturaElettronicaBody : BaseClassSerializable
    {
        /// <summary>
        /// FatturaOrdinaria inclusa nella conunicazione.
        /// </summary>
        public FatturaElettronicaBody()
        {
            DatiGenerali = new();
            DatiBeniServizi = new();
            DatiVeicoli = new();
            DatiPagamento = new();
            Allegati = new();
        }
        public FatturaElettronicaBody(XmlReader r) : base(r) { }

        /// <summary>
        /// Dati generali del documento principale.
        /// </summary>
        [Core.DataProperty]
        public DatiGenerali.DatiGenerali DatiGenerali { get; set; }

        /// <summary>
        /// Blocco sempre obbligatorio contenente natura qualità e quantità dei beni/servizi oggetto dell'operazione.
        /// </summary>
        [Core.DataProperty]
        public DatiBeniServizi.DatiBeniServizi DatiBeniServizi { get; set; }

        /// <summary>
        /// Dati relativi ai veicoli di cui all'art. 38 del dl 331 del 1993.
        /// </summary>
        [Core.DataProperty]
        public DatiVeicoli.DatiVeicoli DatiVeicoli { get; set; }

        /// <summary>
        /// Dati relativi al pagamento.
        /// </summary>
        [Core.DataProperty]
        public List<DatiPagamento.DatiPagamento> DatiPagamento { get; set; }

        /// <summary>
        /// Dati relativi ad eventuali allegati.
        /// </summary>
        [Core.DataProperty]
        public List<Allegati> Allegati { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/CedentePrestatore.cs
================================================
using System.Xml;
using FatturaElettronica.Common;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CedentePrestatore
{
    /// <summary>
    /// Dati relativi al cedente / prestatore.
    /// </summary>
    public class CedentePrestatore : BaseClassSerializable
    {
        /// <summary>
        /// Dati relativi al cedente / prestatore.
        /// </summary>
        public CedentePrestatore()
        {
            DatiAnagrafici = new();
            Sede = new();
            StabileOrganizzazione = new();
            IscrizioneREA = new();
            Contatti = new();
        }
        public CedentePrestatore(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Dati anagrafici, professionali e fiscali del cedente / prestatore.
        /// </summary>
        [Core.DataProperty]
        public DatiAnagraficiCedentePrestatore DatiAnagrafici { get; set; }

        /// <summary>
        /// Dati della sede del cedente / prestatore.
        /// </summary>
        [Core.DataProperty]
        public SedeCedentePrestatore Sede { get; set; }

        /// <summary>
        /// Nei casi di cedente / prestatore non residente.
        /// </summary>
        [Core.DataProperty]
        public StabileOrganizzazione StabileOrganizzazione { get; set; }

        /// <summary>
        /// Nei casi di società iscritte nel registro delle imprese ai sensi dell'art. 2250 del codice civile.
        /// </summary>
        [Core.DataProperty]
        public IscrizioneREA IscrizioneREA { get; set; }

        /// <summary>
        /// Contatti del cedente / prestatore.
        /// </summary>
        [Core.DataProperty]
        public Contatti Contatti { get; set; }

        /// <summary>
        /// Codice identificativo del cedente / prestatore a fini amministrativi-contabili.
        /// </summary>
        [Core.DataProperty]
        public string RiferimentoAmministrazione { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/Contatti.cs
================================================
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CedentePrestatore
{
    /// <summary>
    /// Represents a Contatti object
    /// </summary>
    public class Contatti : BaseClassSerializable
    {
        public Contatti() { } 
        public Contatti(XmlReader r) : base(r) { } 

        //public override string XmlName { get { return "Contatti"; } }

        /// <summary>
        /// Contatto telefonico fisso o mobile.
        /// </summary>
        [Core.DataProperty]
        public string Telefono { get; set; }

        /// <summary>
        /// Numero di fax.
        /// </summary>
        [Core.DataProperty]
        public string Fax { get; set; }

        /// <summary>
        /// Indirizzo di posta elettronica.
        /// </summary>
        [Core.DataProperty]
        public string Email { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/DatiAnagraficiCedentePrestatore.cs
================================================
using System;
using System.Xml;
using FatturaElettronica.Common;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CedentePrestatore
{
    public class DatiAnagraficiCedentePrestatore : DatiAnagrafici
    {
        /// <summary>
        /// Dati anagrafici, professionali e fiscali del cedente / prestatore.
        /// </summary>
        public DatiAnagraficiCedentePrestatore() { }
        public DatiAnagraficiCedentePrestatore(XmlReader r) : base(r) { }

        /// <summary>
        /// Nome dell'albo professionale.
        /// </summary>
        [Core.DataProperty (order:10)]
        public string AlboProfessionale { get; set; }

        /// <summary>
        /// Sigla della provincia di competenza dell'albo professionale.
        /// </summary>
        [Core.DataProperty (order:11)]
        public string ProvinciaAlbo { get; set; }

        /// <summary>
        /// Numero di iscrizione all'albo professionale.
        /// </summary>
        [Core.DataProperty (order:12)]
        public string NumeroIscrizioneAlbo { get; set; }

        /// <summary>
        /// Data di iscrizione all'albo professionale. 
        /// </summary>
        [Core.DataProperty (order:13)]
        public DateTime? DataIscrizioneAlbo { get; set; }

        /// <summary>
        /// Regime fiscale.
        /// </summary>
        [Core.DataProperty (order:14)]
        public string RegimeFiscale { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/IscrizioneRea.cs
================================================
using System.Xml;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CedentePrestatore
{
    /// <summary>
    /// Represents a DatiAnagrafici object
    /// </summary>
    public class IscrizioneREA : BaseClassSerializable
    {
        public IscrizioneREA() { } 
        public IscrizioneREA(XmlReader r) : base(r) { } 

        /// <summary>
        /// Sigla della provincia dell'Ufficio del registro delle imprese presso il quale è registata la società.
        /// </summary>
        [Core.DataProperty]
        public string Ufficio { get; set; }

        /// <summary>
        /// Numero di iscrizione al registro delle imprese.
        /// </summary>
        [Core.DataProperty]
        // ReSharper disable once InconsistentNaming
        public string NumeroREA { get; set; }

        /// <summary>
        /// Nei soli casi di società di capitali (Spa, SApA, SRL), il campo va valorizzato per indicare il capitale sociale.
        /// </summary>
        [Core.DataProperty]
        public decimal? CapitaleSociale { get; set; }

        /// <summary>
        /// Nei soli casi di SRL, il campo va valorizzato per indicare se vi è un socio unico oppure se vi sono più soci.
        /// </summary>
        [Core.DataProperty]
        public string SocioUnico { get; set; }

        /// <summary>
        /// Indica se la Società si trova in stato di liquidazione oppure no.
        /// </summary>
        [Core.DataProperty]
        public string StatoLiquidazione { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/SedeCedentePrestatore.cs
================================================
using System.Xml;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CedentePrestatore
{
    public class SedeCedentePrestatore : Common.Località
    {
        public SedeCedentePrestatore() { } 
        public SedeCedentePrestatore(XmlReader r) : base(r) { } 
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/CessionarioCommittente.cs
================================================
using System.Xml;
using FatturaElettronica.Common;
using BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CessionarioCommittente
{

    /// <summary>
    /// Dati relativi al cessionario/ committente.
    /// </summary>
    public class CessionarioCommittente : BaseClassSerializable
    {
        /// <summary>
        /// Dati relativi al cessionario / committente.
        /// </summary>
        public CessionarioCommittente()
        {
            DatiAnagrafici = new();
            Sede = new();
            StabileOrganizzazione = new();
            RappresentanteFiscale = new();
        }
        public CessionarioCommittente(XmlReader r) : base(r) { }

        /// IMPORTANT
        /// Each data property must be flagged with the Order attribute or it will be ignored.
        /// Also, properties must be listed with the precise order in the specification.

        /// <summary>
        /// Dati anagrafici, professionali e fiscali del cessionario / committente.
        /// </summary>
        [Core.DataProperty]
        public DatiAnagraficiCessionarioCommittente DatiAnagrafici { get; set; }

        /// <summary>
        /// Dati della sede del cessionario / committente.
        /// </summary>
        [Core.DataProperty]
        public SedeCessionarioCommittente Sede { get; set; }

        /// <summary>
        /// Blocco da valorizzare se e solo se l'elemento informativo 1.1.3 FormatoTrasmissione = "FPR12" (fattura tra privati), nel caso di cessionario/committente non residente e con stabile organizzazione in Italia.
        /// </summary>
        [Core.DataProperty]
        public StabileOrganizzazione StabileOrganizzazione { get; set; }

        /// <summary>
        /// Blocco da valorizzare se e solo se l'elemento informativo 1.1.3 FormatoTrasmissione = "FPR12" (fattura tra privati), nel caso di cessionario/committente che si avvale di rappresentante fiscale in Italia.
        /// </summary>
        [Core.DataProperty]
        public RappresentanteFiscaleCessionarioCommittente RappresentanteFiscale { get; set; }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/DatiAnagraficiCessionarioCommittente.cs
================================================
using System.Xml;
using FatturaElettronica.Common;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CessionarioCommittente
{
    public class DatiAnagraficiCessionarioCommittente : DatiAnagrafici
    {
        /// <summary>
        /// Dati anagrafici, professionali e fiscali del cessionario / committente.
        /// </summary>
        public DatiAnagraficiCessionarioCommittente() { }
        public DatiAnagraficiCessionarioCommittente(XmlReader r) : base(r) { }
    }
}


================================================
FILE: Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/RappresentanteFiscaleCessionarioCommittente.cs
================================================
using System.Xml;
using FatturaElettronica.Common;

namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CessionarioCommittente
{
    /// <summary>
    /// Represents a CessionarioCommittente.RappresentanteFiscale object.
    /// </summary>
    public class RappresentanteFiscaleCessionarioCommittente : DenominazioneNomeCognome
    {
        public RappresentanteFiscaleCessionarioCommittente()
        {

            IdFiscaleIVA = new();
        }
        public RappresentanteFiscaleCessionarioCommittente(XmlReader r) : base(r) { }

        /// <summary>
        /// Numero di identificazione fiscale ai fini IVA; i primi due caratteri rappresentano il paese ed i restanti il codice
        /// v
Download .txt
gitextract_e56b_87i/

├── .editorconfig
├── .github/
│   └── workflows/
│       ├── publish.yml
│       └── test.yml
├── .gitignore
├── AUTHORS.md
├── CHANGES.md
├── CNAME
├── Common/
│   ├── Allegati.cs
│   ├── Anagrafica.cs
│   ├── DatiAnagrafici.cs
│   ├── DatiDocumento.cs
│   ├── DenominazioneNomeCognome.cs
│   ├── IdFiscaleIva.cs
│   ├── Località.cs
│   ├── RappresentanteFiscale.cs
│   ├── ScontoMaggiorazione.cs
│   └── StabileOrganizzazione.cs
├── Core/
│   ├── BaseClass.cs
│   ├── BaseClassSerializable.cs
│   ├── DataPropertyAttribute.cs
│   ├── IgnoreXmlDateFormat.cs
│   ├── JsonOptions.cs
│   ├── JsonParseException.cs
│   ├── TypeExtensions.cs
│   └── XmlOptions.cs
├── Defaults.cs
├── Extensions/
│   ├── DecimalRuleExtensions.cs
│   ├── FatturaElettronicaExtensions.cs
│   ├── FatturaElettronicaFileNameGenerator/
│   │   ├── FatturaElettronicaFileNameExtensionType.cs
│   │   └── FatturaElettronicaFileNameGenerator.cs
│   ├── HtmlExtensions.cs
│   ├── JsonExtensions.cs
│   ├── Resources/
│   │   ├── ErrorMessages.Designer.cs
│   │   ├── ErrorMessages.en.resx
│   │   └── ErrorMessages.resx
│   ├── SignatureException.cs
│   ├── SignedFileExtensions.cs
│   ├── StreamExtensions.cs
│   └── XmlExtensions.cs
├── FUNDING.yml
├── FatturaBase.cs
├── FatturaElettronica.csproj
├── FatturaElettronica.csproj.DotSettings
├── FatturaElettronica.sln
├── FatturaElettronica.sln.DotSettings
├── LICENSE.txt
├── Ordinaria/
│   ├── FatturaElettronicaBody/
│   │   ├── DatiBeniServizi/
│   │   │   ├── AltriDatiGestionali.cs
│   │   │   ├── CodiceArticolo.cs
│   │   │   ├── DatiBeniServizi.cs
│   │   │   ├── DatiRiepilogo.cs
│   │   │   └── DettaglioLinee.cs
│   │   ├── DatiGenerali/
│   │   │   ├── DatiAnagraficiVettore.cs
│   │   │   ├── DatiBollo.cs
│   │   │   ├── DatiCassaPrevidenziale.cs
│   │   │   ├── DatiContratto.cs
│   │   │   ├── DatiConvenzione.cs
│   │   │   ├── DatiDDT.cs
│   │   │   ├── DatiFattureCollegate.cs
│   │   │   ├── DatiGenerali.cs
│   │   │   ├── DatiGeneraliDocumento.cs
│   │   │   ├── DatiOrdineAcquisto.cs
│   │   │   ├── DatiRicezione.cs
│   │   │   ├── DatiRitenuta.cs
│   │   │   ├── DatiSAL.cs
│   │   │   ├── DatiTrasporto.cs
│   │   │   ├── FatturaPrincipale.cs
│   │   │   └── IndirizzoResa.cs
│   │   ├── DatiPagamento/
│   │   │   ├── DatiPagamento.cs
│   │   │   └── DettaglioPagamento.cs
│   │   ├── DatiVeicoli/
│   │   │   └── DatiVeicoli.cs
│   │   └── FatturaElettronicaBody.cs
│   ├── FatturaElettronicaHeader/
│   │   ├── CedentePrestatore/
│   │   │   ├── CedentePrestatore.cs
│   │   │   ├── Contatti.cs
│   │   │   ├── DatiAnagraficiCedentePrestatore.cs
│   │   │   ├── IscrizioneRea.cs
│   │   │   └── SedeCedentePrestatore.cs
│   │   ├── CessionarioCommittente/
│   │   │   ├── CessionarioCommittente.cs
│   │   │   ├── DatiAnagraficiCessionarioCommittente.cs
│   │   │   ├── RappresentanteFiscaleCessionarioCommittente.cs
│   │   │   └── SedeCessionarioCommittente.cs
│   │   ├── DatiTrasmissione/
│   │   │   ├── ContattiTrasmittente.cs
│   │   │   ├── DatiTrasmissione.cs
│   │   │   └── IdTrasmittente.cs
│   │   ├── FatturaElettronicaHeader.cs
│   │   ├── RappresentanteFiscale/
│   │   │   └── RappresentanteFiscale.cs
│   │   └── TerzoIntermediarioOSoggettoEmittente/
│   │       └── TerzoIntermediarioOSoggettoEmittente.cs
│   └── FatturaOrdinaria.cs
├── README.md
├── Resources/
│   ├── CausalePagamento.Designer.cs
│   ├── CausalePagamento.de.resx
│   ├── CausalePagamento.en.resx
│   ├── CausalePagamento.resx
│   ├── CondizioniPagamento.Designer.cs
│   ├── CondizioniPagamento.de.resx
│   ├── CondizioniPagamento.en.resx
│   ├── CondizioniPagamento.resx
│   ├── Divisa.Designer.cs
│   ├── Divisa.resx
│   ├── EsigibilitaIVA.Designer.cs
│   ├── EsigibilitaIVA.de.resx
│   ├── EsigibilitaIVA.en.resx
│   ├── EsigibilitaIVA.resx
│   ├── FormatoTrasmissione.Designer.cs
│   ├── FormatoTrasmissione.de.resx
│   ├── FormatoTrasmissione.en.resx
│   ├── FormatoTrasmissione.resx
│   ├── IdPaese.Designer.cs
│   ├── IdPaese.de.resx
│   ├── IdPaese.en.resx
│   ├── IdPaese.resx
│   ├── ModalitaPagamento.Designer.cs
│   ├── ModalitaPagamento.de.resx
│   ├── ModalitaPagamento.en.resx
│   ├── ModalitaPagamento.resx
│   ├── Natura.Designer.cs
│   ├── Natura.de.resx
│   ├── Natura.en.resx
│   ├── Natura.resx
│   ├── NaturaSemplificata.Designer.cs
│   ├── NaturaSemplificata.de.resx
│   ├── NaturaSemplificata.en.resx
│   ├── NaturaSemplificata.resx
│   ├── Provincia.Designer.cs
│   ├── Provincia.de.resx
│   ├── Provincia.en.resx
│   ├── Provincia.resx
│   ├── RegimeFiscale.Designer.cs
│   ├── RegimeFiscale.de.resx
│   ├── RegimeFiscale.en.resx
│   ├── RegimeFiscale.resx
│   ├── ScontoMaggiorazione.Designer.cs
│   ├── ScontoMaggiorazione.de.resx
│   ├── ScontoMaggiorazione.en.resx
│   ├── ScontoMaggiorazione.resx
│   ├── SocioUnico.Designer.cs
│   ├── SocioUnico.de.resx
│   ├── SocioUnico.en.resx
│   ├── SocioUnico.resx
│   ├── SoggettoEmittente.Designer.cs
│   ├── SoggettoEmittente.de.resx
│   ├── SoggettoEmittente.en.resx
│   ├── SoggettoEmittente.resx
│   ├── StatoLiquidazione.Designer.cs
│   ├── StatoLiquidazione.de.resx
│   ├── StatoLiquidazione.en.resx
│   ├── StatoLiquidazione.resx
│   ├── TipoCassa.Designer.cs
│   ├── TipoCassa.de.resx
│   ├── TipoCassa.en.resx
│   ├── TipoCassa.resx
│   ├── TipoCessionePrestazione.Designer.cs
│   ├── TipoCessionePrestazione.de.resx
│   ├── TipoCessionePrestazione.en.resx
│   ├── TipoCessionePrestazione.resx
│   ├── TipoDocumento.Designer.cs
│   ├── TipoDocumento.de.resx
│   ├── TipoDocumento.en.resx
│   ├── TipoDocumento.resx
│   ├── TipoDocumentoSemplificata.Designer.cs
│   ├── TipoDocumentoSemplificata.de.resx
│   ├── TipoDocumentoSemplificata.en.resx
│   ├── TipoDocumentoSemplificata.resx
│   ├── TipoResa.Designer.cs
│   ├── TipoResa.de.resx
│   ├── TipoResa.en.resx
│   ├── TipoResa.resx
│   ├── TipoRitenuta.Designer.cs
│   ├── TipoRitenuta.de.resx
│   ├── TipoRitenuta.en.resx
│   ├── TipoRitenuta.resx
│   ├── ValidatorMessages.Designer.cs
│   ├── ValidatorMessages.de.resx
│   ├── ValidatorMessages.en.resx
│   └── ValidatorMessages.resx
├── Semplificata/
│   ├── FatturaElettronicaBody/
│   │   ├── DatiBeniServizi/
│   │   │   ├── DatiBeniServizi.cs
│   │   │   └── DatiIVA.cs
│   │   ├── DatiGenerali/
│   │   │   ├── DatiFatturaRettificata.cs
│   │   │   ├── DatiGenerali.cs
│   │   │   └── DatiGeneraliDocumento.cs
│   │   └── FatturaElettronicaBody.cs
│   ├── FatturaElettronicaHeader/
│   │   ├── CedentePrestatore/
│   │   │   ├── CedentePrestatore.cs
│   │   │   ├── IscrizioneRea.cs
│   │   │   ├── RappresentanteFiscale.cs
│   │   │   └── SedeCedentePrestatore.cs
│   │   ├── CessionarioCommittente/
│   │   │   ├── AltriDatiIdentificativi.cs
│   │   │   ├── CessionarioCommittente.cs
│   │   │   ├── IdentificativiFiscali.cs
│   │   │   ├── RappresentanteFiscaleCessionarioCommittente.cs
│   │   │   └── SedeCessionarioCommittente.cs
│   │   ├── DatiTrasmissione/
│   │   │   ├── DatiTrasmissione.cs
│   │   │   └── IdTrasmittente.cs
│   │   └── FatturaElettronicaHeader.cs
│   └── FatturaSemplificata.cs
├── Tabelle/
│   ├── CausalePagamento.cs
│   ├── CondizioniPagamento.cs
│   ├── Divisa.cs
│   ├── EsigibilitaIVA.cs
│   ├── FormatoTrasmissione.cs
│   ├── IdPaese.cs
│   ├── ModalitaPagamento.cs
│   ├── Natura.cs
│   ├── NaturaSemplificata.cs
│   ├── Provincia.cs
│   ├── RegimeFiscale.cs
│   ├── ScontoMaggiorazione.cs
│   ├── SocioUnico.cs
│   ├── SoggettoEmittente.cs
│   ├── StatoLiquidazione.cs
│   ├── Tabella.cs
│   ├── TipoCassa.cs
│   ├── TipoCessionePrestazione.cs
│   ├── TipoDocumento.cs
│   ├── TipoDocumentoSemplificata.cs
│   ├── TipoResa.cs
│   └── TipoRitenuta.cs
├── Test/
│   ├── BaseClass.cs
│   ├── Common/
│   │   ├── AnagraficaValidator.cs
│   │   ├── IdFiscaleIva.cs
│   │   ├── IdFiscaleValidator.cs
│   │   ├── IdTrasmittenteValidator.cs
│   │   ├── ScontoMaggiorazioneValidator.cs
│   │   └── StabileOrganizzazioneValidator.cs
│   ├── Core/
│   │   ├── JsonTest.cs
│   │   ├── TestMe.cs
│   │   └── XmlTest.cs
│   ├── Extensions/
│   │   ├── FilenameGeneratorTest.cs
│   │   ├── HtmlExtensionsTest.cs
│   │   ├── JsonExtensionsTest.cs
│   │   ├── SignedFileExtensionsTest.cs
│   │   ├── StreamExtensionsTest.cs
│   │   └── XmlExtensionsTest.cs
│   ├── FatturaElettronica.Test.csproj
│   ├── JSONDeSerialize.cs
│   ├── Ordinaria/
│   │   ├── AllegatiValidator.cs
│   │   ├── AltriDatiGestionaliValidator.cs
│   │   ├── BaseDatiDocumentoValidator.cs
│   │   ├── BaseLocalitàValidator.cs
│   │   ├── CedentePrestatoreValidator.cs
│   │   ├── CessionarioCommittenteValidator.cs
│   │   ├── CodiceArticoloValidator.cs
│   │   ├── ContattiTrasmittenteValidator.cs
│   │   ├── ContattiValidator.cs
│   │   ├── DatiAnagraficiCedentePrestatoreValidator.cs
│   │   ├── DatiAnagraficiCessionarioCommittenteValidator.cs
│   │   ├── DatiAnagraficiVettoreValidator.cs
│   │   ├── DatiBeniServiziValidator.cs
│   │   ├── DatiBolloValidator.cs
│   │   ├── DatiCassaPrevidenzialeValidator.cs
│   │   ├── DatiContrattoValidator.cs
│   │   ├── DatiConvenzioneValidator.cs
│   │   ├── DatiDDTValidator.cs
│   │   ├── DatiFattureCollegateValidator.cs
│   │   ├── DatiGeneraliDocumentoValidator.cs
│   │   ├── DatiGeneraliValidator.cs
│   │   ├── DatiOrdineAcquistoValidator.cs
│   │   ├── DatiPagamentoValidator.cs
│   │   ├── DatiRicezioneValidator.cs
│   │   ├── DatiRiepilogoValidator.cs
│   │   ├── DatiRitenutaValidator.cs
│   │   ├── DatiSALValidator.cs
│   │   ├── DatiTrasmissioneValidator.cs
│   │   ├── DatiTrasportoValidator.cs
│   │   ├── DatiVeicoliValidator.cs
│   │   ├── DenominazioneNomeCognomeValidator.cs
│   │   ├── DettaglioLineeValidator.cs
│   │   ├── DettaglioPagamentoValidator.cs
│   │   ├── FatturaCreateInstance.cs
│   │   ├── FatturaElettronicaBodyValidator.cs
│   │   ├── FatturaElettronicaHeaderValidator.cs
│   │   ├── FatturaPrincipaleValidator.cs
│   │   ├── FatturaValidator.cs
│   │   ├── IscrizioneREAValidator.cs
│   │   ├── RappresentanteFiscaleCessionarioCommittenteValidator.cs
│   │   ├── RappresentanteFiscaleValidator.cs
│   │   ├── SedeCedentePrestatoreValidator.cs
│   │   ├── SedeCessionarioCommittenteValidator.cs
│   │   └── TerzoIntermediarioOSoggettoEmittenteValidator.cs
│   ├── Samples/
│   │   ├── IT01234567890_FPA02.xml
│   │   ├── IT01234567890_FPR02.xml
│   │   ├── IT01234567890_FSM10.xml
│   │   ├── IT02182030391_31.Base64.CRLF.xml.p7m
│   │   ├── IT02182030391_31.Base64.xml.p7m
│   │   ├── IT02182030391_31.xml.p7m
│   │   ├── IT02182030391_31_tampered.Base64.xml.p7m
│   │   ├── IT02182030391_31_tampered.xml.p7m
│   │   ├── IT02182030391_32.windows-1252.xml
│   │   ├── IT02182030391_32.xml
│   │   └── fatturaPA_v1.2.1.xsl
│   ├── Semplificata/
│   │   ├── AllegatiValidator.cs
│   │   ├── AltriDatiIdentificativiValidator.cs
│   │   ├── CedentePrestatoreValidator.cs
│   │   ├── CessionarioCommittenteValidator.cs
│   │   ├── DatiBeniServiziValidator.cs
│   │   ├── DatiGeneraliDocumentoValidator.cs
│   │   ├── DatiIVAValidator.cs
│   │   ├── DatiTrasmissioneValidator.cs
│   │   ├── FatturaCreateInstance.cs
│   │   ├── FatturaElettronicaBodyValidator.cs
│   │   ├── FatturaElettronicaHeaderValidator.cs
│   │   ├── FatturaSemplificataValidator.cs
│   │   ├── IdentificativiFiscaliValidator.cs
│   │   └── XMLDeSerialize.cs
│   ├── TestHelpers.cs
│   └── XMLDeSerialize.cs
├── Validators/
│   ├── AllegatiValidator.cs
│   ├── AltriDatiGestionaliValidator.cs
│   ├── AnagraficaValidator.cs
│   ├── CausaleValidator.cs
│   ├── CedentePrestatoreValidator.cs
│   ├── CessionarioCommittenteValidator.cs
│   ├── CodiceArticoloValidator.cs
│   ├── Constants.cs
│   ├── ContattiTrasmittenteValidator.cs
│   ├── ContattiValidator.cs
│   ├── DatiAnagraficiCedentePrestatoreValidator.cs
│   ├── DatiAnagraficiCessionarioCommittenteValidator.cs
│   ├── DatiAnagraficiRappresentanteFiscaleValidator.cs
│   ├── DatiAnagraficiTerzoIntermediarioValidator.cs
│   ├── DatiAnagraficiVettoreValidator.cs
│   ├── DatiBeniServiziValidator.cs
│   ├── DatiBolloValidator.cs
│   ├── DatiCassaPrevidenzialeValidator.cs
│   ├── DatiContrattoValidator.cs
│   ├── DatiConvenzioneValidator.cs
│   ├── DatiDDTValidator.cs
│   ├── DatiDocumentoValidator.cs
│   ├── DatiFattureCollegateValidator.cs
│   ├── DatiGeneraliDocumentoValidator.cs
│   ├── DatiGeneraliValidator.cs
│   ├── DatiOrdineAcquistoValidator.cs
│   ├── DatiPagamentoValidator.cs
│   ├── DatiRicezioneValidator.cs
│   ├── DatiRiepilogoValidator.cs
│   ├── DatiRitenutaValidator.cs
│   ├── DatiSALValidator.cs
│   ├── DatiTrasmissioneValidator.cs
│   ├── DatiTrasportoValidator.cs
│   ├── DatiVeicoliValidator.cs
│   ├── DenominazioneNomeCognomeValidator.cs
│   ├── DettaglioLineeValidator.cs
│   ├── DettaglioPagamentoValidator.cs
│   ├── FatturaElettronicaBodyValidator.cs
│   ├── FatturaElettronicaHeaderValidator.cs
│   ├── FatturaOrdinariaValidator.cs
│   ├── FatturaPrincipaleValidator.cs
│   ├── IdFiscaleIVAValidator.cs
│   ├── IdTrasmittenteValidator.cs
│   ├── IndirizzoResaValidator.cs
│   ├── IsValidValidator.cs
│   ├── IscrizioneREAValidator.cs
│   ├── LatinValidators.cs
│   ├── LocalitàBaseValidator.cs
│   ├── RappresentanteFiscaleCessionarioCommittenteValidator.cs
│   ├── RappresentanteFiscaleValidator.cs
│   ├── RegimeFiscaleValidator.cs
│   ├── ScontoMaggiorazioneValidator.cs
│   ├── SedeCedentePrestatoreValidator.cs
│   ├── SedeCessionarioCommittenteValidator.cs
│   ├── Semplificata/
│   │   ├── AllegatiValidator.cs
│   │   ├── AltriDatiIdentificativiValidator.cs
│   │   ├── CedentePrestatoreValidator.cs
│   │   ├── CessionarioCommittenteValidator.cs
│   │   ├── DatiBeniServiziValidator.cs
│   │   ├── DatiFatturaRettificataValidator.cs
│   │   ├── DatiGeneraliDocumentoValidator.cs
│   │   ├── DatiGeneraliValidator.cs
│   │   ├── DatiIVAValidator.cs
│   │   ├── DatiTrasmissioneValidator.cs
│   │   ├── DenominazioneNomeCognomeValidator.cs
│   │   ├── FatturaElettronicaBodyValidator.cs
│   │   ├── FatturaElettronicaHeaderValidator.cs
│   │   ├── FatturaSemplificataValidator.cs
│   │   ├── IdentificativiFiscaliValidator.cs
│   │   ├── IscrizioneREAValidator.cs
│   │   ├── RappresentanteFiscaleCessionarioCommittenteValidator.cs
│   │   ├── SedeCedentePrestatoreValidator.cs
│   │   ├── SedeCessionarioCommittenteValidator.cs
│   │   └── StabileOrganizzazioneValidator.cs
│   ├── StabileOrganizzazioneValidator.cs
│   └── TerzoIntermediarioOSoggettoEmittenteValidator.cs
└── docs/
    ├── authors.md
    ├── changelog.md
    ├── extensions.md
    ├── faq.md
    ├── index.md
    ├── toc.md
    └── tutorial.md
Download .txt
SYMBOL INDEX (1140 symbols across 287 files)

FILE: Common/Allegati.cs
  class Allegati (line 8) | public class Allegati : Core.BaseClassSerializable
    method Allegati (line 10) | public Allegati() { }
    method Allegati (line 11) | public Allegati(XmlReader r) : base(r) { }

FILE: Common/Anagrafica.cs
  class Anagrafica (line 9) | public class Anagrafica : DenominazioneNomeCognome
    method Anagrafica (line 12) | public Anagrafica() { }
    method Anagrafica (line 13) | public Anagrafica(XmlReader r) : base(r) { }

FILE: Common/DatiAnagrafici.cs
  class DatiAnagrafici (line 8) | public class DatiAnagrafici : Core.BaseClassSerializable
    method DatiAnagrafici (line 13) | public DatiAnagrafici()
    method DatiAnagrafici (line 18) | public DatiAnagrafici(XmlReader r) : base(r) { }

FILE: Common/DatiDocumento.cs
  class DatiDocumento (line 10) | public abstract class DatiDocumento : Core.BaseClassSerializable
    method DatiDocumento (line 12) | protected DatiDocumento()
    method DatiDocumento (line 16) | protected DatiDocumento(XmlReader r) : base(r) { }

FILE: Common/DenominazioneNomeCognome.cs
  class DenominazioneNomeCognome (line 10) | public class DenominazioneNomeCognome : Core.BaseClassSerializable
    method DenominazioneNomeCognome (line 13) | public DenominazioneNomeCognome() { }
    method DenominazioneNomeCognome (line 14) | public DenominazioneNomeCognome(XmlReader r) : base(r) { }

FILE: Common/IdFiscaleIva.cs
  class IdFiscaleIVA (line 9) | public class IdFiscaleIVA : Core.BaseClassSerializable
    method IdFiscaleIVA (line 11) | public IdFiscaleIVA() { }
    method IdFiscaleIVA (line 12) | public IdFiscaleIVA(XmlReader r) : base(r) { }
    method ToString (line 26) | public override string ToString()

FILE: Common/Località.cs
  class Località (line 10) | public abstract class Località : Core.BaseClassSerializable
    method Località (line 15) | protected Località() { }
    method Località (line 16) | protected Località(XmlReader r) : base(r) { }

FILE: Common/RappresentanteFiscale.cs
  class RappresentanteFiscale (line 8) | public abstract class RappresentanteFiscale : Core.BaseClassSerializable
    method RappresentanteFiscale (line 14) | public RappresentanteFiscale()
    method RappresentanteFiscale (line 18) | public RappresentanteFiscale(XmlReader r) : base(r) { }

FILE: Common/ScontoMaggiorazione.cs
  class ScontoMaggiorazione (line 6) | public class ScontoMaggiorazione : Core.BaseClassSerializable

FILE: Common/StabileOrganizzazione.cs
  class StabileOrganizzazione (line 5) | public class StabileOrganizzazione : Località
    method StabileOrganizzazione (line 7) | public StabileOrganizzazione() { }
    method StabileOrganizzazione (line 8) | public StabileOrganizzazione(XmlReader r) : base(r) { }

FILE: Core/BaseClass.cs
  class BaseClass (line 21) | public abstract class BaseClass : INotifyPropertyChanged, IEquatable<Bas...
    method SetProperty (line 28) | protected bool SetProperty<T>(ref T storage, T value, [CallerMemberNam...
    method OnPropertyChanged (line 40) | private void OnPropertyChanged([CallerMemberName] string propertyName ...
    method CleanString (line 49) | protected string CleanString(string s)
    method IsEmpty (line 58) | public virtual bool IsEmpty()
    method GetAllDataProperties (line 110) | protected IEnumerable<PropertyInfo> GetAllDataProperties()
    method GetKnownNonDataProperty (line 118) | protected PropertyInfo GetKnownNonDataProperty(string name)
    method Equals (line 126) | public bool Equals(BaseClass other)
    method Equals (line 157) | public override bool Equals(object obj)
    method GetHashCode (line 182) | public override int GetHashCode()
    method IsNumericType (line 192) | private static bool IsNumericType(Type type)
  class ObjectExtensions (line 199) | public static class ObjectExtensions
    method GetHashCodeFromFields (line 209) | public static int GetHashCodeFromFields(params object[] fields)

FILE: Core/BaseClassSerializable.cs
  class BaseClassSerializable (line 19) | public class BaseClassSerializable : BaseClass, IXmlSerializable
    method BaseClassSerializable (line 24) | protected BaseClassSerializable()
    method BaseClassSerializable (line 29) | protected BaseClassSerializable(XmlReader r)
    method FromJson (line 43) | public virtual void FromJson(Utf8JsonReader r)
    method Cast (line 258) | private static object Cast(Type target, Utf8JsonReader r)
    method GetPropertyInfo (line 287) | private static PropertyInfo GetPropertyInfo(BaseClassSerializable valu...
    method ToJson (line 312) | public virtual string ToJson()
    method ToJson (line 322) | public virtual string ToJson(JsonOptions jsonOptions)
    method GetSchema (line 328) | public XmlSchema GetSchema()
    method WriteXml (line 338) | public virtual void WriteXml(XmlWriter w)
    method WriteXmlList (line 406) | private static void WriteXmlList(string propertyName, object value, Xm...
    method ReadAndHandleXmlStartElement (line 436) | protected virtual void ReadAndHandleXmlStartElement(XmlReader r)
    method ReadXml (line 447) | public virtual void ReadXml(XmlReader r)
    method ReadXmlList (line 512) | private static void ReadXmlList(object propertyValue, Type propertyTyp...
    class JsonProperty (line 546) | private class JsonProperty
      method JsonProperty (line 552) | public JsonProperty(PropertyInfo property, object value)
      method JsonProperty (line 558) | public JsonProperty(object value) : this(null, value)
      method ToString (line 562) | public override string ToString()

FILE: Core/DataPropertyAttribute.cs
  class DataProperty (line 11) | [AttributeUsage(AttributeTargets.Property)]
    method DataProperty (line 14) | public DataProperty([CallerLineNumber] int order = 0)

FILE: Core/IgnoreXmlDateFormat.cs
  class IgnoreXmlDateFormat (line 8) | [AttributeUsage(AttributeTargets.Property)]

FILE: Core/JsonOptions.cs
  type JsonOptions (line 8) | public enum JsonOptions

FILE: Core/JsonParseException.cs
  class JsonParseException (line 9) | public class JsonParseException : Exception
    method JsonParseException (line 15) | public JsonParseException(string message, Utf8JsonReader reader) : bas...

FILE: Core/TypeExtensions.cs
  class TypeExtensions (line 8) | public static class TypeExtensions
    method GetMethod (line 10) | public static MethodInfo GetMethod(this Type type, string name)
    method IsSubclassOfBusinessObject (line 15) | public static bool IsSubclassOfBusinessObject(this Type type)
    method IsGenericList (line 20) | public static bool IsGenericList(this Type type)

FILE: Core/XmlOptions.cs
  class XmlOptions (line 6) | public class XmlOptions

FILE: Defaults.cs
  type Instance (line 3) | public enum Instance
  class Versione (line 10) | public static class Versione
  class FormatoTrasmissione (line 28) | public static class FormatoTrasmissione
  class RootElement (line 46) | public class RootElement
    class XmlAttributeString (line 73) | public class XmlAttributeString

FILE: Extensions/DecimalRuleExtensions.cs
  class DecimalRuleExtensions (line 5) | internal static class DecimalRuleExtensions
    method ScalePrecision8DecimalType (line 7) | public static void ScalePrecision8DecimalType<T>(this IRuleBuilder<T, ...
    method ScalePrecision2DecimalType (line 12) | public static void ScalePrecision2DecimalType<T>(this IRuleBuilder<T, ...
    method ScalePrecision8DecimalType (line 17) | public static void ScalePrecision8DecimalType<T>(this IRuleBuilder<T, ...
    method ScalePrecision2DecimalType (line 22) | public static void ScalePrecision2DecimalType<T>(this IRuleBuilder<T, ...
    method ScalePrecisionPercentualeDecimalType (line 27) | public static void ScalePrecisionPercentualeDecimalType<T>(this IRuleB...

FILE: Extensions/FatturaElettronicaExtensions.cs
  class FatturaElettronicaExtensions (line 10) | public static class FatturaElettronicaExtensions
    method Validate (line 13) | public static ValidationResult Validate<T>(this T obj) where T : BaseC...

FILE: Extensions/FatturaElettronicaFileNameGenerator/FatturaElettronicaFileNameExtensionType.cs
  type FatturaElettronicaFileNameExtensionType (line 3) | public enum FatturaElettronicaFileNameExtensionType

FILE: Extensions/FatturaElettronicaFileNameGenerator/FatturaElettronicaFileNameGenerator.cs
  class FatturaElettronicaFileNameGenerator (line 10) | public class FatturaElettronicaFileNameGenerator
    method FatturaElettronicaFileNameGenerator (line 15) | public FatturaElettronicaFileNameGenerator(IdFiscaleIVA idFiscale,
    method GetNextFileName (line 31) | public string GetNextFileName(int lastBillingNumber) =>
    method GetNextFileName (line 39) | public string GetNextFileName(string lastBillingNumber) =>
    method GetNext (line 57) | private string GetNext(int lastNumber)
    method GetNext (line 71) | private string GetNext(string lastStringNumber)
    method ToString (line 81) | private string ToString(int value)
    method ToInteger (line 104) | private int ToInteger(string value)
    method Reverse (line 131) | private static string Reverse(string s)

FILE: Extensions/HtmlExtensions.cs
  class HtmlExtensions (line 10) | public static class HtmlExtensions
    method WriteHtml (line 12) | public static void WriteHtml(this FatturaBase fattura, string outPath,...

FILE: Extensions/JsonExtensions.cs
  class JsonExtensions (line 6) | public static class JsonExtensions
    method FromJson (line 8) | public static void FromJson(this FatturaBase fattura, string json)

FILE: Extensions/Resources/ErrorMessages.Designer.cs
  class ErrorMessages (line 15) | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools....
    method ErrorMessages (line 24) | [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.P...

FILE: Extensions/SignatureException.cs
  class SignatureException (line 5) | public class SignatureException : Exception
    method SignatureException (line 7) | public SignatureException(string message) : base(message) { }
    method SignatureException (line 9) | public SignatureException(string message, Exception innerException) : ...

FILE: Extensions/SignedFileExtensions.cs
  class SignedFileExtensions (line 10) | public static class SignedFileExtensions
    method ReadXmlSigned (line 21) | public static void ReadXmlSigned(this FatturaBase fattura, string file...
    method ReadXmlSignedBase64 (line 29) | public static void ReadXmlSignedBase64(this FatturaBase fattura, strin...
    method ReadXmlSigned (line 35) | public static void ReadXmlSigned(this FatturaBase fattura, Stream stre...
    method ParseSignature (line 50) | public static MemoryStream ParseSignature(Stream stream, bool validate...
    method WriteXmlSigned (line 90) | public static void WriteXmlSigned(this FatturaBase fattura, string pfx...
    method WriteXmlSigned (line 99) | public static void WriteXmlSigned(this FatturaBase fattura, X509Certif...

FILE: Extensions/StreamExtensions.cs
  class StreamExtensions (line 7) | public static class StreamExtensions
    method PreprocessStreamEncoding (line 17) | public static Stream PreprocessStreamEncoding(Stream fileContents)

FILE: Extensions/XmlExtensions.cs
  class XmlExtensions (line 6) | public static class XmlExtensions
    method ReadXml (line 8) | public static void ReadXml(this FatturaBase fattura, string filePath)
    method ReadXml (line 18) | public static void ReadXml(this FatturaBase fattura, Stream stream)
    method WriteXml (line 29) | public static void WriteXml(this FatturaBase fattura, string filePath)

FILE: FatturaBase.cs
  class FatturaBase (line 13) | public abstract class FatturaBase : BaseClassSerializable
    method FatturaBase (line 15) | static FatturaBase()
    method ReadXml (line 20) | public override void ReadXml(XmlReader r)
    method WriteXml (line 26) | public override void WriteXml(XmlWriter w)
    method CreateInstanceFromXml (line 44) | public static FatturaBase CreateInstanceFromXml(Stream stream, bool va...
    method CreateInstanceFromPlainXml (line 58) | private static FatturaBase CreateInstanceFromPlainXml(Stream stream)
    method CreateInstanceFromXmlSigned (line 95) | private static FatturaBase CreateInstanceFromXmlSigned(Stream stream,
    method CreateInstanceFromXmlSignedBase64 (line 113) | private static FatturaBase CreateInstanceFromXmlSignedBase64(Stream st...
    method ReadAndHandleXmlStartElement (line 125) | protected override void ReadAndHandleXmlStartElement(XmlReader r)
    method GetFormatoTrasmissione (line 132) | public abstract string GetFormatoTrasmissione();
    method GetLocalName (line 133) | protected abstract string GetLocalName();
    method GetNameSpace (line 134) | protected abstract string GetNameSpace();

FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/AltriDatiGestionali.cs
  class AltriDatiGestionali (line 11) | public class AltriDatiGestionali : BaseClassSerializable
    method AltriDatiGestionali (line 14) | public AltriDatiGestionali() { }
    method AltriDatiGestionali (line 15) | public AltriDatiGestionali(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/CodiceArticolo.cs
  class CodiceArticolo (line 9) | public class CodiceArticolo : BaseClassSerializable
    method CodiceArticolo (line 11) | public CodiceArticolo() { }
    method CodiceArticolo (line 12) | public CodiceArticolo(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/DatiBeniServizi.cs
  class DatiBeniServizi (line 11) | public class DatiBeniServizi : BaseClassSerializable
    method DatiBeniServizi (line 16) | public DatiBeniServizi()
    method DatiBeniServizi (line 21) | public DatiBeniServizi(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo.cs
  class DatiRiepilogo (line 9) | public class DatiRiepilogo : BaseClassSerializable
    method DatiRiepilogo (line 11) | public DatiRiepilogo() { }
    method DatiRiepilogo (line 12) | public DatiRiepilogo(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee.cs
  class DettaglioLinee (line 12) | public class DettaglioLinee : BaseClassSerializable
    method DettaglioLinee (line 17) | public DettaglioLinee()
    method DettaglioLinee (line 24) | public DettaglioLinee(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiAnagraficiVettore.cs
  class DatiAnagraficiVettore (line 6) | public class DatiAnagraficiVettore : DatiAnagrafici
    method DatiAnagraficiVettore (line 8) | public DatiAnagraficiVettore() { }
    method DatiAnagraficiVettore (line 9) | public DatiAnagraficiVettore(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiBollo.cs
  class DatiBollo (line 9) | public class DatiBollo : BaseClassSerializable
    method DatiBollo (line 11) | public DatiBollo() { }
    method DatiBollo (line 12) | public DatiBollo(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiCassaPrevidenziale.cs
  class DatiCassaPrevidenziale (line 9) | public class DatiCassaPrevidenziale : BaseClassSerializable
    method DatiCassaPrevidenziale (line 11) | public DatiCassaPrevidenziale() { }
    method DatiCassaPrevidenziale (line 12) | public DatiCassaPrevidenziale(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiContratto.cs
  class DatiContratto (line 8) | public class DatiContratto : Common.DatiDocumento
    method DatiContratto (line 10) | public DatiContratto() { }
    method DatiContratto (line 11) | public DatiContratto(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiConvenzione.cs
  class DatiConvenzione (line 8) | public class DatiConvenzione : Common.DatiDocumento
    method DatiConvenzione (line 11) | public DatiConvenzione() { }
    method DatiConvenzione (line 12) | public DatiConvenzione(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiDDT.cs
  class DatiDDT (line 12) | public class DatiDDT : BaseClassSerializable
    method DatiDDT (line 17) | public DatiDDT()
    method DatiDDT (line 23) | public DatiDDT(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiFattureCollegate.cs
  class DatiFattureCollegate (line 9) | public class DatiFattureCollegate : Common.DatiDocumento
    method DatiFattureCollegate (line 11) | public DatiFattureCollegate() { }
    method DatiFattureCollegate (line 12) | public DatiFattureCollegate(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiGenerali.cs
  class DatiGenerali (line 10) | public class DatiGenerali : BaseClassSerializable
    method DatiGenerali (line 15) | public DatiGenerali()
    method DatiGenerali (line 28) | public DatiGenerali(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento.cs
  class DatiGeneraliDocumento (line 12) | public class DatiGeneraliDocumento : BaseClassSerializable
    method DatiGeneraliDocumento (line 17) | public DatiGeneraliDocumento()
    method DatiGeneraliDocumento (line 25) | public DatiGeneraliDocumento(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiOrdineAcquisto.cs
  class DatiOrdineAcquisto (line 8) | public class DatiOrdineAcquisto : Common.DatiDocumento
    method DatiOrdineAcquisto (line 10) | public DatiOrdineAcquisto() { }
    method DatiOrdineAcquisto (line 11) | public DatiOrdineAcquisto(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiRicezione.cs
  class DatiRicezione (line 8) | public class DatiRicezione : Common.DatiDocumento
    method DatiRicezione (line 10) | public DatiRicezione() { }
    method DatiRicezione (line 11) | public DatiRicezione(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiRitenuta.cs
  class DatiRitenuta (line 9) | public class DatiRitenuta : BaseClassSerializable
    method DatiRitenuta (line 11) | public DatiRitenuta() { }
    method DatiRitenuta (line 12) | public DatiRitenuta(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiSAL.cs
  class DatiSAL (line 10) | public class DatiSAL : BaseClassSerializable
    method DatiSAL (line 12) | public DatiSAL() { }
    method DatiSAL (line 13) | public DatiSAL(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiTrasporto.cs
  class DatiTrasporto (line 10) | public class DatiTrasporto : BaseClassSerializable
    method DatiTrasporto (line 15) | public DatiTrasporto()
    method DatiTrasporto (line 20) | public DatiTrasporto(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/FatturaPrincipale.cs
  class FatturaPrincipale (line 11) | public class FatturaPrincipale : BaseClassSerializable
    method FatturaPrincipale (line 13) | public FatturaPrincipale() { }
    method FatturaPrincipale (line 14) | public FatturaPrincipale(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiGenerali/IndirizzoResa.cs
  class IndirizzoResa (line 5) | public class IndirizzoResa : Common.Località
    method IndirizzoResa (line 7) | public IndirizzoResa() { }
    method IndirizzoResa (line 8) | public IndirizzoResa(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiPagamento/DatiPagamento.cs
  class DatiPagamento (line 10) | public class DatiPagamento : BaseClassSerializable
    method DatiPagamento (line 15) | public DatiPagamento()
    method DatiPagamento (line 20) | public DatiPagamento(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiPagamento/DettaglioPagamento.cs
  class DettaglioPagamento (line 10) | public class DettaglioPagamento : BaseClassSerializable
    method DettaglioPagamento (line 12) | public DettaglioPagamento() { }
    method DettaglioPagamento (line 13) | public DettaglioPagamento(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/DatiVeicoli/DatiVeicoli.cs
  class DatiVeicoli (line 10) | public class DatiVeicoli : BaseClassSerializable
    method DatiVeicoli (line 12) | public DatiVeicoli() { }
    method DatiVeicoli (line 13) | public DatiVeicoli(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaBody/FatturaElettronicaBody.cs
  class FatturaElettronicaBody (line 8) | public class FatturaElettronicaBody : BaseClassSerializable
    method FatturaElettronicaBody (line 13) | public FatturaElettronicaBody()
    method FatturaElettronicaBody (line 21) | public FatturaElettronicaBody(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/CedentePrestatore.cs
  class CedentePrestatore (line 10) | public class CedentePrestatore : BaseClassSerializable
    method CedentePrestatore (line 15) | public CedentePrestatore()
    method CedentePrestatore (line 23) | public CedentePrestatore(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/Contatti.cs
  class Contatti (line 9) | public class Contatti : BaseClassSerializable
    method Contatti (line 11) | public Contatti() { }
    method Contatti (line 12) | public Contatti(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/DatiAnagraficiCedentePrestatore.cs
  class DatiAnagraficiCedentePrestatore (line 7) | public class DatiAnagraficiCedentePrestatore : DatiAnagrafici
    method DatiAnagraficiCedentePrestatore (line 12) | public DatiAnagraficiCedentePrestatore() { }
    method DatiAnagraficiCedentePrestatore (line 13) | public DatiAnagraficiCedentePrestatore(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/IscrizioneRea.cs
  class IscrizioneREA (line 9) | public class IscrizioneREA : BaseClassSerializable
    method IscrizioneREA (line 11) | public IscrizioneREA() { }
    method IscrizioneREA (line 12) | public IscrizioneREA(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/CedentePrestatore/SedeCedentePrestatore.cs
  class SedeCedentePrestatore (line 5) | public class SedeCedentePrestatore : Common.Località
    method SedeCedentePrestatore (line 7) | public SedeCedentePrestatore() { }
    method SedeCedentePrestatore (line 8) | public SedeCedentePrestatore(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/CessionarioCommittente.cs
  class CessionarioCommittente (line 11) | public class CessionarioCommittente : BaseClassSerializable
    method CessionarioCommittente (line 16) | public CessionarioCommittente()
    method CessionarioCommittente (line 23) | public CessionarioCommittente(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/DatiAnagraficiCessionarioCommittente.cs
  class DatiAnagraficiCessionarioCommittente (line 6) | public class DatiAnagraficiCessionarioCommittente : DatiAnagrafici
    method DatiAnagraficiCessionarioCommittente (line 11) | public DatiAnagraficiCessionarioCommittente() { }
    method DatiAnagraficiCessionarioCommittente (line 12) | public DatiAnagraficiCessionarioCommittente(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/RappresentanteFiscaleCessionarioCommittente.cs
  class RappresentanteFiscaleCessionarioCommittente (line 9) | public class RappresentanteFiscaleCessionarioCommittente : Denominazione...
    method RappresentanteFiscaleCessionarioCommittente (line 11) | public RappresentanteFiscaleCessionarioCommittente()
    method RappresentanteFiscaleCessionarioCommittente (line 16) | public RappresentanteFiscaleCessionarioCommittente(XmlReader r) : base...

FILE: Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/SedeCessionarioCommittente.cs
  class SedeCessionarioCommittente (line 5) | public class SedeCessionarioCommittente : Common.Località
    method SedeCessionarioCommittente (line 7) | public SedeCessionarioCommittente() { }
    method SedeCessionarioCommittente (line 9) | public SedeCessionarioCommittente(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/DatiTrasmissione/ContattiTrasmittente.cs
  class ContattiTrasmittente (line 9) | public class ContattiTrasmittente : BaseClassSerializable
    method ContattiTrasmittente (line 11) | public ContattiTrasmittente() { }
    method ContattiTrasmittente (line 12) | public ContattiTrasmittente(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/DatiTrasmissione/DatiTrasmissione.cs
  class DatiTrasmissione (line 11) | public class DatiTrasmissione : BaseClassSerializable
    method DatiTrasmissione (line 17) | public DatiTrasmissione()
    method DatiTrasmissione (line 22) | public DatiTrasmissione(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente.cs
  class IdTrasmittente (line 6) | public class IdTrasmittente : IdFiscaleIVA
    method IdTrasmittente (line 8) | public IdTrasmittente() { }
    method IdTrasmittente (line 9) | public IdTrasmittente(XmlReader r) : base(r) { }

FILE: Ordinaria/FatturaElettronicaHeader/FatturaElettronicaHeader.cs
  class FatturaElettronicaHeader (line 7) | public class FatturaElettronicaHeader : Core.BaseClassSerializable
    method FatturaElettronicaHeader (line 12) | public FatturaElettronicaHeader()
    method FatturaElettronicaHeader (line 22) | public FatturaElettronicaHeader(XmlReader r) : base(r)

FILE: Ordinaria/FatturaElettronicaHeader/RappresentanteFiscale/RappresentanteFiscale.cs
  class RappresentanteFiscale (line 6) | public class RappresentanteFiscale : Common.RappresentanteFiscale { }

FILE: Ordinaria/FatturaElettronicaHeader/TerzoIntermediarioOSoggettoEmittente/TerzoIntermediarioOSoggettoEmittente.cs
  class TerzoIntermediarioOSoggettoEmittente (line 6) | public class TerzoIntermediarioOSoggettoEmittente : Common.Rappresentant...

FILE: Ordinaria/FatturaOrdinaria.cs
  class FatturaOrdinaria (line 6) | public class FatturaOrdinaria : FatturaBase
    method FatturaOrdinaria (line 8) | public FatturaOrdinaria()
    method CreateInstance (line 14) | public static FatturaOrdinaria CreateInstance(Instance formato)
    method GetFormatoTrasmissione (line 34) | public override string GetFormatoTrasmissione()
    method GetLocalName (line 39) | protected override string GetLocalName()
    method GetNameSpace (line 44) | protected override string GetNameSpace()

FILE: Resources/CausalePagamento.Designer.cs
  class CausalePagamento (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method CausalePagamento (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/CondizioniPagamento.Designer.cs
  class CondizioniPagamento (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method CondizioniPagamento (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/Divisa.Designer.cs
  class Divisa (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Divisa (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/EsigibilitaIVA.Designer.cs
  class EsigibilitaIVA (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method EsigibilitaIVA (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/FormatoTrasmissione.Designer.cs
  class FormatoTrasmissione (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method FormatoTrasmissione (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/IdPaese.Designer.cs
  class IdPaese (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method IdPaese (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/ModalitaPagamento.Designer.cs
  class ModalitaPagamento (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method ModalitaPagamento (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/Natura.Designer.cs
  class Natura (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Natura (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/NaturaSemplificata.Designer.cs
  class NaturaSemplificata (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method NaturaSemplificata (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/Provincia.Designer.cs
  class Provincia (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Provincia (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/RegimeFiscale.Designer.cs
  class RegimeFiscale (line 14) | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools....
    method RegimeFiscale (line 23) | [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.P...

FILE: Resources/ScontoMaggiorazione.Designer.cs
  class ScontoMaggiorazione (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method ScontoMaggiorazione (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/SocioUnico.Designer.cs
  class SocioUnico (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method SocioUnico (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/SoggettoEmittente.Designer.cs
  class SoggettoEmittente (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method SoggettoEmittente (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/StatoLiquidazione.Designer.cs
  class StatoLiquidazione (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method StatoLiquidazione (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/TipoCassa.Designer.cs
  class TipoCassa (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method TipoCassa (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/TipoCessionePrestazione.Designer.cs
  class TipoCessionePrestazione (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method TipoCessionePrestazione (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/TipoDocumento.Designer.cs
  class TipoDocumento (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method TipoDocumento (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/TipoDocumentoSemplificata.Designer.cs
  class TipoDocumentoSemplificata (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method TipoDocumentoSemplificata (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/TipoResa.Designer.cs
  class TipoResa (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method TipoResa (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/TipoRitenuta.Designer.cs
  class TipoRitenuta (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method TipoRitenuta (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Resources/ValidatorMessages.Designer.cs
  class ValidatorMessages (line 14) | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools....
    method ValidatorMessages (line 23) | [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.P...

FILE: Semplificata/FatturaElettronicaBody/DatiBeniServizi/DatiBeniServizi.cs
  class DatiBeniServizi (line 9) | public class DatiBeniServizi : BaseClassSerializable
    method DatiBeniServizi (line 14) | public DatiBeniServizi()
    method DatiBeniServizi (line 18) | public DatiBeniServizi(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaBody/DatiBeniServizi/DatiIVA.cs
  class DatiIVA (line 9) | public class DatiIVA : BaseClassSerializable
    method DatiIVA (line 14) | public DatiIVA() { }
    method DatiIVA (line 15) | public DatiIVA(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaBody/DatiGenerali/DatiFatturaRettificata.cs
  class DatiFatturaRettificata (line 10) | public class DatiFatturaRettificata : BaseClassSerializable
    method DatiFatturaRettificata (line 15) | public DatiFatturaRettificata()
    method DatiFatturaRettificata (line 18) | public DatiFatturaRettificata(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaBody/DatiGenerali/DatiGenerali.cs
  class DatiGenerali (line 9) | public class DatiGenerali : BaseClassSerializable
    method DatiGenerali (line 14) | public DatiGenerali()
    method DatiGenerali (line 19) | public DatiGenerali(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento.cs
  class DatiGeneraliDocumento (line 10) | public class DatiGeneraliDocumento : BaseClassSerializable
    method DatiGeneraliDocumento (line 15) | public DatiGeneraliDocumento()
    method DatiGeneraliDocumento (line 18) | public DatiGeneraliDocumento(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaBody/FatturaElettronicaBody.cs
  class FatturaElettronicaBody (line 8) | public class FatturaElettronicaBody : BaseClassSerializable
    method FatturaElettronicaBody (line 13) | public FatturaElettronicaBody()
    method FatturaElettronicaBody (line 19) | public FatturaElettronicaBody(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/CedentePrestatore/CedentePrestatore.cs
  class CedentePrestatore (line 12) | public class CedentePrestatore : BaseClassSerializable
    method CedentePrestatore (line 17) | public CedentePrestatore()
    method CedentePrestatore (line 25) | public CedentePrestatore(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/CedentePrestatore/IscrizioneRea.cs
  class IscrizioneREA (line 9) | public class IscrizioneREA : BaseClassSerializable
    method IscrizioneREA (line 11) | public IscrizioneREA() { }
    method IscrizioneREA (line 12) | public IscrizioneREA(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/CedentePrestatore/RappresentanteFiscale.cs
  class RappresentanteFiscale (line 11) | public class RappresentanteFiscale : BaseClassSerializable
    method RappresentanteFiscale (line 17) | public RappresentanteFiscale()
    method RappresentanteFiscale (line 21) | public RappresentanteFiscale(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/CedentePrestatore/SedeCedentePrestatore.cs
  class SedeCedentePrestatore (line 5) | public class SedeCedentePrestatore : Common.Località
    method SedeCedentePrestatore (line 7) | public SedeCedentePrestatore() { }
    method SedeCedentePrestatore (line 8) | public SedeCedentePrestatore(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/CessionarioCommittente/AltriDatiIdentificativi.cs
  class AltriDatiIdentificativi (line 11) | public class AltriDatiIdentificativi : BaseClassSerializable
    method AltriDatiIdentificativi (line 16) | public AltriDatiIdentificativi()
    method AltriDatiIdentificativi (line 22) | public AltriDatiIdentificativi(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/CessionarioCommittente/CessionarioCommittente.cs
  class CessionarioCommittente (line 9) | public class CessionarioCommittente : BaseClassSerializable
    method CessionarioCommittente (line 14) | public CessionarioCommittente()
    method CessionarioCommittente (line 19) | public CessionarioCommittente(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/CessionarioCommittente/IdentificativiFiscali.cs
  class IdentificativiFiscali (line 10) | public class IdentificativiFiscali : BaseClassSerializable
    method IdentificativiFiscali (line 15) | public IdentificativiFiscali()
    method IdentificativiFiscali (line 19) | public IdentificativiFiscali(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/CessionarioCommittente/RappresentanteFiscaleCessionarioCommittente.cs
  class RappresentanteFiscaleCessionarioCommittente (line 9) | public class RappresentanteFiscaleCessionarioCommittente : Denominazione...
    method RappresentanteFiscaleCessionarioCommittente (line 11) | public RappresentanteFiscaleCessionarioCommittente()
    method RappresentanteFiscaleCessionarioCommittente (line 15) | public RappresentanteFiscaleCessionarioCommittente(XmlReader r) : base...

FILE: Semplificata/FatturaElettronicaHeader/CessionarioCommittente/SedeCessionarioCommittente.cs
  class SedeCessionarioCommittente (line 5) | public class SedeCessionarioCommittente : Common.Località
    method SedeCessionarioCommittente (line 7) | public SedeCessionarioCommittente() { }
    method SedeCessionarioCommittente (line 9) | public SedeCessionarioCommittente(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/DatiTrasmissione/DatiTrasmissione.cs
  class DatiTrasmissione (line 11) | public class DatiTrasmissione : BaseClassSerializable
    method DatiTrasmissione (line 17) | public DatiTrasmissione()
    method DatiTrasmissione (line 21) | public DatiTrasmissione(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente.cs
  class IdTrasmittente (line 6) | public class IdTrasmittente : IdFiscaleIVA
    method IdTrasmittente (line 8) | public IdTrasmittente() { }
    method IdTrasmittente (line 9) | public IdTrasmittente(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaElettronicaHeader/FatturaElettronicaHeader.cs
  class FatturaElettronicaHeader (line 6) | public class FatturaElettronicaHeader : BaseClassSerializable
    method FatturaElettronicaHeader (line 11) | public FatturaElettronicaHeader()
    method FatturaElettronicaHeader (line 17) | public FatturaElettronicaHeader(XmlReader r) : base(r) { }

FILE: Semplificata/FatturaSemplificata.cs
  class FatturaSemplificata (line 6) | public class FatturaSemplificata : FatturaBase
    method FatturaSemplificata (line 8) | public FatturaSemplificata()
    method CreateInstance (line 14) | public static FatturaSemplificata CreateInstance(Instance formato)
    method GetFormatoTrasmissione (line 30) | public override string GetFormatoTrasmissione()
    method GetLocalName (line 35) | protected override string GetLocalName()
    method GetNameSpace (line 40) | protected override string GetNameSpace()

FILE: Tabelle/CausalePagamento.cs
  class CausalePagamento (line 5) | public class CausalePagamento : Tabella<CausalePagamento>

FILE: Tabelle/CondizioniPagamento.cs
  class CondizioniPagamento (line 5) | public class CondizioniPagamento : Tabella<CondizioniPagamento>

FILE: Tabelle/Divisa.cs
  class Divisa (line 5) | public class Divisa : Tabella<Divisa>

FILE: Tabelle/EsigibilitaIVA.cs
  class EsigibilitaIVA (line 5) | public class EsigibilitaIVA : Tabella<EsigibilitaIVA>

FILE: Tabelle/FormatoTrasmissione.cs
  class FormatoTrasmissione (line 3) | public class FormatoTrasmissione : Tabella

FILE: Tabelle/IdPaese.cs
  class IdPaese (line 5) | public class IdPaese : Tabella<IdPaese>

FILE: Tabelle/ModalitaPagamento.cs
  class ModalitaPagamento (line 5) | public class ModalitaPagamento : Tabella<ModalitaPagamento>

FILE: Tabelle/Natura.cs
  class Natura (line 5) | public class Natura : Tabella<Natura>

FILE: Tabelle/NaturaSemplificata.cs
  class NaturaSemplificata (line 5) | public class NaturaSemplificata : Tabella<NaturaSemplificata>

FILE: Tabelle/Provincia.cs
  class Provincia (line 9) | public class Provincia : Tabella<Provincia>

FILE: Tabelle/RegimeFiscale.cs
  class RegimeFiscale (line 5) | public class RegimeFiscale : Tabella<RegimeFiscale>

FILE: Tabelle/ScontoMaggiorazione.cs
  class ScontoMaggiorazione (line 5) | public class ScontoMaggiorazione : Tabella<ScontoMaggiorazione>

FILE: Tabelle/SocioUnico.cs
  class SocioUnico (line 5) | public class SocioUnico : Tabella<SocioUnico>

FILE: Tabelle/SoggettoEmittente.cs
  class SoggettoEmittente (line 5) | public class SoggettoEmittente : Tabella<SoggettoEmittente>

FILE: Tabelle/StatoLiquidazione.cs
  class StatoLiquidazione (line 5) | public class StatoLiquidazione : Tabella<StatoLiquidazione>

FILE: Tabelle/Tabella.cs
  class Tabella (line 10) | public abstract class Tabella
    method Tabella (line 34) | protected Tabella()
    method LoadResources (line 41) | private T[] LoadResources()
  class Tabella (line 30) | public abstract class Tabella<T> : Tabella where T : Tabella, new()
    method Tabella (line 34) | protected Tabella()
    method LoadResources (line 41) | private T[] LoadResources()

FILE: Tabelle/TipoCassa.cs
  class TipoCassa (line 5) | public class TipoCassa : Tabella<TipoCassa>

FILE: Tabelle/TipoCessionePrestazione.cs
  class TipoCessionePrestazione (line 5) | public class TipoCessionePrestazione : Tabella<TipoCessionePrestazione>

FILE: Tabelle/TipoDocumento.cs
  class TipoDocumento (line 5) | public class TipoDocumento : Tabella<TipoDocumento>

FILE: Tabelle/TipoDocumentoSemplificata.cs
  class TipoDocumentoSemplificata (line 5) | public class TipoDocumentoSemplificata : Tabella<TipoDocumentoSemplificata>

FILE: Tabelle/TipoResa.cs
  class TipoResa (line 5) | public class TipoResa : Tabella<TipoResa>

FILE: Tabelle/TipoRitenuta.cs
  class TipoRitenuta (line 5) | public class TipoRitenuta : Tabella<TipoRitenuta>

FILE: Test/BaseClass.cs
  class BaseClass (line 16) | [TestClass]
    method Init (line 24) | [TestInitialize]
    method ValidateExtensionMethodIsAvailable (line 31) | [TestMethod]
    method AssertOptional (line 47) | protected void AssertOptional<T>(Expression<Func<TClass, T>> outExpr, ...
    method AssertRequired (line 61) | protected void AssertRequired<T>(Expression<Func<TClass, T>> outExpr, ...
    method AssertMinMaxLength (line 90) | protected void AssertMinMaxLength(Expression<Func<TClass, string>> out...
    method AssertDigitsOrUppercase (line 108) | protected void AssertDigitsOrUppercase(Expression<Func<TClass, string>...
    method AssertLength (line 121) | protected void AssertLength(Expression<Func<TClass, string>> outExpr, ...
    method AssertOnlyAcceptsTableValues (line 139) | protected void AssertOnlyAcceptsTableValues<T>(Expression<Func<TClass,...
    method AssertCollectionCanBeEmpty (line 156) | protected void AssertCollectionCanBeEmpty<T>(Expression<Func<TClass, L...
    method AssertCollectionCannotBeEmpty (line 164) | protected void AssertCollectionCannotBeEmpty<T>(Expression<Func<TClass...
    method AssertOnlyAcceptsSIValue (line 172) | protected void AssertOnlyAcceptsSIValue(Expression<Func<TClass, string...
    method AssertMustBeBasicLatin (line 185) | protected void AssertMustBeBasicLatin(Expression<Func<TClass, string>>...
    method AssertMustBeLatin1Supplement (line 199) | protected void AssertMustBeLatin1Supplement(Expression<Func<TClass, st...
    method AssertProvinciaOnlyAcceptsValidValues (line 216) | protected void AssertProvinciaOnlyAcceptsValidValues(Expression<Func<T...
    method GetProperty (line 237) | private static PropertyInfo GetProperty<T>(Expression<Func<TClass, T>>...
    method AssertDecimalType (line 243) | protected void AssertDecimalType(Expression<Func<TClass, decimal?>> ou...
    method AssertDecimalType (line 266) | protected void AssertDecimalType(Expression<Func<TClass, decimal>> out...

FILE: Test/Common/AnagraficaValidator.cs
  class AnagraficaValidator (line 7) | [TestClass]
    method TitoloIsOptional (line 11) | [TestMethod]
    method TitoloMinMaxLength (line 17) | [TestMethod]
    method TitoloMustBeBasicLatin (line 23) | [TestMethod]
    method CodEORIsOptional (line 29) | [TestMethod]
    method CodEORIMinMaxLength (line 35) | [TestMethod]
    method DenominazioneMustBeLatin1Supplement (line 41) | [TestMethod]

FILE: Test/Common/IdFiscaleIva.cs
  class IdFiscaleIva (line 6) | [TestClass]
    method ToStringOverride (line 9) | [TestMethod]

FILE: Test/Common/IdFiscaleValidator.cs
  class IdFiscaleValidator (line 8) | [TestClass]
    method IdPaeseIsRequired (line 12) | [TestMethod]
    method IdPaeseOnlyAcceptsTableValues (line 18) | [TestMethod]
    method IdCodiceIsRequired (line 24) | [TestMethod]
    method IdCodiceMinMaxLength (line 30) | [TestMethod]
    method IdFiscaleToString (line 36) | [TestMethod]

FILE: Test/Common/IdTrasmittenteValidator.cs
  class IdTrasmittenteValidator (line 6) | [TestClass]
    method IdTrasmittenteValidatorIsOfTypeIdFiscaleIVAValidator (line 9) | [TestMethod]

FILE: Test/Common/ScontoMaggiorazioneValidator.cs
  class ScontoMaggiorazioneValidator (line 7) | [TestClass]
    method TipoIsRequired (line 11) | [TestMethod]
    method TipoOnlyAcceptsTableValues (line 17) | [TestMethod]
    method TipoValidateAgainstError00437 (line 26) | [TestMethod]
    method Importo (line 47) | [TestMethod]
    method Percentuale (line 52) | [TestMethod]

FILE: Test/Common/StabileOrganizzazioneValidator.cs
  class StabileOrganizzazioneValidator (line 7) | [TestClass]

FILE: Test/Core/JsonTest.cs
  class JsonTest (line 8) | [TestClass]
    method JsonDeSerialize (line 11) | [TestMethod]

FILE: Test/Core/TestMe.cs
  class TestMe (line 6) | public class TestMe : BaseClassSerializable
    method WriteXml (line 26) | public override void WriteXml(System.Xml.XmlWriter w)
  class SubTestMe (line 34) | public class SubTestMe : BaseClassSerializable

FILE: Test/Core/XmlTest.cs
  class DeSerialize (line 7) | [TestClass]
    method XmlDeSerialize (line 10) | [TestMethod]

FILE: Test/Extensions/FilenameGeneratorTest.cs
  class FilenameGeneratorTest (line 8) | [TestClass]
    method Initialize (line 11) | [TestMethod]
    method ConvertIntegerToFilename (line 28) | [TestMethod]
    method ConvertStringToFilename (line 38) | [TestMethod]
    method ConvertIntegerToFilenameSigned (line 48) | [TestMethod]
    method ConvertStringToFilenameSigned (line 59) | [TestMethod]
    method ConvertIntegerToFilename2Char (line 70) | [TestMethod]
    method LastBillingNumberLength (line 80) | [TestMethod]

FILE: Test/Extensions/HtmlExtensionsTest.cs
  class HtmlExtensionsTest (line 9) | [TestClass]
    method WriteHtml (line 12) | [TestMethod]
    method WriteHtmlThrowsOnInvalidArguments (line 25) | [TestMethod]

FILE: Test/Extensions/JsonExtensionsTest.cs
  class JsonExtensionsTest (line 8) | [TestClass]
    method FromJson (line 11) | [TestMethod]

FILE: Test/Extensions/SignedFileExtensionsTest.cs
  class SignedFileExtensionsTest (line 11) | [TestClass]
    method ReadXMLSigned (line 15) | [TestMethod]
    method ReadXMLSigned_ShouldThrowExceptionOnTamperedDocuments (line 23) | [TestMethod]
    method ReadXMLSignedBase64 (line 33) | [TestMethod]
    method ReadXMLSignedFallbacksToBase64Attempt (line 41) | [TestMethod]
    method ReadXMLSignedValidateSignatureDisabled (line 49) | [TestMethod]
    method ReadXMLSignedBase64ValidateSignatureDisabled (line 57) | [TestMethod]
    method ReadXMLSignedThrowsOnNonSignedFile (line 66) | [TestMethod]
    method ReadXMLSignedBase64ThrowsOnNonSignedFile (line 73) | [TestMethod]
    method ReadXMLSignedStream (line 80) | [TestMethod]
    method CreateInstanceFromXmlBase64WithCRLF (line 92) | [TestMethod]
    method WriteXmlSigned (line 101) | [TestMethod]
    method WriteXmlSignedThrowsOnMissingPfxFile (line 111) | [TestMethod]

FILE: Test/Extensions/StreamExtensionsTest.cs
  class StreamExtensionsTest (line 9) | [TestClass]
    method ReadXml_ShouldRewindBeforeReading (line 13) | [TestMethod]
    method PreprocessStreamEncoding_ShouldOnlyConvertBase64Input (line 25) | [TestMethod]
    method PreprocessStreamEncoding_ShouldDecodeCorrectly (line 38) | [TestMethod]
    method PreprocessStreamEncoding_ShouldNotRewindNonSeekableStream (line 51) | [TestMethod]
    method PreprocessStreamEncoding_ShouldNotRewindPositionZeroStreams (line 65) | [TestMethod]
    class NonRewindableStream (line 81) | private class NonRewindableStream : MemoryStream
      method NonRewindableStream (line 83) | public NonRewindableStream(byte[] buffer) : base(buffer)
    class SusceptibleMemoryStream (line 92) | private class SusceptibleMemoryStream : MemoryStream
      method SusceptibleMemoryStream (line 94) | public SusceptibleMemoryStream(byte[] buffer) : base(buffer)

FILE: Test/Extensions/XmlExtensionsTest.cs
  class XmlExtensionsTest (line 10) | [TestClass]
    method ReadXMLFile (line 13) | [TestMethod]
    method ReadXMLStream (line 21) | [TestMethod]
    method WriteXML (line 29) | [TestMethod]

FILE: Test/JSONDeSerialize.cs
  class JSONDeSerialize (line 11) | [TestClass]
    method DeserializeAndThenSerializeOfficialPRSample (line 14) | [TestMethod]
    method NomeCognomeIsIgnored (line 27) | [TestMethod]
    method Deserialize (line 40) | private FatturaOrdinaria Deserialize(string fileName)

FILE: Test/Ordinaria/AllegatiValidator.cs
  class AllegatiValidator (line 6) | [TestClass]
    method NomeAttachmentIsRequired (line 10) | [TestMethod]
    method NomeAttachmentMinMaxLength (line 16) | [TestMethod]
    method NomeAttachmentMustBeLatin1Supplement (line 22) | [TestMethod]
    method AlgoritmoCompressioneIsOptional (line 28) | [TestMethod]
    method AlgoritmoCompressioneMinMaxLength (line 34) | [TestMethod]
    method AlgoritmoCompressioneMustBeBasicLatin (line 40) | [TestMethod]
    method FormatoAttachmentIsOptional (line 46) | [TestMethod]
    method FormatoAttachmentMinMaxLength (line 52) | [TestMethod]
    method FormatoAttachmentMustBeBasicLatin (line 58) | [TestMethod]
    method DescrizioneAttachmentIsOptional (line 64) | [TestMethod]
    method DescrizioneAttachmentMinMaxLength (line 70) | [TestMethod]
    method DescrizioneAttachmentMustBeLatin1Supplement (line 76) | [TestMethod]
    method AttachmentIsRequired (line 82) | [TestMethod]

FILE: Test/Ordinaria/AltriDatiGestionaliValidator.cs
  class AltriDatiGestionaliValidator (line 6) | [TestClass]
    method TipoDatoIsRequired (line 10) | [TestMethod]
    method TipoDatoMinMaxLength (line 16) | [TestMethod]
    method TipoDatoMustBeBasicLatin (line 22) | [TestMethod]
    method RiferimentoTestoIsOptional (line 28) | [TestMethod]
    method RiferimentoTestoMinMaxLength (line 34) | [TestMethod]
    method RiferimentoTestoMustBeLatin1Supplement (line 40) | [TestMethod]
    method RiferimentoNumero (line 46) | [TestMethod]

FILE: Test/Ordinaria/BaseDatiDocumentoValidator.cs
  class BaseDatiDocumentoValidator (line 8) | [TestClass]
    method IdDocumentoIsRequired (line 14) | [TestMethod]
    method IdDocumentoMinMaxLength (line 20) | [TestMethod]
    method IdDocumentMustBeBasicLatin (line 26) | [TestMethod]
    method NumItemIsOptional (line 32) | [TestMethod]
    method NumItemMinMaxLength (line 38) | [TestMethod]
    method NumItemMustBeBasicLatin (line 44) | [TestMethod]
    method CodiceCommessaIsOptional (line 50) | [TestMethod]
    method CodiceCommessaMustBeLatin1Supplement (line 56) | [TestMethod]
    method CodiceCommessaMinMaxLength (line 62) | [TestMethod]
    method CodiceCUPIsOptional (line 68) | [TestMethod]
    method CodiceCUPMinMaxLength (line 74) | [TestMethod]
    method CodiceCUPMustBeBasicLatin (line 80) | [TestMethod]
    method CodiceCIGIsOptional (line 86) | [TestMethod]
    method CodiceCIGMinMaxLength (line 92) | [TestMethod]
    method CodiceCIGMustBeBasicLatin (line 98) | [TestMethod]
    method RiferimentoNumeroLineaValidatorMinMax (line 104) | [TestMethod]

FILE: Test/Ordinaria/BaseLocalitàValidator.cs
  class BaseLocalitàValidator (line 8) | [TestClass]
    method IndirizzoIsRequired (line 15) | [TestMethod]
    method IndirizzoMinMaxLength (line 21) | [TestMethod]
    method IndirizzoMustBeLatin1Supplement (line 27) | [TestMethod]
    method NumeroCivicoIsOptional (line 33) | [TestMethod]
    method NumeroCivicoMinMaxLength (line 39) | [TestMethod]
    method CAPIsRequired (line 45) | [TestMethod]
    method CAPLength (line 51) | [TestMethod]
    method CAPMustBeNumeric (line 57) | [TestMethod]
    method ComuneIsRequired (line 69) | [TestMethod]
    method ComuneMinMaxLength (line 75) | [TestMethod]
    method ComuneMustBeLatin1Supplement (line 81) | [TestMethod]
    method ProvinciaOptional (line 87) | [TestMethod]
    method ProvinciaOnlyAcceptsValidValues (line 93) | [TestMethod]
    method NazioneIsRequired (line 99) | [TestMethod]
    method NazioneOnlyAcceptsTableValues (line 105) | [TestMethod]

FILE: Test/Ordinaria/CedentePrestatoreValidator.cs
  class CedentePrestatoreValidator (line 7) | [TestClass]
    method DatiAnagraficiHasChildValidator (line 11) | [TestMethod]
    method SedeHasChildValidator (line 18) | [TestMethod]
    method StabileOrganizzazioneHasChildValidator (line 25) | [TestMethod]
    method IscrizioneREAHasChildValidator (line 32) | [TestMethod]
    method ContattiHasChildValidator (line 39) | [TestMethod]
    method RiferimentoAmministrazioneMinMaxLength (line 46) | [TestMethod]
    method RiferimentoAmministrazioneMustBeBasicLatin (line 52) | [TestMethod]

FILE: Test/Ordinaria/CessionarioCommittenteValidator.cs
  class CessionarioCommittenteValidator (line 7) | [TestClass]
    method DatiAnagraficiHasChildValidator (line 11) | [TestMethod]
    method SedeHasChildValidator (line 18) | [TestMethod]
    method StabileOrganizzazioneHasChildValidator (line 25) | [TestMethod]
    method RappresentateFiscaleHasChildValidator (line 32) | [TestMethod]

FILE: Test/Ordinaria/CodiceArticoloValidator.cs
  class CodiceArticoloValidator (line 6) | [TestClass]
    method CodiceTipoIsRequired (line 10) | [TestMethod]
    method CodiceTipoMinMaxLength (line 16) | [TestMethod]
    method CodiceTipoMustBeBasicLatin (line 22) | [TestMethod]
    method CodiceValoreIsRequired (line 28) | [TestMethod]
    method CodiceValoreMinMaxLength (line 34) | [TestMethod]
    method CodiceValoreMustBeBasicLatin (line 40) | [TestMethod]

FILE: Test/Ordinaria/ContattiTrasmittenteValidator.cs
  class ContattiTrasmittenteValidator (line 7) | [TestClass]
    method TelefonoIsOptional (line 11) | [TestMethod]
    method TelefonoMinMaxLength (line 17) | [TestMethod]
    method EmailIsOptional (line 23) | [TestMethod]
    method EmailMustBeValid (line 29) | [TestMethod]

FILE: Test/Ordinaria/ContattiValidator.cs
  class ContattiValidator (line 7) | [TestClass]
    method TelefonoIsOptional (line 11) | [TestMethod]
    method TelefonoMinMaxLength (line 17) | [TestMethod]
    method FaxIsOptional (line 23) | [TestMethod]
    method FaxMinMaxLength (line 29) | [TestMethod]
    method EmailIsOptional (line 35) | [TestMethod]
    method EmailMustBeValid (line 41) | [TestMethod]

FILE: Test/Ordinaria/DatiAnagraficiCedentePrestatoreValidator.cs
  class DatiAnagraficiCedentePrestatoreValidator (line 9) | [TestClass]
    method IdFiscaleIVAHasChildValidator (line 14) | [TestMethod]
    method CodiceFiscaleIsOptional (line 21) | [TestMethod]
    method CodiceFiscaleMustBeDigitsOrUpperCase (line 27) | [TestMethod]
    method CodiceFiscaleMinMaxLength (line 33) | [TestMethod]
    method AnagraficaHasChildValidator (line 40) | [TestMethod]
    method AlboProfessionalIsOptional (line 47) | [TestMethod]
    method AlboProfessionaleMinMaxLength (line 53) | [TestMethod]
    method AlboProfessionaleMustBeLatin1Supplement (line 59) | [TestMethod]
    method ProvinciaAlboIsOptional (line 65) | [TestMethod]
    method ProvinciaAlboOnlyAcceptsValidValues (line 71) | [TestMethod]
    method NumeroIscrizioneAlboIsOptional (line 77) | [TestMethod]
    method NumeroIscrizioneAlboMinMaxLength (line 83) | [TestMethod]
    method NumeroIscrizioneAlboMustBeBasicLatin (line 89) | [TestMethod]
    method RegimeFiscaleIsRequired (line 95) | [TestMethod]
    method RegimeFiscaleOnlyAcceptsTableValues (line 101) | [TestMethod]

FILE: Test/Ordinaria/DatiAnagraficiCessionarioCommittenteValidator.cs
  class DatiAnagraficiCessionarioCommittenteValidator (line 8) | [TestClass]
    method IdFiscaleIVAHasChildValidator (line 13) | [TestMethod]
    method CodiceFiscaleIsOptional (line 20) | [TestMethod]
    method CodiceFiscaleMustBeDigitsOrUpperCase (line 27) | [TestMethod]
    method CodiceFiscaleMinMaxLength (line 33) | [TestMethod]
    method AnagraficaHasChildValidator (line 39) | [TestMethod]
    method IdFiscaleIVAIsOptional (line 45) | [TestMethod]
    method CodiceFiscaleOrIdFiscaleIVAMustHaveValue (line 55) | [TestMethod]

FILE: Test/Ordinaria/DatiAnagraficiVettoreValidator.cs
  class DatiAnagraficiVettoreValidator (line 7) | [TestClass]
    method IdFiscaleIVAHasChildValidator (line 11) | [TestMethod]
    method CodiceFiscaleIsOptional (line 17) | [TestMethod]
    method CodiceFiscaleMustBeDigitsOrUpperCase (line 23) | [TestMethod]
    method CodiceFiscaleMinMaxLength (line 29) | [TestMethod]
    method AnagraficaHasChildValidator (line 35) | [TestMethod]
    method NumeroLicenzaIsOptional (line 41) | [TestMethod]
    method NumeroLicenzaGuidaMinMaxLength (line 47) | [TestMethod]
    method NumeroLicenzaGuidaMustBeBasicLatin (line 53) | [TestMethod]

FILE: Test/Ordinaria/DatiBeniServiziValidator.cs
  class DatiBeniServiziValidator (line 8) | [TestClass]
    method DettaglioLineeHasCollectionValidator (line 12) | [TestMethod]
    method DettaglioLineeCollectionCannotBeEmpty (line 18) | [TestMethod]
    method DatiRiepilogoCollectionValidator (line 28) | [TestMethod]
    method DatiRiepilogoCollectionCannotBeEmpty (line 34) | [TestMethod]

FILE: Test/Ordinaria/DatiBolloValidator.cs
  class DatiBolloValidator (line 6) | [TestClass]
    method BolloVirtualeIsRequired (line 10) | [TestMethod]
    method BolloVirtualeOnlyAcceptsSIValue (line 15) | [TestMethod]
    method ImportoBollo (line 21) | [TestMethod]

FILE: Test/Ordinaria/DatiCassaPrevidenzialeValidator.cs
  class DatiCassaPrevidenzialeValidator (line 8) | [TestClass]
    method TipoCassaIsRequired (line 12) | [TestMethod]
    method TipoCassaOnlyAcceptsTableValues (line 17) | [TestMethod]
    method NaturaIsRequiredWhenAliquotaIsZero (line 22) | [TestMethod]
    method NaturaIsNotAllowedWhenAliquotaIsNotZero (line 28) | [TestMethod]
    method NaturaOnlyAcceptsTableValuesWhenAliquotaIsZero (line 36) | [TestMethod]
    method NaturaIsOnlyValidatedWhenIsNotZero (line 43) | [TestMethod]
    method RiferimentoAmministrazioneIsOptional (line 51) | [TestMethod]
    method RiferimentoAmministrazioneMinMaxLength (line 56) | [TestMethod]
    method RiferimentoAmministrazioneMustBeBasicLatin (line 61) | [TestMethod]
    method RitenutaIsOptional (line 66) | [TestMethod]
    method RitenutaOnlyAcceptSIValue (line 71) | [TestMethod]
    method ImportoContributoCassa (line 77) | [TestMethod]
    method ImponibileCassa (line 83) | [TestMethod]

FILE: Test/Ordinaria/DatiContrattoValidator.cs
  class DatiContrattoValidator (line 6) | [TestClass]

FILE: Test/Ordinaria/DatiConvenzioneValidator.cs
  class DatiConvenzioneValidator (line 6) | [TestClass]

FILE: Test/Ordinaria/DatiDDTValidator.cs
  class DatiDDTValidator (line 7) | [TestClass]
    method NumeroDDTIsRequired (line 11) | [TestMethod]
    method NumeroDDTMinMaxLength (line 17) | [TestMethod]
    method NumeroDDTMustBeBasicLatin (line 23) | [TestMethod]
    method RiferimentoNumeroLineaValidatorMinMax (line 29) | [TestMethod]

FILE: Test/Ordinaria/DatiFattureCollegateValidator.cs
  class DatiFattureCollegateValidator (line 6) | [TestClass]

FILE: Test/Ordinaria/DatiGeneraliDocumentoValidator.cs
  class DatiGeneraliDocumentoValidator (line 10) | [TestClass]
    method TipoDocumentoIsRequired (line 14) | [TestMethod]
    method TipoDocumentoOnlyAcceptsTableValues (line 20) | [TestMethod]
    method DivisaIsRequired (line 26) | [TestMethod]
    method DivisaOnlyAcceptsTableValues (line 32) | [TestMethod]
    method NumeroIsRequired (line 38) | [TestMethod]
    method NumeroMinMaxLength (line 44) | [TestMethod]
    method NumeroMustBeBasicLatin (line 50) | [TestMethod]
    method NumeroMustHaveAtLeatOneNumericChar (line 56) | [TestMethod]
    method DatiRitenutaHasChildValidator (line 68) | [TestMethod]
    method DatiBolloHasChildValidator (line 75) | [TestMethod]
    method DatiCassaPrevidenzialeHasCollectionValidator (line 82) | [TestMethod]
    method ScontoMaggiorazioneHasCollectionValidator (line 89) | [TestMethod]
    method DatiRitenutaRequiredWhenDatiCassaPrevidenzialeNotEmpty (line 96) | [TestMethod]
    method CausaleHasCollectionValidator (line 118) | [TestMethod]
    method Art73IsOptional (line 124) | [TestMethod]
    method Art73OnlyAcceptsSIValue (line 130) | [TestMethod]
    method PenalitaPagamentiRitardati (line 136) | [TestMethod]
    method ImportoPagamento (line 142) | [TestMethod]

FILE: Test/Ordinaria/DatiGeneraliValidator.cs
  class DatiGeneraliValidator (line 9) | [TestClass]
    method DatiGeneraliDocumentoHasChildValidator (line 12) | [TestMethod]
    method DatiGeneraliDocumentoCannotPredateDatiFattureCollegate (line 19) | [TestMethod]
    method DatiOrdineAcquistoHasChildValidator (line 37) | [TestMethod]
    method DatiContrattoHasChildValidator (line 44) | [TestMethod]
    method DatiConvenzioneHasChildValidator (line 51) | [TestMethod]
    method DatiRicezioneHasChildValidator (line 58) | [TestMethod]
    method DatiFattureCollegateHasChildValidator (line 65) | [TestMethod]
    method DatiDDTHasChildValidator (line 72) | [TestMethod]
    method DatiTrasportoHasChildValidator (line 78) | [TestMethod]
    method FatturaPrincipaleHasChildValidator (line 85) | [TestMethod]
    method DatiSALHasChildValidator (line 92) | [TestMethod]

FILE: Test/Ordinaria/DatiOrdineAcquistoValidator.cs
  class DatiDocumentoValidator (line 6) | [TestClass]

FILE: Test/Ordinaria/DatiPagamentoValidator.cs
  class DatiPagamentoValidator (line 8) | [TestClass]
    method CondizioniPagamentoIsRequired (line 12) | [TestMethod]
    method CondizioniPagamentoOnlyAcceptsTableValues (line 18) | [TestMethod]
    method DettaglioPagamentoHasChildValidator (line 24) | [TestMethod]
    method DettaglioPagamentoCollectionCannotBeEmpty (line 31) | [TestMethod]

FILE: Test/Ordinaria/DatiRicezioneValidator.cs
  class DatiRicezioneValidator (line 6) | [TestClass]

FILE: Test/Ordinaria/DatiRiepilogoValidator.cs
  class DatiRiepilogoValidator (line 8) | [TestClass]
    method NaturaOnlyAcceptsTableValues (line 12) | [TestMethod]
    method NaturaValidateAgainstError00400 (line 18) | [TestMethod]
    method NaturaValidateAgainstError00420 (line 37) | [TestMethod]
    method ImpostaValidateAgainstError00421 (line 50) | [TestMethod]
    method EsigibilitaIVAIsOptional (line 64) | [TestMethod]
    method EsigibilitaIVAOnlyAcceptsTableValues (line 70) | [TestMethod]
    method RiferimentoNormativoIsRequiredWhenNaturaHasValue (line 76) | [TestMethod]
    method RiferimentoNormativoMinMaxLength (line 82) | [TestMethod]
    method RiferimentoNormativoMustBeLatin1Supplement (line 88) | [TestMethod]
    method SpeseAccessorie (line 94) | [TestMethod]
    method ImponibileImporto (line 100) | [TestMethod]
    method Arrotondamento (line 106) | [TestMethod]

FILE: Test/Ordinaria/DatiRitenutaValidator.cs
  class DatiRitenutaValidator (line 7) | [TestClass]
    method TipoRitenutaIsRequired (line 10) | [TestMethod]
    method TipoRitenutaOnlyAcceptsTableValues (line 16) | [TestMethod]
    method CausalePagamentoIsRequired (line 22) | [TestMethod]
    method CausalePagamentoOnlyAcceptsTableValues (line 28) | [TestMethod]
    method ImponibileImporto (line 34) | [TestMethod]

FILE: Test/Ordinaria/DatiSALValidator.cs
  class DatiSALValidator (line 7) | [TestClass]
    method RiferimentoFaseValidatorMinMax (line 11) | [TestMethod]

FILE: Test/Ordinaria/DatiTrasmissioneValidator.cs
  class DatiTrasmissioneValidator (line 9) | [TestClass]
    method IdTrasmittenteHasChildValidator (line 13) | [TestMethod]
    method ProgressivoInvioIsRequired (line 20) | [TestMethod]
    method ContattiTrasmittenteHasChildValidator (line 26) | [TestMethod]
    method ProgressivoInvioMinMaxLength (line 33) | [TestMethod]
    method ProgressivoInvioMustBeBasicLatin (line 39) | [TestMethod]
    method FormatoTrasmissioneIsRequired (line 45) | [TestMethod]
    method FormatoTrasmissioneOnlyAcceptsTableValues (line 51) | [TestMethod]
    method CodiceDestinatarioIsRequired (line 57) | [TestMethod]
    method CodiceDestinatarioMustBeValid (line 63) | [TestMethod]
    method CodiceDestinatarioWhenFormatoTrasmissioneHasValueFPA12 (line 83) | [TestMethod]
    method CodiceDestinatarioWhenFormatoTrasmissioneHasValueFPR12 (line 91) | [TestMethod]
    method PECDestinatarioIsOptional (line 99) | [TestMethod]
    method PECDestinatarioMustBeValid (line 105) | [TestMethod]

FILE: Test/Ordinaria/DatiTrasportoValidator.cs
  class DatiTrasportoValidator (line 8) | [TestClass]
    method DatiAnagraficiVettoreHasChildValidator (line 12) | [TestMethod]
    method MezzoTrasportoIsOptional (line 19) | [TestMethod]
    method MezzoTrasportoMinMaxLength (line 25) | [TestMethod]
    method MezzoTrasportoMinMustBeLatin1Supplement (line 31) | [TestMethod]
    method CausaleTrasportoIsOptional (line 37) | [TestMethod]
    method CausaleTrasportoMinMaxLength (line 43) | [TestMethod]
    method CausaleTrasportoMinMustBeLatin1Supplement (line 49) | [TestMethod]
    method DescrizioneIsOptional (line 55) | [TestMethod]
    method DescrizioneMinMaxLength (line 61) | [TestMethod]
    method DescrizioneMustBeLatin1Supplement (line 67) | [TestMethod]
    method UnitaMisuraPesoIsOptional (line 73) | [TestMethod]
    method UnitaMisuraPesoMinMaxLength (line 79) | [TestMethod]
    method UnitaMisuraPesoMustBeBasicLatin (line 85) | [TestMethod]
    method TipoResaIsOptional (line 91) | [TestMethod]
    method TipoResaOnlyAcceptsTableValues (line 97) | [TestMethod]
    method IndirizzoResaHasChildValidator (line 103) | [TestMethod]
    method PesoNettoMaxValue (line 110) | [TestMethod]
    method PesoLordoMaxValue (line 122) | [TestMethod]
    method NumeroColliMinMax (line 134) | [TestMethod]

FILE: Test/Ordinaria/DatiVeicoliValidator.cs
  class DatiVeicoliValidator (line 6) | [TestClass]
    method TotalePercorsoIsRequired (line 9) | [TestMethod]
    method TotalePercorsoMinMaxLength (line 15) | [TestMethod]
    method TotalePercorsoMustBeBasicLatin (line 21) | [TestMethod]
    method DataIsRequired (line 27) | [TestMethod]

FILE: Test/Ordinaria/DenominazioneNomeCognomeValidator.cs
  class DenominazioneNomeCognomeValidator (line 8) | [TestClass]
    method DenominazioneIsRequiredWhenNomeCognomeIsEmpty (line 14) | [TestMethod]
    method DenominazioneMustBeEmptyWhenNomeCognoneIsNotEmpty (line 25) | [TestMethod]
    method NomeIsRequiredWhenDenominazioneIsEmpty (line 43) | [TestMethod]
    method NomeMustBeEmptyWhenDenominazioneIsNotEmpty (line 53) | [TestMethod]
    method CognomeIsRequiredWhenDenominazioneIsEmpty (line 71) | [TestMethod]
    method CognomeMustBeEmptyWhenDenominazioneIsNotEmpty (line 81) | [TestMethod]

FILE: Test/Ordinaria/DettaglioLineeValidator.cs
  class DettaglioLineeValidator (line 8) | [TestClass]
    method NumeroLineaValidatorMinMax (line 12) | [TestMethod]
    method TipoCessionePrestazioneIsOptional (line 32) | [TestMethod]
    method TipoCessionePrestazioneOnlyAcceptsTableValues (line 38) | [TestMethod]
    method CodiceArticoloHasCollectionValidator (line 44) | [TestMethod]
    method CodiceArticoloCollectionCanBeEmpty (line 51) | [TestMethod]
    method DescrizioneIsRequired (line 57) | [TestMethod]
    method DescrizioneMinMaxLength (line 63) | [TestMethod]
    method DescrizioneMustBeLatin1Supplement (line 69) | [TestMethod]
    method UnitaMisuraIsOptional (line 75) | [TestMethod]
    method UnitaMisuraMinMaxLength (line 81) | [TestMethod]
    method UnitaMisuraMustBeBasicLatin (line 87) | [TestMethod]
    method ScontoMaggioazioneHasChildValidator (line 93) | [TestMethod]
    method ScontoMaggiorazioneCollectionCanBeEmpty (line 100) | [TestMethod]
    method PrezzoTotaleValidatesAgainstError00423 (line 106) | [TestMethod]
    method RitenutaIsOptional (line 230) | [TestMethod]
    method RitenutaOnlyAccepstSIValue (line 236) | [TestMethod]
    method NaturaOnlyAcceptsTableValues (line 242) | [TestMethod]
    method NaturaValidateAgainstError00400 (line 248) | [TestMethod]
    method RiferimentoAmministrazioneIsOptional (line 267) | [TestMethod]
    method RiferimentoAmministrazioneMinMaxLength (line 273) | [TestMethod]
    method RiferimentoAmministrazioneMustBeBasicLatin (line 279) | [TestMethod]
    method AltriDatiGestionaliHasChildValidator (line 285) | [TestMethod]
    method AltriDatiGestionaliCollectionCanBeEmpty (line 292) | [TestMethod]
    method QuantitaIsOptional (line 298) | [TestMethod]
    method QuantitaCannotBeNegative (line 304) | [TestMethod]
    method PrezzoUnitario (line 316) | [TestMethod]
    method AliquotaIvaShouldBeLessOrEqualTo100 (line 322) | [TestMethod]

FILE: Test/Ordinaria/DettaglioPagamentoValidator.cs
  class DettaglioPagamentoValidator (line 8) | [TestClass]
    method BeneficiarioIsOptional (line 12) | [TestMethod]
    method BeneficiarioMisuraMinMaxLength (line 18) | [TestMethod]
    method BeneficiarioMustBeLatin1Supplement (line 24) | [TestMethod]
    method ModalitaPagamentoIsRequired (line 30) | [TestMethod]
    method ModalitaPagamentoOnlyAcceptsTableValues (line 36) | [TestMethod]
    method CodUfficioPostaleIsOptional (line 42) | [TestMethod]
    method CodUfficioPostaleMinMaxLength (line 48) | [TestMethod]
    method CodUfficioPostaleMustBeBasicLatin (line 54) | [TestMethod]
    method CognomeQuietanzanteIsOptional (line 60) | [TestMethod]
    method CognomeQuietanzanteMinMaxLength (line 66) | [TestMethod]
    method CognomeQuietanzanteMustBeLatin1Supplement (line 72) | [TestMethod]
    method NomeQuietanzanteIsOptional (line 78) | [TestMethod]
    method NomeQuietanzanteMinMaxLength (line 84) | [TestMethod]
    method NomeQuietanzanteMustBeLatin1Supplement (line 90) | [TestMethod]
    method CFQuietanzanteIsOptional (line 96) | [TestMethod]
    method CFQuietanzanteMinMaxLength (line 102) | [TestMethod]
    method TitoloQuietanzanteIsOptional (line 108) | [TestMethod]
    method TitoloQuietanzanteMinMaxLength (line 114) | [TestMethod]
    method TitoloQuietanzanteMustBeBasicLatin (line 120) | [TestMethod]
    method IstitutoFinanziarioIsOptional (line 126) | [TestMethod]
    method IstitutoFinanziarioMinMaxLength (line 132) | [TestMethod]
    method IstitutoFinanziarioMustBeLatin1Supplement (line 138) | [TestMethod]
    method IBANIsOptional (line 144) | [TestMethod]
    method IBANMustBeValid (line 150) | [TestMethod]
    method ABIIsOptional (line 166) | [TestMethod]
    method ABIMinMaxLength (line 172) | [TestMethod]
    method CABIsOptional (line 178) | [TestMethod]
    method CABMinMaxLength (line 184) | [TestMethod]
    method BICIsOptional (line 190) | [TestMethod]
    method BICMinMaxLength (line 196) | [TestMethod]
    method CodicePagamentoIsOptional (line 202) | [TestMethod]
    method CodicePagamentoMinMaxLength (line 208) | [TestMethod]
    method CodicePagamentoMustBeBasicLatin (line 214) | [TestMethod]
    method ScontoPagamentoAnticipato (line 220) | [TestMethod]
    method PenalitaPagamentiRitardati (line 226) | [TestMethod]
    method ImportoPagamento (line 232) | [TestMethod]
    method GiorniTerminiPagamentoMinMax (line 237) | [TestMethod]

FILE: Test/Ordinaria/FatturaCreateInstance.cs
  class FatturaCreateInstance (line 7) | [TestClass]
    method CreatePubblicaAmministrazioneInstance (line 12) | [TestMethod]
    method CreatePrivatiInstance (line 20) | [TestMethod]

FILE: Test/Ordinaria/FatturaElettronicaBodyValidator.cs
  class FatturaElettronicaBodyValidator (line 10) | [TestClass]
    method DatiGeneraliHasChildValidator (line 14) | [TestMethod]
    method DatiBeniServiziHasChildValidator (line 21) | [TestMethod]
    method DatiBeniServiziCannotBeEmpty (line 28) | [TestMethod]
    method TipoDocumentoValidateAgainstError00474 (line 36) | [TestMethod]
    method DatiRitenutaValidateAgainstError00411 (line 53) | [TestMethod]
    method DatiRitenutaValidateAgainstError00422 (line 68) | [TestMethod]
    method DatiRitenutaValidateAgainstError00419 (line 85) | [TestMethod]
    method DatiVeicoliHasChildValidator (line 107) | [TestMethod]
    method DatiPagamentoHasChildValidator (line 114) | [TestMethod]
    method AllegatiHasChildValidator (line 121) | [TestMethod]

FILE: Test/Ordinaria/FatturaElettronicaHeaderValidator.cs
  class FatturaElettronicaHeaderValidator (line 9) | [TestClass]
    method DatiTramissioneHasChildValidator (line 13) | [TestMethod]
    method CedentePrestatoreHasChildValidator (line 20) | [TestMethod]
    method RappresentanteFiscaleHasChildValidator (line 27) | [TestMethod]
    method CessionarioCommittenteHasChildValidator (line 34) | [TestMethod]
    method TerzoIntermediarioHasChildValidator (line 41) | [TestMethod]
    method SoggettoEmittenteIsOptional (line 49) | [TestMethod]
    method SoggettoEmittenteOnlyAcceptsTableValues (line 55) | [TestMethod]
    method HeaderValidateAgainstError00313 (line 61) | [TestMethod]
    method HeaderValidateAgainstError00476 (line 79) | [TestMethod]

FILE: Test/Ordinaria/FatturaPrincipaleValidator.cs
  class FatturaPrincipaleValidator (line 6) | [TestClass]
    method NumeroFatturaPrincipaleIsRequired (line 11) | [TestMethod]
    method NumeroFatturaPrinicipaleMinMaxLength (line 17) | [TestMethod]
    method NumeroFatturaPrincipaleMustBeBasicLatin (line 23) | [TestMethod]
    method DataFatturaPrincipaleIsRequired (line 29) | [TestMethod]

FILE: Test/Ordinaria/FatturaValidator.cs
  class FatturaValidator (line 12) | [TestClass]
    method Init (line 15) | [TestInitialize]
    method FatturaElettronicaHeaderHasChildValidator (line 22) | [TestMethod]
    method FatturaElettronicaBodyHasChildValidator (line 30) | [TestMethod]
    method FatturaValidateAgainstError00475 (line 37) | [TestMethod]
    method FatturaValidateAgainstError00473 (line 62) | [TestMethod]
    method FatturaValidateAgainstError00472 (line 90) | [TestMethod]
    method FatturaValidateAgainstError00471 (line 141) | [TestMethod]
    method BodyValidateAgainstError00444 (line 175) | [TestMethod]
    method BodyValidateAgainstError00443 (line 205) | [TestMethod]
    method BodyValidateAgainstError00401 (line 231) | [TestMethod]
    method BodyValidateAgainstError00430 (line 267) | [TestMethod]

FILE: Test/Ordinaria/IscrizioneREAValidator.cs
  class IscrizioneREAValidator (line 7) | [TestClass]
    method UfficioIsRequired (line 11) | [TestMethod]
    method UfficioOnlyAcceptsValidValues (line 17) | [TestMethod]
    method NumeroREAIsRequired (line 23) | [TestMethod]
    method NumeroREAMinMaxLength (line 29) | [TestMethod]
    method NumeroREAMustBeBasicLatin (line 35) | [TestMethod]
    method SocioUnicoIsOptional (line 41) | [TestMethod]
    method SocioUnicoOnlyAcceptsTableValues (line 47) | [TestMethod]
    method StatoLiquidazioneIsRequired (line 53) | [TestMethod]
    method StatoLiquidazioneOnlyAcceptsTableValues (line 59) | [TestMethod]

FILE: Test/Ordinaria/RappresentanteFiscaleCessionarioCommittenteValidator.cs
  class RappresentateFiscaleCessionarioCommittenteValidator (line 7) | [TestClass]
    method IdFiscaleIVAHasChildValidator (line 12) | [TestMethod]

FILE: Test/Ordinaria/RappresentanteFiscaleValidator.cs
  class RappresentanteFiscaleValidator (line 7) | [TestClass]
    method DatiAnagraficiHasDelegateChildValidator (line 11) | [TestMethod]

FILE: Test/Ordinaria/SedeCedentePrestatoreValidator.cs
  class SedeCedentePrestatoreValidator (line 6) | [TestClass]

FILE: Test/Ordinaria/SedeCessionarioCommittenteValidator.cs
  class SedeCessionarioCommittenteValidator (line 6) | [TestClass]

FILE: Test/Ordinaria/TerzoIntermediarioOSoggettoEmittenteValidator.cs
  class TerzoIntermediarioOSoggettoEmittenteValidator (line 7) | [TestClass]
    method DatiAnagraficiHasDelegateChildValidator (line 12) | [TestMethod]

FILE: Test/Semplificata/AllegatiValidator.cs
  class AllegatiValidator (line 6) | [TestClass]
    method NomeAttachmentIsRequired (line 9) | [TestMethod]
    method NomeAttachmentMinMaxLength (line 15) | [TestMethod]
    method NomeAttachmentMustBeLatin1Supplement (line 21) | [TestMethod]
    method AlgoritmoCompressioneIsOptional (line 27) | [TestMethod]
    method AlgoritmoCompressioneMinMaxLength (line 33) | [TestMethod]
    method AlgoritmoCompressioneMustBeBasicLatin (line 39) | [TestMethod]
    method FormatoAttachmentIsOptional (line 45) | [TestMethod]
    method FormatoAttachmentMinMaxLength (line 51) | [TestMethod]
    method FormatoAttachmentMustBeBasicLatin (line 57) | [TestMethod]
    method DescrizioneAttachmentIsOptional (line 63) | [TestMethod]
    method DescrizioneAttachmentMinMaxLength (line 69) | [TestMethod]
    method DescrizioneAttachmentMustBeLatin1Supplement (line 75) | [TestMethod]
    method AttachmentIsRequired (line 81) | [TestMethod]

FILE: Test/Semplificata/AltriDatiIdentificativiValidator.cs
  class AltriDatiIdentificativiValidator (line 7) | [TestClass]
    method DenominazioneIsRequiredWhenNomeCognomeIsEmpty (line 11) | [TestMethod]
    method DenominazioneMustBeEmptyWhenNomeCognoneIsNotEmpty (line 22) | [TestMethod]
    method NomeIsRequiredWhenDenominazioneIsEmpty (line 40) | [TestMethod]
    method NomeMustBeEmptyWhenDenominazioneIsNotEmpty (line 50) | [TestMethod]
    method CognomeIsRequiredWhenDenominazioneIsEmpty (line 68) | [TestMethod]
    method CognomeMustBeEmptyWhenDenominazioneIsNotEmpty (line 78) | [TestMethod]
    method SedeHasChildValidator (line 95) | [TestMethod]
    method StabileOrganizzazioneHasChildValidator (line 102) | [TestMethod]

FILE: Test/Semplificata/CedentePrestatoreValidator.cs
  class CedentePrestatoreValidator (line 8) | [TestClass]
    method IdFiscaleIVAHasChildValidator (line 12) | [TestMethod]
    method CodiceFiscaleIsOptional (line 19) | [TestMethod]
    method CodiceFiscaleMustBeDigitsOrUpperCase (line 25) | [TestMethod]
    method CodiceFiscaleMinMaxLength (line 31) | [TestMethod]
    method DenominazioneIsRequiredWhenNomeCognomeIsEmpty (line 37) | [TestMethod]
    method DenominazioneMustBeEmptyWhenNomeCognoneIsNotEmpty (line 48) | [TestMethod]
    method NomeIsRequiredWhenDenominazioneIsEmpty (line 66) | [TestMethod]
    method NomeMustBeEmptyWhenDenominazioneIsNotEmpty (line 76) | [TestMethod]
    method CognomeIsRequiredWhenDenominazioneIsEmpty (line 94) | [TestMethod]
    method CognomeMustBeEmptyWhenDenominazioneIsNotEmpty (line 104) | [TestMethod]
    method SedeHasChildValidator (line 121) | [TestMethod]
    method StabileOrganizzazioneHasChildValidator (line 128) | [TestMethod]
    method IscrizioneREAHasChildValidator (line 136) | [TestMethod]
    method RegimeFiscaleIsRequired (line 143) | [TestMethod]
    method RegimeFiscaleOnlyAcceptsTableValues (line 149) | [TestMethod]

FILE: Test/Semplificata/CessionarioCommittenteValidator.cs
  class CessionarioCommittenteValidator (line 9) | [TestClass]
    method IdentificativiFiscaliHasChildValidator (line 13) | [TestMethod]
    method IdentificativiFiscaliCannotBeEmpty (line 20) | [TestMethod]
    method AltriDatiIdentificativiHasChildValidator (line 28) | [TestMethod]

FILE: Test/Semplificata/DatiBeniServiziValidator.cs
  class DatiBeniServiziValidator (line 8) | [TestClass]
    method DescrizioneIsRequired (line 12) | [TestMethod]
    method DescrizioneMinMaxLength (line 18) | [TestMethod]
    method DescrizioneMustBeLatin1Supplement (line 24) | [TestMethod]
    method ImportoIsRequired (line 30) | [TestMethod]
    method DatiIVAHasChildValidator (line 36) | [TestMethod]
    method NaturaOnlyAcceptsTableValues (line 43) | [TestMethod]
    method NaturaValidateAgainstError00401 (line 49) | [TestMethod]
    method NaturaValidateAgainstError00400 (line 70) | [TestMethod]
    method RiferimentoNormativoIsOptional (line 86) | [TestMethod]
    method RiferimentoNormativoMinMaxLength (line 92) | [TestMethod]
    method RiferimentoNormativoMustBeBasicLatin (line 98) | [TestMethod]

FILE: Test/Semplificata/DatiGeneraliDocumentoValidator.cs
  class DatiGeneraliDocumentoValidator (line 6) | [TestClass]
    method BolloVirtualeIsOptional (line 10) | [TestMethod]
    method BolloVirtualeOnlyAcceptsSIValue (line 16) | [TestMethod]

FILE: Test/Semplificata/DatiIVAValidator.cs
  class DatiIVAValidator (line 7) | [TestClass]
    method AliquotaOImportoRequired (line 10) | [TestMethod]
    method AliquotaShouldBeLessOrEqualTo100 (line 32) | [TestMethod]

FILE: Test/Semplificata/DatiTrasmissioneValidator.cs
  class DatiTrasmissioneValidator (line 8) | [TestClass]
    method IdTrasmittenteHasChildValidator (line 12) | [TestMethod]
    method ProgressivoInvioIsRequired (line 19) | [TestMethod]
    method ProgressivoInvioMinMaxLength (line 25) | [TestMethod]
    method ProgressivoInvioMustBeBasicLatin (line 31) | [TestMethod]
    method FormatoTrasmissioneIsRequired (line 37) | [TestMethod]
    method FormatoTrasmissioneOnlyAcceptsTableValues (line 43) | [TestMethod]
    method CodiceDestinatarioIsRequired (line 49) | [TestMethod]
    method CodiceDestinatarioMustBeValid (line 55) | [TestMethod]
    method CodiceDestinatarioWhenFormatoTrasmissioneHasValueFSM10 (line 75) | [TestMethod]
    method PECDestinatarioIsOptional (line 83) | [TestMethod]
    method PECDestinatarioMustBeValid (line 89) | [TestMethod]

FILE: Test/Semplificata/FatturaCreateInstance.cs
  class FatturaSemplificataCreateInstance (line 7) | [TestClass]
    method CreateSemplificataInstance (line 12) | [TestMethod]

FILE: Test/Semplificata/FatturaElettronicaBodyValidator.cs
  class FatturaElettronicaBodyValidator (line 9) | [TestClass]
    method DatiGeneraliHasChildValidator (line 13) | [TestMethod]
    method DatiBeniServiziHasChildValidator (line 20) | [TestMethod]
    method DatiBeniServiziCannotBeEmpty (line 27) | [TestMethod]
    method AllegatiHasChildValidator (line 35) | [TestMethod]

FILE: Test/Semplificata/FatturaElettronicaHeaderValidator.cs
  class FatturaElettronicaHeaderValidator (line 9) | [TestClass]
    method DatiTramissioneHasChildValidator (line 14) | [TestMethod]
    method CedentePrestatoreHasChildValidator (line 21) | [TestMethod]
    method CessionarioCommittenteHasChildValidator (line 29) | [TestMethod]
    method SoggettoEmittenteIsOptional (line 37) | [TestMethod]
    method SoggettoEmittenteOnlyAcceptsTableValues (line 43) | [TestMethod]
    method HeaderValidateAgainstError00476 (line 49) | [TestMethod]

FILE: Test/Semplificata/FatturaSemplificataValidator.cs
  class FatturaSemplificataValidator (line 11) | [TestClass]
    method Init (line 15) | [TestInitialize]
    method FatturaElettronicaHeaderHasChildValidator (line 22) | [TestMethod]
    method FatturaElettronicaBodyHasChildValidator (line 30) | [TestMethod]
    method FatturaValidateAgainstError00471 (line 38) | [TestMethod]

FILE: Test/Semplificata/IdentificativiFiscaliValidator.cs
  class IdentificativiFiscaliValidator (line 8) | [TestClass]
    method IdFiscaleIVAHasChildValidator (line 12) | [TestMethod]
    method CodiceFiscaleIsOptional (line 19) | [TestMethod]
    method CodiceFiscaleMustBeDigitsOrUpperCase (line 26) | [TestMethod]
    method CodiceFiscaleMinMaxLength (line 32) | [TestMethod]
    method CodiceFiscaleMustBeInUpperCase (line 38) | [TestMethod]
    method IdFiscaleIVAIsOptional (line 44) | [TestMethod]
    method CodiceFiscaleOrIdFiscaleIVAMustHaveValue (line 54) | [TestMethod]

FILE: Test/Semplificata/XMLDeSerialize.cs
  class XmlDeSerialize (line 10) | [TestClass]
    method SerializeFatturaSemplificataHeader (line 13) | [TestMethod]
    method DeserializeAndThenSerializeOfficialSample (line 19) | [TestMethod]
    method DeserializeAndThenSerialize (line 25) | private void DeserializeAndThenSerialize(string filename)
    method Deserialize (line 47) | private FatturaSemplificata Deserialize(string fileName)
    method ValidateInvoice (line 58) | private void ValidateInvoice(FatturaSemplificata f)
    method SerializeAndAssertRootElementAttributes (line 105) | private void SerializeAndAssertRootElementAttributes(FatturaBase f)

FILE: Test/TestHelpers.cs
  class TestHelpers (line 11) | public static class TestHelpers
    method ShouldHaveDelegatePropertyChildValidator (line 13) | public static void ShouldHaveDelegatePropertyChildValidator<T, TProper...

FILE: Test/XMLDeSerialize.cs
  class XMLDeSerialize (line 12) | [TestClass]
    method SerializePrivatiHeader (line 15) | [TestMethod]
    method SerializePubblicaAmministrazioneHeader (line 27) | [TestMethod]
    method DeserializeAndThenSerializeOfficialPASample (line 39) | [TestMethod]
    method DeserializeAndThenSerializeOfficialPRSample (line 47) | [TestMethod]
    method DeserializeShouldRewindStreams (line 55) | [TestMethod]
    method DeserializeAnyType (line 69) | [TestMethod]
    method DeserializeAndThenSerialize (line 92) | private void DeserializeAndThenSerialize(string filename, string expec...
    method Deserialize (line 114) | private FatturaOrdinaria Deserialize(string fileName)
    method DeserializeWindows1252EncodedXml (line 125) | [TestMethod]
    method DeserializeAny (line 132) | private FatturaBase DeserializeAny(string fileName)
    method ValidateInvoice (line 138) | private void ValidateInvoice(FatturaOrdinaria f, string expectedFormat)
    method SerializeAndAssertRootElementAttributes (line 265) | private void SerializeAndAssertRootElementAttributes(FatturaBase f)

FILE: Validators/AllegatiValidator.cs
  class AllegatiValidator (line 6) | public class AllegatiValidator : AbstractValidator<Allegati>
    method AllegatiValidator (line 8) | public AllegatiValidator()

FILE: Validators/AltriDatiGestionaliValidator.cs
  class AltriDatiGestionaliValidator (line 7) | public class AltriDatiGestionaliValidator : AbstractValidator<AltriDatiG...
    method AltriDatiGestionaliValidator (line 9) | public AltriDatiGestionaliValidator()

FILE: Validators/AnagraficaValidator.cs
  class AnagraficaValidator (line 6) | public class AnagraficaValidator : DenominazioneNomeCognomeValidator<Ana...
    method AnagraficaValidator (line 8) | public AnagraficaValidator()

FILE: Validators/CausaleValidator.cs
  class CausaleValidator (line 5) | public class CausaleValidator : AbstractValidator<string>
    method CausaleValidator (line 7) | public CausaleValidator(int min, int max)

FILE: Validators/CedentePrestatoreValidator.cs
  class CedentePrestatoreValidator (line 6) | public class CedentePrestatoreValidator : AbstractValidator<CedentePrest...
    method CedentePrestatoreValidator (line 8) | public CedentePrestatoreValidator()

FILE: Validators/CessionarioCommittenteValidator.cs
  class CessionarioCommittenteValidator (line 6) | public class CessionarioCommittenteValidator : AbstractValidator<Cession...
    method CessionarioCommittenteValidator (line 8) | public CessionarioCommittenteValidator()

FILE: Validators/CodiceArticoloValidator.cs
  class CodiceArticoloValidator (line 6) | public class CodiceArticoloValidator : AbstractValidator<CodiceArticolo>
    method CodiceArticoloValidator (line 8) | public CodiceArticoloValidator()

FILE: Validators/Constants.cs
  class Constants (line 3) | public class Constants

FILE: Validators/ContattiTrasmittenteValidator.cs
  class ContattiTrasmittenteValidator (line 6) | public class ContattiTrasmittenteValidator : AbstractValidator<ContattiT...
    method ContattiTrasmittenteValidator (line 8) | public ContattiTrasmittenteValidator()

FILE: Validators/ContattiValidator.cs
  class ContattiValidator (line 6) | public class ContattiValidator : AbstractValidator<Contatti>
    method ContattiValidator (line 8) | public ContattiValidator()

FILE: Validators/DatiAnagraficiCedentePrestatoreValidator.cs
  class DatiAnagraficiCedentePrestatoreValidator (line 7) | public class DatiAnagraficiCedentePrestatoreValidator : AbstractValidato...
    method DatiAnagraficiCedentePrestatoreValidator (line 9) | public DatiAnagraficiCedentePrestatoreValidator()

FILE: Validators/DatiAnagraficiCessionarioCommittenteValidator.cs
  class DatiAnagraficiCessionarioCommittenteValidator (line 7) | public class DatiAnagraficiCessionarioCommittenteValidator
    method DatiAnagraficiCessionarioCommittenteValidator (line 10) | public DatiAnagraficiCessionarioCommittenteValidator()

FILE: Validators/DatiAnagraficiRappresentanteFiscaleValidator.cs
  class DatiAnagraficiRappresentanteFiscaleValidator (line 6) | public class DatiAnagraficiRappresentanteFiscaleValidator : AbstractVali...
    method DatiAnagraficiRappresentanteFiscaleValidator (line 8) | public DatiAnagraficiRappresentanteFiscaleValidator()

FILE: Validators/DatiAnagraficiTerzoIntermediarioValidator.cs
  class DatiAnagraficiTerzoIntermediarioValidator (line 6) | public class DatiAnagraficiTerzoIntermediarioValidator : AbstractValidat...
    method DatiAnagraficiTerzoIntermediarioValidator (line 8) | public DatiAnagraficiTerzoIntermediarioValidator()

FILE: Validators/DatiAnagraficiVettoreValidator.cs
  class DatiAnagraficiVettoreValidator (line 6) | public class DatiAnagraficiVettoreValidator : AbstractValidator<DatiAnag...
    method DatiAnagraficiVettoreValidator (line 8) | public DatiAnagraficiVettoreValidator()

FILE: Validators/DatiBeniServiziValidator.cs
  class DatiBeniServiziValidator (line 6) | public class DatiBeniServiziValidator : AbstractValidator<DatiBeniServizi>
    method DatiBeniServiziValidator (line 8) | public DatiBeniServiziValidator()

FILE: Validators/DatiBolloValidator.cs
  class DatiBolloValidator (line 7) | public class DatiBolloValidator : AbstractValidator<DatiBollo>
    method DatiBolloValidator (line 9) | public DatiBolloValidator()

FILE: Validators/DatiCassaPrevidenzialeValidator.cs
  class DatiCassaPrevidenzialeValidator (line 8) | public class DatiCassaPrevidenzialeValidator : AbstractValidator<DatiCas...
    method DatiCassaPrevidenzialeValidator (line 10) | public DatiCassaPrevidenzialeValidator()

FILE: Validators/DatiContrattoValidator.cs
  class DatiContrattoValidator (line 3) | public class DatiContrattoValidator : DatiDocumentoValidator

FILE: Validators/DatiConvenzioneValidator.cs
  class DatiConvenzioneValidator (line 3) | public class DatiConvenzioneValidator : DatiDocumentoValidator

FILE: Validators/DatiDDTValidator.cs
  class DatiDDTValidator (line 7) | public class DatiDDTValidator : AbstractValidator<DatiDDT>
    method DatiDDTValidator (line 9) | public DatiDDTValidator()

FILE: Validators/DatiDocumentoValidator.cs
  class DatiDocumentoValidator (line 7) | public class DatiDocumentoValidator : AbstractValidator<DatiDocumento>
    method DatiDocumentoValidator (line 9) | protected DatiDocumentoValidator()

FILE: Validators/DatiFattureCollegateValidator.cs
  class DatiFattureCollegateValidator (line 3) | public class DatiFattureCollegateValidator : DatiDocumentoValidator

FILE: Validators/DatiGeneraliDocumentoValidator.cs
  class DatiGeneraliDocumentoValidator (line 11) | public class DatiGeneraliDocumentoValidator : AbstractValidator<DatiGene...
    method DatiGeneraliDocumentoValidator (line 13) | public DatiGeneraliDocumentoValidator()

FILE: Validators/DatiGeneraliValidator.cs
  class DatiGeneraliValidator (line 8) | public class DatiGeneraliValidator : AbstractValidator<DatiGenerali>
    method DatiGeneraliValidator (line 10) | public DatiGeneraliValidator()

FILE: Validators/DatiOrdineAcquistoValidator.cs
  class DatiOrdineAcquistoValidator (line 3) | public class DatiOrdineAcquistoValidator : DatiDocumentoValidator

FILE: Validators/DatiPagamentoValidator.cs
  class DatiPagamentoValidator (line 7) | public class DatiPagamentoValidator : AbstractValidator<DatiPagamento>
    method DatiPagamentoValidator (line 9) | public DatiPagamentoValidator()

FILE: Validators/DatiRicezioneValidator.cs
  class DatiRicezioneValidator (line 3) | public class DatiRicezioneValidator : DatiDocumentoValidator

FILE: Validators/DatiRiepilogoValidator.cs
  class DatiRiepilogoValidator (line 11) | public class DatiRiepilogoValidator : AbstractValidator<DatiRiepilogo>
    method DatiRiepilogoValidator (line 13) | public DatiRiepilogoValidator()
    method ImpostaValidateAgainstError00421 (line 48) | private static bool ImpostaValidateAgainstError00421(DatiRiepilogo dat...

FILE: Validators/DatiRitenutaValidator.cs
  class DatiRitenutaValidator (line 8) | public class DatiRitenutaValidator : AbstractValidator<DatiRitenuta>
    method DatiRitenutaValidator (line 10) | public DatiRitenutaValidator()

FILE: Validators/DatiSALValidator.cs
  class DatiSALValidator (line 7) | public class DatiSALValidator : AbstractValidator<DatiSAL>
    method DatiSALValidator (line 9) | public DatiSALValidator()

FILE: Validators/DatiTrasmissioneValidator.cs
  class DatiTrasmissioneValidator (line 7) | public class DatiTrasmissioneValidator : AbstractValidator<DatiTrasmissi...
    method DatiTrasmissioneValidator (line 9) | public DatiTrasmissioneValidator()

FILE: Validators/DatiTrasportoValidator.cs
  class DatiTrasportoValidator (line 8) | public class DatiTrasportoValidator : AbstractValidator<DatiTrasporto>
    method DatiTrasportoValidator (line 10) | public DatiTrasportoValidator()

FILE: Validators/DatiVeicoliValidator.cs
  class DatiVeicoliValidator (line 6) | public class DatiVeicoliValidator : AbstractValidator<DatiVeicoli>
    method DatiVeicoliValidator (line 8) | public DatiVeicoliValidator()

FILE: Validators/DenominazioneNomeCognomeValidator.cs
  class DenominazioneNomeCognomeValidator (line 6) | public abstract class DenominazioneNomeCognomeValidator<T> : AbstractVal...
    method DenominazioneNomeCognomeValidator (line 8) | protected DenominazioneNomeCognomeValidator()

FILE: Validators/DettaglioLineeValidator.cs
  class DettaglioLineeValidator (line 11) | public class DettaglioLineeValidator : AbstractValidator<DettaglioLinee>
    method DettaglioLineeValidator (line 13) | public DettaglioLineeValidator()
    method PrezzoTotaleValidateAgainstError00423 (line 64) | private static bool PrezzoTotaleValidateAgainstError00423(DettaglioLin...

FILE: Validators/DettaglioPagamentoValidator.cs
  class DettaglioPagamentoValidator (line 9) | public class DettaglioPagamentoValidator : AbstractValidator<DettaglioPa...
    method DettaglioPagamentoValidator (line 11) | public DettaglioPagamentoValidator()

FILE: Validators/FatturaElettronicaBodyValidator.cs
  class FatturaElettronicaBodyValidator (line 10) | public class FatturaElettronicaBodyValidator : AbstractValidator<Fattura...
    method FatturaElettronicaBodyValidator (line 12) | public FatturaElettronicaBodyValidator()
    method DatiRitenutaAgainstDettaglioLinee (line 47) | private static bool DatiRitenutaAgainstDettaglioLinee(FatturaElettroni...
    method DatiRiepilogoValidateAgainstError00422 (line 52) | private static bool DatiRiepilogoValidateAgainstError00422(FatturaElet...
    method DatiRiepilogoValidateAgainstError00419 (line 84) | private static bool DatiRiepilogoValidateAgainstError00419(FatturaElet...
    class Totals (line 96) | private class Totals

FILE: Validators/FatturaElettronicaHeaderValidator.cs
  class FatturaElettronicaHeaderValidator (line 8) | public class FatturaElettronicaHeaderValidator : AbstractValidator<Fattu...
    method FatturaElettronicaHeaderValidator (line 10) | public FatturaElettronicaHeaderValidator()
    method HeaderValidateAgainstError00476 (line 38) | private static bool HeaderValidateAgainstError00476(FatturaElettronica...

FILE: Validators/FatturaOrdinariaValidator.cs
  class FatturaOrdinariaValidator (line 10) | public class FatturaOrdinariaValidator : AbstractValidator<FatturaOrdina...
    method FatturaOrdinariaValidator (line 12) | public FatturaOrdinariaValidator()
    method FatturaValidateAgainstError00475 (line 52) | private static bool FatturaValidateAgainstError00475(FatturaOrdinaria ...
    method FatturaValidateAgainstError00473 (line 66) | private static bool FatturaValidateAgainstError00473(FatturaOrdinaria ...
    method FatturaValidateAgainstError00472 (line 81) | private static bool FatturaValidateAgainstError00472(FatturaOrdinaria ...
    method FatturaValidateAgainstError00471 (line 106) | private static bool FatturaValidateAgainstError00471(FatturaOrdinaria ...
    method BodyValidateAgainstError00444 (line 122) | private static bool BodyValidateAgainstError00444(FatturaElettronicaBo...
    method BodyValidateAgainstError00443 (line 137) | private static bool BodyValidateAgainstError00443(FatturaElettronicaBo...
    method BodyValidateAgainstError00401 (line 152) | private bool BodyValidateAgainstError00401(FatturaElettronicaBody body)
    method BodyValidateAgainstError00430 (line 164) | private bool BodyValidateAgainstError00430(FatturaElettronicaBody body)

FILE: Validators/FatturaPrincipaleValidator.cs
  class FatturaPrincipaleValidator (line 6) | public class FatturaPrincipaleValidator : AbstractValidator<FatturaPrinc...
    method FatturaPrincipaleValidator (line 8) | public FatturaPrincipaleValidator()

FILE: Validators/IdFiscaleIVAValidator.cs
  class IdFiscaleIVAValidator (line 7) | public class IdFiscaleIVAValidator : AbstractValidator<IdFiscaleIVA>
    method IdFiscaleIVAValidator (line 9) | public IdFiscaleIVAValidator()

FILE: Validators/IdTrasmittenteValidator.cs
  class IdTrasmittenteValidator (line 3) | public class IdTrasmittenteValidator : IdFiscaleIVAValidator

FILE: Validators/IndirizzoResaValidator.cs
  class IndirizzoResaValidator (line 5) | public class IndirizzoResaValidator : LocalitàBaseValidator<IndirizzoResa>

FILE: Validators/IsValidValidator.cs
  class IsValidValidator (line 10) | public class IsValidValidator<T, TProperty, TTabella> : PropertyValidato...
    method GetDefaultMessageTemplate (line 15) | protected override string GetDefaultMessageTemplate(string errorCode)
    method IsValid (line 20) | public override bool IsValid(ValidationContext<T> context, TProperty v...

FILE: Validators/IscrizioneREAValidator.cs
  class IscrizioneREAValidator (line 7) | public class IscrizioneREAValidator : AbstractValidator<IscrizioneREA>
    method IscrizioneREAValidator (line 9) | public IscrizioneREAValidator()

FILE: Validators/LatinValidators.cs
  class LatinBaseValidator (line 11) | public abstract class LatinBaseValidator<T, TProperty> : PropertyValidat...
    method LatinBaseValidator (line 15) | protected LatinBaseValidator(Charsets charset)
    method GetDefaultMessageTemplate (line 20) | protected override string GetDefaultMessageTemplate(string errorCode)
    method IsValid (line 26) | public override bool IsValid(ValidationContext<T> context, TProperty v...
  class BasicLatinValidator (line 60) | public class BasicLatinValidator<T, TProperty> : LatinBaseValidator<T, T...
    method BasicLatinValidator (line 62) | public BasicLatinValidator() : base(Charsets.BasicLatin)
  class Latin1SupplementValidator (line 67) | public class Latin1SupplementValidator<T, TProperty> : LatinBaseValidato...
    method Latin1SupplementValidator (line 69) | public Latin1SupplementValidator() : base(Charsets.Latin1Supplement)
  type Charsets (line 74) | public enum Charsets
  class MyValidatorExtensions (line 80) | public static class MyValidatorExtensions
    method BasicLatinValidator (line 82) | public static IRuleBuilderOptions<T, TElement> BasicLatinValidator<T, ...
    method Latin1SupplementValidator (line 88) | public static IRuleBuilderOptions<T, TElement> Latin1SupplementValidat...

FILE: Validators/LocalitàBaseValidator.cs
  class LocalitàBaseValidator (line 6) | public abstract class LocalitàBaseValidator<T> : AbstractValidator<T> wh...
    method LocalitàBaseValidator (line 8) | protected LocalitàBaseValidator()

FILE: Validators/RappresentanteFiscaleCessionarioCommittenteValidator.cs
  class RappresentanteFiscaleCessionarioCommittenteValidator (line 5) | public class
    method RappresentanteFiscaleCessionarioCommittenteValidator (line 9) | public RappresentanteFiscaleCessionarioCommittenteValidator()

FILE: Validators/RappresentanteFiscaleValidator.cs
  class RappresentanteFiscaleValidator (line 6) | public class RappresentanteFiscaleValidator : AbstractValidator<Rapprese...
    method RappresentanteFiscaleValidator (line 8) | public RappresentanteFiscaleValidator()

FILE: Validators/ScontoMaggiorazioneValidator.cs
  class ScontoMaggiorazioneValidator (line 8) | public class ScontoMaggiorazioneValidator : AbstractValidator<ScontoMagg...
    method ScontoMaggiorazioneValidator (line 10) | public ScontoMaggiorazioneValidator()

FILE: Validators/SedeCedentePrestatoreValidator.cs
  class SedeCedentePrestatoreValidator (line 5) | public class SedeCedentePrestatoreValidator : LocalitàBaseValidator<Sede...

FILE: Validators/SedeCessionarioCommittenteValidator.cs
  class SedeCessionarioCommittenteValidator (line 5) | public class SedeCessionarioCommittenteValidator : LocalitàBaseValidator...

FILE: Validators/Semplificata/AllegatiValidator.cs
  class AllegatiValidator (line 6) | public class AllegatiValidator : AbstractValidator<Allegati>
    method AllegatiValidator (line 8) | public AllegatiValidator()

FILE: Validators/Semplificata/AltriDatiIdentificativiValidator.cs
  class AltriDatiIdentificativiValidator (line 6) | public class AltriDatiIdentificativiValidator : AbstractValidator<AltriD...
    method AltriDatiIdentificativiValidator (line 10) | public AltriDatiIdentificativiValidator()

FILE: Validators/Semplificata/CedentePrestatoreValidator.cs
  class CedentePrestatoreValidator (line 7) | public class CedentePrestatoreValidator : AbstractValidator<CedentePrest...
    method CedentePrestatoreValidator (line 11) | public CedentePrestatoreValidator()

FILE: Validators/Semplificata/CessionarioCommittenteValidator.cs
  class CessionarioCommittenteValidator (line 7) | public class CessionarioCommittenteValidator : AbstractValidator<Cession...
    method CessionarioCommittenteValidator (line 9) | public CessionarioCommittenteValidator()

FILE: Validators/Semplificata/DatiBeniServiziValidator.cs
  class DatiBeniServiziValidator (line 8) | public class DatiBeniServiziValidator : AbstractValidator<DatiBeniServizi>
    method DatiBeniServiziValidator (line 10) | public DatiBeniServiziValidator()

FILE: Validators/Semplificata/DatiFatturaRettificataValidator.cs
  class DatiFatturaRettificataValidator (line 6) | public class DatiFatturaRettificataValidator : AbstractValidator<DatiFat...
    method DatiFatturaRettificataValidator (line 8) | public DatiFatturaRettificataValidator()

FILE: Validators/Semplificata/DatiGeneraliDocumentoValidator.cs
  class DatiGeneraliDocumentoValidator (line 9) | public class DatiGeneraliDocumentoValidator : AbstractValidator<DatiGene...
    method DatiGeneraliDocumentoValidator (line 11) | public DatiGeneraliDocumentoValidator()

FILE: Validators/Semplificata/DatiGeneraliValidator.cs
  class DatiGeneraliValidator (line 7) | public class DatiGeneraliValidator : AbstractValidator<DatiGenerali>
    method DatiGeneraliValidator (line 9) | public DatiGeneraliValidator()

FILE: Validators/Semplificata/DatiIVAValidator.cs
  class DatiIVAValidator (line 6) | public class DatiIVAValidator : AbstractValidator<DatiIVA>
    method DatiIVAValidator (line 8) | public DatiIVAValidator()

FILE: Validators/Semplificata/DatiTrasmissioneValidator.cs
  class DatiTrasmissioneValidator (line 7) | public class DatiTrasmissioneValidator : AbstractValidator<DatiTrasmissi...
    method DatiTrasmissioneValidator (line 9) | public DatiTrasmissioneValidator()

FILE: Validators/Semplificata/DenominazioneNomeCognomeValidator.cs
  class DenominazioneNomeCognomeValidator (line 6) | public abstract class DenominazioneNomeCognomeValidator<T> : AbstractVal...
    method DenominazioneNomeCognomeValidator (line 8) | protected DenominazioneNomeCognomeValidator()

FILE: Validators/Semplificata/FatturaElettronicaBodyValidator.cs
  class FatturaElettronicaBodyValidator (line 12) | public class FatturaElettronicaBodyValidator : AbstractValidator<Fattura...
    method FatturaElettronicaBodyValidator (line 14) | public FatturaElettronicaBodyValidator()

FILE: Validators/Semplificata/FatturaElettronicaHeaderValidator.cs
  class FatturaElettronicaHeaderValidator (line 8) | public class FatturaElettronicaHeaderValidator : AbstractValidator<Fattu...
    method FatturaElettronicaHeaderValidator (line 10) | public FatturaElettronicaHeaderValidator()
    method HeaderValidateAgainstError00476 (line 27) | private static bool HeaderValidateAgainstError00476(FatturaElettronica...

FILE: Validators/Semplificata/FatturaSemplificataValidator.cs
  class FatturaSemplificataValidator (line 8) | public class FatturaSemplificataValidator : AbstractValidator<FatturaSem...
    method FatturaSemplificataValidator (line 10) | public FatturaSemplificataValidator()
    method FatturaValidateAgainstError00471 (line 26) | private static bool FatturaValidateAgainstError00471(FatturaSemplifica...
    method ImportoTotaleValidateAgainstError00460 (line 37) | private static bool ImportoTotaleValidateAgainstError00460(FatturaSemp...

FILE: Validators/Semplificata/IdentificativiFiscaliValidator.cs
  class IdentificativiFiscaliValidator (line 7) | public class IdentificativiFiscaliValidator : AbstractValidator<Identifi...
    method IdentificativiFiscaliValidator (line 9) | public IdentificativiFiscaliValidator()

FILE: Validators/Semplificata/IscrizioneREAValidator.cs
  class IscrizioneREAValidator (line 7) | public class IscrizioneREAValidator : AbstractValidator<IscrizioneREA>
    method IscrizioneREAValidator (line 9) | public IscrizioneREAValidator()

FILE: Validators/Semplificata/RappresentanteFiscaleCessionarioCommittenteValidator.cs
  class RappresentanteFiscaleCessionarioCommittenteValidator (line 5) | public class
    method RappresentanteFiscaleCessionarioCommittenteValidator (line 9) | public RappresentanteFiscaleCessionarioCommittenteValidator()

FILE: Validators/Semplificata/SedeCedentePrestatoreValidator.cs
  class SedeCedentePrestatoreValidator (line 5) | public class SedeCedentePrestatoreValidator : LocalitàBaseValidator<Sede...

FILE: Validators/Semplificata/SedeCessionarioCommittenteValidator.cs
  class SedeCessionarioCommittenteValidator (line 5) | public class SedeCessionarioCommittenteValidator : LocalitàBaseValidator...

FILE: Validators/Semplificata/StabileOrganizzazioneValidator.cs
  class StabileOrganizzazioneValidator (line 3) | public class StabileOrganizzazioneValidator : LocalitàBaseValidator<Comm...

FILE: Validators/StabileOrganizzazioneValidator.cs
  class StabileOrganizzazioneValidator (line 3) | public class StabileOrganizzazioneValidator : LocalitàBaseValidator<Comm...

FILE: Validators/TerzoIntermediarioOSoggettoEmittenteValidator.cs
  class TerzoIntermediarioOSoggettoEmittenteValidator (line 6) | public class TerzoIntermediarioOSoggettoEmittenteValidator : AbstractVal...
    method TerzoIntermediarioOSoggettoEmittenteValidator (line 8) | public TerzoIntermediarioOSoggettoEmittenteValidator()
Condensed preview — 387 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,365K chars).
[
  {
    "path": ".editorconfig",
    "chars": 2814,
    "preview": "# Suppress: EC103\n# EditorConfig is awesome:http://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Don't u"
  },
  {
    "path": ".github/workflows/publish.yml",
    "chars": 776,
    "preview": "name: Build and Publish NuGet Package\n\non:\n  push:\n    tags:\n      - 'v*'\n\nenv:\n  DOTNET_VERSION: '10.0.x'\n\njobs:\n  buil"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 591,
    "preview": "name: Test\n\non:\n  push:\n    branches:\n      - '**'\n    tags-ignore:\n      - '**'\n  pull_request:\n\njobs:\n  build:\n\n    ru"
  },
  {
    "path": ".gitignore",
    "chars": 2430,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User"
  },
  {
    "path": "AUTHORS.md",
    "chars": 789,
    "preview": "Autori\n======\n\nFatturaElettronica.NET è un progetto [open source][li] aperto alla collaborazione\ndi tutti. Lo sviluppo a"
  },
  {
    "path": "CHANGES.md",
    "chars": 39619,
    "preview": "# Changelog\n\n## In Development\n\n## Stable\n\n### v 4.0.7\n\nReleased on April 2, 2026\n\n- fix: gestione file P7M in formato B"
  },
  {
    "path": "CNAME",
    "chars": 32,
    "preview": "fatturaelettronicaopensource.org"
  },
  {
    "path": "Common/Allegati.cs",
    "chars": 1262,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Common\n{\n    /// <summary>\n    /// Dati relativi ad eventuale allegato."
  },
  {
    "path": "Common/Anagrafica.cs",
    "chars": 880,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Common\n{\n\n    /// <summary>\n    /// Represents a Anagrafica object\n    "
  },
  {
    "path": "Common/DatiAnagrafici.cs",
    "chars": 1216,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Common\n{\n    /// <summary>\n    /// Represents a DatiAnagrafici object\n "
  },
  {
    "path": "Common/DatiDocumento.cs",
    "chars": 2403,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Xml;\n\nnamespace FatturaElettronica.Common\n{\n    /// <summa"
  },
  {
    "path": "Common/DenominazioneNomeCognome.cs",
    "chars": 1556,
    "preview": "using System.Text.Json.Serialization;\nusing System.Xml;\n\nnamespace FatturaElettronica.Common\n{\n\n    /// <summary>\n    /"
  },
  {
    "path": "Common/IdFiscaleIva.cs",
    "chars": 943,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Common\n{\n    /// <summary>\n    /// Numero di identificazione fiscale ai"
  },
  {
    "path": "Common/Località.cs",
    "chars": 1709,
    "preview": "using System.ComponentModel;\nusing System.Xml;\n\nnamespace FatturaElettronica.Common\n{\n\n    /// <summary>\n    /// Repres"
  },
  {
    "path": "Common/RappresentanteFiscale.cs",
    "chars": 964,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Common\n{\n    /// <summary>\n    /// Dati relativi al rappresentante fisc"
  },
  {
    "path": "Common/ScontoMaggiorazione.cs",
    "chars": 973,
    "preview": "namespace FatturaElettronica.Common\n{\n    /// <summary>\n    /// Eventuale sconto o maggiorazione applicati sul totale d"
  },
  {
    "path": "Common/StabileOrganizzazione.cs",
    "chars": 231,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Common\n{\n    public class StabileOrganizzazione : Località\n    {\n      "
  },
  {
    "path": "Core/BaseClass.cs",
    "chars": 7237,
    "preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq"
  },
  {
    "path": "Core/BaseClassSerializable.cs",
    "chars": 22062,
    "preview": "using System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System"
  },
  {
    "path": "Core/DataPropertyAttribute.cs",
    "chars": 739,
    "preview": "using System;\nusing System.Runtime.CompilerServices;\n\nnamespace FatturaElettronica.Core\n{\n    /// <summary>\n    /// Use"
  },
  {
    "path": "Core/IgnoreXmlDateFormat.cs",
    "chars": 339,
    "preview": "using System;\n\nnamespace FatturaElettronica.Core\n{\n    /// <summary>\n    /// Use this attribute to flag DateTime proper"
  },
  {
    "path": "Core/JsonOptions.cs",
    "chars": 397,
    "preview": "namespace FatturaElettronica.Core\n{\n    /// <summary>\n    /// Provides formatting optons for JSON output.\n    /// </sum"
  },
  {
    "path": "Core/JsonParseException.cs",
    "chars": 674,
    "preview": "using System;\r\nusing System.Text.Json;\r\n\r\nnamespace FatturaElettronica.Core\n{\n    /// <summary>\n    /// Json parsing ex"
  },
  {
    "path": "Core/TypeExtensions.cs",
    "chars": 729,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\n\nnamespace FatturaElettroni"
  },
  {
    "path": "Core/XmlOptions.cs",
    "chars": 1226,
    "preview": "namespace FatturaElettronica.Core\n{\n    /// <summary>\n    /// XML serialization options for BusinessObject instances.\n "
  },
  {
    "path": "Defaults.cs",
    "chars": 2138,
    "preview": "namespace FatturaElettronica.Defaults\n{\n    public enum Instance\n    {\n        PubblicaAmministrazione,\n        Privati"
  },
  {
    "path": "Extensions/DecimalRuleExtensions.cs",
    "chars": 1015,
    "preview": "using FluentValidation;\n\nnamespace FatturaElettronica.Extensions\n{\n    internal static class DecimalRuleExtensions\n    "
  },
  {
    "path": "Extensions/FatturaElettronicaExtensions.cs",
    "chars": 1039,
    "preview": "using System;\nusing System.Collections.Concurrent;\nusing System.Reflection;\nusing FatturaElettronica.Core;\nusing FluentV"
  },
  {
    "path": "Extensions/FatturaElettronicaFileNameGenerator/FatturaElettronicaFileNameExtensionType.cs",
    "chars": 143,
    "preview": "namespace FatturaElettronica.Extensions\n{\n    public enum FatturaElettronicaFileNameExtensionType\n    {\n        Plain,\n"
  },
  {
    "path": "Extensions/FatturaElettronicaFileNameGenerator/FatturaElettronicaFileNameGenerator.cs",
    "chars": 4841,
    "preview": "using FatturaElettronica.Common;\nusing FatturaElettronica.Extensions.Resources;\nusing System;\n\nnamespace FatturaElettro"
  },
  {
    "path": "Extensions/HtmlExtensions.cs",
    "chars": 1324,
    "preview": "using System;\nusing System.IO;\nusing System.Text;\nusing System.Xml;\nusing System.Xml.XPath;\nusing System.Xml.Xsl;\n\nname"
  },
  {
    "path": "Extensions/JsonExtensions.cs",
    "chars": 326,
    "preview": "using System.Text;\r\nusing System.Text.Json;\r\n\r\nnamespace FatturaElettronica.Extensions\r\n{\r\n    public static class Json"
  },
  {
    "path": "Extensions/Resources/ErrorMessages.Designer.cs",
    "chars": 3542,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Extensions/Resources/ErrorMessages.en.resx",
    "chars": 542,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version"
  },
  {
    "path": "Extensions/Resources/ErrorMessages.resx",
    "chars": 6493,
    "preview": "<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a "
  },
  {
    "path": "Extensions/SignatureException.cs",
    "chars": 319,
    "preview": "using System;\n\nnamespace FatturaElettronica.Extensions\n{\n    public class SignatureException : Exception\n    {\n        "
  },
  {
    "path": "Extensions/SignedFileExtensions.cs",
    "chars": 5675,
    "preview": "using System;\nusing System.IO;\nusing System.Security.Cryptography;\nusing System.Security.Cryptography.Pkcs;\nusing System"
  },
  {
    "path": "Extensions/StreamExtensions.cs",
    "chars": 2139,
    "preview": "using System;\nusing System.IO;\nusing System.Text.RegularExpressions;\n\nnamespace FatturaElettronica.Extensions\n{\n    pub"
  },
  {
    "path": "Extensions/XmlExtensions.cs",
    "chars": 1064,
    "preview": "using System.IO;\nusing System.Xml;\n\nnamespace FatturaElettronica.Extensions\n{\n    public static class XmlExtensions\n   "
  },
  {
    "path": "FUNDING.yml",
    "chars": 21,
    "preview": "github: nicolaiarocci"
  },
  {
    "path": "FatturaBase.cs",
    "chars": 4655,
    "preview": "using System;\nusing System.IO;\nusing System.Security.Cryptography;\nusing System.Text;\nusing System.Xml;\nusing FatturaEle"
  },
  {
    "path": "FatturaElettronica.csproj",
    "chars": 2027,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netstandard2.0</TargetFramework>\n    <Generat"
  },
  {
    "path": "FatturaElettronica.csproj.DotSettings",
    "chars": 476,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "FatturaElettronica.sln",
    "chars": 2955,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 15\nVisualStudioVersion = 15.0.26730.12\nMin"
  },
  {
    "path": "FatturaElettronica.sln.DotSettings",
    "chars": 1968,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "LICENSE.txt",
    "chars": 1598,
    "preview": "Copyright (c) 2017 by Nicola Iarocci, Gestionali Amica and contributors. See \nAUTHORS for more details.\n\nSome rights res"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiBeniServizi/AltriDatiGestionali.cs",
    "chars": 1423,
    "preview": "using System;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiBeniServizi/CodiceArticolo.cs",
    "chars": 853,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiBeniServizi/DatiBeniServizi.cs",
    "chars": 1440,
    "preview": "using System.Collections.Generic;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSeri"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo.cs",
    "chars": 2182,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee.cs",
    "chars": 4706,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSeria"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiAnagraficiVettore.cs",
    "chars": 515,
    "preview": "using System.Xml;\nusing FatturaElettronica.Common;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiG"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiBollo.cs",
    "chars": 915,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiCassaPrevidenziale.cs",
    "chars": 2185,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiContratto.cs",
    "chars": 337,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali\n{\n    /// <summary>\n    /"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiConvenzione.cs",
    "chars": 348,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali\n{\n    /// <summary>\n    /"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiDDT.cs",
    "chars": 1675,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiFattureCollegate.cs",
    "chars": 571,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali\n{\n    /// <summary>\n    /"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiGenerali.cs",
    "chars": 3945,
    "preview": "using System.Collections.Generic;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSeri"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento.cs",
    "chars": 3645,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSeria"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiOrdineAcquisto.cs",
    "chars": 362,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali\n{\n    /// <summary>\n    /"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiRicezione.cs",
    "chars": 435,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali\n{\n    /// <summary>\n    /"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiRitenuta.cs",
    "chars": 1317,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiSAL.cs",
    "chars": 884,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/DatiTrasporto.cs",
    "chars": 3351,
    "preview": "using System;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/FatturaPrincipale.cs",
    "chars": 1312,
    "preview": "using System;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiGenerali/IndirizzoResa.cs",
    "chars": 253,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaBody.DatiGenerali\n{\n    public class Indiri"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiPagamento/DatiPagamento.cs",
    "chars": 943,
    "preview": "using System.Collections.Generic;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSeri"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiPagamento/DettaglioPagamento.cs",
    "chars": 5113,
    "preview": "using System;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/DatiVeicoli/DatiVeicoli.cs",
    "chars": 859,
    "preview": "using System;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace"
  },
  {
    "path": "Ordinaria/FatturaElettronicaBody/FatturaElettronicaBody.cs",
    "chars": 1749,
    "preview": "using System.Collections.Generic;\nusing System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSerializable = Fatt"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/CedentePrestatore/CedentePrestatore.cs",
    "chars": 2218,
    "preview": "using System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSeria"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/CedentePrestatore/Contatti.cs",
    "chars": 943,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/CedentePrestatore/DatiAnagraficiCedentePrestatore.cs",
    "chars": 1432,
    "preview": "using System;\nusing System.Xml;\nusing FatturaElettronica.Common;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettro"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/CedentePrestatore/IscrizioneRea.cs",
    "chars": 1590,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/CedentePrestatore/SedeCedentePrestatore.cs",
    "chars": 284,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CedentePrestatore\n{\n    public class"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/CessionarioCommittente.cs",
    "chars": 2151,
    "preview": "using System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSeria"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/DatiAnagraficiCessionarioCommittente.cs",
    "chars": 493,
    "preview": "using System.Xml;\nusing FatturaElettronica.Common;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.Ces"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/RappresentanteFiscaleCessionarioCommittente.cs",
    "chars": 922,
    "preview": "using System.Xml;\nusing FatturaElettronica.Common;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.Ces"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/CessionarioCommittente/SedeCessionarioCommittente.cs",
    "chars": 305,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.CessionarioCommittente\n{\n    public "
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/DatiTrasmissione/ContattiTrasmittente.cs",
    "chars": 774,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/DatiTrasmissione/DatiTrasmissione.cs",
    "chars": 2324,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente.cs",
    "chars": 290,
    "preview": "using System.Xml;\nusing FatturaElettronica.Common;\n\nnamespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.Dat"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/FatturaElettronicaHeader.cs",
    "chars": 2757,
    "preview": "using System.Text.Json.Serialization;\nusing System.Xml;\nusing System.Xml.Serialization;\n\nnamespace FatturaElettronica.O"
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/RappresentanteFiscale/RappresentanteFiscale.cs",
    "chars": 276,
    "preview": "namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.RappresentanteFiscale\n{\n    /// <summary>\n    /// Dati "
  },
  {
    "path": "Ordinaria/FatturaElettronicaHeader/TerzoIntermediarioOSoggettoEmittente/TerzoIntermediarioOSoggettoEmittente.cs",
    "chars": 327,
    "preview": "namespace FatturaElettronica.Ordinaria.FatturaElettronicaHeader.TerzoIntermediarioOSoggettoEmittente\n{\n    /// <summary"
  },
  {
    "path": "Ordinaria/FatturaOrdinaria.cs",
    "chars": 2393,
    "preview": "using System.Collections.Generic;\nusing FatturaElettronica.Defaults;\n\nnamespace FatturaElettronica.Ordinaria\n{\n    publ"
  },
  {
    "path": "README.md",
    "chars": 2589,
    "preview": "# Fattura Elettronica per .NET\r\n\r\n![Test](https://github.com/FatturaElettronica/FatturaElettronica.NET/workflows/Test/b"
  },
  {
    "path": "Resources/CausalePagamento.Designer.cs",
    "chars": 16887,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/CausalePagamento.de.resx",
    "chars": 8974,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/CausalePagamento.en.resx",
    "chars": 8146,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  "
  },
  {
    "path": "Resources/CausalePagamento.resx",
    "chars": 9148,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/CondizioniPagamento.Designer.cs",
    "chars": 3620,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/CondizioniPagamento.de.resx",
    "chars": 804,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/CondizioniPagamento.en.resx",
    "chars": 843,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  "
  },
  {
    "path": "Resources/CondizioniPagamento.resx",
    "chars": 1068,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/Divisa.Designer.cs",
    "chars": 49540,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/Divisa.resx",
    "chars": 13522,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/EsigibilitaIVA.Designer.cs",
    "chars": 3619,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/EsigibilitaIVA.de.resx",
    "chars": 825,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/EsigibilitaIVA.en.resx",
    "chars": 842,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  "
  },
  {
    "path": "Resources/EsigibilitaIVA.resx",
    "chars": 1096,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/FormatoTrasmissione.Designer.cs",
    "chars": 3748,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/FormatoTrasmissione.de.resx",
    "chars": 892,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/FormatoTrasmissione.en.resx",
    "chars": 942,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  "
  },
  {
    "path": "Resources/FormatoTrasmissione.resx",
    "chars": 1166,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/IdPaese.Designer.cs",
    "chars": 70603,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/IdPaese.de.resx",
    "chars": 20825,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/IdPaese.en.resx",
    "chars": 20800,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version"
  },
  {
    "path": "Resources/IdPaese.resx",
    "chars": 21726,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/ModalitaPagamento.Designer.cs",
    "chars": 9184,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/ModalitaPagamento.de.resx",
    "chars": 2517,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/ModalitaPagamento.en.resx",
    "chars": 2701,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  "
  },
  {
    "path": "Resources/ModalitaPagamento.resx",
    "chars": 2840,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/Natura.Designer.cs",
    "chars": 9457,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/Natura.de.resx",
    "chars": 3336,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/Natura.en.resx",
    "chars": 3358,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  "
  },
  {
    "path": "Resources/Natura.resx",
    "chars": 3538,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/NaturaSemplificata.Designer.cs",
    "chars": 6699,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/NaturaSemplificata.de.resx",
    "chars": 2083,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/NaturaSemplificata.en.resx",
    "chars": 1958,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  "
  },
  {
    "path": "Resources/NaturaSemplificata.resx",
    "chars": 2253,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/Provincia.Designer.cs",
    "chars": 32230,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/Provincia.de.resx",
    "chars": 9139,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/Provincia.en.resx",
    "chars": 9191,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  "
  },
  {
    "path": "Resources/Provincia.resx",
    "chars": 9415,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/RegimeFiscale.Designer.cs",
    "chars": 5029,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/RegimeFiscale.de.resx",
    "chars": 3073,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/RegimeFiscale.en.resx",
    "chars": 3665,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
  },
  {
    "path": "Resources/RegimeFiscale.resx",
    "chars": 3214,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/ScontoMaggiorazione.Designer.cs",
    "chars": 3327,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/ScontoMaggiorazione.de.resx",
    "chars": 697,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/ScontoMaggiorazione.en.resx",
    "chars": 957,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
  },
  {
    "path": "Resources/ScontoMaggiorazione.resx",
    "chars": 969,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/SocioUnico.Designer.cs",
    "chars": 3291,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/SocioUnico.de.resx",
    "chars": 725,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/SocioUnico.en.resx",
    "chars": 719,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version"
  },
  {
    "path": "Resources/SocioUnico.resx",
    "chars": 969,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/SoggettoEmittente.Designer.cs",
    "chars": 3328,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/SoggettoEmittente.de.resx",
    "chars": 712,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/SoggettoEmittente.en.resx",
    "chars": 710,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version"
  },
  {
    "path": "Resources/SoggettoEmittente.resx",
    "chars": 978,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/StatoLiquidazione.Designer.cs",
    "chars": 3334,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/StatoLiquidazione.de.resx",
    "chars": 717,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/StatoLiquidazione.en.resx",
    "chars": 714,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version"
  },
  {
    "path": "Resources/StatoLiquidazione.resx",
    "chars": 984,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/TipoCassa.Designer.cs",
    "chars": 9800,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/TipoCassa.de.resx",
    "chars": 3572,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/TipoCassa.en.resx",
    "chars": 4326,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n "
  },
  {
    "path": "Resources/TipoCassa.resx",
    "chars": 3672,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/TipoCessionePrestazione.Designer.cs",
    "chars": 3875,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/TipoCessionePrestazione.de.resx",
    "chars": 852,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/TipoCessionePrestazione.en.resx",
    "chars": 898,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n "
  },
  {
    "path": "Resources/TipoCessionePrestazione.resx",
    "chars": 1125,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/TipoDocumento.Designer.cs",
    "chars": 9001,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/TipoDocumento.de.resx",
    "chars": 3136,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/TipoDocumento.en.resx",
    "chars": 2983,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version"
  },
  {
    "path": "Resources/TipoDocumento.resx",
    "chars": 3234,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/TipoDocumentoSemplificata.Designer.cs",
    "chars": 3677,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/TipoDocumentoSemplificata.de.resx",
    "chars": 827,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/TipoDocumentoSemplificata.en.resx",
    "chars": 819,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version"
  },
  {
    "path": "Resources/TipoDocumentoSemplificata.resx",
    "chars": 1101,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/TipoResa.Designer.cs",
    "chars": 5851,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/TipoResa.de.resx",
    "chars": 1568,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/TipoResa.en.resx",
    "chars": 1528,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version"
  },
  {
    "path": "Resources/TipoResa.resx",
    "chars": 1834,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/TipoRitenuta.Designer.cs",
    "chars": 4467,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/TipoRitenuta.de.resx",
    "chars": 1109,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"versio"
  },
  {
    "path": "Resources/TipoRitenuta.en.resx",
    "chars": 1123,
    "preview": "<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version"
  },
  {
    "path": "Resources/TipoRitenuta.resx",
    "chars": 1373,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Resources/ValidatorMessages.Designer.cs",
    "chars": 7723,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Resources/ValidatorMessages.de.resx",
    "chars": 6782,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
  },
  {
    "path": "Resources/ValidatorMessages.en.resx",
    "chars": 5907,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  "
  },
  {
    "path": "Resources/ValidatorMessages.resx",
    "chars": 6709,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSc"
  },
  {
    "path": "Semplificata/FatturaElettronicaBody/DatiBeniServizi/DatiBeniServizi.cs",
    "chars": 1909,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Semplificata/FatturaElettronicaBody/DatiBeniServizi/DatiIVA.cs",
    "chars": 963,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Semplificata/FatturaElettronicaBody/DatiGenerali/DatiFatturaRettificata.cs",
    "chars": 1362,
    "preview": "using System;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace"
  },
  {
    "path": "Semplificata/FatturaElettronicaBody/DatiGenerali/DatiGenerali.cs",
    "chars": 1394,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Semplificata/FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento.cs",
    "chars": 1787,
    "preview": "using System;\nusing System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace"
  },
  {
    "path": "Semplificata/FatturaElettronicaBody/FatturaElettronicaBody.cs",
    "chars": 1282,
    "preview": "using System.Collections.Generic;\nusing System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSerializable = Fatt"
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/CedentePrestatore/CedentePrestatore.cs",
    "chars": 3782,
    "preview": "using System.Text.Json.Serialization;\nusing System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSerializable = "
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/CedentePrestatore/IscrizioneRea.cs",
    "chars": 1593,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/CedentePrestatore/RappresentanteFiscale.cs",
    "chars": 2120,
    "preview": "using System.Text.Json.Serialization;\nusing System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSerializable = "
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/CedentePrestatore/SedeCedentePrestatore.cs",
    "chars": 287,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Semplificata.FatturaElettronicaHeader.CedentePrestatore\n{\n    public cl"
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/CessionarioCommittente/AltriDatiIdentificativi.cs",
    "chars": 2797,
    "preview": "using System.Text.Json.Serialization;\nusing System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSerializable = "
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/CessionarioCommittente/CessionarioCommittente.cs",
    "chars": 1292,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/CessionarioCommittente/IdentificativiFiscali.cs",
    "chars": 1189,
    "preview": "using System.Xml;\nusing FatturaElettronica.Common;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSeria"
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/CessionarioCommittente/RappresentanteFiscaleCessionarioCommittente.cs",
    "chars": 924,
    "preview": "using System.Xml;\nusing FatturaElettronica.Common;\n\nnamespace FatturaElettronica.Semplificata.FatturaElettronicaHeader."
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/CessionarioCommittente/SedeCessionarioCommittente.cs",
    "chars": 306,
    "preview": "using System.Xml;\n\nnamespace FatturaElettronica.Semplificata.FatturaElettronicaHeader.CessionarioCommittente\n{\n  public"
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/DatiTrasmissione/DatiTrasmissione.cs",
    "chars": 2092,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente.cs",
    "chars": 293,
    "preview": "using System.Xml;\nusing FatturaElettronica.Common;\n\nnamespace FatturaElettronica.Semplificata.FatturaElettronicaHeader."
  },
  {
    "path": "Semplificata/FatturaElettronicaHeader/FatturaElettronicaHeader.cs",
    "chars": 1966,
    "preview": "using System.Xml;\nusing BaseClassSerializable = FatturaElettronica.Core.BaseClassSerializable;\n\nnamespace FatturaElettr"
  },
  {
    "path": "Semplificata/FatturaSemplificata.cs",
    "chars": 2200,
    "preview": "using System.Collections.Generic;\nusing FatturaElettronica.Defaults;\n\nnamespace FatturaElettronica.Semplificata\n{\n    p"
  },
  {
    "path": "Tabelle/CausalePagamento.cs",
    "chars": 247,
    "preview": "using System.Resources;\n\nnamespace FatturaElettronica.Tabelle\n{\n    public class CausalePagamento : Tabella<CausalePaga"
  },
  {
    "path": "Tabelle/CondizioniPagamento.cs",
    "chars": 256,
    "preview": "using System.Resources;\n\nnamespace FatturaElettronica.Tabelle\n{\n    public class CondizioniPagamento : Tabella<Condizio"
  },
  {
    "path": "Tabelle/Divisa.cs",
    "chars": 217,
    "preview": "using System.Resources;\n\nnamespace FatturaElettronica.Tabelle\n{\n    public class Divisa : Tabella<Divisa>\n    {\n       "
  },
  {
    "path": "Tabelle/EsigibilitaIVA.cs",
    "chars": 241,
    "preview": "using System.Resources;\n\nnamespace FatturaElettronica.Tabelle\n{\n    public class EsigibilitaIVA : Tabella<EsigibilitaIV"
  },
  {
    "path": "Tabelle/FormatoTrasmissione.cs",
    "chars": 738,
    "preview": "namespace FatturaElettronica.Tabelle\n{\n    public class FormatoTrasmissione : Tabella\n    {\n        public override Tab"
  },
  {
    "path": "Tabelle/IdPaese.cs",
    "chars": 220,
    "preview": "using System.Resources;\n\nnamespace FatturaElettronica.Tabelle\n{\n    public class IdPaese : Tabella<IdPaese>\n    {\n     "
  },
  {
    "path": "Tabelle/ModalitaPagamento.cs",
    "chars": 250,
    "preview": "using System.Resources;\n\nnamespace FatturaElettronica.Tabelle\n{\n    public class ModalitaPagamento : Tabella<ModalitaPa"
  }
]

// ... and 187 more files (download for full content)

About this extraction

This page contains the full source code of the FatturaElettronica/FatturaElettronica.NET GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 387 files (1.2 MB), approximately 331.5k tokens, and a symbol index with 1140 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!