cqp há 2 meses atrás
pai
commit
5fafc1f2f8

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

@@ -174,4 +174,17 @@ class SalesOrderController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
+    public function salesOrderPdf(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->salesOrderPdf($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
 }

+ 3 - 0
app/Http/Controllers/Api/TestController.php

@@ -9,6 +9,7 @@ use App\Service\EmployeeService;
 use App\Service\MeasureService;
 use App\Service\OaService;
 use App\Service\OperationLogService;
+use App\Service\SalesOrderService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Hash;
 
@@ -26,6 +27,8 @@ class TestController extends BaseController
     }
 
     public function aa(){
+//        $array = (new SalesOrderService())->salesOrderPdf(['id' => 26604],['id'=>1,'head'=>['id' =>2]]);
+//        return view('pdf.salesOrder',['order' => $array]);
         $send_data[] = [
             'employee_id' => 1,
             'type' => 2,

+ 8 - 1
app/Service/PaymentReceiptService.php

@@ -911,9 +911,14 @@ class PaymentReceiptService extends Service
             ->where('a.type',PaymentReceiptInfo::type_three)
             ->where('a.data_order_type',$type)
             ->where('a.data_order_no',$data['data_order_no'])
-            ->select('a.payment_receipt_id','a.data_order_no','a.amount','a.data_type','b.state','b.payment_receipt_date','b.crt_time','b.order_number')
+            ->select('a.payment_receipt_id','a.data_order_no','a.amount','a.data_type','b.state','b.payment_receipt_date','b.crt_time','b.order_number','b.account','b.pay_way')
             ->get()->toArray();
 
+        $array = array_unique(array_merge_recursive(array_column($info_array,'account'),array_column($info_array,'pay_way')));
+        $basic_map = BasicType::whereIn('id',$array)
+            ->pluck('title','id')
+            ->toArray();
+
         $emp_id = PaymentReceiptInfo::where('del_time',0)
             ->whereIn('payment_receipt_id',array_column($info_array,'payment_receipt_id'))
             ->where('type',PaymentReceiptInfo::type_two)
@@ -938,6 +943,8 @@ class PaymentReceiptService extends Service
         foreach ($info_array as $key => $value){
             //归属人
             $info_array[$key]['belong'] = $info[$value['payment_receipt_id']] ?? '';
+            $info_array[$key]['account'] = $basic_map[$value['account']] ?? '';
+            $info_array[$key]['pay_way'] = $basic_map[$value['pay_way']] ?? '';
             $info_array[$key]['state_title'] = PaymentReceipt::$name[$value['state']] ?? '';
             $info_array[$key]['type_title'] = PaymentReceipt::$model_type[$value['data_type']] ?? '';
             $info_array[$key]['payment_receipt_date'] = $value['payment_receipt_date'] ? date('Y-m-d',$value['payment_receipt_date']) : '';

+ 19 - 1
app/Service/SalesOrderService.php

@@ -735,7 +735,10 @@ class SalesOrderService extends Service
             $bag_pro_map[$value['sports_bag_id']][] = $value;
         }
 
-        $basic_price = BasicType::whereIn('id',array_unique(array_column($sales_p_info,'basic_type_id')))->pluck('title','id')->toArray();
+        $basic_price = BasicType::whereIn('id',array_unique(array_column($sales_p_info,'basic_type_id')))
+            ->orWhere('type',20)
+            ->pluck('title','id')
+            ->toArray();
         $map = (new ProductService())->getProductDetail(array_column($sales_p_info,'product_id'));
         $sports_bag_arr = [];
         $sports_bag_pro = [];
@@ -764,6 +767,7 @@ class SalesOrderService extends Service
                     $bag_pro_tmp[$k]['code'] = $tmp['code'] ?? "";
                     $bag_pro_tmp[$k]['size'] = $tmp['size'] ?? "";
                     $bag_pro_tmp[$k]['unit'] = $tmp['unit'] ?? "";
+                    $bag_pro_tmp[$k]['unit'] = $basic_price[$value['unit']] ?? "";
                     $bag_pro_tmp[$k]['bar_code'] = $tmp['bar_code'] ?? "";
                     $bag_pro_tmp[$k]['mark'] = $mark ?? "";
                     $sports_bag_pro[$value['sports_bag_id']][] = $bag_pro_tmp[$k];
@@ -773,6 +777,7 @@ class SalesOrderService extends Service
                 $value['code'] = $tmp['code'] ?? "";
                 $value['size'] = $tmp['size'] ?? "";
                 $value['unit'] = $tmp['unit'] ?? "";
+                $value['unit_title'] = $basic_price[$value['unit']] ?? "";
                 $value['bar_code'] = $tmp['bar_code'] ?? "";
                 $value['basic_type_title'] = $basic_price[$value['basic_type_id']] ?? "";
                 $product[] = $value;
@@ -2280,4 +2285,17 @@ class SalesOrderService extends Service
 
         return [true, ''];
     }
+
+    public function salesOrderPdf($data, $user){
+        list($status, $msg) = $this->detail($data, $user);
+        if(! $status) return [false, $msg];
+        $order = $msg;
+
+        $pdf = app('dompdf.wrapper')->loadView('pdf.salesOrder', ['order' => $order]);
+        $file_name = time().rand(1000,9999);
+        $filename =  '合同_' . $file_name.'.' . 'pdf';
+        $pdf->save(storage_path('app/public/export/' . $filename));
+
+        return [true, ['file' => $filename]];
+    }
 }

