codeigniter中的先进先出库存

vmjh9lq9  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(140)

我是CodeIgniter的新手。我正在尝试更新基于FIFO的表的数量。我正在创建一个盘点页面,如果我们计算的物理项少于表中的数量,我们将进行核对,这将更新库存表和报废表。更新库存表很容易,我已经完成了,但我想根据FIFO更新报废表的数量。例如,我需要库存表中物料A的数量为50,但实际计数时为35,因此在进行调节时,应从废弃表数量中减去15。
| 项目名称|数量|日期|
| - -|- -|- -|
| 物料A|五个|2022年8月22日|
| 物料A|四个|2022年8月22日|
| 物料A|九个|2022年8月22日|
更新后应该是这样的:|项目名称|数量|日期||:———————-|:——————:| □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □||物料A|第0页|2022年8月22日||物料A|第0页|2022年8月22日||物料A|三个|2022年8月22日|
请帮助我。如果你需要进一步的澄清,请让我知道。提前感谢

public function update_complete(){

        $stock_diff = $this->input->post('stock_diff');

        $counted_stock_value = $this->input->post('counted_stock_value');
        $cost_diff = $this->input->post('cost_diff');
        
        
        $reconcile = $this->input->post('reconcile');
        $barcode = $this->input->post('barcode');
        $stk_id = $this->input->post('stk_id');         
        
        
        for ($i = 0; $i < count($barcode); $i++) 
        {
            $data = array(
                'stocktake_value' => $counted_stock_value[$i],
                'stock_diff' => $stock_diff[$i],
                'cost_diff' => $cost_diff[$i],
                'status' => $reconcile[$i]
            );
            
            // Commented for testing
            $this->db->where('stk_id', $stk_id);
            $this->db->where('barcode', $barcode[$i]);
            $this->db->update('stocktake_trans', $data);

            $itemResult = $this->item_model->getStockdiscardTransByBarcodeNew($barcode[$i]);

            foreach($itemResult as $item)
            {
                $rest = $stock_diff[$i];
                if($rest > 0)
                {
                    
                    if($item['quantity'] >= $rest)
                    {
                        $rest = $item['quantity']-=$rest;
                        //$rest = 0;
                        echo $rest;
                    }
                    else
                    {
                        $item['quantity'] = 0;
                        $rest = $rest - $item['quantity'];
                    }
                    $this->db->where('barcode', $barcode[$i]);
                    $this->db->update('stockdiscard_trans', array('quantity' => $rest));
                }
            }
        }     
        
        
        
        // Update Stock Take
        $data1 = array(
            'reconciled_by' => $this->session->userdata('name'),
            'reconciled_at' => date('Y-m-d')
        );

        $this->db->where('id', $stk_id);
        $this->db->update('stocktake', $data1);

        // Set message
        $this->session->set_flashdata('stocktake_reconciled', 'Stock Take has been Reconciled!');

        //redirect('stocktake/complete');
    }
rn0zuynd

rn0zuynd1#

我知道你想保存新旧库存之间的差异。
可以将原始数量存储在变量中,用新值更新产品,然后计算原始数量与新数量之间的差值。最后,将差值存储在丢弃表中。
我理解的对吗?
编辑1:像这样的东西?

$itemsModel = model('App\Models\itemsModel');
$totalDB = $itemsModel->where('Items', 'Item A')->select('sum(Qty)')->first(); // let say 50

$totalMag = 35;
$rest = $totalDB - $totalMag; // rest 50-35 = 15

$itemResult = $itemsModel->where('Items', 'Item A')->findAll();

foreach($itemResult as $item)
{
    if($rest > 0)
    {
        if($item->Qty >= $rest)
        {
            $item->Qty -= $rest;
            $rest = 0;
        }
        else
        {
            $item->Qty = 0;
            $rest = $rest - $item->Qty;
        }
        $item->save();
    }
}

回溯测试:

  • 剩余数量15
    5〉= 15?-假数量= 0剩余= 10
    4〉= 10错误数量= 0剩余= 6
    9〉= 6实际数量= 9-6 = 3其余= 0
    但你需要管理,如果产品的剩余库存将大于0,产品A的数量将为0,会发生什么。
    假设剩余数量为19
    5〉= 19?错误数量= 0剩余= 14
    4〉= 14?错误数量= 0剩余数量= 10
    9〉= 10?假数量= 0剩余= 1
    当表中所有项目的数量为0时,剩余数量为1时会发生什么?

相关问题