popplestones / quickbooks-helper
整合Quickbooks与Laravel所需的一切
Requires
- quickbooks/v3-php-sdk: dev-master
- dev-main
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.27
- v1.1.26
- v1.1.25
- v1.1.24
- v1.1.23
- v1.1.22
- v1.1.21
- v1.1.20
- v1.1.18
- v1.1.17
- v1.1.16
- v1.1.15
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.22
- v1.0.21
- v1.0.20
- v1.0.19
- v1.0.18
- v1.0.17
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-30 01:32:37 UTC
README
包装Quickbooks PHP SDK的辅助工具。
安装
- 安装包
composer require popplestones/quickbooks-helper
- 运行我们的迁移以安装
quickbooks_tokens
表
``bash php artisan migrate --package=popplestones/quickbooks-helper
该包使用自动注册 Laravel。
配置
- 您需要在您的
user
模型上创建一个quickbooksToken
关系,或者可选地另一个模型。有一个名为Poppletstones\Quickbooks\Traits\HasQuickbooksToken
的特质,您可以将其包含在您的user
模型中,这将设置关系。为此,实现以下内容
将use Popplestones\Quickbooks\Traits\HasQuickbooksToken;
添加到User.php
的顶部,并将特质添加到类中。例如
use Popplestones\Quickbooks\Traits\HasQuickbooksToken; class User extends Authenticateable { use Notifiable, HasQuickbooksToken;
注意:如果您的User
模型不是App\models\User
,那么您需要发布配置并按以下说明修改它。
更改模型
- 发布配置
php artisan vendor:publish --tag=quickbooks.config
- 根据需要修改模型和字段
... 'user' => [ 'keys' => [ 'foreign' => 'user_id', 'owner' => 'id' ], 'model' => 'App\Models\User' ] ...
Quickbooks API密钥
- 将client_id和client_secret添加到您的.env文件中
最小密钥
QUICKBOOKS_CLIENT_ID=<client id provided by quickbooks> QUICKBOOKS_CLIENT_SECRET=<client secret provided by quickbooks>
可选密钥
QUICKBOOKS_API_URL=<Development|Production> # defaults to App's env value QUICKBOOKS_DEBUG=<true|false> # defaults to App's debug value
视图
可以通过运行以下命令发布视图文件
php artisan vendor:publish --tag=quickbooks-views
用法
以下是一个使用tinker从Quickbooks获取公司信息的示例
注意:在执行这些命令之前,请访问您的连接路由(默认为/quickbooks/connect),为您的用户获取quickbooks令牌。
Auth::logInUsingId(1); $quickbooks = app('Quickbooks') $quickbooks->getDataService()->getCompanyInfo();
您可以根据SDK中的说明调用任何资源。
使用包含的artisan命令
如果您想使用包含的artisan命令,您需要提供查询以检索您的数据。在AppServiceProvider的boot方法中添加您的客户查询。
QuickbooksHelper::setCustomerQuery(function() { return User::query() ->with('client') ->role(User::ROLE_APPROVED); }); QuickbooksHelper::setCustomerFilter(function($query) { $query ->has('orders') ->whereNull('qb_customer_id') ->where('sync_failed', '<', 3); });
一旦设置了customerQuery和customerFilter,您就可以运行artisan命令来与quickbooks同步客户。
php artisan qb:customer
在这个提供的示例中,只有那些有订单且同步失败不超过3次且尚未与quickbooks同步的客户将被同步。如果您按如下方式指定ID以同步客户
php artisan qb:customer --id=123
将忽略客户过滤器,这使您能够更新已经同步的现有客户。
同样,要使用qb:invoice命令,您还需要设置invoiceQuery和invoiceFilter,例如
QuickbooksHelper::setInvoiceQuery(function() { return Order::query() ->with(['user', 'items']) ->whereHas('user', function ($q) { $q->whereNotNull('qb_customer_id'); }) ->whereNotNull('paymentid'); }); QuickbooksHelper::setInvoiceFilter(function(&$query) { $query->where(function ($q) { $q->whereNull('qb_invoice_id') ->orWhereNull('qb_payment_id') ->orWhere('sync', 1); }) ->where('sync_failed', '<', 3) });
中间件
如果您有依赖于用户账户拥有可用的QuickBooks OAuth令牌的路由,有一个名为Codemonkey76\Quickbooks\Http\Middleware\QuickbooksConnected
的中间件,它注册为quickbooks
,将确保账户已链接,并在必要时将其重定向到connect
路由。
以下是一个示例路由定义
Route::view('some/route/needing/quickbooks/token/before/using', 'some.view') ->middleware('quickbooks');