управление складом для частичной отгрузки в laravel? - PullRequest
0 голосов
/ 16 ноября 2018

В настоящее время я работаю над проектом, связанным с системой управления запасами на уровне 5.6. В основном у меня есть 3 таблицы в базе данных MySQL, которые я буду связывать с моей программой; запчасти, закажи и получи

Детали таблица выглядит как

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 штук, поэтому дефект и short будут в таблице 0 , а поле stock будет 300 для третьего ряда.

При продаже возникает актуальная проблема.

Что я могу сделать в следующих случаях.

Дело 1:

Предположим, что клиент хочет купить продукт за 50 штук, который имеет order_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

Случай 2:

Предположим, что клиент хочет купить 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...