- {[ "type": "number", "label": "", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|", "help": "" ]}
+ {[ "type": "number", "label": "", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|", "help": "" ]}
diff --git a/modules/preventivi/src/Preventivo.php b/modules/preventivi/src/Preventivo.php
index 03259ceab..118478012 100755
--- a/modules/preventivi/src/Preventivo.php
+++ b/modules/preventivi/src/Preventivo.php
@@ -105,6 +105,21 @@ class Preventivo extends Document
return $this->info['ore_interventi'];
}
+ public function setTipoValiditaAttribute($value)
+ {
+ $this->attributes['tipo_validita'] = $value == 'manual' ? null : $value;
+ }
+
+ /**
+ * Controlla se la data di conclusione del documento deve essere calcolata in modo automatico.
+ *
+ * @return bool
+ */
+ public function isDataConclusioneAutomatica()
+ {
+ return !empty($this->validita) && !empty($this->tipo_validita) && !empty($this->data_accettazione);
+ }
+
/**
* Restituisce il nome del modulo a cui l'oggetto è collegato.
*
@@ -168,7 +183,7 @@ class Preventivo extends Document
public function fixDataConclusione()
{
// Calcolo della data di conclusione in base alla validità
- if (!empty($this->validita) && !empty($this->data_accettazione)) {
+ if ($this->isDataConclusioneAutomatica()) {
$intervallo = CarbonInterval::make($this->validita.' '.$this->tipo_validita);
$this->data_conclusione = Carbon::make($this->data_accettazione)->add($intervallo);
}
diff --git a/src/HTMLBuilder/Wrapper/HTMLWrapper.php b/src/HTMLBuilder/Wrapper/HTMLWrapper.php
index 91533c57d..8ff492399 100755
--- a/src/HTMLBuilder/Wrapper/HTMLWrapper.php
+++ b/src/HTMLBuilder/Wrapper/HTMLWrapper.php
@@ -235,6 +235,10 @@ class HTMLWrapper implements WrapperInterface
];
} elseif ($type == 'period') {
$choices = [
+ [
+ 'id' => 'manual',
+ 'descrizione' => tr('giorno/i (manuale)'),
+ ],
[
'id' => 'days',
'descrizione' => tr('giorno/i'),
diff --git a/src/Translator.php b/src/Translator.php
index 6843515ca..11f7f1b4c 100755
--- a/src/Translator.php
+++ b/src/Translator.php
@@ -1,6 +1,7 @@
';
- 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_ _PERIOD_', [
- '_TOT_' => $documento['validita'],
- '_PERIOD_' => $periodi[$documento['tipo_validita']][$documento['validita'] == 1 ? 'singular' : 'plural'],
- ]);
+ if (!empty($documento->validita) && !empty($documento->tipo_validita)) {
+ $intervallo = CarbonInterval::make($documento->validita.' '.$documento->tipo_validita);
+
+ echo $intervallo->forHumans();
+ } elseif (!empty($documento->validita)) {
+ echo tr('_TOT_ giorni', [
+ '_TOT_' => $documento->validita,
+ ]);
} else {
echo '-';
}
diff --git a/templates/preventivi/body.php b/templates/preventivi/body.php
index db2303d7e..1d80c629c 100755
--- a/templates/preventivi/body.php
+++ b/templates/preventivi/body.php
@@ -1,5 +1,7 @@
';
- 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_ _PERIOD_', [
- '_TOT_' => $documento['validita'],
- '_PERIOD_' => $periodi[$documento['tipo_validita']][$documento['validita'] == 1 ? 'singular' : 'plural'],
+ if (!empty($documento->validita) && !empty($documento->tipo_validita)) {
+ $intervallo = CarbonInterval::make($documento->validita.' '.$documento->tipo_validita);
+
+ echo $intervallo->forHumans();
+ } elseif (!empty($documento->validita)) {
+ echo tr('_TOT_ giorni', [
+ '_TOT_' => $documento->validita,
]);
} else {
echo '-';
diff --git a/update/2_4_16.sql b/update/2_4_16.sql
index b9ada3ab1..ce6a548be 100644
--- a/update/2_4_16.sql
+++ b/update/2_4_16.sql
@@ -109,5 +109,5 @@ UPDATE mg_prodotti SET mg_prodotti.id_riga_intervento = (SELECT id FROM in_righe
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 `tipo_validita` ENUM('days', 'months', 'years') NOT NULL DEFAULT 'days' AFTER `validita`;
-ALTER TABLE `co_preventivi` ADD COLUMN `tipo_validita` ENUM('days', 'months', 'years') NOT NULL DEFAULT 'days' AFTER `validita`;
+ALTER TABLE `co_contratti` ADD COLUMN `tipo_validita` ENUM('days', 'months', 'years') NULL DEFAULT NULL AFTER `validita`;
+ALTER TABLE `co_preventivi` ADD COLUMN `tipo_validita` ENUM('days', 'months', 'years') NULL DEFAULT NULL AFTER `validita`;