Supporto notifiche ZIP

This commit is contained in:
Thomas Zilio 2019-03-29 15:14:09 +01:00
parent 1aa787f33d
commit 8f229ae0f6
3 changed files with 28 additions and 11 deletions

View File

@ -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();
}

View File

@ -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

View File

@ -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');