1. Go to this page and download the library: Download ekmungai/eloquent-ifrs library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ekmungai / eloquent-ifrs example snippets
composer
use IFRS\IFRSServiceProvider;
----------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
|
| Here we will register all of the application's service providers which
| are used to bind services into the container. Service providers are
| totally optional, so you are not
php artisan migrate
git clone [email protected]/ekmungai/eloquent-ifrs eloquent-ifrs
cd eloquent-ifrs
composer update
cd eloquent-ifrs
vendor/bin/phpunit
php artisan vendor:publish
use IFRS\Traits\IFRSUser;
use IFRS\Traits\Recycling;
use IFRS\Interfaces\Recyclable;
...
class User ... implements Recyclable {
...
use IFRSUser;
use Recycling;
...
}
...
use IFRS\Models\Entity;
use IFRS\Models\Currency;
$entity = Entity::create([
"name" => "Example Company",
]);
//Entities orting Currency
$entity->currency_id = $currency->id;
$entity->save();
use IFRS\Transactions\CashSale;
$cashSale = CashSale::create([
'account_id' => $bankAccount->id,
'date' => Carbon::now(),
'narration' => "Example Cash Sale",
]); // Intermediate save does not record the transaction in the Ledger
use IFRS\models\LineItem;
$cashSaleLineItem = LineItem::create([
'account_id' => $revenueAccount->id,
'narration' => "Example Cash Sale Line Item",
'quantity' => 1,
'amount' => 100,
]);
$cashSaleLineItem->addVat($outputVat);
$cashSale->addLineItem($cashSaleLineItem);
$cashSale->post(); // This posts the Transaction to the Ledger
use IFRS\Models\Assignment;
echo $clientInvoice->clearedAmount; //0: Currently the Invoice has not been cleared at all
echo $clientReceipt->balance; //50: The Receipt has not been assigned to clear any transaction
$assignment = Assignment::create([
'assignment_date'=> Carbon::now(),
'transaction_id' => $clientReceipt->id,
'cleared_id' => $clientInvoice->id,
'cleared_type'=> $clientInvoice->clearedType,
'amount' => 50,
]);
echo $clientInvoice->clearedAmount; //50
echo $clientReceipt->balance; //0: The Receipt has been assigned fully to the Invoice
use IFRS\Reports\IncomeStatement;
$incomeStatement = new IncomeStatement(
"2021-01-01", // Report start date
"2021-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 2021 to Dec 31 2021
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
===============
use IFRS\Reports\BalanceSheet;
$balanceSheet = new BalanceSheet(
"2021-12-31" // Report end date
)->getSections();
/**
* again to emphasize, this function is only for demonstration and
* debugging use and should never be called in production
*/
dd($balanceSheet->toString());
Example Company
Balance Sheet
As at: Dec 31 2021
Assets
Non Current Asset 120 (asset purchase)
Receivables 70 (100 credit sale + 20 VAT - 50 client receipt)
Bank 50 (120 cash sale - 120 cash purchase + 50 client receipt)
---------------
Total Assets 240
Liabilities
Control Account 20 (VAT: 20 cash sale + 20 credit sale - 10 cash purchase - 10 credit purchase)
Payable 120 (100 credit purchase + 20 VAT)
---------------
Total Liabilities 140
---------------
Net Assets 100
===============
Equity
Income Statement 100
---------------
Total Equity 100
===============