Explorar el Código

feat: EK-3320: [Order List]新增发票功能.

kevin hace 1 mes
padre
commit
2b061932a3

+ 2 - 0
backendApi/config/params.php

@@ -24,6 +24,7 @@ return [
         'v1/calc/record-list',
         'v1/calc/auto-calc',
         'v1/shop/order-period-adjust-batch',
+        'v1/shop/order-invoice-remark',
 //        'v1/site/countries'
     ],
     'noCheckPermissionActions' => [
@@ -95,5 +96,6 @@ return [
         'calc/record-list',
         'calc/auto-calc',
         'shop/order-period-adjust-batch',
+        'shop/order-invoice-remark'
     ],
 ];

+ 1 - 0
backendApi/config/urlManagerRules.php

@@ -56,6 +56,7 @@ return [
             'GET dec-order-list-export' => 'dec-order-list-export',
             'POST delete-order' => 'delete-order',
             'GET order-list' => 'order-list',
+            'POST order-invoice-remark' => 'order-invoice-remark',
             'GET order-list-export' => 'order-list-export',
             'POST order-delivery' => 'order-delivery',
             'POST order-refund' => 'order-refund',

+ 17 - 0
backendApi/modules/v1/controllers/ShopController.php

@@ -39,6 +39,7 @@ use common\models\forms\ExcelOrderShopForm;
 use common\models\forms\ExcelOrderStandardForm;
 use common\models\forms\OrderDeleteForm;
 use common\models\forms\OrderForm;
+use common\models\forms\OrderInvoiceRemarkForm;
 use common\models\forms\OrderPeriodAdjustForm;
 use common\models\forms\ShopGoodsForm;
 use common\models\forms\UploadForm;
@@ -451,6 +452,22 @@ class ShopController extends BaseController {
         }
     }
 
+    /**
+     * @throws Exception
+     * @throws HttpException
+     */
+    public function actionOrderInvoiceRemark() {
+        if (\Yii::$app->request->isPost) {
+            $formModel = new OrderInvoiceRemarkForm();
+            if ($formModel->load(\Yii::$app->request->post(), '') && $result = $formModel->remarkOrderInvoice()) {
+
+                return static::notice(\Yii::t('ctx', 'successfully'));
+            } else {
+                return static::notice(Form::formatErrorsForApi($formModel->getErrors()), 400);
+            }
+        }
+    }
+
     /**
      * 订单表
      * @return mixed

+ 1 - 1
common/libs/dataList/DataList.php

@@ -464,4 +464,4 @@ class DataList extends Model
             $this->columns = [];
         }
     }
-}
+}

+ 2 - 0
common/models/ApproachOrder.php

@@ -56,6 +56,8 @@ use Yii;
  * @property string $EXCHANGE_RATE 汇率
  * @property string COUNTRY_ID 国家ID
  * @property int CURRENCY_ID 币种ID
+ * @property int AUTO_MAINTENANCE AMP订单
+ * @property string INVOICE_REMARK 发票备注
  */
 class ApproachOrder extends \common\components\ActiveRecord
 {

+ 1 - 0
common/models/Order.php

@@ -57,6 +57,7 @@ use Yii;
  * @property string COUNTRY_ID 国家ID
  * @property int CURRENCY_ID 币种ID
  * @property int AUTO_MAINTENANCE AMP订单
+ * @property string INVOICE_REMARK 发票备注
  */
 class Order extends \common\components\ActiveRecord
 {

+ 87 - 0
common/models/forms/OrderInvoiceRemarkForm.php

@@ -0,0 +1,87 @@
+<?php
+namespace common\models\forms;
+
+use common\components\Model;
+use common\models\Order;
+use yii\base\Exception;
+
+class OrderInvoiceRemarkForm extends Model
+{
+    public $orderSn;
+
+    /**
+     * @inheritdoc
+     */
+    public function rules()
+    {
+        return [
+            [['orderSn'], 'trim'],
+            [['orderSn'], 'required'],
+            ['remark', 'string', 'max' => 50000],
+        ];
+    }
+
+    public function attributeLabels()
+    {
+        return [
+            'orderSn' => '订单号',
+            'remark' => '发票备注',
+        ];
+    }
+
+    /**
+     * 指定校验场景
+     * @return array
+     */
+    public function scenarios()
+    {
+        $parentScenarios =  parent::scenarios();
+        $customScenarios = [];
+
+        return array_merge($parentScenarios, $customScenarios);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public function remarkOrderInvoice()
+    {
+        if (!$this->validate()) {
+            return null;
+        }
+
+        $sn = $this->orderSn;
+        // 订单详情
+        $orderInfo = Order::findUseDbCalc()
+        ->select('ID,INVOICE_REMARK,SN,INVOICE_REMARK_EDIE_CNT,STATUS,COUNTRY_ID')
+        ->where("SN=:SN", [':SN' => $sn])
+        ->asArray()
+        ->one();
+
+        if (!$orderInfo) {
+            throw new Exception('订单不存在');
+        }
+        // 已经修改过就可以再修改了
+        if ($orderInfo['INVOICE_REMARK_EDIE_CNT'] > 0) {
+            throw new Exception('订单已经修改过,不能再修改');
+        }
+
+        $db = \Yii::$app->db;
+        $transaction = $db->beginTransaction();
+        try {
+            Order::updateAll(
+                ['INVOICE_REMARK' => 1, 'INVOICE_REMARK_EDIE_CNT' => 1],
+                'SN=:SN',
+                ['SN' => $sn]
+            );
+
+            $transaction->commit();
+        } catch(Exception $e) {
+            $transaction->rollBack();
+            $this->addError('add', $e->getMessage());
+            return null;
+        }
+
+        return true;
+    }
+}

+ 20 - 0
console/controllers/ToolController.php

@@ -208,6 +208,26 @@ class ToolController extends BaseController
         Email::sendRegistrationEmail('18511880790@163.com', 'zhangl', 'test123');
     }
 
+    public function actionOrderInvoiceRemark()
+    {
+        try {
+            $formModel = new \common\models\forms\OrderInvoiceRemarkForm();
+            // 设置测试用的订单号
+            $formModel->orderSn = 'OS202402015553509710';
+
+            // 调用remarkOrderInvoice方法
+            $result = $formModel->remarkOrderInvoice();
+
+            if ($result) {
+                echo "成功:订单发票备注已更新\n";
+            } else {
+                echo "失败:" . json_encode($formModel->getErrors()) . "\n";
+            }
+        } catch (Exception $e) {
+            echo "异常:" . $e->getMessage() . "\n";
+        }
+    }
+
     public function actionUpdatePercent() {
         $percent = 100;
         $periodNum = 134;