cqpCow 1 жил өмнө
parent
commit
cbf63208fd

+ 35 - 15
app/Service/ConstructionService.php

@@ -19,6 +19,8 @@ use App\Model\OaSubEmployee;
 use App\Model\OaSubReportEmployee;
 use App\Model\OaSubReportEmployee;
 use App\Model\OaSubRule;
 use App\Model\OaSubRule;
 use App\Model\Product;
 use App\Model\Product;
+use App\Model\ReturnExchangeOrder;
+use App\Model\ReturnExchangeOrderProductInfo;
 use App\Model\SalesOrder;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderInfo;
 use App\Model\SalesOrderInfo;
 use App\Model\SalesOrderProductInfo;
 use App\Model\SalesOrderProductInfo;
@@ -664,7 +666,7 @@ class ConstructionService extends Service
             if(! isset($s_product[$p])) return [false,'施工产品错误,合同中不存在该产品'];
             if(! isset($s_product[$p])) return [false,'施工产品错误,合同中不存在该产品'];
             $s_number = $s_product[$p];
             $s_number = $s_product[$p];
 
 
-            if($number > $s_number) return [false,'施工产品数量不能超过合同产品数据'];
+            if($number > $s_number) return [false,'施工产品数量不能超过合同产品数据(包含已退货产品)'];
         }
         }
 
 
         $id = $data['id'] ?? 0;
         $id = $data['id'] ?? 0;
@@ -683,21 +685,21 @@ class ConstructionService extends Service
                 ->where('order_number',$data['order_number'])
                 ->where('order_number',$data['order_number'])
                 ->exists();
                 ->exists();
             if($bool) return [false,'工单编号已存在,请重新获取'];
             if($bool) return [false,'工单编号已存在,请重新获取'];
-            $bool = Construction::where('del_time',0)
-                ->where('sales_order_id',$data['sales_order_id'])
-                ->where('start_time', '<=', $data['end_time'])
-                ->where('end_time', '>=', $data['start_time'])
-                ->exists();
-            if($bool) return [false,'合同:' . $sale['order_number'] . '在' . $start_time . '——' . $end_time . '已下施工单'];
+//            $bool = Construction::where('del_time',0)
+//                ->where('sales_order_id',$data['sales_order_id'])
+//                ->where('start_time', '<=', $data['end_time'])
+//                ->where('end_time', '>=', $data['start_time'])
+//                ->exists();
+//            if($bool) return [false,'合同:' . $sale['order_number'] . '在' . $start_time . '——' . $end_time . '已下施工单'];
         }else{
         }else{
             if(empty($data['id'])) return [false,'ID不能为空'];
             if(empty($data['id'])) return [false,'ID不能为空'];
-            $bool = Construction::where('del_time',0)
-                ->where('id','<>',$data['id'])
-                ->where('sales_order_id',$data['sales_order_id'])
-                ->where('start_time', '<=', $data['end_time'])
-                ->where('end_time', '>=', $data['start_time'])
-                ->exists();
-            if($bool)  return [false,'合同:' . $sale['order_number'] . '在' . $start_time . '——' . $end_time . '已下施工单'];
+//            $bool = Construction::where('del_time',0)
+//                ->where('id','<>',$data['id'])
+//                ->where('sales_order_id',$data['sales_order_id'])
+//                ->where('start_time', '<=', $data['end_time'])
+//                ->where('end_time', '>=', $data['start_time'])
+//                ->exists();
+//            if($bool)  return [false,'合同:' . $sale['order_number'] . '在' . $start_time . '——' . $end_time . '已下施工单'];
         }
         }
 
 
         return [true, [$product_submit, $product_save]];
         return [true, [$product_submit, $product_save]];
@@ -879,16 +881,34 @@ class ConstructionService extends Service
             }
             }
         }
         }
 
 
