2017-08-04 16:28:16 +02:00
< ? php
2018-06-25 20:50:40 +02:00
include_once __DIR__ . '/../../core.php' ;
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' );
/*
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...
2018-06-29 17:30:41 +02:00
$rs = $dbo -> fetchArray ( 'SELECT id FROM co_contratti_promemoria WHERE idintervento=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
if ( empty ( $rs )) {
2018-06-29 17:30:41 +02:00
$dbo -> insert ( 'co_contratti_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-06-29 17:30:41 +02:00
$dbo -> update ( 'co_contratti_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-06-29 17:30:41 +02:00
$dbo -> update ( 'co_contratti_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-06-29 17:30:41 +02:00
$dbo -> update ( 'co_contratti_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-02-18 19:53:23 +01:00
if (( $user [ 'gruppo' ] == 'Tecnici' && $user [ 'idanagrafica' ] == $rst [ 0 ][ 'idtecnico' ]) || $user [ 'gruppo' ] == 'Amministratori' ) {
2018-02-14 19:58:08 +01:00
// Lettura delle date di inizio e fine intervento
$orario_inizio = post ( 'orario_inizio' )[ $idriga ];
$orario_fine = post ( 'orario_fine' )[ $idriga ];
$km = post ( 'km' )[ $idriga ];
2018-05-24 19:08:25 +02:00
//$ore = post('ore')[$idriga];
2018-06-22 17:04:37 +02:00
//per sicurezza ricalcolo ore lavorate da php
$diff = date_diff ( date_create ( $orario_inizio ), date_create ( $orario_fine ));
$ore = ( $diff -> h + ( $diff -> i / 60 ));
2018-02-14 19:58:08 +01:00
// 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' ];
}
// ...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' ];
2017-09-21 10:01:07 +02:00
}
2018-02-14 19:58:08 +01:00
// 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 = ( $tipo_sconto == 'PRC' ) ? ( $prezzo_ore_consuntivo * $sconto_unitario ) / 100 : $sconto_unitario ;
$scontokm_unitario = post ( 'scontokm' )[ $idriga ];
$tipo_scontokm = post ( 'tipo_scontokm' )[ $idriga ];
$scontokm = ( $tipo_scontokm == 'PRC' ) ? ( $prezzo_km_consuntivo * $scontokm_unitario ) / 100 : $scontokm_unitario ;
$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 ,
'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
}
}
$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 ]);
2018-07-07 13:56:22 +02:00
App :: flash () -> info ( tr ( 'Informazioni salvate correttamente!' ));
2017-08-04 16:28:16 +02:00
break ;
case 'add' :
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' );
2018-03-25 19:10:49 +02:00
$codice = Util\Generator :: generate ( $formato , $rs [ 0 ][ 'codice' ]);
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' );
2018-03-25 19:10:49 +02:00
$codice = Util\Generator :: generate ( $formato , $rs [ 0 ][ 'codice' ]);
2018-01-08 17:14:59 +01:00
}
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' );
2018-06-26 10:25:50 +02:00
$idautomezzo = null ;
2017-08-04 16:28:16 +02:00
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 ();
2018-07-07 13:56:22 +02:00
App :: flash () -> info ( 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 )) {
2018-06-29 17:30:41 +02:00
$dbo -> update ( 'co_contratti_promemoria' , $array , [ 'idcontratto' => $idcontratto , 'id' => $idcontratto_riga ]);
2018-06-22 17:04:37 +02:00
//copio le righe dal promemoria all'intervento
2018-07-02 15:41:38 +02:00
$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_righe_contratti_materiali WHERE id_riga_contratto = ' . $idcontratto_riga . ' ' );
2018-06-22 17:04:37 +02:00
//copio gli articoli dal promemoria all'intervento
2018-07-02 15:41:38 +02:00
$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_righe_contratti_articoli WHERE id_riga_contratto = ' . $idcontratto_riga . ' ' );
2018-06-22 17:04:37 +02: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' ], - force_decimal ( $rs_articolo [ 'qta' ]), [ 'idautomezzo' => $rs_articolo [ 'idautomezzo' ], 'idintervento' => $id_record ]);
}
} else {
2018-06-29 17:30:41 +02:00
$dbo -> insert ( 'co_contratti_promemoria' , [
2018-05-23 11:38:46 +02:00
'idcontratto' => $idcontratto ,
'idintervento' => $id_record ,
'idtipointervento' => $idtipointervento ,
'data_richiesta' => $data_richiesta ,
'richiesta' => $richiesta ,
'idsede' => $idsede ? : 0 ,
]);
2017-08-04 16:28:16 +02:00
}
}
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' ) {
2018-07-07 13:56:22 +02:00
App :: flash () -> clearMessage ( 'info' );
App :: flash () -> clearMessage ( 'warning' );
2017-08-04 16:28:16 +02:00
}
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
2018-06-29 17:30:41 +02:00
$query = 'UPDATE co_contratti_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 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 ));
2018-07-07 13:56:22 +02:00
App :: 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' );
$sconto_unitario = $post [ 'sconto' ];
$tipo_sconto = $post [ 'tipo_sconto' ];
$sconto = ( $tipo_sconto == 'PRC' ) ? ( $prezzo_vendita * $sconto_unitario ) / 100 : $sconto_unitario ;
$sconto = $sconto * $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' );
$sconto_unitario = $post [ 'sconto' ];
$tipo_sconto = $post [ 'tipo_sconto' ];
$sconto = ( $tipo_sconto == 'PRC' ) ? ( $prezzo_vendita * $sconto_unitario ) / 100 : $sconto_unitario ;
$sconto = $sconto * $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' :
$idarticolo = post ( 'idarticolo' );
$idautomezzo = post ( 'idautomezzo' );
$descrizione = post ( 'descrizione' );
$idimpianto = post ( 'idimpianto' );
$qta = post ( 'qta' );
$um = post ( 'um' );
$prezzo_vendita = post ( 'prezzo_vendita' );
2018-03-19 18:11:51 +01:00
$idiva = post ( 'idiva' );
2017-08-04 16:28:16 +02:00
$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' ];
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
2017-09-05 18:20:02 +02:00
// Aggiunto il collegamento fra l'articolo e l'intervento
2018-03-19 18:11:51 +01:00
$idriga = $dbo -> query ( 'INSERT INTO mg_articoli_interventi(idarticolo, idintervento, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, 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 ) . ', ' . prepare ( $idiva ) . ', ' . prepare ( $desc_iva ) . ', ' . prepare ( $iva ) . ', ' . prepare ( $qta ) . ', ' . prepare ( $um ) . ', ' . prepare ( $rsart [ 0 ][ 'abilita_serial' ]) . ')' );
2017-09-05 18:20:02 +02:00
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
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-07 13:56:22 +02:00
App :: 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-07 13:56:22 +02:00
App :: flash () -> info ( tr ( 'Firma salvata correttamente!' ));
App :: flash () -> info ( tr ( 'Attività completata!' ));
2017-08-04 16:28:16 +02:00
} else {
2018-07-07 13:56:22 +02:00
App :: flash () -> error ( tr ( 'Errore durante il salvataggio della firma nel database!' ));
2017-08-04 16:28:16 +02:00
}
} else {
2018-07-07 13:56:22 +02:00
App :: 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-07 13:56:22 +02:00
App :: 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
}
break ;
}