cqpCow 1 year ago
parent
commit
597de58136
2 changed files with 243 additions and 45 deletions
  1. 64 1
      app/Service/PaymentReceiptService.php
  2. 179 44
      app/Service/SalesOrderService.php

+ 64 - 1
app/Service/PaymentReceiptService.php

@@ -368,6 +368,69 @@ class PaymentReceiptService extends Service
         $return['all_count'] = count($order);
         $return['list'] = $order;
 
-        return [true, $return];
+        return $return;
+    }
+
+    public function getPaymentReceiptDeatail($data){
+        $customer = PaymentReceipt::where('del_time',0)
+            ->where('crt_time',$data['crt_time'])
+            ->where('id',$data['id'])
+            ->first();
+        if(empty($customer)) return [];
+        $customer = $customer->toArray();
+        $array = [
+            $customer['account'],
+            $customer['pay_way'],
+        ];
+        $basic_map = BasicType::whereIn('id',$array)
+            ->pluck('title','id')
+            ->toArray();
+        $customer['account_title'] = $basic_map[$customer['account']] ?? "";
+        $customer['pay_way_title'] = $basic_map[$customer['pay_way']] ?? "";
+        $customer['state_title'] = PaymentReceipt::$name[$customer['state']] ?? "";
+        $customer['type_title'] = PaymentReceipt::$model_type[$customer['type']] ?? "";
+        $customer['data_type_title'] = PaymentReceipt::$data_type[$customer['data_type']] ?? "";
+        $customer['crt_name'] = Employee::where('id',$customer['crt_id'])->value('emp_name');
+        $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
+        $customer['payment_receipt_date'] = $customer['payment_receipt_date'] ? date("Y-m-d",$customer['payment_receipt_date']): '';
+        $customer['receipt_amount'] = $customer['state'] == PaymentReceipt::STATE_TWO ? $customer['amount'] : 0;
+
+        $file = PaymentReceiptInfo::where('del_time',0)
+            ->where('payment_receipt_id',$data['id'])
+            ->get()->toArray();
+        $emp_id = [];
+        foreach ($file as $value){
+            if(in_array($value['type'],PaymentReceiptInfo::$man)){
+                $emp_id[] = $value['data_id'];
+            }
+        }
+        $emp_map = Employee::whereIn('id',array_unique($emp_id))
+            ->where('del_time',0)
+            ->pluck('emp_name','id')
+            ->toArray();
+
+        $customer['file'] = $customer['employee_one'] = [];
+        foreach ($file as $value){
+            if($value['type'] == PaymentReceiptInfo::type_one){
+                $tmp = [
+                    'url' => $value['file'],
+                    'name' => $value['name'],
+                ];
+                $customer['file'][] = $tmp;
+            }elseif (in_array($value['type'],PaymentReceiptInfo::$man)){
+                $tt = $emp_map[$value['data_id']] ?? '';
+                if(! empty($tt)){
+                    $tmp = [
+                        'id' => $value['data_id'],
+                        'name' => $emp_map[$value['data_id']] ?? '',
+                    ];
+                    if($value['type'] == PaymentReceiptInfo::type_two){
+                        $customer['employee_one'][] = $tmp;
+                    }
+                }
+            }
+        }
+
+        return $customer;
     }
 }

+ 179 - 44
app/Service/SalesOrderService.php

@@ -11,6 +11,8 @@ use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\InvoiceOrder;
 use App\Model\OrderOperation;
+use App\Model\PaymentReceipt;
+use App\Model\PaymentReceiptInfo;
 use App\Model\Product;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderInfo;
@@ -75,13 +77,6 @@ class SalesOrderService extends Service
             $model->save();
             $time = time();
 
-            $old = SalesOrderInfo::where('del_time',0)
-                ->where('sales_order_id',$data['id'])
-                ->whereIn('type',[SalesOrderInfo::type_four])
-                ->select('file')
-                ->get()->toArray();
-            $old = array_column($old,'file');
-
             SalesOrderInfo::where('del_time',0)
                 ->where('sales_order_id',$data['id'])
                 ->update(['del_time' => $time]);
@@ -128,22 +123,6 @@ class SalesOrderService extends Service
                 SalesOrderInfo::insert($insert);
             }
 
