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_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',

View File

@ -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;
}

View File

@ -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)) {

View File

@ -15,11 +15,13 @@ if ($record['doc_associati'] > 0) {
<input type="hidden" name="op" value="update">
<div class="row">
<div class="col-md-12">
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$", "extra": "" ]}
<div class="col-md-9">
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
</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>
</form>

View File

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

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'è
// 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'];

View File

@ -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,

View File

@ -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));
}

View File

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

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