Skip to content

Commit 7e19132

Browse files
committed
fix: pulizia record segmenti e viste
1 parent b80aa7f commit 7e19132

2 files changed

Lines changed: 82 additions & 65 deletions

File tree

update/2_8.sql

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -348,65 +348,6 @@ ORDER BY
348348
UPDATE `zz_views` SET `query` = 'marca.name' WHERE `name` = 'Marca' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Impianti');
349349
UPDATE `zz_views` SET `query` = 'modello.name' WHERE `name` = 'Modello' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Impianti');
350350

351-
-- Pulizia dei permessi sulle viste per gruppi che non hanno accesso al modulo
352-
DELETE FROM `zz_group_view`
353-
WHERE `id_gruppo` IN (
354-
SELECT `idgruppo`
355-
FROM (
356-
SELECT DISTINCT `g`.`id` AS `idgruppo`, `v`.`id_module`
357-
FROM `zz_groups` AS `g`
358-
INNER JOIN `zz_group_view` AS `gv` ON `g`.`id` = `gv`.`id_gruppo`
359-
INNER JOIN `zz_views` AS `v` ON `gv`.`id_vista` = `v`.`id`
360-
LEFT JOIN `zz_permissions` AS `p` ON `g`.`id` = `p`.`idgruppo` AND `v`.`id_module` = `p`.`idmodule`
361-
WHERE `p`.`id` IS NULL OR `p`.`permessi` = '-'
362-
) AS `subquery`
363-
)
364-
AND `id_vista` IN (
365-
SELECT `v`.`id`
366-
FROM `zz_views` AS `v`
367-
INNER JOIN `zz_modules` AS `m` ON `v`.`id_module` = `m`.`id`
368-
WHERE `v`.`id_module` IN (
369-
SELECT `id_module`
370-
FROM (
371-
SELECT DISTINCT `g`.`id` AS `idgruppo`, `v`.`id_module`
372-
FROM `zz_groups` AS `g`
373-
INNER JOIN `zz_group_view` AS `gv` ON `g`.`id` = `gv`.`id_gruppo`
374-
INNER JOIN `zz_views` AS `v` ON `gv`.`id_vista` = `v`.`id`
375-
LEFT JOIN `zz_permissions` AS `p` ON `g`.`id` = `p`.`idgruppo` AND `v`.`id_module` = `p`.`idmodule`
376-
WHERE `p`.`id` IS NULL OR `p`.`permessi` = '-'
377-
) AS `subquery`
378-
)
379-
);
380-
381-
-- Pulizia dei permessi sui segmenti per gruppi che non hanno accesso al modulo
382-
DELETE FROM `zz_group_segment`
383-
WHERE `id_gruppo` IN (
384-
SELECT `idgruppo`
385-
FROM (
386-
SELECT DISTINCT `g`.`id` AS `idgruppo`, `s`.`id_module`
387-
FROM `zz_groups` AS `g`
388-
INNER JOIN `zz_group_segment` AS `gs` ON `g`.`id` = `gs`.`id_gruppo`
389-
INNER JOIN `zz_segments` AS `s` ON `gs`.`id_segment` = `s`.`id`
390-
LEFT JOIN `zz_permissions` AS `p` ON `g`.`id` = `p`.`idgruppo` AND `s`.`id_module` = `p`.`idmodule`
391-
WHERE `p`.`id` IS NULL OR `p`.`permessi` = '-'
392-
) AS `subquery`
393-
)
394-
AND `id_segment` IN (
395-
SELECT `s`.`id`
396-
FROM `zz_segments` AS `s`
397-
INNER JOIN `zz_modules` AS `m` ON `s`.`id_module` = `m`.`id`
398-
WHERE `s`.`id_module` IN (
399-
SELECT `id_module`
400-
FROM (
401-
SELECT DISTINCT `g`.`id` AS `idgruppo`, `s`.`id_module`
402-
FROM `zz_groups` AS `g`
403-
INNER JOIN `zz_group_segment` AS `gs` ON `g`.`id` = `gs`.`id_gruppo`
404-
INNER JOIN `zz_segments` AS `s` ON `gs`.`id_segment` = `s`.`id`
405-
LEFT JOIN `zz_permissions` AS `p` ON `g`.`id` = `p`.`idgruppo` AND `s`.`id_module` = `p`.`idmodule`
406-
WHERE `p`.`id` IS NULL OR `p`.`permessi` = '-'
407-
) AS `subquery`
408-
)
409-
);
410351

411352
-- Allineamento vista Preventivi
412353
UPDATE `zz_modules` SET `options` = "

update/2_8_1.sql

