News

Eloquent Double Entry Accounting with a focus on IFRS Compliant Reporting

Published
Eloquent Double Entry Accounting with a focus on IFRS Compliant Reporting image

Eloquent IFRS is a package by Edward Mungai that provides “double-entry accounting with a focus on International Financial Reporting Standards (IFRS) compliant reporting.”

According to the documentation’s introduction, this package can help you generate compliant reports:

The Eloquent IFRS package gives any Laravel application or Lumen API the ability to generate a comprehensive set of financial reports by providing an embedded double-entry bookkeeping system.

The Accounting objects are created with a consistent and fluent interface, allowing seamless integration with the Business objects of the parent application.

Here’s a high-level example from the readme, which demonstrates some of the models:

use IFRS\Models\Account;
use IFRS\models\LineItem;
 
$bankAccount = new Account([
'name' => "Sales Account",
'account_type' => Account::BANK,
])->save();
 
// Intermediate save does not record the transaction in the Ledger
$cashSale = new CashSale([
'account_id' => $bankAccount->id,
'date' => Carbon::now(),
'narration' => "Example Cash Sale",
])->save();
 
// This posts the Transaction to the Ledger
$cashSaleLineItem = new LineItem([
'vat_id' => $outputVat->id,
'account_id' => $revenueAccount->id,
'vat_account_id' => $salesVatAccount->id,
'description' => "Example Cash Sale Line Item",
'quantity' => 1,
'amount' => 100,
])->save();
 
$cashSale->addLineItem($cashSaleLineItem);
$cashSale->post();

Here’s an example of an income report (profit and loss):

use IFRS\Reports\IncomeStatement;
 
$incomeStatement = new IncomeStatement(
"2020-01-01", // Report start date
"2020-12-31", // Report end date
)->getSections();// Fetch balances from the ledger and store them internally
 
/**
* this function is only for demonstration and
* debugging use and should never be called in production
*/
dd($incomeStatement->toString());
 
Example Company
Income Statement
For the Period: Jan 01 2020 to Dec 31 2020
 
Operating Revenues
Operating Revenue 200 (100 cash sales + 100 credit sales)
 
Operating Expenses
Operating Expense 100 (cash purchase)
---------------
Operations Gross Profit 100
 
Non Operating Revenues
Non Operating Revenue 0
---------------
Total Revenue 100
 
Non Operating Expenses
Direct Expense 0
Overhead Expense 0
Other Expense 0
---------------
Total Expenses 0
---------------
Net Profit 100
===============

All of the above examples come from the project readme, and is only a sample of what the package provides. The details of the package (and IFRS reporting) are quite intricate, and you should consult the full documentation.

I find this package unique because it’s created by a “finance guy turned developer.” It’s fantastic to see professionals in other industries turn to Laravel to develop ideas.

You can learn more about this package, get full installation instructions, and view the source code on GitHub at ekmungai/eloquent-ifrs.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Filed in

Sponsored

acquaintsoft logo
Acquaint Softtech

Hire Laravel developers with AI expertise at $20/hr. Get started in 48 hours.

Visit Acquaint Softtech

The latest

View all →
Building EasyReply: How We Used Laravel to Unify Customer Support image

Building EasyReply: How We Used Laravel to Unify Customer Support

Read article
PostgreSQL Monitoring and Schema Linting for Laravel with Vacuum image

PostgreSQL Monitoring and Schema Linting for Laravel with Vacuum

Read article
PayZephyr: One Payment API for Stripe, Paystack, and PayPal image

PayZephyr: One Payment API for Stripe, Paystack, and PayPal

Read article
Bifrost Turns One With AI Builds and New Workflows image

Bifrost Turns One With AI Builds and New Workflows

Read article
Preview Blade Templates in macOS Finder with Quick Blade image

Preview Blade Templates in macOS Finder with Quick Blade

Read article
Artisan Debugging Commands in Laravel Telescope 5.24.0 image

Artisan Debugging Commands in Laravel Telescope 5.24.0

Read article