<%
Public SQL,RS,conn,DB
DB="DB/DATABASE.Accdb"
Set conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.Recordset")
CurrentProject ="Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" &Server.MapPath(DB) & ";Persist Security Info=False;"
conn.Open CurrentProject
'
'connessione al DB ACCESS effettuata
'
Dim Descrizione,idarticolo,prezzo,qtapresente,qtaprelevata,SW
Dim ThisProgram,formname
ThisProgram="ScaricaArticoli.asp"
formname=left(ThisProgram, len(ThisProgram) - 4)
descrizione="borse"
SW=""
for i=1 to Request.form("SW").Count
  SW= Request.form("SW")(i)
next
for i=1 to Request.QueryString("descrizione").Count
  descrizione=Request.QueryString("descrizione")(i)
next
for i=1 to Request.QueryString("qta").Count
  qta=Request.QueryString("qta")(i)
next
for i=1 to Request.QueryString("idarticolo").Count
  idarticolo=Request.QueryString("idarticolo")(i)
next
if SW="SCARICO" then
 Scarica descrizione, qta
end if
if SW="SCARICO" then
 Ricarica idarticolo, qta
end if
%>
<html>
<head>
<title>Scarico articoli</title>
<script type="text/javascript" language="javascript">
function Seleziona(pagina) {
 document.<%=formname%>.action = pagina;
 document.<%=formname%>.submit();
 return true;
}
function PrelevaArticolo() {
var descrizione;
 descrizione=prompt("descrizione articolo da scaricare","");
 if (descrizione){
  var qta=prompt("quanti pezzi ?",0);
  Scarica(qta,descrizione)
  }
}
function CaricaArticolo(){
 var idArticolo;
 document.getElementById("SW").value="CARICO";
 idArticolo=prompt("idArticolo da ricaricare","");
 if (idArticolo) {
  var qta=prompt("quanti pezzi ?",0);
  Ricarica(qta,idArticolo);
  }
}
function Scarica(Q,D){
  alert("vuoi scaricare n."+Q+" "+D);
  document.getElementById("SW").value="SCARICO";
  Seleziona("ScaricaArticoli.asp?descrizione="+D+"&qta="+Q);
}
function Ricarica(Q,I){
  alert("vuoi caricare n."+Q+" pezzi all'articolo id="+I);
  document.getElementById("SW").value="CARICO";
  Seleziona("ScaricaArticoli?idarticoloe="+I+"&qta="+Q);
}
function RicercaArticolo(des){
Seleziona("ScaricaArticoli.asp?descrizione="+des);
}
</script>
<style type="text/css">
div.box
{
    width:99.6% !important;  width /**/:99.6%;
    height:450px !important; height /**/: 450px;
    padding: 4px;
    border:1px solid #EEE; border-right:0 solid;
    overflow:auto;
   background-color:#CCCCCC;
}
.txt1 {
 color:blue;
 font-family:Verdana, Geneva, Tahoma, sans-serif;
 font-size: 14px;
}
.auto-style1 {
   color: #008000;
   text-align: center;
}
.auto-style2 {
   font-family: Verdana, Geneva, Tahoma, sans-serif;
   font-size: xx-small;
}
</style>
</head>
<body>
<form name="<%=formname%>" id="<%=formname%>" action="" method="post"  >
<input type="hidden" id="SW" name="SW" value="" />
<%
'
' struttura tabella Articoli
'
' idArticolo    numerico long int
' descrizione   text  255 char
' qtaPresent    numerico long int
' qtaPrelevata  numerico long int
' prezzo        numerico double 2 decimali
'
'
if descrizione="*" then
 SQL="select * from Articoli where qtapresente>0"
else
SQL="select * from Articoli where  descrizione='"& descrizione & "' and qtaPresente > 0 order by idArticolo ASC"
end if
RS.Open SQL, conn, 3, 3
%>
<p align="center"><h2 class="auto-style1">Programma di test - scarico articoli dal magazzino</h2></p>
<h3 class="txt1">RICERCA ARTICOLI:
<input type="text" class="txt1" id="descrizione" name="descrizione" value="<%=descrizione%>" maxlength="50" size="50" /> <input type="button" value=" ricerca " class="txt1" onclick="RicercaArticolo(descrizione.value)" /></h3>
 
