diff --git a/config/namespaces.php b/config/namespaces.php
index d8c5086db..e649cfb4b 100644
--- a/config/namespaces.php
+++ b/config/namespaces.php
@@ -5,6 +5,7 @@ return [
'modules/anagrafiche' => 'Modules\Anagrafiche',
'modules/articoli' => 'Modules\Articoli',
'modules/ritenute' => 'Modules\Ritenute',
+ 'modules/rivalse' => 'Modules\Rivalse',
'modules/iva' => 'Modules\Iva',
'modules/ddt' => 'Modules\DDT',
'modules/fatture' => 'Modules\Fatture',
diff --git a/core.php b/core.php
index e29f09032..a900822b2 100644
--- a/core.php
+++ b/core.php
@@ -111,7 +111,7 @@ Monolog\ErrorHandler::register($logger, [], Monolog\Logger::ERROR, Monolog\Logge
// Aggiunta di Monolog a Whoops
if (App::debug()) {
- $whoops->pushHandler(function (\Whoops\Exception\ErrorException $exception, $inspector, $run) use ($logger) {
+ $whoops->pushHandler(function ($exception, $inspector, $run) use ($logger) {
$logger->addError($exception->getMessage(), [
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
diff --git a/include/src/Components/Article.php b/include/src/Components/Article.php
index 7c6819def..993a91e4e 100644
--- a/include/src/Components/Article.php
+++ b/include/src/Components/Article.php
@@ -96,32 +96,6 @@ abstract class Article extends Row
return $this->belongsTo(Original::class, 'idarticolo');
}
- public function copiaIn(Document $document)
- {
- $class = get_class($document);
- $namespace = implode('\\', explode('\\', $class, -1));
-
- $current = get_class($this);
- $pieces = explode('\\', $current);
- $type = end($pieces);
-
- $object = $namespace.'\\Components\\'.$type;
-
- $attributes = $this->getAttributes();
- unset($attributes['id']);
-
- $model = $object::build($document, $this->articolo);
- $model->save();
-
- $model = $object::find($model->id);
- $accepted = $model->getAttributes();
-
- $attributes = array_intersect_key($attributes, $accepted);
- $model->fill($attributes);
-
- return $model;
- }
-
protected static function boot()
{
parent::boot(true);
@@ -169,4 +143,9 @@ abstract class Article extends Row
return true;
}
+
+ protected function customCopiaIn($original)
+ {
+ $this->articolo()->associate($original->articolo);
+ }
}
diff --git a/include/src/Components/Description.php b/include/src/Components/Description.php
index b219e4d74..b552d4d5a 100644
--- a/include/src/Components/Description.php
+++ b/include/src/Components/Description.php
@@ -23,6 +23,11 @@ abstract class Description extends Model
return $model;
}
+ /**
+ * Imposta il proprietario dell'oggetto e l'ordine relativo all'interno delle righe.
+ *
+ * @param Document $document
+ */
public function setParent(Document $document)
{
$this->parent()->associate($document);
@@ -35,8 +40,17 @@ abstract class Description extends Model
$this->save();
}
- public function copiaIn(Document $document)
+ /**
+ * Copia l'oggetto (articolo, riga, descrizione) nel corrispettivo per il documento indicato.
+ *
+ * @param Document $document
+ * @param float|null $qta
+ *
+ * @return self
+ */
+ public function copiaIn(Document $document, $qta = null)
{
+ // Individuazione classe di destinazione
$class = get_class($document);
$namespace = implode('\\', explode('\\', $class, -1));
@@ -46,18 +60,34 @@ abstract class Description extends Model
$object = $namespace.'\\Components\\'.$type;
+ // Attributi dell'oggetto da copiare
$attributes = $this->getAttributes();
unset($attributes['id']);
- $model = $object::build($document);
+ if ($qta !== null) {
+ $attributes['qta'] = $qta;
+ }
+
+ // Creazione del nuovo oggetto
+ $model = new $object();
+ $model->setParent($document);
+
+ $model->customCopiaIn($this);
+
$model->save();
+ // Impostazione degli attributi
$model = $object::find($model->id);
$accepted = $model->getAttributes();
$attributes = array_intersect_key($attributes, $accepted);
$model->fill($attributes);
+ $model->save();
+
+ // Rimozione quantità evasa
+ $this->qta_evasa = $this->qta_evasa + $attributes['qta'];
+
return $model;
}
@@ -65,6 +95,15 @@ abstract class Description extends Model
abstract public function getParentID();
+ /**
+ * Azione personalizzata per la copia dell'oggetto.
+ *
+ * @param $original
+ */
+ protected function customCopiaIn($original)
+ {
+ }
+
protected static function boot($bypass = false)
{
parent::boot();
diff --git a/include/src/Components/Row.php b/include/src/Components/Row.php
index 4a3cb5210..f3fea9e43 100644
--- a/include/src/Components/Row.php
+++ b/include/src/Components/Row.php
@@ -6,7 +6,7 @@ use Common\Document;
use Illuminate\Database\Eloquent\Builder;
use Modules\Iva\Aliquota;
use Modules\Ritenute\RitenutaAcconto;
-use Modules\Ritenute\RivalsaINPS;
+use Modules\Rivalse\RivalsaINPS;
abstract class Row extends Description
{
diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php
index f876017ba..eb946a383 100644
--- a/modules/contratti/actions.php
+++ b/modules/contratti/actions.php
@@ -58,11 +58,10 @@ switch (post('op')) {
$costo_orario = post('costo_orario');
$costo_km = post('costo_km');
$costo_diritto_chiamata = post('costo_diritto_chiamata');
-
- $id_documento_fe = post('id_documento_fe');
+
+ $id_documento_fe = post('id_documento_fe');
$codice_cig = post('codice_cig');
$codice_cup = post('codice_cup');
-
$query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).',
idsede='.prepare($idsede).',
@@ -84,7 +83,7 @@ switch (post('op')) {
id_documento_fe='.prepare($id_documento_fe).',
codice_cig='.prepare($codice_cig).',
codice_cup='.prepare($codice_cup).' WHERE id='.prepare($id_record);
-
+
// costo_diritto_chiamata='.prepare($costo_diritto_chiamata).', ore_lavoro='.prepare($ore_lavoro).', costo_orario='.prepare($costo_orario).', costo_km='.prepare($costo_km).'
$dbo->query($query);
diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php
index c8fbb7225..f6eee76f3 100644
--- a/modules/fatture/actions.php
+++ b/modules/fatture/actions.php
@@ -444,7 +444,7 @@ switch (post('op')) {
if (!empty(post('import'))) {
// Replicazione delle righe del contratto sul documento
- $righe = $dbo->fetchArray('SELECT idarticolo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto, IFNULL( (SELECT mg_articoli.abilita_serial FROM mg_articoli WHERE mg_articoli.id=co_righe_contratti.idarticolo), 0 ) AS abilita_serial FROM co_righe_contratti WHERE idcontratto='.prepare($idcontratto));
+ $righe = $dbo->fetchArray('SELECT *, IFNULL( (SELECT mg_articoli.abilita_serial FROM mg_articoli WHERE mg_articoli.id=co_righe_contratti.idarticolo), 0 ) AS abilita_serial FROM co_righe_contratti WHERE idcontratto='.prepare($idcontratto));
foreach ($righe as $key => $riga) {
$subtot = $riga['subtotale'];
diff --git a/modules/fatture/modutil.php b/modules/fatture/modutil.php
index 2dc237062..64c519fc2 100755
--- a/modules/fatture/modutil.php
+++ b/modules/fatture/modutil.php
@@ -555,15 +555,13 @@ function ricalcola_costiagg_fattura($iddocumento, $idrivalsainps = '', $idritenu
$marca_da_bollo = 0;
if (abs($bolli) > 0 && abs($netto_a_pagare > setting("Soglia minima per l'applicazione della marca da bollo"))) {
-
//Controllo che tra le iva ce ne sia almeno una con natura N1, N2, N3 o N4
- $check_natura = $dbo->fetchArray("SELECT codice_natura_fe FROM co_righe_documenti INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE iddocumento=".prepare($iddocumento)." AND codice_natura_fe IN('N1','N2','N3','N4') GROUP BY codice_natura_fe");
- if(($dir == 'entrata' && sizeof($check_natura)>0) || $dir == 'uscita'){
+ $check_natura = $dbo->fetchArray('SELECT codice_natura_fe FROM co_righe_documenti INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE iddocumento='.prepare($iddocumento)." AND codice_natura_fe IN('N1','N2','N3','N4') GROUP BY codice_natura_fe");
+ if (($dir == 'entrata' && sizeof($check_natura) > 0) || $dir == 'uscita') {
$marca_da_bollo = $bolli;
- }else{
+ } else {
$marca_da_bollo = 0.00;
}
-
}
// Se l'importo è negativo può essere una nota di credito, quindi cambio segno alla marca da bollo
diff --git a/modules/fatture/row-list.php b/modules/fatture/row-list.php
index 4736d33f2..1bbe1805b 100644
--- a/modules/fatture/row-list.php
+++ b/modules/fatture/row-list.php
@@ -58,24 +58,24 @@ foreach ($righe as $riga) {
elseif (!empty($riga['idintervento'])) {
//$ref_modulo = Modules::get('Interventi')['id'];
//$ref_id = $riga['idintervento'];
-
+
$intervento = $dbo->fetchOne('SELECT codice_cig,codice_cup,id_documento_fe FROM in_interventi WHERE id = '.prepare($riga['idintervento']));
$riga['codice_cig'] = $intervento['codice_cig'];
$riga['codice_cup'] = $intervento['codice_cup'];
$riga['id_documento_fe'] = $intervento['id_documento_fe'];
-
+
$delete = 'unlink_intervento';
}
// Preventivi
elseif (!empty($riga['idpreventivo'])) {
//$ref_modulo = Modules::get('Preventivi')['id'];
//$ref_id = $riga['idpreventivo'];
-
- $preventivo = $dbo->fetchOne('SELECT codice_cig,codice_cup,id_documento_fe FROM co_preventivi WHERE id = '.prepare($riga['idpreventivo']));
+
+ $preventivo = $dbo->fetchOne('SELECT codice_cig,codice_cup,id_documento_fe FROM co_preventivi WHERE id = '.prepare($riga['idpreventivo']));
$riga['codice_cig'] = $preventivo['codice_cig'];
$riga['codice_cup'] = $preventivo['codice_cup'];
$riga['id_documento_fe'] = $preventivo['id_documento_fe'];
-
+
$delete = 'unlink_preventivo';
}
// Contratti
@@ -108,14 +108,14 @@ foreach ($righe as $riga) {
}
$extra_riga = '';
- if (!$riga['is_descrizione']){
- $extra_riga = tr('_DESCRIZIONE_CONTO_ _ID_DOCUMENTO_ _CODICE_CIG_ _CODICE_CUP_ ', [
- '_DESCRIZIONE_CONTO_' => $riga['descrizione_conto'] ?: null,
- '_CODICE_CIG_' => $riga['codice_cig'] ? ',CIG: '.$riga['codice_cig'] : null,
- '_CODICE_CUP_' => $riga['codice_cup'] ? ',CUP: '.$riga['codice_cup'] : null,
- '_ID_DOCUMENTO_' => $riga['id_documento_fe'] ? ' - DOC: '.$riga['id_documento_fe'] : null,
- ]);
- }
+ if (!$riga['is_descrizione']) {
+ $extra_riga = tr('_DESCRIZIONE_CONTO_ _ID_DOCUMENTO_ _CODICE_CIG_ _CODICE_CUP_ ', [
+ '_DESCRIZIONE_CONTO_' => $riga['descrizione_conto'] ?: null,
+ '_CODICE_CIG_' => $riga['codice_cig'] ? ',CIG: '.$riga['codice_cig'] : null,
+ '_CODICE_CUP_' => $riga['codice_cup'] ? ',CUP: '.$riga['codice_cup'] : null,
+ '_ID_DOCUMENTO_' => $riga['id_documento_fe'] ? ' - DOC: '.$riga['id_documento_fe'] : null,
+ ]);
+ }
echo '
diff --git a/modules/preventivi/actions.php b/modules/preventivi/actions.php
index d06e61878..936453547 100644
--- a/modules/preventivi/actions.php
+++ b/modules/preventivi/actions.php
@@ -59,11 +59,10 @@ switch (post('op')) {
// $costo_km = post('costo_km');
$idiva = post('idiva');
-
- $id_documento_fe = post('id_documento_fe');
+
+ $id_documento_fe = post('id_documento_fe');
$codice_cig = post('codice_cig');
$codice_cup = post('codice_cup');
-
$query = 'UPDATE co_preventivi SET idstato='.prepare($idstato).','.
' nome='.prepare($nome).','.
@@ -82,9 +81,9 @@ switch (post('op')) {
' descrizione='.prepare($descrizione).','.
' tipo_sconto_globale='.prepare($tipo_sconto).','.
' sconto_globale='.prepare($sconto).','.
- ' id_documento_fe='.prepare($id_documento_fe).','.
- ' codice_cig='.prepare($codice_cig).','.
- ' codice_cup='.prepare($codice_cup).','.
+ ' id_documento_fe='.prepare($id_documento_fe).','.
+ ' codice_cig='.prepare($codice_cig).','.
+ ' codice_cup='.prepare($codice_cup).','.
' validita='.prepare($validita).','.
' idtipointervento='.prepare($idtipointervento).','.
' idiva='.prepare($idiva).' WHERE id='.prepare($id_record);
diff --git a/modules/preventivi/buttons.php b/modules/preventivi/buttons.php
index 3ee1ece93..7c73c7d21 100644
--- a/modules/preventivi/buttons.php
+++ b/modules/preventivi/buttons.php
@@ -6,14 +6,13 @@ echo'
';
if (!in_array($record['stato'], ['Bozza', 'Rifiutato', 'In attesa di conferma'])) {
- $disabled = '';
+ $disabled = '';
} else {
echo '
';
- $disabled = 'disabled';
+ $disabled = 'disabled';
}
-
// crea ordine
echo '
@@ -30,7 +29,6 @@ echo '
';
-
//duplica preventivo
echo '
diff --git a/modules/ritenute/src/RivalsaINPS.php b/modules/rivalse/src/RivalsaINPS.php
similarity index 78%
rename from modules/ritenute/src/RivalsaINPS.php
rename to modules/rivalse/src/RivalsaINPS.php
index 6438d5c50..2dd8aba60 100644
--- a/modules/ritenute/src/RivalsaINPS.php
+++ b/modules/rivalse/src/RivalsaINPS.php
@@ -1,6 +1,6 @@
fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `co_contratti` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idcontratto` = `co_contratti`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
-
- $preventivi = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `co_preventivi` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idpreventivo` = `co_preventivi`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
+
+ $preventivi = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `co_preventivi` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idpreventivo` = `co_preventivi`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
$interventi = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `in_interventi` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idintervento` = `in_interventi`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
-
- $ordini = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `or_ordini` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idordine` = `or_ordini`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
+
+ $ordini = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `or_ordini` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idordine` = `or_ordini`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
$this->contratti = array_merge($contratti, $preventivi, $interventi, $ordini);
}
@@ -633,12 +633,14 @@ class FatturaElettronica
];
$ritenuta_predefinita = setting("Percentuale ritenuta d'acconto");
- if (!empty($ritenuta_predefinita))
+ if (!empty($ritenuta_predefinita)) {
$dati_cassa['Ritenuta'] = 'SI';
-
- if (!empty($iva['codice_natura_fe']))
- $dati_cassa['Natura'] = $iva['codice_natura_fe'];
-
+ }
+
+ if (!empty($iva['codice_natura_fe'])) {
+ $dati_cassa['Natura'] = $iva['codice_natura_fe'];
+ }
+
//$dati_cassa['RiferimentoAmministrazione'] = '';
$result['DatiCassaPrevidenziale'] = $dati_cassa;
@@ -882,23 +884,22 @@ class FatturaElettronica
//2.2.1.3
if (!empty($riga['idarticolo'])) {
-
- $tipo_codice = $database->fetchOne('SELECT `mg_categorie`.`nome` FROM `mg_categorie` INNER JOIN `mg_articoli` ON `mg_categorie`.`id` = `mg_articoli`.`id_categoria` WHERE `mg_articoli`.`id` = '.prepare($riga['idarticolo']))['nome'];
-
+ $tipo_codice = $database->fetchOne('SELECT `mg_categorie`.`nome` FROM `mg_categorie` INNER JOIN `mg_articoli` ON `mg_categorie`.`id` = `mg_articoli`.`id_categoria` WHERE `mg_articoli`.`id` = '.prepare($riga['idarticolo']))['nome'];
+
$codice_articolo = [
- 'CodiceTipo' => ($tipo_codice) ? : 'OSM',
+ 'CodiceTipo' => ($tipo_codice) ?: 'OSM',
'CodiceValore' => $database->fetchOne('SELECT `codice` FROM `mg_articoli` WHERE `id` = '.prepare($riga['idarticolo']))['codice'],
];
$dettaglio['CodiceArticolo'] = $codice_articolo;
}
-
- //Non ammesso ’
- //$descrizione = html_entity_decode($riga['descrizione'], ENT_HTML5, 'UTF-8');
- $descrizione = str_replace(">", " ", $riga['descrizione']);
- $descrizione = str_replace("…", "...", $descrizione);
-
- $dettaglio['Descrizione'] = str_replace("’", " ", $descrizione);
+
+ //Non ammesso ’
+ //$descrizione = html_entity_decode($riga['descrizione'], ENT_HTML5, 'UTF-8');
+ $descrizione = str_replace('>', ' ', $riga['descrizione']);
+ $descrizione = str_replace('…', '...', $descrizione);
+
+ $dettaglio['Descrizione'] = str_replace('’', ' ', $descrizione);
$dettaglio['Quantita'] = $riga['qta'];
if (!empty($riga['um'])) {
@@ -986,8 +987,8 @@ class FatturaElettronica
if (!empty($riepilogo['dicitura'])) {
// $iva['RiferimentoNormativo'] = $riepilogo['dicitura'];
}
-
- //2.2.2
+
+ //2.2.2
$result[] = [
'DatiRiepilogo' => $iva,
];
@@ -1009,8 +1010,8 @@ class FatturaElettronica
if ($documento['split_payment']) {
$iva['EsigibilitaIVA'] = 'S';
}
-
- //2.2.2
+
+ //2.2.2
$result[] = [
'DatiRiepilogo' => $iva,
];
diff --git a/plugins/importFE/actions.php b/plugins/importFE/actions.php
index a974c3230..caf6d4466 100644
--- a/plugins/importFE/actions.php
+++ b/plugins/importFE/actions.php
@@ -45,7 +45,7 @@ switch (filter('op')) {
//Processo il file ricevuto
$process_result = Interaction::processXML($filename);
- if($process_result!=''){
+ if ($process_result != '') {
flash()->error($process_result);
redirect(ROOTDIR.'/controller.php?id_module='.$id_module);
exit;
diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php
index 784acfbd7..513c79d79 100644
--- a/plugins/importFE/src/FatturaElettronica.php
+++ b/plugins/importFE/src/FatturaElettronica.php
@@ -222,23 +222,20 @@ class FatturaElettronica
$sconti = $riga['ScontoMaggiorazione'];
if (!empty($sconti)) {
-
- foreach ($sconti as $key => $sconto) {
- $tipo = !empty($sconto['Percentuale']) ? 'PRC' : 'EUR';
- $unitario = $sconto['Percentuale'] ?: $sconto['Importo'];
-
- //SConto o MaGgiorazione
- $unitario = ($sconto['Tipo'] == 'SC') ? $unitario : -$unitario;
-
- if (!empty($unitario)){
- $obj->sconto_unitario = $unitario;
- $obj->tipo_sconto = $tipo;
- }
- }
-
- }
-
-
+ foreach ($sconti as $key => $sconto) {
+ $tipo = !empty($sconto['Percentuale']) ? 'PRC' : 'EUR';
+ $unitario = $sconto['Percentuale'] ?: $sconto['Importo'];
+
+ //SConto o MaGgiorazione
+ $unitario = ($sconto['Tipo'] == 'SC') ? $unitario : -$unitario;
+
+ if (!empty($unitario)) {
+ $obj->sconto_unitario = $unitario;
+ $obj->tipo_sconto = $tipo;
+ }
+ }
+ }
+
$obj->save();
}
}
diff --git a/plugins/importFE/src/Interaction.php b/plugins/importFE/src/Interaction.php
index 6f3df4ebb..64a56cdb1 100644
--- a/plugins/importFE/src/Interaction.php
+++ b/plugins/importFE/src/Interaction.php
@@ -20,21 +20,21 @@ class Interaction extends Connection
$code = $body['code'];
- if($code=='200'){
+ if ($code == '200') {
$files = $body['results'];
foreach ($files as $file) {
- /**
+ /*
* Verifico che l'XML non sia già stato importato nel db
*/
-
- if( preg_match( "/^([A-Z]{2})(.+?)_([^\.]+)\.xml/i", $file, $m ) ){
+
+ if (preg_match("/^([A-Z]{2})(.+?)_([^\.]+)\.xml/i", $file, $m)) {
$partita_iva = $m[2];
$progressivo_invio = $m[3];
$fattura = database()->fetchOne('SELECT co_documenti.id FROM (co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_tipidocumento.dir="uscita" AND an_anagrafiche.piva='.prepare($partita_iva).' AND co_documenti.progressivo_invio='.prepare($progressivo_invio));
-
+
if (!$fattura) {
- $list[] = basename($file);
+ $list[] = basename($file);
}
}
}
@@ -62,17 +62,17 @@ class Interaction extends Connection
public static function processXML($filename)
{
- $response = static::request('POST', 'process_xml', [
+ $response = static::request('POST', 'process_xml', [
'filename' => $filename,
]);
- $body = static::responseBody($response);
+ $body = static::responseBody($response);
- if($body['processed']=='0'){
- $message = $body['code']." - ".$body['message'];
- }else{
- $message = "";
- }
+ if ($body['processed'] == '0') {
+ $message = $body['code'].' - '.$body['message'];
+ } else {
+ $message = '';
+ }
return $message;
}
diff --git a/src/AJAX.php b/src/AJAX.php
index 9d4a75e61..657383673 100644
--- a/src/AJAX.php
+++ b/src/AJAX.php
@@ -157,7 +157,7 @@ class AJAX
if (!empty($permissions)) {
$modules = Modules::getAvailableModules();
} else {
- $modules = Modules::getModules();
+ $modules = Models\Module::withoutGlobalScope('enabled')->get();
}
$modules = $modules->toArray();
diff --git a/src/Util/Generator.php b/src/Util/Generator.php
index 1dd082367..a87157ca5 100644
--- a/src/Util/Generator.php
+++ b/src/Util/Generator.php
@@ -100,7 +100,7 @@ class Generator
$values = array_column($replaces, 'regex');
$pattern = preg_replace('/#{1,}/', '#', $pattern);
- $pattern = str_replace('\\#','#',preg_quote($pattern, '/'));
+ $pattern = str_replace('\\#', '#', preg_quote($pattern, '/'));
$pattern = str_replace(array_keys($replaces), array_values($values), $pattern);
// Individuazione dei valori