Skip to content

Libreria SDK PHP per la generazione veloce di una Fattura elettronica italiana in XML (formato FatturaPA)

Notifications You must be signed in to change notification settings

s2software/fatturapa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FatturaPA

Libreria SDK PHP per la generazione veloce di una Fattura elettronica italiana in XML (formato FatturaPA)

Esempio utilizzo

Include e inizializza classe

require_once('/path/to/fatturapa.php');
$fatturapa = new FatturaPA('FPR12');	// Formato - https://git.io/fhm9g (default: FPR12 = Privati)

Costanti

  • formato (opzionale da passare al costruttore)

Imposta trasmittente (opzionale, altrimenti vengono presi i dati dal mittente)

$fatturapa->set_trasmittente([
  'paese' => "IT",
  'codice' => "CODFSC12A34H567U", // https://forum.italia.it/t/dati-trasmittente-p-iva-o-cf/6883/14
]);

Imposta mittente (fornitore)

// Imposta mittente (fornitore)
$fatturapa->set_mittente([
  // Dati azienda emittente fattura
  'ragsoc' => "La Mia Ditta Srl",
  'indirizzo' => "Via Italia 12",
  'cap' => "00100",
  'comune' => "Roma",
  'prov' => "RM",
  'paese' => "IT",
  'piva' => "01234567890",
  //'codfisc' => "CODFSC23A45H671U",
  // Regime fiscale - https://git.io/fhmMd (default: RF01 = ordinario)
  'regimefisc' => "RF19",
]);

Costanti

Imposta destinatario (cliente)

$fatturapa->set_destinatario([
  // Dati cliente destinatario fattura
  'ragsoc' => "Il Mio Cliente Spa",
  'indirizzo' => "Via Roma 24",
  'cap' => "20121",
  'comune' => "Milano",
  'prov' => "MI",
  'paese' => "IT",
  'piva' => "12345678901",
  //'codfisc' => "CODFSC23A45H671U",
  // Dati SdI (Sistema di Interscambio) del destinatario/cliente
  'sdi_codice' => "1234567",    // Codice destinatario - da impostare in alternativa alla PEC
  'sdi_pec' => "pec@test.com",  // PEC destinatario - da impostare in alternativa al Codice		
]);

Imposta altri dati intestazione fattura

// Imposta dati intestazione fattura
$fatturapa->set_intestazione([
  // Tipo documento - https://git.io/fhmMb (default = TD01 = fattura)
  'tipodoc' => "TD01",
  // Valuta (default = EUR)
  'valuta' => "EUR",
  // Data e numero fattura
  'data' => "2019-01-07",
  'numero' => "2019/01",
]);

Costanti

Composizione righe dettaglio

$imp[1] = 1200;
$imp[2] = 300;
$impTot = 0;
foreach ($imp as $n => $impX)
{
  $fatturapa->add_riga([
    // Numero progressivo riga dettaglio
    'num' => $n,
    // Descrizione prodotto/servizio
    'descrizione' => "Realizzazione sito internet $n",
    // Prezzo unitario del prodotto/servizio
    'prezzo' => FatturaPA::dec($impX),
    // Quantità
    'qta' => FatturaPA::dec(1),
    // Prezzo totale (prezzo x qta)
    'importo' => FatturaPA::dec($impX), // imponibile riga
    // % aliquota IVA
    'perciva' => FatturaPA::dec(22),
    // (Natura IVA non indicata - https://goo.gl/93RW7v)
    //'natura_iva0' => 'N2',
  ]);
  $impTot += $impX;
}

Impostazione totali

$iva = $impTot/100*22;
$fatturapa->set_totali([
  'importo' => FatturaPA::dec($impTot), // imponibile totale
  'perciva' => FatturaPA::dec(22),
  'iva' => FatturaPA::dec($iva), // calcolo iva
  'esigiva' => 'I',              // Esigibilità IVA - https://git.io/fhmDq
   //'natura_iva0' => 'N2',      // (Natura IVA non indicata - https://goo.gl/93RW7v)
]);

Nota

In caso di più aliquote IVA, è necessario impostare più totali raggruppando per aliquota: passare un array multiplo alla set_totali o utilizzare la add_totali.

Costanti

Impostazione automatica totali

In alternativa alla set_totali, possiamo automaticamente generare i totali in base alle righe aggiunte in fattura.
Tramite la set_auto_totali è anche possibile applicare automaticamente l'eventuale marca da bollo virtuale.

$totale = $fatturapa->set_auto_totali([ // Merge dati aggiuntivi
  'esigiva' => 'I', // esigibilità IVA - https://git.io/fhmDq
], [ // Opzioni
  'autobollo' => TRUE // applica bollo virtuale con IVA 0 e importo > 77,47
]);

Imposta dati pagamento (opzionale)

// Imposta dati pagamento (opzionale) - Una per ogni modalità di pagamento diversa
$fatturapa->add_pagamento([
  // Condizioni pagamento - https://git.io/fhmD8 (default: TP02 = completo)
  'condizioni' => "TP02"
], [ // Dettaglio pagamento (in caso di più rate, è possibile passare un array di dettagli con scadenze diverse)
    // Modalità di pagamento - https://git.io/fhmDu
    'modalita' => "MP05", // bonifico
    'totale' => FatturaPA::dec($impTot+$iva),	// totale iva inclusa
    'scadenza' => "2019-02-07",
    'iban' => 'IT88A0123456789012345678901'
]);

Costanti

Aggiunta libera di altri nodi nell'XML FatturaPA

È possibile impostare/aggiungere ulteriori nodi nell'XML, rispettando le specifiche del formato FatturaPA.

// Impostazione libera nodo singolo
$fatturapa->set_node('FatturaElettronicaHeader/CedentePrestatore/Contatti/Telefono', '+39123456789');
// Aggiunta libera a un elenco (più nodi con lo stesso nome)
$fatturapa->add_node('FatturaElettronicaBody/DatiGenerali/DatiDDT', ['NumeroDDT' => '1', 'DataDDT' => '2019-01-07']);
$fatturapa->add_node('FatturaElettronicaBody/DatiGenerali/DatiDDT', ['NumeroDDT' => '2', 'DataDDT' => '2019-01-10']);

Genera e salva l'XML

@mkdir('Risultato');
$filename = $fatturapa->filename('00001'); // progressivo da applicare al nome file (univoco, alfanumerico, max 5 caratteri)
$xml = $fatturapa->get_xml();
$file = fopen('Risultato/'.$filename, 'w');
fwrite($file, $xml);
fclose($file);

About

Libreria SDK PHP per la generazione veloce di una Fattura elettronica italiana in XML (formato FatturaPA)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages