devsohail/warehouse-framework

Laravel 仓库框架

v2.3 2024-06-21 09:56 UTC

This package is auto-updated.

Last update: 2024-09-21 10:56:12 UTC


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(...);

注意:您只能在订单状态为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

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南获取详细信息。

安全漏洞

请查看我们的安全策略了解如何报告安全漏洞。

鸣谢

  • [Sohail Sajid][link-author]
  • [所有贡献者][link-contributors]

许可协议

MIT 许可协议(MIT)。请参阅许可文件获取更多信息。