Просмотр исходного кода

feat: EK-3320: 订单增加 Invoice 下载

zhangl 1 месяц назад
Родитель
Сommit
42e1e8ff84
1 измененных файлов с 25 добавлено и 1 удалено
  1. 25 1
      backendApi/modules/v1/controllers/ShopController.php

+ 25 - 1
backendApi/modules/v1/controllers/ShopController.php

@@ -840,7 +840,7 @@ class ShopController extends BaseController {
             return static::notice('订单不存在', 400);
         }
         if (!$order['INVOICE_NO']) {
-            $invoiceNo = Tool::generateInvoiceNo();
+            $invoiceNo = $this->generateInvoiceNo();
             Order::updateAll(['INVOICE_NO' => $invoiceNo], 'SN = :SN', [':SN' => $orderSn]);
         }
 
@@ -1150,4 +1150,28 @@ class ShopController extends BaseController {
 
         return static::notice('成功. ' . json_encode($orderErr));
     }
+
+    public function generateInvoiceNo()
+    {
+        $prefix = 'Inv';
+        $currentDate = date('dmY');
+        
+        // 查询今天生成的最新发票号(包含当天日期格式的)
+        $order = Order::find()
+            ->where(['STATUS' => 1, 'IS_DELETE' => 0])
+            ->andWhere(['like', 'INVOICE_NO', $prefix . $currentDate])
+            ->orderBy(['INVOICE_NO' => SORT_DESC])
+            ->one();
+
+        if ($order && !empty($order->INVOICE_NO)) {
+            $invoiceNo = $order->INVOICE_NO;
+            // 截取最后5位数字部分并+1
+            $no = sprintf('%05d', intval(substr($invoiceNo, -5)) + 1);
+        } else {
+            // 如果今天没有生成过发票号或没有符合条件的订单,从00001开始
+            $no = '00001';
+        }
+
+        return $prefix . $currentDate . $no;
+    }
 }