mvdnbrk / warehouse-framework
Laravel 仓库框架
Requires
- php: ^7.4 || ^8.0
- illuminate/console: ^7.2 || ^8.24
- illuminate/contracts: ^7.2 || ^8.24
- illuminate/database: ^7.2 || ^8.24
- illuminate/queue: ^7.2 || ^8.24
- illuminate/support: ^7.2 || ^8.24
- mvdnbrk/gtin: ^2.7
- mvdnbrk/laravel-model-expires: ^1.8
- spatie/laravel-model-states: ^1.9
- staudenmeir/eloquent-has-many-deep: ^1.12
Requires (Dev)
- laravel/legacy-factories: ^1.1
- mockery/mockery: ^1.4
- nunomaduro/collision: ^4.2 || ^5.1
- orchestra/testbench: ^5.10 || ^6.5
- phpunit/phpunit: ^9.4
- dev-main
- v0.16.2
- v0.16.1
- v0.16.0
- v0.15.1
- v0.15.0
- v0.14.2
- v0.14.1
- v0.14.0
- v0.13.3
- v0.13.2
- v0.13.1
- v0.13.0
- v0.12.0
- v0.11.8
- v0.11.7
- v0.11.6
- v0.11.5
- v0.11.4
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.10.6
- v0.10.5
- v0.10.4
- v0.10.3
- v0.10.2
- v0.10.1
- v0.10.0
- v0.9.0
- v0.8.0
- v0.7.0
- v0.6.0
- v0.5.0
- v0.4.0
- v0.3.0
- v0.2.0
- v0.1.0
This package is auto-updated.
Last update: 2024-08-29 05:00:36 UTC
README
安装
您可以通过 composer 安装此包
composer require mvdnbrk/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', ]);
通过传递 GTIN
值使用 addLine
方法添加订单行,您可以传递一个数量作为第二个参数
$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
更改日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING获取详细信息。
安全漏洞
请查看我们的安全策略了解如何报告安全漏洞。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。