|
@@ -109,6 +109,9 @@ class ReturnExchangeOrderService extends Service
|
|
|
ReturnExchangeOrderRange::insert($insert);
|
|
|
}
|
|
|
|
|
|
+ //锁定库存
|
|
|
+ ProductInventoryService::changeLockNumber($msg[0],$msg[1]);
|
|
|
+
|
|
|
DB::commit();
|
|
|
}catch (\Throwable $e){
|
|
|
DB::rollBack();
|
|
@@ -208,6 +211,9 @@ class ReturnExchangeOrderService extends Service
|
|
|
ReturnExchangeOrderRange::insert($insert);
|
|
|
}
|
|
|
|
|
|
+ //锁定库存
|
|
|
+ ProductInventoryService::changeLockNumber($msg[0]);
|
|
|
+
|
|
|
DB::commit();
|
|
|
}catch (\Throwable $e){
|
|
|
DB::rollBack();
|
|
@@ -250,6 +256,7 @@ class ReturnExchangeOrderService extends Service
|
|
|
->where('state','>',ReturnExchangeOrder::State_zero)->exists();
|
|
|
if($bool) return [false,'退换货单已确认,删除失败!'];
|
|
|
|
|
|
+ $product_save_minus = $this->getSaveDetailMinus($data['id']);
|
|
|
try{
|
|
|
DB::beginTransaction();
|
|
|
ReturnExchangeOrder::where('id',$data['id'])->update([
|
|
@@ -262,6 +269,9 @@ class ReturnExchangeOrderService extends Service
|
|
|
'del_time'=>time()
|
|
|
]);
|
|
|
|
|
|
+ //锁定库存
|
|
|
+ ProductInventoryService::changeLockNumber([], $product_save_minus);
|
|
|
+
|
|
|
DB::commit();
|
|
|
}catch (\Throwable $e){
|
|
|
DB::rollBack();
|
|
@@ -275,6 +285,20 @@ class ReturnExchangeOrderService extends Service
|
|
|
$model = ReturnExchangeOrder::where('del_time',0)
|
|
|
->select('id','order_number','sales_order_id','difference_amount','state','crt_time','crt_id','mark')
|
|
|
->orderby('id', 'desc');
|
|
|
+
|
|
|
+ //getALL传入后无视设置范围
|
|
|
+ if(empty($data['getAll']) && $user['id'] != Employee::SPECIAL_ADMIN) {
|
|
|
+ $user_id = $user['id'];
|
|
|
+ $depart_id = $user['depart_range'];
|
|
|
+ $return_exchange_id = ReturnExchangeOrderRange::where('del_time',0)
|
|
|
+ ->where(function ($query) use($user_id, $depart_id) {
|
|
|
+ $query->where('employee_id',$user_id)
|
|
|
+ ->orWhereIn('depart_id', $depart_id);
|
|
|
+ })->select('return_exchange_id')->get()
|
|
|
+ ->toArray();
|
|
|
+ $model->whereIn('id',array_unique(array_column($return_exchange_id,'return_exchange_id')));
|
|
|
+ }
|
|
|
+
|
|
|
if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
|
|
|
if(isset($data['state'])) $model->where('state',$data['state']);
|
|
|
if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
|
|
@@ -313,18 +337,30 @@ class ReturnExchangeOrderService extends Service
|
|
|
$sale = SalesOrder::where('del_time',0)->where('id',$data['sales_order_id'])->first();
|
|
|
if(empty($sale)) return [false,'合同不存在或已被删除'];
|
|
|
if($sale['state'] < SalesOrder::State_two) return [false,'合同未施工,不能进行退换货操作'];
|
|
|
-
|
|
|
+ if(empty($data['product_one'])) return [false,'退货产品不能为空'];
|
|
|
foreach ($data['product_one'] as $value){
|
|
|
- if(empty($value['number'])) return [false,'产品数量不能为空'];
|
|
|
+ if(empty($value['number'])) return [false,'退货产品数量不能为空'];
|
|
|
$res = $this->checkNumber($value['number']);
|
|
|
if(! $res) return [false,'请输入正确的退货产品数量'];
|
|
|
}
|
|
|
+ $product_submit_minus = $product_save_minus = [];
|
|
|
if($data['model_type'] == ReturnExchangeOrder::Model_type_two){
|
|
|
+ if(empty($data['product_two'])) return [false,'换货产品不能为空'];
|
|
|
foreach ($data['product_two'] as $value){
|
|
|
- if(empty($value['number'])) return [false,'产品数量不能为空'];
|
|
|
+ if(empty($value['number'])) return [false,'换货产品数量不能为空'];
|
|
|
$res = $this->checkNumber($value['number']);
|
|
|
if(! $res) return [false,'请输入正确的换货产品数量'];
|
|
|
+ if(isset($product_submit_minus[$value['product_id']])){
|
|
|
+ $product_submit_minus[$value['product_id']] += $value['number'];
|
|
|
+ }else{
|
|
|
+ $product_submit_minus[$value['product_id']] = $value['number'];
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ $id = $data['id'] ?? '';
|
|
|
+ $product_save_minus = $this->getSaveDetailMinus($id);
|
|
|
+ list($status,$msg) = (new ProductInventoryService())->compareStock(array_keys($product_submit_minus), $product_submit_minus, $product_save_minus);
|
|
|
+ if(! $status) return [false, $msg];
|
|
|
}
|
|
|
|
|
|
//所属部门 以及 顶级部门
|
|
@@ -337,9 +373,34 @@ class ReturnExchangeOrderService extends Service
|
|
|
if(empty($order_number)) return [false,'退换货单号生成失败!'];
|
|
|
$data['order_number'] = $order_number;
|
|
|
}else{
|
|
|
+ if($this->isEmpty($data,'id')) return [false,'退换货单ID不能为空!'];
|
|
|
if($this->isEmpty($data,'order_number')) return [false,'退换货单号不能为空!'];
|
|
|
}
|
|
|
|
|
|
- return [true, ''];
|
|
|
+ return [true, [$product_submit_minus,$product_save_minus]];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取保存详情
|
|
|
+ * @param $order_number
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getSaveDetailMinus($id = 0){
|
|
|
+ $product_save = [];
|
|
|
+ if(empty($id)) return $product_save;
|
|
|
+
|
|
|
+ $sub = ReturnExchangeOrderProductInfo::where('return_exchange_id',$id)
|
|
|
+ ->where('type',ReturnExchangeOrderProductInfo::type_two)
|
|
|
+ ->where('del_time',0)
|
|
|
+ ->get()->toArray();
|
|
|
+ foreach ($sub as $value){
|
|
|
+ if(isset($product_save[$value['product_id']])){
|
|
|
+ $product_save[$value['product_id']] += $value['number'];
|
|
|
+ }else{
|
|
|
+ $product_save[$value['product_id']] = $value['number'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $product_save;
|
|
|
}
|
|
|
}
|