+        $product_save2 = [];
+        $sub1 = ReturnExchangeOrder::where('del_time',0)
+            ->where('type',ReturnExchangeOrder::Order_type)
+            ->where('model_type',ReturnExchangeOrder::Model_type_one)
+            ->where('sales_order_id',$sales_order_id)
+            ->get()->toArray();
+        $sub1_array = ReturnExchangeOrderProductInfo::where('del_time',0)
+            ->whereIn('return_exchange_id',array_column($sub1,'id'))
+            ->get()->toArray();
+        foreach ($sub1_array as $value){
+            if(isset($product_save2[$value['product_id']])){
+                $product_save2[$value['product_id']] += $value['number'];
+            }else{
+                $product_save2[$value['product_id']] = $value['number'];
+            }
+        }
+
         $sales_order_product = [];
         $sales_order_product = [];
         $sales_product = SalesOrderProductInfo::where('del_time',0)
         $sales_product = SalesOrderProductInfo::where('del_time',0)
             ->where('sales_order_id',$sales_order_id)
             ->where('sales_order_id',$sales_order_id)
             ->get()->toArray();
             ->get()->toArray();
         foreach ($sales_product as $value){
         foreach ($sales_product as $value){
             $product_save_tmp = $product_save[$value['product_id']] ?? 0;
             $product_save_tmp = $product_save[$value['product_id']] ?? 0;
+            $product_save_tmp2 = $product_save2[$value['product_id']] ?? 0;
             if(isset($sales_order_product[$value['product_id']])){
             if(isset($sales_order_product[$value['product_id']])){
                 $sales_order_product[$value['product_id']] += $value['number'];
                 $sales_order_product[$value['product_id']] += $value['number'];
             }else{
             }else{
-                $sales_order_product[$value['product_id']] = $value['number'] - $product_save_tmp;
+                $sales_order_product[$value['product_id']] = $value['number'] - $product_save_tmp - $product_save_tmp2;
             }
             }
         }
         }
 
 

+ 3 - 2
app/Service/ReturnExchangeOrderService.php

@@ -420,8 +420,9 @@ class ReturnExchangeOrderService extends Service
             $sale = SalesOrder::where('del_time',0)->where('id',$data['data_id'])->first();
             $sale = SalesOrder::where('del_time',0)->where('id',$data['data_id'])->first();
             if(empty($sale)) return [false,'合同不存在或已被删除'];
             if(empty($sale)) return [false,'合同不存在或已被删除'];
             $sale = $sale->toArray();
             $sale = $sale->toArray();
-            if($sale['sales_order_type'] != SalesOrder::Order_type_one) return [false, '非安装件合同'];
-            if($sale['state'] < SalesOrder::State_two) return [false,'合同未确认,不能进行退换货操作'];
+//            if($sale['sales_order_type'] != SalesOrder::Order_type_one) return [false, '非安装件合同'];
+            if($sale['sales_order_type'] == SalesOrder::Order_type_one && $sale['state'] < SalesOrder::State_two) return [false,'安装件合同未确认,不能进行退换货操作'];
+
             $order_number = $sale['order_number'];
             $order_number = $sale['order_number'];
             $total = $sale['contract_fee'];
             $total = $sale['contract_fee'];
         }elseif ($data['type'] == ReturnExchangeOrder::Order_type2){
         }elseif ($data['type'] == ReturnExchangeOrder::Order_type2){

+ 2 - 1
app/Service/SalesOrderService.php

@@ -756,7 +756,8 @@ class SalesOrderService extends Service
         }
         }
         if(! empty($data['add_return'])) {
         if(! empty($data['add_return'])) {
             //能下退换货单的合同状态
             //能下退换货单的合同状态
-            $model->where('state','>=',SalesOrder::State_two);
+            $search = "(sales_order_type = " . SalesOrder::Order_type_one ." and state >= " . SalesOrder::State_two.") or sales_order_type = " . SalesOrder::Order_type_two;
+            $model->whereRaw("($search)");
 //            $model->where('state','<',SalesOrder::State_seven);
 //            $model->where('state','<',SalesOrder::State_seven);
         }
         }
         if(! empty($data['sales_order_id'])) $model->where('id',$data['sales_order_id']);
         if(! empty($data['sales_order_id'])) $model->where('id',$data['sales_order_id']);