333 lines
12 KiB
PHP
333 lines
12 KiB
PHP
|
<?php
|
||
|
include_once(__DIR__."/../../../core.php");
|
||
|
|
||
|
/*
|
||
|
RICERCA PRODOTTI
|
||
|
*/
|
||
|
|
||
|
echo "<div class=\"panel panel-primary\">\n";
|
||
|
echo " <div class=\"panel-heading\">\n";
|
||
|
echo " <h3 class=\"panel-title\">Produzione</h3>\n";
|
||
|
echo " </div>\n";
|
||
|
|
||
|
echo " <div class=\"panel-body\">\n";
|
||
|
|
||
|
|
||
|
$search_serial = $_GET['search_serial'];
|
||
|
|
||
|
|
||
|
//Calcolo prossimo lotto e serial number
|
||
|
$rs = $dbo->fetchArray("SELECT MAX(serial) AS max_serial FROM mg_prodotti WHERE idarticolo=\"".$id_record."\"");
|
||
|
|
||
|
$max_serial = $rs[0]['max_serial'];
|
||
|
$next_serial = get_next_code( $max_serial );
|
||
|
|
||
|
|
||
|
echo " <form action=\"\" method=\"post\" role=\"form\">\n";
|
||
|
echo " <input type=\"hidden\" name=\"backto\" value=\"record-edit\">\n";
|
||
|
echo " <input type=\"hidden\" name=\"op\" value=\"addprodotto\">\n";
|
||
|
echo " <input type=\"hidden\" name=\"id_record\" value=\"$id_record\">\n";
|
||
|
|
||
|
|
||
|
//Campi di inserimento lotti
|
||
|
echo " <div class=\"row form-group\">\n";
|
||
|
echo " <div class=\"col-md-12\">\n";
|
||
|
echo " <h4>Inserimento nuovi prodotti</h4>\n";
|
||
|
echo " </div>\n";
|
||
|
echo " </div>\n";
|
||
|
|
||
|
|
||
|
|
||
|
// Serial
|
||
|
echo " <div class=\"row form-group\">\n";
|
||
|
echo " <label class=\"col-md-2 control-label\" for=\"serial_start\">Serial number da:</label>\n";
|
||
|
echo " <div class=\"col-md-2\">\n";
|
||
|
echo " <input type='text' class='form-control input-md' name='serial_start' onkeyup=\"$('input[name=serial_end]').val( $('input[name=serial_start]').val() ); $('#warn_serial').hide(); ricalcola_totale_prodotti();\" value=\"".$next_serial."\" />";
|
||
|
echo " </div>\n";
|
||
|
echo " <label class=\"col-md-1 control-label text-center\" for=\"serial_end\"> <i class=\"fa fa-arrow-circle-right fa-2x\"></i> </label>\n";
|
||
|
echo " <div class=\"col-md-2\">\n";
|
||
|
echo " <input type='text' class='form-control input-md' name='serial_end' onkeyup=\"check_progressivo( $('input[name=serial_start]'), $('input[name=serial_end]'), $('#warn_serial'), $('#inserisci') );\" value=\"".$next_serial."\" />";
|
||
|
echo " </div>\n";
|
||
|
echo " <div class=\"col-md-3\">\n";
|
||
|
if( $max_serial!='' )
|
||
|
echo " <p id='warn_serial' class='text-danger'><b>Ultimo serial number inserito:</b> $max_serial</p>\n";
|
||
|
echo " </div>\n";
|
||
|
echo " </div>\n";
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//Totale prodotti da inserire
|
||
|
echo " <div class=\"row\">\n";
|
||
|
echo " <div class=\"col-md-12\">\n";
|
||
|
echo " <p class='text-danger text-center\'>Totale prodotti da inserire: <span id='totale_prodotti'>0</span></p>\n";
|
||
|
echo " <button type='submit' id='inserisci' class='btn-app' onclick=\"if( confirm('Confermi l\\'inserimento di '+globalsp.n_prodotti+' prodotti?') ){ $('#insert_form').submit(); }\"><i class='fa fa-check'></i> Salva</button>\n";
|
||
|
|
||
|
//Visualizzo, in base alle impostazioni scelte, se il magazzino verrà movimentato
|
||
|
if( get_var("Movimenta il magazzino durante l'inserimento o eliminazione dei lotti/serial number")==true )
|
||
|
echo " <small>L’inserimento incrementerà la quantità dell’articolo!</small>\n";
|
||
|
else
|
||
|
echo " <small>L’inserimento non movimenterà la quantità dell’articolo!</small>\n";
|
||
|
|
||
|
|
||
|
echo " </div>\n";
|
||
|
echo " </div>\n";
|
||
|
echo " </form>\n";
|
||
|
|
||
|
echo " </div>\n";
|
||
|
echo "</div>\n";
|
||
|
|
||
|
|
||
|
// campi di ricerca
|
||
|
echo "<div class=\"panel panel-primary\">\n";
|
||
|
echo " <div class=\"panel-heading\">\n";
|
||
|
echo " <h3 class=\"panel-title\">Ricerca prodotti</h3>\n";
|
||
|
echo " </div>\n";
|
||
|
|
||
|
echo " <div class=\"panel-body\">\n";
|
||
|
|
||
|
echo " <p>Puoi ricercare un prodotto venduto o acquistato a partire serial </p>\n";
|
||
|
|
||
|
echo " <form action=\"\" method=\"get\" role=\"form\">\n";
|
||
|
echo " <input type=\"hidden\" name=\"backto\" value=\"record-edit\">\n";
|
||
|
echo " <input type=\"hidden\" name=\"id_record\" value=\"$id_record\">\n";
|
||
|
echo " <input type=\"hidden\" name=\"id_module\" value=\"$id_module\">\n";
|
||
|
|
||
|
echo " <div class=\"row form-group\">\n";
|
||
|
echo " <div class=\"col-md-3\">\n";
|
||
|
echo " <label class=\"control-label\" for=\"search_serial\">Serial number:</label>\n";
|
||
|
echo " <input type='text' class='form-control input-md' id='search_serial' name='search_serial' value=\"".$search_serial."\" />";
|
||
|
echo " </div>\n";
|
||
|
echo " </div>\n";
|
||
|
echo " <button type='submit' id='ricerca' class='btn btn-primary' ><i class='fa fa-search'></i> Avvia ricerca</button>\n";
|
||
|
echo " </form><br/>\n";
|
||
|
|
||
|
|
||
|
echo "<div class=\"text-right\">\n";
|
||
|
//Visualizzo, in base alle impostazioni scelte, se il magazzino verrà movimentato
|
||
|
if( get_var("Movimenta il magazzino durante l'inserimento o eliminazione dei serial number")==true )
|
||
|
echo "<small style='color:#f00;'>La cancellazione decrementerà la quantità dell’articolo!</small>\n";
|
||
|
else
|
||
|
echo "<small style='color:#f00;'>L’inserimento non decrementerà la quantità dell’articolo!</small>\n";
|
||
|
echo "</div>\n";
|
||
|
echo "<br/>\n";
|
||
|
|
||
|
|
||
|
|
||
|
//Conteggio totale prodotti
|
||
|
$rs = $dbo->fetchArray("SELECT COUNT(id) AS tot FROM mg_prodotti WHERE idarticolo='".$id_record."'");
|
||
|
$tot_prodotti = $rs[0]['tot'];
|
||
|
|
||
|
//Visualizzazione di tutti i prodotti
|
||
|
$query = "SELECT * FROM mg_prodotti WHERE idarticolo='".$id_record."' AND serial LIKE \"%$search_serial%\" ";
|
||
|
|
||
|
|
||
|
( isset($_GET['show_all3']) && $_GET['show_all3']!='' && $search_serial=='' ) ? $show_all=$_GET['show_all3'] : $show_all='0';
|
||
|
$query .= " ORDER BY data DESC, serial DESC";
|
||
|
|
||
|
if( $show_all=='0' )
|
||
|
$query .= " LIMIT 0, 20";
|
||
|
|
||
|
$rs2 = $dbo->fetchArray($query);
|
||
|
|
||
|
if( sizeof($rs2)==0 ){
|
||
|
echo "<p>"._("Nessun articolo trovato")."...</p>\n";
|
||
|
echo "<a href='".$rootdir."/editor.php?id_module=".$modules_info['Articoli']['id']."&id_record=".$id_record."&showall3=1#tab_3'>[ Mostra tutti i prodotti ]</a>\n";
|
||
|
}
|
||
|
else{
|
||
|
|
||
|
echo "<table class='table table-striped table-hover table-condensed table-bordered'>\n";
|
||
|
|
||
|
echo "<thead><tr>\n";
|
||
|
echo " <th width='200' id=\"th_Serial\">Serial</th>\n";
|
||
|
echo " <th width='200' id=\"th_Data di creazione\">Data di creazione</th>\n";
|
||
|
echo " <th width='400' id=\"th_Documento di carico\">Ordine Fornitore</th>\n";
|
||
|
echo " <th width='400' id=\"th_Documento di vendita\">Documento</th>\n";
|
||
|
echo " <th width='100' id=\"th_Totale\">Totale</th>\n";
|
||
|
echo " <th> </th>\n";
|
||
|
echo "</tr></thead>\n";
|
||
|
|
||
|
echo "<tbody>\n";
|
||
|
|
||
|
for( $i=0; $i<sizeof($rs2); $i++ ){
|
||
|
|
||
|
echo "<td class='text-center'>\n";
|
||
|
echo $rs2[$i]['serial']."\n";
|
||
|
echo "</td>\n";
|
||
|
|
||
|
echo "<td class='text-center'>\n";
|
||
|
echo date("d/m/Y H:i:s", strtotime($rs2[$i]['data']))."\n";
|
||
|
echo "</td>\n";
|
||
|
// ricerco evbemntuali dordini di carico
|
||
|
$query4 = "SELECT * FROM mg_prodotti WHERE idarticolo='".$id_record."' AND serial=\"".$rs2[$i]['serial']."\" AND id_riga_ordine <> 0";
|
||
|
$rs4 = $dbo->fetchArray($query4);
|
||
|
if( sizeof($rs4)==1 ){
|
||
|
$query4 = "SELECT * from or_righe_ordini
|
||
|
left join or_ordini on or_ordini.id=or_righe_ordini.idordine
|
||
|
left join an_anagrafiche on an_anagrafiche.idanagrafica = or_ordini.idanagrafica
|
||
|
WHERE or_righe_ordini.id='".$rs4[0]['id_riga_ordine']."' ";
|
||
|
$rs4 = $dbo->fetchArray($query4);
|
||
|
echo "<td class=''>\n";
|
||
|
echo "<a href=\"".$rootdir."/editor.php?id_module=".$modules_info['Ordini fornitore']['id']."&id_record=".$rs4[0]['idordine']."\" title=\"Clicca per aprire questo ordine\" target=\"_blank\">Ordine n<sup>o</sup> ".$rs4[0]['numero_esterno']." del ".date( "d/m/Y", strtotime($rs4[0]['data']) )."</a>\n";
|
||
|
echo "</td>\n";
|
||
|
// echo "<td class=''> </td>\n";
|
||
|
}
|
||
|
else{
|
||
|
//ordine
|
||
|
echo "<td class='text-left'>\n";
|
||
|
echo "\n";
|
||
|
echo "</td>\n";
|
||
|
}
|
||
|
//Venduto su fatture
|
||
|
$query4 = "SELECT * FROM mg_prodotti WHERE idarticolo='".$id_record."' AND serial=\"".$rs2[$i]['serial']."\" AND id_riga_documento <> 0";
|
||
|
$rs4 = $dbo->fetchArray($query4);
|
||
|
|
||
|
|
||
|
if( sizeof($rs4)==1 ){
|
||
|
|
||
|
$query4 = "SELECT *, ( SELECT descrizione FROM co_tipidocumento WHERE id=(SELECT idtipodocumento FROM co_documenti WHERE id=iddocumento) ) AS tipo_documento, ( SELECT `dir` FROM co_tipidocumento WHERE id=(SELECT idtipodocumento FROM co_documenti WHERE id=iddocumento) ) AS `dir`, ( SELECT numero FROM co_documenti WHERE id=iddocumento ) AS numero, ( SELECT numero_esterno FROM co_documenti WHERE id=iddocumento ) AS numero_esterno, ( SELECT data FROM co_documenti WHERE id=iddocumento ) AS data FROM co_righe_documenti WHERE id='".$rs4[0]['id_riga_documento']."' ";
|
||
|
$rs4 = $dbo->fetchArray($query4);
|
||
|
|
||
|
|
||
|
($rs4[0]['numero_esterno']!='') ? $numero=$rs4[0]['numero_esterno'] : $numero=$rs4[0]['numero'];
|
||
|
|
||
|
echo "<td class=''>\n";
|
||
|
echo "<a href=\"".$rootdir."/editor.php?id_module=".$modules_info['Fatture di vendita']['id']."&id_record=".$rs4[0]['iddocumento']."\" title=\"Clicca per aprire questo documento\" target=\"_blank\">".$rs4[0]['tipo_documento']." n<sup>o</sup> ".$numero." del ".date( "d/m/Y", strtotime($rs4[0]['data']) )."</a>\n";
|
||
|
echo "</td>\n";
|
||
|
|
||
|
echo "<td class='text-center'>\n";
|
||
|
echo "<span>€ ".number_format($rs4[0]['subtotale']+$rs4[0]['iva'], 2, ",", ".")."</span><br/><small style='color:#555;'>".number_format($rs4[0]['subtotale'], 2, ",", "." )." + ".number_format($rs4[0]['iva'], 2, ",", "." )."</small>\n";
|
||
|
echo "</td>\n";
|
||
|
|
||
|
// echo "<td class=''> </td>\n";
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//Non venduto
|
||
|
else{
|
||
|
//Documento
|
||
|
echo "<td class='text-left'>\n";
|
||
|
echo "\n";
|
||
|
echo "</td>\n";
|
||
|
|
||
|
|
||
|
//Totale
|
||
|
echo "<td class='text-center'>\n";
|
||
|
echo "\n";
|
||
|
echo "</td>\n";
|
||
|
}
|
||
|
echo "<td class='text-center'>\n";
|
||
|
|
||
|
echo " <form action='".$rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."' method='post' id='delete-form-".$rs2[$i]['id']."' role='form'>\n";
|
||
|
echo " <input type='hidden' name='backto' value='record-edit'>\n";
|
||
|
echo " <input type='hidden' name='id_record' value='".$id_record."'>\n";
|
||
|
echo " <input type='hidden' name='op' value='delprodotto'>\n";
|
||
|
echo " <input type='hidden' name='idprodotto' value='".$rs2[$i]['id']."'>\n";
|
||
|
|
||
|
echo " <a href='javascript:;' class='btn btn-sm btn-danger' title='Rimuovi questa riga' onclick=\"if( confirm('Vuoi eliminare questo prodotto?') ){ $('#delete-form-".$rs2[$i]['id']."').submit(); }\"><i class='fa fa-trash-o'></i></a>\n";
|
||
|
echo " </form>\n";
|
||
|
|
||
|
|
||
|
echo "</td>\n";
|
||
|
//}
|
||
|
echo "</tr>\n";
|
||
|
}
|
||
|
}
|
||
|
echo "</tbody>\n";
|
||
|
echo "</table>\n";
|
||
|
|
||
|
if( $_GET['show_all3']=='1' )
|
||
|
echo "<a href='".$rootdir."/editor.php?id_module=$id_module&id_record=$id_record&show_all3=0#tab_3'>[ Mostra solo gli ultimi 20 prodotti ]</a>\n";
|
||
|
else
|
||
|
echo "<a href='".$rootdir."/editor.php?id_module=$id_module&id_record=$id_record&show_all3=1#tab_3'>[ Mostra tutti i ".$tot_prodotti." prodotti ]</a>\n";
|
||
|
|
||
|
|
||
|
echo " </div>\n";
|
||
|
echo "</div>\n";
|
||
|
|
||
|
?>
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
|
||
|
globalsp = { n_prodotti: 0 };
|
||
|
|
||
|
|
||
|
$(document).ready( function(){
|
||
|
setInterval( "ricalcola_totale_prodotti()", 1000 );
|
||
|
});
|
||
|
|
||
|
/*
|
||
|
Queste funzioni servono a verificare se i codici di lotti, serial number e "altro" sono progressivi
|
||
|
*/
|
||
|
function check_progressivo( start, end, warn, submit_btn ){
|
||
|
digits_start = get_last_numeric_part( start.val().toString() );
|
||
|
digits_end = get_last_numeric_part( end.val().toString() );
|
||
|
|
||
|
//Nessun codice numerico trovato
|
||
|
if( digits_start=='' || digits_end=='' ){
|
||
|
warn.show();
|
||
|
submit_btn.hide();
|
||
|
}
|
||
|
else{
|
||
|
warn.hide();
|
||
|
submit_btn.show();
|
||
|
}
|
||
|
ricalcola_totale_prodotti();
|
||
|
}
|
||
|
|
||
|
function ricalcola_totale_prodotti(){
|
||
|
|
||
|
|
||
|
serial_start = get_last_numeric_part( $('input[name=serial_start]').val().toString() );
|
||
|
serial_end = get_last_numeric_part( $('input[name=serial_end]').val().toString() );
|
||
|
serial = Math.abs( parseInt(serial_end,10) - parseInt(serial_start,10) )+1;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//Se tutti i campi sono vuoti, il numero di prodotti è zero!
|
||
|
if( isNaN(serial) ){
|
||
|
globalsp.n_prodotti = 0;
|
||
|
}
|
||
|
|
||
|
else{
|
||
|
|
||
|
|
||
|
if( isNaN(serial) )
|
||
|
serial = 1;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
globalsp.n_prodotti = serial ;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
$('#totale_prodotti').text( globalsp.n_prodotti );
|
||
|
|
||
|
if( globalsp.n_prodotti==0 )
|
||
|
$('#inserisci').hide();
|
||
|
else
|
||
|
$('#inserisci').show();
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
Questa funzione restituisce la parte numerica di una stringa
|
||
|
*/
|
||
|
function get_last_numeric_part( str ){
|
||
|
var matches = str.match(/(.*?)([\d]*$)/);
|
||
|
return matches[2];
|
||
|
}
|
||
|
|
||
|
|
||
|
function reverse_string( s ){
|
||
|
return s.split("").reverse().join("");
|
||
|
}
|
||
|
|
||
|
</script>
|