baseline: 批次A-D 成果 + membership 半成品(测试红)

This commit is contained in:
agent
2026-09-11 23:11:35 +08:00
commit b3f3095d53
311 changed files with 40540 additions and 0 deletions
@@ -0,0 +1,55 @@
"""初始化完整财务数据:科目 + 期间。"""
from django.core.management.base import BaseCommand
from datetime import date
from apps.core.models import Tenant
from apps.finance import services as fs
from apps.finance.models import Period
class Command(BaseCommand):
help = "初始化完整财务:会计科目 + 当月会计期间(往前往后各 3 个月)"
def add_arguments(self, parser):
parser.add_argument(
"--back", type=int, default=3, help="往前几个月"
)
parser.add_argument(
"--forward", type=int, default=3, help="往后几个月"
)
def handle(self, *args, **options):
back = options["back"]
forward = options["forward"]
for tenant in Tenant.objects.filter(is_active=True):
# 会计科目
n_acc = fs.init_chart_of_accounts(tenant)
self.stdout.write(f"[{tenant.code}] 科目 +{n_acc} 条")
# 期间:往前往后
today = date.today()
cur = today
for _ in range(back):
cur = _prev_month(cur)
n_p = fs.ensure_periods(tenant, cur, today)
cur = today
for _ in range(forward):
cur = _next_month(cur)
n_p += fs.ensure_periods(tenant, today, cur)
self.stdout.write(f"[{tenant.code}] 期间新增 +{n_p} 个({today} ± {back}/{forward} 月)")
self.stdout.write(self.style.SUCCESS("\n完整财务数据初始化完成"))
def _prev_month(d):
if d.month == 1:
return d.replace(year=d.year - 1, month=12, day=1)
return d.replace(month=d.month - 1, day=1)
def _next_month(d):
if d.month == 12:
return d.replace(year=d.year + 1, month=1, day=1)
return d.replace(month=d.month + 1, day=1)