diff --git a/AppData/ComLib.cs b/AppData/ComLib.cs index 409bd96..6840eee 100644 --- a/AppData/ComLib.cs +++ b/AppData/ComLib.cs @@ -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 /// /// /// - public bool resetPostUnload(int SheetID = 0) + public bool resetSheetUnload(int SheetID = 0) { bool answ = false; try @@ -1470,9 +1470,8 @@ namespace AppData /// 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; } + /// + /// Registra che un dato ITEM è stato prelevato in fase di scarico da ID foglio + datamatrix + /// + /// ID foglio + /// Cod del device di scarico + /// Cod datamatrix ITEM + /// + 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 dictData = new Dictionary(); + if (!string.IsNullOrEmpty(rawData)) + { + dictData = JsonConvert.DeserializeObject>(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; + } + /// + /// Registra che un dato ITEM è stato prelevato in fase di scarico da ID foglio + datamatrix + /// + /// ID foglio + /// Cod del device di scarico + /// + 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 dictData = JsonConvert.DeserializeObject>(rawData); + // cerco chiave device... + if (dictData.ContainsKey(deviceId)) + { + // sostituisco + dictData.Remove(deviceId); + } + answ = true; + } + catch + { } + } + return answ; + } /// /// Processa elenco items e salva in redis valori x css, elenchi, ... @@ -1571,7 +1646,7 @@ namespace AppData /// Elenco items specifici /// TTL della cache x salvataggio valori /// - public static string saveItemData(string currCss, string redKeyBase, string varName, List itemList, int dataCacheTTL) + public static string updateCssByItemList(string currCss, string redKeyBase, string varName, List 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; } + /// + /// Processa elenco items e salva in redis valori x css, elenchi, ... + /// + /// CSS corrente + /// HASH abse x area REDIS + /// nome variabile x elenco items + /// TTL della cache x salvataggio valori + /// + 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 dictData = JsonConvert.DeserializeObject>(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 } diff --git a/Jenkinsfile b/Jenkinsfile index 13629a5..58d5d60 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -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}') diff --git a/NKC_WF/WebUserControls/cmp_MU_suggestions.ascx b/NKC_WF/WebUserControls/cmp_MU_suggestions.ascx index d250e45..ac2ef7a 100644 --- a/NKC_WF/WebUserControls/cmp_MU_suggestions.ascx +++ b/NKC_WF/WebUserControls/cmp_MU_suggestions.ascx @@ -21,7 +21,9 @@
-
+
+

W.I.P.

