select('*'); $list = $this->limit($model,'',$data); return [200, $list]; } //获取卷膜真实库存 public static function getGoodsRealInventy($goods_id, $storehouse_id){ if(empty($roll_film_id) || empty($storehouse_id)) return []; $array = Inventory::where('storehouse_id',$storehouse_id) ->whereIn('goods_id',$goods_id) ->select('goods_id','storehouse_id','number','lock_number') ->get()->toArray(); if(empty($array)) return []; $return = []; foreach ($array as $v){ $return[$v['goods_id'].$v['storehouse_id']] = $v['number'] - $v['lock_number']; } return $return; } /** * 业务单据审核后 更新库存 * order_number 订单编号 * opt_case 有些订单一次创建会同时有出入库单据 */ public function changeInventory($data){ $model = InOutRecord::where('del_time',0) ->where('from_order_number',$data['order_number']) ->select('storehouse_id',DB::raw("sum(number) as number"),'goods_id') ->groupby('goods_id','storehouse_id'); $result = $model->get()->toArray(); if (empty($result)) return false; foreach ($result as $key => $value){ $m = Inventory::where('goods_id',$value['goods_id']) ->where('storehouse_id',$value['storehouse_id']) ->select('goods_id','number','storehouse_id') ->first(); if(empty($m)){ Inventory::insert($result[$key]); }else{ $array['number'] = $value['number'] + $m->number; $array['lock_number'] = $value['lock_number'] - $m->number; Inventory::where('goods_id',$m->roll_film_id) ->where('storehouse_id',$m->storehouse_id) ->lockForUpdate() ->update($array); } } return true; } }