mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-02 08:56:48 +01:00
Gestione duplicazione multipla intervento
This commit is contained in:
parent
92f4e62c2d
commit
b9184eac0a
@ -949,102 +949,114 @@ switch (post('op')) {
|
|||||||
// Duplica intervento
|
// Duplica intervento
|
||||||
case 'copy':
|
case 'copy':
|
||||||
$id_stato = post('id_stato');
|
$id_stato = post('id_stato');
|
||||||
$data_richiesta = post('data_richiesta');
|
$ora_richiesta = post('ora_richiesta');
|
||||||
$copia_sessioni = post('copia_sessioni');
|
$copia_sessioni = post('copia_sessioni');
|
||||||
$copia_righe = post('copia_righe');
|
$copia_righe = post('copia_righe');
|
||||||
$copia_impianti = post('copia_impianti');
|
$copia_impianti = post('copia_impianti');
|
||||||
$copia_allegati = post('copia_allegati');
|
$copia_allegati = post('copia_allegati');
|
||||||
|
$data_inizio = post('data_inizio');
|
||||||
|
$data_fine = post('data_fine');
|
||||||
|
$giorni = (array)post('giorni');
|
||||||
|
|
||||||
$new = $intervento->replicate();
|
$period = CarbonPeriod::create($data_inizio, $data_fine);
|
||||||
$new->idstatointervento = $id_stato;
|
|
||||||
|
|
||||||
// Calcolo del nuovo codice sulla base della data di richiesta
|
// Iterate over the period
|
||||||
$new->codice = Intervento::getNextCodice($data_richiesta, $new->id_segment);
|
foreach ($period as $date) {
|
||||||
$new->data_richiesta = $data_richiesta;
|
$data_richiesta = $date->format('Y-m-d').' '.$ora_richiesta;
|
||||||
$new->data_scadenza = post('data_scadenza');
|
$giorno = $date->locale('IT')->dayName;
|
||||||
$new->firma_file = '';
|
if (in_array($giorno, $giorni)) {
|
||||||
$new->firma_data = null;
|
$new = $intervento->replicate();
|
||||||
$new->firma_nome = '';
|
$new->idstatointervento = $id_stato;
|
||||||
|
|
||||||
$new->save();
|
// 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 = '';
|
||||||
|
|
||||||
$id_record = $new->id;
|
$new->save();
|
||||||
|
|
||||||
// Copio le righe
|
$id_record = $new->id;
|
||||||
if (!empty($copia_righe)) {
|
|
||||||
$righe = $intervento->getRighe();
|
|
||||||
foreach ($righe as $riga) {
|
|
||||||
$new_riga = $riga->replicate();
|
|
||||||
$new_riga->setDocument($new);
|
|
||||||
|
|
||||||
$new_riga->qta_evasa = 0;
|
// Copio le righe
|
||||||
$new_riga->save();
|
if (!empty($copia_righe)) {
|
||||||
|
$righe = $intervento->getRighe();
|
||||||
|
foreach ($righe as $riga) {
|
||||||
|
$new_riga = $riga->replicate();
|
||||||
|
$new_riga->setDocument($new);
|
||||||
|
|
||||||
if ($new_riga->isArticolo()) {
|
$new_riga->qta_evasa = 0;
|
||||||
$new_riga->movimenta($new_riga->qta);
|
$new_riga->save();
|
||||||
|
|
||||||
|
if ($new_riga->isArticolo()) {
|
||||||
|
$new_riga->movimenta($new_riga->qta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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']
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$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 delle sessioni
|
flash()->info(tr('Attività duplicate correttamente!'));
|
||||||
$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']
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$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,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
flash()->info(tr('Attività duplicata correttamente!'));
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -25,20 +25,34 @@ echo '
|
|||||||
<input type="hidden" name="op" value="copy">
|
<input type="hidden" name="op" value="copy">
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-3">
|
||||||
{[ "type": "timestamp", "label": "'.tr('Data/ora richiesta').'", "name": "data_richiesta", "value": "-now-", "required":1 ]}
|
{[ "type": "date", "label": "'.tr('Data inizio').'", "name": "data_inizio", "value": "-now-", "required":1 ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-3">
|
||||||
{[ "type": "timestamp", "label": "'.tr('Data/ora scadenza').'", "name": "data_scadenza" ]}
|
{[ "type": "date", "label": "'.tr('Data fine').'", "name": "data_fine", "value": "-now-", "required":1 ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
{[ "type": "time", "label": "'.tr('Ora richiesta').'", "name": "ora_richiesta", "value": "-now-", "required":1 ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
{[ "type": "time", "label": "'.tr('Ora scadenza').'", "name": "ora_scadenza" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT idstatointervento AS id, descrizione, colore AS _bgcolor_ FROM in_statiintervento WHERE deleted_at IS NULL ORDER BY descrizione", "value": "" ]}
|
{[ "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 ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT idstatointervento AS id, descrizione, colore AS _bgcolor_ FROM in_statiintervento WHERE deleted_at IS NULL ORDER BY descrizione", "value": "" ]}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{["type": "checkbox", "label": "'.tr('Duplica righe').'", "name": "copia_righe", "help": "'.tr('Selezione per riportare anche le righe nella nuova attività').'" ]}
|
{["type": "checkbox", "label": "'.tr('Duplica righe').'", "name": "copia_righe", "help": "'.tr('Selezione per riportare anche le righe nella nuova attività').'" ]}
|
||||||
</div>
|
</div>
|
||||||
@ -54,7 +68,6 @@ echo '
|
|||||||
<div class="col-md-3">
|
<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à').'", "value": 1 ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- PULSANTI -->
|
<!-- PULSANTI -->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user