Exemplo n.º 1
0
        /** Event logic is implemented here */
        public override void Engage(int keyValue)
        {
            Item item = new Item();

            item.Organization_no = PosSettings.Default.Organization;

            // if (keyValue > 0)
            // {
            //     item.Plu = keyValue;
            //     item.LoadByPLU();
            //
            // }
            //  else
            // {
            if (PosContext.Instance.InputLine.Length == 0 &&
                PosContext.Instance.ItemLookupDevice.SelectedItem().Length > 0)
            {
                item.Sku = PosContext.Instance.ItemLookupDevice.SelectedItem();
                item.LoadBySKU();
            }
            else
            {
                if (PosContext.Instance.InputLine.Length <= maxPluLength)
                {
                    try
                    {
                        item.Plu = PosContext.Instance.InputLine.Trim();
                        item.LoadByPLU();
                    }
                    catch (System.FormatException e)
                    {
                        //Could be SKU
                        item.Sku = PosContext.Instance.InputLine;
                        item.LoadBySKU();
                    }
                }


                if (item.Short_Desc == null)
                {
                    try
                    {
                        item.Sku = PosContext.Instance.InputLine;
                        item.LoadBySKU();
                    }
                    catch
                    {
                    }
                }
            }
            //  }

            if (item.Short_Desc != null)
            {
                try
                {
                    EjItem ejItem = new EjItem(item);
                    //ejItem.Engage(0);
                    ejItem.States().PushState((int)EjItemStates.ENTER_QTY);
                    PosEventStack.Instance.PushEvent(ejItem);
                    // PosEventStack.Instance.Dump();
                    PosEventStack.Instance.NextEvent();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.StackTrace.ToString());
                }
            }
            else
            {
                PosError posError = new PosError(PosErrorCode.INVALID_INPUT);
                posError.Engage(0);
            }

            PosContext.Instance.InputLine = "";
            PosContext.Instance.ClearInput();
        }
Exemplo n.º 2
0
        /*public string PromptText
         * {
         *      get
         *      {
         *              return promptText;
         *      }
         *      set
         *      {
         *              promptText= value;
         *      }
         * }*/

        #endregion

        /**
         * Customized for event type on top of stack
         * - PosError, pop the next event and update dialogs.
         * - If there is input line data, (i.e. user is in the
         *   middle inputing a number, remove the last number.
         * - else, clear input, pops the stack and update dialogs.
         */

        public override void  Engage(int keyValue)
        {
            Logger.Info(
                this.GetType().FullName,
                this.GetType().FullName + "Key value:" + PosContext.Instance.InputLine.ToString(),
                PosSettings.Default.Debug
                );

            //	MessageBox.Show("*** ClearKey ***");
            //PosContext.Instance.InputLine = "";
            //PosContext.Instance.Operprompt.Update(this);
            PosContext.Instance.PosPrompt.EnableInput();

            PosEvent posEventCurrent = PosEventStack.Instance.Peek() as PosEvent;

            // Clear the error event, update dialogs and return

            if (posEventCurrent is PosError)
            {
                PosEventStack.Instance.PopEvent();

                PosEvent posEventNext = PosEventStack.Instance.Peek() as PosEvent;
                if (posEventNext is FinishTransaction)
                {
                    PosEventStack.Instance.NextEvent();
                }



                if (posEventNext is LogOn)
                {
                    LogOn logOn = posEventNext as LogOn;
                    PosContext.Instance.Operprompt.Update(this);
                    logOn.States().PushState((int)LogonStates.EnterUser);
                    PosEventStack.Instance.NextEvent();
                    return;
                }

                if (posEventNext is SelectTable)
                {
                    PosContext.Instance.CurrentPosDisplay.UnloadTableSelect();
                    PosContext.Instance.HomeGUI();
                }

                PosContext.Instance.ClearInput();
                PosContext.Instance.HomeGUI();
                PosEventStack.Instance.ClearPending();
                PosEventStack.Instance.ClearProcessed();
                PosEventStack.Instance.NextEvent();
                return;
            }



            if (posEventCurrent is UnLock)
            {
                return;
            }

            if (posEventCurrent is FinishTransaction)
            {
                PosEventStack.Instance.NextEvent();
                return;
            }

            if (posEventCurrent is CloseCashDrawer)
            {
                PosEventStack.Instance.NextEvent();
                return;
            }

            if (posEventCurrent is PromptPrintReceipt)
            {
                // get rid of this event and continue
                PosContext.Instance.ClearInput();
                PosContext.Instance.HomeGUI();
                PosEventStack.Instance.PopEvent();
                PosEventStack.Instance.NextEvent();
                return;
            }

            // If this is a finish trans then the user wants to
            // cancel the current tender, clean up the operator
            // reciept, remove the tender ej and continue.

            if (posEventCurrent is FinishTransaction)
            {
                PosContext.Instance.Receipt.ClearLine();

                PosContext.Instance.ClearInput();
                //PosContext.Instance.CurrentEj.RemoveCurrLine();
                PosContext.Instance.HomeGUI();
                PosEventStack.Instance.ClearPending();
                PosEventStack.Instance.NextEvent();

                return;
            }

            if (posEventCurrent is EjItem)
            {
                EjItem ejItem = posEventCurrent as EjItem;
                if (ejItem.DialogStep != EjItem.ITEM_FINAL)
                {
                    ejItem.States().PopState();
                    ejItem.States().PushState(EjItem.ITEM_CLEAR);
                    PosEventStack.Instance.NextEvent();
                }


                return;
            }



            if (posEventCurrent is EjLine)
            {
                PosContext.Instance.ClearInput();
                //PosContext.Instance.CurrentEj.RemoveCurrLine ();
                PosContext.Instance.HomeGUI();
                PosEventStack.Instance.ClearPending();
                PosContext.Instance.EnableKeys();
                PosEventStack.Instance.NextEvent();

                return;
            }

            if (posEventCurrent is LogOn)
            {
                PosContext.Instance.ClearInput();
                LogOn logOn = posEventCurrent as LogOn;
                logOn.ResetState();
                PosEventStack.Instance.NextEvent();
                return;
            }


            if (posEventCurrent is RegisterOpen)
            {
                // if ( (PosContext.Instance.CurrentEj.TransHeader.State == (int) Transaction.Status.COMPLETE) ||
                //     (PosContext.Instance.CurrentEj.TransHeader.State == (int) Transaction.Status.VOIDED) )
                // {
                //     PosContext.Instance.Receipt.ClearLine();
                // }
                PosContext.Instance.HomeGUI();
                PosContext.Instance.EnableKeys();
                PosContext.Instance.Operprompt.Update(this);
                PosContext.Instance.Receipt.Update(this);
            }

            if (posEventCurrent is TerminalReport)
            {
                PosContext.Instance.HomeGUI();
                PosContext.Instance.EnableKeys();
                PosContext.Instance.Operprompt.Update(this);
                PosContext.Instance.Receipt.Update(this);
            }


            if (posEventCurrent is SelectTable)
            {
                PosContext.Instance.HomeGUI();
                PosContext.Instance.CurrentPosDisplay.UnloadTableSelect();
                PosContext.Instance.Operprompt.Update(this);
                PosContext.Instance.Receipt.Update(this);
            }


            if (posEventCurrent is PosNumberDialog)
            {
                PosNumberDialog dialog = posEventCurrent as PosNumberDialog;
                PosContext.Instance.EnableKeys();
                dialog.Clear();
                if (PosContext.Instance.Input() > 0)
                {
                    PosContext.Instance.ClearInput();
                    PosContext.Instance.Operprompt.Update(dialog);
                }
                else
                {
                    PosContext.Instance.ClearInput();
                    PosEventStack.Instance.ClearPending();
                    PosEventStack.Instance.ClearProcessed();
                    PosEventStack.Instance.NextEvent();
                }
            }
            else
            {
                PosContext.Instance.HomeGUI();
                PosContext.Instance.ClearInput();
                PosEventStack.Instance.ClearPending();
                //	PosEventStack.Instance.ClearPending();
                PosEventStack.Instance.NextEvent();
            }

            return;
        }
