realsoftgt/real-kardex

用于处理库存、通知和物品类型产品的kardes的Laravel或FilamentPHP中使用的Eloquent模型的补充。

dev-main 2023-11-30 17:21 UTC

This package is auto-updated.

Last update: 2024-09-30 02:02:56 UTC


README

Latest Version on Packagist Total Downloads Software License

为Eloquent模型保持库存。此包将跟踪模型的库存变更。您可以增加、减少、清除和设置库存。还可以检查模型是否在库存中(在特定日期/时间)。

安装

您可以通过composer安装此包

composer require realsoftgt/real-kardex

在您的项目中运行 php artisan vendor:publish --provider="RealSoft\RealKardex\KardexServiceProvider",将发布此包的所有文件。运行 php artisan migrate 以迁移表。现在您的数据库中将有 stock_mutations 表。

配置文件看起来像这样

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default table name
    |--------------------------------------------------------------------------
    |
    | Table name to use to store mutations.
    |
    */
    
    'table' => 'stock_mutations',
    
    'stock_mutation_model' => RealSoft\RealKardex\StockMutation::class,
];

用法

添加 HasKardex 特性将使模型启用库存功能。

注意:如果您需要使用自定义模型,例如MongoDB,您可以在配置文件 kardex.php 中更新要使用的模型。

use RealSoft\RealKardex\HasKardex;

class Item extends Model
{
    use HasKardex;
}

基本变更

$book->increaseStock(10);
$book->decreaseStock(10);
$book->mutateStock(10);
$book->mutateStock(-10);

带有仓库支持

$book->increaseStock(10, ['warehouse' => $warehouse_first]);
$book->decreaseStock(10, ['warehouse' => $warehouse_first]);
$book->mutateStock(10, ['warehouse' => $warehouse_first]);
$book->mutateStock(-10, ['warehouse' => $warehouse_first]);

清除库存

您也可以清除库存并直接设置新的值。

$book->clearStock();
$book->clearStock(10);
// With warehouse
$book->clearStock(10, ['warehouse' => $warehouse_first]);

设置库存

您可以设置库存。这将创建一个新的变更,其中包含旧值和新值之间的差异。

$book->setStock(10);

检查模型是否在库存中

您还可以检查产品是否在库存中(具有最小值)。

$book->inStock();
$book->inStock(10);

带有仓库

$book->inStock(); // anywhere
$book->inStock(10);
$book->inStock(10, ['warehouse' => $warehouse_first]);

当前库存

获取特定日期的当前库存值。

$book->stock;
$book->stock(Carbon::now()->subDays(10));

注意:如果您正在使用MongoDb,您需要在配置文件中设置日期类。'special_date_class' => \MongoDB\BSON\UTCDateTime::class,

特定仓库的当前库存

获取特定仓库在特定日期的当前库存值。

$book->stock(null, ['warehouse' =>$warehouse_first]);
$book->stock(Carbon::now()->subDays(10), ['warehouse' =>$warehouse_first]);

在仓库之间移动

将源仓库的金额移动到目标仓库。

$book->moveBetweenStocks(5,$warehouse_first, $warehouse_second);

库存参数

向库存变更添加描述和/或引用模型。

$book->increaseStock(10, [
    'description' => 'This is a description',
    'reference' => $otherModel,
]);

带有仓库

$book->setStock(10, ['warehouse' => $warehouse_first]);

查询作用域

您还可以根据库存进行查询。

Book::whereInStock()->get();
Book::whereOutOfStock()->get();

测试

composer test

贡献

欢迎贡献,感谢大家 :)

关于Real Software Solutions

Real Software Solutions 是一个来自危地马拉的小团队。我们为Web开发者创建(开源)工具,并在 Gist 上撰写相关主题。您可以在 Twitter 上关注我们,给我们买一杯啤酒 或者在 Patreon 上支持我们。

许可

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