#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""生成 2026 年 10 月 W4 差旅费报销汇总表（模板骨架，金额留空待归集）。

用途：今晚 20:00 抓到票后，再用 --amounts <json> 把金额填进来。
用法：
  python3 脚本/build_travel_W4.py                # 只出骨架
  python3 脚本/build_travel_W4.py --amounts amt.json
amt.json 结构：{"D5": 1556, "J5": 600, "H6": 780, "J6": 520, ...}（单元格→金额）
"""
import json
import os
import sys

HERE = os.path.dirname(os.path.abspath(__file__))
BASE = os.path.dirname(HERE)
sys.path.insert(0, HERE)
import xlsx_fill_min as X

SRC = os.path.join(BASE, '工具', '附件2-差旅费报销汇总表-2026年9月W3.xlsx')
DST = os.path.join(BASE, '工具', '附件2-差旅费报销汇总表-2026年10月W4.xlsx')
SHEET = '差旅费报销汇总表'

edits = {
    'A2': ' 部 门：大客户销售部',
    'E2': '刘新元、刘子研、匡婷',
    'K2': 4,
    'P2': '2026-10-24',
    # 行 5-8：日期 / 出差地 / 同住人 / 出差补助
    'A5': 1, 'A6': 2, 'A7': 3, 'A8': 4,
    'B5': '10月20', 'C5': '珠海-宁波', 'K5': '刘子研、匡婷', 'M5': 80,
    'P5': '住宿：宁波全季 2间（1间刘新元 / 1间匡婷·刘子研）',
    'B6': '10月21', 'C6': '宁波-苏州', 'K6': '刘子研、匡婷', 'M6': 80,
    'P6': '一嗨租车（宁波取/杭州还，含通行费）',
    'B7': '10月22', 'C7': '苏州-杭州', 'K7': '刘子研、匡婷', 'M7': 80,
    'P7': '住宿：苏州格林联盟联丰广场店 2间',
    'B8': '10月23', 'C8': '杭州-珠海', 'K8': '刘子研、匡婷', 'M8': 80,
    'P8': '住宿：杭州汉庭 2间',
}

if '--amounts' in sys.argv:
    amt = json.load(open(sys.argv[sys.argv.index('--amounts') + 1], encoding='utf-8'))
    edits.update({k: float(v) for k, v in amt.items()})

# 文本格（P 列超标说明/待补说明）：--notes notes.json = {"P5": "...", ...}
if '--notes' in sys.argv:
    notes = json.load(open(sys.argv[sys.argv.index('--notes') + 1], encoding='utf-8'))
    edits.update({k: str(v) for k, v in notes.items()})

import tempfile
TMP = os.path.join(tempfile.gettempdir(), 'baoyu_travel_blank.xlsx')
blank = {'%s%d' % (c, r): None for r in range(5, 16) for c in 'ABCDEFGHIJKLMNOP'}
X.fill(SRC, TMP, SHEET, blank, overwrite=True)          # 先清空 9 月残留行
filled, skipped = X.fill(TMP, DST, SHEET, edits, overwrite=True)
print('已填 %d 格；跳过 %d' % (len(filled), len(skipped)))
for s in skipped:
    print('  跳过', s)
same, diff = X.verify(SRC, DST, SHEET)
print('非目标条目一致 %d 个；差异 %s' % (same, diff or '无'))
print('输出', DST)
