name: NetSuite自动化 description: “NetSuite自动化:通过Oracle NetSuite ERP管理客户、销售订单、发票、库存和记录,支持SuiteQL查询” requires: mcp: [rube]
NetSuite自动化
自动化Oracle NetSuite ERP操作,包括创建客户和销售订单、运行SuiteQL查询、通过外部ID更新记录以及检查记录元数据,用于全面的业务管理。
工具包文档: composio.dev/toolkits/netsuite
设置
此技能需要连接到 https://rube.app/mcp 的 Rube MCP 服务器。
在执行任何工具之前,请确保 netsuite 工具包有活跃连接。如果没有活跃连接,请通过 RUBE_MANAGE_CONNECTIONS 启动一个。
核心工作流
1. 创建销售订单
创建包含行项目的客户订单,包括商品引用、数量和定价。
工具: NETSUITE_CREATE_SALES_ORDER
关键参数:
entity(必需) – 客户引用:{"id": "<internal_id>"}item(必需) – 包含items数组的容器,每个数组元素包含:item(必需) – 商品引用:{"id": "<internal_id>"}quantity(必需) – 订购单位(非负数)rate– 单位价格(如果商品有默认定价则为可选)amount– 总行金额(替代rate)taxcode– 税务代码引用:{"id": "<internal_id>"}(如果启用SuiteTax则为必需)description– 行项目备注
tranDate– 交易日期,格式为YYYY-MM-DDmemo– 头部备注orderStatus–"A"(待批准)或"B"(待履行)otherrefnum– 外部参考或采购订单号
示例:
工具: NETSUITE_CREATE_SALES_ORDER
参数:
entity: {"id": "1234"}
item: {
"items": [
{"item": {"id": "56"}, "quantity": 10, "rate": 25.00},
{"item": {"id": "78"}, "quantity": 5, "rate": 50.00}
]
}
tranDate: "2026-02-11"
memo: "第一季度批量订单"
orderStatus: "B"
2. 运行SuiteQL查询
对NetSuite数据执行临时SQL查询,支持服务器端分页。
工具: NETSUITE_RUN_SUITEQL_QUERY
关键参数:
q(必需) – SuiteQL SELECT语句limit– 每页行数(默认值可变)offset– 第一行的零基索引(必须是limit的倍数)
示例:
工具: NETSUITE_RUN_SUITEQL_QUERY
参数:
q: "SELECT id, companyname, email FROM customer WHERE isinactive = 'F' ORDER BY companyname"
limit: 100
offset: 0
工具: NETSUITE_RUN_SUITEQL_QUERY
参数:
q: "SELECT id, entitystatus, total FROM transaction WHERE type = 'SalesOrd' AND trandate >= '2026-01-01'"
limit: 50
3. 创建和管理客户
创建新的客户记录,包括子公司分配和联系详情。
工具:
NETSUITE_CREATE_CUSTOMER– 创建新客户NETSUITE_GET_CUSTOMER– 通过内部ID检索客户NETSUITE_UPDATE_CUSTOMER– 更新现有客户(PATCH语义)
NETSUITE_CREATE_CUSTOMER 的关键参数:
body(必需) – 包含客户数据的JSON对象。必需字段:subsidiary– 包含id的对象(子公司内部ID)- 要么
companyName(用于企业)要么firstName+lastName(用于个人) - 可选:
email,phone,isPerson(设置为"T"表示个人),comments
replace– 逗号分隔的子列表名称以完全替换(例如"contacts,addressbook")
示例:
工具: NETSUITE_CREATE_CUSTOMER
参数:
body: {
"companyName": "Acme Corp",
"subsidiary": {"id": "1"},
"email": "info@acme.com",
"phone": "555-0100"
}
4. 通过外部ID更新记录
使用外部标识符以幂等方式创建或更新记录。同步工作流的关键。
工具: NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID
关键参数:
record_type(必需) – 记录类型名称,例如"customer","salesorder","customrecord_myrec"external_id(必需) – 外部ID值(仅字母、数字、下划线、连字符)body(必需) – 匹配记录模式的JSON对象;创建时包括必需字段
示例:
工具: NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID
参数:
record_type: "customer"
external_id: "CRM-CUST-42"
body: {
"companyName": "Acme Corp",
"subsidiary": {"id": "1"},
"email": "updated@acme.com"
}
警告: 幂等性取决于一致的外部ID使用。不匹配会静默创建额外记录而不是更新。
5. 检查记录元数据
在创建或更新记录前,发现可用字段、数据类型、约束和要求。
工具: NETSUITE_GET_RECORD_METADATA
关键参数:
record_type(必需) – 例如"customer","salesorder","invoice","vendor","employee","item"accept–"application/schema+json"(默认,JSON Schema)或"application/swagger+json"(OpenAPI 3.0)
示例:
工具: NETSUITE_GET_RECORD_METADATA
参数:
record_type: "salesorder"
6. 列出和筛选记录
检索多个记录,支持可选筛选和分页。
工具: NETSUITE_LIST_RECORDS
关键参数:
recordType(必需) – 例如"customer","salesorder"q– 使用N/query操作符的筛选表达式,例如"email START_WITH \"barbara\""limit– 每页最大记录数(1–1000,默认1000)offset– 零基索引(必须能被limit整除)
支持工具:
NETSUITE_FILTER_RECORD_COLLECTION– 替代筛选(次于SuiteQL)NETSUITE_GET_RECORD_SELECTED_FIELDS– 仅检索特定字段(减少负载)
推荐执行计划
- 检查记录模式 使用
NETSUITE_GET_RECORD_METADATA发现必需字段 - 搜索现有记录 使用
NETSUITE_RUN_SUITEQL_QUERY避免重复 - 通过电子邮件查找客户 使用SuiteQL;如果找到,用
NETSUITE_GET_CUSTOMER获取详情 - 如果需要创建客户 使用
NETSUITE_CREATE_CUSTOMER(确保设置subsidiary) - 验证商品内部ID 使用
NETSUITE_LIST_RECORDS或 SuiteQL - 创建销售订单 使用
NETSUITE_CREATE_SALES_ORDER使用已验证的引用 - 可选通过外部ID更新 使用
NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID用于同步工作流 - 验证结果 使用
NETSUITE_GET_RECORD_SELECTED_FIELDS确认定价/总额
已知陷阱
| 陷阱 | 详情 |
|---|---|
| 无效商品ID | NETSUITE_CREATE_SALES_ORDER 在商品内部ID无效时抛出USER_ERROR。通过 NETSUITE_LIST_RECORDS 或 NETSUITE_RUN_SUITEQL_QUERY 预验证。 |
| 缺失必需字段 | NETSUITE_CREATE_CUSTOMER 当必需字段(例如 subsidiary)缺失时返回400。始终先用 NETSUITE_GET_RECORD_METADATA 检查。 |
| SuiteQL字段名 | 账户间的查询差异可能导致空结果。当结果看起来错误时,通过 NETSUITE_GET_RECORD_METADATA 确认字段名。 |
| 筛选表达式限制 | NETSUITE_FILTER_RECORD_COLLECTION 如果筛选语法不受支持可能失败。视为次于SuiteQL。 |
| 外部ID幂等性 | NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID 取决于一致的外部ID。不匹配会静默创建副本而不是更新。 |
| SuiteTax行项目 | 启用SuiteTax的账户需要在每个行项目上提供 taxcode。省略会导致创建失败。 |
快速参考
| 工具标识 | 描述 |
|---|---|
NETSUITE_CREATE_SALES_ORDER |
创建带行项目的新销售订单 |
NETSUITE_RUN_SUITEQL_QUERY |
执行带分页的临时SuiteQL查询 |
NETSUITE_CREATE_CUSTOMER |
创建新客户记录 |
NETSUITE_GET_CUSTOMER |
通过内部ID检索客户 |
NETSUITE_UPDATE_CUSTOMER |
更新现有客户(PATCH) |
NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID |
通过外部ID创建或更新记录 |
NETSUITE_GET_RECORD_METADATA |
检查记录模式和字段定义 |
NETSUITE_LIST_RECORDS |
列出带筛选和分页的记录 |
NETSUITE_FILTER_RECORD_COLLECTION |
替代记录筛选 |
NETSUITE_GET_RECORD_SELECTED_FIELDS |
从记录中检索特定字段 |
由 Composio 提供支持