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); }
/// <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); }