예제 #1
0
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// 商品を購入する
        /// </summary>
        ////////////////////////////////////////////////////////////
        private void PurchaceProduct()
        {
            string input     = string.Empty;
            int    productNo = 0;

            Console.WriteLine("商品名に該当する番号を指定してください。");

            SalesInfoBase productInfo = null;

            for (int index = 0; index < m_salesParameter.ProductInfo.m_salesInfoList.Count; index++)
            {
                productInfo = m_salesParameter.ProductInfo.m_salesInfoList[index];
                if (productInfo.Stock == 0)
                {
                    continue;
                }

                Console.WriteLine($"商品名: {productInfo.Name.PadRight(10)} 金額: {productInfo.Price} 番号: {index}");
            }

            input     = Console.ReadLine();
            productNo = Convert.ToInt32(input);

            // 購入商品を設定する
            productInfo = m_salesParameter.ProductInfo.m_salesInfoList[productNo];

            // 投入金額を更新する
            if (PurchaseProductEvent != null)
            {
                // 通知する
                this.PurchaseProductEvent(this, productInfo);
            }

            return;
        }
예제 #2
0
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// 商品購入イベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="moneyInfoList"></param>
        ////////////////////////////////////////////////////////////
        private void PurchaseProductEvent(object sender, SalesInfoBase info)
        {
            bool enablePurchase = false;

            try {
                // 商品情報を購入可否を確認する
                enablePurchase = m_salesManager.GetEnablePurchase(info);
                if (!enablePurchase)
                {
                    // 購入失敗
                    m_mainForm.NotPurchase();
                }
                else
                {
                    // 商品を購入する
                    m_salesManager.Purchase(info);

                    // 購入
                    m_mainForm.Purchase();
                }

                m_mainForm.AcceptPurchace();
            }
            catch (Exception) {
                return;
            }

            return;
        }
예제 #3
0
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// 購入可否を取得する
        /// </summary>
        /// <returns></returns>
        ////////////////////////////////////////////////////////////
        internal override bool GetEnablePurchase(SalesInfoBase purchaseInfo)
        {
            bool enablePurchase = false;

            foreach (var info in m_stockInfo.m_salesInfoList)
            {
                if (info.Name != purchaseInfo.Name)
                {
                    continue;
                }
                if (info.Stock == 0)
                {
                    return(false);
                }

                enablePurchase = true;
                break;
            }
            if (!enablePurchase)
            {
                return(false);
            }

            return(true);
        }
예제 #4
0
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// 商品を購入する
        /// </summary>
        /// <param name="info">購入情報</param>
        /// <returns>購入結果</returns>
        ////////////////////////////////////////////////////////////
        internal bool Purchase(SalesInfoBase info)
        {
            m_moneyManger.Purchase(info);

            m_productManager.Purchase(info);

            return(true);
        }
예제 #5
0
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// 購入可否を取得する
        /// </summary>
        /// <returns></returns>
        ////////////////////////////////////////////////////////////
        internal override bool GetEnablePurchase(SalesInfoBase purchaseInfo)
        {
            //uint inputSumPrice = 0;
            uint returnMoney = 0;

            //inputSumPrice = m_inputInfo.GetSumPrice();

            if (m_inputPrice < purchaseInfo.Price)
            {
                // 投入金額 < 購入金額の場合
                return(false);
            }

            //
            returnMoney = m_inputPrice - purchaseInfo.Price;
            //returnMoney = inputSumPrice - purchaseInfo.Price;

            // 情報から最小数の釣り銭を計算する
            for (int index = 0; index < m_stockInfo.m_salesInfoList.Count; index++)
            {
                SalesInfoBase stockInfo      = null;
                uint          tmpChargeCount = 0;
                uint          chargeCount    = 0;

                stockInfo = m_stockInfo.m_salesInfoList[index];

                if (returnMoney < stockInfo.Price)
                {
                    // 返金額 < 対象の紙幣の価値
                    continue;
                }

                //
                tmpChargeCount = returnMoney / stockInfo.Price;
                if (tmpChargeCount > stockInfo.Stock)
                {
                    chargeCount = stockInfo.Stock;
                }
                else
                {
                    chargeCount = tmpChargeCount;
                }

                returnMoney -= stockInfo.Price * chargeCount;
            }
            if (returnMoney != 0)
            {
                return(false);
            }

            return(true);
        }
예제 #6
0
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// 購入する
        /// </summary>
        /// <returns></returns>
        ////////////////////////////////////////////////////////////
        internal override bool Purchase(SalesInfoBase purchaseInfo)
        {
            foreach (var info in m_stockInfo.m_salesInfoList)
            {
                if (info.Name != purchaseInfo.Name)
                {
                    continue;
                }

                info.Stock--;
            }

            return(true);
        }
예제 #7
0
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// 釣り銭を設定する
        /// </summary>
        /// <param name="moneyInfo"></param>
        /// <param name="sumDiff"></param>
        ////////////////////////////////////////////////////////////
        private void ClacChange(ref MoneyInfoList moneyInfo)
        {
            // 情報から最小数の釣り銭を計算する
            for (int index = 0; index < m_stockInfo.m_salesInfoList.Count; index++)
            {
                SalesInfoBase changeData = new SalesInfoBase();

                uint          chargeCount    = 0;
                uint          tmpChargeCount = 0;
                SalesInfoBase stockData      = null;

                stockData = m_stockInfo.m_salesInfoList[index];

                string name  = stockData.Name;
                uint   stock = stockData.Stock;
                uint   price = stockData.Price;

                // 紙幣枚数 = 合計金額 / 紙幣価値
                tmpChargeCount = m_inputPrice / stockData.Price;
                if (tmpChargeCount > stockData.Stock)
                {
                    chargeCount = stockData.Stock;
                }
                else
                {
                    chargeCount = tmpChargeCount;
                }

                // 在庫の紙幣枚数を減らす
                m_stockInfo.m_salesInfoList[index].Stock -= chargeCount;

                // (合計金額 - 返金額)
                m_inputPrice -= chargeCount * price;

                // 釣り銭情報を設定する
                changeData.Name  = name;
                changeData.Price = price;
                changeData.Stock = chargeCount;

                // 情報を追加する
                moneyInfo.m_salesInfoList.Add(changeData);
            }

            return;
        }
예제 #8
0
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// 購入可否を取得する
        /// </summary>
        ////////////////////////////////////////////////////////////
        internal bool GetEnablePurchase(SalesInfoBase info)
        {
            bool enablePurchase = false;

            enablePurchase = m_moneyManger.GetEnablePurchase(info);
            if (!enablePurchase)
            {
                return(false);
            }

            enablePurchase = m_productManager.GetEnablePurchase(info);
            if (!enablePurchase)
            {
                return(false);
            }

            return(true);
        }
예제 #9
0
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// 購入する
        /// </summary>
        /// <returns></returns>
        ////////////////////////////////////////////////////////////
        internal override bool Purchase(SalesInfoBase purchaseInfo)
        {
            m_inputPrice -= purchaseInfo.Price;

            return(true);
        }