Aggiunta retro-compatibilità per il campo Validità

This commit is contained in:
Thomas Zilio 2020-07-07 18:07:56 +02:00
parent 3d9a82a1ce
commit ad69d26e59
9 changed files with 65 additions and 48 deletions

View File

@ -36,7 +36,7 @@ $_SESSION['superselect']['permetti_movimento_a_zero'] = true;
</div> </div>
<div class="col-md-2"> <div class="col-md-2">
{[ "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; ?>" ]} {[ "type": "date", "label": "<?php echo tr('Data conclusione'); ?>", "name": "data_conclusione", "value": "$data_conclusione$", "disabled": "<?php echo $contratto->isDataConclusioneAutomatica() ? '1", "help": "'.tr('La Data di conclusione è calcolata in automatico in base al valore del campo Validità') : '0'; ?>" ]}
</div> </div>
<div class="col-md-2"> <div class="col-md-2">
@ -93,7 +93,7 @@ $_SESSION['superselect']['permetti_movimento_a_zero'] = true;
<div class="row"> <div class="row">
<div class="col-md-3"> <div class="col-md-3">
{[ "type": "number", "label": "<?php echo tr('Validità offerta'); ?>", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|<?php echo $record['tipo_validita']; ?>", "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'); ?>" ]} {[ "type": "number", "label": "<?php echo tr('Validità offerta'); ?>", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|<?php echo $record['tipo_validita']; ?>", "help": "<?php echo tr('Il campo Validità viene utilizzato in modo esclusivamente indicativo se impostato secondo l\'opzione manuale, mentre viene utilizzato per il calcolo della Data di conclusione del documento in caso alternativo'); ?>" ]}
</div> </div>
<div class="col-md-3"> <div class="col-md-3">

View File

@ -98,6 +98,21 @@ class Contratto extends Document
} }
} }
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. * Restituisce il nome del modulo a cui l'oggetto è collegato.
* *
@ -166,7 +181,7 @@ class Contratto extends Document
public function fixDataConclusione() public function fixDataConclusione()
{ {
// Calcolo della data di conclusione in base alla validità // 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); $intervallo = CarbonInterval::make($this->validita.' '.$this->tipo_validita);
$this->data_conclusione = Carbon::make($this->data_accettazione)->add($intervallo); $this->data_conclusione = Carbon::make($this->data_accettazione)->add($intervallo);
} }

View File

@ -48,7 +48,7 @@ if (count($preventivo->revisioni) > 1) {
</div> </div>
<div class="col-md-2"> <div class="col-md-2">
{[ "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; ?>" ]} {[ "type": "date", "label": "<?php echo tr('Data conclusione'); ?>", "name": "data_conclusione", "value": "$data_conclusione$", "disabled": "<?php echo $preventivo->isDataConclusioneAutomatica() ? '1", "help": "'.tr('La Data di conclusione è calcolata in automatico in base al valore del campo Validità') : 0; ?>" ]}
</div> </div>
<div class="col-md-2"> <div class="col-md-2">
@ -105,7 +105,7 @@ if (count($preventivo->revisioni) > 1) {
<div class="row"> <div class="row">
<div class="col-md-3"> <div class="col-md-3">
{[ "type": "number", "label": "<?php echo tr('Validità offerta'); ?>", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|<?php echo $record['tipo_validita']; ?>", "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'); ?>" ]} {[ "type": "number", "label": "<?php echo tr('Validità offerta'); ?>", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "choice|period|<?php echo $record['tipo_validita']; ?>", "help": "<?php echo tr('Il campo Validità viene utilizzato in modo esclusivamente indicativo se impostato secondo l\'opzione manuale, mentre viene utilizzato per il calcolo della Data di conclusione del documento in caso alternativo'); ?>" ]}
</div> </div>
<div class="col-md-3"> <div class="col-md-3">

View File

@ -105,6 +105,21 @@ class Preventivo extends Document
return $this->info['ore_interventi']; 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. * Restituisce il nome del modulo a cui l'oggetto è collegato.
* *
@ -168,7 +183,7 @@ class Preventivo extends Document
public function fixDataConclusione() public function fixDataConclusione()
{ {
// Calcolo della data di conclusione in base alla validità // 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); $intervallo = CarbonInterval::make($this->validita.' '.$this->tipo_validita);
$this->data_conclusione = Carbon::make($this->data_accettazione)->add($intervallo); $this->data_conclusione = Carbon::make($this->data_accettazione)->add($intervallo);
} }

View File

@ -235,6 +235,10 @@ class HTMLWrapper implements WrapperInterface
]; ];
} elseif ($type == 'period') { } elseif ($type == 'period') {
$choices = [ $choices = [
[
'id' => 'manual',
'descrizione' => tr('giorno/i (manuale)'),
],
[ [
'id' => 'days', 'id' => 'days',
'descrizione' => tr('giorno/i'), 'descrizione' => tr('giorno/i'),

View File

@ -1,6 +1,7 @@
<?php <?php
use Carbon\Carbon; use Carbon\Carbon;
use Carbon\CarbonInterval;
/** /**
* Classe per gestire le traduzioni del progetto. * Classe per gestire le traduzioni del progetto.
@ -90,8 +91,10 @@ class Translator extends Util\Singleton
Carbon::setUtf8(true); Carbon::setUtf8(true);
} }
$reduced = explode('_', $locale)[0];
CarbonInterval::setLocale($reduced);
if (empty($result)) { if (empty($result)) {
$reduced = explode('_', $locale)[0];
$result = setlocale(LC_TIME, $reduced); $result = setlocale(LC_TIME, $reduced);
} }

View File

@ -1,5 +1,7 @@
<?php <?php
use Carbon\CarbonInterval;
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
// Creazione righe fantasma // Creazione righe fantasma
@ -271,26 +273,14 @@ echo '
<td>'; <td>';
if (!empty($documento['validita'])) { if (!empty($documento->validita) && !empty($documento->tipo_validita)) {
$periodi = [ $intervallo = CarbonInterval::make($documento->validita.' '.$documento->tipo_validita);
'd' => [
'singular' => tr('giorno'), echo $intervallo->forHumans();
'plural' => tr('giorni'), } elseif (!empty($documento->validita)) {
], echo tr('_TOT_ giorni', [
'm' => [ '_TOT_' => $documento->validita,
'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'],
]);
} else { } else {
echo '-'; echo '-';
} }

View File

@ -1,5 +1,7 @@
<?php <?php
use Carbon\CarbonInterval;
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
$has_images = null; $has_images = null;
@ -325,25 +327,13 @@ echo '
<td>'; <td>';
if (!empty($documento['validita'])) { if (!empty($documento->validita) && !empty($documento->tipo_validita)) {
$periodi = [ $intervallo = CarbonInterval::make($documento->validita.' '.$documento->tipo_validita);
'd' => [
'singular' => tr('giorno'), echo $intervallo->forHumans();
'plural' => tr('giorni'), } elseif (!empty($documento->validita)) {
], echo tr('_TOT_ giorni', [
'm' => [ '_TOT_' => $documento->validita,
'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'],
]); ]);
} else { } else {
echo '-'; echo '-';

View File

@ -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; ALTER TABLE `mg_prodotti` ADD FOREIGN KEY (`id_riga_intervento`) REFERENCES `in_righe_interventi`(`id`) ON DELETE CASCADE;
-- Periodi di validità (Contratti e Preventivi) -- 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_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') NOT NULL DEFAULT 'days' AFTER `validita`; ALTER TABLE `co_preventivi` ADD COLUMN `tipo_validita` ENUM('days', 'months', 'years') NULL DEFAULT NULL AFTER `validita`;