diff --git a/app/Business/StoreReceiptDifferenceMaterialization.php b/app/Business/StoreReceiptDifferenceMaterialization.php index 285f9bc8..a07609db 100644 --- a/app/Business/StoreReceiptDifferenceMaterialization.php +++ b/app/Business/StoreReceiptDifferenceMaterialization.php @@ -133,7 +133,18 @@ class StoreReceiptDifferenceMaterialization ->where('report_month', $month) ->first(); - return $row !== null && (string) ($row->rule_version ?? '') === self::ruleVersion(); + if ($row === null || (string) ($row->rule_version ?? '') !== self::ruleVersion()) { + return false; + } + + // 过渡期保护:尚未部署新代码的同步任务重刷账期时不会写物化列, + // 一旦出现 NULL 就回退实时口径,避免页面把未物化的行当成 0 差额。 + return ! DB::connection(self::connection()) + ->table(self::TABLE) + ->where('report_month', $month) + ->whereNull(self::HAS_DIFFERENCE_COLUMN) + ->limit(1) + ->exists(); }); }