mvdnbrk/warehouse-framework

Laravel 仓库框架

v0.16.2 2021-03-02 10:37 UTC

README

PHP version Latest Version on Packagist Software License Tests Code style Total Downloads

安装

您可以通过 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(...);

注意:您只能在订单状态为 createdhold 时添加订单行。
尝试删除订单行时也是如此。

处理订单

$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)。请参阅许可证文件获取更多信息。