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 ;
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 ;
2018-12-29 12:03:22 +01:00
use Modules\Interventi\Intervento ;
2019-01-11 08:32:08 +01:00
use Modules\Interventi\Stato ;
use Modules\Interventi\TipoSessione ;
2018-08-29 18:06:51 +02:00
2017-08-04 16:28:16 +02:00
switch ( post ( 'op' )) {
case 'update' :
$idcontratto = post ( 'idcontratto' );
$idcontratto_riga = post ( 'idcontratto_riga' );
2019-02-14 09:52:42 +01:00
// Rimozione del collegamento al promemoria
if ( ! empty ( $idcontratto_riga ) && $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-02-27 13:04:05 +01:00
$intervento -> data_scadenza = post ( 'data_scadenza' );
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' );
$intervento -> idsede = post ( 'idsede' );
$intervento -> idautomezzo = post ( 'idautomezzo' );
$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' ]) {
2018-09-20 11:39:03 +02:00
$n = new Notifications\EmailNotification ();
2018-09-20 12:05:22 +02:00
$n -> setTemplate ( $stato [ 'id_email' ], $id_record );
2018-09-20 11:39:03 +02:00
$n -> setReceivers ( $stato [ 'destinatari' ]);
2018-11-23 16:08:23 +01:00
if ( $n -> send ()) {
flash () -> info ( tr ( 'Notifica inviata' ));
} else {
flash () -> warning ( tr ( " Errore nell'invio della notifica " ));
}
2018-09-20 11:39:03 +02:00
}
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-02-27 13:17:47 +01:00
$data_scadenza = post ( 'data_scadenza' );
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 ;
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' );
$idcontratto_riga = post ( 'idcontratto_riga' );
$idtipointervento = post ( 'idtipointervento' );
$idsede = post ( 'idsede' );
$richiesta = post ( 'richiesta' );
$idautomezzo = null ;
2019-01-11 08:32:08 +01:00
if ( post ( 'idclientefinale' )) {
$intervento -> idclientefinale = post ( 'idclientefinale' );
}
if ( post ( 'idsede' )) {
$intervento -> idsede = post ( 'idsede' );
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-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
2019-02-14 09:52:42 +01:00
// Se è specificato che l'intervento fa parte di una pianificazione aggiorno il codice dell'intervento sulla riga della pianificazione
if ( ! empty ( $idcontratto_riga )) {
$dbo -> update ( 'co_promemoria' , [
2018-05-23 11:38:46 +02:00
'idintervento' => $id_record ,
'idtipointervento' => $idtipointervento ,
'data_richiesta' => $data_richiesta ,
'richiesta' => $richiesta ,
'idsede' => $idsede ? : 0 ,
2019-02-14 09:52:42 +01:00
], [ 'idcontratto' => $idcontratto , 'id' => $idcontratto_riga ]);
//copio le righe dal promemoria all'intervento
$dbo -> query ( 'INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,' . $id_record . ',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = ' . $idcontratto_riga );
//copio gli articoli dal promemoria all'intervento
$dbo -> query ( 'INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, ' . $id_record . ',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = ' . $idcontratto_riga );
// Copia degli allegati
$alleagti = Uploads :: copy ([
'id_plugin' => Plugins :: get ( 'Pianificazione interventi' )[ 'id' ],
'id_record' => $idcontratto_riga ,
], [
'id_module' => $id_module ,
'id_record' => $id_record ,
]);
if ( ! $alleagti ) {
$errors = error_get_last ();
flash () -> warning ( tr ( 'Errore durante la copia degli allegati' ));
}
2018-09-20 09:21:34 +02:00
2019-02-14 09:52:42 +01:00
// Decremento la quantità per ogni articolo copiato
$rs_articoli = $dbo -> fetchArray ( 'SELECT * FROM mg_articoli_interventi WHERE idintervento = ' . $id_record . ' ' );
foreach ( $rs_articoli as $rs_articolo ) {
add_movimento_magazzino ( $rs_articolo [ 'idarticolo' ], - $rs_articolo [ 'qta' ], [ 'idautomezzo' => $rs_articolo [ 'idautomezzo' ], 'idintervento' => $id_record ]);
2018-09-20 09:21:34 +02:00
}
2017-08-04 16:28:16 +02:00
}
2018-09-20 09:21:34 +02:00
if ( ! empty ( post ( 'idordineservizio' ))) {
$dbo -> query ( 'UPDATE co_ordiniservizio SET idintervento=' . prepare ( $id_record ) . ' WHERE id=' . prepare ( post ( 'idordineservizio' )));
}
// 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' );
foreach ( $idtecnici as $idtecnico ) {
2018-09-20 09:21:34 +02:00
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
}
break ;
// Eliminazione intervento
case 'delete' :
// Elimino anche eventuali file caricati
2018-08-31 11:39:38 +02:00
Uploads :: deleteLinked ([
'id_module' => $id_module ,
'id_record' => $id_record ,
]);
2017-08-04 16:28:16 +02:00
2017-09-15 09:48:56 +02:00
$codice = $dbo -> fetchArray ( 'SELECT codice FROM in_interventi WHERE id=' . prepare ( $id_record ))[ 0 ][ 'codice' ];
2017-08-04 16:28:16 +02:00
/*
Riporto in magazzino gli articoli presenti nell ' intervento in cancellazine
*/
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idarticolo FROM mg_articoli_interventi WHERE idintervento=' . prepare ( $id_record );
$rs = $dbo -> fetchArray ( $q );
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$qta = $rs [ $i ][ 'qta' ];
$idautomezzo = $rs [ $i ][ 'idautomezzo' ];
$idarticolo = $rs [ $i ][ 'idarticolo' ];
add_movimento_magazzino ( $idarticolo , $qta , [ 'idautomezzo' => $idautomezzo , 'idintervento' => $id_record ]);
}
// Eliminazione associazioni tra interventi e contratti
2018-08-31 11:39:38 +02:00
$query = 'UPDATE co_promemoria SET idintervento = NULL WHERE idintervento=' . prepare ( $id_record );
2017-08-04 16:28:16 +02:00
$dbo -> query ( $query );
// Eliminazione dell'intervento
2019-02-01 17:44:31 +01:00
$query = 'DELETE FROM in_interventi WHERE id=' . prepare ( $id_record );
2017-08-04 16:28:16 +02:00
$dbo -> query ( $query );
// Elimino i collegamenti degli articoli a questo intervento
$dbo -> query ( 'DELETE FROM mg_articoli_interventi WHERE idintervento=' . prepare ( $id_record ));
// Elimino il collegamento al componente
$dbo -> query ( 'DELETE FROM my_impianto_componenti WHERE idintervento=' . prepare ( $id_record ));
// Eliminazione associazione tecnici collegati all'intervento
$query = 'DELETE FROM in_interventi_tecnici WHERE idintervento=' . prepare ( $id_record );
$dbo -> query ( $query );
// Eliminazione righe aggiuntive dell'intervento
$query = 'DELETE FROM in_righe_interventi WHERE idintervento=' . prepare ( $id_record );
$dbo -> query ( $query );
// Eliminazione associazione interventi e articoli
$query = 'DELETE FROM mg_articoli_interventi WHERE idintervento=' . prepare ( $id_record );
$dbo -> query ( $query );
// Eliminazione associazione interventi e my_impianti
$query = 'DELETE FROM my_impianti_interventi WHERE idintervento=' . prepare ( $id_record );
$dbo -> query ( $query );
// Eliminazione movimenti riguardanti l'intervento cancellato
$dbo -> query ( 'DELETE FROM mg_movimenti WHERE idintervento=' . prepare ( $id_record ));
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Intervento _NUM_ eliminato!' , [
2017-09-15 09:48:56 +02:00
'_NUM_' => " ' " . $codice . " ' " ,
2018-07-07 13:56:22 +02:00
]));
2017-08-04 16:28:16 +02:00
break ;
/*
Gestione righe generiche
*/
case 'addriga' :
$descrizione = post ( 'descrizione' );
$qta = post ( 'qta' );
$um = post ( 'um' );
2018-03-19 18:11:51 +01:00
$idiva = post ( 'idiva' );
2017-08-04 16:28:16 +02:00
$prezzo_vendita = post ( 'prezzo_vendita' );
$prezzo_acquisto = post ( 'prezzo_acquisto' );
2018-07-19 15:33:32 +02:00
$sconto_unitario = post ( 'sconto' );
$tipo_sconto = post ( 'tipo_sconto' );
2018-07-13 18:32:05 +02:00
$sconto = calcola_sconto ([
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo_vendita ,
'tipo' => $tipo_sconto ,
'qta' => $qta ,
]);
2018-03-24 14:24:17 +01:00
2018-03-19 18:11:51 +01:00
//Calcolo iva
2018-03-24 14:24:17 +01:00
$rs_iva = $dbo -> fetchArray ( 'SELECT * FROM co_iva WHERE id=' . prepare ( $idiva ));
2018-03-19 18:11:51 +01:00
$desc_iva = $rs_iva [ 0 ][ 'descrizione' ];
2018-03-24 14:24:17 +01:00
$iva = (( $prezzo_vendita * $qta ) - $sconto ) * $rs_iva [ 0 ][ 'percentuale' ] / 100 ;
2017-08-04 16:28:16 +02:00
2018-03-19 18:11:51 +01:00
$dbo -> query ( 'INSERT INTO in_righe_interventi(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto, idintervento) VALUES (' . prepare ( $descrizione ) . ', ' . prepare ( $qta ) . ', ' . prepare ( $um ) . ', ' . prepare ( $prezzo_vendita ) . ', ' . prepare ( $prezzo_acquisto ) . ', ' . prepare ( $idiva ) . ', ' . prepare ( $desc_iva ) . ', ' . prepare ( $iva ) . ', ' . prepare ( $sconto ) . ', ' . prepare ( $sconto_unitario ) . ', ' . prepare ( $tipo_sconto ) . ', ' . prepare ( $id_record ) . ')' );
2017-08-04 16:28:16 +02:00
break ;
2019-04-29 11:59:40 +02:00
case 'manage_riga' :
2017-08-04 16:28:16 +02:00
$idriga = post ( 'idriga' );
$descrizione = post ( 'descrizione' );
$qta = post ( 'qta' );
$um = post ( 'um' );
2018-03-19 18:11:51 +01:00
$idiva = post ( 'idiva' );
2019-04-29 11:59:40 +02:00
$prezzo_vendita = post ( 'prezzo' );
2017-08-04 16:28:16 +02:00
$prezzo_acquisto = post ( 'prezzo_acquisto' );
2018-07-19 15:33:32 +02:00
$sconto_unitario = post ( 'sconto' );
$tipo_sconto = post ( 'tipo_sconto' );
2018-07-13 18:32:05 +02:00
$sconto = calcola_sconto ([
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo_vendita ,
'tipo' => $tipo_sconto ,
'qta' => $qta ,
]);
2018-03-24 14:24:17 +01:00
2018-03-19 18:11:51 +01:00
//Calcolo iva
2018-03-24 14:24:17 +01:00
$rs_iva = $dbo -> fetchArray ( 'SELECT * FROM co_iva WHERE id=' . prepare ( $idiva ));
2018-03-19 18:11:51 +01:00
$desc_iva = $rs_iva [ 0 ][ 'descrizione' ];
2018-03-24 14:24:17 +01:00
$iva = (( $prezzo_vendita * $qta ) - $sconto ) * $rs_iva [ 0 ][ 'percentuale' ] / 100 ;
2017-08-04 16:28:16 +02:00
$dbo -> query ( 'UPDATE in_righe_interventi SET ' .
' descrizione=' . prepare ( $descrizione ) . ',' .
' qta=' . prepare ( $qta ) . ',' .
' um=' . prepare ( $um ) . ',' .
' prezzo_vendita=' . prepare ( $prezzo_vendita ) . ',' .
' prezzo_acquisto=' . prepare ( $prezzo_acquisto ) . ',' .
2018-03-19 18:11:51 +01:00
' idiva=' . prepare ( $idiva ) . ',' .
' desc_iva=' . prepare ( $desc_iva ) . ',' .
' iva=' . prepare ( $iva ) . ',' .
2017-08-04 16:28:16 +02:00
' sconto=' . prepare ( $sconto ) . ',' .
' sconto_unitario=' . prepare ( $sconto_unitario ) . ',' .
' tipo_sconto=' . prepare ( $tipo_sconto ) .
' WHERE id=' . prepare ( $idriga ));
break ;
case 'delriga' :
$idriga = post ( 'idriga' );
2019-02-01 17:44:31 +01:00
$dbo -> query ( 'DELETE FROM in_righe_interventi WHERE id=' . prepare ( $idriga ));
2017-08-04 16:28:16 +02:00
break ;
2019-03-29 12:46:17 +01:00
case 'manage_sconto' :
if ( post ( 'idriga' ) != null ) {
$sconto = Riga :: find ( post ( 'idriga' ));
} else {
$sconto = Riga :: build ( $intervento );
}
$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 {
flash () -> info ( tr ( 'Sconto/maggiorazione aggiunta!' ));
}
break ;
2017-08-04 16:28:16 +02:00
/*
GESTIONE ARTICOLI
*/
case 'editarticolo' :
$idriga = post ( 'idriga' );
$idarticolo = post ( 'idarticolo' );
$idimpianto = post ( 'idimpianto' );
$idautomezzo = post ( 'idautomezzo' );
$idarticolo_originale = post ( 'idarticolo_originale' );
// Leggo la quantità attuale nell'intervento
2017-09-05 18:20:02 +02:00
$q = 'SELECT qta, idautomezzo, idimpianto FROM mg_articoli_interventi WHERE idarticolo=' . prepare ( $idarticolo_originale ) . ' AND idintervento=' . prepare ( $id_record );
2017-08-04 16:28:16 +02:00
$rs = $dbo -> fetchArray ( $q );
2017-09-05 18:20:02 +02:00
$old_qta = $rs [ 0 ][ 'qta' ];
2017-08-04 16:28:16 +02:00
$idimpianto = $rs [ 0 ][ 'idimpianto' ];
$idautomezzo = $rs [ 0 ][ 'idautomezzo' ];
2017-09-05 18:20:02 +02:00
$serials = array_column ( $dbo -> select ( 'mg_prodotti' , 'serial' , [ 'id_riga_intervento' => $idriga ]), 'serial' );
2017-08-04 16:28:16 +02:00
2017-09-05 18:20:02 +02:00
add_movimento_magazzino ( $idarticolo_originale , $old_qta , [ 'idautomezzo' => $idautomezzo , 'idintervento' => $id_record ]);
2017-08-04 16:28:16 +02:00
// Elimino questo articolo dall'intervento
2017-09-05 17:31:58 +02:00
$dbo -> query ( 'DELETE FROM mg_articoli_interventi WHERE id=' . prepare ( $idriga ));
2017-08-04 16:28:16 +02:00
// Elimino il collegamento al componente
$dbo -> query ( 'DELETE FROM my_impianto_componenti WHERE idimpianto=' . prepare ( $idimpianto ) . ' AND idintervento=' . prepare ( $id_record ));
/* Ricollego l'articolo modificato all'intervento */
/* ci può essere il caso in cui cambio idarticolo e anche qta */
2017-09-10 14:35:41 +02:00
// no break
2017-08-04 16:28:16 +02:00
case 'addarticolo' :
2018-09-25 16:47:44 +02:00
$originale = ArticoloOriginale :: find ( post ( 'idarticolo' ));
$intervento = Intervento :: find ( $id_record );
2019-01-02 14:15:16 +01:00
$articolo = Articolo :: build ( $intervento , $originale , post ( 'idautomezzo' ));
2018-09-25 16:47:44 +02:00
$articolo -> qta = post ( 'qta' );
$articolo -> descrizione = post ( 'descrizione' );
2018-11-21 17:45:06 +01:00
$articolo -> prezzo_unitario_vendita = post ( 'prezzo_vendita' );
2018-09-28 16:43:40 +02:00
$articolo -> prezzo_acquisto = post ( 'prezzo_acquisto' );
2018-09-25 16:47:44 +02:00
$articolo -> um = post ( 'um' );
$articolo -> sconto_unitario = post ( 'sconto' );
$articolo -> tipo_sconto = post ( 'tipo_sconto' );
2018-11-21 17:45:06 +01:00
$articolo -> id_iva = post ( 'idiva' );
2018-09-25 11:55:52 +02:00
$articolo -> save ();
2017-08-04 16:28:16 +02:00
// Aggiorno l'automezzo dell'intervento
2019-02-01 17:44:31 +01:00
$dbo -> query ( 'UPDATE in_interventi SET idautomezzo=' . prepare ( post ( 'idautomezzo' )) . ' WHERE id=' . prepare ( $id_record ));
2017-09-05 18:20:02 +02:00
if ( ! empty ( $serials )) {
if ( $old_qta > $qta ) {
$serials = array_slice ( $serials , 0 , $qta );
}
2018-10-04 17:25:42 +02:00
$articolo -> serials = $serials ;
2017-08-04 16:28:16 +02:00
}
link_componente_to_articolo ( $id_record , $idimpianto , $idarticolo , $qta );
break ;
case 'unlink_articolo' :
$idriga = post ( 'idriga' );
$idarticolo = post ( 'idarticolo' );
// Riporto la merce nel magazzino
if ( ! empty ( $idriga ) && ! empty ( $id_record )) {
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idarticolo, idimpianto FROM mg_articoli_interventi WHERE id=' . prepare ( $idriga );
$rs = $dbo -> fetchArray ( $q );
$qta = $rs [ 0 ][ 'qta' ];
$idarticolo = $rs [ 0 ][ 'idarticolo' ];
$idimpianto = $rs [ 0 ][ 'idimpianto' ];
$idautomezzo = $rs [ 0 ][ 'idautomezzo' ];
add_movimento_magazzino ( $idarticolo , $qta , [ 'idautomezzo' => $idautomezzo , 'idintervento' => $id_record ]);
// Elimino questo articolo dall'intervento
2017-09-05 17:31:58 +02:00
$dbo -> query ( 'DELETE FROM mg_articoli_interventi WHERE id=' . prepare ( $idriga ) . ' AND idintervento=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
// Elimino il collegamento al componente
$dbo -> query ( 'DELETE FROM my_impianto_componenti WHERE idimpianto=' . prepare ( $idimpianto ) . ' AND idintervento=' . prepare ( $id_record ));
2017-09-06 10:48:59 +02:00
// Elimino i seriali utilizzati dalla riga
$dbo -> query ( 'DELETE FROM `mg_prodotti` WHERE id_articolo = ' . prepare ( $idarticolo ) . ' AND id_riga_intervento = ' . prepare ( $id_record ));
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 ]);
2017-09-05 17:31:58 +02:00
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!' ));
2018-02-16 15:45:15 +01:00
} elseif ( $dbo -> query ( 'UPDATE in_interventi SET firma_file=' . prepare ( $firma_file ) . ', firma_data=NOW(), firma_nome = ' . prepare ( $firma_nome ) . ', idstatointervento = "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
$stato = $dbo -> selectOne ( 'in_statiintervento' , '*' , [ 'idstatointervento' => 'OK' ]);
// Notifica chiusura intervento
if ( ! empty ( $stato [ 'notifica' ]) && ! empty ( $stato [ 'destinatari' ])) {
$n = new Notifications\EmailNotification ();
2018-09-20 12:05:22 +02:00
$n -> setTemplate ( $stato [ 'id_email' ], $id_record );
2018-09-20 11:39:03 +02:00
$n -> setReceivers ( $stato [ 'destinatari' ]);
2018-11-23 16:08:23 +01:00
if ( $n -> send ()) {
flash () -> info ( tr ( 'Notifica inviata' ));
} else {
flash () -> warning ( tr ( " Errore nell'invio della notifica " ));
}
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' );
// Verifico se l'intervento è collegato ad un contratto
2019-02-14 09:52:42 +01:00
// TODO: utilizzare campo id_contratto in in_interventi come avviene già per i preventivi (id_preventivo) dalla 2.4.2
2018-11-01 12:39:54 +01:00
$rs = $dbo -> fetchArray ( 'SELECT idcontratto FROM co_promemoria WHERE idintervento=' . prepare ( $id_record ));
$idcontratto = $rs [ 0 ][ 'idcontratto' ];
$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
2018-11-01 12:39:54 +01:00
if ( ! empty ( $tecnico [ 'email' ])) {
$n = new Notifications\EmailNotification ();
$n -> setTemplate ( 'Notifica rimozione intervento' , $id_record );
$n -> setReceivers ( $tecnico [ 'email' ]);
2018-11-23 16:08:23 +01:00
if ( $n -> send ()) {
flash () -> info ( tr ( 'Notifica inviata' ));
} else {
flash () -> warning ( tr ( " Errore nell'invio della notifica " ));
}
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' );
2018-11-01 12:39:54 +01:00
2018-10-30 11:39:45 +01:00
// Lettura delle date di inizio e fine intervento
$orario_inizio = post ( 'orario_inizio' );
$orario_fine = post ( 'orario_fine' );
// Ricalcolo le ore lavorate
$ore = calcola_ore_intervento ( $orario_inizio , $orario_fine );
$km = post ( 'km' );
// Lettura tariffe in base al tipo di intervento ed al tecnico
$idtipointervento_tecnico = post ( 'idtipointerventot' );
$rs = $dbo -> fetchArray ( 'SELECT * FROM in_interventi_tecnici WHERE idtecnico=' . prepare ( post ( 'idtecnico' )) . ' AND idintervento=' . prepare ( $id_record ));
if ( $idtipointervento_tecnico != $rs [ 0 ][ 'idtipointervento' ]) {
$rsc = $dbo -> fetchArray ( 'SELECT * FROM in_tariffe WHERE idtecnico=' . prepare ( post ( 'idtecnico' )) . ' AND idtipointervento=' . prepare ( $idtipointervento_tecnico ));
if ( $rsc [ 0 ][ 'costo_ore' ] != 0 || $rsc [ 0 ][ 'costo_km' ] != 0 || $rsc [ 0 ][ 'costo_dirittochiamata' ] != 0 || $rsc [ 0 ][ 'costo_ore_tecnico' ] != 0 || $rsc [ 0 ][ 'costo_km_tecnico' ] != 0 || $rsc [ 0 ][ 'costo_dirittochiamata_tecnico' ] != 0 ) {
$prezzo_ore_unitario = $rsc [ 0 ][ 'costo_ore' ];
$prezzo_km_unitario = $rsc [ 0 ][ 'costo_km' ];
$prezzo_dirittochiamata = $rsc [ 0 ][ 'costo_dirittochiamata' ];
$prezzo_ore_unitario_tecnico = $rsc [ 0 ][ 'costo_ore_tecnico' ];
$prezzo_km_unitario_tecnico = $rsc [ 0 ][ 'costo_km_tecnico' ];
$prezzo_dirittochiamata_tecnico = $rsc [ 0 ][ 'costo_dirittochiamata_tecnico' ];
}
// ...altrimenti se non c'è una tariffa per il tecnico leggo i costi globali
else {
$rsc = $dbo -> fetchArray ( 'SELECT * FROM in_tipiintervento WHERE idtipointervento=' . prepare ( $idtipointervento_tecnico ));
$prezzo_ore_unitario = $rsc [ 0 ][ 'costo_orario' ];
$prezzo_km_unitario = $rsc [ 0 ][ 'costo_km' ];
$prezzo_dirittochiamata = $rsc [ 0 ][ 'costo_diritto_chiamata' ];
$prezzo_ore_unitario_tecnico = $rsc [ 0 ][ 'costo_orario_tecnico' ];
$prezzo_km_unitario_tecnico = $rsc [ 0 ][ 'costo_km_tecnico' ];
$prezzo_dirittochiamata_tecnico = $rsc [ 0 ][ 'costo_diritto_chiamata_tecnico' ];
}
} else {
$prezzo_ore_unitario = $rs [ 0 ][ 'prezzo_ore_unitario' ];
$prezzo_km_unitario = $rs [ 0 ][ 'prezzo_km_unitario' ];
$prezzo_dirittochiamata = $rs [ 0 ][ 'prezzo_dirittochiamata' ];
$prezzo_ore_unitario_tecnico = $rs [ 0 ][ 'prezzo_ore_unitario_tecnico' ];
$prezzo_km_unitario_tecnico = $rs [ 0 ][ 'prezzo_km_unitario_tecnico' ];
$prezzo_dirittochiamata_tecnico = $rs [ 0 ][ 'prezzo_dirittochiamata_tecnico' ];
}
// Totali
$prezzo_ore_consuntivo = $prezzo_ore_unitario * $ore ;
$prezzo_km_consuntivo = $prezzo_km_unitario * $km ;
$prezzo_ore_consuntivo_tecnico = $prezzo_ore_unitario_tecnico * $ore ;
$prezzo_km_consuntivo_tecnico = $prezzo_km_unitario_tecnico * $km ;
2019-04-18 12:02:05 +02:00
// Sconti ore
2018-10-30 11:39:45 +01:00
$sconto_unitario = post ( 'sconto' );
$tipo_sconto = post ( 'tipo_sconto' );
2019-04-19 01:39:58 +02:00
if ( $tipo_sconto == 'UNT' ) {
2019-04-18 12:02:05 +02:00
$sconto = $sconto_unitario * $ore ;
} else {
$sconto = calcola_sconto ([
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo_ore_consuntivo ,
'tipo' => $tipo_sconto ,
]);
}
// Sconti km
2018-10-30 11:39:45 +01:00
$scontokm_unitario = post ( 'sconto_km' );
2018-12-05 11:38:36 +01:00
$tipo_scontokm = post ( 'tipo_sconto_km' );
2019-04-19 01:39:58 +02:00
if ( $tipo_scontokm == 'UNT' ) {
2019-04-18 12:02:05 +02:00
$scontokm = $scontokm_unitario * $km ;
} else {
$scontokm = calcola_sconto ([
'sconto' => $scontokm_unitario ,
'prezzo' => $prezzo_km_consuntivo ,
'tipo' => $tipo_scontokm ,
]);
}
2018-10-30 11:39:45 +01:00
$dbo -> update ( 'in_interventi_tecnici' , [
'idtipointervento' => $idtipointervento_tecnico ,
'orario_inizio' => $orario_inizio ,
'orario_fine' => $orario_fine ,
'ore' => $ore ,
'km' => $km ,
'prezzo_ore_unitario' => $prezzo_ore_unitario ,
'prezzo_km_unitario' => $prezzo_km_unitario ,
'prezzo_dirittochiamata' => $prezzo_dirittochiamata ,
'prezzo_ore_unitario_tecnico' => $prezzo_ore_unitario_tecnico ,
'prezzo_km_unitario_tecnico' => $prezzo_km_unitario_tecnico ,
'prezzo_dirittochiamata_tecnico' => $prezzo_dirittochiamata_tecnico ,
'prezzo_ore_consuntivo' => $prezzo_ore_consuntivo ,
'prezzo_km_consuntivo' => $prezzo_km_consuntivo ,
'prezzo_ore_consuntivo_tecnico' => $prezzo_ore_consuntivo_tecnico ,
'prezzo_km_consuntivo_tecnico' => $prezzo_km_consuntivo_tecnico ,
'sconto' => $sconto ,
'sconto_unitario' => $sconto_unitario ,
'tipo_sconto' => $tipo_sconto ,
'scontokm' => $scontokm ,
'scontokm_unitario' => $scontokm_unitario ,
'tipo_scontokm' => $tipo_scontokm ,
], [ 'id' => $id_sessione ]);
2018-11-01 12:39:54 +01:00
2017-08-04 16:28:16 +02:00
break ;
}