|
@@ -114,16 +114,8 @@ class ProductInventoryService extends Service
|
|
|
}
|
|
|
|
|
|
//比较库存
|
|
|
- public static function compareStock($product_id = [],$data){
|
|
|
- if(empty($product_id) || empty($data['product'])) return [false,'比较参数不能为空'];
|
|
|
-
|
|
|
- $pro = Product::whereIn('id',$product_id)
|
|
|
- ->pluck('title','id')
|
|
|
- ->toArray();
|
|
|
- $setting_map = Setting::where('setting_name','lock_number')
|
|
|
- ->pluck('setting_value','setting_name')
|
|
|
- ->toArray();
|
|
|
- $product_map = $data['product'];
|
|
|
+ public static function compareStock($product_id = [],$product_submit = [], $product_save = []){
|
|
|
+ if(empty($product_id) || empty($product_submit)) return [false,'比较参数不能为空'];
|
|
|
|
|
|
//库存
|
|
|
$array = ProductInventory::whereIn('product_id',$product_id)
|
|
@@ -132,54 +124,27 @@ class ProductInventoryService extends Service
|
|
|
->get()->toArray();
|
|
|
if(empty($array)) return [false,'未找到产品库存数据'];
|
|
|
|
|
|
- //已保存单据的产品数量
|
|
|
- $map = [];
|
|
|
- if(! empty($setting_map['lock_number']) && ! empty($data['order_number'])){
|
|
|
- if(strpos($data['order_number'],InvoiceOrder::prefix) !== false){
|
|
|
- $id = InvoiceOrder::where('order_number',$data['order_number'])
|
|
|
- ->where('del_time',0)
|
|
|
- ->value('id');
|
|
|
- $model = new InvoiceOrderInfo();
|
|
|
- }else{
|
|
|
- foreach (Construction::$prefix as $value){
|
|
|
- if(strpos($data['order_number'],$value) !== false){
|
|
|
- $model = new ConstructionProductInfo();
|
|
|
- }
|
|
|
- }
|
|
|
- $id = Construction::where('order_number',$data['order_number'])
|
|
|
- ->where('del_time',0)
|
|
|
- ->value('id');
|
|
|
- }
|
|
|
- if(! empty($model) && ! empty($id)){
|
|
|
- $save = $model->where('del_time',0)
|
|
|
- ->where('id',$id)
|
|
|
- ->select('product_id','number')
|
|
|
- ->get()->toArray();
|
|
|
- foreach ($save as $value){
|
|
|
- $key = $value['product_id'];
|
|
|
- if(isset($map[$key])){
|
|
|
- $map[$key] += $value['number'];
|
|
|
- }else{
|
|
|
- $map[$key] = $value['number'];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ $pro = Product::whereIn('id',$product_id)
|
|
|
+ ->pluck('title','id')
|
|
|
+ ->toArray();
|
|
|
+ $setting_map = Setting::where('setting_name','lock_number')
|
|
|
+ ->pluck('setting_value','setting_name')
|
|
|
+ ->toArray();
|
|
|
|
|
|
//比较
|
|
|
foreach ($array as $value){
|
|
|
$pro_tmp = $pro[$value['product_id']] ?? '';
|
|
|
if(! $pro_tmp) return [false,'异常产品数据'];
|
|
|
- if(! isset($product_map[$value['product_id']])) return [false,'产品:' . $pro_tmp.'库存不足'];
|
|
|
+ if(! isset($product_submit[$value['product_id']])) return [false,'产品:' . $pro_tmp.'库存不足'];
|
|
|
|
|
|
if(! empty($setting_map['lock_number'])){//真实库存
|
|
|
- $tmp = $map[$value['product_id']] ?? 0;//已保存数量
|
|
|
+ $tmp = $product_save[$value['product_id']] ?? 0;//已保存数量
|
|
|
$tmp_lock = ($value['lock_number'] > 0 ? $value['lock_number'] : 0) - $tmp;
|
|
|
$number = $value['number'] - ($tmp_lock > 0 ? $tmp_lock : 0);
|
|
|
}else{
|
|
|
$number = $value['number'];
|
|
|
}
|
|
|
- if($product_map[$value['product_id']] > $number) return [false,$pro_tmp . '数量不足,当前数量:'. $number];
|
|
|
+ if($product_submit[$value['product_id']] > $number) return [false,$pro_tmp . '数量不足,当前数量:'. $number];
|
|
|
}
|
|
|
|
|
|
return [true,''];
|