Эх сурвалжийг харах

收付款单 关联单据类型是 合同的,点击详情平台类型和平台单号渲染出来
收付款单列表 展示平台信息 传参pt 会有一个pt_info的数组返回

小程序施工单排期里 交车时,如果customer_id为0,需要弹出输入 客户名称 与 客户联系方式 =》 customer_title,customer_contact

派工合同列表 增加 批量返款功能 refundOption 参数 sales_order_ids
派工合同列表 增加 返款状态搜索 is_refund 0 未返款 1 已返款
派单合同列表 增加 订单号搜索(用文本域,因为他要填多个订单号) order_numbers

cqp 2 сар өмнө
parent
commit
3c8fda4c7f

+ 13 - 0
app/Http/Controllers/Api/SalesOrderController.php

@@ -7,6 +7,19 @@ use Illuminate\Http\Request;
 
 class SalesOrderController extends BaseController
 {
+    public function refundOption(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->refundOption($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function salesOrderAdd(Request $request)
     {
         $service = new SalesOrderService();

+ 2 - 0
app/Model/SalesOrder.php

@@ -142,4 +142,6 @@ class SalesOrder extends UseScopeBaseModel
 
     const out_zero = 0;//未出库
     const out_one = 1;//可出库
+
+    public static $field = ['id','sales_order_type','model_type','order_number','vin_no','car_type','order_type','customer_id','sign_time','crt_id','crt_time','mark','product_total','construction_time','handover_time','other_fee','discount_fee','contract_fee','pay_way','car_type','year','state','invoice_state','plat_type','plat_order','install_method','install_position','customer_contact','is_confirm','dispatch_time_second','contact_order_no','type','top_depart_id','is_refund','rate'];
 }

+ 21 - 15
app/Service/ConstructionService.php

@@ -1862,21 +1862,27 @@ class ConstructionService extends Service
         if(empty($order['vin_no'])) return [false, '车架号不能为空'];
         $bool = $this->isValidVin($order['vin_no']);
         if(! $bool) return [false, '车架号错误,请查看原施工单车架号,编辑输入完整车架号'];
-        if(empty($order['customer_id'])) return [false, '客户信息不存在'];
-        $customer = Customer::where('del_time', 0)->where('id',$order['customer_id'])->first();
-        if(empty($customer)) return [false, '客户不存在或已被删除'];
-        $customer = $customer->toArray();
-        $info = CustomerInfo::where('del_time',0)
-            ->where('type',CustomerInfo::type_one)
-            ->where('customer_id', $customer['id'])
-            ->where('contact_info', "<>", "")
-            ->select('contact_info')
-            ->first();
-        if(empty($info)) return [false, "客户的联系方式不能为空"];
-        $info = $info->toArray();
-        $customer_info = $info['contact_info'];
-        $order['customer_info'] = $customer_info;
-        $order['customer_title'] = $customer['title'];
+        if(empty($order['customer_id'])) {
+            if(empty($data['customer_title']) && empty($data['customer_contact'])) return [false, "请输入客户信息"];
+            $order['customer_info'] = $data['customer_contact'];
+            $order['customer_title'] = $data['customer_title'];
+        }else{
+            $customer = Customer::where('del_time', 0)->where('id',$order['customer_id'])->first();
+            if(empty($customer)) return [false, '客户不存在或已被删除'];
+            $customer = $customer->toArray();
+            $info = CustomerInfo::where('del_time',0)
+                ->where('type',CustomerInfo::type_one)
+                ->where('customer_id', $customer['id'])
+                ->where('contact_info', "<>", "")
+                ->select('contact_info')
+                ->first();
+            if(empty($info)) return [false, "客户的联系方式不能为空"];
+            $info = $info->toArray();
+            $customer_info = $info['contact_info'];
+            $order['customer_info'] = $customer_info;
+            $order['customer_title'] = $customer['title'];
+        }
+
         if(empty($data['product'])) return [false, '产品不能为空'];
         list($status, $msg) = $this->checkSnConstructionRule($data);
         if(! $status) return [false, $msg];

+ 28 - 0
app/Service/EmployeeService.php

@@ -12,6 +12,7 @@ use App\Model\EmployeeManagerDepart;
 use App\Model\EmployeeMenuPermission;
 use App\Model\EmployeeRole;
 use App\Model\EmployeeTeamPermission;
+use App\Model\ProductCategory;
 use App\Model\ProductInventory;
 use App\Model\ProductInventorySet;
 use App\Model\Role;
@@ -774,6 +775,9 @@ class EmployeeService extends Service
                     //公司系统设置
                     ProductInventorySet::insert(['top_depart_id' => $depart_id, 'param_one' => 1, 'crt_time' => $time]);
 
+                    //基础设置 产品分类 默认
+                    $this->createBasicType($depart_id);
+
 //                    if(! empty($value['is_main'])){
 //                        //总供应商 所有分社可见
 //                        Supplier::insert([
@@ -797,6 +801,30 @@ class EmployeeService extends Service
         return [true,'保存成功!'];
     }
 
+    private function createBasicType($depart_id = 0){
+        $insert = [];
+        $time = time();
+        foreach (BasicType::$type as $key => $value){
+            $insert[] = [
+                'title' => '默认',
+                'type' => $key,
+                'depart_id' => $depart_id,
+                'top_depart_id' => $depart_id,
+                'crt_time' => $time
+            ];
+        }
+
+        BasicType::insert($insert);
+
+        ProductCategory::insert([
+            'title' => '默认',
+            'parent_id' => 0,
+            'crt_time' => $time,
+            'depart_id' => $depart_id,
+            'top_depart_id' => $depart_id,
+        ]);
+    }
+
     /**
      * 部门删除
      * @param $data

+ 36 - 2
app/Service/PaymentReceiptService.php

@@ -840,15 +840,20 @@ class PaymentReceiptService extends Service
         $info = PaymentReceiptInfo::where('del_time',0)
             ->where('type',PaymentReceiptInfo::type_three)
             ->whereIn('payment_receipt_id',  array_unique(array_column($data['data'],'id')))
-            ->select('payment_receipt_id','data_order_no')
+            ->select('payment_receipt_id','data_order_no','data_order_type')
             ->get()->toArray();
+        $order_no = [];
         foreach ($info as $value){
             $map[$value['payment_receipt_id']][] = $value['data_order_no'];
+            if($value['data_order_type'] == 1) $order_no[] = $value['data_order_no'];
         }
 
         //订单状态数据组织
         $state_array = $this->getStateMake($data['data']);
 
+        $pt = [];
+        if(! empty($ergs['pt']) && ! empty($order_no)) $pt = $this->getOtherMessage($order_no);
+
         foreach ($data['data'] as $key => $value){
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
             $data['data'][$key]['payment_receipt_date'] = $value['payment_receipt_date'] ? date('Y-m-d',$value['payment_receipt_date']) : '';
@@ -858,12 +863,41 @@ class PaymentReceiptService extends Service
             $data['data'][$key]['data_type_title'] = PaymentReceipt::$data_type[$value['data_type']] ?? '';
             $data['data'][$key]['account_title'] = $basic_map[$value['account']] ?? '';
             $data['data'][$key]['pay_way_title'] = $basic_map[$value['pay_way']] ?? '';
-            $data['data'][$key]['data_order_no'] = $map[$value['id']] ?? [];
+            $t_no = $map[$value['id']] ?? [];
+            $data['data'][$key]['data_order_no'] = $t_no;
+            $t = [];
+            if(! empty($t_no)){
+                foreach ($t_no as $no){
+                    $tmp = $pt[$no] ?? [];
+                    if(! empty($tmp)){
+                        $t[] = $tmp;
+                    }
+                }
+            }
+            $data['data'][$key]['pt_info'] = $t;
         }
 
         return $data;
     }
 
+    private function getOtherMessage($order_no){
+        $list = SalesOrder::whereIn('order_number',$order_no)
+            ->select('order_number','plat_type','plat_order')
+            ->get()->toArray();
+        $basic_map = BasicType::whereIn('id',array_unique(array_column($list,'plat_type')))
+            ->pluck('title','id')
+            ->toArray();
+        $map = [];
+        foreach ($list as $value){
+            $map[$value['order_number']] = [
+                'plat_type' => $basic_map[$value['plat_type']] ?? "",
+                'plat_order' => $value['plat_order']
+            ];
+        }
+
+        return $map;
+    }
+
     public function countData($column = "", $data, $user){
         if(empty($column) || empty($data['from_wx'])) return [0, 0];
 

+ 18 - 4
app/Service/SalesOrderService.php

@@ -41,6 +41,15 @@ use Illuminate\Support\Facades\DB;
  */
 class SalesOrderService extends Service
 {
+    public function refundOption($data, $user){
+        if(empty($data['sales_order_ids'])) return [false, 'sales_order_ids参数不能为空'];
+
+        SalesOrder::whereIn('id',$data['sales_order_ids'])
+            ->update(['is_refund' => 1]);
+
+        return [true, ''];
+    }
+
     /**
      * 订单编辑
      * @param $data
@@ -827,9 +836,7 @@ class SalesOrderService extends Service
     }
 
     public function salesOrderCommon($data,$user, $field = []){
-        if(empty($field)){
-            $field = ['id','sales_order_type','model_type','order_number','selling_price','vin_no','car_type','order_type','customer_id','sign_time','crt_id','crt_time','mark','product_total','rate','construction_time','handover_time','other_fee','discount_fee','contract_fee','pay_way','car_type','year','mileage','color','original_set','processing','state','invoice_state','plat_type','plat_order','install_method','install_position','customer_contact','is_confirm','dispatch_time_second','contact_order_no','type','top_depart_id'];
-        }
+        if(empty($field)) $field = SalesOrder::$field;
 
         $model = SalesOrder::Clear($user,$data);
         $model = $model->where('del_time',0)
@@ -877,6 +884,10 @@ class SalesOrderService extends Service
         }
         if(! empty($data['customer_contact'])) $model->where('customer_contact','LIKE', '%'.$data['customer_contact'].'%');
         if(! empty($data['order_number'])) $model->where('order_number','LIKE', '%'.$data['order_number'].'%');
+        if(! empty($data['order_numbers'])) {
+            $order_numbers = explode(',',$data['order_numbers']);
+            $model->whereIn('order_number',$order_numbers);
+        }
         if(! empty($data['sales_order_type'])) $model->where('sales_order_type',$data['sales_order_type']);
         if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
         if(! empty($data['model_type'])) $model->where('model_type',$data['model_type']);
@@ -915,6 +926,7 @@ class SalesOrderService extends Service
         }
         if(isset($data['invoice_state'])) $model->where('invoice_state',$data['invoice_state']);
         if(isset($data['is_confirm'])) $model->where('is_confirm',$data['is_confirm']);
+        if(isset($data['is_refund'])) $model->where('is_refund',$data['is_refund']);
         if(! empty($data['order_type'])) $model->where('order_type',$data['order_type']);
         if(! empty($data['plat_type'])) $model->where('plat_type',$data['plat_type']);
         if(! empty($data['plat_type_title'])) {
@@ -1369,6 +1381,7 @@ class SalesOrderService extends Service
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
             $data['data'][$key]['is_dispatch'] = $value['dispatch_time_second'] ? 1 : 0;
             $data['data'][$key]['is_dispatch_title'] = $value['dispatch_time_second'] ? "已派单" : "未派单";
+            $data['data'][$key]['is_refund_title'] = $value['is_refund'] ? "已返款" : "未返款";
             $data['data'][$key]['dispatch_time_second_time'] = $value['dispatch_time_second'] ? date('Y-m-d H:i:s',$value['dispatch_time_second']) : '';
             $crt_name = $emp[$value['crt_id']] ?? '';
             $data['data'][$key]['crt_name'] = $crt_name;
@@ -1807,8 +1820,9 @@ class SalesOrderService extends Service
     }
 
     public function salesOrderListsalesOrderWxList($data,$user){
+        $field = SalesOrder::$field;
         $model = SalesOrder::where('del_time',0)
-            ->select('id','sales_order_type','model_type','order_number','selling_price','vin_no','car_type','order_type','customer_id','sign_time','crt_id','crt_time','mark','product_total','rate','construction_time','handover_time','other_fee','discount_fee','contract_fee','pay_way','car_type','year','mileage','color','original_set','processing','state','invoice_state','plat_type','plat_order','install_method','install_position','customer_contact','is_confirm','dispatch_time_second','contact_order_no','type','top_depart_id')
+            ->select($field)
             ->orderby('id', 'desc')
             ->orderby('dispatch_time_second','desc');
 

+ 4 - 0
config/header/43.php

@@ -126,4 +126,8 @@ return [
         'key' => 'construction_no',
         'value' => '施工单',
     ],
+    [
+        'key' => 'is_refund_title',
+        'value' => '返款状态',
+    ],
 ];

+ 1 - 0
routes/api.php

@@ -228,6 +228,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('salesOrderDetail', 'Api\SalesOrderController@salesOrderDetail');
     $route->any('salesOrderAdd', 'Api\SalesOrderController@salesOrderAdd');
     $route->any('salesOrderDel', 'Api\SalesOrderController@salesOrderDel');
+    $route->any('refundOption', 'Api\SalesOrderController@refundOption');
     //派单销售
     $route->any('salesOrderDispatchSale', 'Api\SalesOrderController@salesOrderDispatchSale');
     //派单总部或分社