433 lines
16 KiB
PHP
433 lines
16 KiB
PHP
|
<?php
|
||
|
include_once(__DIR__."/../../core.php");
|
||
|
|
||
|
|
||
|
switch( $html->form('op', 'post') ){
|
||
|
|
||
|
case "update":
|
||
|
$idarticolo = $_POST['id_record'];
|
||
|
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
|
||
|
if( isset($_POST['id_record']) ){
|
||
|
|
||
|
include ($docroot . "/lib/salva_personalizzati.php");
|
||
|
|
||
|
|
||
|
$codice = save($_POST['codice']);
|
||
|
$descrizione = save($_POST['descrizione']);
|
||
|
$idum = save($_POST['idum']);
|
||
|
$categoria = save($_POST['categoria']);
|
||
|
$subcategoria = save($_POST['subcategoria']);
|
||
|
$qta = save($_POST['qta']);
|
||
|
|
||
|
$threshold_qta = save($_POST['threshold_qta']);
|
||
|
$prezzo_vendita = force_decimal($_POST['prezzo_vendita']);
|
||
|
$prezzo_acquisto = force_decimal($_POST['prezzo_acquisto']);
|
||
|
$idiva_vendita = save($_POST['idiva_vendita']);
|
||
|
$gg_garanzia = save($_POST['gg_garanzia']);
|
||
|
$componente_filename = save($_POST['componente_filename']);
|
||
|
( $_POST['attivo'] == 'on' ) ? $attivo=1 : $attivo=0;
|
||
|
( $_POST['abilita_serial'] == 'on' ) ? $abilita_serial=1 : $abilita_serial=0;
|
||
|
( $_POST['servizio'] == 'on' ) ? $servizio=1 : $servizio=0;
|
||
|
( $_POST['ges_magazzino'] == 'on' ) ? $ges_magazzino=1 : $ges_magazzino=0;
|
||
|
|
||
|
$qta_colli = force_decimal($_POST['qta_colli']);
|
||
|
$note = save($_POST['note']);
|
||
|
$volume = force_decimal($_POST['volume']);
|
||
|
$peso_lordo = force_decimal($_POST['peso_lordo']);
|
||
|
$idfornitore = save($_POST['idfornitore']);
|
||
|
$id_ubicazione = save($_POST['id_ubicazione']);
|
||
|
$id_scansia = save($_POST['id_scansia']);
|
||
|
$id_reparto = save($_POST['id_reparto']);
|
||
|
$pro_barcode = save($_POST['pro_barcode']);
|
||
|
$pro_smax = save($_POST['pro_smax']);
|
||
|
$pro_lotto = save($_POST['pro_lotto']);
|
||
|
$cod_fornitore = save($_POST['cod_fornitore']);
|
||
|
|
||
|
// ricerca il conto da applicare
|
||
|
$rs_cat = $dbo->fetchArray("SELECT * FROM mg_categorie WHERE id=\"".$categoria."\"");
|
||
|
$id_conto = $rs_cat[0]['id_conto_e'];
|
||
|
$id_conto_u = $rs_cat[0]['id_conto_u'];
|
||
|
|
||
|
//Leggo la quantità attuale per capire se l'ho modificata
|
||
|
$rs = $dbo->fetchArray("SELECT qta FROM mg_articoli WHERE id=\"".$idarticolo."\"");
|
||
|
$old_qta = $rs[0]['qta'];
|
||
|
$movimento = $qta - $old_qta;
|
||
|
|
||
|
$query = "UPDATE mg_articoli SET codice=\"$codice\",".
|
||
|
"descrizione=\"$descrizione\",".
|
||
|
"idum=\"$idum\",".
|
||
|
"id_categoria=\"$categoria\",".
|
||
|
"id_sottocategoria=\"$subcategoria\",".
|
||
|
"qta=\"$qta\",".
|
||
|
"id_conto=\"$id_conto\",".
|
||
|
"id_conto_u=\"$id_conto_u\",".
|
||
|
"threshold_qta=\"$threshold_qta\",".
|
||
|
"prezzo_vendita=\"$prezzo_vendita\",".
|
||
|
"prezzo_acquisto=\"$prezzo_acquisto\",".
|
||
|
"idiva_vendita=\"$idiva_vendita\",".
|
||
|
"gg_garanzia=\"$gg_garanzia\",".
|
||
|
"volume=\"$volume\",".
|
||
|
"peso_lordo=\"$peso_lordo\",".
|
||
|
"componente_filename=\"$componente_filename\",".
|
||
|
"attivo=\"".$attivo."\", ".
|
||
|
"cod_fornitore=\"".$cod_fornitore."\", ".
|
||
|
"idfornitore=\"".$idfornitore."\", ".
|
||
|
"id_ubicazione=\"".$id_ubicazione."\", ".
|
||
|
"id_scansia=\"".$id_scansia."\", ".
|
||
|
"id_reparto=\"".$id_reparto."\", ".
|
||
|
"pro_barcode=\"".$pro_barcode."\", ".
|
||
|
"pro_smax=\"".$pro_smax."\", ".
|
||
|
"pro_lotto=\"".$pro_lotto."\", ".
|
||
|
"abilita_serial=\"".$abilita_serial."\", ".
|
||
|
"servizio=\"".$servizio."\", ".
|
||
|
"ges_magazzino=\"".$ges_magazzino."\", ".
|
||
|
"qta_colli=\"".$qta_colli."\", ".
|
||
|
"note=\"$note\"".
|
||
|
" WHERE id=\"".$idarticolo."\"";
|
||
|
$dbo->query( $query );
|
||
|
|
||
|
|
||
|
// log articolo
|
||
|
add_storico($idarticolo,"Eseguito modifica salvataggio articolo");
|
||
|
|
||
|
|
||
|
//Se ho modificato manualmente la quantità lo segno nel magazzino
|
||
|
if( $movimento > 0 )
|
||
|
$dbo->query( "INSERT INTO mg_movimenti( idarticolo, descrizione_articolo, qta, movimento, data ) VALUES( \"".$idarticolo."\", \"".$descrizione."\", \"".$movimento."\", \"Carico manuale\", NOW() )" );
|
||
|
else if( $movimento < 0 )
|
||
|
$dbo->query( "INSERT INTO mg_movimenti( idarticolo, descrizione_articolo, qta, movimento, data ) VALUES( \"".$idarticolo."\", \"".$descrizione."\", \"".$movimento."\", \"Scarico manuale\", NOW() )" );
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
Salvataggio info componente (campo `contenuto`)
|
||
|
*/
|
||
|
$filename = save( $_POST['componente_filename'] );
|
||
|
|
||
|
$post_array = array();
|
||
|
|
||
|
foreach( $_POST as $impostazione_post=>$valore_impostazione_post ){
|
||
|
//Creo l'array con tutti i valori passati dal POST
|
||
|
$impostazione_post = str_replace( "_", " ", $impostazione_post );
|
||
|
$post_array[$impostazione_post] = save($valore_impostazione_post);
|
||
|
}
|
||
|
$nome = save($_POST['Nome']);
|
||
|
|
||
|
//Lettura info componente
|
||
|
if( file_exists($docroot."/files/my_impianti/".$filename) )
|
||
|
$contenuto = file_get_contents( $docroot."/files/my_impianti/".$filename );
|
||
|
else
|
||
|
$contenuto = '';
|
||
|
|
||
|
|
||
|
//Converto 'contenuto' di questo componente in un array
|
||
|
$ini_array = parse_ini_string( $contenuto, true );
|
||
|
|
||
|
//Creo variabile contenuto temporaneo
|
||
|
$contenuto_tmp = array();
|
||
|
|
||
|
//Resetto il valore di contenuto
|
||
|
$contenuto = '';
|
||
|
|
||
|
//Per ogni sezione dell'array estratto dal file ini
|
||
|
foreach ($ini_array as $sezione => $array_impostazioni){
|
||
|
$sezione = str_replace( "\r\n", "\n", $sezione );
|
||
|
$sezione = str_replace( "\n", "<br/>", $sezione );
|
||
|
$contenuto .= "["".$sezione.""]\n";
|
||
|
|
||
|
//Per ogni impostazione
|
||
|
foreach ($array_impostazioni as $impostazione => $valore_impostazione){
|
||
|
|
||
|
//Quando trovo l'impostazione 'valore' la sostituisco con il valore passato dal post
|
||
|
if ($impostazione=='valore'){
|
||
|
|
||
|
$da = array($impostazione => $valore_impostazione);
|
||
|
$a = array($impostazione => $post_array[$sezione]);
|
||
|
|
||
|
$contenuto_tmp = array_replace($ini_array[$sezione], $da, $a);
|
||
|
|
||
|
foreach ($contenuto_tmp as $impostazione_tmp => $valore_impostazione_tmp){
|
||
|
$valore = $valore_impostazione_tmp;
|
||
|
$valore = str_replace( "\r\n", "\n", $valore );
|
||
|
$valore = str_replace( "\n", "<br/>", $valore );
|
||
|
|
||
|
|
||
|
$contenuto .= save($impostazione_tmp)." = "".save($valore).""\n";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$dbo->query("UPDATE mg_articoli SET contenuto=\"".($contenuto)."\" WHERE id=\"".$idarticolo."\"");
|
||
|
|
||
|
|
||
|
|
||
|
//Upload file
|
||
|
$f = pathinfo( $_FILES['immagine01']['name'] );
|
||
|
$filename = $f['filename'].".jpg";
|
||
|
$tmp = $_FILES['immagine01']['tmp_name'];
|
||
|
$upload_dir = $docroot."/files/".$modules_info['Articoli']['module_dir'];
|
||
|
|
||
|
if( $_FILES['immagine01']['name'] != '' ){
|
||
|
$filename = unique_filename( $filename, $upload_dir );
|
||
|
|
||
|
if( create_thumbnails( $tmp, $filename, $upload_dir ) ){
|
||
|
$dbo->query("UPDATE mg_articoli SET immagine01=\"".$filename."\" WHERE id=\"".$idarticolo."\"");
|
||
|
}
|
||
|
|
||
|
else{
|
||
|
array_push( $_SESSION['warnings'], "Errore durante il caricamento del file in ".$upload_dir."!" );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//Eliminazione file
|
||
|
if( $html->form('immagine01','post') == 'deleteme' ){
|
||
|
$filename = $html->form('prev_immagine01', 'post');
|
||
|
$f = pathinfo($filename);
|
||
|
|
||
|
if( $dbo->query("UPDATE mg_articoli SET immagine01='' WHERE id=\"".$idarticolo."\"") ){
|
||
|
@unlink($upload_dir."/".$f['filename'].".".$f['extension']);
|
||
|
@unlink($upload_dir."/".$f['filename']."_thumb100.".$f['extension']);
|
||
|
@unlink($upload_dir."/".$f['filename']."_thumb250.".$f['extension']);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
array_push( $_SESSION['infos'], "Informazioni salvate correttamente!" );
|
||
|
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
//Aggiunta articolo
|
||
|
case "add":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
|
||
|
$codice = save( $_POST['codice'] );
|
||
|
$descrizione = save( $_POST['descrizione'] );
|
||
|
$idiva_predefinita = get_var("Iva predefinita");
|
||
|
//Inserisco l'articolo solo se non esiste un altro articolo con stesso codice
|
||
|
if( $dbo->fetchNum("SELECT * FROM mg_articoli WHERE codice=\"$codice\"")==0 ){
|
||
|
$query = "INSERT INTO mg_articoli(codice, descrizione, attivo,id_conto,idiva_vendita) VALUES (\"$codice\", \"$descrizione\", 1,\"$id_conto_predefinito\",\"$idiva_predefinita\")";
|
||
|
$dbo->query($query);
|
||
|
|
||
|
|
||
|
|
||
|
array_push( $_SESSION['infos'], "Aggiunto un nuovo articolo!" );
|
||
|
|
||
|
$query = "SELECT * FROM mg_articoli WHERE codice=\"$codice\"";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$id_record = $rs[0]['id'];
|
||
|
|
||
|
// log articolo
|
||
|
add_storico($id_record,"Eseguito inserimento nuova articolo");
|
||
|
|
||
|
}
|
||
|
else{
|
||
|
array_push( $_SESSION['errors'], "Esiste già un articolo con questo codice!" );
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
//Aggiunta prodotto
|
||
|
case "addprodotto":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
//Per i 3 campi (lotto, serial, altro) leggo i numeri di partenza e arrivo e creo le combinazioni scelte
|
||
|
|
||
|
$idarticolo = $_POST['id_record'];
|
||
|
|
||
|
//Lotto
|
||
|
$lotto__start = save( $_POST['lotto_start'] );
|
||
|
$lotto__end = save( $_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 = save( $_POST['serial_start'] );
|
||
|
$serial__end = save( $_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 = save( $_POST['altro_start'] );
|
||
|
$altro__end = save( $_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
|
||
|
$query = "INSERT INTO mg_prodotti( idarticolo, lotto, serial, altro, data ) VALUES";
|
||
|
|
||
|
|
||
|
//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++ ){
|
||
|
$insert = "( \"".$idarticolo."\", \"|lotto|\", \"|serial|\", \"|altro|\", NOW() )";
|
||
|
|
||
|
( $lotto__start != '' ) ? $this_lotto=$lotto_prefix.(str_pad($lotto_start+$l,$lotto_pad_length,"0",STR_PAD_LEFT)) : $this_lotto='';
|
||
|
$insert = str_replace( "|lotto|", $this_lotto, $insert );
|
||
|
|
||
|
( $serial__start != '' ) ? $this_serial=$serial_prefix.(str_pad($serial_start+$s,$serial_pad_length,"0",STR_PAD_LEFT)) : $this_serial='';
|
||
|
$insert = str_replace( "|serial|", $this_serial, $insert );
|
||
|
|
||
|
( $altro__start != '' ) ? $this_altro=$altro_prefix.(str_pad($altro_start+$a,$altro_pad_length,"0",STR_PAD_LEFT)) : $this_altro='';
|
||
|
$insert = str_replace( "|altro|", $this_altro, $insert );
|
||
|
|
||
|
|
||
|
//Verifico che questa combinazione non esista già
|
||
|
$np = $dbo->fetchNum("SELECT id FROM mg_prodotti WHERE idarticolo=\"".$idarticolo."\" AND lotto=\"".$this_lotto."\" AND serial=\"".$this_serial."\" AND altro=\"".$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")==true ){
|
||
|
$dbo->query("UPDATE mg_articoli SET qta=qta+".$n_prodotti." WHERE id=\"".$idarticolo."\"");
|
||
|
add_movimento_magazzino( $idarticolo, $n_prodotti, "Carico magazzino da seriale ".$serial__start." a seriale ".$serial__end );
|
||
|
|
||
|
}
|
||
|
|
||
|
array_push( $_SESSION['infos'], "Aggiunti ".$n_prodotti." prodotti!" );
|
||
|
}
|
||
|
else{
|
||
|
array_push( $_SESSION['errors'], "Errore durante l’inserimento!" );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
case "delprodotto":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
|
||
|
$idprodotto = $_POST['idprodotto'];
|
||
|
$idarticolo = $_POST['id_record']; // serve per funzione add_movimento_magazzino
|
||
|
|
||
|
//Leggo info prodotto per descrizione mg_movimenti
|
||
|
$rs = $dbo->fetchArray("SELECT lotto, serial, altro FROM mg_prodotti WHERE id=\"".$idprodotto."\"");
|
||
|
|
||
|
|
||
|
$query = "DELETE FROM mg_prodotti WHERE id=\"".$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")==true ){
|
||
|
$dbo->query("UPDATE mg_articoli SET qta=qta-1 WHERE id=\"".$idarticolo."\"");
|
||
|
add_movimento_magazzino( $idarticolo, -1, "Eliminazione dal magazzino del prodotto con lotto ".$rs[0]['lotto'].", serial ".$rs[0]['serial'].", altro ".$rs[0]['altro'] );
|
||
|
}
|
||
|
|
||
|
array_push( $_SESSION['infos'], "Prodotto rimosso!" );
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
|
||
|
case "duplica":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
$cod_new = save($_POST['codice']);
|
||
|
$des_new = save( $_POST['descrizione'] );
|
||
|
if( $dbo->fetchNum("SELECT * FROM mg_articoli WHERE codice=\"$cod_new\"")==0 ){
|
||
|
$query="INSERT INTO `mg_articoli` (
|
||
|
`um`, `immagine01`, `note`, `qta`, `threshold_qta`, `prezzo_acquisto`, `prezzo_vendita`, `idiva_vendita`, `gg_garanzia`, `peso_lordo`, `volume`, `componente_filename`, `contenuto`,
|
||
|
`attivo`, `updated_at`, `created_at`, `updated_by`, `created_by`, `id_categoria`, `id_sottocategoria`, `abilita_serial`, `servizio`, `idum`, `idfornitore`, `id_ubicazione`, `id_reparto`, `id_scansia`, `pro_barcode`,
|
||
|
`pro_smax`, `pro_lotto`, `cod_fornitore`, `id_conto`, `id_conto_u` )
|
||
|
SELECT `um`, `immagine01`, `note`, `qta`, `threshold_qta`, `prezzo_acquisto`, `prezzo_vendita`, `idiva_vendita`, `gg_garanzia`, `peso_lordo`, `volume`, `componente_filename`, `contenuto`,
|
||
|
`attivo`, `updated_at`, `created_at`, `updated_by`, `created_by`, `id_categoria`, `id_sottocategoria`, `abilita_serial`, `servizio`, `idum`, `idfornitore`, `id_ubicazione`, `id_reparto`, `id_scansia`, `pro_barcode`,
|
||
|
`pro_smax`, `pro_lotto`, `cod_fornitore`, `id_conto`, `id_conto_u` FROM mg_articoli WHERE id ='".$id_record."'";
|
||
|
|
||
|
|
||
|
$id_tmp = $dbo->query($query);
|
||
|
$query = "UPDATE mg_articoli SET codice=\"$cod_new\",".
|
||
|
"descrizione=\"$des_new\"".
|
||
|
" WHERE id=\"".$id_tmp."\"";
|
||
|
$id_record = $id_tmp;
|
||
|
$dbo->query( $query );
|
||
|
array_push( $_SESSION['infos'], "Articolo duplicato!" );
|
||
|
// log articolo
|
||
|
add_storico($id_record,"Duplicato articolo con nuovo codice ".$cod_new );
|
||
|
|
||
|
|
||
|
}
|
||
|
else{
|
||
|
array_push( $_SESSION['errors'], "Esiste già un articolo con questo codice!" );
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
case "delete":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
//Leggo se ci sono documenti con questo articolo
|
||
|
$rs = $dbo->fetchArray("SELECT idarticolo FROM co_righe_documenti WHERE idarticolo='".$id_record."'");
|
||
|
if ( sizeof($rs) > 0 ) {
|
||
|
array_push( $_SESSION['errors'], "Articolo presente nei documenti. rimozione non consentita!" );
|
||
|
}
|
||
|
else{
|
||
|
$dbo->query("DELETE FROM mg_articoli WHERE id='$id_record'");
|
||
|
$dbo->query("DELETE FROM mg_movimenti WHERE idarticolo='$id_record'");
|
||
|
$dbo->query("DELETE FROM mg_prodotti WHERE idarticolo='$id_record'");
|
||
|
$dbo->query("DELETE FROM mg_articoli_magazzini WHERE idarticolo='$id_record'");
|
||
|
array_push( $_SESSION['infos'], "Articolo eliminato!" );
|
||
|
add_storico($id_record,"Articolo eliminato dal magazzino" );
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
//Annullo le notifiche se le operazioni sono fatte via ajax
|
||
|
if( $html->form('ajax', 'post') == 'yes' ){
|
||
|
unset( $_SESSION['infos'] );
|
||
|
}
|
||
|
?>
|