Exemple #1
0
        /// <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();
        }
Exemple #2
0
        /// <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;
            }
        }