/// <summary> /// Saves our object to the summary /// </summary> /// <param name="summary"></param> private void UpdateSummary(Summary summary) { if (_quantity <= 0) { foreach (var item in summary.ActualCashDenoms) { if (item.CurrencyDetailID == m_denom.Id && item.ISOCode == Parent.ISOCode) { summary.ActualCashDenoms.Remove(item); break; } } } else { bool itemUpdated = false; foreach (var item in summary.ActualCashDenoms) { if (item.CurrencyDetailID == m_denom.Id && item.ISOCode == Parent.ISOCode) { item.Quantity = _quantity; item.CurrencyValue = _quantity * m_denom.Value; item.ExchangeRate = Parent.ExchangeRate; item.DefaultValue = item.CurrencyValue * item.ExchangeRate; itemUpdated = true; } } if (!itemUpdated) { var newDenom = new ActualCashCurrencyDenom(); newDenom.CurrencyDetailID = m_denom.Id; newDenom.Quantity = _quantity; newDenom.CurrencyValue = _quantity * m_denom.Value; newDenom.ExchangeRate = Parent.ExchangeRate; newDenom.DefaultValue = newDenom.CurrencyValue * newDenom.ExchangeRate; newDenom.ISOCode = Parent.ISOCode; summary.ActualCashDenoms.Add(newDenom); } } summary.ReloadActualCashFromDenoms(); }
/// <summary> /// Unpacks the request reponse received from the server. /// </summary> /// <param name="responseReader">The response.</param> protected override void UnpackResponse(BinaryReader responseReader) { if (responseReader == null) { throw new ArgumentNullException("responseReader"); } if (ReturnCode == ServerReturnCode.Success) { // Create a new summary with the passed in date and session Summary summary = new Summary(m_date, m_session); // Attendance summary.AttendanceSystem = responseReader.ReadInt32(); summary.AttendanceSystemTime = ReadDateTime(responseReader) ?? DateTime.Now; summary.AttendanceManual = responseReader.ReadInt32(); summary.AttendanceManualTime = ReadDateTime(responseReader) ?? DateTime.Now; // Staff (Manager and Callers) int managerId = responseReader.ReadInt32(); summary.Manager = m_staff.FirstOrDefault(staffMember => staffMember.Id == managerId); IList <Staff> callers = new List <Staff>(); short callerCount = responseReader.ReadInt16(); for (int callerIndex = 0; callerIndex < callerCount; ++callerIndex) { int callerId = responseReader.ReadInt32(); Staff caller = m_staff.FirstOrDefault(staffMember => staffMember.Id == callerId); if (caller != null) { callers.Add(caller); } } summary.Callers = callers; // Comments summary.Comments = ReadString(responseReader); // Sales summary.SalesPaper = ReadDecimal(responseReader) ?? 0M; summary.SalesElectronic = ReadDecimal(responseReader) ?? 0M; summary.SalesBingoOther = ReadDecimal(responseReader) ?? 0M; //FIX: DE8961 Session summary does calculate bingo other sales summary.SalesPullTab = ReadDecimal(responseReader) ?? 0M; summary.SalesConcession = ReadDecimal(responseReader) ?? 0M; summary.SalesMerchandise = ReadDecimal(responseReader) ?? 0M; summary.SalesDeviceFee = ReadDecimal(responseReader) ?? 0M; summary.SalesDiscount = ReadDecimal(responseReader) ?? 0M; summary.SalesValidation = ReadDecimal(responseReader) ?? 0M; // Prizes summary.PrizesCash = ReadDecimal(responseReader) ?? 0M; summary.PrizesCheck = ReadDecimal(responseReader) ?? 0M; summary.PrizesMerchandise = ReadDecimal(responseReader) ?? 0M; summary.PrizesAccrualInc = ReadDecimal(responseReader) ?? 0M; summary.PrizesPullTab = ReadDecimal(responseReader) ?? 0M; summary.PrizesOther = ReadDecimal(responseReader) ?? 0M; // Session Costs IList <SessionCost> costs = new List <SessionCost>(); short costCount = responseReader.ReadInt16(); for (int costIndex = 0; costIndex < costCount; ++costIndex) { SessionCost cost = new SessionCost(); cost.Id = responseReader.ReadInt32(); cost.MasterId = responseReader.ReadInt32(); cost.Name = ReadString(responseReader); cost.Code = ReadString(responseReader); cost.Value = ReadDecimal(responseReader) ?? 0; cost.IsRegister = responseReader.ReadBoolean(); cost.IsInactive = responseReader.ReadBoolean(); costs.Add(cost); } summary.SessionCosts = costs; // Money values summary.BankBegin = ReadDecimal(responseReader) ?? 0M; summary.BankFill = ReadDecimal(responseReader) ?? 0M; summary.PrizesAccrualPay = ReadDecimal(responseReader) ?? 0M; summary.PrizesFees = ReadDecimal(responseReader) ?? 0M; summary.OverCoupons = ReadDecimal(responseReader) ?? 0M; summary.SalesTax = ReadDecimal(responseReader) ?? 0M; summary.OverCash = ReadDecimal(responseReader) ?? 0M; summary.OverDebitCredit = ReadDecimal(responseReader) ?? 0M; summary.OverChecks = ReadDecimal(responseReader) ?? 0M; summary.BankEnd = ReadDecimal(responseReader) ?? 0M; summary.OverMoneyOrders = ReadDecimal(responseReader) ?? 0M; summary.OverGiftCards = ReadDecimal(responseReader) ?? 0M; summary.OverChips = ReadDecimal(responseReader) ?? 0M; summary.AccrualCashPayouts = ReadDecimal(responseReader) ?? 0M; summary.KioskSale = ReadDecimal(responseReader) ?? 0M; summary.KioskVoids = ReadDecimal(responseReader) ?? 0M; //US5352 - kiosk voids var actualCashDenoms = new List <ActualCashCurrencyDenom>(); short actualCashCount = responseReader.ReadInt16(); for (short i = 0; i < actualCashCount; ++i) { var item = new ActualCashCurrencyDenom(); item.ID = responseReader.ReadInt32(); item.SessionSummaryID = responseReader.ReadInt32(); item.ISOCode = ReadString(responseReader); item.CurrencyDetailID = responseReader.ReadInt32(); item.Quantity = responseReader.ReadInt32(); item.CurrencyValue = ReadDecimal(responseReader) ?? 0M; item.ExchangeRate = ReadDecimal(responseReader) ?? 1M; item.DefaultValue = ReadDecimal(responseReader) ?? 0M; actualCashDenoms.Add(item); } summary.LoadActualCashDenomQuantities(actualCashDenoms); // Do the assignment Summary = summary; } }