Giter Site home page Giter Site logo

s2software / fatturapa Goto Github PK

View Code? Open in Web Editor NEW
22.0 7.0 8.0 97 KB

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

PHP 100.00%
italia fatturapa fattura-elettronica fatturazione-elettronica xml php

fatturapa's Introduction

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' => "[email protected]",  // 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);

fatturapa's People

Contributors

carlo-f avatar s2software avatar tecnoweb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.