** NOTE: I Just stared to writing this library and it not suitable for using in production environment. **
A ledger is a book or collection of accounts in which account transactions are recorded. Each account has an opening or carry-forward balance, would record transactions as either a debit or credit in separate columns and the ending or closing balance.
- Dr – Debit side of a ledger. "Dr" stands for "Debit register"
- Cr – Credit side of a ledger. "Cr" stands for "Credit register"
A chart of accounts is a list of the accounts codes that can be identified with numeric, alphabetical, or alphanumeric codes allowing the account to be located in the general ledger. The equity section of the chart of accounts is based on the fact that the legal structure of the entity is of a particular legal type. Possibilities include sole trader, partnership, trust, and company.
// create new repository or inject it from IoC
// notice: we used memory repository that is a built in implementation of IRepository
// and its for demo purpose.
var repo = new InMemoryRepository();
// create new ledger agent and pass repository to it
var agent = new LedgerAgent(repo);
// create a Ledger
var ledger = new Ledger
{
Id = Guid.NewGuid(),
StartDate = DateTime.Now,
EndDate = DateTime.Now.AddYears(1),
Title = "My Ledger"
};
// Assign ledger to Agent
agent.SetLedger(ledger);
// open a new tranasction and use chain method `AddEntry()`
// to add entries and commit the transaction at the end
// notice: you should find account or account's Id from IAccountAgent before adding entries:
var t = await agent.OpenTransaction(datetime: DateTime.Now, note: "Buy a car")
.AddEntry( amount: 10000, accountId: 1101, EntryType.DEBIT, note: "some note")
.AddEntry( amount: 10000, accountId: 7101, EntryType.CREDIT, note: "some other note")
.CommitTransactionAsync();
// create new AccountAgent object. this is an implementaion of IAccountAgent (its better to iject it from IoC)
var accountAgent = new AccountAgent(repo);
var balance = await accountAgent.GetBalanceAsync(1101, ledger.Id); // The `balance` value for account number 1101 is -10000
All other code in this repository is licensed under a MIT license.