-            $new = [];
-            if(! empty($data['file'])){
-                $insert = [];
-                foreach ($data['file'] as $value){
-                    $insert[] = [
-                        'sales_order_id' => $model->id,
-                        'file' => $value['url'],
-                        'name' => $value['name'],
-                        'type' => SalesOrderInfo::type_four,
-                        'crt_time' => $time,
-                    ];
-                    $new[] = $value['url'];
-                }
-                SalesOrderInfo::insert($insert);
-            }
-
             if(! empty($data['product'])){
                 $insert = [];
                 foreach ($data['product'] as $value){
@@ -168,6 +147,47 @@ class SalesOrderService extends Service
                 SalesOrderProductInfo::insert($insert);
             }
 
+//            $new = [];
+//            if(! empty($data['file'])){
+//                $insert = [];
+//                foreach ($data['file'] as $value){
+//                    $insert[] = [
+//                        'sales_order_id' => $model->id,
+//                        'file' => $value['url'],
+//                        'name' => $value['name'],
+//                        'type' => SalesOrderInfo::type_four,
+//                        'crt_time' => $time,
+//                    ];
+//                    $new[] = $value['url'];
+//                }
+//                SalesOrderInfo::insert($insert);
+//            }
+            $new = $old = [];
+            $order = PaymentReceipt::where('del_time',0)
+                ->where('crt_time',$model->crt_time)
+                ->where('data_order_no',$data['order_number'])
+                ->first();
+            if(! empty($order)){
+                $old = PaymentReceiptInfo::where('del_time',0)
+                    ->where('payment_receipt_id',$order->id)
+                    ->whereIn('type',[PaymentReceiptInfo::type_one])
+                    ->select('file')
+                    ->get()->toArray();
+                $old = array_column($old,'file');
+            }
+
+            //收付款信息
+            if(! empty($data['payment_receipt'])){
+                if(empty($order)){
+                    $this->savePaymentReceiptOrder($data,$user,$time);
+                }else{
+                    PaymentReceiptInfo::where('del_time',0)
+                        ->where('payment_receipt_id',$order->id)
+                        ->update(['del_time' => $time]);
+                    $this->savePaymentReceiptOrder($data,$user,$time,$order);
+                }
+            }
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -202,6 +222,8 @@ class SalesOrderService extends Service
         try {
             DB::beginTransaction();
 
+            $time = time();
+
             $model = new SalesOrder();
             $model->sales_order_type = $data['sales_order_type'];
             $model->model_type = $data['model_type'];
@@ -234,8 +256,8 @@ class SalesOrderService extends Service
             $model->depart_id = $data['depart_id'] ?? 0;
             $model->top_depart_id = $data['top_depart_id'] ?? 0;
             $model->crt_id = $user['id'];
+            $model->crt_time = $time;
             $model->save();
-            $time = time();
 
             if(! empty($data['employee_one'])){
                 $insert = [];
@@ -276,19 +298,19 @@ class SalesOrderService extends Service
                 SalesOrderInfo::insert($insert);
             }
 
-            if(! empty($data['file'])){
-                $insert = [];
-                foreach ($data['file'] as $value){
-                    $insert[] = [
-                        'sales_order_id' => $model->id,
-                        'file' => $value['url'],
-                        'name' => $value['name'],
-                        'type' => SalesOrderInfo::type_four,
-                        'crt_time' => $time,
-                    ];
-                }
-                SalesOrderInfo::insert($insert);
-            }
+//            if(! empty($data['file'])){
+//                $insert = [];
+//                foreach ($data['file'] as $value){
+//                    $insert[] = [
+//                        'sales_order_id' => $model->id,
+//                        'file' => $value['url'],
+//                        'name' => $value['name'],
+//                        'type' => SalesOrderInfo::type_four,
+//                        'crt_time' => $time,
+//                    ];
+//                }
+//                SalesOrderInfo::insert($insert);
+//            }
 
             if(! empty($data['product'])){
                 $insert = [];
@@ -314,6 +336,9 @@ class SalesOrderService extends Service
                 SalesOrderProductInfo::insert($insert);
             }
 
+            //收付款信息
+            if(! empty($data['payment_receipt'])) $this->savePaymentReceiptOrder($data,$user,$time);
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -335,6 +360,89 @@ class SalesOrderService extends Service
         return [true,''];
     }
 
+    public function savePaymentReceiptOrder($data,$user,$time,$orders = null){
+        $order = $data['payment_receipt'];
+
+        if(empty($orders)){
+            $model = new PaymentReceipt();
+            $model->order_number = $data['order_number'];
+            $model->data_order_no = $order['data_order_no'];
+            $model->data_type = $order['data_type'];
+            $model->type = $order['type'];
+            $model->account = $order['account'] ?? 0;
+            $model->pay_way = $order['pay_way'] ?? 0;
+            $model->amount = $order['amount'] ?? 0;
+            $model->mark = $order['mark'] ?? '';
+            $model->crt_id = $user['id'];
+            $model->depart_id = $data['depart_id'];
+            $model->top_depart_id = $data['top_depart_id'];
+            $model->payment_receipt_date = $order['payment_receipt_date'] ?? 0;
+            $model->crt_time = $time;
+            $model->save();
+
+            if(! empty($order['file'])){
+                $insert = [];
+                foreach ($order['file'] as $value){
+                    $insert[] = [
+                        'payment_receipt_id' => $model->id,
+                        'file' => $value['url'],
+                        'type' => PaymentReceiptInfo::type_one,
+                        'name' => $value['name'],
+                        'crt_time' => $time,
+                    ];
+                }
+                PaymentReceiptInfo::insert($insert);
+            }
+            if(! empty($order['employee_one'])){
+                $insert = [];
+                foreach ($order['employee_one'] as $value){
+                    $insert[] = [
+                        'payment_receipt_id' => $model->id,
+                        'data_id' => $value,
+                        'type' => PaymentReceiptInfo::type_two,
+                        'crt_time' => $time,
+                    ];
+                }
+                PaymentReceiptInfo::insert($insert);
+            }
+        }else{
+            $order = $data['payment_receipt'];
+            $orders->type = $order['type'];
+            $orders->account = $order['account'] ?? 0;
+            $orders->pay_way = $order['pay_way'] ?? 0;
+            $orders->amount = $order['amount'] ?? 0;
+            $orders->mark = $order['mark'] ?? '';
+            $orders->payment_receipt_date = $order['payment_receipt_date'] ?? 0;
+            $orders->save();
+            if(! empty($order['file'])){
+                $insert = [];
+                foreach ($order['file'] as $value){
+                    $insert[] = [
+                        'payment_receipt_id' => $orders->id,
+                        'file' => $value['url'],
+                        'type' => PaymentReceiptInfo::type_one,
+                        'name' => $value['name'],
+                        'crt_time' => $time,
+                    ];
+                    $new[] = $value['url'];
+                }
+                PaymentReceiptInfo::insert($insert);
+            }
+            if(! empty($order['employee_one'])){
+                $insert = [];
+                foreach ($order['employee_one'] as $value){
+                    $insert[] = [
+                        'payment_receipt_id' => $orders->id,
+                        'data_id' => $value,
+                        'type' => PaymentReceiptInfo::type_two,
+                        'crt_time' => $time,
+                    ];
+                }
+                PaymentReceiptInfo::insert($insert);
+            }
+        }
+    }
+
     /**
      * 订单删除
      * @param $data
@@ -350,15 +458,29 @@ class SalesOrderService extends Service
         try {
             DB::beginTransaction();
 
+            $old = [];
+            $order = PaymentReceipt::where('del_time',0)
+                ->where('crt_time',$sale_order['crt_time'])
+                ->where('data_order_no',$data['order_number'])
+                ->first();
+            if(! empty($order)){
+                $old = PaymentReceiptInfo::where('del_time',0)
+                    ->where('payment_receipt_id',$order->id)
+                    ->whereIn('type',[PaymentReceiptInfo::type_one])
+                    ->select('file')
+                    ->get()->toArray();
+                $old = array_column($old,'file');
+            }
+
             SalesOrder::where('del_time',0)
                 ->where('id',$data['id'])->update(['del_time'=> time()]);
 
-            $old = SalesOrderInfo::where('del_time',0)
-                ->where('sales_order_id',$data['id'])
-                ->whereIn('type',[SalesOrderInfo::type_four])
-                ->select('file')
-                ->get()->toArray();
-            $old = array_column($old,'file');
+//            $old = SalesOrderInfo::where('del_time',0)
+//                ->where('sales_order_id',$data['id'])
+//                ->whereIn('type',[SalesOrderInfo::type_four])
+//                ->select('file')
+//                ->get()->toArray();
+//            $old = array_column($old,'file');
 
             SalesOrderInfo::where('del_time',0)
                 ->where('sales_order_id',$data['id'])
@@ -542,7 +664,10 @@ class SalesOrderService extends Service
         $sales['return_exchange'] = (new ReturnExchangeOrderService())->getDifferentAmount($data['id']);
 
         //收付款单信息
-        $sales['payment_receipt'] = (new PaymentReceiptService())->getPaymentReceiptDataList($data);
+        $sales['payment_receipt_list'] = (new PaymentReceiptService())->getPaymentReceiptDataList($sales);
+
+        //详情里的收付款信息
+        $sales['payment_receipt'] = (new PaymentReceiptService())->getPaymentReceiptDeatail($sales);
 
         return [true, $sales];
     }
@@ -684,6 +809,16 @@ class SalesOrderService extends Service
 //            if(empty($data['mileage'])) return [false,'表显里程不能为空'];
         }
 
+        //收付款信息
+        if(! empty($data['payment_receipt']['order_number'])){
+            if(empty($data['payment_receipt']['data_type'])) $data['payment_receipt']['data_type'] = PaymentReceipt::data_type_one;
+            if(empty($data['payment_receipt']['data_type']['type'])) return [false,'金额类型不能为空'];
+            if(empty($data['payment_receipt']['amount'])) return [false,'回款金额不能为空'];
+            $res = $this->checkNumber($data['payment_receipt']['amount']);
+            if(! $res) return [false, '回款金额请输入不超过两位小数并且大于0的数值'];
+            if(! empty($data['payment_receipt']['payment_receipt_date'])) $data['payment_receipt_date'] = $this->changeDateToDate($data['payment_receipt']['payment_receipt_date']);
+        }
+
         if($is_add){
             $bool = SalesOrder::where('del_time',0)->where('order_number',$data['order_number'])->exists();
             if($bool) return [false,'合同编号已存在,请重新获取'];