mcpField
I
invoice-management

invoice-management

github.com/happy-technologies-llc其他4141 次安装2 天前更新
代码仓库

关于 invoice-management

面向 ServiceNow 采购与应付账款流程的技能,用于处理发票并执行采购订单、收货记录和发票的三方匹配。它可发现数量或价格差异,创建异常案例并更新发票状态。

主要功能

  1. 01查询待处理发票及采购订单
  2. 02核对订单、收货与发票
  3. 03检测数量和价格差异
  4. 04创建发票异常案例
  5. 05更新匹配状态并记录结果

适用场景

  1. 01审核发票是否符合采购订单
  2. 02核查部分收货对应的发票
  3. 03将不匹配发票转交调查处理

MCP 相关

该技能使用 MCP 工具查询发票、采购订单和收货记录,创建异常案例,并更新发票状态及工作记录。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill invoice-management

安装后在 Claude Code 中输入/invoice-management确认已加载。

详细介绍

发票管理

概述

此技能提供了一套结构化方法,用于管理 ServiceNow Sourcing and Procurement Operations 中的应付账款发票。它可以帮助你:

  • 从 sn_proc_invoice 表中提取并验证发票数据
  • 使用三单匹配(采购订单、收货记录、发票)将发票与采购订单进行匹配
  • 识别发票金额、采购订单金额和收货数量之间的差异
  • 通过 sn_apo_invoice_case 创建并流转发票异常案例
  • 跟踪发票审批工作流和付款准备情况

适用场景: 需要审核发票、将发票与采购订单和收货记录进行匹配,或需要调查并解决差异时。

前提条件

  • 角色: sn_procurement.invoice_manager、sn_procurement.analyst 或 accounts_payable
  • 插件: 已激活 com.sn_procurement(Sourcing and Procurement Operations)
  • 访问权限: 对 sn_proc_invoice、proc_po、proc_po_item、proc_rec_slip_item 具有读写权限
  • 知识: 了解三单匹配原则和所在组织的容差阈值

操作步骤

步骤 1:查询待处理发票

检索等待处理或匹配的发票。

使用 MCP(Claude Code/Desktop):

Tool: SN-Query-Table
Parameters:
  table_name: sn_proc_invoice
  query: state=pending^ORstate=awaiting_match
  fields: sys_id,number,vendor,po_number,invoice_amount,invoice_date,currency,state,due_date
  limit: 25
  order_by: due_date

使用 REST API:

GET /api/now/table/sn_proc_invoice?sysparm_query=state=pending^ORstate=awaiting_match^ORDERBYdue_date&sysparm_fields=sys_id,number,vendor,po_number,invoice_amount,invoice_date,currency,state,due_date&sysparm_limit=25
步骤 2:检索关联的采购订单

对于每张发票,获取关联的采购订单及其行项目,以开始匹配。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: proc_po
  query: number=[PO_NUMBER]
  fields: sys_id,number,vendor,total_cost,state,ordered_date,expected_delivery,currency
  limit: 1

然后获取采购订单行项目:

Tool: SN-Query-Table
Parameters:
  table_name: proc_po_item
  query: purchase_order.number=[PO_NUMBER]
  fields: sys_id,item_description,quantity,unit_price,total_cost,received_quantity,model,part_number
  limit: 50

使用 REST API:

# Get PO header
GET /api/now/table/proc_po?sysparm_query=number=[PO_NUMBER]&sysparm_fields=sys_id,number,vendor,total_cost,state,ordered_date,expected_delivery,currency&sysparm_limit=1

# Get PO line items
GET /api/now/table/proc_po_item?sysparm_query=purchase_order.number=[PO_NUMBER]&sysparm_fields=sys_id,item_description,quantity,unit_price,total_cost,received_quantity,model,part_number&sysparm_limit=50
步骤 3:检索收货记录

查询收货单项目,以核实实际收到的货物。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: proc_rec_slip_item
  query: purchase_order.number=[PO_NUMBER]
  fields: sys_id,quantity_received,received_date,po_item,receiving_slip,condition,notes
  limit: 50

使用 REST API:

GET /api/now/table/proc_rec_slip_item?sysparm_query=purchase_order.number=[PO_NUMBER]&sysparm_fields=sys_id,quantity_received,received_date,po_item,receiving_slip,condition,notes&sysparm_limit=50
步骤 4:执行三单匹配

对照这三份单据。对于每个行项目,验证:

  1. 数量匹配: 发票数量 <= 收货数量 <= 订购数量
  2. 价格匹配: 发票单价 == 采购订单单价(在容差范围内,通常为 1-5%)
  3. 总额匹配: 发票总额 <= 采购订单总额(在容差范围内)
检查项公式通过条件
数量invoice_qty <= received_qty发票数量不超过收货数量
单价abs(invoice_price - po_price) / po_price * 100差异在阈值范围内(例如,2%)
行总额invoice_line_total <= po_line_total * (1 + tolerance)在容差范围内
发票总额invoice_total <= po_total * (1 + tolerance)总金额在容差范围内
步骤 5:标记并流转差异

如果匹配失败,请创建发票异常案例以便解决。

使用 MCP:

Tool: SN-Create-Record
Parameters:
  table_name: sn_apo_invoice_case
  fields:
    invoice: [invoice_sys_id]
    purchase_order: [po_sys_id]
    short_description: "Three-way match failure: quantity discrepancy on PO0012345"
    description: "Invoice INV-9876 line 2: invoiced qty 100, received qty 85. Variance: 15 units (17.6%). Exceeds 5% tolerance threshold."
    priority: 2
    category: quantity_discrepancy
    state: new
    assigned_to: [procurement_analyst_sys_id]

