コード例 #1
0
        public static Hashtable GetSessionPeriodSummaryDetails(POS_WorkSessionPeriod pWorkSessionPeriod)
        {
            //Get Total Money and TotalMoney Out (NonPayments)
            decimal totalMoneyIn  = ProcessWorkSessionPeriod.GetSessionPeriodMovementTotal(pWorkSessionPeriod, MovementTypeTotal.MoneyIn);
            decimal totalMoneyOut = -ProcessWorkSessionPeriod.GetSessionPeriodMovementTotal(pWorkSessionPeriod, MovementTypeTotal.MoneyOut);

            //Get Total Money in Cash when Open/Close for Day and Terminals
            decimal totalMoneyInCashDrawerOnOpen;
            decimal totalMoneyInCashDrawer;

            if (pWorkSessionPeriod.PeriodType == WorkSessionPeriodType.Day)
            {
                totalMoneyInCashDrawerOnOpen = ProcessWorkSessionPeriod.GetSessionPeriodDayCashDrawerOpenOrCloseAmount(pWorkSessionPeriod, true);
                totalMoneyInCashDrawer       = ProcessWorkSessionPeriod.GetSessionPeriodDayCashDrawerOpenOrCloseAmount(pWorkSessionPeriod, false);
            }
            else
            {
                totalMoneyInCashDrawerOnOpen = ProcessWorkSessionPeriod.GetSessionPeriodCashDrawerOpenOrCloseAmount(pWorkSessionPeriod, "CASHDRAWER_OPEN");
                //Get Total in CashDrawer On Close or on Working: Using latest CASHDRAWER_CLOSE get from terminal method if Terminal Session
                if (pWorkSessionPeriod.SessionStatus == WorkSessionPeriodStatus.Close)
                {
                    totalMoneyInCashDrawer = ProcessWorkSessionPeriod.GetSessionPeriodCashDrawerOpenOrCloseAmount(pWorkSessionPeriod, "CASHDRAWER_CLOSE");
                }
                else
                {
                    totalMoneyInCashDrawer = ProcessWorkSessionPeriod.GetSessionPeriodMovementTotal(pWorkSessionPeriod, MovementTypeTotal.MoneyInCashDrawer);
                }
            }

            Hashtable resultHashTable = new Hashtable();

            resultHashTable.Add("totalMoneyInCashDrawerOnOpen", totalMoneyInCashDrawerOnOpen);
            resultHashTable.Add("totalMoneyInCashDrawer", totalMoneyInCashDrawer);
            resultHashTable.Add("totalMoneyIn", totalMoneyIn);
            resultHashTable.Add("totalMoneyOut", totalMoneyOut);

            return(resultHashTable);
        }
コード例 #2
0
        /// <summary>
        /// Close WorkSessionPeriod, work in all PeriodTypes Day and Terminal
        /// </summary>
        /// <param name="pWorkSessionPeriod"></param>
        public static bool SessionPeriodClose(POS_WorkSessionPeriod pWorkSessionPeriod)
        {
            bool result = false;

            //Store Totals first, with a UOF, Error return without close session, we process error outside
            bool resultPersistTotals = ProcessWorkSessionPeriod.PersistWorkSessionTotals(pWorkSessionPeriod);

            if (resultPersistTotals)
            {
                try
                {
                    POS_WorkSessionPeriod workSessionPeriod = GlobalFramework.SessionXpo.GetObjectByKey <POS_WorkSessionPeriod>(pWorkSessionPeriod.Oid);
                    DateTime dateTime = FrameworkUtils.CurrentDateTimeAtomic();
                    workSessionPeriod.DateEnd       = dateTime;
                    workSessionPeriod.SessionStatus = WorkSessionPeriodStatus.Close;
                    workSessionPeriod.Save();

                    //Assign to Singleton
                    if (workSessionPeriod.PeriodType == WorkSessionPeriodType.Day)
                    {
                        GlobalFramework.WorkSessionPeriodDay = workSessionPeriod;
                    }
                    else
                    {
                        GlobalFramework.WorkSessionPeriodTerminal = workSessionPeriod;
                    }

                    result = true;
                }
                catch (Exception ex)
                {
                    _log.Error(ex.Message, ex);
                }
            }
            return(result);
        }