diff --git a/config/namespaces.php b/config/namespaces.php
index 57a7b4315..82d49225c 100644
--- a/config/namespaces.php
+++ b/config/namespaces.php
@@ -29,6 +29,7 @@ return [
'modules/stati_preventivo' => 'Modules\StatiPreventivo',
'modules/stati_contratto' => 'Modules\StatiContratto',
'modules/tipi_intervento' => 'Modules\TipiIntervento',
+ 'modules/categorie_documenti' => 'Modules\CategorieDocumentali',
'plugins/exportFE' => 'Plugins\ExportFE',
'plugins/importFE' => 'Plugins\ImportFE',
'plugins/receiptFE' => 'Plugins\ReceiptFE',
diff --git a/modules/categorie_documenti/actions.php b/modules/categorie_documenti/actions.php
index 32daaa71c..44c92a3d9 100644
--- a/modules/categorie_documenti/actions.php
+++ b/modules/categorie_documenti/actions.php
@@ -2,20 +2,23 @@
include_once __DIR__.'/../../core.php';
+use Modules\CategorieDocumentali\Categoria;
+
switch (post('op')) {
case 'update':
$descrizione = post('descrizione');
// Verifico che il nome non sia duplicato
- $count = $dbo->fetchNum('SELECT descrizione FROM zz_documenti_categorie WHERE descrizione='.prepare($descrizione).' AND deleted_at IS NULL');
+ $count = $dbo->fetchNum('SELECT descrizione FROM do_categorie WHERE descrizione='.prepare($descrizione).' AND deleted_at IS NULL AND id !='.prepare($id_record));
if ($count != 0) {
flash()->error(tr('Categoria _NAME_ già esistente!', [
'_NAME_' => $descrizione,
]));
} else {
- $dbo->update('zz_documenti_categorie', [
- 'descrizione' => $descrizione,
- ], ['id' => $id_record]);
+ $categoria->descrizione = $descrizione;
+ $categoria->save();
+
+ $categoria->syncPermessi(post('permessi') ?: []);
flash()->info(tr('Informazioni salvate correttamente!'));
}
@@ -25,33 +28,29 @@ switch (post('op')) {
case 'add':
$descrizione = post('descrizione');
- if (isset($_POST['descrizione'])) {
- // Verifico che il nome non sia duplicato
- $count = $dbo->fetchNum('SELECT descrizione FROM zz_documenti_categorie WHERE descrizione='.prepare($descrizione).' AND deleted_at IS NULL');
- if ($count != 0) {
- flash()->error(tr('Categoria _NAME_ già esistente!', [
- '_NAME_' => $descrizione,
- ]));
- } else {
- $dbo->insert('zz_documenti_categorie', [
- 'descrizione' => $descrizione,
- ]);
- $id_record = $dbo->last_inserted_id();
+ // Verifico che il nome non sia duplicato
+ $count = $dbo->fetchNum('SELECT descrizione FROM do_categorie WHERE descrizione='.prepare($descrizione).' AND deleted_at IS NULL');
+ if ($count != 0) {
+ flash()->error(tr('Categoria _NAME_ già esistente!', [
+ '_NAME_' => $descrizione,
+ ]));
+ } else {
+ $categoria = Categoria::build($descrizione);
+ $id_record = $categoria->id;
- if (isAjaxRequest()) {
- echo json_encode(['id' => $id_record, 'text' => $descrizione]);
- }
-
- flash()->info(tr('Nuova categoria documenti aggiunta!'));
+ if (isAjaxRequest()) {
+ echo json_encode(['id' => $id_record, 'text' => $descrizione]);
}
+
+ flash()->info(tr('Nuova categoria documenti aggiunta!'));
}
break;
case 'delete':
- $dbo->query('UPDATE zz_documenti_categorie SET deleted_at = NOW() WHERE id = '.prepare($id_record));
+ $dbo->query('UPDATE do_categorie SET deleted_at = NOW() WHERE id = '.prepare($id_record));
- flash()->info(tr('Categoria docimenti eliminata!'));
+ flash()->info(tr('Categoria documenti eliminata!'));
break;
}
diff --git a/modules/categorie_documenti/ajax/select.php b/modules/categorie_documenti/ajax/select.php
index 89c04b678..17e0cbd54 100644
--- a/modules/categorie_documenti/ajax/select.php
+++ b/modules/categorie_documenti/ajax/select.php
@@ -4,10 +4,10 @@ include_once __DIR__.'/../../../core.php';
switch ($resource) {
case 'categorie_documenti':
- $query = 'SELECT id, descrizione FROM zz_documenti_categorie |where| ORDER BY descrizione ASC';
+ $query = 'SELECT id, descrizione FROM do_categorie |where| ORDER BY descrizione ASC';
foreach ($elements as $element) {
- $filter[] = 'zz_documenti_categorie.id='.prepare($element);
+ $filter[] = 'do_categorie.id='.prepare($element);
}
if (empty($filter)) {
diff --git a/modules/categorie_documenti/edit.php b/modules/categorie_documenti/edit.php
index 13d12e371..0b130db1d 100644
--- a/modules/categorie_documenti/edit.php
+++ b/modules/categorie_documenti/edit.php
@@ -15,11 +15,13 @@ if ($record['doc_associati'] > 0) {
-
-
- {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$", "extra": "" ]}
+
+ {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
+
+ {[ "type": "select", "label": "", "name": "permessi[]", "value": "$permessi$", "values": "query=SELECT `id`, `nome` AS text FROM `zz_groups`", "multiple": 1 ]}
+
diff --git a/modules/categorie_documenti/init.php b/modules/categorie_documenti/init.php
index 8a494b5d3..b72813770 100644
--- a/modules/categorie_documenti/init.php
+++ b/modules/categorie_documenti/init.php
@@ -2,6 +2,16 @@
include_once __DIR__.'/../../core.php';
+use Modules\CategorieDocumentali\Categoria;
+
if (isset($id_record)) {
- $record = $dbo->fetchOne('SELECT *, (SELECT COUNT(id) FROM zz_documenti WHERE idcategoria = '.prepare($id_record).') AS doc_associati FROM zz_documenti_categorie WHERE id='.prepare($id_record));
+ $categoria = Categoria::find($id_record);
+
+ $record = $dbo->fetchOne("SELECT *,
+ (SELECT COUNT(id) FROM do_documenti WHERE idcategoria = '.prepare($id_record).') AS doc_associati,
+ GROUP_CONCAT(do_permessi.id_gruppo SEPARATOR ',') AS permessi
+ FROM do_categorie
+ LEFT JOIN do_permessi ON do_permessi.id_categoria = do_categorie.id
+ WHERE id=".prepare($id_record).'
+ GROUP BY do_categorie.id');
}
diff --git a/modules/categorie_documenti/src/Categoria.php b/modules/categorie_documenti/src/Categoria.php
new file mode 100644
index 000000000..79b325b9b
--- /dev/null
+++ b/modules/categorie_documenti/src/Categoria.php
@@ -0,0 +1,36 @@
+descrizione = $descrizione;
+
+ $model->save();
+
+ $gruppi = database()->fetchArray('SELECT `id` FROM `zz_groups`');
+ $model->syncPermessi($gruppi);
+
+ return $model;
+ }
+
+ public function syncPermessi(array $groups)
+ {
+ $groups[] = 1;
+
+ $database = database();
+ $database->sync('do_permessi', ['id_categoria' => $this->id], [
+ 'id_gruppo' => $groups,
+ ]);
+ }
+}
diff --git a/modules/fatture/modutil.php b/modules/fatture/modutil.php
index 83959aa11..9cff82f95 100644
--- a/modules/fatture/modutil.php
+++ b/modules/fatture/modutil.php
@@ -327,7 +327,7 @@ function aggiungi_movimento($iddocumento, $dir, $primanota = 0)
// 6) Aggiungo la ritenuta enasarco se c'è
// Lettura id conto ritenuta e la storno subito
if ($totale_ritenutacontributi != 0) {
- $query = "SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione=\"Erario c/enasarco\"";
+ $query = 'SELECT id, descrizione FROM co_pianodeiconti3 WHERE descrizione="Erario c/enasarco"';
$rs = $dbo->fetchArray($query);
$idconto_ritenutaenasarco = $rs[0]['id'];
$descrizione_conto_ritenutaenasarco = $rs[0]['descrizione'];
diff --git a/modules/gestione_documentale/actions.php b/modules/gestione_documentale/actions.php
index 3ea8b6e4d..8be71dacb 100644
--- a/modules/gestione_documentale/actions.php
+++ b/modules/gestione_documentale/actions.php
@@ -4,19 +4,19 @@ include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'add':
- $dbo->insert('zz_documenti', [
+ $dbo->insert('do_documenti', [
'idcategoria' => post('idcategoria'),
'nome' => post('nome'),
'data' => post('data'),
]);
- $id_record = $dbo->last_inserted_id();
+ $id_record = $dbo->lastInsertedID();
flash()->info(tr('Nuova documento aggiunto!'));
break;
case 'update':
- $dbo->update('zz_documenti', [
+ $dbo->update('do_documenti', [
'idcategoria' => post('idcategoria'),
'nome' => post('nome'),
'data' => post('data'),
@@ -26,7 +26,7 @@ switch (post('op')) {
break;
case 'delete':
- $dbo->query('DELETE FROM zz_documenti WHERE id = '.prepare($id_record));
+ $dbo->query('DELETE FROM do_documenti WHERE id = '.prepare($id_record));
Uploads::deleteLinked([
'id_module' => $id_module,
diff --git a/modules/gestione_documentale/init.php b/modules/gestione_documentale/init.php
index 6573b9d82..dec369e8f 100644
--- a/modules/gestione_documentale/init.php
+++ b/modules/gestione_documentale/init.php
@@ -3,5 +3,5 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
- $record = $dbo->fetchOne('SELECT *, zz_documenti.`id`as id, zz_documenti.nome AS nome, zz_documenti.`data` AS `data` FROM zz_documenti WHERE zz_documenti.id = '.prepare($id_record));
+ $record = $dbo->fetchOne('SELECT *, do_documenti.`id`as id, do_documenti.nome AS nome, do_documenti.`data` AS `data` FROM do_documenti WHERE do_documenti.id = '.prepare($id_record));
}
diff --git a/modules/utenti/user.php b/modules/utenti/user.php
index 988575e12..f3cfc6425 100644
--- a/modules/utenti/user.php
+++ b/modules/utenti/user.php
@@ -67,8 +67,6 @@ if (!empty($user)) {
';
}
-
-
include $structure->filepath('components/password.php');
echo '
diff --git a/update/2_4_11.php b/update/2_4_11.php
index b2f335f1c..a995c45ba 100644
--- a/update/2_4_11.php
+++ b/update/2_4_11.php
@@ -39,6 +39,23 @@ foreach ($logs as $log) {
$database->query('ALTER TABLE `zz_operations` ADD FOREIGN KEY (`id_email`) REFERENCES `em_emails`(`id`) ON DELETE SET NULL');
+// Aggiunta permessi alla gestione documentale
+$gruppi = $database->fetchArray('SELECT `id` FROM `zz_groups`');
+$viste = $database->fetchArray('SELECT `id` FROM `do_categorie`');
+
+$array = [];
+foreach ($viste as $vista) {
+ foreach ($gruppi as $gruppo) {
+ $array[] = [
+ 'id_gruppo' => $gruppo['id'],
+ 'id_categoria' => $vista['id'],
+ ];
+ }
+}
+if (!empty($array)) {
+ $database->insert('do_permessi', $array);
+}
+
// File e cartelle deprecate
$files = [
'src\API.php',
diff --git a/update/2_4_11.sql b/update/2_4_11.sql
index 2c4a74a01..16c73e346 100644
--- a/update/2_4_11.sql
+++ b/update/2_4_11.sql
@@ -681,4 +681,37 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`,
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Liste newsletter'), 'Descrizione', 'description', 3, 1, 0, 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Liste newsletter'), 'Dinamica', 'IF(query IS NULL, ''No'', ''Si'')', 4, 1, 0, 1, 1);
-UPDATE `zz_prints` SET `is_record` = '0' WHERE `zz_prints`.`name` = 'Inventario magazzino';
\ No newline at end of file
+UPDATE `zz_prints` SET `is_record` = '0' WHERE `zz_prints`.`name` = 'Inventario magazzino';
+
+-- Gestione permessi per le categorie documentali
+ALTER TABLE `zz_documenti` RENAME TO `do_documenti`;
+ALTER TABLE `zz_documenti_categorie` RENAME TO `do_categorie`;
+
+CREATE TABLE IF NOT EXISTS `do_permessi` (
+ `id_categoria` int(11) NOT NULL,
+ `id_gruppo` int(11) NOT NULL,
+ FOREIGN KEY (`id_categoria`) REFERENCES `do_categorie`(`id`) ON DELETE CASCADE,
+ FOREIGN KEY (`id_gruppo`) REFERENCES `zz_groups`(`id`) ON DELETE CASCADE
+) ENGINE=InnoDB;
+
+UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `do_categorie`
+WHERE 1=1 AND `deleted_at` IS NULL AND
+ (SELECT `idgruppo` FROM `zz_users` WHERE `id` = |id_utente|) IN (SELECT `id_gruppo` FROM `do_permessi` WHERE `id_categoria` = `do_categorie`.`id`)
+HAVING 2=2' WHERE `name` = 'Categorie documenti';
+
+INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `default`, `visible`) VALUES
+((SELECT `id` FROM `zz_modules` WHERE `name` = 'Categorie documenti'), 'id', 'id', 1, 0, 0, 1, 0),
+((SELECT `id` FROM `zz_modules` WHERE `name` = 'Categorie documenti'), 'Descrizione', 'descrizione', 2, 0, 0, 1, 1);
+
+UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `do_documenti`
+INNER JOIN `do_categorie` ON `do_categorie`.`id` = `do_documenti`.`idcategoria`
+WHERE 1=1 AND `deleted_at` IS NULL AND
+ (SELECT `idgruppo` FROM `zz_users` WHERE `zz_users`.`id` = |id_utente|) IN (SELECT `id_gruppo` FROM `do_permessi` WHERE `id_categoria` = `do_documenti`.`idcategoria`)
+ |date_period(`data`)|
+HAVING 2=2' WHERE `name` = 'Gestione documentale';
+
+INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `format`, `default`, `visible`) VALUES
+((SELECT `id` FROM `zz_modules` WHERE `name` = 'Gestione documentale'), '`do_documenti`.`id`', 'id', 1, 0, 0, 1, 0),
+((SELECT `id` FROM `zz_modules` WHERE `name` = 'Gestione documentale'), 'Categoria', '`do_categorie`.`descrizione`', 2, 0, 0, 1, 1),
+((SELECT `id` FROM `zz_modules` WHERE `name` = 'Gestione documentale'), 'Nome', '`do_documenti`.`nome`', 3, 0, 0, 1, 1),
+((SELECT `id` FROM `zz_modules` WHERE `name` = 'Gestione documentale'), 'Data', '`do_documenti`.`data`', 4, 0, 1, 1, 1);