财务每日收入改从真实支付实时汇总,与统计表解耦

This commit is contained in:
XingQue
2026-06-24 21:45:08 +08:00
parent b1fbc3cd8f
commit 8c271f639a
6 changed files with 454 additions and 100 deletions

View File

@@ -0,0 +1,47 @@
"""
从订单/充值表恢复 daily_income_stat不删订单只重算统计表
repair/rebuild 搞乱后用这个,不要用 repair_wechat_income。
预览python manage.py restore_daily_income_from_orders
执行python manage.py restore_daily_income_from_orders --yes
"""
from datetime import date
from django.core.management.base import BaseCommand
from jituan.services.szjilu_accounting import restore_daily_income_from_orders
class Command(BaseCommand):
help = '从订单/充值表恢复日收入统计(订单不动)'
def add_arguments(self, parser):
parser.add_argument('--since-year', type=int, default=0)
parser.add_argument('--until-year', type=int, default=0)
parser.add_argument('--yes', action='store_true')
def handle(self, *args, **options):
until_year = options['until_year'] or date.today().year
since_year = options['since_year'] or (until_year - 1)
dry_run = not options['yes']
if dry_run:
self.stdout.write(self.style.WARNING('【预览】订单数据不会动\n'))
else:
self.stdout.write(self.style.WARNING('【执行】按订单/充值重算日统计...\n'))
r = restore_daily_income_from_orders(since_year, until_year, dry_run=dry_run)
self.stdout.write(f'范围: {r["since_year"]} ~ {r["until_year"]}')
self.stdout.write(f' 支付笔数(订单表): {r["payment_rows"]}')
self.stdout.write(f' 日统计行数: {r["daily_rows"]}')
self.stdout.write(f' 当前 daily 合计: {r["before_daily_total"]:.2f}')
self.stdout.write(self.style.SUCCESS(
f' 恢复后 daily 合计: {r["after_daily_total"]:.2f}'
))
if dry_run:
self.stdout.write(self.style.WARNING(
'\n确认: python manage.py restore_daily_income_from_orders --yes'
))
else:
self.stdout.write(self.style.SUCCESS('\n完成。推 kefu 后刷新财务页。'))

View File

@@ -0,0 +1,12 @@
"""按真实支付重算 szjilu 收支记录表(与每日收入看板无关,可选执行)。"""
from django.core.management.base import BaseCommand
from jituan.services.live_income_stats import sync_szjilu_from_live_payments
class Command(BaseCommand):
help = '按订单/充值重算 szjilu 表 TotalIncome、TotalFlow、DailyFlow不动 daily_income_stat'
def handle(self, *args, **options):
n = sync_szjilu_from_live_payments()
self.stdout.write(self.style.SUCCESS(f'已更新 {n} 条 szjilu 记录'))