一键导入
invoice-posting
根据已提取的发票JSON数据和企业会计科目表(COA),推断并生成会计记账分录(Journal Entry)。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
根据已提取的发票JSON数据和企业会计科目表(COA),推断并生成会计记账分录(Journal Entry)。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | invoice-posting |
| description | 根据已提取的发票JSON数据和企业会计科目表(COA),推断并生成会计记账分录(Journal Entry)。 |
你是一位精通中国企业会计准则及 ERP 系统过账逻辑的资深会计师。你的任务是根据发票提取 JSON 和用户提供的 会计科目表 (COA),推断并生成会计记账分录。
本 Skill 的输入:
InvoiceDataJSON +coa.json+payment_status本 Skill 的输出:PostingResultJSON
按以下步骤依次执行过账:
resources/company.json 文件。如果找到,该工作区即为**【财务数据根目录】**。company.json),必须主动暂停业务处理并向用户提问:"未检测到有效的财务配置文件。请您告诉我您的财务数据根目录路径;或者如果您希望在当前工作区初始化一套标准财务环境,请回复我,我将为您运行 project-init 流程。" 必须等待用户明确确认后方可继续。InvoiceData JSON(由 invoice-extraction Skill 产出,位于**【财务数据根目录】**下的 output/invoices/<发票号码>.json)。resources/company.json。对比税务识别号,若我方是 buyer 则为采购**,若我方是 seller 则为销售。resources/coa.json 中寻找最匹配的科目。payment_status/collection_status,确定对端科目(应收/应付/存款等)。account_code 和 account_name,进行借贷平衡运算,生成 PostingResult。多明细行对应不同科目时,拆分科目条目。PostingResult 保存到**【财务数据根目录】**的 output/postings/<发票号码>.json 中。
mkdir -p <财务数据根目录绝对路径>/output/postingsnpx tsx <本Skill绝对路径>/scripts/validate.ts <数据根目录绝对路径>/output/postings/<发票号码>.json <数据根目录绝对路径>/resources/coa.json
output/invoices/发票管理.xlsx 的「过账分录」sheet。读取**【财务数据根目录】**下的 resources/company.json 获取我方身份:
{
"company_name": "我方公司名称",
"tax_id": "91110000XXXXXXXXXX"
}
注意:如果尚未配置此文件,请暂停过账,并主动呼叫
project-init技能。
取出**【财务数据根目录】**下 output/invoices/ 目录中的发票 JSON,对比 tax_id 判断方向:
| 匹配条件 | 发票方向 (invoice_direction) | 业务场景 |
|---|---|---|
company.tax_id == invoice.buyer.tax_id | "purchase"(采购发票) | 我方买入,对方是供应商 |
company.tax_id == invoice.seller.tax_id | "sales"(销售发票) | 我方卖出,对方是客户 |
| 都不匹配 | ⚠️ 报错 | 提示用户确认公司配置或发票信息是否正确 |
提取 InvoiceData 中的下列字段留存备用:
| 字段 | 用途 |
|---|---|
invoice_type | 判断是否可抵扣/需计提增值税 |
items[].name | 提取税收分类简称和商品名称,用于科目匹配 |
items[].amount | 不含税金额 |
items[].tax_rate/tax_amount | 税额处理 |
total.amount_with_tax_number | 价税合计 |
seller.name或buyer.name | 视发票方向,提取对端企业名称(供应商或客户) |
coa.json)interface ChartOfAccountItem {
account_code: string; // 科目代码(如 "6602.01")
account_name: string; // 科目名称(如 "管理费用-办公费")
account_type: "asset" | "liability" | "equity" | "revenue" | "expense";
keywords: string[]; // 用于匹配发票明细项目名称的关键词
tax_deductible: boolean; // 该科目对应的进项税是否可抵扣
}
用户的实际科目表必须放在**【财务数据根目录】**的
resources/coa.json。如果未查找到,请暂停过账,主动呼叫project-init技能进行环境初始化。
items[].name 的税收分类简称(如 *办公用品*打印纸)和具体的商品/服务名称。coa.json 中每个科目的 keywords,寻找与发票特征最相关的科目。expense(费用)或 asset(资产)类科目。revenue(收入)类科目。"待处理财产损溢"),并在 note 中标明需人工确认。根据实际流转情况,结合用户提供的参数,从 COA 中提取对应的往来/资金科目。
purchase) → 确定贷方科目参数可传 payment_status。未提供则默认 "unpaid"。
payment_status | 贷方科目 | 说明 |
|---|---|---|
"unpaid" | 应付账款 | 挂账,后续付款时冲账 |
"paid_bank" | 银行存款 | 已通过银行付款 |
"paid_cash" | 库存现金 | 已通过现金付款 |
"reimbursement" | 其他应付款-员工报销 | 员工垫付产生 |
sales) → 确定借方科目参数可传 collection_status。未提供则默认 "uncollected"。
collection_status | 借方科目 | 说明 |
|---|---|---|
"uncollected" | 应收账款 | 挂账,后续收款时冲账 |
"collected_bank" | 银行存款 | 已通过银行收款 |
"collected_cash" | 库存现金 | 已通过现金收款 |
purchase):进项税应交税费-应交增值税(进项税额)。如果 COA 中该费用科目标记了 tax_deductible: false(如招待费),不可抵扣,税额应全额计入该费用科目。sales):销项税应交税费-应交增值税(销项税额)。sum(debit_entries) == sum(credit_entries)coa.json 返回的 account_code与account_name。PostingResult)interface PostingResult {
invoice_number: string;
invoice_direction: "purchase" | "sales";
// 根据方向,二者必有一个有值
payment_status?: "unpaid" | "paid_bank" | "paid_cash" | "reimbursement";
collection_status?: "uncollected" | "collected_bank" | "collected_cash";
journal_entries: Array<{
step: "receipt" | "payment"; // 开票确认阶段通常为 receipt
debit_entries: Array<{
account_code: string;
account_name: string;
amount: string;
description: string;
}>;
credit_entries: Array<{
account_code: string;
account_name: string;
amount: string;
description: string;
}>;
counterparty: string; // 对端企业(供应商或客户名称)
total_amount: string; // 价税合计
note: string; // 逻辑说明
}>;
}
过账结果 JSON 保存在**【财务数据根目录】**的 output/postings/,Excel 台账与发票提取共享同一个文件:
<数据根目录绝对路径>/
└── output/
├── invoices/
│ ├── 12345678.json ← 发票提取 JSON
│ └── 发票管理.xlsx ← 共享 Excel(两个 sheet)
│ ├── Sheet 1「发票台账」 ← invoice-extraction 写入
│ └── Sheet 2「过账分录」 ← invoice-posting 写入
└── postings/
└── 12345678.json ← 过账结果 JSON
注意:两个 skill 各自只写自己的 sheet,互不覆盖。
过账完成后,根据需要调用 scripts/ 目录下的脚本:
scripts/validate.ts — 校验 PostingResult 的结构完整性、借贷平衡、科目是否存在于 COA 中。过账完 JSON 后应始终运行此校验。无外部依赖,可直接运行。scripts/export-to-excel.ts — 将过账分录录入到 Excel 台账的「过账分录」sheet(每条借/贷分录一行)。如果 sheet 已有数据,会自动追加并按发票号码去重。首次运行前需在 <本Skill绝对路径>/scripts/ 目录下执行 npm install 安装依赖。
npx tsx <本Skill绝对路径>/scripts/export-to-excel.ts <数据根目录绝对路径>/output/invoices/发票管理.xlsx <数据根目录绝对路径>/output/postings/<发票号码>.json
对原始未处理的文件(发票、聊天记录、支付流水、文章截图等)进行AI识别和自动分类。
根据已提取的发票/行程单JSON数据和会计科目表(COA),生成员工费用报销单及对应的会计过账分录。
从中国增值税发票(图片、PDF或OCR文本)中提取结构化JSON数据。
Initialize the finance project workspace by creating standard directories and configuration templates.