cqp hai 7 meses
pai
achega
3f2922bff7

+ 1 - 0
app/Model/OutBoundOrderInfo.php

@@ -10,4 +10,5 @@ class OutBoundOrderInfo extends Model
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
+    const type_one = 1;//合同
 }

+ 5 - 5
app/Service/CheckService.php

@@ -1032,20 +1032,20 @@ class CheckService extends Service
                             if($value['number'] <= 0) continue;
 
                             //剩余能退数量
-                            $out_number = bcsub($out['number'], $out['return_number']);
+                            $out_number = bcsub($out['number'], $out['return_number'],2);
                             if($out_number >= $value['number']) {
-                                $number = bcadd($value['number'], $number);
+                                $number = bcadd($value['number'], $number,2);
                                 $value['number'] = 0;
                                 $t = $value['number'];
                             }else{
-                                $number = bcadd($out_number, $number);
-                                $value['number'] = bcsub($value['number'], $out_number);
+                                $number = bcadd($out_number, $number,2);
+                                $value['number'] = bcsub($value['number'], $out_number,2);
                                 $t = $out_number;
                             }
                             //更新数据
                             $update[] = [
                                 'id' => $out['id'],
-                                'return_number' => bcadd($out['return_number'], $t),
+                                'return_number' => bcadd($out['return_number'], $t,2),
                             ];
                         }
                     }

+ 5 - 5
app/Service/OutBoundOrderService.php

