From edcd06229535161a7d49d6878fcdbae65f5d8c18 Mon Sep 17 00:00:00 2001 From: Beppe Date: Wed, 23 Oct 2024 17:21:23 +0200 Subject: [PATCH] feat: Aggiunta modulo Stati dei DDT --- CHANGELOG.md | 1 + modules/stati_ddt/actions.php | 84 +++++++++++++++++++++++++++++++ modules/stati_ddt/add.php | 68 +++++++++++++++++++++++++ modules/stati_ddt/edit.php | 94 +++++++++++++++++++++++++++++++++++ modules/stati_ddt/init.php | 27 ++++++++++ update/2_6.sql | 29 +++++++++++ 6 files changed, 303 insertions(+) create mode 100644 modules/stati_ddt/actions.php create mode 100644 modules/stati_ddt/add.php create mode 100644 modules/stati_ddt/edit.php create mode 100644 modules/stati_ddt/init.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 72644d237..63cb44605 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k ## 2.6 (2024--) ### Aggiunto (Added) - Aggiunto il modulo Marchi +- Aggiunto il modulo Stati dei DDT ## 2.5.6 (2024-10-30) ### Modificato (Changed) diff --git a/modules/stati_ddt/actions.php b/modules/stati_ddt/actions.php new file mode 100644 index 000000000..ecd12472e --- /dev/null +++ b/modules/stati_ddt/actions.php @@ -0,0 +1,84 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +use Modules\DDT\Stato; + +switch (post('op')) { + case 'update': + $descrizione = post('descrizione'); + $stato_new = Stato::where('name', $descrizione)->first()->id; + + if (!empty($stato_new) && $stato_new != $id_record) { + flash()->error(tr('Questo nome è già stato utilizzato per un altro stato DDT.')); + } else { + if (Models\Locale::getDefault()->id == Models\Locale::getPredefined()->id) { + $stato->name = $descrizione; + } + $stato->icona = post('icona'); + $stato->colore = post('colore'); + $stato->completato = post('completato'); + $stato->is_fatturabile = post('is_fatturabile'); + $stato->setTranslation('title', $descrizione); + $stato->save(); + + flash()->info(tr('Informazioni salvate correttamente.')); + } + + break; + + case 'add': + $descrizione = post('descrizione'); + $icona = post('icona'); + $colore = post('colore'); + $completato = post('completato_add'); + $is_fatturabile = post('is_fatturabile_add'); + + $stato_new = Stato::where('name', $descrizione)->first(); + + if ($stato_new) { + flash()->error(tr('Questo nome è già stato utilizzato per un altro stato DDT.')); + } else { + $stato = Stato::build($icona, $colore, $completato, $is_fatturabile); + if (Models\Locale::getDefault()->id == Models\Locale::getPredefined()->id) { + $stato->name = $descrizione; + } + $id_record = $dbo->lastInsertedID(); + $stato->setTranslation('title', $descrizione); + $stato->save(); + flash()->info(tr('Nuovo stato DDT aggiunto.')); + } + + break; + + case 'delete': + // scelgo se settare come eliminato o cancellare direttamente la riga se non è stato utilizzato negli ordini + if (count($dbo->fetchArray('SELECT `id` FROM `dt_statiddt` WHERE `id`='.prepare($id_record))) > 0) { + $query = 'UPDATE `dt_statiddt` SET `deleted_at` = NOW() WHERE `can_delete` = 1 AND `id`='.prepare($id_record); + } else { + $query = 'DELETE FROM `dt_statiddt` WHERE `can_delete` = 1 AND `id`='.prepare($id_record); + } + + $dbo->query($query); + + flash()->info(tr('Stato DDT eliminato.')); + + break; +} diff --git a/modules/stati_ddt/add.php b/modules/stati_ddt/add.php new file mode 100644 index 000000000..c230477df --- /dev/null +++ b/modules/stati_ddt/add.php @@ -0,0 +1,68 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +?>
+ + + +
+
+ {[ "type": "text", "label": "", "name": "descrizione", "required": 1 ]} +
+ +
+ {[ "type": "text", "label": "", "name": "colore", "required": 1, "class": "colorpicker text-center", "value": "$colore$", "extra": "maxlength='7'", "icon-after": "
" ]} +
+
+ +
+
+ {[ "type": "checkbox", "label": "", "name": "completato_add", "value": "$completato$", "help": "", "placeholder": "", "extra": "" ]} +
+ +
+ {[ "type": "checkbox", "label": "", "name": "impegnato_add", "value": "$impegnato$", "help": "", "placeholder": "", "extra": "" ]} +
+ +
+ {[ "type": "checkbox", "label": "", "name": "is_fatturabile_add", "value": "$is_fatturabile$", "help": "", "placeholder": "", "extra": "" ]} +
+
+ {[ "type": "text", "label": "", "name": "icona", "required": 1, "class": "text-center", "value": "fa ", "extra": "" ]} +
+
+ + +
+
+ +
+
+
+ + \ No newline at end of file diff --git a/modules/stati_ddt/edit.php b/modules/stati_ddt/edit.php new file mode 100644 index 000000000..0100cbb1b --- /dev/null +++ b/modules/stati_ddt/edit.php @@ -0,0 +1,94 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +if ($record['can_delete']) { + $attr = ''; +} else { + $attr = 'readonly'; + echo '
'.tr('Alcune impostazioni non possono essere modificate per questo stato.').'
'; +} + +?> +
+ + + + +
+
+ {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$title$", "extra": "" ]} +
+ +
+ {[ "type": "text", "label": "", "name": "icona", "required": 1, "class": "text-center", "value": "$icona$", "extra": "", "icon-after": "' : ''; ?>" ]} +
+ +
+ {[ "type": "text", "label": "", "name": "colore", "required": 1, "class": "colorpicker text-center", "value": "$colore$", "extra": "maxlength='7'", "icon-after": "
" ]} +
+ +
+
+
+

+
+ +
+ {[ "type": "checkbox", "label": "", "name": "completato", "value": "$completato$", "help": "", "placeholder": "", "extra": "" ]} + {[ "type": "checkbox", "label": "", "name": "impegnato", "value": "$impegnato$", "help": "", "placeholder": "", "extra": "" ]} + {[ "type": "checkbox", "label": "", "name": "is_fatturabile", "value": "$is_fatturabile$", "help": "", "placeholder": "", "extra": "" ]} +
+
+
+
+
+ + +fetchNum('SELECT `id` FROM `or_ordini` WHERE `idstatoordine`='.prepare($id_record)); + +if (!empty($ordini)) { + echo ' +
+ '.tr('Ci sono _NUM_ ordini collegati', [ + '_NUM_' => $ordini, + ]).'. +
'; +} + +if (!empty($record['can_delete'])) { + echo ' + + '.tr('Elimina').' +'; +} + +?> + \ No newline at end of file diff --git a/modules/stati_ddt/init.php b/modules/stati_ddt/init.php new file mode 100644 index 000000000..f34ab19e0 --- /dev/null +++ b/modules/stati_ddt/init.php @@ -0,0 +1,27 @@ +. + */ + +include_once __DIR__.'/../../core.php'; +use Modules\DDT\Stato; + +if (!empty($id_record)) { + $record = $dbo->fetchOne('SELECT * FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt_lang`.`id_record`=`dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `dt_statiddt`.`id`='.prepare($id_record)); + + $stato = Stato::find($id_record); +} diff --git a/update/2_6.sql b/update/2_6.sql index f95b12468..404ba351c 100644 --- a/update/2_6.sql +++ b/update/2_6.sql @@ -21,3 +21,32 @@ INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES (1, (SELECT `id` FROM `zz_views` WHERE `name` = 'id' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi')), 'id'), (1, (SELECT `id` FROM `zz_views` WHERE `name` = 'Nome' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi')), 'Nome'), (1, (SELECT `id` FROM `zz_views` WHERE `name` = 'Link' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi')), 'Link'); + +-- Aggiunta modulo Stati dei DDT +ALTER TABLE `dt_statiddt` ADD `deleted_at` timestamp NULL DEFAULT NULL; + +INSERT INTO `zz_modules` (`name`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`, `use_notes`, `use_checklists`) VALUES ('Stati DDT', 'stati_ddt', 'SELECT |select| FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.|lang|) WHERE 1=1 AND `deleted_at` IS NULL HAVING 2=2', '', 'fa fa-circle-o', '2.5.6', '2.5.6', '7', (SELECT `id` FROM `zz_modules` AS `t` WHERE `name` = 'Tabelle'), '1', '1', '1', '1'); + +INSERT INTO `zz_modules_lang` (`id_lang`, `id_record`, `title`) VALUES ('1', (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT'), 'Stati dei DDT'); + +INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `avg`, `default`) VALUES +((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT'), 'Fatturabile', 'IF(is_fatturabile, \'Sì\', \'No\')', '6', '1', '0', '0', '0', NULL, NULL, '1', '0', '0', '0'), +((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT'), 'Completato', 'IF(completato, \'Sì\', \'No\')', '5', '1', '0', '0', '0', NULL, NULL, '1', '0', '0', '0'), +((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT'), 'Icona', 'icona', '3', '1', '0', '0', '0', NULL, NULL, '1', '0', '0', '0'), +((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT'), 'Descrizione', '`dt_statiddt_lang`.`title`', '2', '1', '0', '0', '0', NULL, NULL, '1', '0', '0', '0'), +((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT'), 'id', '`dt_statiddt`.`id`', '1', '0', '0', '0', '0', NULL, NULL, '0', '0', '0', '1'), +((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT'), 'color_Colore', 'colore', '7', '0', '0', '1', '0', '', '', '1', '0', '0', '0'); + +INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES +('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'color_Colore' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'color_Color'), +('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'color_Colore' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'color_Colore'), +('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'id' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'id'), +('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'id' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'id'), +('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Descrizione' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'Description'), +('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Descrizione' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'Descrizione'), +('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Icona' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'Icon'), +('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Icona' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'Icona'), +('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Completato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'Completed'), +('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Completato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'Completato'), +('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'Fatturabile' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'Invoiceable'), +('1', (SELECT `id` FROM `zz_views` WHERE `name` = 'Fatturabile' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Stati DDT')), 'Fatturabile'); \ No newline at end of file