Lines changed: 82 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ FROM
1414
LEFT JOIN `zz_categorie_lang` AS categoria_lang ON (`categoria_lang`.`id_record` = `categoria`.`id` AND `categoria_lang`.|lang|)
1515
LEFT JOIN `zz_categorie` AS sottocategoria ON `sottocategoria`.`id`=`mg_articoli`.`id_sottocategoria`
1616
LEFT JOIN `zz_categorie_lang` AS sottocategoria_lang ON (`sottocategoria_lang`.`id_record` = `sottocategoria`.`id` AND `sottocategoria_lang`.|lang|)
17-
LEFT JOIN (SELECT `co_iva`.`percentuale` AS perc, `co_iva`.`id`, `zz_settings`.`nome` FROM `co_iva` INNER JOIN `zz_settings` ON `co_iva`.`id`=`zz_settings`.`valore`)AS iva ON `iva`.`nome`= 'Iva predefinita'
18-
WHERE
19-
1=1 AND `mg_articoli`.`deleted_at` IS NULL
17+
LEFT JOIN (SELECT `co_iva`.`percentuale` AS perc, `co_iva`.`id`, `zz_settings`.`nome` FROM `co_iva` INNER JOIN `zz_settings` ON `co_iva`.`id`=`zz_settings`.`valore`)AS iva ON `iva`.`nome`= 'Iva predefinita'
18+
WHERE
19+
1=1 AND `mg_articoli`.`deleted_at` IS NULL
2020
HAVING
2121
2=2 AND `qta` > 0
2222
ORDER BY
@@ -25,12 +25,88 @@ ORDER BY
2525
UPDATE `zz_prints` SET `available_options` = '{"pricing":"Visualizzare i prezzi", "hide-total": "Nascondere i totali delle righe", "show-only-total": "Visualizzare solo i totali del documento", "hide-header": "Nascondere intestazione", "hide-footer": "Nascondere footer", "last-page-footer": "Visualizzare footer solo su ultima pagina", "hide-item-number": "Nascondere i codici degli articoli"}' WHERE `zz_prints`.`id_module` = (SELECT id FROM `zz_modules` WHERE `name` = 'Preventivi');
2626
ALTER TABLE `zz_prints` DROP `default`;
2727

28-
INSERT INTO `co_pianodeiconti3` (`numero`, `descrizione`, `idpianodeiconti2`, `dir`, `percentuale_deducibile`) VALUES ('000040', 'Iva transitoria', (SELECT `id` FROM `co_pianodeiconti2` WHERE `descrizione` = 'Conti transitori'), '', '100.00');
28+
INSERT INTO `co_pianodeiconti3` (`numero`, `descrizione`, `idpianodeiconti2`, `dir`, `percentuale_deducibile`) VALUES ('000040', 'Iva transitoria', (SELECT `id` FROM `co_pianodeiconti2` WHERE `descrizione` = 'Conti transitori'), '', '100.00');
2929

3030
INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `is_user_setting`) VALUES
3131
('Conto per Iva transitoria', (SELECT `id` FROM `co_pianodeiconti3` WHERE `descrizione` = 'Iva transitoria'), "query=SELECT `id`, CONCAT_WS(' - ', `numero`, `descrizione`) AS descrizione FROM `co_pianodeiconti3` ORDER BY `descrizione` ASC", '1', 'Piano dei conti', NULL, '0');
3232

