From 83343bacc3f301848ba4be55087ddfea3813c01a Mon Sep 17 00:00:00 2001 From: Maicol <maicolbattistini@live.it> Date: Tue, 7 Jul 2020 17:15:47 +0200 Subject: [PATCH] =?UTF-8?q?Periodi=20di=20validit=C3=A0=20(#205=20e=20#806?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Periodi validità (Contratti, preventivi) * Spostata la funzione validità nel file 2_4_16.sql * Calcolo automatico della data di conclusione Il calcolo viene effettuato in base alla data di accettazione e alla validità impostata Co-authored-by: Thomas Zilio <Dasc3er@users.noreply.github.com> --- modules/contratti/actions.php | 18 +++++++++++++++--- modules/contratti/edit.php | 6 +++--- modules/ddt/modutil.php | 0 modules/fatture/row-add.php | 1 + modules/interventi/actions.php | 0 modules/preventivi/actions.php | 18 +++++++++++++++--- modules/preventivi/edit.php | 5 ++--- src/HTMLBuilder/Wrapper/HTMLWrapper.php | 15 +++++++++++++++ templates/contratti/body.php | 21 ++++++++++++++++++--- templates/preventivi/body.php | 17 ++++++++++++++++- update/2_4_16.sql | 4 ++++ 11 files changed, 89 insertions(+), 16 deletions(-) mode change 100755 => 100644 modules/ddt/modutil.php mode change 100755 => 100644 modules/interventi/actions.php diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 06d5d5fe4..6daf990ad 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -38,6 +38,17 @@ switch (post('op')) { $budget = $rs[0]['budget']; } + // Calcolo della data di conclusione in base alla validità + $validita = post('validita'); + $validita_periodo = post('tipo_validita'); + $data_accettazione = post('data_accettazione'); + $data_conclusione = post('data_conclusione'); + if (!empty($validita) and !empty($data_accettazione)) { + $nuova_data = new DateTime($data_accettazione); + $nuova_data->add(new DateInterval(sprintf("P%d%s", $validita, strtoupper($validita_periodo)))); + $data_conclusione = $nuova_data->format('Y-m-d'); + } + $contratto->idanagrafica = post('idanagrafica'); $contratto->idsede = post('idsede'); $contratto->idstato = post('idstato'); @@ -47,11 +58,12 @@ switch (post('op')) { $contratto->numero = post('numero'); $contratto->budget = $budget; $contratto->idreferente = post('idreferente'); - $contratto->validita = post('validita'); + $contratto->validita = $validita; + $contratto->validita_periodo = $validita_periodo; $contratto->data_bozza = post('data_bozza'); - $contratto->data_accettazione = post('data_accettazione'); + $contratto->data_accettazione = $data_accettazione; $contratto->data_rifiuto = post('data_rifiuto'); - $contratto->data_conclusione = post('data_conclusione'); + $contratto->data_conclusione = $data_conclusione; $contratto->rinnovabile = post('rinnovabile'); $contratto->giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo'); $contratto->ore_preavviso_rinnovo = post('ore_preavviso_rinnovo'); diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index 439a63335..31618be2b 100755 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -36,7 +36,7 @@ $_SESSION['superselect']['permetti_movimento_a_zero'] = true; </div> <div class="col-md-2"> - {[ "type": "date", "label": "<?php echo tr('Data conclusione'); ?>", "name": "data_conclusione", "value": "$data_conclusione$" ]} + {[ "type": "date", "label": "<?php echo tr('Data conclusione'); ?>", "name": "data_conclusione", "value": "$data_conclusione$", "disabled": "<?php echo !empty($record['validita']) ? '1", "help": "' . tr("La data di conclusione è calcolata in automatico in base al valore del campo Validità") : 0 ?>" ]} </div> <div class="col-md-2"> @@ -93,7 +93,7 @@ $_SESSION['superselect']['permetti_movimento_a_zero'] = true; <div class="row"> <div class="col-md-3"> - {[ "type": "number", "label": "<?php echo tr('Validità offerta'); ?>", "name": "validita", "decimals": "2", "value": "$validita$", "icon-after": "giorni" ]} + {[ "type": "number", "label": "<?php echo tr('Validità offerta'); ?>", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|<?php echo $record['validita_periodo']; ?>", "help": "<?php echo tr("Il campo validità viene utilizzato solo nelle stampe, non è incluso nel calcolo della fine del contratto. Si può inserire questo valore nel campo Data conclusione") ?>" ]} </div> <div class="col-md-3"> @@ -463,4 +463,4 @@ $('#rinnovabile').on('change', function(){ $('#giorni_preavviso_rinnovo').prop('disabled', true); } }); -</script> \ No newline at end of file +</script> diff --git a/modules/ddt/modutil.php b/modules/ddt/modutil.php old mode 100755 new mode 100644 diff --git a/modules/fatture/row-add.php b/modules/fatture/row-add.php index 11f1205d8..34f7feaed 100755 --- a/modules/fatture/row-add.php +++ b/modules/fatture/row-add.php @@ -29,6 +29,7 @@ $result = [ 'qta' => 1, 'um' => '', 'prezzo' => 0, + 'prezzo_acquisto' => 0, 'sconto_unitario' => 0, 'tipo_sconto' => '', 'idiva' => '', diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php old mode 100755 new mode 100644 diff --git a/modules/preventivi/actions.php b/modules/preventivi/actions.php index 5c5270460..e57c9de3e 100755 --- a/modules/preventivi/actions.php +++ b/modules/preventivi/actions.php @@ -34,6 +34,17 @@ switch (post('op')) { case 'update': if (isset($id_record)) { + // Calcolo della data di conclusione in base alla validità + $validita = post('validita'); + $validita_periodo = post('tipo_validita'); + $data_accettazione = post('data_accettazione'); + $data_conclusione = post('data_conclusione'); + if (!empty($validita) and !empty($data_accettazione)) { + $nuova_data = new DateTime($data_accettazione); + $nuova_data->add(new DateInterval(sprintf("P%d%s", $validita, strtoupper($validita_periodo)))); + $data_conclusione = $nuova_data->format('Y-m-d'); + } + $preventivo->idstato = post('idstato'); $preventivo->nome = post('nome'); $preventivo->idanagrafica = post('idanagrafica'); @@ -45,16 +56,17 @@ switch (post('op')) { $preventivo->tempi_consegna = post('tempi_consegna'); $preventivo->numero = post('numero'); $preventivo->data_bozza = post('data_bozza'); - $preventivo->data_accettazione = post('data_accettazione'); + $preventivo->data_accettazione = $data_accettazione; $preventivo->data_rifiuto = post('data_rifiuto'); - $preventivo->data_conclusione = post('data_conclusione'); + $preventivo->data_conclusione = $data_conclusione; $preventivo->esclusioni = post('esclusioni'); $preventivo->descrizione = post('descrizione'); $preventivo->id_documento_fe = post('id_documento_fe'); $preventivo->num_item = post('num_item'); $preventivo->codice_cig = post('codice_cig'); $preventivo->codice_cup = post('codice_cup'); - $preventivo->validita = post('validita'); + $preventivo->validita = $validita; + $preventivo->validita_periodo = $validita_periodo; $preventivo->idtipointervento = post('idtipointervento'); $preventivo->idiva = post('idiva'); diff --git a/modules/preventivi/edit.php b/modules/preventivi/edit.php index f9fad97d8..431778ef4 100755 --- a/modules/preventivi/edit.php +++ b/modules/preventivi/edit.php @@ -48,7 +48,7 @@ if (count($preventivo->revisioni) > 1) { </div> <div class="col-md-2"> - {[ "type": "date", "label": "<?php echo tr('Data conclusione'); ?>", "name": "data_conclusione", "value": "$data_conclusione$" ]} + {[ "type": "date", "label": "<?php echo tr('Data conclusione'); ?>", "name": "data_conclusione", "value": "$data_conclusione$", "disabled": "<?php echo !empty($record['validita']) ? '1", "help": "' . tr("La data di conclusione è calcolata in automatico in base al valore del campo Validità") : 0 ?>" ]} </div> <div class="col-md-2"> @@ -105,8 +105,7 @@ if (count($preventivo->revisioni) > 1) { <div class="row"> <div class="col-md-3"> - {[ "type": "number", "label": "<?php echo tr('Validità offerta'); ?>", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "giorni" ]} - + {[ "type": "number", "label": "<?php echo tr('Validità offerta'); ?>", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|<?php echo $record['validita_periodo']; ?>", "help": "<?php echo tr("Il campo validità viene utilizzato solo nelle stampe, non è incluso nel calcolo della fine del preventivo. Si può inserire questo valore nel campo Data conclusione") ?>" ]} </div> <div class="col-md-3"> diff --git a/src/HTMLBuilder/Wrapper/HTMLWrapper.php b/src/HTMLBuilder/Wrapper/HTMLWrapper.php index 5332a0b3c..8d09a9f1e 100755 --- a/src/HTMLBuilder/Wrapper/HTMLWrapper.php +++ b/src/HTMLBuilder/Wrapper/HTMLWrapper.php @@ -233,6 +233,21 @@ class HTMLWrapper implements WrapperInterface 'descrizione' => tr('CCN'), ], ]; + } elseif ($type == 'period') { + $choices = [ + [ + 'id' => 'd', + 'descrizione' => tr('giorno/i') + ], + [ + 'id' => 'm', + 'descrizione' => tr('mese/i') + ], + [ + 'id' => 'y', + 'descrizione' => tr('anno/i') + ] + ]; } $value = (empty($pieces[2]) || !in_array($pieces[2], array_column($choices, 'id'))) ? $choices[0]['id'] : $pieces[2]; diff --git a/templates/contratti/body.php b/templates/contratti/body.php index e4b6de70b..38f562f60 100755 --- a/templates/contratti/body.php +++ b/templates/contratti/body.php @@ -272,10 +272,25 @@ echo ' <td>'; if (!empty($documento['validita'])) { + $periodi = [ + 'd' => [ + 'singular' => tr('giorno'), + 'plural' => tr('giorni') + ], + 'm' => [ + 'singular' => tr('mese'), + 'plural' => tr('mesi') + ], + 'y' => [ + 'singular' => tr('anno'), + 'plural' => tr('anni') + ], + ]; echo' - '.tr('_TOT_ giorni', [ - '_TOT_' => $documento['validita'], - ]); + '.tr('_TOT_ _PERIOD_', [ + '_TOT_' => $documento['validita'], + '_PERIOD_' => $periodi[$documento['validita_periodo']][$documento['validita'] == 1 ? 'singular' : 'plural'] + ]); } else { echo '-'; } diff --git a/templates/preventivi/body.php b/templates/preventivi/body.php index 9a49a6c50..0d383821f 100755 --- a/templates/preventivi/body.php +++ b/templates/preventivi/body.php @@ -326,9 +326,24 @@ echo ' <td>'; if (!empty($documento['validita'])) { + $periodi = [ + 'd' => [ + 'singular' => tr('giorno'), + 'plural' => tr('giorni') + ], + 'm' => [ + 'singular' => tr('mese'), + 'plural' => tr('mesi') + ], + 'y' => [ + 'singular' => tr('anno'), + 'plural' => tr('anni') + ], + ]; echo' - '.tr('_TOT_ giorni', [ + '.tr('_TOT_ _PERIOD_', [ '_TOT_' => $documento['validita'], + '_PERIOD_' => $periodi[$documento['validita_periodo']][$documento['validita'] == 1 ? 'singular' : 'plural'] ]); } else { echo '-'; diff --git a/update/2_4_16.sql b/update/2_4_16.sql index 3b36d22d7..92e1a5538 100644 --- a/update/2_4_16.sql +++ b/update/2_4_16.sql @@ -107,3 +107,7 @@ ALTER TABLE `mg_prodotti` DROP FOREIGN KEY `mg_prodotti_ibfk_4`; UPDATE mg_prodotti SET mg_prodotti.id_riga_intervento = NULL WHERE mg_prodotti.id_riga_intervento NOT IN (SELECT old_id FROM in_righe_interventi); UPDATE mg_prodotti SET mg_prodotti.id_riga_intervento = (SELECT id FROM in_righe_interventi WHERE mg_prodotti.id_riga_intervento = in_righe_interventi.old_id); ALTER TABLE `mg_prodotti` ADD FOREIGN KEY (`id_riga_intervento`) REFERENCES `in_righe_interventi`(`id`) ON DELETE CASCADE; + +-- Periodi di validità (Contratti e preventivi) +ALTER TABLE `co_contratti` ADD COLUMN `validita_periodo` ENUM('d','m','y') NOT NULL DEFAULT 'd' AFTER `validita`; +ALTER TABLE `co_preventivi` ADD COLUMN `validita_periodo` ENUM('d','m','y') NOT NULL DEFAULT 'd' AFTER `validita`;