cqpCow 1 year ago
parent
commit
af22012c05

+ 13 - 8
app/Service/CheckService.php

@@ -394,6 +394,7 @@ class CheckService extends Service
         return [true, $model->toArray()];
         return [true, $model->toArray()];
     }
     }
 
 
+    //总社派给分社的合同 完成生成虚拟采购单
     public function createPurchaseOrder($order, $user){
     public function createPurchaseOrder($order, $user){
         //不是总公司的合同
         //不是总公司的合同
         $top_depart_id = $user['head'] ?? [];
         $top_depart_id = $user['head'] ?? [];
@@ -418,7 +419,7 @@ class CheckService extends Service
         if(empty($fee)) return [false, '未找到指派分社时填写的金额'];
         if(empty($fee)) return [false, '未找到指派分社时填写的金额'];
         $fee = $fee->toArray();
         $fee = $fee->toArray();
 
 
-        $order_number = OrderNoService::createOrderNumber(PurchaseOrderSpecial::prefix);
+        $order_number = (new OrderNoService())->createOrderNumber(PurchaseOrderSpecial::prefix);
         $storehouse = Storehouse::where('depart_id',$top_depart_id)->value('id');
         $storehouse = Storehouse::where('depart_id',$top_depart_id)->value('id');
         $product = SalesOrderProductInfo::where('del_time',0)
         $product = SalesOrderProductInfo::where('del_time',0)
             ->where('sales_order_id',$order['id'])
             ->where('sales_order_id',$order['id'])
@@ -429,13 +430,13 @@ class CheckService extends Service
         foreach ($product as $value){
         foreach ($product as $value){
             $total += $value['number'] * $value['retail_price'];
             $total += $value['number'] * $value['retail_price'];
             if(isset($product_map[$value['product_id']])){
             if(isset($product_map[$value['product_id']])){
-                $product_map[$value['product_id']] = $value['product_id'] * $value['number'];
+                $product_map[$value['product_id']] += $value['retail_price'] * $value['number'];
             }else{
             }else{
-                $product_map[$value['product_id']] += $value['product_id'] * $value['number'];
+                $product_map[$value['product_id']] = $value['retail_price'] * $value['number'];
             }
             }
         }
         }
         foreach ($product_map as $key => $value){
         foreach ($product_map as $key => $value){
-            $rate[$key] = round($value / $total);
+            $rate[$key] = sprintf("%.2f", round($value / $total, 2));
         }
         }
 
 
         $model = new PurchaseOrderSpecial();
         $model = new PurchaseOrderSpecial();
@@ -449,20 +450,24 @@ class CheckService extends Service
         $model->storehouse_id = $storehouse ?? 0;
         $model->storehouse_id = $storehouse ?? 0;
         $model->save();
         $model->save();
         if(empty($model->id)) return [false,'采购单主信息生成失败'];
         if(empty($model->id)) return [false,'采购单主信息生成失败'];
+        $purchase_order_id = $model->id;
 
 
-        $insert = [];
+        $insert = [];$product_total = 0;
         foreach ($product as $value){
         foreach ($product as $value){
             $rate_tmp = $rate[$value['product_id']] ?? 0;
             $rate_tmp = $rate[$value['product_id']] ?? 0;
+            $price = sprintf("%.2f", round($rate_tmp * $fee['other_fee_1'] / $value['number'], 2));
+            $product_total += $price * $value['number'];
             $insert[] = [
             $insert[] = [
-                'purchase_order_special_id' => $model->id,
+                'purchase_order_special_id' => $purchase_order_id,
                 'product_id' => $value['product_id'],
                 'product_id' => $value['product_id'],
                 'order_number' => $order_number,
                 'order_number' => $order_number,
                 'number' => $value['number'],
                 'number' => $value['number'],
-                'price' => round($rate_tmp * $fee['other_fee_1'] / $value['number'],2),
+                'price' => $price,
                 'storehouse_id' => $storehouse,
                 'storehouse_id' => $storehouse,
             ];
             ];
         }
         }
         PurchaseOrderSpecialInfo::insert($insert);
         PurchaseOrderSpecialInfo::insert($insert);
+        PurchaseOrderSpecial::where('id',$purchase_order_id)->update(['total' => $product_total]);
 
 
         return [true, ''];
         return [true, ''];
     }
     }