+ (procedure under revision)
diff --git a/NKC_WF/WebUserControls/cmp_menuTop.ascx.cs b/NKC_WF/WebUserControls/cmp_menuTop.ascx.cs index 31e2e10..2d85a2a 100644 --- a/NKC_WF/WebUserControls/cmp_menuTop.ascx.cs +++ b/NKC_WF/WebUserControls/cmp_menuTop.ascx.cs @@ -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... diff --git a/NKC_WF/WebUserControls/cmp_unloadSmart.ascx.cs b/NKC_WF/WebUserControls/cmp_unloadSmart.ascx.cs index c1c3a6b..4c810cd 100644 --- a/NKC_WF/WebUserControls/cmp_unloadSmart.ascx.cs +++ b/NKC_WF/WebUserControls/cmp_unloadSmart.ascx.cs @@ -9,6 +9,39 @@ namespace NKC_WF.WebUserControls protected bool showBin = false; protected bool showCart = false; protected bool showSecOp = false; + /// + /// ID univoco da IP + /// + protected string deviceId = "AAA"; + + /// + /// Batch selezionato + /// + protected int BatchID; + /// + /// Sheet selezionato... + /// + protected int SheetID; + /// + /// IP del device + /// + /// + 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; } } + /// + /// Aggiorna dati correnti (IP, batch, sheet...) + /// + 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; } + /// + /// Prova a fare pickup (SOLO SE il mio item è nel foglio corrente...) + /// + /// + protected void tryPickup(string itemDtmx) + { + // salvo in item sel... + updateCurrData(); + deviceId = GetIPAddress().Replace(".", "0").Replace(":", "0"); + ComLib.saveItemPickup(SheetID, deviceId, itemDtmx); + } /// /// 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; diff --git a/NKC_WF/WebUserControls/cmp_unloadSmart.ascx.designer.cs b/NKC_WF/WebUserControls/cmp_unloadSmart.ascx.designer.cs index 7ec4d2b..f458543 100644 --- a/NKC_WF/WebUserControls/cmp_unloadSmart.ascx.designer.cs +++ b/NKC_WF/WebUserControls/cmp_unloadSmart.ascx.designer.cs @@ -7,198 +7,200 @@ // //------------------------------------------------------------------------------ -namespace NKC_WF.WebUserControls { - - - public partial class cmp_unloadSmart { - - /// - /// Controllo cmp_barcode. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::NKC_WF.WebUserControls.cmp_barcode cmp_barcode; - - /// - /// Controllo hfLastBCode. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.HiddenField hfLastBCode; - - /// - /// Controllo hfLastValidBCode. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.HiddenField hfLastValidBCode; - - /// - /// Controllo divItemDet. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.HtmlControls.HtmlGenericControl divItemDet; - - /// - /// Controllo hfItemID. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.HiddenField hfItemID; - - /// - /// Controllo lblItemCode. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.Label lblItemCode; - - /// - /// Controllo lblItemDesc. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.Label lblItemDesc; - - /// - /// Controllo lblItemDtmx. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.Label lblItemDtmx; - - /// - /// Controllo divItemError. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.HtmlControls.HtmlGenericControl divItemError; - - /// - /// Controllo lblErrorMsg. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.Label lblErrorMsg; - - /// - /// Controllo hfSecOp. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.HiddenField hfSecOp; - - /// - /// Controllo icnCart. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnCart; - - /// - /// Controllo icnBin. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnBin; - - /// - /// Controllo icnSecOp. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnSecOp; - - /// - /// Controllo lbtCancel. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.LinkButton lbtCancel; - - /// - /// Controllo lblLastBCode. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.Label lblLastBCode; - - /// - /// Controllo lblMessage. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.Label lblMessage; - - /// - /// Controllo lblDestination. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.Label lblDestination; - - /// - /// Controllo lbtScrapped. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.LinkButton lbtScrapped; - - /// - /// Controllo lbtParkArea. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.LinkButton lbtParkArea; - - /// - /// Controllo lbtResetSel. - /// - /// - /// Campo generato automaticamente. - /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. - /// - protected global::System.Web.UI.WebControls.LinkButton lbtResetSel; - } +namespace NKC_WF.WebUserControls +{ + + + public partial class cmp_unloadSmart + { + + /// + /// Controllo cmp_barcode. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::NKC_WF.WebUserControls.cmp_barcode cmp_barcode; + + /// + /// Controllo hfLastBCode. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.HiddenField hfLastBCode; + + /// + /// Controllo hfLastValidBCode. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.HiddenField hfLastValidBCode; + + /// + /// Controllo divItemDet. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl divItemDet; + + /// + /// Controllo hfItemID. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.HiddenField hfItemID; + + /// + /// Controllo lblItemCode. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.Label lblItemCode; + + /// + /// Controllo lblItemDesc. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.Label lblItemDesc; + + /// + /// Controllo lblItemDtmx. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.Label lblItemDtmx; + + /// + /// Controllo divItemError. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl divItemError; + + /// + /// Controllo lblErrorMsg. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.Label lblErrorMsg; + + /// + /// Controllo hfSecOp. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.HiddenField hfSecOp; + + /// + /// Controllo icnCart. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnCart; + + /// + /// Controllo icnBin. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnBin; + + /// + /// Controllo icnSecOp. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl icnSecOp; + + /// + /// Controllo lbtCancel. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.LinkButton lbtCancel; + + /// + /// Controllo lblLastBCode. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.Label lblLastBCode; + + /// + /// Controllo lblMessage. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.Label lblMessage; + + /// + /// Controllo lblDestination. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.Label lblDestination; + + /// + /// Controllo lbtScrapped. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.LinkButton lbtScrapped; + + /// + /// Controllo lbtParkArea. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.LinkButton lbtParkArea; + + /// + /// Controllo lbtResetSel. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.LinkButton lbtResetSel; + } }