where(["stockid"=>$stockid,"bnCode"=>$bn])->findOrEmpty(); if(empty($data)){ $data=[ "stockid"=>$stockid, "bnCode"=>$bn, "total_num"=>$num, "used_num"=>0, "balance_num"=>$num, "origin_price"=>$origin_price, "addtime"=>date("Y-m-d H:i:s"), "updatetime"=>date("Y-m-d H:i:s") ]; }else{ $total_num = $data["balance_num"]+$num; if($total_num> $data["total_num"]) throw new Exception("批次入库数量超过总数",1006); $data["balance_num"]=$num; $data["updatetime"]=date("Y-m-d H:i:s"); } return $this->save($data); } /** * @param int $stockid * @param int $num * @return array 库存品下单消耗bn库存数 * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function SaleBn(int $stockid,int $num){ $arr = $this->where([["stockid","=",$stockid],["balance_num",">",0]])->select()->toArray(); if(empty($arr)) throw new Exception("库存批次数量不足","1006"); $list=[]; foreach ($arr as $item) { if($num<=0) break; $temp=[]; if($item['balance_num']<=$num){ $item['balance_num'] =0; $item['used_num'] +=$item['balance_num']; $num-=$item['balance_num']; $item['updatetime'] =date("Y-m-d H:i:s"); $temp=["bnCode"=>$item['bnCode'],"num"=>$item['balance_num']]; }else{ $item['balance_num']-=$num; $item['used_num'] +=$num; $num=0; $item['updatetime'] =date("Y-m-d H:i:s"); $temp=["bnCode"=>$item['bnCode'],"num"=>$num]; } $this->save($item); $list[]=$temp; } return $list; } /** * @param int $stockid * @param string $bn * @param int $num * @return bool 盘点修改bn仓库库存数 * @throws \think\Exception */ public function CheckBn(int $stockid,string $bn,int $num){ $data=$this->where(["stockid"=>$stockid,"bnCode"=>$bn])->findOrEmpty(); if(empty($data)) throw new Exception("未找到Bn库存数据",1006); $data["balance_num"]=$num; $data["total_num"]=$data["used_num"]+$num; $data["updatetime"]=date("Y-m-d H:i:s"); return $this->save($data); } /** * @param string $orderCode * @param int $stockid * @param int $num * @return int * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function OrderBn(string $orderCode,int $stockid,int $num){ $bnArr=$this->SaleBn($stockid,$num); if(empty($bnArr)) throw new Exception("未找到Bn库存数据",1006); $ordBn=[]; foreach ($bnArr as $value){ $saleBn=[ "orderCode"=>$orderCode, "bnCode"=>$value['bnCode'], "stockid"=>$stockid, "num"=>$value['num'], "addtime"=>date("Y-m-d H:i:s"), "updatetime"=>date("Y-m-d H:i:s"), ]; $ordBn[]=$saleBn; } return $this->name("sale_info")->insertAll($ordBn); } }