Merge branch 'develop'

This commit is contained in:
Samuele E. Locatelli
2020-01-21 19:11:19 +01:00
6 changed files with 400 additions and 224 deletions
+129 -18
View File
@@ -151,7 +151,7 @@ namespace AppData
{
string answ = "";
// recupero ultima call
string redKey = $"{ComLib.redNestAnsw}:LAST_CALL";
string redKey = $"{redNestAnsw}:LAST_CALL";
answ = memLayer.ML.getRSV(redKey);
return answ;
}
@@ -439,7 +439,7 @@ namespace AppData
if (hasValReq)
{
// invia a redis una richiesta...
ComLib.sendMaterials();
sendMaterials();
// recupero PRIMO batchID da validare
int nextBatchId = 0;
try
@@ -451,7 +451,7 @@ namespace AppData
if (nextBatchId > 0)
{
// richiedo!
ComLib.sendBatchReq(nextBatchId, "Estimation", 1);
sendBatchReq(nextBatchId, "Estimation", 1);
// registro su DB nesting iniziato... QUANDO MI RISPONDE dovrò verificare che era un abtch x VALIDAZIONE
DataLayer.man.taBL.updateStatus(nextBatchId, (int)BatchStatus.EstimationRequested, "", 0);
answ = true;
@@ -863,9 +863,9 @@ namespace AppData
foreach (Part currItem in PartList)
{
// calcolo parametri...
PostProcList = ComLib.getPostProcList(currItem.OptParameters);
ProcessesReq = ComLib.getProcessesReq(currItem.OptParameters);
pdfFilePath = ComLib.getPdfFilePath(currItem.OptParameters);
PostProcList = getPostProcList(currItem.OptParameters);
ProcessesReq = getProcessesReq(currItem.OptParameters);
pdfFilePath = getPdfFilePath(currItem.OptParameters);
DataLayer.man.taIL.updateFromNesting(currItem.PartId, currItem.MatId, PostProcList, ProcessesReq, pdfFilePath);
}
}
@@ -1451,7 +1451,7 @@ namespace AppData
/// </summary>
/// <param name="SheetID"></param>
/// <returns></returns>
public bool resetPostUnload(int SheetID = 0)
public bool resetSheetUnload(int SheetID = 0)
{
bool answ = false;
try
@@ -1470,9 +1470,8 @@ namespace AppData
/// <returns></returns>
public static string getCurrentCss(int sheetID)
{
// recupero da REDIS!
string redKey = $"{ComLib.machineUnloadArea(sheetID)}:Css";
string redKeyBase = $"{ComLib.machineUnloadArea(sheetID)}";
// area REDIS!
string redKeyBase = $"{machineUnloadArea(sheetID)}";
// TTL standard
int dataCacheTTL = memLayer.ML.cdvi("cssCacheTTL");
dataCacheTTL = dataCacheTTL <= 0 ? 60 : dataCacheTTL;
@@ -1519,18 +1518,22 @@ namespace AppData
// FIX BIN
answ = ComLib.saveItemData(answ, redKeyBase, "ItemsBin", itemsBin, dataCacheTTL);
answ = updateCssByItemList(answ, redKeyBase, "ItemsBin", itemsBin, dataCacheTTL);
// FIX CART
answ = ComLib.saveItemData(answ, redKeyBase, "ItemsCart", itemsCart, dataCacheTTL);
answ = updateCssByItemList(answ, redKeyBase, "ItemsCart", itemsCart, dataCacheTTL);
// FIX Scaricati
answ = ComLib.saveItemData(answ, redKeyBase, "ItemsDepo", itemsDepo, dataCacheTTL);
answ = updateCssByItemList(answ, redKeyBase, "ItemsDepo", itemsDepo, dataCacheTTL);
// FIX SEC-OP
answ = ComLib.saveItemData(answ, redKeyBase, "ItemsSecOp", itemsSecOp, dataCacheTTL);
answ = updateCssByItemList(answ, redKeyBase, "ItemsSecOp", itemsSecOp, dataCacheTTL);
// FIXED SEL da array oggetti selezionati...
answ = updateCssByPickedItems(answ, redKeyBase, "ItemsSel", dataCacheTTL);
#if false
string rawData = memLayer.ML.getRSV($"{redKeyBase}:ItemsSel");
if (!string.IsNullOrEmpty(rawData))
{
@@ -1550,17 +1553,89 @@ namespace AppData
// FIX CSS!
answ = answ.Replace("#ItemsSel", replaceVal);
replaceVal = "";
}
}
#endif
// INFINE serializzo e salvo tutti gli items trovati...
string serVal = JsonConvert.SerializeObject(itemsAll);
memLayer.ML.setRSV($"{redKeyBase}:ItemsAll", serVal, dataCacheTTL);
// salvo redis css!
memLayer.ML.setRSV(redKey, answ, dataCacheTTL);
memLayer.ML.setRSV($"{redKeyBase}:Css", answ, dataCacheTTL);
return answ;
}
/// <summary>
/// Registra che un dato ITEM è stato prelevato in fase di scarico da ID foglio + datamatrix
/// </summary>
/// <param name="sheetID">ID foglio</param>
/// <param name="deviceId">Cod del device di scarico</param>
/// <param name="itemDtmx">Cod datamatrix ITEM</param>
/// <returns></returns>
public static bool saveItemPickup(int sheetID, string deviceId, string itemDtmx)
{
// area REDIS!
string redKeyBase = $"{machineUnloadArea(sheetID)}";
bool answ = false;
string rawData = memLayer.ML.getRSV($"{redKeyBase}:ItemsSel");
Dictionary<string, string> dictData = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(rawData))
{
dictData = JsonConvert.DeserializeObject<Dictionary<string, string>>(rawData);
}
try
{
// cerco chiave device...
if (dictData.ContainsKey(deviceId))
{
// sostituisco
dictData[deviceId] = itemDtmx;
}
else
{
dictData.Add(deviceId, itemDtmx);
}
// salvo!
rawData = JsonConvert.SerializeObject(dictData);
memLayer.ML.setRSV($"{redKeyBase}:ItemsSel", rawData);
answ = true;
// reset memoria redis del CSS x obbligare refresh...
memLayer.ML.setRSV($"{redKeyBase}:Css", "");
}
catch
{ }
return answ;
}
/// <summary>
/// Registra che un dato ITEM è stato prelevato in fase di scarico da ID foglio + datamatrix
/// </summary>
/// <param name="sheetID">ID foglio</param>
/// <param name="deviceId">Cod del device di scarico</param>
/// <returns></returns>
public static bool resetItemPickup(int sheetID, string deviceId)
{
// area REDIS!
string redKeyBase = $"{machineUnloadArea(sheetID)}";
bool answ = false;
string rawData = memLayer.ML.getRSV($"{redKeyBase}:ItemsSel");
if (!string.IsNullOrEmpty(rawData))
{
try
{
Dictionary<string, string> dictData = JsonConvert.DeserializeObject<Dictionary<string, string>>(rawData);
// cerco chiave device...
if (dictData.ContainsKey(deviceId))
{
// sostituisco
dictData.Remove(deviceId);
}
answ = true;
}
catch
{ }
}
return answ;
}
/// <summary>
/// Processa elenco items e salva in redis valori x css, elenchi, ...
@@ -1571,7 +1646,7 @@ namespace AppData
/// <param name="itemList">Elenco items specifici</param>
/// <param name="dataCacheTTL">TTL della cache x salvataggio valori</param>
/// <returns></returns>
public static string saveItemData(string currCss, string redKeyBase, string varName, List<string> itemList, int dataCacheTTL)
public static string updateCssByItemList(string currCss, string redKeyBase, string varName, List<string> itemList, int dataCacheTTL)
{
string replaceVal = "";
if (itemList.Count > 0)
@@ -1586,7 +1661,6 @@ namespace AppData
}
// FIX CSS!
currCss = currCss.Replace($"#{varName}", replaceVal);
replaceVal = "";
//serializzo e salvo
string serVal = JsonConvert.SerializeObject(itemList);
memLayer.ML.setRSV($"{redKeyBase}:{varName}", serVal, dataCacheTTL);
@@ -1594,6 +1668,43 @@ namespace AppData
return currCss;
}
/// <summary>
/// Processa elenco items e salva in redis valori x css, elenchi, ...
/// </summary>
/// <param name="currCss">CSS corrente</param>
/// <param name="redKeyBase">HASH abse x area REDIS</param>
/// <param name="varName">nome variabile x elenco items</param>
/// <param name="dataCacheTTL">TTL della cache x salvataggio valori</param>
/// <returns></returns>
public static string updateCssByPickedItems(string currCss, string redKeyBase, string varName, int dataCacheTTL)
{
string replaceVal = "";
string rawData = memLayer.ML.getRSV($"{redKeyBase}:ItemsSel");
if (!string.IsNullOrEmpty(rawData))
{
try
{
Dictionary<string, string> dictData = JsonConvert.DeserializeObject<Dictionary<string, string>>(rawData);
// ciclo x cercare x ogni chiave (sessione utente)
foreach (var item in dictData)
{
replaceVal += $"#{item.Value},";
}
if (replaceVal.Length > 1)
{
replaceVal = replaceVal.Remove(replaceVal.Length - 1);
}
// FIX CSS!
currCss = currCss.Replace("#ItemsSel", replaceVal);
}
catch
{ }
}
return currCss;
}
#endregion
}
Vendored
+1 -1
View File
@@ -17,7 +17,7 @@ pipeline {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
withEnv(['NEXT_BUILD_NUMBER=209']) {
withEnv(['NEXT_BUILD_NUMBER=211']) {
// env.versionNumber = VersionNumber(versionNumberString : '0.9.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2019-07-01', skipFailedBuilds: true)
env.versionNumber = VersionNumber(versionNumberString : '0.9.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2019-07-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.versionNumberBeta = VersionNumber(versionNumberString : '0.9.${BUILD_DATE_FORMATTED, "yyMM"}-beta.${BUILDS_ALL_TIME}', projectStartDate : '2019-07-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
@@ -21,7 +21,9 @@
</div>
<div class="col-2">
</div>
<div class="col-2">
<div class="col-2 text-light">
<h2>W.I.P.</h2>
(procedure under revision)
</div>
<div class="col-2">
</div>
+1 -1
View File
@@ -110,7 +110,7 @@ namespace NKC_WF.WebUserControls
if (doFullReset)
{
// reset REDIS x css
ComLib.man.resetPostUnload();
ComLib.man.resetSheetUnload();
// aggiorno vocabolario
DataWrap.DW.resetVocabolario();
// reset dati in cache x DbConfig...
+70 -9
View File
@@ -9,6 +9,39 @@ namespace NKC_WF.WebUserControls
protected bool showBin = false;
protected bool showCart = false;
protected bool showSecOp = false;
/// <summary>
/// ID univoco da IP
/// </summary>
protected string deviceId = "AAA";
/// <summary>
/// Batch selezionato
/// </summary>
protected int BatchID;
/// <summary>
/// Sheet selezionato...
/// </summary>
protected int SheetID;
/// <summary>
/// IP del device
/// </summary>
/// <returns></returns>
protected string GetIPAddress()
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipAddress))
{
string[] addresses = ipAddress.Split(',');
if (addresses.Length != 0)
{
return addresses[0];
}
}
return context.Request.ServerVariables["REMOTE_ADDR"];
}
protected string secOp
{
get
@@ -20,11 +53,27 @@ namespace NKC_WF.WebUserControls
hfSecOp.Value = value;
}
}
/// <summary>
/// Aggiorna dati correnti (IP, batch, sheet...)
/// </summary>
protected void updateCurrData()
{
//!!!FIXME!!! fare calcolo del VERO batch corrente...
BatchID = 242;
// FORSE 5/5?!?
var sheetList = DataLayer.man.taSHL.getByMLStatus(BatchID, 3, 5);
if (sheetList.Count > 0)
{
SheetID = sheetList[0].SheetID;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
deviceId = GetIPAddress().Replace(".", "_");
resetIcons();
updateCurrData();
}
cmp_barcode.eh_doRefresh += Cmp_barcode_eh_doRefresh;
cmp_barcode.eh_doReset += Cmp_barcode_eh_doReset;
@@ -82,15 +131,6 @@ namespace NKC_WF.WebUserControls
cmp_barcode.inputAcquired = "";
// aggiorno...
doUpdate();
#if false
// se richiesto faccio raiseEvent
if (doRaiseEv)
{
cmp_stackNextloading.doUpdate();
raiseEvent();
}
#endif
}
private bool processLastCmd(bool doRaiseEv)
@@ -102,13 +142,17 @@ namespace NKC_WF.WebUserControls
{
case codeType.UNK:
cmp_barcode.showOutput("text-danger", $"Unknown Data: {decoData.rawData} --> no action");
// elimino item sel...
ComLib.resetItemPickup(SheetID, deviceId);
doRaiseEv = true;
break;
case codeType.Item:
tryPickup(decoData.rawData);
cmp_barcode.showOutput("badge badge-success", $"Valid IT Code: {decoData.rawData}");
processItemSuggestion(decoData.codeType, decoData.rawData, decoData.codeInt);
break;
case codeType.ItemGeneric:
tryPickup(decoData.rawData);
cmp_barcode.showOutput("badge badge-success", $"Valid IG Code: {decoData.rawData}");
processItemSuggestion(decoData.codeType, decoData.rawData, decoData.codeInt);
break;
@@ -138,11 +182,24 @@ namespace NKC_WF.WebUserControls
break;
default:
cmp_barcode.showOutput("text-danger", $"Unknown Data: {decoData.rawData} --> no action");
// elimino item sel...
ComLib.resetItemPickup(SheetID, deviceId);
break;
}
return doRaiseEv;
}
/// <summary>
/// Prova a fare pickup (SOLO SE il mio item è nel foglio corrente...)
/// </summary>
/// <param name="itemDtmx"></param>
protected void tryPickup(string itemDtmx)
{
// salvo in item sel...
updateCurrData();
deviceId = GetIPAddress().Replace(".", "0").Replace(":", "0");
ComLib.saveItemPickup(SheetID, deviceId, itemDtmx);
}
/// <summary>
/// Processo il DataMatrix letto
@@ -199,6 +256,8 @@ namespace NKC_WF.WebUserControls
// dichiaro che è depositato
DataLayer.man.taIL.updateStatus(itemIdSelected, 4, "WRK001");
lblDestination.Text = $"Item {itemIdSelected} PUT IN CART {rawData}";
// elimino item sel...
ComLib.resetItemPickup(SheetID, deviceId);
}
}
break;
@@ -217,6 +276,8 @@ namespace NKC_WF.WebUserControls
// dichiaro che è depositato
DataLayer.man.taIL.updateStatus(itemIdSelected, 5, "WRK001");
lblDestination.Text = $"Item {itemIdSelected} PUT IN BIN {rawData}";
// elimino item sel...
ComLib.resetItemPickup(SheetID, deviceId);
}
}
break;
+196 -194
View File
@@ -7,198 +7,200 @@
// </generato automaticamente>
//------------------------------------------------------------------------------
namespace NKC_WF.WebUserControls {
public partial class cmp_unloadSmart {
/// <summary>
/// Controllo cmp_barcode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::NKC_WF.WebUserControls.cmp_barcode cmp_barcode;
/// <summary>
/// Controllo hfLastBCode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfLastBCode;
/// <summary>
/// Controllo hfLastValidBCode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfLastValidBCode;
/// <summary>
/// Controllo divItemDet.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divItemDet;
/// <summary>
/// Controllo hfItemID.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfItemID;
/// <summary>
/// Controllo lblItemCode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblItemCode;
/// <summary>
/// Controllo lblItemDesc.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblItemDesc;
/// <summary>
/// Controllo lblItemDtmx.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblItemDtmx;
/// <summary>
/// Controllo divItemError.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divItemError;
/// <summary>
/// Controllo lblErrorMsg.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblErrorMsg;
/// <summary>
/// Controllo hfSecOp.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfSecOp;
/// <summary>
/// Controllo icnCart.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnCart;
/// <summary>
/// Controllo icnBin.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnBin;
/// <summary>
/// Controllo icnSecOp.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnSecOp;
/// <summary>
/// Controllo lbtCancel.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtCancel;
/// <summary>
/// Controllo lblLastBCode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblLastBCode;
/// <summary>
/// Controllo lblMessage.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblMessage;
/// <summary>
/// Controllo lblDestination.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblDestination;
/// <summary>
/// Controllo lbtScrapped.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtScrapped;
/// <summary>
/// Controllo lbtParkArea.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtParkArea;
/// <summary>
/// Controllo lbtResetSel.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtResetSel;
}
namespace NKC_WF.WebUserControls
{
public partial class cmp_unloadSmart
{
/// <summary>
/// Controllo cmp_barcode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::NKC_WF.WebUserControls.cmp_barcode cmp_barcode;
/// <summary>
/// Controllo hfLastBCode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfLastBCode;
/// <summary>
/// Controllo hfLastValidBCode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfLastValidBCode;
/// <summary>
/// Controllo divItemDet.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divItemDet;
/// <summary>
/// Controllo hfItemID.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfItemID;
/// <summary>
/// Controllo lblItemCode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblItemCode;
/// <summary>
/// Controllo lblItemDesc.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblItemDesc;
/// <summary>
/// Controllo lblItemDtmx.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblItemDtmx;
/// <summary>
/// Controllo divItemError.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divItemError;
/// <summary>
/// Controllo lblErrorMsg.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblErrorMsg;
/// <summary>
/// Controllo hfSecOp.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfSecOp;
/// <summary>
/// Controllo icnCart.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnCart;
/// <summary>
/// Controllo icnBin.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnBin;
/// <summary>
/// Controllo icnSecOp.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnSecOp;
/// <summary>
/// Controllo lbtCancel.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtCancel;
/// <summary>
/// Controllo lblLastBCode.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblLastBCode;
/// <summary>
/// Controllo lblMessage.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblMessage;
/// <summary>
/// Controllo lblDestination.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblDestination;
/// <summary>
/// Controllo lbtScrapped.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtScrapped;
/// <summary>
/// Controllo lbtParkArea.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtParkArea;
/// <summary>
/// Controllo lbtResetSel.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtResetSel;
}
}