Adds two charts to the per-account transactions view: a stacked bar chart of monthly totals and a pie chart of overall totals, both grouped by booking text, so recurring bookings (rent, subscriptions, etc.) are visible at a glance. Chart components are keyed on the account id so switching accounts remounts them instead of reusing a stale Plotly instance.
47 lines
No EOL
1.4 KiB
C#
47 lines
No EOL
1.4 KiB
C#
using System;
|
|
using Schaad.Accounting.Models;
|
|
|
|
namespace Schaad.Accounting.Datasets
|
|
{
|
|
public class TransactionDataset : Transaction
|
|
{
|
|
public Account OriginAccount { get; set; }
|
|
|
|
public Account TargetAccount { get; set; }
|
|
|
|
public TransactionDataset(Transaction transaction, Account originAccount, Account targetAccout)
|
|
{
|
|
this.BankTransactionId = transaction.BankTransactionId;
|
|
this.Id = transaction.Id;
|
|
this.OriginAccountId = transaction.OriginAccountId;
|
|
this.TargetAccountId = transaction.TargetAccountId;
|
|
this.Text = transaction.Text;
|
|
this.Value = transaction.Value;
|
|
this.FxRate = transaction.FxRate;
|
|
this.ValueDate = transaction.ValueDate;
|
|
this.BookingDate = transaction.BookingDate;
|
|
this.OriginAccount = originAccount;
|
|
this.TargetAccount = targetAccout;
|
|
}
|
|
|
|
public decimal GetValue(bool withFxRate)
|
|
{
|
|
if (withFxRate && FxRate != 0)
|
|
{
|
|
return Math.Round(Value / FxRate.Value, 2);
|
|
}
|
|
else
|
|
return Value;
|
|
}
|
|
|
|
public decimal GetValue(bool withFxRate, string accountId)
|
|
{
|
|
if (accountId == OriginAccountId)
|
|
{
|
|
return -1 * GetValue(withFxRate);
|
|
}
|
|
|
|
return GetValue(withFxRate);
|
|
}
|
|
}
|
|
} |