Skip to content

Libreria per la gestione della Fatturazione Elettronica italiana

License

Notifications You must be signed in to change notification settings

devcode-it/fattura-elettronica

 
 

Repository files navigation

Latest Version on Packagist Build Status Total Downloads License

Libreria Fattura Elettronica

Libreria per la gestione della Fatturazione elettronica per la creazione delle fatture elettroniche italiane.

La libreria nasce originalmente come fork della versione 1.1.12 di deved-it/fattura-elettronica, ma presenta una logica distinta.

  • Generazione automatica delle strutture rilevanti sulla base del tracciato ufficiale
  • Gestione automatica delle tipologie di campi e le rispettive caratteristiche
  • Validazione tecnica sulla base dello schema ufficiale
  • Supporto a Fattura Ordinaria e Fattura Semplificata

Installazione

Per ora non è disponibile un pacchetto registrato tramite Composer.

Aggiornamento contenuti

L'aggiornamento delle classi disponibili per la fattura elettronica può essere effettuato tramite il comando composer generate.

Se si desidera usare la variante in Python per la generazione, eseguire manualmente il file build/generate.py in Python e poi eseguire composer format per sistemare la formattazione dei contenuti PHP.

Questo script sovrascriverà i contenuti delle cartelle src/Semplificata e src/Ordinaria con classi aggiornate sulla base dei contenuti del file Excel con i dettagli dello schema.

Riferimento per lo schema ufficiale: https://www.agenziaentrate.gov.it/portale/web/guest/specifiche-tecniche-versione-1.8

Generazione fattura

<?php

require_once __DIR__.'/vendor/autoload.php';

use DevCode\FatturaElettronica\FatturaOrdinaria;
use DevCode\FatturaElettronica\Ordinaria\FatturaElettronicaBody\DatiBeniServizi\DatiRiepilogo;
use DevCode\FatturaElettronica\Ordinaria\FatturaElettronicaBody\DatiBeniServizi\DettaglioLinee;
use DevCode\FatturaElettronica\Ordinaria\FatturaElettronicaBody\DatiGenerali\DatiGeneraliDocumento\TipoDocumento;
use DevCode\FatturaElettronica\Ordinaria\FatturaElettronicaHeader\CedentePrestatore\DatiAnagrafici as DatiAnagraficiCedentePrestatore;
use DevCode\FatturaElettronica\Ordinaria\FatturaElettronicaHeader\CedentePrestatore\DatiAnagrafici\RegimeFiscale;
use DevCode\FatturaElettronica\Ordinaria\FatturaElettronicaHeader\CedentePrestatore\Sede as SedeCedentePrestatore;
use DevCode\FatturaElettronica\Ordinaria\FatturaElettronicaHeader\CessionarioCommittente\DatiAnagrafici as DatiAnagraficiCessionarioCommittente;
use DevCode\FatturaElettronica\Ordinaria\FatturaElettronicaHeader\CessionarioCommittente\Sede as SedeCessionarioCommittente;

$fattura = FatturaOrdinaria::build(
    TipoDocumento::TD01,
    '2018-11-22',
    '2018221111',
    '001'
);

$fattura->getFatturaElettronicaHeader()
    ->getDatiTrasmissione()
    ->getIdTrasmittente()
    ->setIdPaese('IT')
    ->setIdCodice('01234567890');

$fattura->getFatturaElettronicaHeader()
->getDatiTrasmissione()
->setCodiceDestinatario('ABC1234');

// Anagrafica cedente
$anagraficaCedente = (new DatiAnagraficiCedentePrestatore())
    ->setRegimeFiscale(RegimeFiscale::RF01->value);
$anagraficaCedente->IdFiscaleIVA->setIdPaese('IT');
$anagraficaCedente->IdFiscaleIVA->setIdCodice('12345678901');

$anagraficaCedente->Anagrafica
    ->setDenominazione('Acme SpA');

$sedeCedente = (new SedeCedentePrestatore())
    ->setIndirizzo('Via Roma 10')
    ->setCAP('33018')
    ->setComune('Tarvisio')
    ->setProvincia('UD')
    ->setNazione('IT');

$cedente = $fattura->getCedentePrestatore()
    ->setDatiAnagrafici($anagraficaCedente)
    ->setSede($sedeCedente);

// Anagrafica cessionario
$anagraficaCessionario = (new DatiAnagraficiCessionarioCommittente())
    ->setCodiceFiscale('XYZYZX77M04H888K');
$anagraficaCessionario->Anagrafica->setDenominazione('Pinco Palla');

$sedeCessionario = (new SedeCessionarioCommittente())
    ->setIndirizzo('Via Diaz 35')
    ->setCAP('33018')
    ->setComune('Tarvisio')
    ->setProvincia('UD')
    ->setNazione('IT');
$cessionario = $fattura->getCessionarioCommittente();
$cessionario->setDatiAnagrafici($anagraficaCessionario);
$cessionario->setSede($sedeCessionario);

$fattura->getDatiGenerali()
    ->getDatiGeneraliDocumento()
    ->setImportoTotaleDocumento(122)
    ->setDivisa('EUR');

$linea = (new DettaglioLinee())
    ->setDescrizione('Articolo1')
    ->setPrezzoUnitario(60)
    ->setPrezzoTotale(120)
    ->setAliquotaIVA(10);
$fattura->getDatiBeniServizi()->addDettaglioLinee($linea);

$riepliogo = (new DatiRiepilogo())
    ->setAliquotaIVA(22)
    ->setImponibileImporto(5)
    ->setImposta(1.1)
    ->setEsigibilitaIVA('I');
$fattura->getDatiBeniServizi()->addDatiRiepilogo($riepliogo);

// Generazione
$xml = $fattura->__toString();
$filename = $fattura->getFileName();
$isValid = $fattura->validator()->isValid();
$errors = $fattura->validator()->getErrors();

Lettura fattura elettronica

<?php

require __DIR__.'/vendor/autoload.php';

use DevCode\FatturaElettronica\FatturaElettronica;

// Lettura
$fattura = FatturaElettronica::parse(__DIR__.'/test.xml');

About

Libreria per la gestione della Fatturazione Elettronica italiana

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 96.2%
  • Python 3.8%