diff --git a/plugins/receiptFE/src/Ricevuta.php b/plugins/receiptFE/src/Ricevuta.php index ce501e655..e2bb6f2bd 100644 --- a/plugins/receiptFE/src/Ricevuta.php +++ b/plugins/receiptFE/src/Ricevuta.php @@ -8,6 +8,7 @@ use Plugins; use UnexpectedValueException; use Uploads; use Util\XML; +use Util\Zip; /** * Classe per la gestione della fatturazione elettronica in XML. @@ -28,7 +29,23 @@ class Ricevuta public function __construct($name) { - $this->file = static::getImportDirectory().'/'.$name; + $file = static::getImportDirectory().'/'.$name; + + if (ends_with($name, '.zip')) { + $original_file = $file; + + $extraction_dir = static::getImportDirectory().'/tmp'; + Zip::extract($file, $extraction_dir); + + $name = basename($name, '.zip').'.xml'; + $file = static::getImportDirectory().'/'.$name; + copy($extraction_dir.'/'.$name, $file); + + delete($original_file); + delete($extraction_dir); + } + + $this->file = $file; $this->xml = XML::readFile($this->file); $filename = explode('.', $name)[0]; @@ -91,19 +108,19 @@ class Ricevuta $fattura = $this->getFattura(); // Modifica lo stato solo se la fattura non è già stata consegnata (per evitare problemi da doppi invii) - // In realtà per le PA potrebbe esserci lo stato NE (che può essere positiva o negativa) successivo alla RC - //if ($fattura->codice_stato_fe == 'RC') { - //return; + // In realtà per le PA potrebbe esserci lo stato NE (che può essere positiva o negativa) successivo alla RC + //if ($fattura->codice_stato_fe == 'RC') { + //return; //} // Processo la ricevuta e salvo data ricezione, codice e messaggio $descrizione = $this->xml['Destinatario']['Descrizione']; $data = $this->xml['DataOraRicezione']; - - $fattura->data_stato_fe = date('Y-m-d H:i:s', strtotime($data)); + + $fattura->data_stato_fe = date('Y-m-d H:i:s', strtotime($data)); $fattura->codice_stato_fe = $codice; - $fattura->descrizione_ricevuta_fe = $descrizione; - + $fattura->descrizione_ricevuta_fe = $descrizione; + $fattura->save(); } diff --git a/src/Util/Zip.php b/src/Util/Zip.php index c35ee6978..5769f9955 100644 --- a/src/Util/Zip.php +++ b/src/Util/Zip.php @@ -26,10 +26,11 @@ class Zip * Estrae i contenuti di un file ZIP in una cartella temporanea. * * @param string $path + * @param string $destination * * @return string */ - public static function extract($path) + public static function extract($path, $destination = null) { // Lettura dell'archivio $zip = new ZipArchive(); @@ -40,7 +41,7 @@ class Zip } // Percorso di estrazione - $extraction_dir = DOCROOT.'/tmp'; + $extraction_dir = !empty($destination) ? $destination : DOCROOT.'/tmp'; directory($extraction_dir); // Estrazione dell'archivio diff --git a/update/2_4_9.sql b/update/2_4_9.sql index 39a8f9429..fe1523fc0 100644 --- a/update/2_4_9.sql +++ b/update/2_4_9.sql @@ -99,7 +99,6 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati dei preventivi'), 'Descrizione', 'descrizione', 2, 1, 0, 0, 1), ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati dei preventivi'), 'id', 'id', 1, 0, 0, 1, 0); - -- Aggiunto modulo per gestire gli stati dei contratti INSERT INTO `zz_modules` (`id`, `name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES (NULL, 'Stati dei contratti', 'Stati dei contratti','stati_contratto', 'SELECT |select| FROM `co_staticontratti` WHERE 1=1 AND deleted_at IS NULL HAVING 2=2', '', 'fa fa-angle-right', '2.4.9', '2.4.9', '1', (SELECT `id` FROM `zz_modules` t WHERE t.`name` = 'Contratti'), '1', '1');