@@ -513,7 +518,7 @@ class CheckService extends Service
             return [true, ''];
             return [true, ''];
         }catch (\Throwable $exception){
         }catch (\Throwable $exception){
             DB::rollBack();
             DB::rollBack();
-            return [false, $exception->getMessage()];
+            return [false, $exception->getMessage().$exception->getLine()];
         }
         }
     }
     }
 
 

+ 0 - 1
app/Service/PurchaseOrderService.php

@@ -186,7 +186,6 @@ class PurchaseOrderService extends Service
         $supplier = Supplier::where('id',$order['supplier'])->first();
         $supplier = Supplier::where('id',$order['supplier'])->first();
         $order['supplier_title'] = $supplier->title ?? '';
         $order['supplier_title'] = $supplier->title ?? '';
         $order['order_type_title'] = PurchaseOrder::$order_type[$order['order_type']] ?? '';
         $order['order_type_title'] = PurchaseOrder::$order_type[$order['order_type']] ?? '';
-        $order['order_type_title'] = PurchaseOrder::$order_type[$order['order_type']] ?? '';
         $order['state_title'] = PurchaseOrder::$name[$order['state']] ?? '';
         $order['state_title'] = PurchaseOrder::$name[$order['state']] ?? '';
         $sales = SalesOrder::where('id',$order['sales_order_id'])->value('order_number');
         $sales = SalesOrder::where('id',$order['sales_order_id'])->value('order_number');
         $order['sales_order_number'] = $sales;
         $order['sales_order_number'] = $sales;

+ 13 - 24
app/Service/PurchaseOrderSpecialService.php

@@ -10,6 +10,7 @@ use App\Model\PurchaseOrder;
 use App\Model\PurchaseOrderFile;
 use App\Model\PurchaseOrderFile;
 use App\Model\PurchaseOrderInfo;
 use App\Model\PurchaseOrderInfo;
 use App\Model\PurchaseOrderSpecial;
 use App\Model\PurchaseOrderSpecial;
+use App\Model\PurchaseOrderSpecialInfo;
 use App\Model\ReturnExchangeOrder;
 use App\Model\ReturnExchangeOrder;
 use App\Model\SalesOrder;
 use App\Model\SalesOrder;
 use App\Model\SeeRange;
 use App\Model\SeeRange;
@@ -178,16 +179,15 @@ class PurchaseOrderSpecialService extends Service
 
 
         $order = PurchaseOrderSpecial::where('order_number',$data['order_number'])
         $order = PurchaseOrderSpecial::where('order_number',$data['order_number'])
             ->where('del_time',0)
             ->where('del_time',0)
-            ->select('id','order_number','depart_id','mark','state','crt_id','order_type','sales_order_id','supplier','purchase_id','purchase_total','crt_time','storehouse_id','top_depart_id')
+            ->select('id','order_number','depart_id','mark','state','crt_id','sales_order_id','supplier','purchase_id','purchase_total','crt_time','storehouse_id','top_depart_id','total')
             ->first();
             ->first();
         if(empty($order)) return [false, '采购订单不存在或已被删除'];
         if(empty($order)) return [false, '采购订单不存在或已被删除'];
         $order = $order->toArray();
         $order = $order->toArray();
         $order['file'] = [];
         $order['file'] = [];
+        $order['order_type_title'] = "虚拟采购单";
         $order['storehouse_title'] = Storehouse::where('id',$order['storehouse_id'])->value('title');
         $order['storehouse_title'] = Storehouse::where('id',$order['storehouse_id'])->value('title');
         $supplier = Supplier::where('id',$order['supplier'])->first();
         $supplier = Supplier::where('id',$order['supplier'])->first();
         $order['supplier_title'] = $supplier->title ?? '';
         $order['supplier_title'] = $supplier->title ?? '';
-        $order['order_type_title'] = PurchaseOrder::$order_type[$order['order_type']] ?? '';
-        $order['order_type_title'] = PurchaseOrder::$order_type[$order['order_type']] ?? '';
         $order['state_title'] = PurchaseOrder::$name[$order['state']] ?? '';
         $order['state_title'] = PurchaseOrder::$name[$order['state']] ?? '';
         $sales = SalesOrder::where('id',$order['sales_order_id'])->value('order_number');
         $sales = SalesOrder::where('id',$order['sales_order_id'])->value('order_number');
         $order['sales_order_number'] = $sales;
         $order['sales_order_number'] = $sales;
