Example #1
0
        private bool AmountIsValid()
        {
            // because it is already negative

            double amount = this.cashBack;


            PosTotal posTotal = new PosTotal();

            posTotal.Organization_no = PosSettings.Default.Organization;
            posTotal.Store_no        = PosSettings.Default.Store;
            posTotal.Pos_no          = PosSettings.Default.Station;
            posTotal.Total_name      = (int)TotalName.DAILY_BASE;
            posTotal.Load();
            posTotal.Relations();
            foreach (object obj in posTotal.Totals)
            {
                EclipsePos.Data.Total tot = obj as EclipsePos.Data.Total;
                if (tot.Total_type == (int)EclipsePos.Data.TotalType.CASH_IN_DRAWER)
                {
                    if (tot.Total_amount >= amount)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Example #2
0
        private void UpdateTotals(PosTotal posTotal, TotalType end, TotalName totalName)
        {
            foreach (object obj in posTotal.Totals)
            {
                EclipsePos.Data.Total total = obj as EclipsePos.Data.Total;
                if ((int)total.Total_type < (int)end)
                {
                    total.AddToTotalAndCount(
                        PosSettings.Default.Organization,
                        PosContext.Instance.RetailStore.Retail_store_no,
                        PosSettings.Default.Station,
                        (TotalName)((int)posTotal.Total_name + 1),
                        (TotalType)total.Total_type,
                        total.Total_amount,
                        total.Total_count);

                    //total.Delete();
                }
            }



            posTotal.UpdateEndDate(PosSettings.Default.Organization,
                                   PosSettings.Default.Store,
                                   PosSettings.Default.Station,
                                   (int)totalName);
        }
Example #3
0
        /**
         * Switch on the report type and update displays.
         */
        public override void  Engage(int keyValue)
        {
            keyValue = (int)PosContext.Instance.PosKeyValue;
            //MessageBox.Show("*** TerminalReport ***"+keyValue.ToString());

            //Check if employee role is authorized to this event
            if (!PosContext.Instance.Employee.RolesEventNames.Contains("TerminalReports"))
            {
                PosError posError = new PosError(PosErrorCode.INSUFFICIENT_USER_AUTHORITY);
                posError.Engage(0);
                return;
            }

            //Check if employee role is authorized to this event
            if ((PosContext.Instance.CurrentEj != null) && (PosContext.Instance.CurrentEj.SeqNo > 0))
            {
                PosError posError = new PosError(PosErrorCode.ERROR_EVENT);
                posError.Engage(0);
                return;
            }


            if (keyValue == 0)
            {
                reportType = (XZReportType)this.States().PeekState();
            }
            else
            {
                reportType = (XZReportType)keyValue;
            }

            posTotal = new PosTotal();
            posTotal.Organization_no = PosSettings.Default.Organization;
            posTotal.Store_no        = PosContext.Instance.RetailStore.Retail_store_no;
            posTotal.Pos_no          = PosSettings.Default.Station;
            switch (reportType)
            {
            case XZReportType.Z_DAILY:
            case XZReportType.X_DAILY:
                posTotal.Total_name = (int)TotalName.DAILY_BASE;
                break;

            case XZReportType.Z_WEEKLY:
            case XZReportType.X_WEEKLY:
                posTotal.Total_name = (int)TotalName.WEEKLY_BASE;
                break;

            case XZReportType.Z_MONTHLY:
            case XZReportType.X_MONTHLY:
                posTotal.Total_name = (int)TotalName.MONTHLY_BASE;
                break;

            case XZReportType.Z_YEARLY:
            case XZReportType.X_YEARLY:
                posTotal.Total_name = (int)TotalName.MONTHLY_BASE;
                break;
            }
            posTotal.Load();
            posTotal.Relations();



            if ((reportType == XZReportType.Z_WEEKLY || (reportType == XZReportType.Z_MONTHLY)))
            {
                // roll-up totals that migth be left over.
                switch (reportType)
                {
                case XZReportType.Z_DAILY:
                    UpdateTotals(posTotal, TotalType.DAILY_BASE, TotalName.DAILY_BASE);
                    break;

                case XZReportType.Z_WEEKLY:
                    UpdateTotals(posTotal, TotalType.WEEKLY_BASE, TotalName.WEEKLY_BASE);
                    break;

                case XZReportType.Z_MONTHLY:
                    UpdateTotals(posTotal, TotalType.MONTHLY_BASE, TotalName.MONTHLY_BASE);
                    break;
                }

                // re-read the totals
                posTotal = new PosTotal();
                posTotal.Organization_no = PosSettings.Default.Organization;
                posTotal.Store_no        = PosContext.Instance.RetailStore.Retail_store_no;
                posTotal.Pos_no          = PosSettings.Default.Station;
                posTotal.Load();
                posTotal.Relations();
            }

            // see if there is any total information.

            if (posTotal.Totals.Count > 0)
            {
                PosContext.Instance.Receipt.Update(this);
                //	PosError posError = new PosError(PosErrorCode.TERMINAL_REPORT);
                //	posError.Engage(0);
            }
            else
            {
                return;
            }


            switch (reportType)
            {
            case XZReportType.Z_DAILY:
                UpdateTotals(posTotal, TotalType.WEEKLY_BASE, TotalName.DAILY_BASE);
                break;

            case XZReportType.Z_WEEKLY:
                UpdateTotals(posTotal, TotalType.MONTHLY_BASE, TotalName.WEEKLY_BASE);
                break;

            case XZReportType.Z_MONTHLY:
                UpdateTotals(posTotal, TotalType.YEARLY_BASE, TotalName.MONTHLY_BASE);
                break;
            }

            // pause...

            //PosContext ().eventStack ().pushEvent (new Pause (context ()));
            //PosContext.Instance.Operprompt.Update((Pause) context ().eventStack ().event ());
            PosContext.Instance.InputLine   = "";
            PosContext.Instance.PosKeyValue = 0;
        }
Example #4
0
        /**
         * Validate the validity of the input amount.
         */
        private bool AmountIsValid()
        {
            if (this.transType == (int)TotalType.PAID_IN)
            {
                return(true);
            }

            // because it is already negative

            double amount = PosContext.Instance.PosMath.Mult(transAmount, -1.0);


            PosTotal posTotal = new PosTotal();

            posTotal.Organization_no = PosSettings.Default.Organization;
            posTotal.Store_no        = PosSettings.Default.Store;
            posTotal.Pos_no          = PosSettings.Default.Station;
            posTotal.Total_name      = (int)TotalName.DAILY_BASE;
            posTotal.Load();
            posTotal.Relations();
            foreach (object obj in posTotal.Totals)
            {
                EclipsePos.Data.Total tot = obj as EclipsePos.Data.Total;
                if (tot.Total_type == (int)EclipsePos.Data.TotalType.CASH_IN_DRAWER)
                {
                    if (tot.Total_amount > amount)
                    {
                        return(true);
                    }
                }
            }

            return(false);


            /*	String fetchSpec = PosTotal.getBySiteAndPos (context ().siteID (), context ().posNo ());
             *      Vector results = Application.dbConnection ().fetch (new PosTotal (), fetchSpec);
             *
             *      if (results.size () > 0)
             *      {
             *              PosTotal posTotal = (PosTotal) results.elementAt (0);
             *              for (int i=0; i<posTotal.totals ().size (); i++)
             *              {
             *
             *                      Total total = (Total) posTotal.totals ().elementAt (i);
             *
             *
             *                      if (total.totalType () == Total.CASH_IN_DRAWER)
             *                      {
             *
             *                              double mediaTotal = total.totalAmount ();
             *                              if (mediaTotal < amount)
             *                              {
             *                                       return false;
             *                              }
             *                      }
             *              }
             *      }
             */
            //return false;
        }