gest366/modules/articoli/plugins/articoli.lotti.php

333 lines
12 KiB
PHP
Raw Permalink Normal View History

2021-02-24 20:40:04 +00:00
<?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&rsquo;inserimento incrementer&agrave; la quantit&agrave; dell&rsquo;articolo!</small>\n";
else
echo " <small>L&rsquo;inserimento non movimenter&agrave; la quantit&agrave; dell&rsquo;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&agrave; la quantit&agrave; dell&rsquo;articolo!</small>\n";
else
echo "<small style='color:#f00;'>L&rsquo;inserimento non decrementer&agrave; la quantit&agrave; dell&rsquo;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=''>&nbsp;</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>&euro; ".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=''>&nbsp;</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&amp;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&amp;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>