shish 1 день назад
Родитель
Сommit
bd940e22b0
2 измененных файлов с 57 добавлено и 0 удалено
  1. 22 0
      app-ghs/controllers/GhsController.php
  2. 35 0
      biz-ghs/ghs/classes/GhsClass.php

+ 22 - 0
app-ghs/controllers/GhsController.php

@@ -76,6 +76,28 @@ class GhsController extends BaseController
         util::complete('修改成功');
     }
 
+    /**
+     * 【用途】供货商列表「待结笔数刷新」:按采购挂账单重算并回写 debtNum。
+     * GET id=供货商id
+     */
+    public function actionRefreshDebtNum()
+    {
+        $get = Yii::$app->request->get();
+        $id = intval($get['id'] ?? 0);
+        $ghs = GhsClass::getById($id, true);
+        if (empty($ghs)) {
+            util::fail('没有找到供货商');
+        }
+        if ($ghs->ownMainId != $this->mainId) {
+            util::fail('不是你的供货商');
+        }
+        $debtNum = GhsClass::refreshDebtNum($id);
+        if ($debtNum < 0) {
+            util::fail('刷新失败');
+        }
+        util::success(['debtNum' => $debtNum]);
+    }
+
     //添加供货商 ssh 20210611
     public function actionAdd()
     {

+ 35 - 0
biz-ghs/ghs/classes/GhsClass.php

@@ -4,6 +4,8 @@ namespace bizGhs\ghs\classes;
 
 use bizGhs\base\classes\BaseClass;
 use bizGhs\custom\classes\AccountMoneyClass;
+use bizGhs\custom\classes\CustomClass;
+use bizGhs\order\classes\PurchaseOrderClass;
 use bizGhs\shop\classes\ShopClass;
 use common\components\imgUtil;
 use Yii;
@@ -207,4 +209,37 @@ class GhsClass extends BaseClass
         return ['file' => '/priceTable/' . $mainId . '/' . $file, 'shortFile' => $file];
     }
 
+    /**
+     * 【用途】按采购挂账单实数回写供货商待结笔数(xhGhs.debtNum)。
+     * 【为什么】列表展示直接读缓存字段,增量维护可能漂移,需手动按 debt=待结 的采购单重算纠正。
+     * 【副作用】同步更新关联客户 customId 的 debtNum(若有);不改 balance。
+     * @param int $ghsId 供货商 id
+     * @return int 回写后的待结笔数;供货商不存在时返回 -1
+     */
+    public static function refreshDebtNum($ghsId)
+    {
+        $ghsId = intval($ghsId);
+        $ghs = self::getById($ghsId, true);
+        if (empty($ghs)) {
+            return -1;
+        }
+        // 口径与结账/打印一致:debt=待结 的采购单笔数
+        $debtNum = (int)PurchaseOrderClass::getCount([
+            'ghsId' => $ghsId,
+            'debt' => PurchaseOrderClass::DEBT_YES,
+        ]);
+        $ghs->debtNum = $debtNum;
+        $ghs->save(false, ['debtNum']);
+
+        $customId = intval($ghs->customId ?? 0);
+        if ($customId > 0) {
+            $custom = CustomClass::getById($customId, true);
+            if (!empty($custom)) {
+                $custom->debtNum = $debtNum;
+                $custom->save(false, ['debtNum']);
+            }
+        }
+        return $debtNum;
+    }
+
 }