<table width="99.6%" border="0" cellspacing="2" cellpadding="3">
  <tr bgcolor="#ff9999" class="txt1">
                 <th width="15%" align="center">ID.ARTICOLO</th>
                 <th width="40%">DESCRIZIONE</th>
                 <th width="15%">Q.TA'PRESENTE</th>
                 <th width="15%">Q.TA'PRELEVATA</th>
                 <th width="15%">PREZZO UNI.</th>
    </tr>
</table>
<div class="box">
<table width="99.6%" border="0" cellspacing="2" cellpadding="3">   
<%
if not RS.EOF then
   do until RS.EOF
     idArticolo=RS("idArticolo")
     StampaRiga(RS)
     RS.Movenext
   loop
end if  
RS.Close
%>
</table>
</div>
<p>
<input type="button" value="RICARICO" onclick="CaricaArticolo()" class="auto-style2" ><span class="auto-style2">  
</span>
<input type="button" value="PRELIEVO" onclick="PrelevaArticolo()" class="auto-style2" ></p>
   <p class="auto-style2"> free software by vic53 2019</p>
</form>
</body>
</html>
<%
sub StampaRiga(RS)
prezzo=formatNumber(RS("prezzo"),2)
response.write("<tr bgcolor=""#ffff99""> ")
response.write("<td  align=""center"" width=""15%"">" & RS("idArticolo") & "</td>")
response.write("<td  width=""40%"">" & RS("descrizione") & "</td>")
response.write("<td  align=""center"" width=""15%"">" & RS("qtaPresente") & "</td>")
response.write("<td  align=""center"" width=""15%"">" & RS("qtaPrelevata") & "</td>")
response.write("<td  align=""right"" width=""15%"">" & prezzo & "</td>")
response.write("</tr> ")
end sub
sub  Scarica(descrizione, qta)
'limite al numero degli articoli nella matrice articoli "Mart" con descrizione uguale = 200
Dim Mart(200,2), ctr,qtascarico,idx
qtascarico=qta
SQL="select * from Articoli where descrizione = '"&descrizione&"' order by idarticolo ASC"
RS.Open SQL, conn, 3, 3
ctr=0
if not RS.EOf then
 do until RS.EOF
  ctr=ctr+1 'numero di articoli da cui scaricare
  Mart(ctr,0)=RS("idArticolo")
  Mart(ctr,1)=RS("qtaPresente") - RS("qtaPrelevata")
  Mart(ctr,2)=0
  RS.Movenext
 loop
end if
RS.Close
'la matrice contiene i record da scaricare le qta
' questo è l'agoritmo che fara' lo scarico
idx=0
do until qtascarico = 0
 idx=idx+1
 if (idx > ctr) then '** fine matrice caricata con le qta
  exit do
 end if
 if (Mart(idx,1) > qtascarico) then   ' qta - qtascarico è la qta rimanente da scaricare
  Mart(idx,2)=qtascarico 'registra la qta prelevata in Mart(idx,2)
  qtascarico=Mart(idx,2) - qtascarico 'diventa zero
  exit do
 else
  if (Mart(idx,1) = qtascarico) then
     Mart(idx,2)=qtascarico 'registra la qta prelevata in Mart(idx,2)
     qtascarico=Mart(idx,2) - qtascarico 'diventa zero
     Mart(idx,2)=Mart(idx,1)
     exit do
  else
     Mart(idx,2)=Mart(idx,1)
     qtascarico=qtascarico - Mart(idx,2)
  end if   
 end if  
loop
'ora stampa la matrice
W "matrice articoli - n.righe="&ctr
W " id articolo | qtapresente | qtaprelevata|"
for idx=1 to ctr
 W Mart(idx,0)&" | "&Mart(idx,1)&" | "&Mart(idx,2)
next
end sub
sub W(msg)
response.write "<br>"&msg
end sub
sub Ricarica(idarticolo, qta)
end sub
'chiusura connessione al DB
conn.Close
Set conn = nothing
Set RS = nothing
%>