vswarte/ laravel-ledger
此包已弃用,不再维护。没有建议替代包。
关于此包最新版本(dev-master)没有提供许可信息。
简单的账本包
dev-master
2020-04-17 10:00 UTC
Requires
- moneyphp/money: ^3.1
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2022-06-17 14:39:59 UTC
README
简单的包,用于跟踪货币交易。
使用方法
首先,您需要将Accountable特性添加到您希望开始跟踪交易的Eloquent模型中。
use Ledger\Accountable; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable, Accountable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; }
创建账户
账户只是一个带有余额的实体,所有更改都将在这类账户上执行。单个可负责的实体可以拥有多个账户。您可以为单个用户创建账户,如下所示
User::find(1)->createAccount('groceries', 'Day-to-day groceries');
第一个参数表示账户名称,这必须在Accountable的作用域内是唯一的,因为您将使用它作为标识符。第二个参数只是一个描述。
创建交易
有多种类型的交易,从简单的提款到转账。交易只是对更改进行分组的一种方式。这样,您可以轻松设置在多个账户上操作的交易。
简单借记/贷记
我们只想从/向账户中取款/存入一些资金。
use Ledger\TransactionFactory; // 5 euro $amount = new Money::EUR(500); $account = User::find(1)->account('groceries'); TransactionFactory::debit($account, $amount, 'bought some vegetables');
转账
在某些情况下,我们想要从一个账户中取款,然后将其放入不同的账户(无论是支付费用还是分配储蓄)。
use Ledger\TransactionFactory; $amount = new Money::EUR(500); $from = User::find(1)->account('salary'); $to = User::find(1)->account('car'); TransactionFactory::transfer( $from, $to, $amount, 'monthly savings' );
获取账户余额
没有查询余额,账户就没什么用处。余额本身只是所有贷记更改的总和减去借记交易的总和。
User::find(1)->account('groceries')->balance();