Correzioni minori sul periodo di validità
This commit is contained in:
parent
83343bacc3
commit
3d9a82a1ce
|
@ -38,17 +38,6 @@ switch (post('op')) {
|
||||||
$budget = $rs[0]['budget'];
|
$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->idanagrafica = post('idanagrafica');
|
||||||
$contratto->idsede = post('idsede');
|
$contratto->idsede = post('idsede');
|
||||||
$contratto->idstato = post('idstato');
|
$contratto->idstato = post('idstato');
|
||||||
|
@ -58,12 +47,17 @@ switch (post('op')) {
|
||||||
$contratto->numero = post('numero');
|
$contratto->numero = post('numero');
|
||||||
$contratto->budget = $budget;
|
$contratto->budget = $budget;
|
||||||
$contratto->idreferente = post('idreferente');
|
$contratto->idreferente = post('idreferente');
|
||||||
$contratto->validita = $validita;
|
|
||||||
$contratto->validita_periodo = $validita_periodo;
|
// Informazioni sulle date del documento
|
||||||
$contratto->data_bozza = post('data_bozza');
|
$contratto->data_bozza = post('data_bozza');
|
||||||
$contratto->data_accettazione = $data_accettazione;
|
|
||||||
$contratto->data_rifiuto = post('data_rifiuto');
|
$contratto->data_rifiuto = post('data_rifiuto');
|
||||||
$contratto->data_conclusione = $data_conclusione;
|
|
||||||
|
// Dati relativi alla validità del documento
|
||||||
|
$contratto->validita = post('validita');
|
||||||
|
$contratto->tipo_validita = post('tipo_validita');
|
||||||
|
$contratto->data_accettazione = post('data_accettazione');
|
||||||
|
$contratto->data_conclusione = post('data_conclusione');
|
||||||
|
|
||||||
$contratto->rinnovabile = post('rinnovabile');
|
$contratto->rinnovabile = post('rinnovabile');
|
||||||
$contratto->giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo');
|
$contratto->giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo');
|
||||||
$contratto->ore_preavviso_rinnovo = post('ore_preavviso_rinnovo');
|
$contratto->ore_preavviso_rinnovo = post('ore_preavviso_rinnovo');
|
||||||
|
|
|
@ -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 !empty($record['validita']) ? '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['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") ?>" ]}
|
{[ "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'); ?>" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace Modules\Contratti;
|
namespace Modules\Contratti;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Carbon\CarbonInterval;
|
||||||
use Common\Components\Description;
|
use Common\Components\Description;
|
||||||
use Common\Document;
|
use Common\Document;
|
||||||
use Modules\Anagrafiche\Anagrafica;
|
use Modules\Anagrafiche\Anagrafica;
|
||||||
|
@ -162,9 +163,19 @@ class Contratto extends Document
|
||||||
$this->budget = $this->totale_imponibile ?: 0;
|
$this->budget = $this->totale_imponibile ?: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function fixDataConclusione()
|
||||||
|
{
|
||||||
|
// Calcolo della data di conclusione in base alla validità
|
||||||
|
if (!empty($this->validita) && !empty($this->data_accettazione)) {
|
||||||
|
$intervallo = CarbonInterval::make($this->validita.' '.$this->tipo_validita);
|
||||||
|
$this->data_conclusione = Carbon::make($this->data_accettazione)->add($intervallo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function save(array $options = [])
|
public function save(array $options = [])
|
||||||
{
|
{
|
||||||
$this->fixBudget();
|
$this->fixBudget();
|
||||||
|
$this->fixDataConclusione();
|
||||||
|
|
||||||
$result = parent::save($options);
|
$result = parent::save($options);
|
||||||
|
|
||||||
|
|
|
@ -34,17 +34,6 @@ switch (post('op')) {
|
||||||
|
|
||||||
case 'update':
|
case 'update':
|
||||||
if (isset($id_record)) {
|
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->idstato = post('idstato');
|
||||||
$preventivo->nome = post('nome');
|
$preventivo->nome = post('nome');
|
||||||
$preventivo->idanagrafica = post('idanagrafica');
|
$preventivo->idanagrafica = post('idanagrafica');
|
||||||
|
@ -55,18 +44,23 @@ switch (post('op')) {
|
||||||
$preventivo->idporto = post('idporto');
|
$preventivo->idporto = post('idporto');
|
||||||
$preventivo->tempi_consegna = post('tempi_consegna');
|
$preventivo->tempi_consegna = post('tempi_consegna');
|
||||||
$preventivo->numero = post('numero');
|
$preventivo->numero = post('numero');
|
||||||
|
|
||||||
|
// Informazioni sulle date del documento
|
||||||
$preventivo->data_bozza = post('data_bozza');
|
$preventivo->data_bozza = post('data_bozza');
|
||||||
$preventivo->data_accettazione = $data_accettazione;
|
|
||||||
$preventivo->data_rifiuto = post('data_rifiuto');
|
$preventivo->data_rifiuto = post('data_rifiuto');
|
||||||
$preventivo->data_conclusione = $data_conclusione;
|
|
||||||
|
// Dati relativi alla validità del documento
|
||||||
|
$preventivo->validita = post('validita');
|
||||||
|
$preventivo->tipo_validita = post('tipo_validita');
|
||||||
|
$preventivo->data_accettazione = post('data_accettazione');
|
||||||
|
$preventivo->data_conclusione = post('data_conclusione');
|
||||||
|
|
||||||
$preventivo->esclusioni = post('esclusioni');
|
$preventivo->esclusioni = post('esclusioni');
|
||||||
$preventivo->descrizione = post('descrizione');
|
$preventivo->descrizione = post('descrizione');
|
||||||
$preventivo->id_documento_fe = post('id_documento_fe');
|
$preventivo->id_documento_fe = post('id_documento_fe');
|
||||||
$preventivo->num_item = post('num_item');
|
$preventivo->num_item = post('num_item');
|
||||||
$preventivo->codice_cig = post('codice_cig');
|
$preventivo->codice_cig = post('codice_cig');
|
||||||
$preventivo->codice_cup = post('codice_cup');
|
$preventivo->codice_cup = post('codice_cup');
|
||||||
$preventivo->validita = $validita;
|
|
||||||
$preventivo->validita_periodo = $validita_periodo;
|
|
||||||
$preventivo->idtipointervento = post('idtipointervento');
|
$preventivo->idtipointervento = post('idtipointervento');
|
||||||
$preventivo->idiva = post('idiva');
|
$preventivo->idiva = post('idiva');
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ $_SESSION['superselect']['permetti_movimento_a_zero'] = true;
|
||||||
if (count($preventivo->revisioni) > 1) {
|
if (count($preventivo->revisioni) > 1) {
|
||||||
echo '
|
echo '
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<i class="fa fa-info-circle"></i>
|
<i class="fa fa-info-circle"></i>
|
||||||
'.tr('Questo preventivo presenta _N_ revisioni',
|
'.tr('Questo preventivo presenta _N_ revisioni',
|
||||||
[
|
[
|
||||||
'_N_' => count($preventivo->revisioni),
|
'_N_' => count($preventivo->revisioni),
|
||||||
|
@ -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 !empty($record['validita']) ? '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['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") ?>" ]}
|
{[ "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'); ?>" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace Modules\Preventivi;
|
namespace Modules\Preventivi;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Carbon\CarbonInterval;
|
||||||
use Common\Components\Description;
|
use Common\Components\Description;
|
||||||
use Common\Document;
|
use Common\Document;
|
||||||
use Modules\Anagrafiche\Anagrafica;
|
use Modules\Anagrafiche\Anagrafica;
|
||||||
|
@ -164,9 +165,19 @@ class Preventivo extends Document
|
||||||
$this->budget = $this->totale_imponibile ?: 0;
|
$this->budget = $this->totale_imponibile ?: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function fixDataConclusione()
|
||||||
|
{
|
||||||
|
// Calcolo della data di conclusione in base alla validità
|
||||||
|
if (!empty($this->validita) && !empty($this->data_accettazione)) {
|
||||||
|
$intervallo = CarbonInterval::make($this->validita.' '.$this->tipo_validita);
|
||||||
|
$this->data_conclusione = Carbon::make($this->data_accettazione)->add($intervallo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function save(array $options = [])
|
public function save(array $options = [])
|
||||||
{
|
{
|
||||||
$this->fixBudget();
|
$this->fixBudget();
|
||||||
|
$this->fixDataConclusione();
|
||||||
|
|
||||||
return parent::save($options);
|
return parent::save($options);
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,18 +95,18 @@ class HTMLWrapper implements WrapperInterface
|
||||||
$result .= '
|
$result .= '
|
||||||
<script>
|
<script>
|
||||||
var container = $("#'.$pseudo_id.'_validation");
|
var container = $("#'.$pseudo_id.'_validation");
|
||||||
|
|
||||||
container.closest(".input-group").find("input").on("change, blur", function(e){
|
container.closest(".input-group").find("input").on("change, blur", function(e){
|
||||||
var input = $(this);
|
var input = $(this);
|
||||||
var value = input.val();
|
var value = input.val();
|
||||||
|
|
||||||
var container = $("#'.$pseudo_id.'_validation");
|
var container = $("#'.$pseudo_id.'_validation");
|
||||||
var parent = container.closest(".input-group");
|
var parent = container.closest(".input-group");
|
||||||
var message = container.find("span");
|
var message = container.find("span");
|
||||||
var icon = container.find("i");
|
var icon = container.find("i");
|
||||||
|
|
||||||
icon.attr("class", "fa fa-spinner fa-spin");
|
icon.attr("class", "fa fa-spinner fa-spin");
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: globals.rootdir + "/actions.php",
|
url: globals.rootdir + "/actions.php",
|
||||||
type: "post",
|
type: "post",
|
||||||
|
@ -119,7 +119,7 @@ class HTMLWrapper implements WrapperInterface
|
||||||
},
|
},
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
data = JSON.parse(data);
|
data = JSON.parse(data);
|
||||||
|
|
||||||
if (value == "") {
|
if (value == "") {
|
||||||
parent.removeClass("has-success").removeClass("has-error");
|
parent.removeClass("has-success").removeClass("has-error");
|
||||||
icon.attr("class", "fa fa-question-circle");
|
icon.attr("class", "fa fa-question-circle");
|
||||||
|
@ -132,13 +132,13 @@ class HTMLWrapper implements WrapperInterface
|
||||||
icon.attr("class", "fa fa-close");
|
icon.attr("class", "fa fa-close");
|
||||||
parent.addClass("has-error").removeClass("has-success");
|
parent.addClass("has-error").removeClass("has-success");
|
||||||
}
|
}
|
||||||
|
|
||||||
message.tooltipster("content", data.message);
|
message.tooltipster("content", data.message);
|
||||||
input.attr("valid", +(data.result));
|
input.attr("valid", +(data.result));
|
||||||
|
|
||||||
if (data.fields) {
|
if (data.fields) {
|
||||||
var fields = data.fields;
|
var fields = data.fields;
|
||||||
|
|
||||||
var form = input.closest("form");
|
var form = input.closest("form");
|
||||||
Object.keys(fields).forEach(function(element) {
|
Object.keys(fields).forEach(function(element) {
|
||||||
var single_input = form.find("[name=" + element + "]");
|
var single_input = form.find("[name=" + element + "]");
|
||||||
|
@ -236,17 +236,17 @@ class HTMLWrapper implements WrapperInterface
|
||||||
} elseif ($type == 'period') {
|
} elseif ($type == 'period') {
|
||||||
$choices = [
|
$choices = [
|
||||||
[
|
[
|
||||||
'id' => 'd',
|
'id' => 'days',
|
||||||
'descrizione' => tr('giorno/i')
|
'descrizione' => tr('giorno/i'),
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'id' => 'm',
|
'id' => 'months',
|
||||||
'descrizione' => tr('mese/i')
|
'descrizione' => tr('mese/i'),
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'id' => 'y',
|
'id' => 'years',
|
||||||
'descrizione' => tr('anno/i')
|
'descrizione' => tr('anno/i'),
|
||||||
]
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -275,21 +275,21 @@ echo '
|
||||||
$periodi = [
|
$periodi = [
|
||||||
'd' => [
|
'd' => [
|
||||||
'singular' => tr('giorno'),
|
'singular' => tr('giorno'),
|
||||||
'plural' => tr('giorni')
|
'plural' => tr('giorni'),
|
||||||
],
|
],
|
||||||
'm' => [
|
'm' => [
|
||||||
'singular' => tr('mese'),
|
'singular' => tr('mese'),
|
||||||
'plural' => tr('mesi')
|
'plural' => tr('mesi'),
|
||||||
],
|
],
|
||||||
'y' => [
|
'y' => [
|
||||||
'singular' => tr('anno'),
|
'singular' => tr('anno'),
|
||||||
'plural' => tr('anni')
|
'plural' => tr('anni'),
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
echo'
|
echo'
|
||||||
'.tr('_TOT_ _PERIOD_', [
|
'.tr('_TOT_ _PERIOD_', [
|
||||||
'_TOT_' => $documento['validita'],
|
'_TOT_' => $documento['validita'],
|
||||||
'_PERIOD_' => $periodi[$documento['validita_periodo']][$documento['validita'] == 1 ? 'singular' : 'plural']
|
'_PERIOD_' => $periodi[$documento['tipo_validita']][$documento['validita'] == 1 ? 'singular' : 'plural'],
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
echo '-';
|
echo '-';
|
||||||
|
|
|
@ -329,21 +329,21 @@ echo '
|
||||||
$periodi = [
|
$periodi = [
|
||||||
'd' => [
|
'd' => [
|
||||||
'singular' => tr('giorno'),
|
'singular' => tr('giorno'),
|
||||||
'plural' => tr('giorni')
|
'plural' => tr('giorni'),
|
||||||
],
|
],
|
||||||
'm' => [
|
'm' => [
|
||||||
'singular' => tr('mese'),
|
'singular' => tr('mese'),
|
||||||
'plural' => tr('mesi')
|
'plural' => tr('mesi'),
|
||||||
],
|
],
|
||||||
'y' => [
|
'y' => [
|
||||||
'singular' => tr('anno'),
|
'singular' => tr('anno'),
|
||||||
'plural' => tr('anni')
|
'plural' => tr('anni'),
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
echo'
|
echo'
|
||||||
'.tr('_TOT_ _PERIOD_', [
|
'.tr('_TOT_ _PERIOD_', [
|
||||||
'_TOT_' => $documento['validita'],
|
'_TOT_' => $documento['validita'],
|
||||||
'_PERIOD_' => $periodi[$documento['validita_periodo']][$documento['validita'] == 1 ? 'singular' : 'plural']
|
'_PERIOD_' => $periodi[$documento['tipo_validita']][$documento['validita'] == 1 ? 'singular' : 'plural'],
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
echo '-';
|
echo '-';
|
||||||
|
|
|
@ -108,6 +108,6 @@ UPDATE mg_prodotti SET mg_prodotti.id_riga_intervento = NULL WHERE mg_prodotti.i
|
||||||
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);
|
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;
|
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 `validita_periodo` ENUM('d','m','y') NOT NULL DEFAULT 'd' AFTER `validita`;
|
ALTER TABLE `co_contratti` ADD COLUMN `tipo_validita` ENUM('days', 'months', 'years') NOT NULL DEFAULT 'days' AFTER `validita`;
|
||||||
ALTER TABLE `co_preventivi` ADD COLUMN `validita_periodo` ENUM('d','m','y') NOT NULL DEFAULT 'd' AFTER `validita`;
|
ALTER TABLE `co_preventivi` ADD COLUMN `tipo_validita` ENUM('days', 'months', 'years') NOT NULL DEFAULT 'days' AFTER `validita`;
|
||||||
|
|
Loading…
Reference in New Issue