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", "
", $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", "
", $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'] ); } ?>