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();
        }
Example #2
0
        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);
        }
Example #3
0
        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();
        }
Example #4
0
        /// <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
            {
                //...
            }
        }