Luca // Accounting
, (*1)
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., (*2)
// 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);
Documentation
, (*3)
Features
1) Follows Double Entry based accounting rules.
2) Built-in validation of transactions.
3) Sorts transaction (Dr|Cr) entries automatically prior to committing to the db.
4) Separate Debit and Credit entries., (*4)
, (*5)
Installation
Via Composer. Run the following command from your project's root., (*6)
composer require s-mcdonald/luca-accounts
, (*7)
Dependencies
, (*8)
Quick-Start
1) Extend the abstract AccountSystem class and then Implement the AccountInterface to your Account model or entity., (*9)
// Your\App\AccountSystem.php
class AccountSystem extends \SamMcDonald\LucaAccounts\AbstractAccountSystem {
...
}
// Your\App\Account.php
class Account implements \SamMcDonald\LucaAccounts\Contracts\AccountInterface {
...
}
Example
<?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);
}
}
, (*10)
Files
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
License
Luca-Accounts is licensed under the terms of the MIT License
(See LICENSE file for details)., (*11)
Name of Luca
Luca-Accounting was named after Luca Pacioli (The father of Accounting). He popularized the DoubleEntry book-keeping system., (*12)