2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
include_once $docroot . '/modules/interventi/modutil.php' ;
include_once $docroot . '/modules/articoli/modutil.php' ;
include_once $docroot . '/modules/my_impianti/modutil.php' ;
switch ( post ( 'op' )) {
case 'update' :
$idpreventivo = post ( 'idpreventivo' );
$idcontratto = post ( 'idcontratto' );
$idcontratto_riga = post ( 'idcontratto_riga' );
$idtipointervento = post ( 'idtipointervento' );
$data_richiesta = post ( 'data_richiesta' );
$richiesta = post ( 'richiesta' );
$idsede = post ( 'idsede' );
/*
Collegamento intervento a preventivo ( se impostato )
*/
// Elimino il collegamento attuale
$dbo -> query ( 'DELETE FROM co_preventivi_interventi WHERE idintervento=' . prepare ( $id_record ));
if ( ! empty ( $idpreventivo )) {
$dbo -> insert ( 'co_preventivi_interventi' , [
'idintervento' => $id_record ,
'idpreventivo' => $idpreventivo ,
]);
}
/*
2017-10-19 18:18:01 +02:00
Collegamento intervento a contratto ( se impostato ) .
Oltre al collegamento al contratto , l ' intervento è collegato ad una riga di pianificazione , perciò è importante considerarla se è impostata
2017-08-04 16:28:16 +02:00
*/
$array = [
'idintervento' => $id_record ,
'idtipointervento' => $idtipointervento ,
'data_richiesta' => $data_richiesta ,
'richiesta' => $richiesta ,
'idsede' => $idsede ? : 0 ,
];
// Creazione nuova pianificazione se non era impostata
if ( ! empty ( $idcontratto ) && empty ( $idcontratto_riga )) {
// Se questo intervento era collegato ad un altro contratto aggiorno le informazioni...
$rs = $dbo -> fetchArray ( 'SELECT id FROM co_righe_contratti WHERE idintervento=' . prepare ( $id_record ));
if ( empty ( $rs )) {
$dbo -> insert ( 'co_righe_contratti' , array_merge ([ 'idcontratto' => $idcontratto ], $array ));
}
// ...altrimenti se sto cambiando contratto aggiorno solo l'id del nuovo contratto
else {
$dbo -> update ( 'co_righe_contratti' , [ 'idcontratto' => $idcontratto ], [ 'idintervento' => $id_record ]);
}
}
// Pianificazione già impostata, aggiorno solo il codice intervento
elseif ( ! empty ( $idcontratto ) && ! empty ( $idcontratto_riga )) {
$dbo -> update ( 'co_righe_contratti' , $array , [ 'idcontratto' => $idriga , 'id' => $idcontratto_riga ]);
}
// Se non è impostato nessun contratto o riga, tolgo il collegamento dell'intervento al contratto
elseif ( empty ( $idcontratto )) {
$dbo -> update ( 'co_righe_contratti' , [ 'idintervento' => null ], [ 'idintervento' => $id_record ]);
}
// Aggiorna tutte le sessioni di lavoro
$lista = ( array ) post ( 'id_' );
// Limitazione delle azioni dei tecnici
if ( $user [ 'gruppo' ] == 'Tecnici' ) {
$lista = get_var ( 'Mostra i prezzi al tecnico' ) && ! empty ( $user [ 'idanagrafica' ]) ? [ $user [ 'idanagrafica' ]] : [];
}
foreach ( $lista as $idriga ) {
2017-09-01 18:13:25 +02:00
// Lettura delle date di inizio e fine intervento
$orario_inizio = post ( 'orario_inizio' )[ $idriga ];
$orario_fine = post ( 'orario_fine' )[ $idriga ];
2017-08-04 16:28:16 +02:00
$km = post ( 'km' )[ $idriga ];
$ore = post ( 'ore' )[ $idriga ];
// Lettura tariffe in base al tipo di intervento ed al tecnico
$idtipointervento_tecnico = $post [ 'idtipointerventot' ][ $idriga ];
$rs = $dbo -> fetchArray ( 'SELECT * FROM in_interventi_tecnici WHERE idtecnico=' . prepare ( $post [ 'idtecnico' ][ $idriga ]) . ' AND idintervento=' . prepare ( $id_record ));
if ( $idtipointervento_tecnico != $rs [ 0 ][ 'idtipointervento' ]) {
2017-09-21 10:01:07 +02:00
$rsc = $dbo -> fetchArray ( 'SELECT * FROM in_tariffe WHERE idtecnico=' . prepare ( $post [ 'idtecnico' ][ $idriga ]) . ' 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' ];
}
2017-08-04 16:28:16 +02:00
} 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_dirittochiamata ;
$prezzo_km_consuntivo = $prezzo_km_unitario * $km ;
$prezzo_ore_consuntivo_tecnico = $prezzo_ore_unitario_tecnico * $ore + $prezzo_dirittochiamata_tecnico ;
$prezzo_km_consuntivo_tecnico = $prezzo_km_unitario_tecnico * $km ;
// Sconti
$sconto_unitario = post ( 'sconto' )[ $idriga ];
$tipo_sconto = post ( 'tipo_sconto' )[ $idriga ];
$sconto = ( $tipo_sconto == 'PRC' ) ? ( $prezzo_ore_consuntivo * $sconto_unitario ) / 100 : $sconto_unitario ;
$scontokm_unitario = post ( 'scontokm' )[ $idriga ];
$tipo_scontokm = post ( 'tipo_scontokm' )[ $idriga ];
2017-11-21 17:46:50 +01:00
$scontokm = ( $tipo_scontokm == 'PRC' ) ? ( $prezzo_km_consuntivo * $scontokm_unitario ) / 100 : $scontokm_unitario ;
2017-08-04 16:28:16 +02:00
$dbo -> update ( 'in_interventi_tecnici' , [
'idintervento' => $id_record ,
'idtipointervento' => $idtipointervento_tecnico ,
'idtecnico' => post ( 'idtecnico' )[ $idriga ],
'orario_inizio' => $orario_inizio ,
'orario_fine' => $orario_fine ,
'ore' => $ore ,
'km' => $km ,
'prezzo_ore_unitario' => $prezzo_ore_unitario ,
2017-09-14 16:20:11 +02:00
'prezzo_km_unitario' => $prezzo_km_unitario ,
2017-08-04 16:28:16 +02:00
'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' => $idriga ]);
}
$tipo_sconto = $post [ 'tipo_sconto_globale' ];
$sconto = $post [ 'sconto_globale' ];
// Salvataggio modifiche intervento
$dbo -> update ( 'in_interventi' , [
'data_richiesta' => $data_richiesta ,
'richiesta' => $richiesta ,
'descrizione' => post ( 'descrizione' ),
'informazioniaggiuntive' => post ( 'informazioniaggiuntive' ),
'idanagrafica' => post ( 'idanagrafica' ),
'idclientefinale' => post ( 'idclientefinale' ),
'idreferente' => post ( 'idreferente' ),
'idtipointervento' => $idtipointervento ,
'idstatointervento' => post ( 'idstatointervento' ),
'idsede' => $idsede ,
'idautomezzo' => post ( 'idautomezzo' ),
'sconto_globale' => $sconto ,
'tipo_sconto_globale' => $tipo_sconto ,
], [ 'id' => $id_record ]);
2017-09-04 12:02:29 +02:00
$_SESSION [ 'infos' ][] = tr ( 'Informazioni salvate correttamente!' );
2017-08-04 16:28:16 +02:00
break ;
case 'add' :
2017-09-01 12:55:48 +02:00
/*
2017-08-04 16:28:16 +02:00
$codice = post ( 'codice' );
// Controlli sul codice
$count = - 1 ;
do {
$new_codice = ( $count < 0 ) ? $codice : get_next_code ( $codice , 1 , get_var ( 'Formato codice intervento' ));
$rs = $dbo -> fetchArray ( 'SELECT codice FROM in_interventi WHERE codice=' . prepare ( $new_codice ));
++ $count ;
} while ( ! empty ( $rs ) || empty ( $new_codice ));
if ( $count > 0 ) {
2017-09-10 14:35:41 +02:00
$_SESSION [ 'warnings' ][] = tr ( 'Numero intervento _NUM_ saltato perchè già esistente!' , [
'_NUM_' => " ' " . $codice . " ' "
]);
$_SESSION [ 'warnings' ][] = tr ( 'Nuovo numero intervento calcolato _NUM_' , [
'_NUM_' => " ' " . $new_codice . " ' "
]);
2017-08-04 16:28:16 +02:00
}
2017-09-01 12:55:48 +02:00
*/
$formato = get_var ( 'Formato codice intervento' );
2018-01-08 17:14:59 +01:00
$template = str_replace ( '#' , '%' , $formato );
2017-08-04 16:28:16 +02:00
2018-01-08 17:14:59 +01:00
$rs = $dbo -> fetchArray ( 'SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE ' . prepare ( $template ) . ' ORDER BY codice DESC LIMIT 0,1' );
2017-09-01 12:55:48 +02:00
$codice = get_next_code ( $rs [ 0 ][ 'codice' ], 1 , $formato );
2017-08-04 16:28:16 +02:00
2018-01-08 17:14:59 +01:00
if ( empty ( $codice )) {
$rs = $dbo -> fetchArray ( 'SELECT codice FROM in_interventi WHERE codice LIKE ' . prepare ( $template ) . ' ORDER BY codice DESC LIMIT 0,1' );
$codice = get_next_code ( $rs [ 0 ][ 'codice' ], 1 , $formato );
}
2017-08-04 16:28:16 +02:00
// Informazioni di base
$idpreventivo = post ( 'idpreventivo' );
$idcontratto = post ( 'idcontratto' );
$idcontratto_riga = post ( 'idcontratto_riga' );
$idtipointervento = post ( 'idtipointervento' );
$idsede = post ( 'idsede' );
$data_richiesta = post ( 'data_richiesta' );
$richiesta = post ( 'richiesta' );
if ( ! empty ( $codice ) && ! empty ( $post [ 'idanagrafica' ]) && ! empty ( $post [ 'idtipointervento' ])) {
// Salvataggio modifiche intervento
$dbo -> insert ( 'in_interventi' , [
'idanagrafica' => post ( 'idanagrafica' ),
'idclientefinale' => post ( 'idclientefinale' ) ? : 0 ,
'idstatointervento' => post ( 'idstatointervento' ),
'idtipointervento' => $idtipointervento ,
'idsede' => $idsede ? : 0 ,
'idautomezzo' => $idautomezzo ? : 0 ,
'codice' => $codice ,
'data_richiesta' => $data_richiesta ,
'richiesta' => $richiesta ,
]);
$id_record = $dbo -> lastInsertedID ();
2017-09-04 12:02:29 +02:00
$_SESSION [ 'infos' ][] = tr ( 'Aggiunto nuovo intervento!' );
2017-08-04 16:28:16 +02:00
}
// Collego l'intervento al preventivo
if ( ! empty ( $idpreventivo )) {
$dbo -> insert ( 'co_preventivi_interventi' , [
'idintervento' => $id_record ,
'idpreventivo' => $idpreventivo ,
]);
}
// Collego l'intervento al contratto
if ( ! empty ( $idcontratto )) {
$array = [
'idintervento' => $id_record ,
'idtipointervento' => $idtipointervento ,
'data_richiesta' => $data_richiesta ,
'richiesta' => $richiesta ,
'idsede' => $idsede ? : 0 ,
];
// 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_righe_contratti' , $array , [ 'idcontratto' => $idcontratto , 'id' => $idcontratto_riga ]);
}
// Altrimenti inserisco una nuova pianificazione e collego l'intervento
else {
$dbo -> insert ( 'co_righe_contratti' , array_merge ([ 'idcontratto' => $idcontratto ], $array ));
}
}
if ( ! empty ( $post [ 'idordineservizio' ])) {
$dbo -> query ( 'UPDATE co_ordiniservizio SET idintervento=' . prepare ( $id_record ) . ' WHERE id=' . prepare ( $post [ 'idordineservizio' ]));
}
// Collegamenti tecnici/interventi
$idtecnici = post ( 'idtecnico' );
$data = post ( 'data' );
foreach ( $idtecnici as $idtecnico ) {
add_tecnico ( $id_record , $idtecnico , $data . ' ' . post ( 'orario_inizio' ), $data . ' ' . post ( 'orario_fine' ), $idcontratto );
}
// 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 ,
]);
}
}
if ( post ( 'ref' ) == 'dashboard' ) {
$_SESSION [ 'infos' ] = [];
$_SESSION [ 'warnings' ] = [];
}
break ;
// Eliminazione intervento
case 'delete' :
// Elimino anche eventuali file caricati
$rs = $dbo -> fetchArray ( 'SELECT filename FROM zz_files WHERE id_module=' . prepare ( $id_module ) . ' AND id=' . prepare ( $id_record ));
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
2017-09-11 17:49:03 +02:00
delete ( $docroot . '/files/interventi/' . $rs [ $i ][ 'filename' ]);
2017-08-04 16:28:16 +02:00
}
$dbo -> query ( 'DELETE FROM zz_files WHERE id_module=' . prepare ( $id_module ) . ' AND id=' . prepare ( $id_record ));
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
$query = 'UPDATE co_righe_contratti SET idintervento = NULL WHERE idintervento=' . prepare ( $id_record );
$dbo -> query ( $query );
// Eliminazione dell'intervento
$query = 'DELETE FROM in_interventi WHERE id=' . prepare ( $id_record ) . ' ' . Modules :: getAdditionalsQuery ( $id_module );
$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 associazioni tra interventi e preventivi
$query = 'DELETE FROM co_preventivi_interventi 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 ));
2017-09-10 14:35:41 +02:00
$_SESSION [ 'infos' ][] = tr ( 'Intervento _NUM_ eliminato!' , [
2017-09-15 09:48:56 +02:00
'_NUM_' => " ' " . $codice . " ' " ,
2017-09-10 14:35:41 +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' );
$prezzo_vendita = post ( 'prezzo_vendita' );
$prezzo_acquisto = post ( 'prezzo_acquisto' );
$sconto_unitario = $post [ 'sconto' ];
$tipo_sconto = $post [ 'tipo_sconto' ];
$sconto = ( $tipo_sconto == 'PRC' ) ? ( $prezzo_vendita * $sconto_unitario ) / 100 : $sconto_unitario ;
$sconto = $sconto * $qta ;
$dbo -> query ( 'INSERT INTO in_righe_interventi(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idintervento) VALUES (' . prepare ( $descrizione ) . ', ' . prepare ( $qta ) . ', ' . prepare ( $um ) . ', ' . prepare ( $prezzo_vendita ) . ', ' . prepare ( $prezzo_acquisto ) . ', ' . prepare ( $sconto ) . ', ' . prepare ( $sconto_unitario ) . ', ' . prepare ( $tipo_sconto ) . ', ' . prepare ( $id_record ) . ')' );
break ;
case 'editriga' :
$idriga = post ( 'idriga' );
$descrizione = post ( 'descrizione' );
$qta = post ( 'qta' );
$um = post ( 'um' );
$prezzo_vendita = post ( 'prezzo_vendita' );
$prezzo_acquisto = post ( 'prezzo_acquisto' );
$sconto_unitario = $post [ 'sconto' ];
$tipo_sconto = $post [ 'tipo_sconto' ];
$sconto = ( $tipo_sconto == 'PRC' ) ? ( $prezzo_vendita * $sconto_unitario ) / 100 : $sconto_unitario ;
$sconto = $sconto * $qta ;
$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 ) . ',' .
' sconto=' . prepare ( $sconto ) . ',' .
' sconto_unitario=' . prepare ( $sconto_unitario ) . ',' .
' tipo_sconto=' . prepare ( $tipo_sconto ) .
' WHERE id=' . prepare ( $idriga ));
break ;
case 'delriga' :
$idriga = post ( 'idriga' );
$dbo -> query ( 'DELETE FROM in_righe_interventi WHERE id=' . prepare ( $idriga ) . ' ' . Modules :: getAdditionalsQuery ( $id_module ));
break ;
/*
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' :
$idarticolo = post ( 'idarticolo' );
$idautomezzo = post ( 'idautomezzo' );
$descrizione = post ( 'descrizione' );
$idimpianto = post ( 'idimpianto' );
$qta = post ( 'qta' );
$um = post ( 'um' );
$prezzo_vendita = post ( 'prezzo_vendita' );
$sconto_unitario = $post [ 'sconto' ];
$tipo_sconto = $post [ 'tipo_sconto' ];
$sconto = ( $tipo_sconto == 'PRC' ) ? ( $prezzo_vendita * $sconto_unitario ) / 100 : $sconto_unitario ;
$sconto = $sconto * $qta ;
// Decremento la quantità
add_movimento_magazzino ( $idarticolo , - $qta , [ 'idautomezzo' => $idautomezzo , 'idintervento' => $id_record ]);
// Aggiorno l'automezzo dell'intervento
$dbo -> query ( 'UPDATE in_interventi SET idautomezzo=' . prepare ( $idautomezzo ) . ' WHERE id=' . prepare ( $id_record ) . ' ' . Modules :: getAdditionalsQuery ( $id_module ));
$rsart = $dbo -> fetchArray ( 'SELECT abilita_serial, prezzo_acquisto FROM mg_articoli WHERE id=' . prepare ( $idarticolo ));
$prezzo_acquisto = $rsart [ 0 ][ 'prezzo_acquisto' ];
2017-09-05 18:20:02 +02:00
// Aggiunto il collegamento fra l'articolo e l'intervento
$idriga = $dbo -> query ( 'INSERT INTO mg_articoli_interventi(idarticolo, idintervento, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva_vendita, qta, um, abilita_serial) VALUES (' . prepare ( $idarticolo ) . ', ' . prepare ( $id_record ) . ', ' . ( empty ( $idimpianto ) ? 'NULL' : prepare ( $idimpianto )) . ', ' . prepare ( $idautomezzo ) . ', ' . prepare ( $descrizione ) . ', ' . prepare ( $prezzo_vendita ) . ', ' . prepare ( $prezzo_acquisto ) . ', ' . prepare ( $sconto ) . ', ' . prepare ( $sconto_unitario ) . ', ' . prepare ( $tipo_sconto ) . ', (SELECT idiva_vendita FROM mg_articoli WHERE id=' . prepare ( $idarticolo ) . '), ' . prepare ( $qta ) . ', ' . prepare ( $um ) . ', ' . prepare ( $rsart [ 0 ][ 'abilita_serial' ]) . ')' );
if ( ! empty ( $serials )) {
if ( $old_qta > $qta ) {
$serials = array_slice ( $serials , 0 , $qta );
}
2017-09-06 10:48:59 +02:00
$dbo -> sync ( 'mg_prodotti' , [ 'id_riga_intervento' => $idriga , 'dir' => 'entrata' , 'id_articolo' => $idarticolo ], [ 'serial' => $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' :
2017-09-05 17:31:58 +02:00
$idriga = $post [ 'idriga' ];
$idarticolo = $post [ 'idarticolo' ];
2017-08-04 16:28:16 +02:00
2017-09-05 17:31:58 +02:00
$serials = ( array ) $post [ 'serial' ];
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
$firma_file = 'firma_' . time () . '.png' ;
$firma_nome = post ( 'firma_nome' );
$data = explode ( ',' , post ( 'firma_base64' ));
$img = Intervention\Image\ImageManagerStatic :: make ( base64_decode ( $data [ 1 ]));
$img -> resize ( 680 , 202 , function ( $constraint ) {
$constraint -> aspectRatio ();
});
if ( ! $img -> save ( $docroot . '/files/interventi/' . $firma_file )) {
2017-09-04 12:02:29 +02:00
$_SESSION [ 'errors' ][] = tr ( 'Impossibile creare il file!' );
2017-08-04 16:28:16 +02: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 completato = 1 LIMIT 0, 1) WHERE id=' . prepare ( $id_record ))) {
2017-09-04 12:02:29 +02:00
$_SESSION [ 'infos' ][] = tr ( 'Firma salvata correttamente!' );
$_SESSION [ 'infos' ][] = tr ( 'Attività completata!' );
2017-08-04 16:28:16 +02:00
} else {
2017-09-04 12:02:29 +02:00
$_SESSION [ 'errors' ][] = tr ( 'Errore durante il salvataggio della firma nel database!' );
2017-08-04 16:28:16 +02:00
}
} else {
2017-09-04 12:02:29 +02:00
$_SESSION [ 'errors' ][] = tr ( 'Errore durante il salvataggio della firma!' ) . tr ( 'La firma risulta vuota' ) . '...' ;
2017-08-04 16:28:16 +02:00
}
} else {
2017-09-10 14:35:41 +02:00
$_SESSION [ 'errors' ][] = tr ( " Non è stato possibile creare la cartella _DIRECTORY_ per salvare l'immagine della firma! " , [
'_DIRECTORY_' => '<b>/files/interventi</b>' ,
]);
2017-08-04 16:28:16 +02:00
}
break ;
case 'sendemail' :
$from_address = post ( 'from_address' );
$from_name = post ( 'from_name' );
$destinatario = post ( 'destinatario' );
$cc = get_var ( 'Destinatario fisso in copia (campo CC)' );
$oggetto = html_entity_decode ( post ( 'oggetto' ));
$testo_email = post ( 'body' );
$allegato = post ( 'allegato' );
2017-09-14 11:40:13 +02:00
$mail = new Mail ();
2017-08-04 16:28:16 +02:00
$mail -> AddReplyTo ( $from_address , $from_name );
$mail -> SetFrom ( $from_address , $from_name );
$mail -> AddAddress ( $destinatario , '' );
// se ho impostato la conferma di lettura
if ( post ( 'confermalettura' ) == 'on' ) {
$mail -> ConfirmReadingTo = $from_address ;
}
$mail -> Subject = $oggetto ;
$mail -> AddCC ( $cc );
$mail -> MsgHTML ( $testo_email );
2017-09-14 11:40:13 +02:00
if ( ! empty ( $allegato )) {
2017-08-04 16:28:16 +02:00
$mail -> AddAttachment ( $allegato );
}
2017-09-14 11:40:13 +02:00
if ( ! $mail -> send ()) {
2017-09-04 12:02:29 +02:00
$_SESSION [ 'errors' ][] = tr ( " Errore durante l'invio dell'email " ) . ': ' . $mail -> ErrorInfo ;
2017-08-04 16:28:16 +02:00
} else {
$dbo -> query ( 'UPDATE in_interventi SET data_invio=NOW() WHERE id=' . prepare ( $id_record ));
2017-09-04 12:02:29 +02:00
$_SESSION [ 'infos' ][] = tr ( 'Email inviata!' );
2017-08-04 16:28:16 +02:00
}
break ;
}