devsohail / warehouse-framework
Laravel 仓库框架
Requires
- php: ^8.1 || ^8.2 || ^8.3
- devsohail/gtin: ^2.10
- devsohail/laravel-model-expires: ^1.10
- illuminate/console: ^9.0 || ^10.0
- illuminate/contracts: ^9.0 || ^10.0
- illuminate/database: ^9.0 || ^10.0
- illuminate/queue: ^9.0 || ^10.0
- illuminate/support: ^9.0 || ^10.0
- spatie/laravel-model-states: ^2.2
- staudenmeir/eloquent-has-many-deep: ^1.15
Requires (Dev)
- laravel/legacy-factories: ^1.1
- mockery/mockery: ^1.5
- nunomaduro/collision: ^6.0 || ^7.0
- orchestra/testbench: ^6.24 || ^7.0
- phpunit/phpunit: ^9.5 || ^10.0
README
![PHP版本][ico-php-version] [![Packagist最新版本][ico-version]][link-packagist] ![软件许可][ico-license] [![测试][ico-tests]][link-tests] [![代码风格][ico-code-style]][link-code-style] [![总下载量][ico-downloads]][link-downloads]
安装
您可以通过composer安装此包
composer require devsohail/warehouse-framework
运行安装命令
php artisan warehouse:install
此包使用自己的数据库。
默认情况下,我们假设您会在config/database.php
文件中准备一个名为"warehouse"的连接。
如果您想使用不同的连接,您可以在.env
文件中设置WAREHOUSE_DB_CONNECTION
。
现在您可以使用以下命令运行此包的迁移
php artisan warehouse:migrate
使用方法
位置
您可以使用Just\Warehouse\Models\Location
模型检索所有位置
Location::all();
使用以下 artisan 命令创建位置
php artisan warehouse:make:location
库存
使用GTIN
值向位置添加库存,您可以传递一个数量作为第二个参数
$location = Location::find(1); $location->addInventory('1300000000000'); $location->addInventory('1234567890005', 2);
将库存移动到另一个位置
$inventory = Inventory::first(); $inventory->move($location);
您还可以使用GTIN
将库存从一处移动到另一处
$location1 = Location::find(1); $location2 = Location::find(2); $location1->addInventory('1234567890005'); $location1->move('1234567890005', $location2);
一次性将多个物品从一个位置移动到另一个位置
$location->moveMany([ '1234567890005', '1234567890005', ], $location2);
注意:如果您尝试一次性移动多个物品并且发生错误,将抛出异常,且没有任何物品会被从一个位置移动到另一个位置。
从位置中移除库存
$location = Location::find(1); $location->removeInventory('1234567890005');
从位置中移除所有库存
$location = Location::find(1); $location->removeAllInventory();
订单
创建新的订单
$order = Order::create([ 'order_number' => 'my-first-order-0001', ]);
使用addLine
方法添加订单行,传递一个GTIN
值,您可以传递一个数量作为第二个参数
$order->addLine('1300000000000'); $order->addLine('1234567890005', 2); $order->addLine(...);
注意:您只能在订单状态为
created
或hold
时添加订单行。
删除订单行也是如此。
处理订单
$order->process();
这将更新订单状态为open
,并准备好拣选。
挂起订单
您可以通过调用hold
方法挂起订单。使用unhold
方法取消挂起
$order->hold(); $order->unhold();
订单状态
您可以通过以下方法在status
属性上确定订单的状态
$order->status->isCreated(); $order->status->isOpen(); $order->status->isBackorder(); $order->status->isHold(); $order->status->isFulfilled(); $order->status->isDeleted();
拣货单
创建订单后,您可以检索拣货单。
确定拣货单是否可用并检索它
$order->hasPickList(); $order->pickList();
pickList
方法返回一个集合
$order->pickList()->each(function ($item) { $item->get('gtin'); $item->get('location'); $item->get('quantity'); });
当订单被拣选后,您可以使用markAsFulfilled
方法将其标记为已履行
$order->markAsFulfilled();
替换订单行
如果某个产品缺失或例如物品损坏,您可以使用replace
方法替换订单行
$order->lines->first()->replace();
这将从库存中删除预留的产品,并用另一个物品(如果可用)替换它。
库存
要查询库存数量,您可以使用\Just\Warehouse\Facades\Stock
外观
Stock::available(); Stock::backorder(); Stock::reserved();
对于特定的GTIN
Stock::gtin('1300000000000')->available(); Stock::gtin('1300000000000')->backorder(); Stock::gtin('1300000000000')->reserved();
事件
此包触发多个事件
InventoryCreated
OrderLineCreated
OrderLineReplaced
OrderStatusUpdated
OrderFulfilled
测试
composer test
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南获取详细信息。
安全漏洞
请查看我们的安全策略了解如何报告安全漏洞。
鸣谢
- [Sohail Sajid][link-author]
- [所有贡献者][link-contributors]
许可协议
MIT 许可协议(MIT)。请参阅许可文件获取更多信息。