realsoftgt / real-kardex
用于处理库存、通知和物品类型产品的kardes的Laravel或FilamentPHP中使用的Eloquent模型的补充。
Requires
- php: ^8.0
Requires (Dev)
- orchestra/testbench: ^7.17
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-30 02:02:56 UTC
README
为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)。请参阅 许可文件 以获取更多信息。