+ 162 - 0
resources/views/pdf/salesOrder.blade.php

@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<style>
+    * {
+        font-family: "simhei";
+    }
+    table {
+        border-collapse: collapse;
+        border-spacing: 0;
+        width: 100%;
+    }
+    th,
+    td {
+        padding: 8px;
+        border: 1px solid;
+    }
+    .item {
+        width: 100%;
+    }
+    .item>div {
+        box-sizing: border-box;
+        line-height: 220%;
+    }
+    .view {
+        width: 100%;
+    }
+    .container {
+        width: 100%; /* 或者一个具体的宽度值,确保足够大 */
+        overflow: auto; /* 防止内容溢出 */
+    }
+    .inline-block {
+        display: inline-block;
+        width: 49%; /* 使用49%而不是50%来避免由于间距导致的换行 */
+        box-sizing: border-box; /* 包括padding和border在内计算宽度 */
+        vertical-align: top; /* 确保顶部对齐 */
+        margin-right: 1%; /* 右间距 */
+        /*background-color: #f0f0f0; !* 可选:用于可视化 *!*/
+        line-height: 220%;
+    }
+    .inline-block:last-child {
+        margin-right: 0; /* 最后一个元素不需要右间距 */
+    }
+</style>
+<body>
+<div style="margin:0 auto;width: 1000px;">
+    <div class="view">
+        <div style="width: 100%;">
+            <div style="text-align: center;margin-bottom: 40px;font-size: 24px;">
+                <span style="font-weight:bold;">订单合同</span>
+            </div>
+            <div style="margin-bottom: 20px;"><span style="font-weight:bold;">基本信息</span></div>
+            <div class="container">
+                <div class="inline-block">合同编号: {{$order['order_number'] ?? ''}}</div>
+            </div>
+            <div class="container">
+                <div class="inline-block">平台类型: {{$order['plat_type_title'] ?? ''}}</div>
+                <div class="inline-block">平台单号: {{$order['plat_order'] ?? ''}}</div>
+            </div>
+            <div class="container">
+                <div class="inline-block">客户名称: {{$order['customer_title'] ?? ''}}</div>
+                <div class="inline-block">联系方式: {{$order['customer_contact'] ?? ''}}</div>
+            </div>
+            <div class="container">
+                <div class="inline-block">签订人: {{! empty($order['employee_one']) ? implode(',',array_column($order['employee_one'], 'title')) : ''}}</div>
+                <div class="inline-block">签订日期: {{! empty($order['sign_time']) ? date("Y-m-d"): ''}}</div>
+            </div>
+            <div class="container">
+                <div class="inline-block">负责人: {{! empty($order['employee_two']) ? implode(',',array_column($order['employee_two'], 'title')) : ''}}</div>
+                <div class="inline-block">协同人: {{! empty($order['employee_three']) ? implode(',',array_column($order['employee_three'], 'title')) : ''}}</div>
+            </div>
+            <div class="container">
+                <div class="inline-block">安装地点: {{$order['install_position_title'] ?? ''}}</div>
+                <div class="inline-block">备注: {{$order['mark'] ?? ''}}</div>
+            </div>
+
+            <div style="margin-bottom: 20px;margin-top: 20px"><span style="font-weight:bold;">产品信息 </span></div>
+            <table>
+                <tr>
+                    <th style="text-align: center">序号</th>
+                    <th style="text-align: center">产品名称</th>
+                    <th style="text-align: center">规格</th>
+                    <th style="text-align: center">单位</th>
+                    <th style="text-align: center">数量</th>
+                    <th style="text-align: center">单价</th>
+                </tr>
+                @foreach($order['product'] as $key => $value)
+                    <tr>
+                        <td style="text-align: center">{{ $key + 1 }}</td>
+                        <td style="text-align: center">{{ $value['title'] ?? '' }}</td>
+                        <td style="text-align: center">{{ $value['size'] ?? '' }}</td>
+                        <td style="text-align: center">{{ $value['unit_title'] ?? '' }}</td>
+                        <td style="text-align: center">{{ $value['number'] ?? '' }}</td>
+                        <td style="text-align: center">{{ $value['price'] ?? '' }}</td>
+                    </tr>
+                @endforeach
+            </table>
+
+            @if(! empty($order['activity_product']))
+                <div style="margin-bottom: 20px;margin-top: 20px"><span style="font-weight:bold;">活动包产品信息 </span></div>
+                <table>
+                    <tr>
+                        <th style="text-align: center">序号</th>
+                        <th style="text-align: center">产品名称</th>
+                        <th style="text-align: center">规格</th>
+                        <th style="text-align: center">单位</th>
+                        <th style="text-align: center">数量</th>
+                        <th style="text-align: center">单价</th>
+                    </tr>
+                    @foreach($order['activity_product'] as $key => $value)
+                        <tr>
+                            <td style="text-align: center">{{ $key + 1 }}</td>
+                            <td style="text-align: center">{{ $value['title'] ?? '' }}</td>
+                            <td style="text-align: center">{{ $value['size'] ?? '' }}</td>
+                            <td style="text-align: center">{{ $value['unit_title'] ?? '' }}</td>
+                            <td style="text-align: center">{{ $value['number'] ?? '' }}</td>
+                            <td style="text-align: center">{{ $value['price'] ?? '' }}</td>
+                        </tr>
+                    @endforeach
+                </table>
+            @endif
+
+            <div style="margin-bottom: 20px;margin-top: 20px"><span style="font-weight:bold;">销售信息 </span></div>
+            <div class="container">
+                <div class="inline-block">产品合计: {{$order['product_total'] ?? ''}}</div>
+                <div class="inline-block">整单折扣率: {{$order['rate'] ? $order['rate'] . "%" : ''}}</div>
+            </div>
+            <div class="container">
+                <div class="inline-block">其它费用: {{$order['other_fee'] ?? ''}}</div>
+                <div class="inline-block">优惠金额: {{$order['discount_fee'] ?? ''}}</div>
+            </div>
+            <div class="container">
+                <div class="inline-block">合同金额: {{$order['contract_fee'] ?? ''}}</div>
+            </div>
+            <div style="margin-bottom: 20px;margin-top: 20px"><span style="font-weight:bold;">回款信息 </span></div>
+            @foreach($order['payment_receipt_list']['list'] as $value)
+                <div class="container">
+                    <div class="inline-block">收付款单编号: {{$value['data_order_no'] ?? ''}}</div>
+                    <div class="inline-block">收付款类型: {{$value['type_title'] ?? ''}}</div>
+                </div>
+                <div class="container">
+                    <div class="inline-block">金额: {{$value['amount'] ?? ''}}</div>
+                    <div class="inline-block">收付款账号: {{$value['account'] ?? ''}}</div>
+                </div>
+                <div class="container">
+                    <div class="inline-block">日期: {{! empty($value['payment_receipt_date']) && is_numeric($value['payment_receipt_date']) ? date('Y-m-d',$value['payment_receipt_date']): ''}}</div>
+                    <div class="inline-block">归属人: {{$value['belong'] ?? ''}}</div>
+                </div>
+                <div class="container">
+                    <div class="inline-block">付款方式: {{$value['pay_way'] ?? ''}}</div>
+                </div>
+            @endforeach
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 1 - 0
routes/api.php

@@ -221,6 +221,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('salesOrderGetBuildFee', 'Api\SalesOrderController@salesOrderGetBuildFee');
     $route->any('salesOrderClose', 'Api\SalesOrderController@salesOrderClose');
     $route->any('salesClickOut', 'Api\SalesOrderController@salesClickOut');
+    $route->any('salesOrderPdf', 'Api\SalesOrderController@salesOrderPdf');
 
     //施工单
     $route->any('constructionGet', 'Api\ConstructionController@constructionGet');