Fix duplicazione attività da scheda attività
This commit is contained in:
parent
752d4feceb
commit
6406135540
17
core.php
17
core.php
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
|
||||
// Rimozione header X-Powered-By
|
||||
header_remove('X-Powered-By');
|
||||
//header_remove('X-Powered-By');
|
||||
|
||||
// Impostazioni di configurazione PHP
|
||||
date_default_timezone_set('Europe/Rome');
|
||||
|
@ -54,13 +54,16 @@ $docroot = DOCROOT;
|
|||
$rootdir = ROOTDIR;
|
||||
$baseurl = BASEURL;
|
||||
|
||||
// Sicurezza della sessioni
|
||||
ini_set('session.cookie_samesite', 'lax');
|
||||
ini_set('session.use_trans_sid', '0');
|
||||
ini_set('session.use_only_cookies', '1');
|
||||
// Controllo che le intestazioni non siano già state inviate.
|
||||
if (!headers_sent()){
|
||||
// Sicurezza della sessioni
|
||||
ini_set('session.cookie_samesite', 'lax');
|
||||
ini_set('session.use_trans_sid', '0');
|
||||
ini_set('session.use_only_cookies', '1');
|
||||
|
||||
session_set_cookie_params(0, base_path(), null, isHTTPS(true));
|
||||
session_start();
|
||||
session_set_cookie_params(0, base_path(), null, isHTTPS(true));
|
||||
session_start();
|
||||
}
|
||||
|
||||
// Lettura della configurazione
|
||||
$config = App::getConfig();
|
||||
|
|
|
@ -973,7 +973,7 @@ switch (post('op')) {
|
|||
$sessione->save();
|
||||
break;
|
||||
|
||||
// Duplica intervento
|
||||
// Duplica intervento
|
||||
case 'copy':
|
||||
$id_stato = post('id_stato');
|
||||
$ora_richiesta = post('ora_richiesta');
|
||||
|
@ -986,105 +986,121 @@ switch (post('op')) {
|
|||
$giorni = (array) post('giorni');
|
||||
|
||||
$period = CarbonPeriod::create($data_inizio, $data_fine);
|
||||
|
||||
|
||||
// Iterate over the period
|
||||
foreach ($period as $date) {
|
||||
$data_richiesta = $date->format('Y-m-d').' '.$ora_richiesta;
|
||||
$giorno = $date->locale('IT')->dayName;
|
||||
if (in_array($giorno, $giorni)) {
|
||||
$new = $intervento->replicate();
|
||||
$new->idstatointervento = $id_stato;
|
||||
if (count($period)>0){
|
||||
|
||||
// Calcolo del nuovo codice sulla base della data di richiesta
|
||||
$new->codice = Intervento::getNextCodice($data_richiesta, $new->id_segment);
|
||||
$new->data_richiesta = $data_richiesta;
|
||||
$new->data_scadenza = post('ora_scadenza') ? $date->format('Y-m-d').' '.post('ora_scadenza') : null;
|
||||
$new->firma_file = '';
|
||||
$new->firma_data = null;
|
||||
$new->firma_nome = '';
|
||||
$i = 0;
|
||||
// Iterate over the period
|
||||
foreach ($period as $date) {
|
||||
|
||||
$data_richiesta = $date->format('Y-m-d').' '.$ora_richiesta;
|
||||
$giorno = $date->locale('IT')->dayName;
|
||||
|
||||
$new->save();
|
||||
if (in_array($giorno, $giorni)) {
|
||||
|
||||
$i++;
|
||||
$new = $intervento->replicate();
|
||||
$new->idstatointervento = $id_stato;
|
||||
|
||||
$id_record = $new->id;
|
||||
// Calcolo del nuovo codice sulla base della data di richiesta
|
||||
$new->codice = Intervento::getNextCodice($data_richiesta, $new->id_segment);
|
||||
$new->data_richiesta = $data_richiesta;
|
||||
$new->data_scadenza = post('ora_scadenza') ? $date->format('Y-m-d').' '.post('ora_scadenza') : null;
|
||||
$new->firma_file = '';
|
||||
$new->firma_data = null;
|
||||
$new->firma_nome = '';
|
||||
|
||||
// Copio le righe
|
||||
if (!empty($copia_righe)) {
|
||||
$righe = $intervento->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$new_riga = $riga->replicate();
|
||||
$new_riga->setDocument($new);
|
||||
$new->save();
|
||||
|
||||
$new_riga->qta_evasa = 0;
|
||||
$id_record = $new->id;
|
||||
|
||||
if ($new_riga->isArticolo()) {
|
||||
$new_riga->movimenta($new_riga->qta);
|
||||
// Copio le righe
|
||||
if (!empty($copia_righe)) {
|
||||
$righe = $intervento->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$new_riga = $riga->replicate();
|
||||
$new_riga->setDocument($new);
|
||||
|
||||
$new_riga->qta_evasa = 0;
|
||||
|
||||
if ($new_riga->isArticolo()) {
|
||||
$new_riga->movimenta($new_riga->qta);
|
||||
}
|
||||
|
||||
$new_riga->save();
|
||||
}
|
||||
}
|
||||
|
||||
// Copia delle sessioni
|
||||
$numero_sessione = 0;
|
||||
if (!empty($copia_sessioni)) {
|
||||
$sessioni = $intervento->sessioni;
|
||||
foreach ($sessioni as $sessione) {
|
||||
// Se è la prima sessione che copio importo la data con quella della richiesta
|
||||
if ($numero_sessione == 0) {
|
||||
$orario_inizio = date('Y-m-d', strtotime($data_richiesta)).' '.date('H:i:s', strtotime($sessione->orario_inizio));
|
||||
} else {
|
||||
$diff = strtotime($sessione->orario_inizio) - strtotime($inizio_old);
|
||||
$orario_inizio = date('Y-m-d H:i:s', strtotime($new_sessione->orario_inizio) + $diff);
|
||||
}
|
||||
|
||||
$diff_fine = strtotime($sessione->orario_fine) - strtotime($sessione->orario_inizio);
|
||||
$orario_fine = date('Y-m-d H:i:s', strtotime($orario_inizio) + $diff_fine);
|
||||
|
||||
$new_sessione = $sessione->replicate();
|
||||
$new_sessione->idintervento = $new->id;
|
||||
|
||||
$new_sessione->orario_inizio = $orario_inizio;
|
||||
$new_sessione->orario_fine = $orario_fine;
|
||||
$new_sessione->save();
|
||||
|
||||
++$numero_sessione;
|
||||
$inizio_old = $sessione->orario_inizio;
|
||||
}
|
||||
}
|
||||
|
||||
// Copia degli impianti
|
||||
if (!empty($copia_impianti)) {
|
||||
$impianti = $dbo->select('my_impianti_interventi', '*', [], ['idintervento' => $intervento->id]);
|
||||
foreach ($impianti as $impianto) {
|
||||
$dbo->insert('my_impianti_interventi', [
|
||||
'idintervento' => $id_record,
|
||||
'idimpianto' => $impianto['idimpianto'],
|
||||
]);
|
||||
}
|
||||
|
||||
$new_riga->save();
|
||||
}
|
||||
}
|
||||
|
||||
// Copia delle sessioni
|
||||
$numero_sessione = 0;
|
||||
if (!empty($copia_sessioni)) {
|
||||
$sessioni = $intervento->sessioni;
|
||||
foreach ($sessioni as $sessione) {
|
||||
// Se è la prima sessione che copio importo la data con quella della richiesta
|
||||
if ($numero_sessione == 0) {
|
||||
$orario_inizio = date('Y-m-d', strtotime($data_richiesta)).' '.date('H:i:s', strtotime($sessione->orario_inizio));
|
||||
} else {
|
||||
$diff = strtotime($sessione->orario_inizio) - strtotime($inizio_old);
|
||||
$orario_inizio = date('Y-m-d H:i:s', strtotime($new_sessione->orario_inizio) + $diff);
|
||||
$componenti = $dbo->select('my_componenti_interventi', '*', [], ['id_intervento' => $intervento->id]);
|
||||
foreach ($componenti as $componente) {
|
||||
$dbo->insert('my_componenti_interventi', [
|
||||
'id_intervento' => $id_record,
|
||||
'id_componente' => $componente['id_componente'],
|
||||
]);
|
||||
}
|
||||
|
||||
$diff_fine = strtotime($sessione->orario_fine) - strtotime($sessione->orario_inizio);
|
||||
$orario_fine = date('Y-m-d H:i:s', strtotime($orario_inizio) + $diff_fine);
|
||||
|
||||
$new_sessione = $sessione->replicate();
|
||||
$new_sessione->idintervento = $new->id;
|
||||
|
||||
$new_sessione->orario_inizio = $orario_inizio;
|
||||
$new_sessione->orario_fine = $orario_fine;
|
||||
$new_sessione->save();
|
||||
|
||||
++$numero_sessione;
|
||||
$inizio_old = $sessione->orario_inizio;
|
||||
}
|
||||
}
|
||||
|
||||
// Copia degli impianti
|
||||
if (!empty($copia_impianti)) {
|
||||
$impianti = $dbo->select('my_impianti_interventi', '*', [], ['idintervento' => $intervento->id]);
|
||||
foreach ($impianti as $impianto) {
|
||||
$dbo->insert('my_impianti_interventi', [
|
||||
'idintervento' => $id_record,
|
||||
'idimpianto' => $impianto['idimpianto'],
|
||||
]);
|
||||
}
|
||||
|
||||
$componenti = $dbo->select('my_componenti_interventi', '*', [], ['id_intervento' => $intervento->id]);
|
||||
foreach ($componenti as $componente) {
|
||||
$dbo->insert('my_componenti_interventi', [
|
||||
'id_intervento' => $id_record,
|
||||
'id_componente' => $componente['id_componente'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// copia allegati
|
||||
if (!empty($copia_allegati)) {
|
||||
$allegati = $intervento->uploads();
|
||||
foreach ($allegati as $allegato) {
|
||||
$allegato->copia([
|
||||
'id_module' => $new->getModule()->id,
|
||||
'id_record' => $new->id,
|
||||
]);
|
||||
// copia allegati
|
||||
if (!empty($copia_allegati)) {
|
||||
$allegati = $intervento->uploads();
|
||||
foreach ($allegati as $allegato) {
|
||||
$allegato->copia([
|
||||
'id_module' => $new->getModule()->id,
|
||||
'id_record' => $new->id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($i>0)
|
||||
flash()->info(tr('Sono state create _NUM_ attività!', ['_NUM_' => $i]));
|
||||
else
|
||||
flash()->warning(tr('Nessuna attività creata per il periodo indicato.'));
|
||||
}else{
|
||||
flash()->warning(tr('Nessuna attività creata.'));
|
||||
}
|
||||
|
||||
flash()->info(tr('Attività duplicate correttamente!'));
|
||||
|
||||
|
||||
break;
|
||||
|
||||
|
|
|
@ -228,6 +228,7 @@ switch (post('op')) {
|
|||
$copia_sessioni = post('sessioni');
|
||||
$copia_righe = post('righe');
|
||||
$copia_impianti = post('impianti');
|
||||
$copia_allegati = post('allegati');
|
||||
|
||||
foreach ($id_records as $idintervento) {
|
||||
$intervento = Intervento::find($idintervento);
|
||||
|
@ -302,6 +303,18 @@ switch (post('op')) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// copia allegati
|
||||
if (!empty($copia_allegati)) {
|
||||
$allegati = $intervento->uploads();
|
||||
foreach ($allegati as $allegato) {
|
||||
$allegato->copia([
|
||||
'id_module' => $new->getModule()->id,
|
||||
'id_record' => $new->id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
flash()->info(tr('Attività duplicate correttamente!'));
|
||||
|
||||
break;
|
||||
|
@ -448,6 +461,7 @@ $operations['copy-bulk'] = [
|
|||
<br>{[ "type":"checkbox", "label":"'.tr('Duplica righe').'", "name":"righe", "value":"" ]}
|
||||
<br>{[ "type":"checkbox", "label":"'.tr('Duplica sessioni').'", "name":"sessioni", "value":"" ]}
|
||||
<br>{[ "type":"checkbox", "label":"'.tr('Duplica impianti').'", "name":"impianti", "value":"" ]}
|
||||
<br>{[ "type":"checkbox", "label":"'.tr('Duplica allegati').'", "name":"allegati", "value":"" ]}
|
||||
<style>.swal2-modal{ width:600px !important; }</style>',
|
||||
'button' => tr('Procedi'),
|
||||
'class' => 'btn btn-lg btn-warning',
|
||||
|
|
|
@ -44,7 +44,7 @@ echo '
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "multiple":"1", "label": "'.tr('Giorni').'", "name": "giorni[]", "required": 0, "value": "'.strtolower(setting('Giorni lavorativi')).'", "values": "list=\"lunedì\":\"'.tr('Lunedì').'\", \"martedì\":\"'.tr('Martedì').'\", \"mercoledì\":\"'.tr('Mercoledì').'\", \"giovedì\":\"'.tr('Giovedì').'\", \"venerdì\":\"'.tr('Venerdì').'\", \"sabato\":\"'.tr('Sabato').'\", \"domenica\":\"'.tr('Domenica').'\"", "required":1 ]}
|
||||
{[ "type": "select", "multiple":"1", "label": "'.tr('Giorni da considerare per la duplicazione').'", "name": "giorni[]", "required": 0, "value": "'.strtolower(setting('Giorni lavorativi')).'", "values": "list=\"lunedì\":\"'.tr('Lunedì').'\", \"martedì\":\"'.tr('Martedì').'\", \"mercoledì\":\"'.tr('Mercoledì').'\", \"giovedì\":\"'.tr('Giovedì').'\", \"venerdì\":\"'.tr('Venerdì').'\", \"sabato\":\"'.tr('Sabato').'\", \"domenica\":\"'.tr('Domenica').'\"", "required":1 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
|
@ -66,7 +66,7 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{["type": "checkbox", "label": "'.tr('Duplica allegati').'", "name": "copia_allegati", "help": "'.tr('Selezione per riportare anche gli allegati nella nuova attività').'", "value": 1 ]}
|
||||
{["type": "checkbox", "label": "'.tr('Duplica allegati').'", "name": "copia_allegati", "help": "'.tr('Selezione per riportare anche gli allegati nella nuova attività').'" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{["type": "checkbox", "label": "'.tr('Duplica allegati').'", "name": "copia_allegati", "help": "'.tr('Selezione per riportare anche gli allegati nella nuova attività').'", "value": 1 ]}
|
||||
{["type": "checkbox", "label": "'.tr('Duplica allegati').'", "name": "copia_allegati", "help": "'.tr('Selezione per riportare anche gli allegati nella nuova attività').'" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue