Download the PHP package ttbooking/accounting without Composer
On this page you can find all versions of the php package ttbooking/accounting. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download ttbooking/accounting
More information about ttbooking/accounting
Files in ttbooking/accounting
Package accounting
Short Description Accounting library
License MIT
Informations about the package accounting
Accounting library
This Laravel package provides support for robust, transactional money or asset transfers between virtual accounts.
Features
- DBMS based transactions and pessimistic locking
- UUIDs for seamless integration and extension
- Big integer and arbitrary precision math support via MoneyPHP library
- Currency conversion support
- Blockchain for data integrity checking
- Complete control through console commands
Requirements
PHP 8.0 and Laravel 9.31 at least.
RDBMS with native JSON field support (recommended).
Installation
Using Composer:
Configuration
After installation you'll need to configure package, in which case you have 2 options:
- via environment variables (your application's
.env
file) - using package's configuration file
If you choose second option, you'll have to copy configuration file into your app's config directory by issuing following command:
You can look into accounting.php
config file if you need to know more about each option and its usage.
If you need to alter database table names or modify schema, you'll also need to issue following command:
If you need to publish both config file and database migrations, you can omit "--tag" option:
After all database-related modifications are done (if needed), you'll need to execute artisan migrate
command.
It is recommended to also configure morph map for every possible account owner entity type.
See https://laravel.com/docs/10.x/eloquent-relationships#custom-polymorphic-types for more info.
Usage
To create account and link it to existing entity, you can use Account facade (or corresponding AccountManager interface):
... will create account for user $user
.
To find existing account by its owner, try this:
... will find account of $user
if it exists or fail otherwise.
Note: it won't fail if you've enabled account auto-creation. Instead, it will create missing account.
To transfer money between two accounts, you can use Transaction facade (or corresponding TransactionManager interface):
... will create transaction for transferring $100 from $account1
to $account2
.
When you'll need to commit this transaction, just do $transaction->commit();
.
You can configure autocommit feature if separate transaction create/commit operation is not needed in your project.
To retrieve account or transaction by its UUID, try following:
... to get account or
... to get transaction.
All versions of accounting with dependencies
illuminate/contracts Version ^9.31 || ^10.0 || ^11.0
illuminate/database Version ^9.31 || ^10.0 || ^11.0
illuminate/support Version ^9.31 || ^10.0 || ^11.0
moneyphp/money Version ^4.0
ramsey/uuid Version ^4.2.2
ttbooking/castable-money Version ^1.0
ttbooking/class-factory Version ^1.0
ttbooking/entity-locator Version *
ttbooking/money-serializer Version ^1.0