Correzionu sull'esportazione CSV da azioni di gruppo
This commit is contained in:
parent
eff17804e5
commit
c82165e6fa
|
@ -17,8 +17,8 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
use Util\FileSystem;
|
||||
use Models\Cache;
|
||||
use Util\FileSystem;
|
||||
|
||||
include_once __DIR__.'/../core.php';
|
||||
|
||||
|
@ -577,14 +577,13 @@ if (!Auth::check() && (!empty($messages['info']) || !empty($messages['warning'])
|
|||
//Se la mia installazione supera una data dimensione visualizzo un messaggio
|
||||
$osm_size = Cache::pool('Spazio utilizzato')->content;
|
||||
|
||||
if (!empty(setting('Soft quota')) && !empty($osm_size)){
|
||||
|
||||
if (!empty(setting('Soft quota')) && !empty($osm_size)) {
|
||||
// Controllo lo spazio disponibile
|
||||
//$osm_size = disk_free_space('.');
|
||||
//$osm_size = FileSystem::folderSize(base_dir(), ['htaccess']);
|
||||
|
||||
$soft_quota = setting('Soft quota'); //MB
|
||||
$space_limit = ($soft_quota / 100)*95; //MB
|
||||
$space_limit = ($soft_quota / 100) * 95; //MB
|
||||
|
||||
if ($osm_size > ($space_limit * 1048576)) {
|
||||
echo '
|
||||
|
@ -594,10 +593,10 @@ if (!empty(setting('Soft quota')) && !empty($osm_size)){
|
|||
</h4>
|
||||
<p>'.tr('Lo spazio a disposizione del gestionale è in esaurimento: il gestionale occupa _TOT_ dei _SOFTQUOTA_ previsti', [
|
||||
'_TOT_' => FileSystem::formatBytes($osm_size),
|
||||
'_SOFTQUOTA_' => FileSystem::formatBytes($soft_quota * 1048576),
|
||||
'_SOFTQUOTA_' => FileSystem::formatBytes($soft_quota * 1048576),
|
||||
]).'.</p>
|
||||
<p>'.tr('Questo può risultare un serio problema per la continuità di funzionamento del software, poichè le operazioni più espansive riguardanti lo spazio di archiviazione possono provocare malfunzionamento imprevedibili').'. '.tr('Operazioni di backup, caricamento di allegati o anche il semplice utilizzo del gestionale possono rendere i dati inaffidabili, provocando pertanto una perdita irreversibile delle informazioni salvate').'.</p>
|
||||
<p>'.tr("Contatta gli amministratori di sistema oppure l'assistenza tecnica per risolvere il problema").'.</p>
|
||||
</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
30
lib/util.php
30
lib/util.php
|
@ -528,3 +528,33 @@ if (!function_exists('readSQLFile')) {
|
|||
return $queryLine;
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('temp_file')) {
|
||||
/**
|
||||
* Crea un file temporaneo e lo imposta per la rimozione alla fine dell'esecuzione.
|
||||
*
|
||||
* @param $name
|
||||
* @param $content
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function temp_file($name = null, $content = null)
|
||||
{
|
||||
if (empty($name)) {
|
||||
$name = secure_random_string();
|
||||
}
|
||||
|
||||
$file = DIRECTORY_SEPARATOR.
|
||||
trim(sys_get_temp_dir(), DIRECTORY_SEPARATOR).
|
||||
DIRECTORY_SEPARATOR.
|
||||
ltrim($name, DIRECTORY_SEPARATOR);
|
||||
|
||||
file_put_contents($file, $content);
|
||||
|
||||
register_shutdown_function(function () use ($file) {
|
||||
unlink($file);
|
||||
});
|
||||
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -91,7 +91,6 @@ if (!function_exists('base_dir')) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Aggiornamenti
|
||||
if (setting('Attiva aggiornamenti')) {
|
||||
$alerts = [];
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
use Geocoder\Provider\GoogleMaps;
|
||||
use Ivory\HttpAdapter\CurlHttpAdapter;
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Modules\Anagrafiche\Export\CSV;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
$google = setting('Google Maps API key');
|
||||
|
@ -64,26 +65,18 @@ switch (post('op')) {
|
|||
|
||||
break;
|
||||
|
||||
case 'export-csv':
|
||||
$file = temp_file();
|
||||
$exporter = new CSV($file);
|
||||
|
||||
case 'download-csv':
|
||||
|
||||
$dir = base_dir().'/files/export_anagrafiche/';
|
||||
directory($dir.'tmp/');
|
||||
$file = secure_random_string().'.csv';
|
||||
$dir_csv = slashes($dir.'tmp/'.$file);
|
||||
|
||||
$filename = 'anagrafiche.csv';
|
||||
|
||||
$t = new Modules\Anagrafiche\Export\CSV($dir_csv);
|
||||
|
||||
if($t->exportRecords()){
|
||||
|
||||
download($dir_csv, $filename);
|
||||
delete($dir.'tmp/');
|
||||
}
|
||||
|
||||
// Esportazione dei record selezionati
|
||||
$anagrafiche = Anagrafica::whereIn('id', $id_records)->get();
|
||||
$exporter->setRecords($anagrafiche);
|
||||
|
||||
$count = $exporter->exportRecords();
|
||||
|
||||
download($file, 'anagrafiche.csv');
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
$operations = [];
|
||||
|
@ -98,8 +91,8 @@ if (App::debug()) {
|
|||
],
|
||||
];
|
||||
|
||||
$operations['download-csv'] = [
|
||||
'text' => '<span><i class="fa fa-download"></i> '.tr('Esporta tutto').'</span> <span class="label label-danger" >beta</span>',
|
||||
$operations['export-csv'] = [
|
||||
'text' => '<span><i class="fa fa-download"></i> '.tr('Esporta selezionati').'</span> <span class="label label-danger" >beta</span>',
|
||||
'data' => [
|
||||
'msg' => tr('Vuoi davvero esportare un CSV con tutte le anagrafiche?'),
|
||||
'button' => tr('Procedi'),
|
||||
|
@ -107,7 +100,6 @@ if (App::debug()) {
|
|||
'blank' => true,
|
||||
],
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
if (App::debug() && $google) {
|
||||
|
|
|
@ -114,7 +114,7 @@ class CSV extends CSVExporter
|
|||
'label' => 'Note',
|
||||
],
|
||||
[
|
||||
'field' => 'id_nazione',
|
||||
'field' => 'nazione.nome',
|
||||
'label' => 'Nazione',
|
||||
],
|
||||
[
|
||||
|
|
|
@ -36,7 +36,6 @@ switch (post('op')) {
|
|||
break;
|
||||
|
||||
case 'delete-bulk':
|
||||
|
||||
foreach ($id_records as $id) {
|
||||
$elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idarticolo` = '.prepare($id).')
|
||||
|
||||
|
|
|
@ -19,11 +19,12 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\Fatture\Export\CSV;
|
||||
use Modules\Fatture\Fattura;
|
||||
use Modules\Fatture\Stato;
|
||||
use Plugins\ExportFE\FatturaElettronica;
|
||||
use Util\XML;
|
||||
use Plugins\ExportFE\Interaction;
|
||||
use Util\XML;
|
||||
use Util\Zip;
|
||||
|
||||
switch (post('op')) {
|
||||
|
@ -275,13 +276,12 @@ switch (post('op')) {
|
|||
]));
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case 'check-bulk':
|
||||
$list = [];
|
||||
$anomalie = collect();
|
||||
|
||||
foreach ($id_records as $id) {
|
||||
|
||||
$fattura_vendita = Fattura::vendita()
|
||||
->whereNotIn('codice_stato_fe', ['ERR', 'NS', 'EC02', 'ERVAL'])
|
||||
->where('data', '>=', $_SESSION['period_start'])
|
||||
|
@ -289,175 +289,158 @@ switch (post('op')) {
|
|||
->where('id', '=', $id)
|
||||
->orderBy('data')
|
||||
->get();
|
||||
|
||||
$fattura_vendita = $fattura_vendita[0];
|
||||
|
||||
if (!empty($fattura_vendita)){
|
||||
try {
|
||||
|
||||
$fattura_vendita = $fattura_vendita[0];
|
||||
|
||||
if (!empty($fattura_vendita)) {
|
||||
try {
|
||||
$xml = XML::read($fattura_vendita->getXML());
|
||||
|
||||
|
||||
$totale_documento_xml = null;
|
||||
|
||||
// Totale basato sul campo ImportoTotaleDocumento
|
||||
$dati_generali = $xml['FatturaElettronicaBody']['DatiGenerali']['DatiGeneraliDocumento'];
|
||||
if (isset($dati_generali['ImportoTotaleDocumento'])) {
|
||||
$totale_documento_indicato = abs(floatval($dati_generali['ImportoTotaleDocumento']));
|
||||
|
||||
|
||||
// Calcolo del totale basato sui DatiRiepilogo
|
||||
if (empty($totale_documento_xml) && empty($dati_generali['ScontoMaggiorazione'])) {
|
||||
$totale_documento_xml = 0;
|
||||
|
||||
|
||||
$riepiloghi = $xml['FatturaElettronicaBody']['DatiBeniServizi']['DatiRiepilogo'];
|
||||
if (!empty($riepiloghi) && !isset($riepiloghi[0])) {
|
||||
$riepiloghi = [$riepiloghi];
|
||||
}
|
||||
|
||||
|
||||
foreach ($riepiloghi as $riepilogo) {
|
||||
$totale_documento_xml = sum([$totale_documento_xml, $riepilogo['ImponibileImporto'], $riepilogo['Imposta']]);
|
||||
}
|
||||
|
||||
|
||||
$totale_documento_xml = abs($totale_documento_xml);
|
||||
} else {
|
||||
$totale_documento_xml = $totale_documento_indicato;
|
||||
}
|
||||
$totale_documento_xml = $fattura_vendita->isNota() ? -$totale_documento_xml : $totale_documento_xml;
|
||||
$totale_documento_xml = $fattura_vendita->isNota() ? -$totale_documento_xml : $totale_documento_xml;
|
||||
}
|
||||
|
||||
|
||||
// Se riscontro un'anomalia
|
||||
if ( $fattura_vendita->anagrafica->piva != $xml['FatturaElettronicaHeader']['CessionarioCommittente']['DatiAnagrafici']['IdFiscaleIVA']['IdCodice'] || $fattura_vendita->anagrafica->codice_fiscale != $xml['FatturaElettronicaHeader']['CessionarioCommittente']['DatiAnagrafici']['CodiceFiscale'] || $fattura_vendita->totale != $totale_documento_xml ){
|
||||
|
||||
if ($fattura_vendita->anagrafica->piva != $xml['FatturaElettronicaHeader']['CessionarioCommittente']['DatiAnagrafici']['IdFiscaleIVA']['IdCodice'] || $fattura_vendita->anagrafica->codice_fiscale != $xml['FatturaElettronicaHeader']['CessionarioCommittente']['DatiAnagrafici']['CodiceFiscale'] || $fattura_vendita->totale != $totale_documento_xml) {
|
||||
/*echo json_encode([
|
||||
'totale_documento_xml' => $totale_documento_xml,
|
||||
'totale_documento' => $totale_documento,
|
||||
]);*/
|
||||
|
||||
|
||||
$anomalie->push([
|
||||
'fattura_vendita' => $fattura_vendita,
|
||||
'codice_fiscale_xml' => !empty($xml['FatturaElettronicaHeader']['CessionarioCommittente']['DatiAnagrafici']['CodiceFiscale']) ? $xml['FatturaElettronicaHeader']['CessionarioCommittente']['DatiAnagrafici']['CodiceFiscale'] : null,
|
||||
'codice_fiscale' => $fattura_vendita->anagrafica->codice_fiscale,
|
||||
'piva_xml' => !empty($xml['FatturaElettronicaHeader']['CessionarioCommittente']['DatiAnagrafici']['IdFiscaleIVA']['IdCodice']) ? $xml['FatturaElettronicaHeader']['CessionarioCommittente']['DatiAnagrafici']['IdFiscaleIVA']['IdCodice'] : null,
|
||||
'piva' => $fattura_vendita->anagrafica->piva,
|
||||
'totale_documento_xml' => moneyFormat($totale_documento_xml,2),
|
||||
'totale_documento' => moneyFormat($fattura_vendita->totale,2),
|
||||
'totale_documento_xml' => moneyFormat($totale_documento_xml, 2),
|
||||
'totale_documento' => moneyFormat($fattura_vendita->totale, 2),
|
||||
'have_xml' => 1,
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
|
||||
$anomalie->push([
|
||||
'fattura_vendita' => $fattura_vendita,
|
||||
'have_xml' => 0,
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
array_push($list, $fattura_vendita->numero_esterno);
|
||||
}
|
||||
}
|
||||
|
||||
// Messaggi di risposta
|
||||
if (empty($list)){
|
||||
|
||||
if (empty($list)) {
|
||||
flash()->warning(tr('Nessuna fattura utile per il controllo!'));
|
||||
|
||||
}else{
|
||||
|
||||
} else {
|
||||
flash()->info(tr('Fatture _LIST_ controllate.', [
|
||||
'_LIST_' => implode(',', $list),
|
||||
]));
|
||||
|
||||
// Se ci sono anomalie
|
||||
if ($anomalie->count()>0) {
|
||||
|
||||
function diff($old, $new){
|
||||
$matrix = array();
|
||||
if ($anomalie->count() > 0) {
|
||||
function diff($old, $new)
|
||||
{
|
||||
$matrix = [];
|
||||
$maxlen = 0;
|
||||
foreach($old as $oindex => $ovalue){
|
||||
foreach ($old as $oindex => $ovalue) {
|
||||
$nkeys = array_keys($new, $ovalue);
|
||||
foreach($nkeys as $nindex){
|
||||
foreach ($nkeys as $nindex) {
|
||||
$matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
|
||||
$matrix[$oindex - 1][$nindex - 1] + 1 : 1;
|
||||
if($matrix[$oindex][$nindex] > $maxlen){
|
||||
if ($matrix[$oindex][$nindex] > $maxlen) {
|
||||
$maxlen = $matrix[$oindex][$nindex];
|
||||
$omax = $oindex + 1 - $maxlen;
|
||||
$nmax = $nindex + 1 - $maxlen;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if($maxlen == 0) return array(array('d'=>$old, 'i'=>$new));
|
||||
if ($maxlen == 0) {
|
||||
return [['d' => $old, 'i' => $new]];
|
||||
}
|
||||
|
||||
return array_merge(
|
||||
diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)),
|
||||
array_slice($new, $nmax, $maxlen),
|
||||
diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen)));
|
||||
}
|
||||
|
||||
function htmlDiff($old, $new){
|
||||
|
||||
function htmlDiff($old, $new)
|
||||
{
|
||||
$ret = '';
|
||||
$diff = diff(preg_split("/[\s]+/", $old), preg_split("/[\s]+/", $new));
|
||||
foreach($diff as $k){
|
||||
if(is_array($k))
|
||||
$ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
|
||||
(!empty($k['i'])?"<span>".implode(' ',$k['i'])."</span> ":'');
|
||||
else $ret .= $k . ' ';
|
||||
foreach ($diff as $k) {
|
||||
if (is_array($k)) {
|
||||
$ret .= (!empty($k['d']) ? '<del>'.implode(' ', $k['d']).'</del> ' : '').
|
||||
(!empty($k['i']) ? '<span>'.implode(' ', $k['i']).'</span> ' : '');
|
||||
} else {
|
||||
$ret .= $k.' ';
|
||||
}
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$riepilogo_anomalie .= tr('Attenzione: Trovate _NUM_ anomalie! Le seguenti fatture non trovano corrispondenza tra XML e dati nel documento:', [ '_NUM_' => $anomalie->count() ]).' </br></br>';
|
||||
|
||||
|
||||
foreach ($anomalie as $anomalia) {
|
||||
|
||||
$riepilogo_anomalie .= '<ul><li>'.reference($anomalia['fattura_vendita'], $anomalia['fattura_vendita']->getReference()).'</li>';
|
||||
|
||||
if (!empty($anomalia['have_xml'])){
|
||||
$riepilogo_anomalie .= tr('Attenzione: Trovate _NUM_ anomalie! Le seguenti fatture non trovano corrispondenza tra XML e dati nel documento:', ['_NUM_' => $anomalie->count()]).' </br></br>';
|
||||
|
||||
foreach ($anomalie as $anomalia) {
|
||||
$riepilogo_anomalie .= '<ul><li>'.reference($anomalia['fattura_vendita'], $anomalia['fattura_vendita']->getReference()).'</li>';
|
||||
|
||||
if (!empty($anomalia['have_xml'])) {
|
||||
$riepilogo_anomalie .= '<li><table class="table table-bordered table-condensed">
|
||||
<tr><th>Sorgente</th><th>P. Iva</th><th>Cod. fiscale</th><th>Totale</th></tr>';
|
||||
|
||||
|
||||
$riepilogo_anomalie .= '<tr><td>XML</td> <td>'.$anomalia['piva_xml'].'</td> <td>'.$anomalia['codice_fiscale_xml'].'</td> <td>'.$anomalia['totale_documento_xml'].'</td></tr>';
|
||||
|
||||
$riepilogo_anomalie .= '<tr><td>Gestionale</td> <td>'.htmlDiff($anomalia['piva_xml'],$anomalia['piva']).'</td> <td>'.htmlDiff($anomalia['codice_fiscale_xml'],$anomalia['codice_fiscale']).'</td> <td>'.htmlDiff($anomalia['totale_documento_xml'],$anomalia['totale_documento']).'</td></tr></table></li>';
|
||||
|
||||
}else{
|
||||
|
||||
$riepilogo_anomalie .= '<tr><td>Gestionale</td> <td>'.htmlDiff($anomalia['piva_xml'], $anomalia['piva']).'</td> <td>'.htmlDiff($anomalia['codice_fiscale_xml'], $anomalia['codice_fiscale']).'</td> <td>'.htmlDiff($anomalia['totale_documento_xml'], $anomalia['totale_documento']).'</td></tr></table></li>';
|
||||
} else {
|
||||
$riepilogo_anomalie .= ' <li>'.tr('Impossibile verificare l\'XML di questa fattura.').'</li>';
|
||||
|
||||
}
|
||||
|
||||
$riepilogo_anomalie .= '</ul><br>';
|
||||
|
||||
}
|
||||
|
||||
|
||||
flash()->warning($riepilogo_anomalie);
|
||||
|
||||
}else{
|
||||
|
||||
} else {
|
||||
flash()->info(tr('Nessuna anomalia!'));
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'download-csv':
|
||||
|
||||
$dir = base_dir().'/files/export_fatture/';
|
||||
directory($dir.'tmp/');
|
||||
$file = secure_random_string().'.csv';
|
||||
$dir_csv = slashes($dir.'tmp/'.$file);
|
||||
case 'export-csv':
|
||||
$file = temp_file();
|
||||
$exporter = new CSV($file);
|
||||
|
||||
$filename = 'fatture.csv';
|
||||
// Esportazione dei record selezionati
|
||||
$fatture = Fattura::whereIn('id', $id_records)->get();
|
||||
$exporter->setRecords($fatture);
|
||||
|
||||
$t = new Modules\Fatture\Export\CSV($dir_csv);
|
||||
$count = $exporter->exportRecords();
|
||||
|
||||
if($t->exportRecords()){
|
||||
|
||||
download($dir_csv, $filename);
|
||||
delete($dir.'tmp/');
|
||||
}
|
||||
download($file, 'fatture.csv');
|
||||
|
||||
break;
|
||||
|
||||
|
@ -479,8 +462,8 @@ if (App::debug()) {
|
|||
'text' => '<span><i class="fa fa-trash"></i> '.tr('Elimina selezionati').'</span> <span class="label label-danger" >beta</span>',
|
||||
];
|
||||
|
||||
$operations['download-csv'] = [
|
||||
'text' => '<span><i class="fa fa-download"></i> '.tr('Esporta tutto').'</span> <span class="label label-danger" >beta</span>',
|
||||
$operations['export-csv'] = [
|
||||
'text' => '<span><i class="fa fa-download"></i> '.tr('Esporta selezionati').'</span> <span class="label label-danger" >beta</span>',
|
||||
'data' => [
|
||||
'msg' => tr('Vuoi davvero esportare un CSV con tutte le fatture?'),
|
||||
'button' => tr('Procedi'),
|
||||
|
@ -488,7 +471,6 @@ if (App::debug()) {
|
|||
'blank' => true,
|
||||
],
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
$operations['copy-bulk'] = [
|
||||
|
@ -543,7 +525,6 @@ if ($module->name == 'Fatture di vendita') {
|
|||
'blank' => true,
|
||||
],
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
$operations['export-xml-bulk'] = [
|
||||
|
|
|
@ -46,7 +46,7 @@ class CSV extends CSVExporter
|
|||
'label' => 'Data',
|
||||
],
|
||||
[
|
||||
'field' => 'idanagrafica',
|
||||
'field' => 'anagrafica.ragione_sociale',
|
||||
'label' => 'Ragione sociale',
|
||||
],
|
||||
[
|
||||
|
@ -54,7 +54,7 @@ class CSV extends CSVExporter
|
|||
'label' => 'Totale',
|
||||
],
|
||||
[
|
||||
'field' => 'idstatodocumento',
|
||||
'field' => 'stato.descrizione',
|
||||
'label' => 'Stato',
|
||||
],
|
||||
[
|
||||
|
@ -66,11 +66,6 @@ class CSV extends CSVExporter
|
|||
|
||||
public function getRecords()
|
||||
{
|
||||
|
||||
$id_module = filter('id_module');
|
||||
$results = Fattura::all()->where('id_segment', $_SESSION['module_'.$id_module]['id_segment']);
|
||||
|
||||
return $results;
|
||||
|
||||
return Fattura::all();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,35 +17,30 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\Impianti\Export\CSV;
|
||||
use Modules\Impianti\Impianto;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
switch (post('op')) {
|
||||
|
||||
case 'download-csv':
|
||||
|
||||
$dir = base_dir().'/files/export_impianti/';
|
||||
directory($dir.'tmp/');
|
||||
$file = secure_random_string().'.csv';
|
||||
$dir_csv = slashes($dir.'tmp/'.$file);
|
||||
case 'export-csv':
|
||||
$file = temp_file();
|
||||
$exporter = new CSV($file);
|
||||
|
||||
$filename = 'impianti.csv';
|
||||
// Esportazione dei record selezionati
|
||||
$fatture = Impianto::whereIn('id', $id_records)->get();
|
||||
$exporter->setRecords($fatture);
|
||||
|
||||
$t = new Modules\Impianti\Export\CSV($dir_csv);
|
||||
$count = $exporter->exportRecords();
|
||||
|
||||
if($t->exportRecords()){
|
||||
|
||||
download($dir_csv, $filename);
|
||||
delete($dir.'tmp/');
|
||||
}
|
||||
download($file, 'impianti.csv');
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (App::debug()) {
|
||||
$operations['download-csv'] = [
|
||||
'text' => '<span><i class="fa fa-download"></i> '.tr('Esporta tutto').'</span> <span class="label label-danger" >beta</span>',
|
||||
$operations['export-csv'] = [
|
||||
'text' => '<span><i class="fa fa-download"></i> '.tr('Esporta selezionati').'</span> <span class="label label-danger" >beta</span>',
|
||||
'data' => [
|
||||
'msg' => tr('Vuoi davvero esportare un CSV con tutti gli impianti?'),
|
||||
'button' => tr('Procedi'),
|
||||
|
@ -55,4 +50,4 @@ if (App::debug()) {
|
|||
];
|
||||
}
|
||||
|
||||
return $operations;
|
||||
return $operations;
|
||||
|
|
|
@ -19,16 +19,14 @@
|
|||
|
||||
namespace Modules\StatoServizi;
|
||||
|
||||
use Util\FileSystem;
|
||||
use Hooks\CachedManager;
|
||||
|
||||
use Util\FileSystem;
|
||||
|
||||
/**
|
||||
* Hook dedicato all'individuazione di nuove versioni del gestionale, pubblicate sulla repository ufficiale di GitHub.
|
||||
*/
|
||||
class SpaceHook extends CachedManager
|
||||
{
|
||||
|
||||
public function getCacheName()
|
||||
{
|
||||
return 'Spazio utilizzato';
|
||||
|
@ -44,12 +42,11 @@ class SpaceHook extends CachedManager
|
|||
$osm_size = $this->getCache()->content;
|
||||
|
||||
$soft_quota = setting('Soft quota'); //MB
|
||||
$space_limit = ($soft_quota / 100)*95; //MB
|
||||
$space_limit = ($soft_quota / 100) * 95; //MB
|
||||
|
||||
$message = tr("Attenzione: occupati _TOT_ dei _SOFTQUOTA_ previsti", [
|
||||
$message = tr('Attenzione: occupati _TOT_ dei _SOFTQUOTA_ previsti', [
|
||||
'_TOT_' => FileSystem::formatBytes($osm_size),
|
||||
'_SOFTQUOTA_' => FileSystem::formatBytes($soft_quota * 1048576),
|
||||
|
||||
'_SOFTQUOTA_' => FileSystem::formatBytes($soft_quota * 1048576),
|
||||
]);
|
||||
|
||||
return [
|
||||
|
@ -59,24 +56,19 @@ class SpaceHook extends CachedManager
|
|||
];
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Controlla se è disponibile un aggiornamento nella repository GitHub.
|
||||
*
|
||||
* @return int|bool
|
||||
*/
|
||||
public static function isAvailable()
|
||||
{
|
||||
|
||||
if (!empty(setting('Soft quota'))){
|
||||
|
||||
if (!empty(setting('Soft quota'))) {
|
||||
$osm_size = FileSystem::folderSize(base_dir(), ['htaccess']);
|
||||
|
||||
|
||||
return $osm_size;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ class Interaction extends Services
|
|||
'filename' => $fattura->getFilename(),
|
||||
]);
|
||||
$body = static::responseBody($response);
|
||||
|
||||
|
||||
// Aggiornamento dello stato
|
||||
if ($body['status'] == 200 || $body['status'] == 301) {
|
||||
database()->update('co_documenti', [
|
||||
|
|
|
@ -64,6 +64,10 @@ abstract class CSVExporter implements ExporterInterface
|
|||
|
||||
public function exportRecords()
|
||||
{
|
||||
// Esportazione header
|
||||
$fields = $this->getAvailableFields();
|
||||
$this->csv->insertOne(array_column($fields, 'label'));
|
||||
|
||||
$records = $this->records ?: $this->getRecords();
|
||||
foreach ($records as $record) {
|
||||
// Esportazione del record
|
||||
|
@ -81,7 +85,14 @@ abstract class CSVExporter implements ExporterInterface
|
|||
foreach ($fields as $field) {
|
||||
$nome = $field['field'];
|
||||
|
||||
$row[] = $record[$nome];
|
||||
// Navigazione secondo dot notation
|
||||
$dot_notation = explode('.', $nome);
|
||||
$contenuto = $record;
|
||||
foreach ($dot_notation as $segment) {
|
||||
$contenuto = isset($contenuto[$segment]) ? $contenuto[$segment] : null;
|
||||
}
|
||||
|
||||
$row[] = $contenuto;
|
||||
}
|
||||
|
||||
return $this->csv->insertOne($row);
|
||||
|
|
Loading…
Reference in New Issue