Exemplo n.º 3
0
        public void Update(EjItem ejItem)
        {
            int state = ejItem.States().PeekState();

            StringBuilder strDisplay = new StringBuilder(prompt.MessageWidth);

            //  for (int i = 0; i < prompt.MessageWidth; i++)
            //  {
            //      strDisplay.Append(" ");
            //  }


            switch (state)
            {
            case (int)EjItemStates.ENTER_QTY:
                //  strDisplay.Append("Item : ");
                strDisplay.Append(ejItem.Item.Short_Desc + "  ");
                prompt.MessageText = strDisplay.ToString();     //ejItem.Item.Short_Desc +"   "+ " ? " + ejItem.Item.Shipping_uom + " ? $";
                break;

            case (int)EjItemStates.ENTER_AMOUNT:
                strDisplay.Append(ejItem.Item.Short_Desc + "    ");
                strDisplay.Append(string.Format("{0:###########0.00}", ejItem.Quantity) + " " + ejItem.Item.Shipping_uom);
                prompt.MessageText = strDisplay.ToString();      //ejItem.Item.Short_Desc + "   " + string.Format("{0:###########0.00}", ejItem.Quantity) +ejItem.Item.Shipping_uom + " X " + "    ?$";
                break;

            case (int)EjItemStates.ITEM_FINAL:
                prompt.MessageText = "";      //ejItem.Item.Short_Desc + "    " + ejItem.Quantity.ToString() + string.Format("{0:###########0.00}", ejItem.Amount);
                prompt.EndInputAnimation();
                break;
defaut:
                prompt.MessageText = "";
                break;
            }


            if (state != (int)EjItemStates.ITEM_FINAL)
            {
                if (prompt != null)
                {
                    this.prompt.PromptText = ejItem.PromptText;
                    // this.posDisplay.MessageText = "";
                    prompt.InputText = "";
                    prompt.StartInputAnimation();
                }
                return;
            }



            prompt.PromptText = ejItem.PromptText;
            prompt.InputText  = "";
            //	posDisplay.MessageText = ejItem.Quantity.ToString()+ " * " +
            //		ejItem.Desc +"    "+ string.Format( "{0:###########0.00}", ejItem.Amount);

            if (PosHardware.Instance.LineDisplay != null)
            {
                PosHardware.Instance.LineDisplay.Clear();
                PosHardware.Instance.LineDisplay.SetText(ejItem.Desc, 0, 0);
                //Item price
                string itemPrice = string.Format("{0:#########0.00}", ejItem.Amount);
                int    col       = PosHardware.Instance.LineDisplay.PromptWidth() - itemPrice.Length - 1;
                PosHardware.Instance.LineDisplay.SetText(itemPrice, 1, col);
                //Total
                string total = string.Format("{0:<#########0.00>}", PosContext.Instance.CurrentEj.EjSubTotal());;
                PosHardware.Instance.LineDisplay.SetText(total, 1, 0);
            }
        }