2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
$upload_dir = $docroot . '/files/' . Modules :: getModule ( 'Articoli' )[ 'directory' ];
switch ( post ( 'op' )) {
case 'update' :
$codice = post ( 'codice' );
$descrizione = post ( 'descrizione' );
$um = post ( 'um' );
$categoria = post ( 'categoria' );
$subcategoria = post ( 'subcategoria' );
$qta = post ( 'qta' );
$threshold_qta = post ( 'threshold_qta' );
$abilita_serial = post ( 'abilita_serial' );
$prezzo_vendita = post ( 'prezzo_vendita' );
$prezzo_acquisto = post ( 'prezzo_acquisto' );
$idiva_vendita = post ( 'idiva_vendita' );
$gg_garanzia = post ( 'gg_garanzia' );
$componente_filename = post ( 'componente_filename' );
2017-08-31 16:23:26 +02:00
$volume = post ( 'volume' );
$peso_lordo = post ( 'peso_lordo' );
2017-08-04 16:28:16 +02:00
$attivo = post ( 'attivo' );
$note = post ( 'note' );
$query = 'UPDATE mg_articoli SET ' .
' codice=' . prepare ( $codice ) . ',' .
' descrizione=' . prepare ( $descrizione ) . ',' .
' um=' . prepare ( $um ) . ',' .
' id_categoria=' . prepare ( $categoria ) . ',' .
' id_sottocategoria=' . prepare ( $subcategoria ) . ',' .
' abilita_serial=' . prepare ( $abilita_serial ) . ',' .
' threshold_qta=' . prepare ( $threshold_qta ) . ',' .
' prezzo_vendita=' . prepare ( $prezzo_vendita ) . ',' .
' prezzo_acquisto=' . prepare ( $prezzo_acquisto ) . ',' .
' idiva_vendita=' . prepare ( $idiva_vendita ) . ',' .
' gg_garanzia=' . prepare ( $gg_garanzia ) . ',' .
2017-08-31 16:23:26 +02:00
' volume=' . prepare ( $idiva_vendita ) . ',' .
' peso_lordo=' . prepare ( $gg_garanzia ) . ',' .
2017-08-04 16:28:16 +02:00
' componente_filename=' . prepare ( $componente_filename ) . ',' .
' attivo=' . prepare ( $attivo ) . ', ' .
' note=' . prepare ( $note ) .
' WHERE id=' . prepare ( $id_record );
$dbo -> query ( $query );
// Leggo la quantità attuale per capire se l'ho modificata
$rs = $dbo -> fetchArray ( 'SELECT qta FROM mg_articoli WHERE id=' . prepare ( $id_record ));
$old_qta = $rs [ 0 ][ 'qta' ];
$movimento = $qta - $old_qta ;
if ( $movimento != 0 ) {
add_movimento_magazzino ( $id_record , $movimento );
}
/*
Salvataggio info componente ( campo `contenuto` )
*/
$componente = post ( 'componente_filename' );
if ( ! empty ( $componente )) {
$contenuto = \Util\Ini :: write ( file_get_contents ( $docroot . '/files/my_impianti/' . $componente ), $post );
$dbo -> query ( 'UPDATE mg_articoli SET contenuto=' . prepare ( $contenuto ) . ' WHERE id=' . prepare ( $id_record ));
}
// Upload file
if ( ! empty ( $_FILES ) && ! empty ( $_FILES [ 'immagine01' ][ 'name' ])) {
$tmp = $_FILES [ 'immagine01' ][ 'tmp_name' ];
$filename = basename ( $_FILES [ 'immagine01' ][ 'name' ]);
$filename = unique_filename ( $filename , $upload_dir );
if ( create_thumbnails ( $tmp , $filename , $upload_dir )) {
$dbo -> query ( 'UPDATE mg_articoli SET immagine01=' . prepare ( $filename ) . ' WHERE id=' . prepare ( $id_record ));
} else {
$_SESSION [ 'warnings' ][] = str_replace ( '_DIR_' , $upload_dir , _ ( 'Errore durante il caricamento del file in _DIR_!' ));
}
}
// Eliminazione file
if ( post ( 'delete_immagine01' ) !== null ) {
$filename = post ( 'immagine01' );
$f = pathinfo ( $filename );
unlink ( $upload_dir . '/' . $f [ 'filename' ] . '.' . $f [ 'extension' ]);
unlink ( $upload_dir . '/' . $f [ 'filename' ] . '_thumb100.' . $f [ 'extension' ]);
unlink ( $upload_dir . '/' . $f [ 'filename' ] . '_thumb250.' . $f [ 'extension' ]);
$dbo -> query ( " UPDATE mg_articoli SET immagine01 = '' WHERE id= " . prepare ( $id_record ));
}
$_SESSION [ 'infos' ][] = _ ( 'Informazioni salvate correttamente!' );
break ;
// Aggiunta articolo
case 'add' :
$codice = post ( 'codice' );
$descrizione = post ( 'descrizione' );
$categoria = post ( 'categoria' );
$subcategoria = post ( 'subcategoria' );
// Inserisco l'articolo solo se non esiste un altro articolo con stesso codice
if ( $dbo -> fetchNum ( 'SELECT * FROM mg_articoli WHERE codice=' . prepare ( $codice )) == 0 ) {
$query = 'INSERT INTO mg_articoli(codice, descrizione, id_categoria, id_sottocategoria, attivo) VALUES (' . prepare ( $codice ) . ', ' . prepare ( $descrizione ) . ', ' . prepare ( $categoria ) . ', ' . prepare ( $subcategoria ) . ', 1)' ;
$dbo -> query ( $query );
$_SESSION [ 'infos' ][] = _ ( 'Aggiunto un nuovo articolo!' );
$query = 'SELECT * FROM mg_articoli WHERE codice=' . prepare ( $codice );
$rs = $dbo -> fetchArray ( $query );
$id_record = $rs [ 0 ][ 'id' ];
} else {
$_SESSION [ 'errors' ][] = _ ( 'Esiste già un articolo con questo codice!' );
}
break ;
// Aggiunta prodotto
case 'addprodotto' :
// Per i 3 campi (lotto, serial, altro) leggo i numeri di partenza e arrivo e creo le combinazioni scelte
// Lotto
$lotto__start = post ( 'lotto_start' );
$lotto__end = post ( 'lotto_end' );
preg_match ( " /(.*?)([ \ d]* $ )/ " , $lotto__start , $m );
$lotto_start = intval ( $m [ 2 ]);
preg_match ( " /(.*?)([ \ d]* $ )/ " , $lotto__end , $m );
$lotto_end = intval ( $m [ 2 ]);
$n_lotti = abs ( $lotto_end - $lotto_start ) + 1 ;
$lotto_prefix = str_replace ( $lotto_end , '' , $lotto__end );
$lotto_pad_length = strlen ( $lotto__end ) - strlen ( $lotto_prefix );
// Serial
$serial__start = post ( 'serial_start' );
$serial__end = post ( 'serial_end' );
preg_match ( " /(.*?)([ \ d]* $ )/ " , $serial__start , $m );
$serial_start = intval ( $m [ 2 ]);
preg_match ( " /(.*?)([ \ d]* $ )/ " , $serial__end , $m );
$serial_end = intval ( $m [ 2 ]);
$n_serial = abs ( $serial_end - $serial_start ) + 1 ;
$serial_prefix = str_replace ( $serial_end , '' , $serial__end );
$serial_pad_length = strlen ( $serial__end ) - strlen ( $serial_prefix );
// Altro
$altro__start = post ( 'altro_start' );
$altro__end = post ( 'altro_end' );
preg_match ( " /(.*?)([ \ d]* $ )/ " , $altro__start , $m );
$altro_start = intval ( $m [ 2 ]);
preg_match ( " /(.*?)([ \ d]* $ )/ " , $altro__end , $m );
$altro_end = intval ( $m [ 2 ]);
$n_altro = abs ( $altro_end - $altro_start ) + 1 ;
$altro_prefix = str_replace ( $altro_end , '' , $altro__end );
$altro_pad_length = strlen ( $altro__end ) - strlen ( $altro_prefix );
$n_prodotti = $n_lotti * $n_serial * $n_altro ;
// Creo la query per le combinazioni prodotto con ogni combinazione
2017-08-29 16:06:37 +02:00
$query = 'INSERT INTO mg_prodotti(idarticolo, lotto, serial, altro) VALUES' ;
2017-08-04 16:28:16 +02:00
// Contatore prodotti da inserire
$c = 0 ;
// Combinazione con "Lotto"
for ( $l = 0 ; $l < $n_lotti ; ++ $l ) {
// Combinazione con "Serial"
for ( $s = 0 ; $s < $n_serial ; ++ $s ) {
// Combinazione con "Altro"
for ( $a = 0 ; $a < $n_altro ; ++ $a ) {
2017-08-29 16:06:37 +02:00
$insert = '(' . prepare ( $id_record ) . ', |lotto|, |serial|, |altro|)' ;
2017-08-04 16:28:16 +02:00
$this_lotto = ( $lotto__start != '' ) ? $lotto_prefix . ( str_pad ( $lotto_start + $l , $lotto_pad_length , '0' , STR_PAD_LEFT )) : '' ;
$insert = str_replace ( '|lotto|' , prepare ( $this_lotto ), $insert );
$this_serial = ( $serial__start != '' ) ? $serial_prefix . ( str_pad ( $serial_start + $s , $serial_pad_length , '0' , STR_PAD_LEFT )) : '' ;
$insert = str_replace ( '|serial|' , prepare ( $this_serial ), $insert );
$this_altro = ( $altro__start != '' ) ? $altro_prefix . ( str_pad ( $altro_start + $a , $altro_pad_length , '0' , STR_PAD_LEFT )) : '' ;
$insert = str_replace ( '|altro|' , prepare ( $this_altro ), $insert );
// Verifico che questa combinazione non esista già
$np = $dbo -> fetchNum ( 'SELECT id FROM mg_prodotti WHERE idarticolo=' . prepare ( $id_record ) . ' AND lotto=' . prepare ( $this_lotto ) . ' AND serial=' . prepare ( $this_serial ) . ' AND altro=' . prepare ( $this_altro ));
if ( $np == 0 ) {
$query .= $insert . ', ' ;
++ $c ;
}
}
}
}
$query .= '.' ;
// Rimuovo "), ."
$query = str_replace ( '), .' , ')' , $query );
// Eseguo l'inserimento!!!
if ( $c > 0 ) {
if ( $dbo -> query ( $query )) {
// Movimento il magazzino se l'ho specificato nelle impostazioni
if ( get_var ( " Movimenta il magazzino durante l'inserimento o eliminazione dei lotti/serial number " )) {
add_movimento_magazzino ( $id_record , $n_prodotti , [], str_replace ([ '_SERIAL_INIZIO_' , '_SERIAL_FINE_' ], [ $serial__start , $serial__end ], _ ( 'Carico magazzino con serial da _SERIAL_INIZIO_ a _SERIAL_FINE_' )));
}
$_SESSION [ 'infos' ][] = str_replace ( '_NUM_' , $n_prodotti , _ ( 'Aggiunti _NUM_ prodotti!' ));
} else {
$_SESSION [ 'errors' ][] = _ ( " Errore durante l'inserimento! " );
}
}
break ;
case 'delprodotto' :
$idprodotto = post ( 'idprodotto' );
// Leggo info prodotto per descrizione mg_movimenti
$rs = $dbo -> fetchArray ( 'SELECT lotto, serial, altro FROM mg_prodotti WHERE id=' . prepare ( $idprodotto ));
$query = 'DELETE FROM mg_prodotti WHERE id=' . prepare ( $idprodotto );
if ( $dbo -> query ( $query )) {
// Movimento il magazzino se l'ho specificato nelle impostazioni
if ( get_var ( " Movimenta il magazzino durante l'inserimento o eliminazione dei lotti/serial number " )) {
add_movimento_magazzino ( $id_record , - 1 , [], str_replace ([ '_LOTTO_' , '_SERIAL_' , '_ALTRO_' ], [ $rs [ 0 ][ 'lotto' ], $rs [ 0 ][ 'serial' ], $rs [ 0 ][ 'altro' ]], _ ( 'Eliminazione dal magazzino del prodotto con serial _SERIAL_' )));
}
$_SESSION [ 'infos' ][] = _ ( 'Prodotto rimosso!' );
}
break ;
case 'delete' :
$dbo -> query ( 'DELETE FROM mg_articoli WHERE id=' . prepare ( $id_record ));
$dbo -> query ( 'DELETE FROM mg_movimenti WHERE idarticolo=' . prepare ( $id_record ));
$dbo -> query ( 'DELETE FROM mg_prodotti WHERE idarticolo=' . prepare ( $id_record ));
$dbo -> query ( 'DELETE FROM mg_articoli_automezzi WHERE idarticolo=' . prepare ( $id_record ));
$_SESSION [ 'infos' ][] = _ ( 'Articolo eliminato!' );
break ;
}