From 2e1b88c31b142d0bcf9e1fbbb293aca169eecea0 Mon Sep 17 00:00:00 2001 From: Fabio Lovato Date: Wed, 1 Apr 2020 17:17:26 +0200 Subject: [PATCH] Miglioramento gestione revisioni preventivi a database e a video --- modules/preventivi/edit.php | 15 ++++++++++++++- modules/preventivi/src/Preventivo.php | 9 +++++++++ plugins/revisioni/edit.php | 2 +- templates/preventivi/body.php | 2 +- templates/preventivi_cons/top.php | 2 +- update/2_4_14.php | 14 ++++++++++++++ update/2_4_14.sql | 5 ++++- 7 files changed, 44 insertions(+), 5 deletions(-) diff --git a/modules/preventivi/edit.php b/modules/preventivi/edit.php index 5437fde2d..d5ade6bfd 100755 --- a/modules/preventivi/edit.php +++ b/modules/preventivi/edit.php @@ -8,6 +8,19 @@ unset($_SESSION['superselect']['idsede_destinazione']); unset($_SESSION['superselect']['idanagrafica']); $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica']; +// Mostro un avviso se ci sono piĆ¹ revisioni del preventivo +if (count($preventivo->revisioni) > 0) { + echo ' +
+ + '.tr('Questo preventivo presenta _N_ revisioni', + [ + '_N_' => count($preventivo->revisioni) + ]).' +
+ '; +} + ?>
@@ -22,7 +35,7 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
- {[ "type": "text", "label": "", "name": "numero", "required": 1, "class": "text-center", "value": "$numero$" ]} + {[ "type": "text", "label": "", "name": "numero", "required": 1, "class": "text-center", "value": "$numero$", "icon-after": "revisioni) > 1) ? tr('rev.').' '.$preventivo->numero_revision : '' ?>" ]}
diff --git a/modules/preventivi/src/Preventivo.php b/modules/preventivi/src/Preventivo.php index 43d4e1c1a..4034a6f68 100755 --- a/modules/preventivi/src/Preventivo.php +++ b/modules/preventivi/src/Preventivo.php @@ -265,8 +265,17 @@ class Preventivo extends Document return $this->data_bozza; } + public function getRevisioniAttribute() + { + $revisioni = Preventivo::where('master_revision', '=', $this->master_revision)->get()->pluck('id')->toArray(); + + return $revisioni; + } + + public function setStatoAttribute($stato) { $this->idstato = Stato::where('descrizione', $stato)->first()['id']; } + } diff --git a/plugins/revisioni/edit.php b/plugins/revisioni/edit.php index 717cb81ab..fff29f13a 100755 --- a/plugins/revisioni/edit.php +++ b/plugins/revisioni/edit.php @@ -45,7 +45,7 @@ foreach ($revisioni as $i => $revisione) { '.tr('Revisione _NUM_ creata il _DATE_ alle _TIME_', [ - '_NUM_' => ($i + 1), + '_NUM_' => ($revisione['numero_revision']), '_DATE_' => dateFormat($revisione['created_at']), '_TIME_' => timeFormat($revisione['created_at']), ])." diff --git a/templates/preventivi/body.php b/templates/preventivi/body.php index 61d41a173..67105a403 100755 --- a/templates/preventivi/body.php +++ b/templates/preventivi/body.php @@ -11,7 +11,7 @@ echo '
'.tr('Preventivo num. _NUM_ del _DATE_', [ - '_NUM_' => $documento['numero'], + '_NUM_' => $documento['numero'].(count($documento->revisioni) > 1 ? ' '.tr('rev.').' '.$documento->numero_revision : ''), '_DATE_' => Translator::dateToLocale($documento['data_bozza']), ], ['upper' => true]).'
diff --git a/templates/preventivi_cons/top.php b/templates/preventivi_cons/top.php index 186c8e84c..3ec2ffda0 100755 --- a/templates/preventivi_cons/top.php +++ b/templates/preventivi_cons/top.php @@ -8,7 +8,7 @@ echo '

'.tr('Consuntivo', [], ['upper' => true]).'

'.tr('Preventivo num. _NUM_ del _DATE_', [ - '_NUM_' => $documento['numero'], + '_NUM_' => $documento['numero'].(count($documento->revisioni) > 1 ? ' '.tr('rev.').' '.$documento->numero_revision : ''), '_DATE_' => Translator::dateToLocale($documento['data_bozza']), ], ['upper' => true]).'
diff --git a/update/2_4_14.php b/update/2_4_14.php index 60eaf257a..6a6d60312 100755 --- a/update/2_4_14.php +++ b/update/2_4_14.php @@ -13,3 +13,17 @@ foreach ($files as $key => $value) { } delete($files); + +// Calcolo nuovo campo "numero_revision" per ciascun preventivo +$preventivi = $dbo->fetchArray('SELECT * FROM co_preventivi ORDER BY id ASC'); + +foreach ($preventivi as $preventivo) { + // Calcolo il numero preventivo in modo sequenziale in base alla creazione + $revisioni = $dbo->fetchArray('SELECT id FROM co_preventivi WHERE master_revision = '.prepare($preventivo['id']).' AND id > '.prepare($preventivo['id']).' ORDER BY id ASC'); + + $numero_revision = 1; + + foreach ($revisioni as $revisione) { + $dbo->query('UPDATE co_preventivi SET numero_revision='.prepare($numero_revision++).' WHERE id='.$revisione['id']); + } +} \ No newline at end of file diff --git a/update/2_4_14.sql b/update/2_4_14.sql index 1d3b0aa12..f6af77750 100755 --- a/update/2_4_14.sql +++ b/update/2_4_14.sql @@ -503,4 +503,7 @@ ALTER TABLE `co_statipreventivi` ADD `is_revisionabile` BOOLEAN NOT NULL AFTER ` UPDATE `co_statipreventivi` SET `is_revisionabile` = 1 WHERE `is_completato` = 0 OR `descrizione` = 'Rifiutato'; -- Spostamento moduli "Stati preventivi" e "Stati contratti" sotto "Tabelle" -UPDATE `zz_modules` SET `parent` = (SELECT `id` FROM (SELECT `id` FROM `zz_modules` WHERE `name` = 'Tabelle') AS `m` ) WHERE `name` IN('Stati dei preventivi', 'Stati dei contratti'); \ No newline at end of file +UPDATE `zz_modules` SET `parent` = (SELECT `id` FROM (SELECT `id` FROM `zz_modules` WHERE `name` = 'Tabelle') AS `m` ) WHERE `name` IN('Stati dei preventivi', 'Stati dei contratti'); + +-- Aggiunta campo per salvare il numero di revisione del preventivo +ALTER TABLE `co_preventivi` ADD `numero_revision` INT NOT NULL AFTER `default_revision`;