@@ -196,7 +196,7 @@ class PurchaseOrderSpecialService extends Service
             ->toArray();
             ->toArray();
         $order['purchase_title'] = $emp_map[$order['purchase_id']] ?? '';
         $order['purchase_title'] = $emp_map[$order['purchase_id']] ?? '';
 
 
-        $p_info = PurchaseOrderInfo::where('del_time',0)
+        $p_info = PurchaseOrderSpecialInfo::where('del_time',0)
             ->where('order_number',$data['order_number'])
             ->where('order_number',$data['order_number'])
             ->get()->toArray();
             ->get()->toArray();
         $basic_price = BasicType::whereIn('id',array_unique(array_column($p_info,'basic_type_id')))->pluck('title','id')->toArray();
         $basic_price = BasicType::whereIn('id',array_unique(array_column($p_info,'basic_type_id')))->pluck('title','id')->toArray();
@@ -212,27 +212,15 @@ class PurchaseOrderSpecialService extends Service
             $order['product'][] = $value;
             $order['product'][] = $value;
         }
         }
 
 
-        $file = PurchaseOrderFile::where('del_time',0)
-            ->where('order_number',$data['order_number'])
-            ->get()->toArray();
-        foreach ($file as $value){
-            if($value['type'] == PurchaseOrderFile::type_one){
-                $tmp = [
-                    'url' => $value['file'],
-                    'name' => $value['name'],
-                ];
-                $order['file'][] = $tmp;
-            }
-        }
         $order['crt_name'] = $emp_map[$order['crt_id']] ?? '';
         $order['crt_name'] = $emp_map[$order['crt_id']] ?? '';
         $order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
         $order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
-        //可见范围
-        $return = (new RangeService())->RangeDetail($order['id'],SeeRange::type_five);
-        $order['depart'] = $return[0] ?? [];
-        $order['employee'] = $return[1] ?? [];
-
-        //退换货信息
-        $order['return_exchange'] = (new ReturnExchangeOrderService())->getDifferentAmount($order['id'],ReturnExchangeOrder::Order_type2);
+//        //可见范围
+//        $return = (new RangeService())->RangeDetail($order['id'],SeeRange::type_five);
+//        $order['depart'] = $return[0] ?? [];
+//        $order['employee'] = $return[1] ?? [];
+//
+//        //退换货信息
+//        $order['return_exchange'] = (new ReturnExchangeOrderService())->getDifferentAmount($order['id'],ReturnExchangeOrder::Order_type2);
 
 
         //总社id
         //总社id
         $top_depart_id = $user['head'] ?? [];
         $top_depart_id = $user['head'] ?? [];
@@ -296,7 +284,7 @@ class PurchaseOrderSpecialService extends Service
      */
      */
     public function getList($data,$user){
     public function getList($data,$user){
         $model = PurchaseOrderSpecial::Clear($user,$data);
         $model = PurchaseOrderSpecial::Clear($user,$data);
-        $model = $model->where('del_time',0)->select('order_number','id','depart_id','top_depart_id','mark','crt_time','state','crt_id','sales_order_id','supplier','purchase_id','purchase_total','storehouse_id')
+        $model = $model->where('del_time',0)->select('order_number','id','depart_id','top_depart_id','mark','crt_time','state','crt_id','sales_order_id','supplier','purchase_id','purchase_total','storehouse_id','total')
             ->orderby('id', 'desc');
             ->orderby('id', 'desc');
         if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
         if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
         if(! empty($data['depart_id'])) $model->where('depart_id', $data['depart_id']);
         if(! empty($data['depart_id'])) $model->where('depart_id', $data['depart_id']);
@@ -362,6 +350,7 @@ class PurchaseOrderSpecialService extends Service
             $data['data'][$key]['sales_order_number'] = $sales[$value['sales_order_id']] ?? '';
             $data['data'][$key]['sales_order_number'] = $sales[$value['sales_order_id']] ?? '';
             $data['data'][$key]['storehouse_title'] = $storehouse[$value['storehouse_id']] ?? '';
             $data['data'][$key]['storehouse_title'] = $storehouse[$value['storehouse_id']] ?? '';
             $data['data'][$key]['supplier_title'] = $supplier_tmp['title'] ?? '';
             $data['data'][$key]['supplier_title'] = $supplier_tmp['title'] ?? '';
+            $data['data'][$key]['order_type_title'] = '虚拟采购单';
         }
         }
 
 
         return $data;
         return $data;