using AppData; using NKC_SDK; using SteamWare; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace NKC_WF.WebUserControls { public partial class cmp_kittingSmartAdvInvalid : BaseUserControl { /// /// Comando barcode letto /// protected string lastCmd { get { return hfLastBCode.Value; } set { hfLastBCode.Value = value; lastValidCmd = value; } } /// /// Ultimo object letto /// protected string lastObject { get { return hfLastObject.Value; } set { hfLastObject.Value = value; } } /// /// ULTIMO Comando barcode VALIDO (!="") letto /// protected string lastValidCmd { get { return hfLastValidBCode.Value; } set { // solo se è !="" if (!string.IsNullOrEmpty(value)) { hfLastValidBCode.Value = value; } } } /// /// CartID selezionato /// protected int CartID { get { int answ = 0; int.TryParse(hfCartId.Value, out answ); return answ; } set { hfCartId.Value = value.ToString(); cmp_KS_Cart.CartID = value; cmp_KS_Cart.doUpdate(); } } /// /// ItemID selezionato /// protected int ItemID { get { int answ = 0; int.TryParse(hfItemId.Value, out answ); return answ; } set { hfItemId.Value = value.ToString(); cmp_ItemDet.ItemId = value; cmp_ItemDet.doUpdate(); } } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { resetShowData(); } cmp_barcode.eh_doRefresh += cmp_barcode_eh_doRefresh; } public void resetShowData() { CartID = 0; ItemID = 0; lastObject = ""; ItemExtCode = ""; cmp_barcode.resetMessage(); cmp_barcode.resetInput(); divError.Visible = false; divInfo.Visible = false; fixVisibility(); } public KSAdMode currMode { get { KSAdMode answ = KSAdMode.ND; try { answ = (KSAdMode)Enum.Parse(typeof(KSAdMode), hfMode.Value); } catch { } return answ; } set { hfMode.Value = value.ToString(); fixDisplay(); } } private void fixDisplay() { lblPart.Visible = false; lblCart.Visible = false; lblRevalid.Visible = false; lbtInvalidateCart.Visible = false; lbtInvalidatePartCart.Visible = false; switch (currMode) { case KSAdMode.InvalidPart: lblPart.Visible = true; break; case KSAdMode.InvalidCart: lblCart.Visible = true; break; case KSAdMode.RevalidPart: lblRevalid.Visible = true; break; case KSAdMode.ND: default: break; } } private void cmp_barcode_eh_doRefresh(object sender, EventArgs e) { bool doRaiseEv = false; // processo evento.. lastCmd = cmp_barcode.inputAcquired.ToUpper(); doRaiseEv = processLastCmd(doRaiseEv); // reset comando cmp_barcode.inputAcquired = ""; cmp_barcode.resetInput(); // aggiorno... doUpdate(); if (doRaiseEv) { raiseEvent(); } } private bool processLastCmd(bool doRaiseEv) { if (string.IsNullOrEmpty(lastCmd)) doRaiseEv = true; // processiamo barcode letto decodedData decoData = DLMan.decodeBcode(lastCmd); switch (decoData.codeType) { case codeType.Item: cmp_barcode.showOutput(cssClass.success, $"Valid IT Code: {decoData.rawData}"); processItemSuggestion(decoData.codeType, decoData.rawData, decoData.codeInt); break; case codeType.OtherItem: cmp_barcode.showOutput(cssClass.success, $"Valid Generic PART Code: {decoData.rawData}"); processItemSuggestion(decoData.codeType, decoData.rawData, decoData.codeInt); break; case codeType.Cart: cmp_barcode.showOutput(cssClass.success, $"{decoData.description}"); processItemSuggestion(decoData.codeType, decoData.rawData, decoData.codeInt); doRaiseEv = true; break; default: cmp_barcode.showOutput(cssClass.danger, $"{traduci("UnknownData")} {decoData.rawData} {traduci("NoAction")}"); resetSelection(); break; } return doRaiseEv; } /// /// Processo il DataMatrix letto /// /// /// /// private void processItemSuggestion(codeType tipoCod, string rawData, int codeInt) { divInfo.Visible = false; divError.Visible = false; DataLayer DLMan = new DataLayer(); // processo suggerimenti x ITEM / cart / bin dato suo RawData (Dtmx) e Cod univoco (intero) switch (tipoCod) { case codeType.Cart: // primo step: verifico dal codice CART l'ordine da cui deriva... var tabCart = DLMan.taCOK.getByKey(codeInt); if (tabCart.Count == 0) { displError($"{traduci("KS_ADV_CartNotFound")} {rawData}, {traduci("ErrPleaseRetry")}"); resetCart(); } else { var rigaCart = tabCart[0]; // verifico il cart NON ABBIA FINITO il KITTING (start ma NON end) if (!rigaCart.IsKittingEndNull()) { displError($"{traduci("KS_ADV_CartAlreadyKitted")} {rawData} --> OrdExtCode {rigaCart.OrderExtCode}, {traduci("ErrPleaseRetry")}"); resetCart(); } else { // se non è al kitting non può resettare if (rigaCart.IsKittingStartNull()) { displError($"{traduci("KS_ADV_CartNotKitting")} {rawData} --> OrdExtCode {rigaCart.OrderExtCode}, {traduci("ErrPleaseRetry")}"); resetCart(); } else { // mostro CART! string descr = "-"; try { descr = rigaCart.OrderExtCode; } catch { } setCart(rawData, codeInt, descr); // verifico cosa mostrare/fare checkPartCart(); } } } break; case codeType.Item: if (currMode == KSAdMode.InvalidCart) { displError($"{traduci("KS_ADV_WrongMode")} {rawData} --> {traduci("ErrPleaseRetry")}"); resetItem(); } else { // verifico item esistente var tabItems = DLMan.taIL.getByKey(codeInt); if (tabItems.Count == 0) { displError($"{traduci("KS_ADV_ItemNotFound")} {rawData}, {traduci("ErrPleaseRetry")}"); resetItem(); } else { setItem(rawData, codeInt, tabItems[0].ItemExtCode); // verifico cosa mostrare/fare checkPartCart(); } } break; case codeType.OtherItem: break; default: lastObject = ""; break; } } protected string ItemExtCode { get { return hfItemExtCode.Value; } set { hfItemExtCode.Value = value; } } protected string ItemDtmx { get { return hfItemDtmx.Value; } set { hfItemDtmx.Value = value; } } private void checkPartCart() { // reset preliminare lbtInvalidateCart.Visible = false; lbtInvalidatePartCart.Visible = false; switch (currMode) { case KSAdMode.InvalidCart: // verifico il MODO: se CART --> mostro button x invalidare ALL lbtInvalidateCart.Visible = true; lbtInvalidateCart.DataBind(); break; case KSAdMode.InvalidPart: // se SONO in modalità invalid part/cart ho part + cart mostro button if (ItemID > 0 && CartID > 0) { lbtInvalidatePartCart.Visible = true; lbtInvalidatePartCart.DataBind(); } else { lbtInvalidatePartCart.Visible = false; } break; case KSAdMode.RevalidPart: // se son in modalità revalidazione... if (ItemID > 0 && CartID > 0) { // acquisisco... DLMan.taPLog.acquireItems(ItemID, CartID, currIpAddress, user_std.UtSn.userNameAD); lgInfo($"cmp_KittingSmartAdvInvalid | taPLog.acquireItems | ItemID : {ItemID} | CartID: {CartID} | user: {user_std.UtSn.userNameAD} | IP: {currIpAddress}"); // resetto (solo cart) CartID = 0; ItemID = 0; // mostro messaggio... string message = $"{ItemDtmx} {traduci("Part")} {ItemExtCode} {traduci("PutInCart")} {cmp_KS_Cart.CartDtmx}"; displInfo(message); } break; case KSAdMode.ND: default: break; } } /// /// Mostra INFO ed effettua reset vari... /// /// protected void displInfo(string infoMessage) { lblSuccessMsg.Text = infoMessage; divError.Visible = false; divInfo.Visible = true; resetSelection(); } /// /// Mostra ERROR ed effettua reset vari... /// /// protected void displError(string errorMessage) { lblErrorMsg.Text = errorMessage; divError.Visible = true; divInfo.Visible = false; resetSelection(); } protected void doUpdate() { } protected void resetSelection() { resetCart(); resetItem(); } /// /// Imposta ITEM sugli oggetti dipendenti /// /// /// /// private void setItem(string rawData, int codeInt, string itemExtCode) { // salvo item e ext code... ItemExtCode = itemExtCode; ItemDtmx = rawData; ItemID = codeInt; fixVisibility(); } /// /// Imposta il cart sugli oggetti dipendenti /// /// /// /// private void setCart(string rawData, int codeInt, string Description) { cmp_KS_Cart.CartDtmx = rawData; cmp_KS_Cart.CartDesc = Description; CartID = codeInt; fixVisibility(); } private void resetCart() { CartID = 0; fixVisibility(); } private void resetItem() { ItemID = 0; fixVisibility(); } private void fixVisibility() { // reset grafico cmp_KS_Cart.Visible = CartID > 0; checkPartCart(); } protected void lbtInvalidateCart_Click(object sender, EventArgs e) { // esegue la stored di reset dell'intero cart... DLMan.taIL.invalidateByCart(CartID, PlaceId); // resetto resetShowData(); raiseReset(); } protected void lbtInvalidatePartCart_Click(object sender, EventArgs e) { // solo se ho in sessione dati... if (ItemID > 0 && CartID > 0 && !string.IsNullOrEmpty(ItemExtCode)) { // esegue la stored di reset delle PART con quel ExtCode nel cart... DLMan.taIL.invalidateByPartCart(CartID, ItemExtCode, PlaceId); } // resetto resetShowData(); Response.Redirect(Request.RawUrl); } } /// /// Modalità operativa su KittingSmartAdvanced /// public enum KSAdMode { ND = 0, InvalidPart, InvalidCart, RevalidPart } }