|
@@ -459,14 +459,17 @@ class OutBoundOrderService extends Service
|
|
|
->when(! empty($out_bound_id), function ($query) use ($out_bound_id) {
|
|
|
return $query->where('out_bound_id', '<>', $out_bound_id);
|
|
|
})
|
|
|
- ->select('product_id', 'number', 'final_amount')
|
|
|
+ ->select('product_id', 'number', 'final_amount','return_number')
|
|
|
->get()->toArray();
|
|
|
foreach ($save as $value){
|
|
|
if(isset($product_map[$value['product_id']])){
|
|
|
- $number = bcadd($value['number'], $product_map[$value['product_id']],2);
|
|
|
- $product_map[$value['product_id']] = $number;
|
|
|
+ $number = bcadd($value['number'], $product_map[$value['product_id']]['number'],2);
|
|
|
+ $return_number = bcadd($value['return_number'], $product_map[$value['product_id']]['return_number'],2);
|
|
|
+ $product_map[$value['product_id']]['number'] = $number;
|
|
|
+ $product_map[$value['product_id']]['return_number'] = $return_number;
|
|
|
}else{
|
|
|
- $product_map[$value['product_id']] = $value['number'];
|
|
|
+ $product_map[$value['product_id']]['number'] = $value['number'];
|
|
|
+ $product_map[$value['product_id']]['return_number'] = $value['return_number'];
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -493,30 +496,68 @@ class OutBoundOrderService extends Service
|
|
|
}
|
|
|
|
|
|
foreach ($product as $value){
|
|
|
- //合同出库产品
|
|
|
- $p1 = $product_map[$value['product_id']] ?? 0;
|
|
|
+ //合同出库产品明细
|
|
|
+ $p1 = $product_map[$value['product_id']] ?? [];
|
|
|
+ //合同出库产品数量
|
|
|
+ $p1_number = $p1['number'] ?? 0;
|
|
|
+ //合同出库后退货产品数量
|
|
|
+ $p1_return_number = $p1['return_number'] ?? 0;
|
|
|
+ //出库数量 - 退货数量 = 已出数量
|
|
|
+ $p_re = bcsub($p1_number,$p1_return_number,2);
|
|
|
+
|
|
|
//合同退货产品
|
|
|
$p2 = $product_map2[$value['product_id']] ?? 0;
|
|
|
- $number = bcsub(bcsub($value['number'], $p1,2), $p2,2);
|
|
|
-
|
|
|
- if($p1 > 0) {
|
|
|
- $state = 2;
|
|
|
- $state_title = "已出库";
|
|
|
+ $p2_re = bcsub($p2,$p1_return_number,2);
|
|
|
+ //合同 - 已出 - 退货 = 剩余能出
|
|
|
+ $number = bcsub(bcsub($value['number'], $p_re,2), $p2_re,2);
|
|
|
+
|
|
|
+ // 1 2 不能出 0 能 0 黄色 1 红色 2灰色
|
|
|
+ if($p_re > 0) {
|
|
|
+ if($number <= 0){
|
|
|
+ $state = 2;
|
|
|
+ $state_title = "已出库";
|
|
|
+ }else{
|
|
|
+ $state = 0;
|
|
|
+ $state_title = "未完全出库";
|
|
|
+ }
|
|
|
}else{
|
|
|
- if($p2 > 0){
|
|
|
- $state_title = "已退货";
|
|
|
+ if($number <= 0){
|
|
|
$state = 1;
|
|
|
+ $state_title = "已退货";
|
|
|
}else{
|
|
|
- $state_title = "未出库";
|
|
|
$state = 0;
|
|
|
+ $state_title = "未出库";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// if($p1_number > 0){
|
|
|
+// if($p1_return_number > 0) {
|
|
|
+// $state_title = "出库后退货";
|
|
|
+// $state = 0;
|
|
|
+// }else{
|
|
|
+// $state = 2;
|
|
|
+// $state_title = "已出库";
|
|
|
+// }
|
|
|
+// } else{
|
|
|
+// if($p2 > 0){
|
|
|
+// if($p1_return_number > 0) {
|
|
|
+// $state_title = "出库后退货";
|
|
|
+// $state = 0;
|
|
|
+// }else{
|
|
|
+// $state_title = "已退货";
|
|
|
+// $state = 1;
|
|
|
+// }
|
|
|
+// }else{
|
|
|
+// $state_title = "未出库";
|
|
|
+// $state = 0;
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
$tmp = $map[$value['product_id']] ?? [];
|
|
|
|
|
|
$return[] = [
|
|
|
'number' => $number, //可出数量
|
|
|
- 'out_number' => $p1, //已出库数量
|
|
|
+ 'out_number' => $p_re, //已出库数量
|
|
|
'return_number' => $p2, //已退货数量
|
|
|
'state' => $state,
|
|
|
'state_title' => $state_title,
|
|
@@ -564,14 +605,17 @@ class OutBoundOrderService extends Service
|
|
|
->when(! empty($out_bound_id), function ($query) use ($out_bound_id) {
|
|
|
return $query->where('out_bound_id', '<>', $out_bound_id);
|
|
|
})
|
|
|
- ->select('product_id', 'number', 'final_amount')
|
|
|
+ ->select('product_id', 'number', 'final_amount','return_number')
|
|
|
->get()->toArray();
|
|
|
foreach ($save as $value){
|
|
|
if(isset($product_map[$value['product_id']])){
|
|
|
- $number = bcadd($value['number'], $product_map[$value['product_id']],2);
|
|
|
- $product_map[$value['product_id']] = $number;
|
|
|
+ $number = bcadd($value['number'], $product_map[$value['product_id']]['number'],2);
|
|
|
+ $return_number = bcadd($value['return_number'], $product_map[$value['product_id']]['return_number'],2);
|
|
|
+ $product_map[$value['product_id']]['number'] = $number;
|
|
|
+ $product_map[$value['product_id']]['return_number'] = $return_number;
|
|
|
}else{
|
|
|
- $product_map[$value['product_id']] = $value['number'];
|
|
|
+ $product_map[$value['product_id']]['number'] = $value['number'];
|
|
|
+ $product_map[$value['product_id']]['return_number'] = $value['return_number'];
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -598,9 +642,18 @@ class OutBoundOrderService extends Service
|
|
|
}
|
|
|
|
|
|
foreach ($product as $value){
|
|
|
- $p1 = $product_map[$value['product_id']] ?? 0;
|
|
|
+ $p1 = $product_map[$value['product_id']] ?? [];
|
|
|
+ //合同出库产品数量
|
|
|
+ $p1_number = $p1['number'] ?? 0;
|
|
|
+ //合同出库后退货产品数量
|
|
|
+ $p1_return_number = $p1['return_number'] ?? 0;
|
|
|
+ //可再出数量
|
|
|
+ $p_re = bcsub($p1_number,$p1_return_number,2);
|
|
|
+
|
|
|
$p2 = $product_map2[$value['product_id']] ?? 0;
|
|
|
- $number = bcsub(bcsub($value['number'], $p1,2), $p2,2);
|
|
|
+ $p2_re = bcsub($p2,$p1_return_number,2);
|
|
|
+ $number = bcsub(bcsub($value['number'], $p_re,2), $p2_re,2);
|
|
|
+
|
|
|
if($number <= 0) continue;
|
|
|
|
|
|
$tmp = $map[$value['product_id']] ?? [];
|