首页 > 解决方案 > 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);

标签: phpmysqllaravel-5

解决方案


推荐阅读