tecnoweb / fatturapa

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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)


Languages

Language:PHP 100.0%