2017-08-04 16:28:16 +02:00
< ? php
2018-06-25 20:50:40 +02:00
include_once __DIR__ . '/../../core.php' ;
2019-01-11 08:32:08 +01:00
use Modules\Anagrafiche\Anagrafica ;
2018-09-25 16:47:44 +02:00
use Modules\Articoli\Articolo as ArticoloOriginale ;
2019-08-29 10:25:14 +02:00
use Modules\Emails\Mail ;
use Modules\Emails\Template ;
2018-12-25 11:32:19 +01:00
use Modules\Interventi\Components\Articolo ;
2019-03-29 12:46:17 +01:00
use Modules\Interventi\Components\Riga ;
2019-05-16 04:52:16 +02:00
use Modules\Interventi\Components\Sconto ;
2019-07-15 12:27:12 +02:00
use Modules\Interventi\Components\Sessione ;
2018-12-29 12:03:22 +01:00
use Modules\Interventi\Intervento ;
2019-01-11 08:32:08 +01:00
use Modules\Interventi\Stato ;
2019-07-08 12:24:59 +02:00
use Modules\TipiIntervento\Tipo as TipoSessione ;
2020-02-17 15:09:07 +01:00
use Plugins\PianificazioneInterventi\Promemoria ;
2018-08-29 18:06:51 +02:00
2017-08-04 16:28:16 +02:00
switch ( post ( 'op' )) {
case 'update' :
$idcontratto = post ( 'idcontratto' );
2020-02-17 15:09:07 +01:00
$id_promemoria = post ( 'idcontratto_riga' );
2017-08-04 16:28:16 +02:00
2019-02-14 09:52:42 +01:00
// Rimozione del collegamento al promemoria
2020-02-17 15:09:07 +01:00
if ( ! empty ( $id_promemoria ) && $intervento -> id_contratto != $idcontratto ) {
2018-08-31 11:39:38 +02:00
$dbo -> update ( 'co_promemoria' , [ 'idintervento' => null ], [ 'idintervento' => $id_record ]);
2017-08-04 16:28:16 +02:00
}
// Salvataggio modifiche intervento
2019-02-14 09:52:42 +01:00
$intervento -> data_richiesta = post ( 'data_richiesta' );
2019-12-09 16:44:07 +01:00
$intervento -> data_scadenza = post ( 'data_scadenza' ) ? : null ;
2019-02-14 09:52:42 +01:00
$intervento -> richiesta = post ( 'richiesta' );
$intervento -> descrizione = post ( 'descrizione' );
$intervento -> informazioniaggiuntive = post ( 'informazioniaggiuntive' );
$intervento -> idanagrafica = post ( 'idanagrafica' );
$intervento -> idclientefinale = post ( 'idclientefinale' );
$intervento -> idreferente = post ( 'idreferente' );
$intervento -> idtipointervento = post ( 'idtipointervento' );
$intervento -> idstatointervento = post ( 'idstatointervento' );
2019-05-29 19:17:57 +02:00
$intervento -> idsede_partenza = post ( 'idsede_partenza' );
$intervento -> idsede_destinazione = post ( 'idsede_destinazione' );
2019-02-14 09:52:42 +01:00
$intervento -> id_preventivo = post ( 'idpreventivo' );
$intervento -> id_contratto = $idcontratto ;
$intervento -> id_documento_fe = post ( 'id_documento_fe' );
2019-02-26 21:38:26 +01:00
$intervento -> num_item = post ( 'num_item' );
2019-02-14 09:52:42 +01:00
$intervento -> codice_cup = post ( 'codice_cup' );
$intervento -> codice_cig = post ( 'codice_cig' );
$intervento -> save ();
2017-08-04 16:28:16 +02:00
2018-09-20 11:39:03 +02:00
// Notifica chiusura intervento
2019-02-14 09:52:42 +01:00
$stato = $dbo -> selectOne ( 'in_statiintervento' , '*' , [ 'idstatointervento' => post ( 'idstatointervento' )]);
2018-09-20 12:05:22 +02:00
if ( ! empty ( $stato [ 'notifica' ]) && ! empty ( $stato [ 'destinatari' ]) && $stato [ 'idstatointervento' ] != $record [ 'idstatointervento' ]) {
2019-08-29 10:25:14 +02:00
$template = Template :: find ( $stato [ 'id_email' ]);
2018-09-20 11:39:03 +02:00
2019-08-27 15:42:13 +02:00
$mail = Mail :: build ( auth () -> getUser (), $template , $id_record );
$mail -> addReceiver ( $stato [ 'destinatari' ]);
$mail -> save ();
2018-09-20 11:39:03 +02:00
}
2019-05-29 19:17:57 +02:00
aggiorna_sedi_movimenti ( 'interventi' , $id_record );
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Informazioni salvate correttamente!' ));
2017-08-04 16:28:16 +02:00
break ;
case 'add' :
2018-09-20 09:21:34 +02:00
if ( post ( 'id_intervento' ) == null ) {
2019-01-11 08:32:08 +01:00
$idanagrafica = post ( 'idanagrafica' );
$idtipointervento = post ( 'idtipointervento' );
$idstatointervento = post ( 'idstatointervento' );
$data_richiesta = post ( 'data_richiesta' );
2019-12-09 17:47:07 +01:00
$data_scadenza = post ( 'data_scadenza' ) ? : null ;
2017-08-04 16:28:16 +02:00
2019-01-11 08:32:08 +01:00
$anagrafica = Anagrafica :: find ( $idanagrafica );
$tipo = TipoSessione :: find ( $idtipointervento );
$stato = Stato :: find ( $idstatointervento );
2017-08-04 16:28:16 +02:00
2019-01-11 08:32:08 +01:00
$intervento = Intervento :: build ( $anagrafica , $tipo , $stato , $data_richiesta );
$id_record = $intervento -> id ;
2019-05-29 19:17:57 +02:00
aggiorna_sedi_movimenti ( 'interventi' , $id_record );
2019-01-11 08:32:08 +01:00
flash () -> info ( tr ( 'Aggiunto nuovo intervento!' ));
2018-01-08 17:14:59 +01:00
2018-09-20 09:21:34 +02:00
// Informazioni di base
$idpreventivo = post ( 'idpreventivo' );
$idcontratto = post ( 'idcontratto' );
2020-02-17 15:09:07 +01:00
$id_promemoria = post ( 'idcontratto_riga' );
2018-09-20 09:21:34 +02:00
$idtipointervento = post ( 'idtipointervento' );
2019-05-29 19:17:57 +02:00
$idsede_partenza = post ( 'idsede_partenza' );
$idsede_destinazione = post ( 'idsede_destinazione' );
2018-09-20 09:21:34 +02:00
$richiesta = post ( 'richiesta' );
2019-01-11 08:32:08 +01:00
if ( post ( 'idclientefinale' )) {
$intervento -> idclientefinale = post ( 'idclientefinale' );
}
2019-05-29 19:17:57 +02:00
if ( post ( 'idsede_destinazione' )) {
$intervento -> idsede_destinazione = post ( 'idsede_destinazione' );
2018-09-20 09:21:34 +02:00
}
2019-02-14 09:52:42 +01:00
$intervento -> id_preventivo = post ( 'idpreventivo' );
$intervento -> id_contratto = post ( 'idcontratto' );
2019-01-16 16:26:19 +01:00
$intervento -> richiesta = $richiesta ;
2019-10-29 17:23:52 +01:00
$intervento -> idsede_destinazione = $idsede_destinazione ;
2019-02-27 13:17:47 +01:00
$intervento -> data_scadenza = $data_scadenza ;
2019-01-16 16:26:19 +01:00
$intervento -> save ();
2019-01-11 08:32:08 +01:00
2020-02-17 15:09:07 +01:00
// Sincronizzazione con il promemoria indicato
if ( ! empty ( $id_promemoria )) {
$promemoria = Promemoria :: find ( $id_promemoria );
$promemoria -> pianifica ( $intervento );
2017-08-04 16:28:16 +02:00
}
2018-09-20 09:21:34 +02:00
// Collegamenti intervento/impianti
$impianti = ( array ) post ( 'idimpianti' );
if ( ! empty ( $impianti )) {
foreach ( $impianti as $impianto ) {
$dbo -> insert ( 'my_impianti_interventi' , [
'idintervento' => $id_record ,
'idimpianto' => $impianto ,
]);
}
// Collegamenti intervento/componenti
$componenti = ( array ) post ( 'componenti' );
foreach ( $componenti as $componente ) {
$dbo -> insert ( 'my_componenti_interventi' , [
'id_intervento' => $id_record ,
'id_componente' => $componente ,
]);
}
}
} else {
$id_record = post ( 'id_intervento' );
$idcontratto = $dbo -> fetchOne ( 'SELECT idcontratto FROM co_promemoria WHERE idintervento = :id' , [
2018-09-25 16:47:44 +02:00
':id' => $id_record ,
2018-09-20 09:21:34 +02:00
])[ 'idcontratto' ];
2017-08-04 16:28:16 +02:00
}
// Collegamenti tecnici/interventi
$idtecnici = post ( 'idtecnico' );
2020-02-14 12:23:50 +01:00
if ( ! empty ( post ( 'orario_inizio' )) && ! empty ( post ( 'orario_fine' ))) {
2020-02-12 10:35:07 +01:00
foreach ( $idtecnici as $idtecnico ) {
add_tecnico ( $id_record , $idtecnico , post ( 'orario_inizio' ), post ( 'orario_fine' ), $idcontratto );
}
2017-08-04 16:28:16 +02:00
}
if ( post ( 'ref' ) == 'dashboard' ) {
2018-07-19 17:29:21 +02:00
flash () -> clearMessage ( 'info' );
flash () -> clearMessage ( 'warning' );
2017-08-04 16:28:16 +02:00
}
2019-10-01 18:01:00 +02:00
2019-05-29 19:17:57 +02:00
aggiorna_sedi_movimenti ( 'interventi' , $id_record );
2017-08-04 16:28:16 +02:00
break ;
// Eliminazione intervento
case 'delete' :
2019-10-01 18:32:06 +02:00
try {
$intervento -> delete ();
2017-08-04 16:28:16 +02:00
2019-10-01 18:32:06 +02:00
// Eliminazione associazioni tra interventi e contratti
$dbo -> query ( 'UPDATE co_promemoria SET idintervento = NULL WHERE idintervento=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
2019-10-01 18:32:06 +02:00
// Elimino il collegamento al componente
$dbo -> query ( 'DELETE FROM my_impianto_componenti WHERE idintervento=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
2019-10-01 18:32:06 +02:00
// Eliminazione associazione tecnici collegati all'intervento
$dbo -> query ( 'DELETE FROM in_interventi_tecnici WHERE idintervento=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
2019-10-01 18:32:06 +02:00
// Eliminazione associazione interventi e my_impianti
$dbo -> query ( 'DELETE FROM my_impianti_interventi WHERE idintervento=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
2019-10-01 18:32:06 +02:00
// Elimino anche eventuali file caricati
Uploads :: deleteLinked ([
'id_module' => $id_module ,
'id_record' => $id_record ,
]);
2017-08-04 16:28:16 +02:00
2019-10-01 18:32:06 +02:00
flash () -> info ( tr ( 'Intervento eliminato!' ));
} catch ( InvalidArgumentException $e ) {
flash () -> error ( tr ( 'Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!' ));
}
2017-08-04 16:28:16 +02:00
break ;
2019-10-01 18:32:06 +02:00
case 'delete_riga' :
2019-10-01 18:01:00 +02:00
$id_riga = post ( 'idriga' );
2020-01-17 17:31:07 +01:00
$type = post ( 'type' );
$riga = $intervento -> getRiga ( $type , $id_riga );
2019-10-01 18:01:00 +02:00
2020-01-17 17:31:07 +01:00
if ( ! empty ( $riga )) {
2019-10-01 18:01:00 +02:00
try {
$riga -> delete ();
flash () -> info ( tr ( 'Riga rimossa!' ));
} catch ( InvalidArgumentException $e ) {
flash () -> error ( tr ( 'Alcuni serial number sono già stati utilizzati!' ));
}
}
aggiorna_sedi_movimenti ( 'interventi' , $id_record );
2017-08-04 16:28:16 +02:00
break ;
2020-02-14 17:02:16 +01:00
case 'manage_articolo' :
if ( post ( 'idriga' ) != null ) {
$articolo = Articolo :: find ( post ( 'idriga' ));
} else {
$originale = ArticoloOriginale :: find ( post ( 'idarticolo' ));
$articolo = Articolo :: build ( $intervento , $originale );
2020-07-06 13:32:43 +02:00
$articolo -> id_dettaglio_fornitore = post ( 'id_dettaglio_fornitore' ) ? : null ;
2020-02-14 17:02:16 +01:00
}
$qta = post ( 'qta' );
$articolo -> descrizione = post ( 'descrizione' );
$articolo -> um = post ( 'um' ) ? : null ;
2020-02-14 18:31:07 +01:00
$articolo -> costo_unitario = post ( 'costo_unitario' ) ? : 0 ;
2020-02-17 19:11:40 +01:00
$articolo -> setPrezzoUnitario ( post ( 'prezzo_unitario' ), post ( 'idiva' ));
2020-02-14 18:31:07 +01:00
$articolo -> setSconto ( post ( 'sconto' ), post ( 'tipo_sconto' ));
2020-02-14 17:02:16 +01:00
try {
$articolo -> qta = $qta ;
} catch ( UnexpectedValueException $e ) {
flash () -> error ( tr ( 'Alcuni serial number sono già stati utilizzati!' ));
}
$articolo -> save ();
if ( post ( 'idriga' ) != null ) {
flash () -> info ( tr ( 'Articolo modificato!' ));
} else {
flash () -> info ( tr ( 'Articolo aggiunto!' ));
}
// Collegamento all'impianto
link_componente_to_articolo ( $id_record , post ( 'idimpianto' ), $articolo -> idarticolo , $qta );
break ;
2019-03-29 12:46:17 +01:00
case 'manage_sconto' :
if ( post ( 'idriga' ) != null ) {
2019-05-12 04:37:14 +02:00
$sconto = Sconto :: find ( post ( 'idriga' ));
2019-03-29 12:46:17 +01:00
} else {
2019-05-12 04:37:14 +02:00
$sconto = Sconto :: build ( $intervento );
2019-03-29 12:46:17 +01:00
}
$sconto -> descrizione = post ( 'descrizione' );
$sconto -> id_iva = post ( 'idiva' );
$sconto -> sconto_unitario = post ( 'sconto_unitario' );
$sconto -> tipo_sconto = 'UNT' ;
$sconto -> save ();
if ( post ( 'idriga' ) != null ) {
flash () -> info ( tr ( 'Sconto/maggiorazione modificato!' ));
} else {
2019-07-11 17:20:58 +02:00
flash () -> info ( tr ( 'Sconto/maggiorazione aggiunto!' ));
2019-03-29 12:46:17 +01:00
}
break ;
2020-02-14 17:02:16 +01:00
case 'manage_riga' :
if ( post ( 'idriga' ) != null ) {
$riga = Riga :: find ( post ( 'idriga' ));
} else {
$riga = Riga :: build ( $intervento );
}
2019-06-04 20:45:40 +02:00
2020-02-14 17:02:16 +01:00
$qta = post ( 'qta' );
2018-09-25 16:47:44 +02:00
2020-02-14 17:02:16 +01:00
$riga -> descrizione = post ( 'descrizione' );
$riga -> um = post ( 'um' ) ? : null ;
2018-09-25 16:47:44 +02:00
2020-02-14 18:31:07 +01:00
$riga -> costo_unitario = post ( 'costo_unitario' ) ? : 0 ;
2020-02-17 19:11:40 +01:00
$riga -> setPrezzoUnitario ( post ( 'prezzo_unitario' ), post ( 'idiva' ));
2020-02-14 18:31:07 +01:00
$riga -> setSconto ( post ( 'sconto' ), post ( 'tipo_sconto' ));
2018-09-25 11:55:52 +02:00
2020-02-14 17:02:16 +01:00
$riga -> qta = $qta ;
2019-06-04 20:45:40 +02:00
2020-02-14 17:02:16 +01:00
$riga -> save ();
2017-09-05 18:20:02 +02:00
2020-02-14 17:02:16 +01:00
if ( post ( 'idriga' ) != null ) {
flash () -> info ( tr ( 'Riga modificata!' ));
} else {
flash () -> info ( tr ( 'Riga aggiunta!' ));
2017-08-04 16:28:16 +02:00
}
break ;
case 'add_serial' :
2018-07-19 15:33:32 +02:00
$idriga = post ( 'idriga' );
$idarticolo = post ( 'idarticolo' );
2017-08-04 16:28:16 +02:00
2018-07-19 15:33:32 +02:00
$serials = ( array ) post ( 'serial' );
2017-09-05 17:31:58 +02:00
foreach ( $serials as $key => $value ) {
if ( empty ( $value )) {
unset ( $serials [ $key ]);
}
2017-08-04 16:28:16 +02:00
}
2017-09-06 10:48:59 +02:00
$dbo -> sync ( 'mg_prodotti' , [ 'id_riga_intervento' => $idriga , 'dir' => 'entrata' , 'id_articolo' => $idarticolo ], [ 'serial' => $serials ]);
2019-05-29 19:17:57 +02:00
aggiorna_sedi_movimenti ( 'interventi' , $id_record );
2017-08-04 16:28:16 +02:00
break ;
case 'firma' :
2017-09-11 17:49:03 +02:00
if ( directory ( $docroot . '/files/interventi' )) {
2017-08-04 16:28:16 +02:00
if ( post ( 'firma_base64' ) != '' ) {
// Salvataggio firma
2018-02-10 11:16:35 +01:00
$firma_file = 'firma_' . time () . '.jpg' ;
2017-08-04 16:28:16 +02:00
$firma_nome = post ( 'firma_nome' );
$data = explode ( ',' , post ( 'firma_base64' ));
2019-01-12 13:09:10 +01:00
$img = Intervention\Image\ImageManagerStatic :: make ( base64_decode ( $data [ 1 ]));
2017-08-04 16:28:16 +02:00
$img -> resize ( 680 , 202 , function ( $constraint ) {
$constraint -> aspectRatio ();
});
if ( ! $img -> save ( $docroot . '/files/interventi/' . $firma_file )) {
2018-07-19 17:29:21 +02:00
flash () -> error ( tr ( 'Impossibile creare il file!' ));
2019-11-12 16:58:45 +01:00
} elseif ( $dbo -> query ( 'UPDATE in_interventi SET firma_file=' . prepare ( $firma_file ) . ', firma_data=NOW(), firma_nome = ' . prepare ( $firma_nome ) . ', idstatointervento = (SELECT idstatointervento FROM in_statiintervento WHERE codice = \'OK\') WHERE id=' . prepare ( $id_record ))) {
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Firma salvata correttamente!' ));
flash () -> info ( tr ( 'Attività completata!' ));
2018-09-20 11:39:03 +02:00
2019-11-12 16:58:45 +01:00
$stato = $dbo -> selectOne ( 'in_statiintervento' , '*' , [ 'codice' => 'OK' ]);
2018-09-20 11:39:03 +02:00
// Notifica chiusura intervento
if ( ! empty ( $stato [ 'notifica' ]) && ! empty ( $stato [ 'destinatari' ])) {
2019-08-29 10:25:14 +02:00
$template = Template :: find ( $stato [ 'id_email' ]);
2018-09-20 11:39:03 +02:00
2019-08-27 15:42:13 +02:00
$mail = Mail :: build ( auth () -> getUser (), $template , $id_record );
$mail -> addReceiver ( $stato [ 'destinatari' ]);
$mail -> save ();
2018-09-20 11:39:03 +02:00
}
2017-08-04 16:28:16 +02:00
} else {
2018-07-19 17:29:21 +02:00
flash () -> error ( tr ( 'Errore durante il salvataggio della firma nel database!' ));
2017-08-04 16:28:16 +02:00
}
} else {
2018-07-19 17:29:21 +02:00
flash () -> error ( tr ( 'Errore durante il salvataggio della firma!' ) . tr ( 'La firma risulta vuota' ) . '...' );
2017-08-04 16:28:16 +02:00
}
} else {
2018-07-19 17:29:21 +02:00
flash () -> error ( tr ( " Non è stato possibile creare la cartella _DIRECTORY_ per salvare l'immagine della firma! " , [
2017-09-10 14:35:41 +02:00
'_DIRECTORY_' => '<b>/files/interventi</b>' ,
2018-07-07 13:56:22 +02:00
]));
2017-08-04 16:28:16 +02:00
}
2018-10-30 11:39:45 +01:00
break ;
2018-11-01 12:39:54 +01:00
// OPERAZIONI PER AGGIUNTA NUOVA SESSIONE DI LAVORO
case 'add_sessione' :
$id_tecnico = post ( 'id_tecnico' );
2019-05-17 19:24:04 +02:00
$idcontratto = $intervento [ 'id_contratto' ];
2018-11-01 12:39:54 +01:00
$ore = 1 ;
$inizio = date ( 'Y-m-d H:\0\0' );
$fine = date_modify ( date_create ( date ( 'Y-m-d H:\0\0' )), '+' . $ore . ' hours' ) -> format ( 'Y-m-d H:\0\0' );
add_tecnico ( $id_record , $id_tecnico , $inizio , $fine , $idcontratto );
break ;
// RIMOZIONE SESSIONE DI LAVORO
case 'delete_sessione' :
$id_sessione = post ( 'id_sessione' );
$tecnico = $dbo -> fetchOne ( 'SELECT an_anagrafiche.email FROM an_anagrafiche INNER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE in_interventi_tecnici.id = ' . prepare ( $id_sessione ));
$dbo -> query ( 'DELETE FROM in_interventi_tecnici WHERE id=' . prepare ( $id_sessione ));
2019-02-07 18:27:15 +01:00
// Notifica rimozione dell' intervento al tecnico
2020-06-23 16:29:56 +02:00
if ( setting ( 'Notifica al tecnico la rimozione dall\'attività' )) {
2020-06-22 17:45:10 +02:00
if ( ! empty ( $tecnico [ 'email' ])) {
$template = Template :: get ( 'Notifica rimozione intervento' );
2020-06-30 13:26:15 +02:00
if ( ! empty ( $template )) {
2020-06-22 17:45:10 +02:00
$mail = Mail :: build ( auth () -> getUser (), $template , $id_record );
$mail -> addReceiver ( $tecnico [ 'email' ]);
$mail -> save ();
}
}
2018-11-01 12:39:54 +01:00
}
break ;
2018-10-30 11:39:45 +01:00
case 'edit_sessione' :
$id_sessione = post ( 'id_sessione' );
2019-07-15 12:27:12 +02:00
$sessione = Sessione :: find ( $id_sessione );
2018-11-01 12:39:54 +01:00
2019-07-15 12:27:12 +02:00
$sessione -> orario_inizio = post ( 'orario_inizio' );
$sessione -> orario_fine = post ( 'orario_fine' );
$sessione -> km = post ( 'km' );
2018-10-30 11:39:45 +01:00
2019-07-15 12:27:12 +02:00
$id_tipo = post ( 'idtipointerventot' );
$sessione -> setTipo ( $id_tipo );
2018-10-30 11:39:45 +01:00
2019-07-15 12:27:12 +02:00
// Prezzi
$sessione -> prezzo_ore_unitario = post ( 'prezzo_ore_unitario' );
$sessione -> prezzo_km_unitario = post ( 'prezzo_km_unitario' );
$sessione -> prezzo_dirittochiamata = post ( 'prezzo_dirittochiamata' );
2018-10-30 11:39:45 +01:00
2019-07-15 12:27:12 +02:00
// Sconto orario
$sessione -> sconto_unitario = post ( 'sconto' );
$sessione -> tipo_sconto = post ( 'tipo_sconto' );
2018-10-30 11:39:45 +01:00
2019-07-15 12:27:12 +02:00
// Sconto chilometrico
$sessione -> scontokm_unitario = post ( 'sconto_km' );
$sessione -> tipo_scontokm = post ( 'tipo_sconto_km' );
2018-10-30 11:39:45 +01:00
2019-07-15 12:27:12 +02:00
$sessione -> save ();
2018-11-01 12:39:54 +01:00
2017-08-04 16:28:16 +02:00
break ;
2020-06-08 11:59:40 +02:00
// Duplica intervento
case 'copy' :
$idstatointervento = post ( 'idstatointervento' );
$data_richiesta = post ( 'data_richiesta' );
$copia_sessioni = post ( 'sessioni' );
$copia_righe = post ( 'righe' );
$new = $intervento -> replicate ();
$new -> idstatointervento = $idstatointervento ;
2020-06-09 16:59:26 +02:00
2020-06-09 12:36:35 +02:00
//calcolo il nuovo codice
$new -> codice = Intervento :: getNextCodice ( $data_richiesta );
2020-06-09 16:59:26 +02:00
2020-06-08 11:59:40 +02:00
$new -> save ();
$id_record = $new -> id ;
$righe = $intervento -> getRighe ();
foreach ( $righe as $riga ) {
$new_riga = $riga -> replicate ();
$new_riga -> setParent ( $new );
//Copio le righe
2020-06-09 16:59:26 +02:00
if ( $copia_righe == 1 ) {
2020-06-08 11:59:40 +02:00
$righe = $intervento -> getRighe ();
foreach ( $righe as $riga ) {
$new_riga = $riga -> replicate ();
$new_riga -> setParent ( $new );
2020-06-09 16:59:26 +02:00
2020-06-08 11:59:40 +02:00
$new_riga -> qta_evasa = 0 ;
$new_riga -> save ();
}
}
}
$i = 0 ;
//Copio le sessioni
2020-06-09 16:59:26 +02:00
if ( $copia_sessioni == 1 ) {
2020-06-08 11:59:40 +02:00
$sessioni = $intervento -> sessioni ;
foreach ( $sessioni as $sessione ) {
//Se è la prima sessione che copio importo la data con quella della richiesta
2020-06-09 16:59:26 +02:00
if ( $i == 0 ) {
$orario_inizio = date ( 'Y-m-d' , strtotime ( $data_richiesta )) . ' ' . date ( 'H:i:s' , strtotime ( $sessione -> orario_inizio ));
} else {
2020-06-08 11:59:40 +02:00
$diff = strtotime ( $sessione -> orario_inizio ) - strtotime ( $inizio_old );
2020-06-09 16:59:26 +02:00
$orario_inizio = date ( 'Y-m-d H:i:s' , ( strtotime ( $orario_inizio ) + $diff ));
2020-06-08 11:59:40 +02:00
}
$diff_fine = strtotime ( $sessione -> orario_fine ) - strtotime ( $sessione -> orario_inizio );
2020-06-09 16:59:26 +02:00
$orario_fine = date ( 'Y-m-d H:i:s' , ( strtotime ( $orario_inizio ) + $diff_fine ));
2020-06-08 11:59:40 +02:00
$new_sessione = $sessione -> replicate ();
$new_sessione -> idintervento = $new -> id ;
2020-06-09 16:59:26 +02:00
2020-06-08 11:59:40 +02:00
$new_sessione -> orario_inizio = $orario_inizio ;
$new_sessione -> orario_fine = $orario_fine ;
$new_sessione -> save ();
2020-06-09 16:59:26 +02:00
++ $i ;
2020-06-08 11:59:40 +02:00
$inizio_old = $sessione -> orario_inizio ;
}
}
flash () -> info ( tr ( 'Attività duplicata correttamente!' ));
break ;
2017-08-04 16:28:16 +02:00
}