@@ -463,7 +463,7 @@ class OutBoundOrderService extends Service
             ->get()->toArray();
         foreach ($save as $value){
             if(isset($product_map[$value['product_id']])){
-                $number = bcadd($value['number'], $product_map[$value['product_id']]);
+                $number = bcadd($value['number'], $product_map[$value['product_id']],2);
                 $product_map[$value['product_id']] = $number;
             }else{
                 $product_map[$value['product_id']] = $value['number'];
@@ -485,7 +485,7 @@ class OutBoundOrderService extends Service
             ->get()->toArray();
         foreach ($save2 as $value){
             if(isset($product_map2[$value['product_id']])){
-                $number = bcadd($value['number'], $product_map2[$value['product_id']]);
+                $number = bcadd($value['number'], $product_map2[$value['product_id']],2);
                 $product_map2[$value['product_id']] = $number;
             }else{
                 $product_map2[$value['product_id']] = $value['number'];
@@ -568,7 +568,7 @@ class OutBoundOrderService extends Service
             ->get()->toArray();
         foreach ($save as $value){
             if(isset($product_map[$value['product_id']])){
-                $number = bcadd($value['number'], $product_map[$value['product_id']]);
+                $number = bcadd($value['number'], $product_map[$value['product_id']],2);
                 $product_map[$value['product_id']] = $number;
             }else{
                 $product_map[$value['product_id']] = $value['number'];
@@ -590,7 +590,7 @@ class OutBoundOrderService extends Service
             ->get()->toArray();
         foreach ($save2 as $value){
             if(isset($product_map2[$value['product_id']])){
-                $number = bcadd($value['number'], $product_map2[$value['product_id']]);
+                $number = bcadd($value['number'], $product_map2[$value['product_id']],2);
                 $product_map2[$value['product_id']] = $number;
             }else{
                 $product_map2[$value['product_id']] = $value['number'];
@@ -600,7 +600,7 @@ class OutBoundOrderService extends Service
         foreach ($product as $value){
             $p1 = $product_map[$value['product_id']] ?? 0;
             $p2 = $product_map2[$value['product_id']] ?? 0;
-            $number = bcsub(bcsub($value['number'], $p1), $p2);
+            $number = bcsub(bcsub($value['number'], $p1,2), $p2,2);
             if($number <= 0) continue;
 
             $tmp = $map[$value['product_id']] ?? [];

+ 99 - 0
app/Service/SalesOrderService.php

@@ -12,11 +12,13 @@ use App\Model\Employee;
 use App\Model\FollowUpRecord;
 use App\Model\InvoiceOrder;
 use App\Model\OrderOperation;
+use App\Model\OutBoundOrderInfo;
 use App\Model\PaymentReceipt;
 use App\Model\PaymentReceiptInfo;
 use App\Model\Product;
 use App\Model\PurchaseOrder;
 use App\Model\ReturnExchangeOrder;
+use App\Model\ReturnExchangeOrderProductInfo;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderInfo;
 use App\Model\SalesOrderOtherFee;
@@ -1312,6 +1314,7 @@ class SalesOrderService extends Service
 
         $array2 = array_unique(array_column($data['data'],'top_depart_id'));
         $depart = Depart::whereIn('id',$array2)->pluck('title','id')->toArray();
+
         foreach ($data['data'] as $key => $value){
             $data['data'][$key]['construction_model_type'] = SalesOrder::$build_for_con[$value['type']] ?? 1;
             $data['data'][$key]['type_title'] = SalesOrder::$build_state[$value['type']] ?? '';
@@ -2321,4 +2324,100 @@ class SalesOrderService extends Service
 
         return [true, ['file' => $filename]];
     }
+
+    public function getSalesProductCK($sales_id = []){
+        if(empty($sales_id)) return [];
+
+        $sales_id = SalesOrder::whereIn('id',$sales_id)
+            ->where('out_state',SalesOrder::out_one)
+            ->select('id')
+            ->get()->toArray();
+        $sales_id = array_column($sales_id,'id');
+
+        //销售订单对应产品总数
+        $product = SalesOrderProductInfo::where('del_time',0)
+            ->where('sales_order_id', $sales_id)
+            ->select('number', 'sales_order_id')
+            ->get()->toArray();
+        $product_sale_map = [];
+        foreach ($product as $value){
+            $key = $value['sales_order_id'];
+            if(isset($product_sale_map[$key])){
+                $number = bcadd($value['number'], $product_sale_map[$key],2);
+                $product_sale_map[$key] = $number;
+            }else{
+                $product_sale_map[$key] = $value['number'];
+            }
+        }
+
+        //合同出库产品总数
+        $product_map = [];
+        $save = OutBoundOrderInfo::where('del_time',0)
+            ->where('type', OutBoundOrderInfo::type_one)
+            ->where('data_id', $sales_id)
+            ->select('number', 'data_id as sales_order_id')
+            ->get()->toArray();
+        foreach ($save as $value){
+            $key = $value['sales_order_id'];
+            if(isset($product_map[$key])){
+                $number = bcadd($value['number'], $product_map[$key],2);
+                $product_map[$key] = $number;
+            }else{
+                $product_map[$key] = $value['number'];
+            }
+        }
+
+        //合同退货产品
+        $product_map2 = [];
+        $return_id = ReturnExchangeOrder::where('del_time',0)
+            ->where('type', ReturnExchangeOrder::Order_type)
+            ->where('model_type', ReturnExchangeOrder::Model_type_one)
+            ->whereIn('data_id', $sales_id)
+            ->select('id','data_id as sales_order_id')
+            ->get()->toArray();
+        $return_map = array_column($return_id,'sales_order_id','id');
+        $save2 = ReturnExchangeOrderProductInfo::where('del_time',0)
+            ->whereIn('return_exchange_id', array_column($return_id,'id'))
+            ->where('return_or_exchange',ReturnExchangeOrderProductInfo::type_one)
+            ->select('number', 'return_exchange_id')
+            ->get()->toArray();
+        foreach ($save2 as $value){
+            $sales_order_tmp = $return_map[$value['return_exchange_id']] ?? 0;
+            if(! $sales_order_tmp) continue;
+
+            $key = $sales_order_tmp;
+            if(isset($product_map2[$key])){
+                $number = bcadd($value['number'], $product_map2[$key],2);
+                $product_map2[$key] = $number;
+            }else{
+                $product_map2[$key] = $value['number'];
+            }
+        }
+
+        $return = [];
+        //未出库 0 未完全出库 1 已完全出库 2
+        foreach ($product_sale_map as $key => $value){
+            //合同出库产品总数
+            $p1 = $product_map[$key] ?? 0;
+            //合同退货产品
+            $p2 = $product_map2[$key] ?? 0;
+
+            if(! $p1){
+                $return_id[$value['sales_order_id']] = "未出库";
+            }elseif($p1 == $value['number']){
+                $return_id[$value['sales_order_id']] = "已完全出库";
+            }elseif($p1 < $value['number']){
+                $number = bcsub(bcsub($value['number'], $p1,2), $p2,2);
+                if($number <= 0) {
+                    $return_id[$value['sales_order_id']] = "已完全出库";
+                }else{
+                    $return_id[$value['sales_order_id']] = "未完全出库";
+                }
+            }else{
+                $return_id[$value['sales_order_id']] = "已完全出库";
+            }
+        }
+
+        return $return;
+    }
 }

+ 8 - 8
app/Service/StatisticsService.php

@@ -1248,7 +1248,7 @@ class StatisticsService extends Service
             if($value['number'] >= 0){
                 $tmp_total = bcmul($value['number'], $value['price'], 2);
                 if(isset($in[$value['product_id']])){
-                    $number = bcadd($in[$value['product_id']]['number'], $value['number'],0);
+                    $number = bcadd($in[$value['product_id']]['number'], $value['number'],2);
                     $total = bcadd($in[$value['product_id']]['total'], $tmp_total,2);
                     $in[$value['product_id']]['number'] = $number;
                     $in[$value['product_id']]['total'] = $total;
@@ -1262,7 +1262,7 @@ class StatisticsService extends Service
                 $number = abs($value['number']);
                 $tmp_total = bcmul($number, $value['price'], 2);
                 if(isset($out[$value['product_id']])){
-                    $number = bcadd($out[$value['product_id']]['number'], $number,0);
+                    $number = bcadd($out[$value['product_id']]['number'], $number,2);
                     $total = bcadd($out[$value['product_id']]['total'], $tmp_total,2);
                     $out[$value['product_id']]['number'] = $number;
                     $out[$value['product_id']]['total'] = $total;
@@ -1301,7 +1301,7 @@ class StatisticsService extends Service
             $key = $value['product_id'] . '|' . $value['top_depart_id'];
             if($value['number'] >= 0){
                 if(isset($in[$key])){
-                    $number = bcadd($in[$key]['number'], $value['number'],0);
+                    $number = bcadd($in[$key]['number'], $value['number'],2);
                     $total = bcadd($in[$key]['total'], $value['total'],2);
                     $in[$key]['number'] = $number;
                     $in[$key]['total'] = $total;
@@ -1315,7 +1315,7 @@ class StatisticsService extends Service
                 $number = abs($value['number']);
                 $total = abs($value['total']);
                 if(isset($out[$key])){
-                    $number = bcadd($out[$key]['number'], $number,0);
+                    $number = bcadd($out[$key]['number'], $number,2);
                     $total = bcadd($out[$key]['total'], $total,2);
                     $out[$key]['number'] = $number;
                     $out[$key]['total'] = $total;
@@ -1335,7 +1335,7 @@ class StatisticsService extends Service
                 if(isset($in[$key])) continue;
                 $tmp_total = bcmul($value['number'], $value['price'], 2);
                 if(isset($in[$value['product_id']])){
-                    $number = bcadd($in[$value['product_id']]['number'], $value['number'],0);
+                    $number = bcadd($in[$value['product_id']]['number'], $value['number'],2);
                     $total = bcadd($in[$value['product_id']]['total'], $tmp_total,2);
                     $in[$value['product_id']]['number'] = $number;
                     $in[$value['product_id']]['total'] = $total;
@@ -1350,7 +1350,7 @@ class StatisticsService extends Service
                 $number = abs($value['number']);
                 $tmp_total = bcmul($number, $value['price'], 2);
                 if(isset($out[$value['product_id']])){
-                    $number = bcadd($out[$value['product_id']]['number'], $number,0);
+                    $number = bcadd($out[$value['product_id']]['number'], $number,2);
                     $total = bcadd($out[$value['product_id']]['total'], $tmp_total,2);
                     $out[$value['product_id']]['number'] = $number;
                     $out[$value['product_id']]['total'] = $total;
@@ -1368,7 +1368,7 @@ class StatisticsService extends Service
             $tmp = explode('|', $key);
             $product_id = $tmp[0];
             if(isset($new_in[$product_id])){
-                $number = bcadd($new_in[$product_id]['number'], $value['number'],0);
+                $number = bcadd($new_in[$product_id]['number'], $value['number'],2);
                 $total = bcadd($new_in[$product_id]['total'], $value['total'],2);
                 $new_in[$product_id] = [
                     'number' => $number,
@@ -1385,7 +1385,7 @@ class StatisticsService extends Service
             $tmp = explode('|', $key);
             $product_id = $tmp[0];
             if(isset($new_out[$product_id])){
-                $number = bcadd($new_out[$product_id]['number'], $value['number'],0);
+                $number = bcadd($new_out[$product_id]['number'], $value['number'],2);
                 $total = bcadd($new_out[$product_id]['total'], $value['total'],2);
                 $new_out[$product_id] = [
                     'number' => $number,