3333
SELECT @id_record := `id` FROM `zz_settings` WHERE `nome` = 'Conto per Iva transitoria';
34-
INSERT INTO `zz_settings_lang` (`id_lang`, `id_record`, `title`, `help`) VALUES
35-
('1', @id_record, 'Conto per Iva transitoria', ''),
34+
INSERT INTO `zz_settings_lang` (`id_lang`, `id_record`, `title`, `help`) VALUES
35+
('1', @id_record, 'Conto per Iva transitoria', ''),
3636
('2', @id_record, 'Conto per Iva transitoria', '');
37+
38+
-- Pulizia dei permessi sui segmenti per gruppi che non hanno accesso al modulo (esclusi gli Amministratori)
39+
DELETE `zz_group_segment` FROM `zz_group_segment`
40+
INNER JOIN `zz_segments` ON `zz_group_segment`.`id_segment` = `zz_segments`.`id`
41+
INNER JOIN `zz_groups` ON `zz_group_segment`.`id_gruppo` = `zz_groups`.`id`
42+
LEFT JOIN `zz_permissions` ON `zz_groups`.`id` = `zz_permissions`.`idgruppo`
43+
AND `zz_segments`.`id_module` = `zz_permissions`.`idmodule`
44+
WHERE `zz_groups`.`nome` != 'Amministratori'
45+
AND (`zz_permissions`.`id` IS NULL OR `zz_permissions`.`permessi` = '-');
46+
47+
-- Assicura che il gruppo Amministratori abbia accesso a tutti i segmenti
48+
INSERT IGNORE INTO `zz_group_segment` (`id_gruppo`, `id_segment`)
49+
SELECT
50+
`admin_group`.`id` AS `id_gruppo`,
51+
`zz_segments`.`id` AS `id_segment`
52+
FROM `zz_segments`
53+
CROSS JOIN (SELECT `id` FROM `zz_groups` WHERE `nome` = 'Amministratori') AS `admin_group`
54+
LEFT JOIN `zz_group_segment` AS `existing` ON `existing`.`id_gruppo` = `admin_group`.`id`
55+
AND `existing`.`id_segment` = `zz_segments`.`id`
56+
WHERE `existing`.`id_gruppo` IS NULL;
57+
58+
-- Assicura che i gruppi con permessi sui moduli abbiano accesso al segmento predefinito
59+
INSERT IGNORE INTO `zz_group_segment` (`id_gruppo`, `id_segment`)
60+
SELECT
61+
`zz_permissions`.`idgruppo` AS `id_gruppo`,
62+
`default_segments`.`id` AS `id_segment`
63+
FROM `zz_permissions`
64+
INNER JOIN (
65+
SELECT `id`, `id_module`
66+
FROM `zz_segments`
67+
WHERE `predefined` = 1
68+
) AS `default_segments` ON `zz_permissions`.`idmodule` = `default_segments`.`id_module`
69+
LEFT JOIN `zz_group_segment` AS `existing_access` ON `zz_permissions`.`idgruppo` = `existing_access`.`id_gruppo`
70+
AND `existing_access`.`id_segment` IN (
71+
SELECT `id` FROM `zz_segments` WHERE `id_module` = `zz_permissions`.`idmodule`
72+
)
73+
WHERE `zz_permissions`.`permessi` IN ('r', 'rw')
74+
AND `existing_access`.`id_gruppo` IS NULL;
75+
76+
-- Pulizia dei permessi sulle viste per gruppi che non hanno accesso al modulo (esclusi gli Amministratori)
77+
DELETE `zz_group_view` FROM `zz_group_view`
78+
INNER JOIN `zz_views` ON `zz_group_view`.`id_vista` = `zz_views`.`id`
79+
INNER JOIN `zz_groups` ON `zz_group_view`.`id_gruppo` = `zz_groups`.`id`
80+
LEFT JOIN `zz_permissions` ON `zz_groups`.`id` = `zz_permissions`.`idgruppo`
81+
AND `zz_views`.`id_module` = `zz_permissions`.`idmodule`
82+
WHERE `zz_groups`.`nome` != 'Amministratori'
83+
AND (`zz_permissions`.`id` IS NULL OR `zz_permissions`.`permessi` = '-');
84+
85+
-- Assicura che il gruppo Amministratori abbia accesso a tutte le viste
86+
INSERT IGNORE INTO `zz_group_view` (`id_gruppo`, `id_vista`)
87+
SELECT
88+
`admin_group`.`id` AS `id_gruppo`,
89+
`zz_views`.`id` AS `id_vista`
90+
FROM `zz_views`
91+
CROSS JOIN (SELECT `id` FROM `zz_groups` WHERE `nome` = 'Amministratori') AS `admin_group`
92+
LEFT JOIN `zz_group_view` AS `existing` ON `existing`.`id_gruppo` = `admin_group`.`id`
93+
AND `existing`.`id_vista` = `zz_views`.`id`
94+
WHERE `existing`.`id_gruppo` IS NULL;
95+
96+
-- Assicura che i gruppi con permessi sui moduli abbiano accesso alle viste di base
97+
INSERT IGNORE INTO `zz_group_view` (`id_gruppo`, `id_vista`)
98+
SELECT
99+
`zz_permissions`.`idgruppo` AS `id_gruppo`,
100+
`default_views`.`id` AS `id_vista`
101+
FROM `zz_permissions`
102+
INNER JOIN (
103+
SELECT `id`, `id_module`
104+
FROM `zz_views`
105+
WHERE `default` = 1
106+
) AS `default_views` ON `zz_permissions`.`idmodule` = `default_views`.`id_module`
107+
LEFT JOIN `zz_group_view` AS `existing_access` ON `zz_permissions`.`idgruppo` = `existing_access`.`id_gruppo`
108+
AND `existing_access`.`id_vista` IN (
109+
SELECT `id` FROM `zz_views` WHERE `id_module` = `zz_permissions`.`idmodule`
110+
)
111+
WHERE `zz_permissions`.`permessi` IN ('r', 'rw')
112+
AND `existing_access`.`id_gruppo` IS NULL;

0 commit comments

Comments
 (0)