Aggiunti controlli per pianificazione attività da contratti

This commit is contained in:
Luca 2018-11-13 13:22:38 +01:00
parent cf498a7c56
commit 5aa26b58d6
5 changed files with 75 additions and 27 deletions

View File

@ -236,7 +236,7 @@ if (!empty($id_intervento)) {
<!-- RIGA 3 -->
<div class="row">
<div class="col-md-4">
{[ "type": "timestamp", "label": "<?php echo tr('Data richiesta'); ?>", "name": "data_richiesta", "required": 1, "value": "<?php echo $data_richiesta ?: '-now-'; ?>" ]}
{[ "type": "timestamp", "label": "<?php echo tr('Data e ora richiesta'); ?>", "name": "data_richiesta", "required": 1, "value": "<?php echo $data_richiesta ?: '-now-'; ?>" ]}
</div>
<div class="col-md-4">

View File

@ -95,7 +95,7 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
</div>
<div class="col-md-3">
{[ "type": "timestamp", "label": "<?php echo tr('Data richiesta'); ?>", "name": "data_richiesta", "required": 1, "value": "$data_richiesta$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
{[ "type": "timestamp", "label": "<?php echo tr('Data e ora richiesta'); ?>", "name": "data_richiesta", "required": 1, "value": "$data_richiesta$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
</div>
<div class="col-md-3">

View File

@ -62,10 +62,10 @@ switch (filter('op')) {
// pianificazione ciclica
case 'pianificazione':
$intervallo = post('intervallo');
$parti_da_oggi = post('inizio');
$min_date = post('data_inizio');
// if principale
if (!empty($id_record) && !empty($intervallo)) {
if (!empty($id_record) && !empty($intervallo) && post('pianifica_promemoria')) {
$qp = 'SELECT *, (SELECT idanagrafica FROM co_contratti WHERE id = '.$id_parent.' ) AS idanagrafica, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_parent.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento FROM co_promemoria WHERE co_promemoria.id = '.$id_record;
$rsp = $dbo->fetchArray($qp);
@ -83,12 +83,16 @@ switch (filter('op')) {
$idanagrafica = $rsp[0]['idanagrafica'];
// se voglio pianificare anche le date precedenti ad oggi (parto da questo promemoria)
if ($parti_da_oggi) {
//if ($data_inizio) {
// oggi
$min_date = date('Y-m-d');
} else {
$min_date = date('Y-m-d', strtotime($data_richiesta));
}
//$min_date = date('Y-m-d');
//} else {
//questo promemoria
//$min_date = date('Y-m-d', strtotime($data_richiesta));
//}
$data_richiesta = $min_date;
// inizio controllo data_conclusione, data valida e maggiore della $min_date
if ((date('Y', strtotime($data_conclusione)) > 1970) && (date('Y-m-d', strtotime($min_date)) <= date('Y-m-d', strtotime($data_conclusione)))) {
@ -99,7 +103,7 @@ switch (filter('op')) {
$data_richiesta = date('Y-m-d', strtotime($data_richiesta.' + '.(($i == 0) ? 0 : $intervallo).' days'));
++$i;
// controllo nuova data richiesta --> solo date maggiori o uguali di [oggi o data richiesta iniziale] ma che non superano la data di fine del contratto
// controllo nuova data richiesta --> solo date maggiori o uguali di data richiesta iniziale ma che non superano la data di fine del contratto
if ((date('Y-m-d', strtotime($data_richiesta)) >= $min_date) && (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione)))) {
// Controllo che non esista già un promemoria idcontratto, idtipointervento e data_richiesta.
if (count($dbo->fetchArray("SELECT id FROM co_promemoria WHERE data_richiesta = '".$data_richiesta."' AND idtipointervento = '".$idtipointervento."' AND idcontratto = '".$id_parent."' ")) == 0) {
@ -227,7 +231,7 @@ switch (filter('op')) {
}
// fine controllo data_conclusione
} else {
flash()->error(tr('Errore durante la pianificazione'));
flash()->warning(tr('Nessun promemoria pianificato'));
}
break;

View File

@ -15,15 +15,20 @@ $records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM in_tipiintervent
$pianificabile = $dbo->fetchOne('SELECT pianificabile FROM co_staticontratti WHERE id = :id', [
':id' => $contratto['idstato'],
])['pianificabile'];
if ($pianificabile){
$pianificabile = (date( 'Y', strtotime($contratto['data_accettazione'])) > 1970 and date( 'Y', strtotime($contratto['data_conclusione'])) > 1970) ? true : false ;
}
$stati_pianificabili = $dbo->fetchOne('SELECT GROUP_CONCAT(`descrizione` SEPARATOR ", ") AS stati_pianificabili FROM `co_staticontratti` WHERE `pianificabile` = 1')['stati_pianificabili'];
echo '
<span class="tip pull-right" title="'.tr("I promemoria verranno visualizzati sulla 'Dashboard' e serviranno per semplificare la pianificazione del giorno dell'intervento, ad esempio nel caso di interventi con cadenza mensile").'">
<i class="fa fa-question-circle-o fa-2x"></i>
</span>
<p>'.tr('Puoi <b>pianificare dei "promemoria" o direttamente gli interventi</b> da effettuare entro determinate scadenze. Per poter pianificare i promemoria, il contratto deve avere la <b>data di conclusione</b> definita ed essere in uno dei seguenti stati: <b>'.$stati_pianificabili.'</b>').'.</p>';
<p>'.tr('Puoi <b>pianificare dei "promemoria" o direttamente gli interventi</b> da effettuare entro determinate scadenze. Per poter pianificare i promemoria, il contratto deve avere <b>data accettazione</b> e <b>data conclusione</b> definita ed essere in uno dei seguenti stati: <b>'.$stati_pianificabili.'</b>').'.
<span class="tip" title="'.tr("I promemoria verranno visualizzati sulla 'Dashboard' e serviranno per semplificare la pianificazione del giorno dell'intervento, ad esempio nel caso di interventi con cadenza mensile").'">
<i class="fa fa-question-circle-o"></i>
</span></p>';
// Nessun intervento pianificato
if (!empty($records)) {
@ -135,7 +140,7 @@ if (!empty($records)) {
<td>'.$info_allegati.'</td>
<td align="right">
<button type="button" class="btn btn-warning btn-sm" title="Pianifica..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica\', \''.$plugin->fileurl('pianficazione.php').'?id_module='.$id_module.'&id_plugin='.$plugin['id'].'&id_parent='.$id_record.'&id_record='.$record['id'].'\');"'.((!empty($pianificabile) && !empty($contratto['data_conclusione'])) ? '' : ' disabled').'>
<button type="button" class="btn btn-warning btn-sm" title="Pianifica..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica\', \''.$plugin->fileurl('pianficazione.php').'?id_module='.$id_module.'&id_plugin='.$plugin['id'].'&id_parent='.$id_record.'&id_record='.$record['id'].'\');"'.((!empty($pianificabile)) ? '' : ' disabled').'>
<i class="fa fa-clock-o"></i>
</button>
@ -165,10 +170,18 @@ if (!empty($records)) {
}
echo '
<button type="button" title="Aggiungi un nuovo promemoria da pianificare." data-toggle="tooltip" class="btn btn-primary" id="add_promemoria">
<button type="button" '.((!empty($pianificabile)) ? '' : 'disabled').' title="Aggiungi un nuovo promemoria da pianificare." data-toggle="tooltip" class="btn btn-primary tip" id="add_promemoria">
<i class="fa fa-plus"></i> '.tr('Nuovo promemoria').'
</button>';
//TODO: terminare con gestione swal standard, prevedere salvataggio ajax e possibilità di lanciare pop-up
/*$msg = '{[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "required": 1, "values": "query=SELECT co_contratti_tipiintervento.idtipointervento AS id, in_tipiintervento.descrizione AS descrizione FROM in_tipiintervento INNER JOIN co_contratti_tipiintervento ON in_tipiintervento.idtipointervento=co_contratti_tipiintervento.idtipointervento WHERE idcontratto='.prepare($id_record).' AND (co_contratti_tipiintervento.costo_ore!=0 OR co_contratti_tipiintervento.costo_km!=0 OR co_contratti_tipiintervento.costo_dirittochiamata!=0) ORDER BY in_tipiintervento.descrizione" ]}';
echo '
<button type="button" title="Aggiungi un nuovo promemoria da pianificare." class="btn btn-primary ask tip" data-title="'.tr('Vuoi aggiungere un nuovo promemoria?').'" data-msg="'.prepareToField(\HTMLBuilder\HTMLBuilder::replace($msg)).'" data-op="add-promemoria" data-id_plugin="'.$plugin['id'].'" data-id_parent="'.$id_record.'" data-data_richiesta="'.date('Y-m-d').'" data-button="'.tr('Aggiungi').'" data-class="btn btn-lg btn-primary" data-backto="record-edit">
<i class="fa fa-plus"></i> '.tr('Nuovo promemoria').'
</button>';*/
$options = $dbo->fetchArray('SELECT co_contratti_tipiintervento.*, in_tipiintervento.descrizione FROM in_tipiintervento INNER JOIN co_contratti_tipiintervento ON in_tipiintervento.idtipointervento=co_contratti_tipiintervento.idtipointervento WHERE idcontratto='.prepare($id_record).' AND (co_contratti_tipiintervento.costo_ore!=0 OR co_contratti_tipiintervento.costo_km!=0 OR co_contratti_tipiintervento.costo_dirittochiamata!=0) ORDER BY in_tipiintervento.descrizione');
echo '
@ -210,7 +223,7 @@ echo '
$.post(globals.rootdir + "/actions.php?id_plugin='.$plugin['id'].'&id_parent='.$id_record.'", {
op: "add-promemoria",
data_richiesta: "'.date('Y-m-d').'",
data_richiesta: "'.$contratto['data_accettazione'].'",
idtipointervento: $(".swal2-select").val()
}).done(function(data) {
launch_modal("Nuovo promemoria", globals.rootdir + "/plugins/'.$plugin['directory'].'/pianficazione.php?id_plugin='.$plugin['id'].'&id_parent='.$id_record.'&id_record=" + data + "&add=1");

View File

@ -75,7 +75,7 @@ echo '
<div class="row">
<div class="col-md-6">
{[ "type": "date", "label": "'.tr('Data promemoria').'", "name": "data_richiesta", "required": 1, "value": "'.$data_richiesta.'", "readonly": '.intval(empty($is_add)).' ]}
{[ "type": "date", "label": "'.tr('Data promemoria').'", "name": "data_richiesta", "required": 1, "value": "'.$data_accettazione.'", "readonly": '.intval(empty($is_add)).', "min-date": "'.$data_accettazione.'", "max-date": "'.$data_conclusione.'" ]}
</div>
<div class="col-md-6">
@ -165,12 +165,17 @@ echo '
</div-->
<div class="row">
<div class="col-md-2">
{[ "type": "number", "label": "'.tr('Intervallo').'", "name": "intervallo", "decimals": 0, "required": 1, "icon-after": "GG", "min-value": "1" ]}
<div class="col-md-4">
{[ "type": "checkbox", "label": "'.tr("Promemoria ciclico").'", "name": "pianifica_promemoria", "value": "0", "placeholder": "'.tr("Pianificare promemoria ciclici").'", "help": "'.tr("Pianificare ciclicamente altri promemoria identici a questo").'" ]}
</div>
<div class="col-md-7">
{[ "type": "date", "label": "'.tr('Inizio pianificazione').'", "name": "inizio", "help": "'.tr('Data accettazione contratto').'", "name": "data_inizio", "value": "'.$data_accettazione.'" ]}
<div class="col-md-2">
{[ "type": "number", "label": "'.tr('Intervallo').'", "name": "intervallo", "decimals": 0, "required": 1, "icon-after": "GG", "min-value": "1", "maxlength": "3", "disabled": "1" ]}
</div>
<div class="col-md-3">
{[ "type": "date", "label": "'.tr('Inizio pianificazione').'", "help": "'.tr('Intervallo compreso dalla data accettazione contratto fino alla data di conclusione').'", "name": "data_inizio", "value": "'.$data_accettazione.'", "disabled": "1", "min-date": "'.$data_accettazione.'", "max-date": "'.$data_conclusione.'" ]}
</div>
<div class="col-md-3">
@ -192,7 +197,7 @@ echo '
<div class="row">
<div class="col-md-4">
{[ "type": "checkbox", "label": "'.tr("Pianifica anche l'intervento").'", "name": "pianifica_intervento", "value": "0", "placeholder": "'.tr("Pianificare già l'intervento").'" ]}
{[ "type": "checkbox", "label": "'.tr("Pianifica anche l'intervento").'", "name": "pianifica_intervento", "value": "0", "placeholder": "'.tr("Pianificare già l'intervento").'", "disabled": "1" ]}
</div>
<div class="col-md-4">
@ -217,7 +222,7 @@ echo '
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> '.tr('Pianifica').'</button>
<button type="submit" class="btn btn-primary" '.(empty($is_add) ? 'disabled' : '').' ><i class="fa fa-plus"></i> '.tr('Pianifica').'</button>
</div>
</div>
</form>';
@ -244,6 +249,32 @@ echo '
}
});
$("#pianifica_promemoria").click(function() {
if ($(this).is(":checked")){
$("#intervallo").removeAttr("disabled");
$("#data_inizio").removeAttr("disabled");
$("#pianifica_intervento").removeAttr("disabled");
$("#bs-popup .btn-primary").removeAttr("disabled");
} else {
$("#intervallo").prop("disabled", true);
$("#data_inizio").prop("disabled", true);
$("#pianifica_intervento").prop("checked", false);
$("#pianifica_intervento").prop("disabled", true);
$("#bs-popup .btn-primary").prop("disabled", true);
$("#idtecnico").prop("disabled", true);
$("#idtecnico").removeAttr("required");
$("#orario_inizio").prop("disabled", true);
$("#orario_fine").prop("disabled", true);
$("#orario_inizio").removeAttr("required");
$("#orario_fine").removeAttr("required");
}
});
$("#pianifica_intervento").click(function() {
if ($(this).is(":checked")){
$("#idtecnico").removeAttr("disabled");