public void DisplayThis(JMoneyLog log, UpdateMoneyInfoDelegate updateMoneyInfoCallback) { updateMoneyInfo = updateMoneyInfoCallback; if (log != null) { //Edit btnAddOK.Text = "OK"; btnAbort.Text = "Cancel"; SurrentSerialNo = log.SerialNo; //設定模式為編輯 dtpDate.Value = log.Date; switch (log.Type) { case "生活支出": cbType.SelectedIndex = 0; break; case "固定支出": cbType.SelectedIndex = 1; break; case "特別支出": cbType.SelectedIndex = 2; break; case "收入": cbType.SelectedIndex = 3; break; case "轉帳": cbType.SelectedIndex = 4; break; } cbItem.Text = log.Item; tbValue.Text = log.Amount.ToString(); cbSource.Text = log.Source; cbTarget.Text = log.Target; tbContents.Text = log.Remark; } else { //Add btnAddOK.Text = "Add"; btnAbort.Text = "Close"; } this.ShowDialog(); }
public void Add(DateTime dt, string type, string item, int amount, string src, string tar, string remark) { JMoneyLog moneyLog = new JMoneyLog() { SerialNo = Convert.ToInt32(DateTime.Now.Subtract(new DateTime(2018, 1, 1)).TotalSeconds), Date = dt, Item = item, Amount = amount, Type = type, Source = src, Target = tar, Remark = remark }; JMoney.MoneyLogList.Add(moneyLog); JMoney.MoneyLogList.Sort(new MoneyLogComparer()); //帳目紀錄排序 //RecalcStorageBalance(); CalcStorageBalance(moneyLog); Save(MoneyLogFilePath); }
public void Update(JMoneyLog moneyLog) { int idx = JMoney.MoneyLogList.FindIndex(x => x.SerialNo.Equals(moneyLog.SerialNo)); if (idx >= 0) { CalcStorageBalance(JMoney.MoneyLogList[idx], true); //先將舊的紀錄還原 //更新紀錄內容 JMoney.MoneyLogList[idx].Date = moneyLog.Date; JMoney.MoneyLogList[idx].Type = moneyLog.Type; JMoney.MoneyLogList[idx].Item = moneyLog.Item; JMoney.MoneyLogList[idx].Amount = moneyLog.Amount; JMoney.MoneyLogList[idx].Source = moneyLog.Source; JMoney.MoneyLogList[idx].Target = moneyLog.Target; JMoney.MoneyLogList[idx].Remark = moneyLog.Remark; CalcStorageBalance(JMoney.MoneyLogList[idx]); //計算新紀錄的結果 JMoney.MoneyLogList.Sort(new MoneyLogComparer()); //帳目紀錄排序 Save(MoneyLogFilePath); } //RecalcStorageBalance(); }
/// <summary> /// 計算帳戶餘額 /// </summary> /// <param name="moneyLog">消費紀錄</param> /// <param name="revert">是否反向(還原消費內容)</param> private void CalcStorageBalance(JMoneyLog moneyLog, bool revert = false) { int amount = moneyLog.Amount; if (revert) { amount = -moneyLog.Amount; } if (moneyLog.Type.Contains("支出")) { //Source 帳戶金額要減少 int idx = JMoney.StorageBalanceList.FindIndex(x => x.Storage.Equals(moneyLog.Source)); if (idx < 0) { //帳戶餘額項目中無此帳戶資料,加入此帳戶餘額 JMoney.StorageBalanceList.Add(new JStorageAmount() { Storage = moneyLog.Source, Amount = -amount }); } else { //扣除金額 JMoney.StorageBalanceList[idx].Amount -= amount; } } else if (moneyLog.Type.Contains("收入")) { //Target 帳戶金額要增加 int idx = JMoney.StorageBalanceList.FindIndex(x => x.Storage.Equals(moneyLog.Target)); if (idx < 0) { //帳戶餘額項目中無此帳戶資料,加入此帳戶餘額 JMoney.StorageBalanceList.Add(new JStorageAmount() { Storage = moneyLog.Target, Amount = amount }); } else { //扣除金額 JMoney.StorageBalanceList[idx].Amount += amount; } } else if (moneyLog.Type.Contains("轉帳")) { //Source 帳戶金額要減少 int idx = JMoney.StorageBalanceList.FindIndex(x => x.Storage.Equals(moneyLog.Source)); if (idx < 0) { //帳戶餘額項目中無此帳戶資料,加入此帳戶餘額 JMoney.StorageBalanceList.Add(new JStorageAmount() { Storage = moneyLog.Source, Amount = -amount }); } else { //扣除金額 JMoney.StorageBalanceList[idx].Amount -= amount; } //Target 帳戶金額要增加 idx = JMoney.StorageBalanceList.FindIndex(x => x.Storage.Equals(moneyLog.Target)); if (idx < 0) { //帳戶餘額項目中無此帳戶資料,加入此帳戶餘額 JMoney.StorageBalanceList.Add(new JStorageAmount() { Storage = moneyLog.Target, Amount = amount }); } else { //扣除金額 JMoney.StorageBalanceList[idx].Amount += amount; } } else { //... } }