diff --git a/assets/src/xml/fe-stylesheet-1.2.1.xsl b/assets/src/xml/fe-stylesheet-1.2.1.xsl deleted file mode 100644 index 66331dd4e..000000000 --- a/assets/src/xml/fe-stylesheet-1.2.1.xsl +++ /dev/null @@ -1,2543 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - % - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - () - -
-
- - - - - - - - - () - - - - - - - - -
- Tipo dato: - - - (dati relativi a lotti e scadenze) - - -
- - -
- - - - Lotto: - - - Rif. testo: - - - -
-
- - - - -
- - - - Scadenza: - - - Rif. data: - - - - - - - -
-
- - -
- - - - Quantità del suddetto lotto: - - - Rif. numero: - - - -
-
- - - -
- -
- - -
- RIF.AMM. -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
-
- - - - - - - - - - - - - - - - - - -
- -
-
- - - -
- -
-
-
- - - - - - - - - - -
-
- - - - - - - - -
- - - - - - - - - ------------------------ - - - - -
- - - -
- -
- -
- - - - - - - - - - - - - - - - - - - -
- - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dati ritenuta d'accontoAliquota ritenutaCausale Importo
- - - - - - - - - - - - (ritenuta persone fisiche) - - - (ritenuta persone giuridiche) - - - - - (!!! codice non previsto !!!) - - - - - - - - - - - - - - - - - - - - (decodifica come da modello 770S) - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- - - - - - - -
- - -
- - - - - - - - - - -
- - - Identificativo fiscale ai fini IVA: - - - - - - -
- -
- - - - Codice fiscale: - - - - - - -
- -
- - - - Denominazione: - - - - - - -
- -
- - - - Cognome nome: - - - - - - - - - - - - - - - -
- - -
- - - - Regime fiscale: - - - - - - - - - - (ordinario) - - - (contribuenti minimi) - - - (nuove iniziative produttive) - - - (agricoltura e attività connesse e pesca) - - - (vendita sali e tabacchi) - - - (commercio fiammiferi) - - - (editoria) - - - (gestione servizi telefonia pubblica) - - - (rivendita documenti di trasporto pubblico e di sosta) - - - (intrattenimenti, giochi e altre attività di cui alla tariffa allegata al DPR 640/72) - - - (agenzie viaggi e turismo) - - - (agriturismo) - - - (vendite a domicilio) - - - (rivendita beni usati, oggetti d’arte, - d’antiquariato o da collezione) - - - (agenzie di vendite all’asta di oggetti d’arte, - antiquariato o da collezione) - - - (IVA per cassa P.A.) - - - (IVA per cassa - art. 32-bis, D.L. 83/2012) - - - (Regime forfettario) - - - (altro) - - - - - (!!! codice non previsto !!!) - - - - - -
- -
- - - -
- - - - Indirizzo: - - - - - - - - -
- -
- - - - Comune: - - - - - - - - - Provincia: - - - - - - - - - -
-
- - - - Cap: - - - - - - - - - Nazione: - - - - - - - - -
-
-
- - - - Telefono: - - - - - - - - -
- -
- - - - Email: - - - - - - - - - -
- -
- - - - Riferimento Amministrazione: - - - - - - - - - -
- -
- - -
- - - Identificativo fiscale ai fini IVA: - - - - - - -
- -
- - - - Codice fiscale: - - - - - - -
- -
- - - - Cognome nome: - - - - - - - - - - - - - - - -
- -
- - - - Regime fiscale: - - - - - - - - - - (ordinario) - - - (contribuenti minimi) - - - (nuove iniziative produttive) - - - (agricoltura e attività connesse e pesca) - - - (vendita sali e tabacchi) - - - (commercio fiammiferi) - - - (editoria) - - - (gestione servizi telefonia pubblica) - - - (rivendita documenti di trasporto pubblico e di sosta) - - - (intrattenimenti, giochi e altre attività di cui alla tariffa allegata al DPR 640/72) - - - (agenzie viaggi e turismo) - - - (agriturismo) - - - (vendite a domicilio) - - - (rivendita beni usati, oggetti d’arte, - d’antiquariato o da collezione) - - - (agenzie di vendite all’asta di oggetti d’arte, - antiquariato o da collezione) - - - (IVA per cassa P.A.) - - - (IVA per cassa - art. 32-bis, D.L. 83/2012) - - - (Regime forfettario) - - - (altro) - - - - - (!!! codice non previsto !!!) - - - - - -
- - - -
- - - - Indirizzo: - - - - - - - - -
- -
- - - - Comune: - - - - - - - - - Provincia: - - - - - - - - - -
-
- - - - Cap: - - - - - - - - - Nazione: - - - - - - - - -
-
-
-
- -
-
- - - -
- - - -
- - - - - - -
- - -
- - - - - - - -
- - - Identificativo fiscale ai fini IVA: - - - - - - -
- -
- - - - Codice fiscale: - - - - - - -
- -
- - - - Denominazione: - - - - - - -
- -
- - - - Cognome nome: - - - - - - - - - - - - - - - -
- - -
- - - -
- - - - Indirizzo: - - - - - - - - -
- - - -
- - - - Comune: - - - - - - - - - Provincia: - - - - - - - - - -
-
- - - - Cap: - - - - - - - - - Nazione: - - - - - - - - -
-
- - - - Pec: - - - - - -
- - -
-
- - - -
- - - Identificativo fiscale ai fini IVA: - - - - - - -
- -
- - - - Codice fiscale: - - - - - - -
-
- -
- - - - Denominazione: - - - - - - -
- -
- - - - Cognome nome: - - - - - - - - - - - - - - - -
- - - -
- - - - Indirizzo: - - - - - - - - -
- - - -
- - - - Comune: - - - - - - - - - Provincia: - - - - - - - - - -
-
- - - - Cap: - - - - - - - - - Nazione: - - - - - - - - -
-
- - - - Pec: - - - - - -
- - -
- -
-
-
-
- -
- - - - - -
- - - - -
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tipologia documentoArt. 73Numero documentoData documentoCodice destinatario
- - - - - - - - - - - (fattura) - - - (acconto/anticipo su fattura) - - - (acconto/anticipo su parcella) - - - (nota di credito) - - - (nota di debito) - - - (parcella) - - - (autofattura) - - - - (fattura semplificata) - - - (nota di credito semplificata) - - - (nota di debito semplificata) - - - - - (!!! codice non previsto !!!) - - - - - - - - - - - - - - - - - - - - - - - - - Indicata PEC - - - - - - - - -
- - -
- - - - - - - - - - - - - - - - - -
Causale
- - - - - - - -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DescrizioneImposta%IVAPrezzo totale
- - - - - - -
- RIF.NORM. -
-
- -
- - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cod. articoloDescrizioneQuantitàPrezzo unitarioUMSconto o magg.%IVAPrezzo totale
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dati Cassa PrevidenzialeImponibile%Contr.Ritenuta%IVAImporto
- - - - - - - - - - - (Cassa Nazionale Previdenza e Assistenza Avvocati - e Procuratori legali) - - - (Cassa Previdenza Dottori Commercialisti) - - - (Cassa Previdenza e Assistenza Geometri) - - - (Cassa Nazionale Previdenza e Assistenza - Ingegneri e Architetti liberi profess.) - - - (Cassa Nazionale del Notariato) - - - (Cassa Nazionale Previdenza e Assistenza - Ragionieri e Periti commerciali) - - - (Ente Nazionale Assistenza Agenti e Rappresentanti - di Commercio-ENASARCO) - - - (Ente Nazionale Previdenza e Assistenza Consulenti - del Lavoro-ENPACL) - - - (Ente Nazionale Previdenza e Assistenza - Medici-ENPAM) - - - (Ente Nazionale Previdenza e Assistenza - Farmacisti-ENPAF) - - - (Ente Nazionale Previdenza e Assistenza - Veterinari-ENPAV) - - - (Ente Nazionale Previdenza e Assistenza Impiegati - dell'Agricoltura-ENPAIA) - - - (Fondo Previdenza Impiegati Imprese di Spedizione - e Agenzie Marittime) - - - (Istituto Nazionale Previdenza Giornalisti - Italiani-INPGI) - - - (Opera Nazionale Assistenza Orfani Sanitari - Italiani-ONAOSI) - - - (Cassa Autonoma Assistenza Integrativa - Giornalisti Italiani-CASAGIT) - - - (Ente Previdenza Periti Industriali e Periti - Industriali Laureati-EPPI) - - - (Ente Previdenza e Assistenza - Pluricategoriale-EPAP) - - - (Ente Nazionale Previdenza e Assistenza - Biologi-ENPAB) - - - (Ente Nazionale Previdenza e Assistenza - Professione Infermieristica-ENPAPI) - - - (Ente Nazionale Previdenza e Assistenza - Psicologi-ENPAP) - - - (INPS) - - - - - (!!! codice non previsto !!!) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - - -
- - - - - - - - -
RIEPILOGHI IVA E TOTALI
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
esigibilità iva / riferimenti normativi%IVASpese accessorieTotale imponibileTotale imposta
- - - - - - - - - - - - (esigibilità immediata) - - - (esigibilità differita) - - - (scissione dei pagamenti) - - - (!!! codice non previsto !!!) - - - - - - - Esigib. non dich. (si presume immediata) - - - - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - -
- Importo bollo - - Sconto/Maggiorazione - - Valuta - - Totale documento -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Modalità pagamentoIBANIstitutoData scadenzaImporto
- - - - - - - - - - - Contanti - - - Assegno - - - Assegno circolare - - - Contanti presso Tesoreria - - - Bonifico - - - Vaglia cambiario - - - Bollettino bancario - - - Carta di pagamento - - - RID - - - RID utenze - - - RID veloce - - - RIBA - - - MAV - - - Quietanza erario - - - Giroconto su conti di contabilità speciale - - - Domiciliazione bancaria - - - Domiciliazione postale - - - Bollettino di c/c postale - - - SEPA Direct Debit - - - SEPA Direct Debit CORE - - - SEPA Direct Debit B2B - - - Trattenuta su somme già riscosse - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - -
- * -
- -
- -
-
- -
- -
- - - - -
Allegati:
- -
    - -
  • -
    - - - - -
    -
  • - - -
    - -
- -
- - - - -
- - - -
- -
- - - - - -
- - -
- - - -
-
- - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
\ No newline at end of file diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php index 85de9e4de..445b1d410 100644 --- a/plugins/importFE/src/FatturaElettronica.php +++ b/plugins/importFE/src/FatturaElettronica.php @@ -34,9 +34,9 @@ class FatturaElettronica /** @var Fattura Fattura collegata */ protected $fattura = null; - public function __construct($file) + public function __construct($name) { - $this->file = static::getImportDirectory().'/'.$file; + $this->file = static::getImportDirectory().'/'.$name; $this->xml = XML::readFile($this->file); // Individuazione fattura pre-esistente @@ -84,10 +84,10 @@ class FatturaElettronica return $filename; } - public static function isValid($file) + public static function isValid($name) { try { - new static($file); + new static($name); return true; } catch (UnexpectedValueException $e) { diff --git a/plugins/importFE/src/Interaction.php b/plugins/importFE/src/Interaction.php index abead992b..03b87cbe6 100644 --- a/plugins/importFE/src/Interaction.php +++ b/plugins/importFE/src/Interaction.php @@ -64,10 +64,9 @@ class Interaction extends Connection $body = static::responseBody($response); + $message = ''; if ($body['status'] != '200') { $message = $body['status'].' - '.$body['message']; - } else { - $message = ''; } return $message; diff --git a/plugins/importFE/view.php b/plugins/importFE/view.php index 7f760dde4..643a44263 100644 --- a/plugins/importFE/view.php +++ b/plugins/importFE/view.php @@ -13,7 +13,7 @@ $xml->loadXML($content); // XSL $xsl = new DOMDocument(); -$xsl->load(DOCROOT.'/assets/src/xml/fe-stylesheet-1.2.1.xsl'); +$xsl->load(DOCROOT.'/plugins/xml/asso-invoice.xsl'); // XSLT $xslt = new XSLTProcessor(); diff --git a/plugins/receiptFE/actions.php b/plugins/receiptFE/actions.php index 8bc4d2552..ea342532c 100644 --- a/plugins/receiptFE/actions.php +++ b/plugins/receiptFE/actions.php @@ -27,16 +27,19 @@ switch (filter('op')) { $results = []; foreach ($list as $name) { - $content = Interaction::getReceipt($name); + Interaction::getReceipt($name); $fattura = null; try { $receipt = new Ricevuta($name, $content); + $receipt->save(); $fattura = $receipt->getFattura()->numero_esterno; + $receipt->delete(); + Interaction::processReceipt($name); - } catch (Exception $e) { + } catch (UnexpectedValueException $e) { } $results[] = [ diff --git a/plugins/receiptFE/src/Interaction.php b/plugins/receiptFE/src/Interaction.php index c47f18bce..ce5982280 100644 --- a/plugins/receiptFE/src/Interaction.php +++ b/plugins/receiptFE/src/Interaction.php @@ -21,12 +21,19 @@ class Interaction extends Connection public static function getReceipt($name) { - $response = static::request('POST', 'notifica_da_importare', [ - 'name' => $name, - ]); - $body = static::responseBody($response); + $directory = Ricevuta::getImportDirectory(); + $file = $directory.'/'.$name; - return $body['content']; + if (!file_exists($file)) { + $response = static::request('POST', 'notifica_da_importare', [ + 'name' => $name, + ]); + $body = static::responseBody($response); + + Ricevuta::store($name, $body['content']); + } + + return $name; } public static function processReceipt($filename) diff --git a/plugins/receiptFE/src/Ricevuta.php b/plugins/receiptFE/src/Ricevuta.php index 3db884479..3c119a7af 100644 --- a/plugins/receiptFE/src/Ricevuta.php +++ b/plugins/receiptFE/src/Ricevuta.php @@ -2,8 +2,11 @@ namespace Plugins\ReceiptFE; +use Modules; use Modules\Fatture\Fattura; +use Plugins; use UnexpectedValueException; +use Uploads; use Util\XML; /** @@ -13,18 +16,22 @@ use Util\XML; */ class Ricevuta { - /** @var array XML della fattura */ + protected static $directory = null; + + /** @var array Percorso del file XML */ + protected $file = null; + /** @var array XML della ricevuta */ protected $xml = null; - /** @var array XML della fattura */ + /** @var array XML della ricevuta */ protected $fattura = null; - public function __construct($name, $content) + public function __construct($name) { - $this->xml = XML::read($content); + $this->file = static::getImportDirectory().'/'.$name; + $this->xml = XML::readFile($this->file); - $nome = $this->xml['NomeFile']; - $filename = explode('.', $nome)[0]; + $filename = explode('.', $name)[0]; $pieces = explode('_', $filename); $progressivo_invio = $pieces[1]; @@ -35,25 +42,86 @@ class Ricevuta if (empty($this->fattura)) { throw new UnexpectedValueException(); - } else { - // Processo la ricevuta e salvo il codice e messaggio di errore - $filename = explode('.', $name)[0]; - $pieces = explode('_', $filename); - $codice = $pieces[2]; - $descrizione = $this->xml['Destinatario']['Descrizione']; - $data = $this->xml['DataOraRicezione']; - - $this->fattura->codice_stato_fe = $codice; - $this->fattura->descrizione_ricevuta_fe = $descrizione; - $this->fattura->data_stato_fe = date('Y-m-d H:i:s', strtotime($data)); - $this->fattura->save(); - - return true; } } + public static function store($filename, $content) + { + $directory = static::getImportDirectory(); + $file = $directory.'/'.$filename; + + directory($directory); + file_put_contents($file, $content); + + return $filename; + } + + public static function getImportDirectory() + { + if (!isset(self::$directory)) { + $plugin = Plugins::get('Ricevute FE'); + + self::$directory = DOCROOT.'/'.$plugin->upload_directory; + } + + return self::$directory; + } + + public function saveAllegato($codice) + { + $module = Modules::get('Fatture di vendita'); + + $info = [ + 'category' => tr('Fattura Elettronica'), + 'id_module' => $module->id, + 'id_record' => $this->fattura->id, + ]; + + // Registrazione XML come allegato + $filename = Uploads::upload($this->file, array_merge($info, [ + 'name' => tr('Ricevuta _TYPE_', [ + '_TYPE_' => $codice, + ]), + 'original' => basename($this->file), + ])); + } + + public function saveStato($codice) + { + $fattura = $this->getFattura(); + + // Modifica lo stato solo se la fattura non è già stata consegnata (per evitare problemi da doppi invii) + if ($fattura->codice_stato_fe == 'RC') { + return; + } + + // Processo la ricevuta e salvo il codice e messaggio di errore + $descrizione = $this->xml['Destinatario']['Descrizione']; + $data = $this->xml['DataOraRicezione']; + + $fattura->codice_stato_fe = $codice; + $fattura->data_stato_fe = date('Y-m-d H:i:s', strtotime($data)); + $fattura->save(); + } + + public function save() + { + $name = basename($this->file); + $filename = explode('.', $name)[0]; + $pieces = explode('_', $filename); + $codice = $pieces[2]; + + $this->saveAllegato($codice); + $this->saveStato($codice); + } + public function getFattura() { return $this->fattura; } + + public function delete() + { + delete($this->file); + } } diff --git a/plugins/xml/AT_v1.0.xsl b/plugins/xml/AT_v1.0.xsl new file mode 100644 index 000000000..ef56f4468 --- /dev/null +++ b/plugins/xml/AT_v1.0.xsl @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + +
+
+
+ +
+ + File con firma elettronica - + + Versione +
+

Attestazione di avvenuta trasmissione della fattura con impossibilità di recapito

+ +
    +
  • + Identificativo SdI: + +
  • + +
  • + Nome File: + +
  • + +
  • + Data Ora Ricezione: + +
  • + + +
  • +

    Riferimento Archivio:

    +
      +
    • + Identificativo SdI: + +
    • +
    • + Nome File: + +
    • +
    +
  • +
    + +
  • + Destinatario: + +
  • + +
  • + Message Id: + +
  • + +
  • + Pec Message-ID: + +
  • +
    + + +
  • + Note: + +
  • +
    + +
  • + Hash del File Originale: + +
  • +
+
+
+
+ +
+ + +
+
diff --git a/plugins/xml/DT_v1.0.xsl b/plugins/xml/DT_v1.0.xsl new file mode 100644 index 000000000..8a827a7fe --- /dev/null +++ b/plugins/xml/DT_v1.0.xsl @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + +
+
+
+ +
+ + File con firma elettronica - + + Versione +
+ + + + + Flusso semplificato + +
+

Notifica Decorrenza Termini

+ +
    +
  • + Identificativo SdI: + +
  • + + +
  • +

    Riferimento Fattura

    +
      +
    • + Numero Fattura: + +
    • +
    • + Anno Fattura: + +
    • + +
    • + Posizione Fattura: + +
    • +
      +
    +
  • +
    + +
  • + Nome File: + +
  • + + +
  • + Descrizione: + +
  • +
    + +
  • + Message Id: + +
  • + + +
  • + Pec Message Id: + +
  • +
    + + +
  • + Note: + +
  • +
    + +
+ +
+
+
+ +
+ + +
+
diff --git a/plugins/xml/EC_v1.0.xsl b/plugins/xml/EC_v1.0.xsl new file mode 100644 index 000000000..36f16f837 --- /dev/null +++ b/plugins/xml/EC_v1.0.xsl @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + +
+
+
+ +
+ + File con firma elettronica - + + Versione +
+

Notifica Esito Committente

+ +
    +
  • + Identificativo SdI: + +
  • + + +
  • +

    Riferimento Fattura

    +
      +
    • + Numero Fattura: + +
    • +
    • + Anno Fattura: + +
    • + +
    • + Posizione Fattura: + +
    • +
      +
    +
  • +
    + +
  • + Esito: + + + + + + (Accettazione) + (Rifiuto) + +
  • + + +
  • + Descrizione: + +
  • +
    + + +
  • + Message Id Committente: + +
  • +
    +
+
+
+
+ +
+ + +
+
diff --git a/plugins/xml/MC_v1.0.xsl b/plugins/xml/MC_v1.0.xsl new file mode 100644 index 000000000..2e5bb6ca4 --- /dev/null +++ b/plugins/xml/MC_v1.0.xsl @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + +
+
+
+ +
+ + File con firma elettronica - + + Versione +
+

Notifica Mancata Consegna

+ +
    +
  • + Identificativo SdI: + +
  • + +
  • + Nome File: + +
  • + +
  • + Data Ora Ricezione: + +
  • + + +
  • +

    Riferimento Archivio

    +
      +
    • + Identificativo SdI: + +
    • +
    • + Nome File: + +
    • +
    +
  • +
    + + +
  • + Descrizione: + +
  • +
    + +
  • + Message Id: + +
  • + + +
  • + Pec Message Id: + +
  • +
    + + +
  • + Note: + +
  • +
    +
+
+
+
+ +
+ + +
+
diff --git a/plugins/xml/NE_v1.0.xsl b/plugins/xml/NE_v1.0.xsl new file mode 100644 index 000000000..4287cf944 --- /dev/null +++ b/plugins/xml/NE_v1.0.xsl @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + +
+
+
+ +
+ + File con firma elettronica - + + Versione +
+ + + + + Flusso semplificato + +
+

Notifica Esito

+ +
    +
  • + Identificativo SdI: + +
  • + +
  • + Nome File: + +
  • + + + +
  • + Message Id: + +
  • +
    + + +
  • + PEC Message Id: + +
  • +
    + + +
  • + Note: + +
  • +
    + +

    Esito Committente

    + + +
  • +
  • + Identificativo SdI: + +
  • + +
  • +

    Riferimento Fattura

    +
      +
    • + Numero Fattura: + +
    • +
    • + Anno Fattura: + +
    • + +
    • + Posizione Fattura: + +
    • +
      +
    +
  • + +
    + +
  • + Esito: + + + + + + (Accettazione) + (Rifiuto) + +
  • + + +
  • + Descrizione: + +
  • +
    + + +
  • + Message Id Committente: + +
  • +
    +
+
+
+
+ +
+ + +
+
diff --git a/plugins/xml/NS_v1.0.xsl b/plugins/xml/NS_v1.0.xsl new file mode 100644 index 000000000..09caacd5d --- /dev/null +++ b/plugins/xml/NS_v1.0.xsl @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + +
+
+
+ +
+ + File con firma elettronica - + + Versione +
+

Notifica Scarto

+ +
    +
  • + Identificativo SdI: + +
  • + +
  • + Nome File: + +
  • + +
  • + Data Ora Ricezione: + +
  • + + + +
  • +

    Riferimento Archivio

    +
      +
    • + Identificativo SdI: + +
    • +
    • + Nome File: + +
    • +
    +
  • +
    + + + +
  • + Message Id: + +
  • +
    + + +
  • + Pec Message Id: + +
  • +
    + + +
  • + Note: + +
  • +
    + +
  • + + + + + + + + + + + + +
    Lista errori
    CodiceDescrizione
    +
  • +
+
+
+
+ +
+ + +
+
diff --git a/plugins/xml/RC_v1.0.xsl b/plugins/xml/RC_v1.0.xsl new file mode 100644 index 000000000..ea8831df7 --- /dev/null +++ b/plugins/xml/RC_v1.0.xsl @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + +
+
+
+ +
+ + File con firma elettronica - + + Versione +
+ + + + + Flusso semplificato + +
+

Ricevuta Consegna

+ +
    +
  • + Identificativo SdI: + +
  • + +
  • + Nome File: + +
  • + +
  • + Data Ora Ricezione: + +
  • + +
  • + Data Ora Consegna: + +
  • + +
  • + Destinatario: + +
  • + + +
  • +

    Riferimento Archivio:

    +
      +
    • + Identificativo SdI: + +
    • +
    • + Nome File: + +
    • +
    +
  • +
    + +
  • + Message Id: + +
  • + +
  • + Pec Message-ID: + +
  • +
    + + +
  • + Note: + +
  • +
    +
+
+
+
+ +
+ + +
+
diff --git a/plugins/xml/SE_v1.0.xsl b/plugins/xml/SE_v1.0.xsl new file mode 100644 index 000000000..a1a627253 --- /dev/null +++ b/plugins/xml/SE_v1.0.xsl @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + +
+
+
+ +
+ + File con firma elettronica - + + Versione +
+ +

Scarto Esito committente

+ +
    +
  • + Identificativo SdI: + +
  • + + +
  • +

    Riferimento Fattura

    +
      +
    • + Numero Fattura: + +
    • +
    • + Anno Fattura: + +
    • + +
    • + Posizione Fattura: + +
    • +
      +
    +
  • +
    + +
  • + Scarto: + + + + + + (NOTIFICA NON CONFORME AL FORMATO) + (NOTIFICA NON AMMISSIBILE) + +
  • + +
  • + Message Id: + +
  • + + +
  • + Message-ID committente: + +
  • +
    + + +
  • + Pec Message-ID: + +
  • +
    + + +
  • + Note: + +
  • +
    +
+ +
+
+
+ +
+ + +
+
diff --git a/plugins/xml/asso-invoice.xsl b/plugins/xml/asso-invoice.xsl new file mode 100644 index 000000000..e396e3e60 --- /dev/null +++ b/plugins/xml/asso-invoice.xsl @@ -0,0 +1,2858 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + % + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + % + + + + + + + + + + + + + + + + + + + + + + + + + + del + + + + + + CUP: + + + + CIG: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DDT + + + del + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + () + +
+
+ + + + + + + + + () + + + +
+ Periodo + + da + + + + + + a + + + + +
+ +
+ + + + + + + +
+ Tipo dato: + + + (dati relativi a lotti e scadenze) + + +
+ + +
+ + + + Lotto: + + + Rif. testo: + + + +
+
+ + + + +
+ + + + Scadenza: + + + Rif. data: + + + + + + + +
+
+ + +
+ + + + Quantità del suddetto lotto: + + + Rif. numero: + + + +
+
+ + + +
+ +
+ + +
+ RIF.AMM. +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ + + +
+ +
+
+
+ + + + +
+
+ + + + + + + + +
+ + + + + + + + + + ------------------------ + + + + +
+ + + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dati ritenuta d'accontoAliquota ritenutaCausale Importo
+ + + + + + + + + + + + (ritenuta persone fisiche) + + + (ritenuta persone giuridiche) + + + + + (!!! codice non previsto !!!) + + + + + + + + + + + + + + + + + + + + (decodifica come da modello 770S) + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + +
+ + +
+ + + + + + + + + + +
+ + + Identificativo fiscale ai fini IVA: + + + + + + +
+ +
+ + + + Codice fiscale: + + + + + + +
+ +
+ + + + Denominazione: + + + + + + +
+ +
+ + + + Cognome nome: + + + + + + + + + + + + + + + +
+ + +
+ + + + Regime fiscale: + + + + + + + + + + (ordinario) + + + (contribuenti minimi) + + + (nuove iniziative produttive) + + + (agricoltura e attività connesse e pesca) + + + (vendita sali e tabacchi) + + + (commercio fiammiferi) + + + (editoria) + + + (gestione servizi telefonia pubblica) + + + (rivendita documenti di trasporto pubblico e di sosta) + + + (intrattenimenti, giochi e altre attività di cui alla tariffa allegata al DPR 640/72) + + + (agenzie viaggi e turismo) + + + (agriturismo) + + + (vendite a domicilio) + + + (rivendita beni usati, oggetti d’arte, + d’antiquariato o da collezione) + + + (agenzie di vendite all’asta di oggetti d’arte, + antiquariato o da collezione) + + + (IVA per cassa P.A.) + + + (IVA per cassa - art. 32-bis, D.L. 83/2012) + + + (Regime forfettario) + + + (altro) + + + + + (!!! codice non previsto !!!) + + + + + +
+ +
+ + + +
+ + + + Indirizzo: + + + + + + + + +
+ +
+ + + + Comune: + + + + + + + + + Provincia: + + + + + + + + + +
+
+ + + + Cap: + + + + + + + + + Nazione: + + + + + + + + +
+
+
+ + + + Telefono: + + + + + + + + +
+ +
+ + + + Email: + + + + + + + + + +
+ +
+ + + + Riferimento Amministrazione: + + + + + + + + + +
+ +
+ + +
+ + + Identificativo fiscale ai fini IVA: + + + + + + +
+ +
+ + + + Codice fiscale: + + + + + + +
+ + +
+ + Denominazione: + + + +
+
+ + +
+ + Cognome nome: + + + + + + + + + + + + +
+
+ +
+ + + + Regime fiscale: + + + + + + + + + + (ordinario) + + + (contribuenti minimi) + + + (nuove iniziative produttive) + + + (agricoltura e attività connesse e pesca) + + + (vendita sali e tabacchi) + + + (commercio fiammiferi) + + + (editoria) + + + (gestione servizi telefonia pubblica) + + + (rivendita documenti di trasporto pubblico e di sosta) + + + (intrattenimenti, giochi e altre attività di cui alla tariffa allegata al DPR 640/72) + + + (agenzie viaggi e turismo) + + + (agriturismo) + + + (vendite a domicilio) + + + (rivendita beni usati, oggetti d’arte, + d’antiquariato o da collezione) + + + (agenzie di vendite all’asta di oggetti d’arte, + antiquariato o da collezione) + + + (IVA per cassa P.A.) + + + (IVA per cassa - art. 32-bis, D.L. 83/2012) + + + (Regime forfettario) + + + (altro) + + + + + (!!! codice non previsto !!!) + + + + + +
+ + + +
+ + + + Indirizzo: + + + + + + + + +
+ +
+ + + + Comune: + + + + + + + + + Provincia: + + + + + + + + + +
+
+ + + + Cap: + + + + + + + + + Nazione: + + + + + + + + +
+
+
+
+ +
+
+ + + +
+ + + +
+ + + + + + +
+ + +
+ + + + + + + +
+ + + Identificativo fiscale ai fini IVA: + + + + + + +
+ +
+ + + + Codice fiscale: + + + + + + +
+ +
+ + + + Denominazione: + + + + + + +
+ +
+ + + + Cognome nome: + + + + + + + + + + + + + + + +
+ + +
+ + + +
+ + + + Indirizzo: + + + + + + + + +
+ + + +
+ + + + Comune: + + + + + + + + + Provincia: + + + + + + + + + +
+
+ + + + Cap: + + + + + + + + + Nazione: + + + + + + + + +
+
+ + + + Pec: + + + + + +
+ + +
+
+ + + +
+ + + Identificativo fiscale ai fini IVA: + + + + + + +
+ +
+ + + + Codice fiscale: + + + + + + +
+
+ +
+ + + + Denominazione: + + + + + + +
+ +
+ + + + Cognome nome: + + + + + + + + + + + + + + + +
+ + + +
+ + + + Indirizzo: + + + + + + + + +
+ + + +
+ + + + Comune: + + + + + + + + + Provincia: + + + + + + + + + +
+
+ + + + Cap: + + + + + + + + + Nazione: + + + + + + + + +
+
+ + + + Pec: + + + + + +
+ + +
+ +
+
+
+
+ +
+ + + + + +
+ + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tipologia documentoArt. 73Numero documentoData documentoCodice destinatario
+ + + + + + + + + + + (fattura) + + + (acconto/anticipo su fattura) + + + (acconto/anticipo su parcella) + + + (nota di credito) + + + (nota di debito) + + + (parcella) + + + (autofattura) + + + + (fattura semplificata) + + + (nota di credito semplificata) + + + (nota di debito semplificata) + + + + + (!!! codice non previsto !!!) + + + + + + + + + + + + + + + + + + + + + + + + + Indicata PEC + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + +
Causale
+ + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescrizioneImposta%IVAPrezzo totale
+ + + + + + +
+ RIF.NORM. +
+
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DDT + + + del + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cod. articoloDescrizioneQuantitàPrezzo unitarioUMSconto o magg.%IVAPrezzo totale
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dati Cassa PrevidenzialeImponibile%Contr.Ritenuta%IVAImporto
+ + + + + + + + + + + (Cassa Nazionale Previdenza e Assistenza Avvocati + e Procuratori legali) + + + (Cassa Previdenza Dottori Commercialisti) + + + (Cassa Previdenza e Assistenza Geometri) + + + (Cassa Nazionale Previdenza e Assistenza + Ingegneri e Architetti liberi profess.) + + + (Cassa Nazionale del Notariato) + + + (Cassa Nazionale Previdenza e Assistenza + Ragionieri e Periti commerciali) + + + (Ente Nazionale Assistenza Agenti e Rappresentanti + di Commercio-ENASARCO) + + + (Ente Nazionale Previdenza e Assistenza Consulenti + del Lavoro-ENPACL) + + + (Ente Nazionale Previdenza e Assistenza + Medici-ENPAM) + + + (Ente Nazionale Previdenza e Assistenza + Farmacisti-ENPAF) + + + (Ente Nazionale Previdenza e Assistenza + Veterinari-ENPAV) + + + (Ente Nazionale Previdenza e Assistenza Impiegati + dell'Agricoltura-ENPAIA) + + + (Fondo Previdenza Impiegati Imprese di Spedizione + e Agenzie Marittime) + + + (Istituto Nazionale Previdenza Giornalisti + Italiani-INPGI) + + + (Opera Nazionale Assistenza Orfani Sanitari + Italiani-ONAOSI) + + + (Cassa Autonoma Assistenza Integrativa + Giornalisti Italiani-CASAGIT) + + + (Ente Previdenza Periti Industriali e Periti + Industriali Laureati-EPPI) + + + (Ente Previdenza e Assistenza + Pluricategoriale-EPAP) + + + (Ente Nazionale Previdenza e Assistenza + Biologi-ENPAB) + + + (Ente Nazionale Previdenza e Assistenza + Professione Infermieristica-ENPAPI) + + + (Ente Nazionale Previdenza e Assistenza + Psicologi-ENPAP) + + + (INPS) + + + + + (!!! codice non previsto !!!) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +
+ + + + + + + + +
RIEPILOGHI IVA E TOTALI
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
esigibilità iva / riferimenti normativi%IVASpese accessorieTotale imponibileTotale imposta
+ + + + + + + + + + + + (esigibilità immediata) + + + (esigibilità differita) + + + (scissione dei pagamenti) + + + (!!! codice non previsto !!!) + + + + + + + Esigib. non dich. (si presume immediata) + + + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + +
+ Importo bollo + + Sconto/Maggiorazione + + Valuta + + Totale documento +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modalità pagamentoIBANIstitutoData scadenzaImporto
+ + + + + + + + + + + Contanti + + + Assegno + + + Assegno circolare + + + Contanti presso Tesoreria + + + Bonifico + + + Vaglia cambiario + + + Bollettino bancario + + + Carta di pagamento + + + RID + + + RID utenze + + + RID veloce + + + RIBA + + + MAV + + + Quietanza erario + + + Giroconto su conti di contabilità speciale + + + Domiciliazione bancaria + + + Domiciliazione postale + + + Bollettino di c/c postale + + + SEPA Direct Debit + + + SEPA Direct Debit CORE + + + SEPA Direct Debit B2B + + + Trattenuta su somme già riscosse + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ * +
+ +
+ +
+
+ +
+ +
+ + + + +
Allegati:
+ +
    + +
  • +
    + + + + +
    +
  • + + +
    + +
+ +
+ + + + +
+ + + +
+ +
+ + + + + +
+ + +
+ + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
diff --git a/view.php b/view.php index eff3f1cec..2f7f72f7d 100644 --- a/view.php +++ b/view.php @@ -15,17 +15,35 @@ $link = ROOTDIR.'/'.$file->filepath; if ($file->isFatturaElettronica()) { $content = file_get_contents(DOCROOT.'/'.$file->filepath); - // XML - $xml = new DOMDocument(); - $xml->loadXML($content); + // Individuazione stylsheet + $stylesheet = 'asso-invoice'; - // XSL - $xsl = new DOMDocument(); - $xsl->load(DOCROOT.'/assets/src/xml/fe-stylesheet-1.2.1.xsl'); + $name = basename($file->original); + $filename = explode('.', $name)[0]; + $pieces = explode('_', $filename); + $codice = $pieces[2]; + if (!empty($codice)) { + $stylesheet = $codice.'_v1.0'; + } + + $stylesheet = DOCROOT.'/plugins/xml/'.$stylesheet.'.xsl'; + + // Fix per ricevute con namespace errato + $content = str_replace('http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fattura/messaggi/v1.0', 'http://www.fatturapa.gov.it/sdi/messaggi/v1.0', $content); + + // XML + $xml = DOMDocument::loadXML($content); // XSLT $xslt = new XSLTProcessor(); - $xslt->importStylesheet($xsl); + $xslt->importStylesheet(DOMDocument::load($stylesheet)); + + echo ' +'; echo $xslt->transformToXML($xml); } else {