使用 REST API:

POST /api/now/table/sn_apo_invoice_case
Content-Type: application/json

{
  "invoice": "[invoice_sys_id]",
  "purchase_order": "[po_sys_id]",
  "short_description": "Three-way match failure: quantity discrepancy on PO0012345",
  "description": "Invoice INV-9876 line 2: invoiced qty 100, received qty 85. Variance: 15 units (17.6%).",
  "priority": "2",
  "category": "quantity_discrepancy",
  "state": "new"
}
步骤 6:更新发票状态

根据匹配结果,将发票标记为已匹配或异常。

使用 MCP:

Tool: SN-Update-Record
Parameters:
  table_name: sn_proc_invoice
  sys_id: [invoice_sys_id]
  fields:
    state: matched
    match_status: passed
    work_notes: "Three-way match completed. All line items within tolerance. Ready for payment approval."

对于匹配失败的情况:

Tool: SN-Update-Record
Parameters:
  table_name: sn_proc_invoice
  sys_id: [invoice_sys_id]
  fields:
    state: exception
    match_status: failed
    work_notes: "Three-way match failed. Exception case CASE0045678 created for quantity discrepancy on lines 2, 5."

使用 REST API:

PATCH /api/now/table/sn_proc_invoice/[invoice_sys_id]
Content-Type: application/json

{
  "state": "exception",
  "match_status": "failed",
  "work_notes": "Three-way match failed. Exception case created."
}

工具用法

MCP 工具参考
工具使用场景
SN-Query-Table查询发票、采购订单、收货记录和供应商
SN-Natural-Language-Search按供应商或金额以自然语言搜索发票
SN-Create-Record创建发票异常案例
SN-Update-Record更新发票状态和匹配状态
SN-Add-Work-Notes记录匹配结果和决策
REST API 参考
端点方法用途
/api/now/table/sn_proc_invoiceGET查询发票
/api/now/table/sn_proc_invoice/{sys_id}PATCH更新发票状态
/api/now/table/proc_poGET检索采购订单
/api/now/table/proc_po_itemGET检索采购订单行项目
/api/now/table/proc_rec_slip_itemGET检索收货记录
/api/now/table/sn_apo_invoice_casePOST创建异常案例

最佳实践

  • 设置容差阈值: 按类别定义可接受的偏差百分比(例如,IT 硬件为 2%,办公用品为 5%)
  • 按到期日排序: 优先处理最接近付款到期日的发票,以避免滞纳金
  • 核实供应商详情: 付款前交叉核对 core_company 记录,确认供应商银行账户详情
  • 批量处理: 按供应商或 PO 对发票分组,以提高匹配工作流的效率
  • 审计跟踪: 始终添加工作备注,记录匹配结果,以满足合规要求
  • 部分收货: 处理部分发货时,仅匹配已收货数量,并暂缓处理剩余部分

故障排除

“发票未关联采购订单”

原因: PO 编号字段为空,或包含不匹配的引用 解决方案: 按供应商和日期范围搜索 proc_po,查找正确的 PO;更新发票记录

“未找到收货记录”

原因: ServiceNow 中尚未记录收货信息 解决方案: 按 PO 检查 proc_rec_slip_item;联系仓库确认实物收货情况并创建收货单

“发票金额超过 PO 总额”

原因: 价格上涨、额外费用(运费、税费)或重复开票 解决方案: 创建异常案例;向供应商核实费用是否合理;使用 sysparm_query=vendor=[vendor_id]^invoice_amount=[amount]^invoice_date>=[date] 检查重复发票

“单张发票对应多个 PO”

原因: 供应商将多个订单合并为一张发票 解决方案: 拆分发票,或使用零件编号或商品描述逐行与各个 PO 匹配

示例

示例 1:三方匹配成功

场景: Acme Corp 的发票 INV-2024-0456,金额为 $15,000.00

步骤:

  1. 查询发票:金额为 $15,000,关联到 PO0012345
  2. PO0012345 总额:$15,000,包含 3 个行项目
  3. 根据 proc_rec_slip_item,所有 3 个项目均已全部收货
  4. 价格偏差:所有行均为 0%
  5. 结果:匹配通过
Tool: SN-Update-Record
Parameters:
  table_name: sn_proc_invoice
  sys_id: a1b2c3d4...
  fields:
    state: matched
    match_status: passed
    work_notes: "Three-way match passed. PO0012345 fully received. All prices match. Ready for payment."
示例 2:需要解决的差异

场景: 发票 INV-2024-0789 显示 500 件,每件 $12.00($6,000)。PO 显示 500 件,每件 $10.00($5,000)。收货记录确认已收货 500 件。

分析:

  • 数量:匹配(500 = 500)
  • 单价:$12.00 对比 $10.00 = 20% 偏差(超过 2% 阈值)
  • 总额:$6,000 对比 $5,000 = 超出 $1,000

操作: 创建异常案例,标记并提交给采购分析师审核,暂缓付款。

示例 3:部分收货匹配

场景: PO 订购 1,000 件,已收货 750 件,发票数量为 750 件。

分析:

  • 发票数量(750)与已收货数量(750)匹配
  • 发票数量未超过 PO 数量(750 <= 1,000)
  • 结果:部分匹配通过 -- 可批准 750 件的发票

相关技能

  • procurement/purchase-order-summarization - 汇总 PO 详情和交付状态
  • procurement/procurement-summarization - 采购案例和管道概览
  • procurement/supplier-recommendation - 评估供应商表现,为寻源决策提供依据
  • catalog/approval-workflows - 配置发票审批工作流

评论

支持 Markdown