using AppData; using NKC_SDK; using System; using System.Collections.Generic; 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 { /// /// Postazione attuale (per ora cablata) /// protected string PlaceId { get { return "WRK001"; } } /// /// 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; } } } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { resetShowData(); } cmp_barcode.eh_doRefresh += cmp_barcode_eh_doRefresh; } public void resetShowData() { cmp_KS_Cart.CartID = 0; cmp_ItemDet.ItemId = 0; lastObject = ""; ItemExtCode = ""; cmp_barcode.resetMessage(); cmp_barcode.resetInput(); divError.Visible = false; divInfo.Visible = false; fixVisibility(); } public invalidMode currMode { get { invalidMode answ = invalidMode.ND; try { answ = (invalidMode)Enum.Parse(typeof(invalidMode), hfMode.Value); } catch { } return answ; } set { hfMode.Value = value.ToString(); fixDisplay(); } } private void fixDisplay() { lblPart.Visible = false; lblCart.Visible = false; lbtInvalidateCart.Visible = false; lbtInvalidatePartCart.Visible = false; switch (currMode) { case invalidMode.Part: lblPart.Visible = true; break; case invalidMode.Cart: lblCart.Visible = true; break; case invalidMode.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 = ""; // 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) { displError(""); displInfo(""); 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 il MODO: se CART --> mostro button x invalidare ALL lbtInvalidateCart.Visible = (currMode == invalidMode.Cart); lbtInvalidateCart.DataBind(); // se PART --> il relativo modulo mostrerà reload checkPartCart(); } } } break; case codeType.Item: if (currMode != invalidMode.Part) { 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 { // salvo item e ext code... cmp_ItemDet.ItemId = codeInt; ItemExtCode = tabItems[0].ItemExtCode; // se PART --> il relativo modulo mostrerà reload checkPartCart(); } } break; case codeType.OtherItem: break; default: lastObject = ""; break; } } protected string ItemExtCode { get { return hfItemExtCode.Value; } set { hfItemExtCode.Value = value; } } private void checkPartCart() { // se ho part + cart mostro button if (currMode == invalidMode.Part) { if (cmp_ItemDet.ItemId > 0 && cmp_KS_Cart.CartID > 0) { lbtInvalidatePartCart.Visible = true; lbtInvalidatePartCart.DataBind(); } else { lbtInvalidatePartCart.Visible = false; } } else { lbtInvalidatePartCart.Visible = false; } } /// /// 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() { } /// /// Imposta il cart sugli oggetti dipendenti /// /// /// /// private void setCart(string rawData, int codeInt, string Description) { cmp_KS_Cart.CartID = codeInt; cmp_KS_Cart.CartDtmx = rawData; cmp_KS_Cart.CartDesc = Description; cmp_KS_Cart.doUpdate(); fixVisibility(); } private void resetCart() { cmp_KS_Cart.CartID = 0; fixVisibility(); } private void resetItem() { cmp_ItemDet.ItemId = 0; fixVisibility(); } private void fixVisibility() { // reset grafico cmp_KS_Cart.Visible = cmp_KS_Cart.CartID > 0; } protected void lbtInvalidateCart_Click(object sender, EventArgs e) { // esegue la stored di reset dell'intero cart... DLMan.taIL.invalidateByCart(cmp_KS_Cart.CartID, PlaceId); // resetto resetShowData(); raiseReset(); } protected void lbtInvalidatePartCart_Click(object sender, EventArgs e) { // solo se ho in sessione dati... if (cmp_ItemDet.ItemId > 0 && cmp_KS_Cart.CartID > 0 && !string.IsNullOrEmpty(ItemExtCode)) { // esegue la stored di reset dell'intero cart... DLMan.taIL.invalidateByPartCart(cmp_KS_Cart.CartID,ItemExtCode, PlaceId); } // resetto resetShowData(); raiseReset(); } } /// /// MOdalità invalid su KittingSmart /// public enum invalidMode { ND = 0, Part, Cart } }