Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
11919440cf
|
@ -20,8 +20,6 @@
|
||||||
namespace Modules\Aggiornamenti\Controlli;
|
namespace Modules\Aggiornamenti\Controlli;
|
||||||
|
|
||||||
use Models\Module;
|
use Models\Module;
|
||||||
use Modules\Fatture\Fattura;
|
|
||||||
use Util\XML;
|
|
||||||
|
|
||||||
class ColonneDuplicateViste extends Controllo
|
class ColonneDuplicateViste extends Controllo
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,11 +55,17 @@ switch (filter('op')) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'backup':
|
case 'backup':
|
||||||
if (Backup::create()) {
|
try {
|
||||||
|
$result = Backup::create();
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
flash()->info(tr('Nuovo backup creato correttamente!'));
|
flash()->info(tr('Nuovo backup creato correttamente!'));
|
||||||
} else {
|
} else {
|
||||||
flash()->error(tr('Errore durante la creazione del backup!').' '.str_replace('_DIR_', '"'.$backup_dir.'"', tr('Verifica che la cartella _DIR_ abbia i permessi di scrittura!')));
|
flash()->error(tr('Errore durante la creazione del backup!').' '.str_replace('_DIR_', '"'.$backup_dir.'"', tr('Verifica che la cartella _DIR_ abbia i permessi di scrittura!')));
|
||||||
}
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
flash()->error(tr('Errore durante la creazione del backup!').' '.$e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ function restore() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creazione backup
|
// Creazione backup
|
||||||
function backup(){
|
function creaBackup(button){
|
||||||
swal({
|
swal({
|
||||||
title: "'.tr('Nuovo backup').'",
|
title: "'.tr('Nuovo backup').'",
|
||||||
text: "'.tr('Sei sicuro di voler creare un nuovo backup?').'",
|
text: "'.tr('Sei sicuro di voler creare un nuovo backup?').'",
|
||||||
|
@ -88,10 +88,32 @@ function backup(){
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonClass: "btn btn-lg btn-success",
|
confirmButtonClass: "btn btn-lg btn-success",
|
||||||
confirmButtonText: "'.tr('Crea').'",
|
confirmButtonText: "'.tr('Crea').'",
|
||||||
}).then(
|
}).then(function() {
|
||||||
function() {
|
let restore = buttonLoading(button);
|
||||||
location.href = globals.rootdir + "/editor.php?id_module='.$id_module.'&op=backup";
|
$("#main_loading").show();
|
||||||
}, function() {});
|
|
||||||
|
$.ajax({
|
||||||
|
url: globals.rootdir + "/actions.php",
|
||||||
|
type: "GET",
|
||||||
|
data: {
|
||||||
|
id_module: globals.id_module,
|
||||||
|
op: "backup",
|
||||||
|
},
|
||||||
|
success: function(data) {
|
||||||
|
$("#main_loading").fadeOut();
|
||||||
|
buttonRestore(button, restore);
|
||||||
|
|
||||||
|
// Ricaricamento della pagina corrente
|
||||||
|
window.location.reload();
|
||||||
|
},
|
||||||
|
error: function() {
|
||||||
|
swal("'.tr('Errore').'", "'.tr('Errore durante la creazione del backup').'", "error");
|
||||||
|
renderMessages();
|
||||||
|
|
||||||
|
buttonRestore(button, restore);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}).catch(swal.noop);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Caricamento
|
// Caricamento
|
||||||
|
@ -100,7 +122,7 @@ function loadSize(number, id){
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: globals.rootdir + "/actions.php",
|
url: globals.rootdir + "/actions.php",
|
||||||
type: "get",
|
type: "GET",
|
||||||
data: {
|
data: {
|
||||||
id_module: globals.id_module,
|
id_module: globals.id_module,
|
||||||
op: "size",
|
op: "size",
|
||||||
|
@ -294,7 +316,9 @@ if (file_exists($backup_dir)) {
|
||||||
// Creazione backup
|
// Creazione backup
|
||||||
if (!empty($backup_dir)) {
|
if (!empty($backup_dir)) {
|
||||||
echo '
|
echo '
|
||||||
<button type="button" class="btn btn-primary pull-right" onclick="backup()"><i class="fa fa-database"></i> '.tr('Crea backup').'...</button>
|
<button type="button" class="btn btn-primary pull-right" onclick="creaBackup(this)">
|
||||||
|
<i class="fa fa-database"></i> '.tr('Crea backup').'...
|
||||||
|
</button>
|
||||||
|
|
||||||
<div class="clearfix"></div>';
|
<div class="clearfix"></div>';
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ if (!empty($variables)) {
|
||||||
|
|
||||||
foreach ($variables as $variable => $value) {
|
foreach ($variables as $variable => $value) {
|
||||||
echo '
|
echo '
|
||||||
<li><code>{'.$variable.'}</code></li>';
|
<li><code>'.$variable.'</code></li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
|
|
@ -21,7 +21,6 @@ include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
use Modules\Anagrafiche\Anagrafica;
|
use Modules\Anagrafiche\Anagrafica;
|
||||||
use Modules\Articoli\Articolo as ArticoloOriginale;
|
use Modules\Articoli\Articolo as ArticoloOriginale;
|
||||||
use Modules\DDT\DDT;
|
|
||||||
use Modules\Fatture\Components\Articolo;
|
use Modules\Fatture\Components\Articolo;
|
||||||
use Modules\Fatture\Components\Descrizione;
|
use Modules\Fatture\Components\Descrizione;
|
||||||
use Modules\Fatture\Components\Riga;
|
use Modules\Fatture\Components\Riga;
|
||||||
|
|
|
@ -464,7 +464,7 @@ class Fattura extends Document
|
||||||
|
|
||||||
$file = $this->uploads()->where('name', '=', 'Fattura Elettronica')->first();
|
$file = $this->uploads()->where('name', '=', 'Fattura Elettronica')->first();
|
||||||
if (empty($file)) {
|
if (empty($file)) {
|
||||||
throw new InvalidArgumentException("Fattura Elettronica non trovata");
|
throw new InvalidArgumentException('Fattura Elettronica non trovata');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $file->getContent();
|
return $file->getContent();
|
||||||
|
|
|
@ -110,7 +110,7 @@ if (!empty($variables)) {
|
||||||
|
|
||||||
foreach ($variables as $variable => $value) {
|
foreach ($variables as $variable => $value) {
|
||||||
echo '
|
echo '
|
||||||
<li><code>{'.$variable.'}</code></li>';
|
<li><code>'.$variable.'</code></li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
|
|
@ -95,7 +95,7 @@ class Intervento extends Resource implements UpdateInterface
|
||||||
$this->importaRecords($key, $records);
|
$this->importaRecords($key, $records);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->response;
|
return $this->forceToString($this->response);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -136,8 +136,10 @@ class Intervento extends Resource implements UpdateInterface
|
||||||
|
|
||||||
foreach ($records as $id => $record) {
|
foreach ($records as $id => $record) {
|
||||||
// Fix id_cliente per Intervento in caso di generazione da zero
|
// Fix id_cliente per Intervento in caso di generazione da zero
|
||||||
if ($risorsa instanceof Interventi && !empty($this->response['cliente'][$id])) {
|
if ($risorsa instanceof Interventi && !empty($this->response['cliente'][$id]) && !empty($this->response['cliente'][$id]['id'])) {
|
||||||
$record['id_cliente'] = $this->response['cliente'][$id]['id'];
|
$record['id_cliente'] = $this->response['cliente'][$id]['id'];
|
||||||
|
} elseif (!($risorsa instanceof Clienti) && !empty($this->response['intervento'][0]) && !empty($this->response['intervento'][0]['id'])){
|
||||||
|
$record['id_intervento'] = $this->response['intervento'][0]['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = null;
|
$response = null;
|
||||||
|
@ -174,4 +176,28 @@ class Intervento extends Resource implements UpdateInterface
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converte i valori numerici in stringhe.
|
||||||
|
*
|
||||||
|
* @param $list
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function forceToString($list)
|
||||||
|
{
|
||||||
|
$result = [];
|
||||||
|
// Fix per la gestione dei contenuti numerici
|
||||||
|
foreach ($list as $key => $value) {
|
||||||
|
if (is_numeric($value)) {
|
||||||
|
$result[$key] = (string) $value;
|
||||||
|
} elseif (is_array($value)) {
|
||||||
|
$result[$key] = $this->forceToString($value);
|
||||||
|
} else {
|
||||||
|
$result[$key] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ use API\Resource;
|
||||||
|
|
||||||
class Revisione extends Resource implements RetrieveInterface
|
class Revisione extends Resource implements RetrieveInterface
|
||||||
{
|
{
|
||||||
const REVISION = '1.3';
|
const REVISION = '5';
|
||||||
|
|
||||||
public function retrieve($request)
|
public function retrieve($request)
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Ifsnop\Mysqldump\Mysqldump;
|
use Ifsnop\Mysqldump\Mysqldump;
|
||||||
|
use Util\FileSystem;
|
||||||
use Util\Generator;
|
use Util\Generator;
|
||||||
use Util\Zip;
|
use Util\Zip;
|
||||||
|
|
||||||
|
@ -148,6 +149,8 @@ class Backup
|
||||||
*/
|
*/
|
||||||
public static function create()
|
public static function create()
|
||||||
{
|
{
|
||||||
|
self::checkSpace();
|
||||||
|
|
||||||
$backup_dir = self::getDirectory();
|
$backup_dir = self::getDirectory();
|
||||||
$backup_name = self::getNextName();
|
$backup_name = self::getNextName();
|
||||||
|
|
||||||
|
@ -276,6 +279,40 @@ class Backup
|
||||||
delete(base_dir().'/database.sql');
|
delete(base_dir().'/database.sql');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Effettua i controlli relativi allo spazio disponibile per l'esecuzione del backup;.
|
||||||
|
*/
|
||||||
|
public static function checkSpace()
|
||||||
|
{
|
||||||
|
$scarto = 1.1;
|
||||||
|
|
||||||
|
// Informazioni di base sui limiti di spazio
|
||||||
|
$spazio_libero = disk_free_space('.');
|
||||||
|
if (!empty(setting('Soft quota'))) {
|
||||||
|
$soft_quota = (float) setting('Soft quota'); // Impostazione in GB
|
||||||
|
$soft_quota = $soft_quota * (1024 ** 3); // Trasformazione in GB
|
||||||
|
}
|
||||||
|
|
||||||
|
// Informazioni sullo spazio occupato
|
||||||
|
$spazio_occupato = $spazio_necessario = FileSystem::folderSize(base_dir(), ['htaccess']);
|
||||||
|
$cartelle_ignorate = [
|
||||||
|
self::getDirectory(),
|
||||||
|
'node_modules',
|
||||||
|
'tests',
|
||||||
|
'tmp',
|
||||||
|
];
|
||||||
|
foreach ($cartelle_ignorate as $path) {
|
||||||
|
$spazio_necessario -= FileSystem::folderSize($path);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Errori visualizzati
|
||||||
|
if (isset($soft_quota) && $soft_quota < ($spazio_necessario + $spazio_occupato) * $scarto) {
|
||||||
|
throw new InvalidArgumentException('Spazio disponibile in esaurimento');
|
||||||
|
} elseif ($spazio_libero < ($spazio_necessario) * $scarto) {
|
||||||
|
throw new InvalidArgumentException('Spazio del server in esaurimento');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restituisce il percorso su cui salvare temporaneamente il dump del database.
|
* Restituisce il percorso su cui salvare temporaneamente il dump del database.
|
||||||
*
|
*
|
||||||
|
|
|
@ -78,6 +78,7 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restituisce tutte le righe collegate al documento.
|
* Restituisce tutte le righe collegate al documento.
|
||||||
|
*
|
||||||
* @return \Illuminate\Support\Collection|iterable
|
* @return \Illuminate\Support\Collection|iterable
|
||||||
*/
|
*/
|
||||||
public function getRighe()
|
public function getRighe()
|
||||||
|
@ -91,8 +92,10 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restituisce la riga con tipo e identificativo corrispondente.
|
* Restituisce la riga con tipo e identificativo corrispondente.
|
||||||
|
*
|
||||||
* @param $type
|
* @param $type
|
||||||
* @param $id
|
* @param $id
|
||||||
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function getRiga($type, $id)
|
public function getRiga($type, $id)
|
||||||
|
@ -106,6 +109,7 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restituisce le righe del documento raggruppate per documento di origine.
|
* Restituisce le righe del documento raggruppate per documento di origine.
|
||||||
|
*
|
||||||
* @return \Illuminate\Support\Collection|iterable
|
* @return \Illuminate\Support\Collection|iterable
|
||||||
*/
|
*/
|
||||||
public function getRigheRaggruppate()
|
public function getRigheRaggruppate()
|
||||||
|
|
Loading…
Reference in New Issue