从 Excel 时间表或手动输入生成专业发票。当用户提到生成发票、创建账单、invoice、billing、开发票、时间表转发票、账单生成时使用此技能。
解析 Excel/CSV 时间表数据或手动输入的账单信息,按照公司品牌模板生成专业的发票文档(Word/PDF 格式)。支持自动计算金额、税费,并确保格式统一。
digraph invoice_flow {
rankdir=TB;
"接收输入" [shape=doublecircle];
"Excel/CSV文件?" [shape=diamond];
"运行解析脚本" [shape=box];
"手动输入解析" [shape=box];
"数据校验" [shape=box];
"数据有误?" [shape=diamond];
"提示修正" [shape=box];
"计算金额" [shape=box];
"应用品牌模板" [shape=box];
"生成文档" [shape=box];
"输出发票" [shape=doublecircle];
"接收输入" -> "Excel/CSV文件?";
"Excel/CSV文件?" -> "运行解析脚本" [label="是"];
"Excel/CSV文件?" -> "手动输入解析" [label="否"];
"运行解析脚本" -> "数据校验";
"手动输入解析" -> "数据校验";
"数据校验" -> "数据有误?";
"数据有误?" -> "提示修正" [label="是"];
"提示修正" -> "数据校验";
"数据有误?" -> "计算金额" [label="否"];
"计算金额" -> "应用品牌模板";
"应用品牌模板" -> "生成文档";
"生成文档" -> "输出发票";
}
方式一:解析 Excel/CSV 文件
如果用户提供了文件,使用 scripts/parse_timesheet.py 脚本解析:
python scripts/parse_timesheet.py <文件路径>
脚本会输出结构化的 JSON 数据。
方式二:手动输入
引导用户提供以下信息:
📋 请提供以下发票信息:
【发票方信息】
- 公司/个人名称:
- 地址:
- 联系方式(邮箱/电话):
- 银行账户信息(可选):
【客户信息】
- 客户名称:
- 客户地址:
- 联系人(可选):
【账单明细】(可多条)
- 服务描述:
- 数量/小时数:
- 单价:
【其他】
- 货币单位(默认 CNY):
- 税率(默认 0%):
- 付款期限(默认 30 天):
- 备注(可选):
验证以下内容:
| 检查项 | 规则 |
|---|---|
| 必填字段 | 发票方名称、客户名称、至少一条明细 |
| 数值合法性 | 数量 > 0,单价 ≥ 0,税率 0-100% |
| 日期格式 | YYYY-MM-DD 格式 |
| 货币一致性 | 所有金额使用同一货币单位 |
如果有问题,列出所有错误,一次性让用户修正。
每条明细小计 = 数量 × 单价
税前总额 = 所有明细小计之和
税额 = 税前总额 × 税率
应付总额 = 税前总额 + 税额
精度要求: 所有金额保留 2 位小数,使用银行家舍入法(四舍六入五成双)。
使用 python-docx 生成 Word 文档,需要写一个 Python 脚本来实现。
发票模板结构:
┌─────────────────────────────────────────┐
│ [LOGO] 发票 / INVOICE │
│ │
│ 发票编号:INV-2025-001 │
│ 开票日期:2025-03-25 │
│ 付款期限:2025-04-24 │
├─────────────────────────────────────────┤
│ 发票方: 客户: │
│ 公司名称 客户名称 │
│ 地址 地址 │
│ 联系方式 联系人 │
├─────────────────────────────────────────┤
│ 序号 │ 描述 │ 数量 │ 单价 │ 小计 │
│ 1 │ ... │ ... │ ... │ ... │
│ 2 │ ... │ ... │ ... │ ... │
├─────────────────────────────────────────┤
│ 税前总额:¥ X,XXX.XX │
│ 税额 (X%):¥ XXX.XX │
│ ━━━━━━━━━━━━━━━━━━━ │
│ 应付总额:¥ X,XXX.XX │
├─────────────────────────────────────────┤
│ 付款方式:银行转账 │
│ 账户名称:XXX │
│ 银行名称:XXX │
│ 账号:XXXX XXXX XXXX XXXX │
├─────────────────────────────────────────┤
│ 备注: │
│ 感谢您的合作! │
└─────────────────────────────────────────┘
品牌规范:
| 元素 | 规范 |
|---|---|
| 主色调 | 由用户在首次使用时指定,默认 #2563EB(蓝色) |
| 字体 | 中文用微软雅黑,英文用 Arial |
| 标题字号 | 24pt 粗体 |
| 正文字号 | 11pt |
| 表头 | 主色调背景 + 白色文字 |
| 金额 | 右对齐,千分位分隔符 |
| Logo | 如果 assets/ 目录下有 logo 文件则使用 |
生成完成后,展示摘要:
✅ 发票已生成!
📄 文件:invoice-INV-2025-001.docx
📊 摘要:
- 客户:ABC 科技有限公司
- 明细项:3 条
- 税前总额:¥ 15,000.00
- 税额(6%):¥ 900.00
- 应付总额:¥ 15,900.00
- 付款期限:2025-04-24
格式:INV-{年份}-{序号}
每张发票只支持一种货币。如果有多币种需求,生成多张发票。
首次使用时告诉 Claude 你的品牌色(如"我们的品牌色是 #FF6B35"),后续会记住。也可以在 references/brand-config.json 中配置。
脚本支持以下列名(不区分大小写):