1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-06-05 22:09:38 +02:00

Aggiunti permessi gruppi sui documentali

This commit is contained in:
Thomas Zilio
2019-10-04 17:00:53 +02:00
parent f3e4cec613
commit ffba6a1f28
12 changed files with 134 additions and 38 deletions

View File

@@ -29,6 +29,7 @@ return [
'modules/stati_preventivo' => 'Modules\StatiPreventivo', 'modules/stati_preventivo' => 'Modules\StatiPreventivo',
'modules/stati_contratto' => 'Modules\StatiContratto', 'modules/stati_contratto' => 'Modules\StatiContratto',
'modules/tipi_intervento' => 'Modules\TipiIntervento', 'modules/tipi_intervento' => 'Modules\TipiIntervento',
'modules/categorie_documenti' => 'Modules\CategorieDocumentali',
'plugins/exportFE' => 'Plugins\ExportFE', 'plugins/exportFE' => 'Plugins\ExportFE',
'plugins/importFE' => 'Plugins\ImportFE', 'plugins/importFE' => 'Plugins\ImportFE',
'plugins/receiptFE' => 'Plugins\ReceiptFE', 'plugins/receiptFE' => 'Plugins\ReceiptFE',

View File

@@ -2,20 +2,23 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\CategorieDocumentali\Categoria;
switch (post('op')) { switch (post('op')) {
case 'update': case 'update':
$descrizione = post('descrizione'); $descrizione = post('descrizione');
// Verifico che il nome non sia duplicato // 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) { if ($count != 0) {
flash()->error(tr('Categoria _NAME_ già esistente!', [ flash()->error(tr('Categoria _NAME_ già esistente!', [
'_NAME_' => $descrizione, '_NAME_' => $descrizione,
])); ]));
} else { } else {
$dbo->update('zz_documenti_categorie', [ $categoria->descrizione = $descrizione;
'descrizione' => $descrizione, $categoria->save();
], ['id' => $id_record]);
$categoria->syncPermessi(post('permessi') ?: []);
flash()->info(tr('Informazioni salvate correttamente!')); flash()->info(tr('Informazioni salvate correttamente!'));
} }
@@ -25,33 +28,29 @@ switch (post('op')) {
case 'add': case 'add':
$descrizione = post('descrizione'); $descrizione = post('descrizione');
if (isset($_POST['descrizione'])) { // Verifico che il nome non sia duplicato
// Verifico che il nome non sia duplicato $count = $dbo->fetchNum('SELECT descrizione FROM do_categorie WHERE descrizione='.prepare($descrizione).' AND deleted_at IS NULL');
$count = $dbo->fetchNum('SELECT descrizione FROM zz_documenti_categorie WHERE descrizione='.prepare($descrizione).' AND deleted_at IS NULL'); if ($count != 0) {
if ($count != 0) { flash()->error(tr('Categoria _NAME_ già esistente!', [
flash()->error(tr('Categoria _NAME_ già esistente!', [ '_NAME_' => $descrizione,
'_NAME_' => $descrizione, ]));
])); } else {
} else { $categoria = Categoria::build($descrizione);
$dbo->insert('zz_documenti_categorie', [ $id_record = $categoria->id;
'descrizione' => $descrizione,
]);
$id_record = $dbo->last_inserted_id();
if (isAjaxRequest()) { if (isAjaxRequest()) {
echo json_encode(['id' => $id_record, 'text' => $descrizione]); echo json_encode(['id' => $id_record, 'text' => $descrizione]);
}
flash()->info(tr('Nuova categoria documenti aggiunta!'));
} }
flash()->info(tr('Nuova categoria documenti aggiunta!'));
} }
break; break;
case 'delete': 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; break;
} }

View File

@@ -4,10 +4,10 @@ include_once __DIR__.'/../../../core.php';
switch ($resource) { switch ($resource) {
case 'categorie_documenti': 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) { foreach ($elements as $element) {
$filter[] = 'zz_documenti_categorie.id='.prepare($element); $filter[] = 'do_categorie.id='.prepare($element);
} }
if (empty($filter)) { if (empty($filter)) {

View File

@@ -15,11 +15,13 @@ if ($record['doc_associati'] > 0) {
<input type="hidden" name="op" value="update"> <input type="hidden" name="op" value="update">
<div class="row"> <div class="row">
<div class="col-md-9">
<div class="col-md-12"> {[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$", "extra": "" ]}
</div> </div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Gruppi abilitati'); ?>", "name": "permessi[]", "value": "$permessi$", "values": "query=SELECT `id`, `nome` AS text FROM `zz_groups`", "multiple": 1 ]}
</div>
</div> </div>
</form> </form>

View File

@@ -2,6 +2,16 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\CategorieDocumentali\Categoria;
if (isset($id_record)) { 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');
} }

View File

@@ -0,0 +1,36 @@
<?php
namespace Modules\CategorieDocumentali;
use Common\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Categoria extends Model
{
use SoftDeletes;
protected $table = 'do_categorie';
public static function build($descrizione)
{
$model = parent::build();
$model->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,
]);
}
}

View File

@@ -327,7 +327,7 @@ function aggiungi_movimento($iddocumento, $dir, $primanota = 0)
// 6) Aggiungo la ritenuta enasarco se c'è // 6) Aggiungo la ritenuta enasarco se c'è
// Lettura id conto ritenuta e la storno subito // Lettura id conto ritenuta e la storno subito
if ($totale_ritenutacontributi != 0) { 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); $rs = $dbo->fetchArray($query);
$idconto_ritenutaenasarco = $rs[0]['id']; $idconto_ritenutaenasarco = $rs[0]['id'];
$descrizione_conto_ritenutaenasarco = $rs[0]['descrizione']; $descrizione_conto_ritenutaenasarco = $rs[0]['descrizione'];

View File

@@ -4,19 +4,19 @@ include_once __DIR__.'/../../core.php';
switch (post('op')) { switch (post('op')) {
case 'add': case 'add':
$dbo->insert('zz_documenti', [ $dbo->insert('do_documenti', [
'idcategoria' => post('idcategoria'), 'idcategoria' => post('idcategoria'),
'nome' => post('nome'), 'nome' => post('nome'),
'data' => post('data'), 'data' => post('data'),
]); ]);
$id_record = $dbo->last_inserted_id(); $id_record = $dbo->lastInsertedID();
flash()->info(tr('Nuova documento aggiunto!')); flash()->info(tr('Nuova documento aggiunto!'));
break; break;
case 'update': case 'update':
$dbo->update('zz_documenti', [ $dbo->update('do_documenti', [
'idcategoria' => post('idcategoria'), 'idcategoria' => post('idcategoria'),
'nome' => post('nome'), 'nome' => post('nome'),
'data' => post('data'), 'data' => post('data'),
@@ -26,7 +26,7 @@ switch (post('op')) {
break; break;
case 'delete': 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([ Uploads::deleteLinked([
'id_module' => $id_module, 'id_module' => $id_module,

View File

@@ -3,5 +3,5 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
if (isset($id_record)) { 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));
} }

View File

@@ -67,8 +67,6 @@ if (!empty($user)) {
</script>'; </script>';
} }
include $structure->filepath('components/password.php'); include $structure->filepath('components/password.php');
echo ' echo '

View File

@@ -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'); $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 // File e cartelle deprecate
$files = [ $files = [
'src\API.php', 'src\API.php',

View File

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