2017-08-04 16:28:16 +02:00
< ? php
2018-06-25 20:50:40 +02:00
include_once __DIR__ . '/../../core.php' ;
2018-08-29 18:06:51 +02:00
use Modules\Interventi\Articolo ;
2018-09-25 16:47:44 +02:00
use Modules\Interventi\Intervento ;
use Modules\Articoli\Articolo as ArticoloOriginale ;
2018-08-29 18:06:51 +02:00
2018-06-26 09:41:43 +02:00
include_once Modules :: filepath ( 'Interventi' , 'modutil.php' );
include_once Modules :: filepath ( 'Articoli' , 'modutil.php' );
include_once Modules :: filepath ( 'MyImpianti' , 'modutil.php' );
2017-08-04 16:28:16 +02:00
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' );
/*
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...
2018-08-31 11:39:38 +02:00
$rs = $dbo -> fetchArray ( 'SELECT id FROM co_promemoria WHERE idintervento=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
if ( empty ( $rs )) {
2018-08-31 11:39:38 +02:00
$dbo -> insert ( 'co_promemoria' , array_merge ([ 'idcontratto' => $idcontratto ], $array ));
2017-08-04 16:28:16 +02:00
}
// ...altrimenti se sto cambiando contratto aggiorno solo l'id del nuovo contratto
else {
2018-08-31 11:39:38 +02:00
$dbo -> update ( 'co_promemoria' , [ 'idcontratto' => $idcontratto ], [ 'idintervento' => $id_record ]);
2017-08-04 16:28:16 +02:00
}
}
// Pianificazione già impostata, aggiorno solo il codice intervento
elseif ( ! empty ( $idcontratto ) && ! empty ( $idcontratto_riga )) {
2018-08-31 11:39:38 +02:00
$dbo -> update ( 'co_promemoria' , $array , [ 'idcontratto' => $idriga , 'id' => $idcontratto_riga ]);
2017-08-04 16:28:16 +02:00
}
// Se non è impostato nessun contratto o riga, tolgo il collegamento dell'intervento al contratto
elseif ( empty ( $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
}
// Aggiorna tutte le sessioni di lavoro
$lista = ( array ) post ( 'id_' );
foreach ( $lista as $idriga ) {
2018-02-14 19:58:08 +01:00
//Lettura del tecnico proprietario della riga
$rst = $dbo -> fetchArray ( 'SELECT idtecnico FROM in_interventi_tecnici WHERE id=' . prepare ( $idriga ));
2018-02-18 19:53:23 +01:00
2018-02-14 19:58:08 +01:00
// Limitazione delle azioni dei tecnici
2018-08-11 11:08:55 +02:00
//($user['gruppo'] == 'Tecnici' && $user['idanagrafica'] == $rst[0]['idtecnico']) || $user['gruppo'] == 'Amministratori'
// Lettura delle date di inizio e fine intervento
$orario_inizio = post ( 'orario_inizio' )[ $idriga ];
$orario_fine = post ( 'orario_fine' )[ $idriga ];
// Ricalcolo le ore lavorate
$ore = calcola_ore_intervento ( $orario_inizio , $orario_fine );
$km = post ( 'km' )[ $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' ]) {
$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' ];
2017-09-21 10:01:07 +02:00
}
2018-08-11 11:08:55 +02:00
// ...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 ));
2018-02-14 19:58:08 +01:00
2018-08-11 11:08:55 +02:00
$prezzo_ore_unitario = $rsc [ 0 ][ 'costo_orario' ];
$prezzo_km_unitario = $rsc [ 0 ][ 'costo_km' ];
$prezzo_dirittochiamata = $rsc [ 0 ][ 'costo_diritto_chiamata' ];
2018-02-14 19:58:08 +01:00
2018-08-11 11:08:55 +02:00
$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 ;
// Sconti
$sconto_unitario = post ( 'sconto' )[ $idriga ];
$tipo_sconto = post ( 'tipo_sconto' )[ $idriga ];
$sconto = calcola_sconto ([
2018-09-20 11:39:03 +02:00
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo_ore_consuntivo ,
'tipo' => $tipo_sconto ,
]);
2018-02-14 19:58:08 +01:00
2018-08-11 11:08:55 +02:00
$scontokm_unitario = post ( 'scontokm' )[ $idriga ];
$tipo_scontokm = post ( 'tipo_scontokm' )[ $idriga ];
$scontokm = ( $tipo_scontokm == 'PRC' ) ? ( $prezzo_km_consuntivo * $scontokm_unitario ) / 100 : $scontokm_unitario ;
2018-02-14 19:58:08 +01:00
2018-08-11 11:08:55 +02:00
$dbo -> update ( 'in_interventi_tecnici' , [
2018-09-20 11:39:03 +02:00
'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 ,
'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' => $idriga ]);
2017-08-04 16:28:16 +02:00
}
2018-07-19 15:33:32 +02:00
$tipo_sconto = post ( 'tipo_sconto_globale' );
$sconto = post ( 'sconto_globale' );
2017-08-04 16:28:16 +02:00
// 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' ),
2018-09-03 15:29:55 +02:00
'id_preventivo' => $idpreventivo ,
2017-08-04 16:28:16 +02:00
'sconto_globale' => $sconto ,
'tipo_sconto_globale' => $tipo_sconto ,
], [ 'id' => $id_record ]);
2018-09-20 11:39:03 +02:00
$stato = $dbo -> selectOne ( 'in_statiintervento' , '*' , [ 'idstatointervento' => post ( 'idstatointervento' )]);
// Notifica chiusura intervento
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' ]);
$n -> send ();
}
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 ) {
$formato = setting ( 'Formato codice intervento' );
$template = str_replace ( '#' , '%' , $formato );
2017-08-04 16:28:16 +02:00
2018-09-20 09:21:34 +02: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' );
if ( ! empty ( $rs [ 0 ][ 'codice' ])) {
$codice = Util\Generator :: generate ( $formato , $rs [ 0 ][ 'codice' ]);
}
2017-08-04 16:28:16 +02:00
2018-09-20 09:21:34 +02: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 = Util\Generator :: generate ( $formato , $rs [ 0 ][ 'codice' ]);
}
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' );
$data_richiesta = post ( 'data_richiesta' );
$richiesta = post ( 'richiesta' );
$idautomezzo = null ;
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 ,
'id_preventivo' => $idpreventivo ,
2017-08-04 16:28:16 +02:00
2018-09-20 09:21:34 +02:00
'codice' => $codice ,
'data_richiesta' => $data_richiesta ,
'richiesta' => $richiesta ,
2018-08-31 11:39:38 +02:00
]);
2018-09-20 09:21:34 +02:00
$id_record = $dbo -> lastInsertedID ();
2018-06-22 17:04:37 +02:00
2018-09-20 09:21:34 +02:00
flash () -> info ( tr ( 'Aggiunto nuovo intervento!' ));
}
// Collego l'intervento al contratto
if ( ! empty ( $idcontratto )) {
$array = [
2018-05-23 11:38:46 +02:00
'idintervento' => $id_record ,
'idtipointervento' => $idtipointervento ,
'data_richiesta' => $data_richiesta ,
'richiesta' => $richiesta ,
'idsede' => $idsede ? : 0 ,
2018-09-20 09:21:34 +02: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' , $array , [ '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' ));
}
// 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 ]);
}
} else {
$dbo -> insert ( 'co_promemoria' , [
'idcontratto' => $idcontratto ,
'idintervento' => $id_record ,
'idtipointervento' => $idtipointervento ,
'data_richiesta' => $data_richiesta ,
'richiesta' => $richiesta ,
'idsede' => $idsede ? : 0 ,
]);
}
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
$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 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 ;
case 'editriga' :
$idriga = post ( 'idriga' );
$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
$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' );
$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' :
2018-09-25 16:47:44 +02:00
$originale = ArticoloOriginale :: find ( post ( 'idarticolo' ));
$intervento = Intervento :: find ( $id_record );
2018-10-02 18:25:52 +02:00
$articolo = Articolo :: make ( $intervento , $originale , post ( 'idautomezzo' ));
2018-09-25 16:47:44 +02:00
$articolo -> qta = post ( 'qta' );
$articolo -> descrizione = post ( 'descrizione' );
$articolo -> prezzo_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' );
2017-08-04 16:28:16 +02:00
2018-09-25 16:47:44 +02:00
$articolo -> id_iva = post ( 'idiva' );
2017-08-04 16:28:16 +02:00
2018-09-25 11:55:52 +02:00
$articolo -> save ();
2017-08-04 16:28:16 +02:00
// Aggiorno l'automezzo dell'intervento
2018-08-29 18:06:51 +02:00
$dbo -> query ( 'UPDATE in_interventi SET idautomezzo=' . prepare ( post ( 'idautomezzo' )) . ' WHERE id=' . prepare ( $id_record ) . ' ' . Modules :: getAdditionalsQuery ( $id_module ));
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' ));
$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 )) {
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' ]);
$n -> send ();
}
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 ;
case 'edit_sessione' :
$id_sessione = post ( 'id_sessione' );
// 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 ;
// Sconti
$sconto_unitario = post ( 'sconto' );
$tipo_sconto = post ( 'tipo_sconto' );
$sconto = calcola_sconto ([
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo_ore_consuntivo ,
'tipo' => $tipo_sconto ,
]);
$scontokm_unitario = post ( 'sconto_km' );
$tipo_scontokm = post ( 'tipo_scontokm' );
$scontokm = ( $tipo_scontokm == 'PRC' ) ? ( $prezzo_km_consuntivo * $scontokm_unitario ) / 100 : $scontokm_unitario ;
$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 ]);
2017-08-04 16:28:16 +02:00
break ;
}