#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""报销助手 · 清空台账（带备份）

用法：
  /usr/bin/python3 脚本/reset_ledger.py            # 台账 + 收件箱 清空（备份后）
  /usr/bin/python3 脚本/reset_ledger.py --keep-inbox   # 只清台账，保留收件箱文件

会先备份到 数据/备份/报销台账_YYYYmmdd_HHMMSS.json，再重建空台账。
"""
import os
import sys
import json
import shutil

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import invoice_core as core  # noqa: E402

BK = os.path.join(core.DATA, '备份')


def main(argv):
    os.makedirs(BK, exist_ok=True)
    import datetime
    stamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
    if os.path.exists(core.LEDGER):
        dst = os.path.join(BK, '报销台账_%s.json' % stamp)
        shutil.copy2(core.LEDGER, dst)
        print('📦 台账已备份：%s' % os.path.relpath(dst, core.BASE))
    led = core.load_ledger()
    n = len(led.get('发票', []))
    core.save_ledger(dict(core.EMPTY_LEDGER))
    print('🧹 已清空台账（原有 %d 张票据）' % n)

    if '--keep-inbox' not in argv:
        moved = 0
        if os.path.isdir(core.DONE):
            for f in os.listdir(core.DONE):
                if f.startswith('.'):
                    continue
                os.remove(os.path.join(core.DONE, f))
                moved += 1
        print('🧹 已清空 收件箱/已处理（%d 个文件）' % moved)
    print('提示：页面本机保存的手工改动需在页面点「↺ 重置」清除。')
    return 0


if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]))
