Luca Accounting is a Double Entry Accounting
system that can easily be implemented into your application.
It validates and sorts transactions prior to committing them to your Database.
// Create a Transaction
$txn = new Transaction( $date , 'Capital Contribution',
[
new TransactionLine($cash_account_1, 100.00, 00.00),
new TransactionLine($eqty_account_2, 00.00, 100.00),
]
);
// Process the Transaction
$system->transact($txn);
- Follows Double Entry based accounting rules.
- Built-in validation of transactions.
- Sorts transaction (Dr|Cr) entries automatically prior to committing to the db.
- Separate Debit and Credit entries.
Via Composer. Run the following command from your project's root.
composer require s-mcdonald/luca-accounts
- Php 8.1
- Extend the abstract
AccountSystem
class and then Implement theAccountInterface
to yourAccount
model or entity.
// Your\App\AccountSystem.php
class AccountSystem extends \SamMcDonald\LucaAccounts\AbstractAccountSystem {
...
}
// Your\App\Account.php
class Account implements \SamMcDonald\LucaAccounts\Contracts\AccountInterface {
...
}
<?php
namespace Your\App;
use Your\App\AccountSystem;
use SamMcDonald\LucaAccounts\Components\Transaction;
use SamMcDonald\LucaAccounts\Components\TransactionLine;
class YourAccountingProgram
{
public static function simpleTransaction()
{
// Get a new instance of the Accounting System
$system = new AccountSystem();
// Register the transact function
$system->register('transact', static function(Transaction $txn) {
// Your logic to commit the transaction to DB
});
/*
* Load the accounts you want to use in the Transaction.
* This will most likely be a Model or Entity object.
*/
$acc1 = Account::fetch('cash-account');
$acc2 = Account::fetch('acc-rec-account');
$acc3 = Account::fetch('inventory-account');
/*
* Make a purchase of stock request
*/
$txn = new Transaction( new DateTimeImmutable('now') , 'Purchase of inventory',
[
new TransactionLine($acc1, 000.00, 50.00),
new TransactionLine($acc2, 000.00, 150.00),
new TransactionLine($acc3, 200.00, 0.00),
]
);
/*
* Perform the transaction
*/
$system->transact($txn);
}
}
s-mcdonald/luca-accounts/
│
└ src/
│
├── Components/
│ │
│ ├── Transaction.php
│ │
│ └── TransactionLine.php
│
│
├── Contracts/
│ │
│ ├── AccountInterface.php
│ │
│ ├── TransactionInterface.php
│ │
│ └── TransactionLineInterface.php
│
│
├── Exceptions/
│ │
│ └── DoubleEntryException.php
│ │
│ └── InvalidTransactionLineEntryException.php
│
│
├── Enums/
│ │
│ └── AccountType.php
│
├── Util/
│ │
│ └── EntryFormatter.php
│
│
└── AbstractAccountSystem.php
Luca-Accounts is licensed under the terms of the MIT License (See LICENSE file for details).
Luca-Accounting was named after Luca Pacioli (The father of Accounting). He popularized the DoubleEntry book-keeping system.