//////////////////////////////////////////////////////////// /// <summary> /// 釣り銭を出す /// </summary> /// <param name="moneyInfo"></param> //////////////////////////////////////////////////////////// internal void GiveChange(ref MoneyInfoList moneyInfo) { // 釣り銭を設定する this.SetChange(ref moneyInfo); return; }
//////////////////////////////////////////////////////////// /// <summary> /// 釣り銭を計算する /// </summary> /// <param name="moneyInfo"></param> //////////////////////////////////////////////////////////// private void SetChange(ref MoneyInfoList moneyInfo) { // 釣り銭情報を計算する this.ClacChange(ref moneyInfo); return; }
//////////////////////////////////////////////////////////// /// <summary> /// お金を投入する /// </summary> //////////////////////////////////////////////////////////// private void InputMoney() { uint number = 0; string name = string.Empty; string input = string.Empty; Console.WriteLine("投入金額を入力してください"); MoneyInfoList moneyInfoList = new MoneyInfoList(); foreach (SalesInfoBase info in m_salesParameter.MoneyInfo.m_salesInfoList) { Console.Write($"{info.Name} :"); input = Console.ReadLine(); // 入力値を数値に変換する number = Convert.ToUInt32(input); // お金情報を生成する MoneyInfo moneyInfo = new MoneyInfo(info.Name, info.Price, number); moneyInfoList.m_salesInfoList.Add(moneyInfo); } // 投入金額を更新する if (InputMoneyEvent != null) { // 通知する this.InputMoneyEvent(this, moneyInfoList); } return; }
//////////////////////////////////////////////////////////// /// <summary> /// 釣り銭をだす /// </summary> //////////////////////////////////////////////////////////// internal void GiveChange(MoneyInfoList infoList) { Console.WriteLine($"返金します"); this.Aggregate(infoList); if (this.EndControlEvent != null) { this.EndControlEvent(this, null); } return; }
//////////////////////////////////////////////////////////// /// <summary> /// 投入金額を更新する /// </summary> /// <param name="moneyInfoList"></param> //////////////////////////////////////////////////////////// internal void UpdateInputMoney(MoneyInfoList moneyInfoList) { m_inputInfo = moneyInfoList; m_inputPrice = m_inputInfo.GetSumPrice(); // 在庫数と投入金額の情報マージする for (int index = 0; index < m_stockInfo.m_salesInfoList.Count; index++) { m_stockInfo.m_salesInfoList[index].Stock += m_inputInfo.m_salesInfoList[index].Stock; } return; }
//////////////////////////////////////////////////////////// /// <summary> /// お金投入イベント /// </summary> /// <param name="sender"></param> /// <param name="moneyInfoList"></param> //////////////////////////////////////////////////////////// private void InputMoneyEvent(object sender, MoneyInfoList moneyInfoList) { try { // 投入金額を更新する m_salesManager.UpdateInputMoney(moneyInfoList); // 購入を受け付ける m_mainForm.AcceptPurchace(); } catch (Exception) { } return; }
//////////////////////////////////////////////////////////// /// <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; }
//////////////////////////////////////////////////////////// /// <summary> /// 釣り銭イベント /// </summary> /// <param name="sender"></param> /// <param name="moneyInfoList"></param> //////////////////////////////////////////////////////////// private void GiveChangeEvent(object sender, EventArgs e) { MoneyInfoList moneyInfo = null; try { moneyInfo = new MoneyInfoList(); // 釣り銭情報を取得する m_salesManager.GiveChange(ref moneyInfo); // 釣り銭を出す m_mainForm.GiveChange(moneyInfo); // m_mainForm.Start(); } catch (Exception) { return; } return; }
//////////////////////////////////////////////////////////// /// <summary> /// コンストラクタ /// </summary> //////////////////////////////////////////////////////////// internal MoneyManager(MoneyInfoList infoList) : base(infoList) { m_inputPrice = 0; m_stockInfo = infoList; }
//////////////////////////////////////////////////////////// /// <summary> /// コンストラクタ /// </summary> //////////////////////////////////////////////////////////// internal SalesParameter() { m_moneyInfo = new MoneyInfoList(); m_productInfo = new ProductInfoList(); }
//////////////////////////////////////////////////////////// /// <summary> /// 釣り銭をだす /// </summary> /// <param name="moneyInfo"></param> //////////////////////////////////////////////////////////// internal void GiveChange(ref MoneyInfoList moneyInfo) { m_moneyManger.GiveChange(ref moneyInfo); return; }
//////////////////////////////////////////////////////////// /// <summary> /// 投入金額を更新する /// </summary> /// <param name="moneyInfoList"></param> //////////////////////////////////////////////////////////// internal void UpdateInputMoney(MoneyInfoList moneyInfoList) { m_moneyManger.UpdateInputMoney(moneyInfoList); return; }