php - laravel中部分装运的库存管理?
问题描述
我目前正在从事与 laravel 5.6 上的库存管理系统相关的项目。基本上我在 MySQL 数据库中有 3 个表,我将链接到我的程序;零件、订购和接收
零件表看起来像
id | brand | model | partcode | partname
1 | Apple | Iphone X | ixmainpcb | PCB
2 | Apple | Iphone X | ixLCD | Main PCB
3 | Apple | Iphone X | ixcamera | PCB
订单表看起来像
id |part_id | orderno | orderqty | freeqty | purchaseqty | price | totalqty
1 | 1 | O18001 | 1000 | 50 | 950 | 9500 | 1000
2 | 2 | O18002 | 1500 | 100 | 1400 | 28000 | 1500
3 | 3 | O18003 | 2000 | 100 | 1900 | 38000 | 2000
我们只需支付购买数量的价格,无需支付免费数量。freeqty 是方案数量。价格是总价格金额。
接收看起来像
id | order_id |fresh | defect | short | excess | Stock | totalreceive
1 | 1 | 600 | 100 | 300 | 0 | 5 | 700
2 | 2 | 400 | 50 | 1050 | 0 | 130 | 450
3 | 1 | 300 | 0 | 0 | 0 | 300 | 300
首次发货order_id 1产品收到 700 件。它卖给了客户,现在我只剩下 5 件了。在第二次发货时,我的order_id 1发货已完成,收到 300 件,因此缺陷和短缺在表中将为 0,第三行的库存字段将为 300。
在销售时出现了实际问题。
在以下情况下我该怎么办。
情况1:
假设客户想购买 50 件订单 ID 为 1 的产品。那么当我卖掉它时,应该从第一行中扣除 5 个,从第三行中扣除剩余的 45 个,这样我的新接收表看起来像
id | order_id |fresh | defect | short | excess | Stock | totalreceive
1 | 1 | 600 | 100 | 300 | 0 | 0 | 700
2 | 2 | 400 | 50 | 1050 | 0 | 130 | 450
3 | 1 | 300 | 0 | 0 | 0 | 255 | 300
案例二:
假设客户想要购买 5 件(或少于 5 件)具有 order_id 1 的产品。然后当我从第一行出售它时,我的新接收表看起来像
id | order_id |fresh | defect | short | excess | Stock | totalreceive
1 | 1 | 600 | 100 | 300 | 0 | 0 | 700
2 | 2 | 400 | 50 | 1050 | 0 | 130 | 450
3 | 1 | 300 | 0 | 0 | 0 | 300 | 300
处理这些情况的最佳方式\逻辑是什么。提前致谢。
这是我为将销售数据存储在数据库中所做的代码。我不知道这个逻辑是否正确。任何帮助,将不胜感激。
我已经使用 ajax 将这个值从视图传递到控制器。
$deps = Input::only('id', 'vpoid', 'issueqty', 'vpostock', 'amount', 'discount', 'vat', 'netamount', 'status', 'remarks');
$id =$deps['id'];
$vpoid = $deps['vpoid'];
$issueqty = $deps['issueqty'];
$vpostock = $deps['vpostock'];
$amount = $deps['amount'];
$discount = $deps['discount'];
$vat = $deps['vat'];
$netamount = $deps['netamount'];
$status = $deps['status'];
$remarks = $deps['remarks'];
$newstock = 0;
foreach ($vpoid as $key => $n) {
//For Updating the stock in receive table
$chk = VpoUpload::where("id", "=", $vpoid[$key])->get();
$newstock = ((int)$chk[0]->stockqty) - $issueqty[$key];
DB::table('vpo')->where("id", "=", $vpoid[$key])->update(array(
'stockqty' => $newstock,
)
);
}
for ($i=0; $i < count($receiveqty); $i++) {
$data[] =[
'receiveqty' =>$issueqty[$i],
'amount' => $amount[$i],
'status' => $status[$i],
'remarks' => $remarks[$i],
];
}
$vpouploads = VpoSell::insert($data);
解决方案
推荐阅读
- r - 根据其他数据帧中指定的不同时间范围对数据帧进行子集
- java - 更新 java 中的 sqlite_sequence 表
- recursion - clang 是否支持 CUDA __global__ 函数递归?
- java - jax-RS 项目部署成功,但使用 IE 打开 URL 时出现 404 错误
- c# - 监听服务器端 C# 代码中活动的更新
- ios - "unrecognized selector sent to instance" when selector is in other file
- php - 我的照片没有上传到数据库和文件
- gradle - 如何持续启用 Gradle 文件系统监视?
- javascript - 如何为多个单选按钮 Laravel Javascript 设置和获取 cookie
- c# - 将二维数组保存为 JSON