private void trvAccount_AfterSelect(object sender, TreeViewEventArgs e) { if (trvAccount.SelectedNode != null && trvAccount.SelectedNode.Text != "(Root)") { CAccountBalanceDetail balance = LoadAccount(trvAccount.SelectedNode.Text); LoadAccountTransaction(trvAccount.SelectedNode.Text); lblBalance.Text = balance.lblBalance.ToString(); lblDebitOpening.Text = balance.lblDebitOpening.ToString(); lblCreditOpening.Text = balance.lblCreditOpening.ToString(); lblDebitAmount.Text = balance.lblDebitAmount.ToString(); lblCreditAmount.Text = balance.lblCreditAmount.ToString(); lblDebitEnding.Text = balance.lblDebitEnding.ToString(); lblCreditEnding.Text = balance.lblCreditEnding.ToString(); lblFutureBalance.Text = balance.lblFutureBalance.ToString(); lblFutureDebitAmount.Text = balance.lblFutureDebitAmount.ToString(); lblFutureCreditAmount.Text = balance.lblFutureCreditAmount.ToString(); lblFutureDebitEnding.Text = balance.lblFutureDebitEnding.ToString(); lblFutureCreditEnding.Text = balance.lblFutureCreditEnding.ToString(); CAccount account = G.glb.lstAccount.Find(o => o.AccountName == trvAccount.SelectedNode.Text); lblAccountName.Text = account.AccountName; lblCurrency.Text = account.Currency; RefreshPtgSubAccount(trvAccount.SelectedNode.Text); //plot.DrawPercentageBlocks(picCredit, "g", new List<double> { 0.2, 0.3, 0.3, 0.1, 0.1 }, new List<string> { "", "", "" }); //plot.DrawPercentageBlocks(picDebit, "r", new List<double> { 0.2, 0.3, 0.5 }, new List<string> { "", "", "" }); } }
private void RefreshPtgSubAccount(string accountname) { plot plot = new plot(); // Get list of subaccounts if (trvAccount.SelectedNode.Text == "(Root)") { picDebit.BackColor = Color.White; picDebit.Controls.Clear(); picCredit.BackColor = Color.White; picCredit.Controls.Clear(); } else { List <RSubAccount> sub = G.glb.lstSubAccount.FindAll(o => o.Account == accountname); if (sub.Count > 0) { List <double> lstCreditAmounts = new List <double>(); List <string> lstCreditDesc = new List <string>(); List <double> lstDebitAmounts = new List <double>(); List <string> lstDebitDesc = new List <string>(); foreach (RSubAccount item in sub) { CAccountBalanceDetail subBalance = new CAccountBalanceDetail(); string accountCurrency = G.glb.lstAccount.Find(o => o.AccountName == accountname).Currency; string subAccountCurrency = G.glb.lstAccount.Find(o => o.AccountName == item.SubAccount).Currency; subBalance = LoadAccount(item.SubAccount); if (subBalance.lblCreditAmount > 0) { if (accountCurrency == subAccountCurrency) { lstCreditAmounts.Add(subBalance.lblCreditAmount); } else { double currencyRate = 0; if (G.glb.lstCurrencyRate.Exists(o => o.CurrencyA == accountCurrency && o.CurrencyB == subAccountCurrency)) { currencyRate = G.glb.lstCurrencyRate.Find(o => o.CurrencyA == accountCurrency && o.CurrencyB == subAccountCurrency).Rate; lstCreditAmounts.Add(subBalance.lblCreditAmount / currencyRate); } else { currencyRate = G.glb.lstCurrencyRate.Find(o => o.CurrencyB == accountCurrency && o.CurrencyA == subAccountCurrency).Rate; lstCreditAmounts.Add(subBalance.lblCreditAmount * currencyRate); } } lstCreditDesc.Add(item.SubAccount); } if (subBalance.lblDebitAmount > 0) { if (accountCurrency == subAccountCurrency) { lstDebitAmounts.Add(subBalance.lblDebitAmount); } else { double currencyRate = 0; if (G.glb.lstCurrencyRate.Exists(o => o.CurrencyA == accountCurrency && o.CurrencyB == subAccountCurrency)) { currencyRate = G.glb.lstCurrencyRate.Find(o => o.CurrencyA == accountCurrency && o.CurrencyB == subAccountCurrency).Rate; lstDebitAmounts.Add(subBalance.lblDebitAmount / currencyRate); } else { currencyRate = G.glb.lstCurrencyRate.Find(o => o.CurrencyB == accountCurrency && o.CurrencyA == subAccountCurrency).Rate; lstDebitAmounts.Add(subBalance.lblDebitAmount * currencyRate); } } lstDebitDesc.Add(item.SubAccount); } } if (lstCreditAmounts.Count > 0) { plot.DrawPercentageBlocks(picCredit, "g", lstCreditAmounts, lstCreditDesc); } else { picCredit.BackColor = Color.White; picCredit.Controls.Clear(); } if (lstDebitAmounts.Count > 0) { plot.DrawPercentageBlocks(picDebit, "r", lstDebitAmounts, lstDebitDesc); } else { picDebit.BackColor = Color.White; picDebit.Controls.Clear(); } } else { CAccountBalanceDetail balance = LoadAccount(accountname); picDebit.BackColor = Color.White; picDebit.Controls.Clear(); picCredit.BackColor = Color.White; picCredit.Controls.Clear(); if (balance.lblCreditAmount > 0) { plot.DrawPercentageBlocks(picCredit, "g", new List <double> { balance.lblCreditAmount }, new List <string> { accountname }); } if (balance.lblDebitAmount > 0) { plot.DrawPercentageBlocks(picDebit, "r", new List <double> { balance.lblDebitAmount }, new List <string> { accountname }); } } } }
private CAccountBalanceDetail LoadAccount(string accountName) { CAccountBalanceDetail res = new CAccountBalanceDetail(); calculate C = new calculate(); double curAssetsBalance = 0; double curLiabilitiesBalance = 0; calculate.SBalance currentAssets = C.CalBalance( "(Assets)", G.glb.lstAccount, G.glb.lstSubAccount, G.glb.lstTransaction, G.glb.lstCurrencyRate, dtpStatementPeriodStart.Value.Date, dtpStatementPeriodEnd.Value.Date); curAssetsBalance = currentAssets.EndingBalanceDebit - currentAssets.EndingBalanceCredit; calculate.SBalance currentLiabilities = C.CalBalance( "(Liability)", G.glb.lstAccount, G.glb.lstSubAccount, G.glb.lstTransaction, G.glb.lstCurrencyRate, dtpStatementPeriodStart.Value.Date, dtpStatementPeriodEnd.Value.Date); curLiabilitiesBalance = currentLiabilities.EndingBalanceDebit - currentLiabilities.EndingBalanceCredit; res.lblBalance = Math.Round(curAssetsBalance + curLiabilitiesBalance, 2); calculate.SBalance balance = C.CalBalance( accountName, G.glb.lstAccount, G.glb.lstSubAccount, G.glb.lstTransaction, G.glb.lstCurrencyRate, dtpStatementPeriodStart.Value.Date, dtpStatementPeriodEnd.Value.Date); res.lblDebitOpening = Math.Round(balance.OpeningBalanceDebit, 2); res.lblCreditOpening = Math.Round(balance.OpeningBalanceCredit, 2); res.lblDebitAmount = Math.Round(balance.AmountDebit, 2); res.lblCreditAmount = Math.Round(balance.AmountCredit, 2); res.lblDebitEnding = Math.Round(balance.EndingBalanceDebit, 2); res.lblCreditEnding = Math.Round(balance.EndingBalanceCredit, 2); double futureAssetsBalance = 0; double futureLiabilitiesBalance = 0; calculate.SBalance futureAssets = C.CalFutureBalance( "(Assets)", G.glb.lstAccount, G.glb.lstSubAccount, G.glb.lstTransaction, G.glb.lstBudget, G.glb.lstCurrencyRate, dtpStatementPeriodStart.Value.Date, dtpEndOfPredictPeriod.Value.Date); futureAssetsBalance = futureAssets.EndingBalanceDebit - futureAssets.EndingBalanceCredit; calculate.SBalance futureLiabilities = C.CalFutureBalance( "(Liability)", G.glb.lstAccount, G.glb.lstSubAccount, G.glb.lstTransaction, G.glb.lstBudget, G.glb.lstCurrencyRate, dtpStatementPeriodStart.Value.Date, dtpEndOfPredictPeriod.Value.Date); futureLiabilitiesBalance = futureLiabilities.EndingBalanceDebit - futureLiabilities.EndingBalanceCredit; res.lblFutureBalance = Math.Round(futureAssetsBalance + futureLiabilitiesBalance, 2); calculate.SBalance futureBalance = C.CalFutureBalance( accountName, G.glb.lstAccount, G.glb.lstSubAccount, G.glb.lstTransaction, G.glb.lstBudget, G.glb.lstCurrencyRate, dtpStatementPeriodStart.Value.Date, dtpEndOfPredictPeriod.Value.Date); res.lblFutureDebitAmount = Math.Round(futureBalance.AmountDebit, 2); res.lblFutureCreditAmount = Math.Round(futureBalance.AmountCredit, 2); res.lblFutureDebitEnding = Math.Round(futureBalance.EndingBalanceDebit, 2); res.lblFutureCreditEnding = Math.Round(futureBalance.EndingBalanceCredit, 2); return(res); }