1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-24 14:31:42 +01:00

Aggiunta tabella do_categorie_lang

This commit is contained in:
Pek5892 2024-02-27 09:39:20 +01:00
parent 12a3a760e3
commit 74930d424f
7 changed files with 106 additions and 18 deletions

View File

@ -26,15 +26,13 @@ switch (post('op')) {
$descrizione = post('descrizione');
// Verifico che il nome non sia duplicato
$count = $dbo->fetchNum('SELECT descrizione FROM do_categorie WHERE descrizione='.prepare($descrizione).' AND deleted_at IS NULL AND id !='.prepare($id_record));
$count = $dbo->fetchNum('SELECT `name` FROM `do_categorie` LEFT JOIN `do_categorie_lang` ON (`do_categorie_lang`.`id_record` = `do_categorie`.`id` AND `do_categorie_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($descrizione).' AND `deleted_at` IS NULL AND `do_categorie`.`id` !='.prepare($id_record));
if ($count != 0) {
flash()->error(tr('Categoria _NAME_ già esistente!', [
'_NAME_' => $descrizione,
]));
} else {
$categoria->descrizione = $descrizione;
$categoria->save();
$dbo->query('UPDATE `do_categorie_lang` SET `name` = '.prepare($descrizione).' WHERE `id_record` = '.prepare($id_record).' AND `id_lang` = '.prepare(setting('Lingua')));
$categoria->syncPermessi(post('permessi') ?: []);
flash()->info(tr('Informazioni salvate correttamente!'));
@ -46,7 +44,7 @@ switch (post('op')) {
$descrizione = post('descrizione');
// 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 `name` FROM `do_categorie` LEFT JOIN `do_categorie_lang` ON (`do_categorie_lang`.`id_record` = `do_categorie`.`id` AND `do_categorie_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($descrizione).' AND `deleted_at` IS NULL');
if ($count != 0) {
flash()->error(tr('Categoria _NAME_ già esistente!', [
'_NAME_' => $descrizione,
@ -65,7 +63,7 @@ switch (post('op')) {
break;
case 'delete':
$dbo->query('UPDATE do_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 documenti eliminata!'));

View File

@ -21,18 +21,18 @@ include_once __DIR__.'/../../../core.php';
switch ($resource) {
case 'categorie_documenti':
$query = 'SELECT id, descrizione FROM do_categorie |where| ORDER BY descrizione ASC';
$query = 'SELECT `do_categorie`.`id`, `do_categorie_lang`.`name` as descrizione FROM `do_categorie` LEFT JOIN `do_categorie_lang` ON (`do_categorie_lang`.`id_record` = `do_categorie`.`id` AND `do_categorie_lang`.`id_lang` = '.prepare(setting('Lingua')).')|where| ORDER BY `name` ASC';
foreach ($elements as $element) {
$filter[] = 'do_categorie.id='.prepare($element);
$filter[] = '`do_categorie`.`id`='.prepare($element);
}
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
$where[] = '`deleted_at` IS NULL';
}
if (!empty($search)) {
$search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`name` LIKE '.prepare('%'.$search.'%');
}
break;

View File

@ -33,7 +33,7 @@ if ($record['doc_associati'] > 0) {
<div class="row">
<div class="col-md-9">
{[ "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": "$name$" ]}
</div>
<div class="col-md-3">

View File

@ -25,10 +25,14 @@ if (isset($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');
(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_categorie_lang` ON (`do_categorie_lang`.`id_record` = `do_categorie`.`id` AND `do_categorie_lang`.`id_lang` = ".prepare(setting('Lingua')).")
LEFT JOIN `do_permessi` ON `do_permessi`.`id_categoria` = `do_categorie`.`id`
WHERE
`do_categorie`.`id`=".prepare($id_record)."
GROUP BY
`do_categorie`.`id`");
}

View File

@ -52,4 +52,34 @@ class Categoria extends Model
'id_gruppo' => $groups,
]);
}
/**
* Ritorna l'attributo name della Categoria
*
* @return string
*/
public function getNameAttribute()
{
return database()->table($this->table.'_lang')
->select('name')
->where('id_record', '=', $this->id)
->where('id_lang', '=', setting('Lingua'))
->first()->name;
}
/**
* Ritorna l'id della categoria a partire dal nome.
*
* @param string $name il nome da ricercare
*
* @return \Illuminate\Support\Collection
*/
public function getByName($name)
{
return database()->table($this->table.'_lang')
->select('id_record')
->where('name', '=', $name)
->where('id_lang', '=', setting('Lingua'))
->first();
}
}

View File

@ -744,4 +744,59 @@ HAVING
ORDER BY
`co_documenti`.`data` DESC,
CAST(IF(`co_documenti`.`numero` = '', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC" WHERE `name` = 'Fatture di acquisto';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_tipidocumento_lang`.`name`' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = 'Tipo';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_tipidocumento_lang`.`name`' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = 'Tipo';
-- Aggiunta tabella do_categorie_lang
CREATE TABLE IF NOT EXISTS `do_categorie_lang` (
`id` int NOT NULL,
`id_lang` int NOT NULL,
`id_record` int NOT NULL,
`name` VARCHAR(255) NOT NULL
);
ALTER TABLE `do_categorie_lang`
ADD PRIMARY KEY (`id`);
ALTER TABLE `do_categorie_lang`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
INSERT INTO `do_categorie_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `do_categorie`;
ALTER TABLE `do_categorie`
DROP `descrizione`;
ALTER TABLE `do_categorie` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `do_categorie_lang` ADD CONSTRAINT `do_categorie_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `do_categorie`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
-- Allineamento vista Gestione documentale
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`do_documenti`
INNER JOIN `do_categorie` ON `do_categorie`.`id` = `do_documenti`.`idcategoria`
LEFT JOIN `do_categorie_lang` ON (`do_categorie_lang`.`id_record` = `do_categorie`.`id` AND `do_categorie_lang`.`id_lang` = |lang|)
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`)| OR data IS NULL
HAVING
2=2
ORDER BY
`data` DESC" WHERE `name` = 'Gestione documentale';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`do_categorie_lang`.`name`' WHERE `zz_modules`.`name` = 'Gestione documentale' AND `zz_views`.`name` = 'Categoria';
-- Allineamento vista Categorie documenti
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`do_categorie`
LEFT JOIN `do_categorie_lang` ON (`do_categorie_lang`.`id_record` = `do_categorie`.`id` AND `do_categorie_lang`.`id_lang` = |lang|)
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';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`do_categorie_lang`.`name`' WHERE `zz_modules`.`name` = 'Categorie documenti' AND `zz_views`.`name` = 'Descrizione';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`do_categorie`.`id`' WHERE `zz_modules`.`name` = 'Categorie documenti' AND `zz_views`.`name` = 'id';

View File

@ -59,6 +59,7 @@ return [
'co_tipi_scadenze',
'co_stampecontabili',
'do_categorie',
'do_categorie_lang',
'do_documenti',
'do_permessi',
'dt_aspettobeni',