保存订单配方
订单配方存盘接口
基本信息
| 信息 | 值 | 备注 |
|---|---|---|
| 接口名称 | 订单配方保存 | 根据单据 ID 来新增单据(包括修改) |
| 请求状态 | POST | RESTful 方式 |
| 接口路径 | http://localhost:23798/api/Bill/SaveBill | 向服务器地址发送 POST 请求 |
| 远程模式 | http://www.linkerplus.com/api/ext_erp/Bill/SaveBill | 远程模式向服务器地址发送 POST 请求,需要 ERP 注册号注册远程模式,并在 Headers 添加 sn 参数 |
| 支持日期 | 2020-12-21 | 自该日期起支持 |
请求参数
Headers
| 参数名称 | 是否必须 | 参数值 | 备注 |
|---|---|---|---|
| Content-Type | 是 | application/json | 用于指定数据的传输类型 |
| LoginId | 是 | e835943e-55c2-4bf0-832d-6f4166592941 | 用户登录的 LoginId,取用户登录或账套验证接口返回的 LoginId |
| sn | 否 | MGR_REST_1001 | 远程模式需添加 sn 参数,MGR_REST_ERP注册号 |
Body
| 参数名称 | 类型 | 是否必须 | 参数值 | 备注 | 其它信息 |
|---|---|---|---|---|---|
| HeadData | object | 是 | 表头数据 | ||
| EntryOrderId | string | 否 | WMS00001 | 调用方业务编码 | 调用方唯一编码,关联 ERP 单据,且避免重复提交,当提交的 EntryOrderId 重复时返回提示。为空则没有该项检测 |
| CallId | string | 是 | BS | 调用的单据识别号 | "BS":表示订单配方 |
| CallNo | string | 否 | SO34060001->1 | 调用的单据号码 | 传入该值代表修改原单据信息,新增数据时无需添加 |
| DepNo | string | 否 | CGB | 部门代号 | |
| BilId | string | 否 | SO | 转入来源单识别号 | "SO":销售订单,"JH":计划单 |
| BilNo | string | 否 | SO34060001 | 转入来源单号 | 表头配方号=BilNo+"->"+BilItm |
| BilItm | number | 否 | 1 | 转入来源单项次 | |
| BomId | string | 否 | BOM | 取配方类型 | "BOM":标准配方,"SO":订单配方 |
| BomEstNo | string | 否 | 0033->111 | 取配方号 | 选取相应的配方,带出配方数据到单据 |
| PrdNo | string | 否 | HP01 | 母件货品代号 | |
| WhNo | string | 否 | CK01 | 仓库代号 | |
| CusNo | string | 否 | CS01 | 需求客户 | |
| Qty | number | 否 | 1 | 数量 | |
| Rem | string | 否 | 这是表头备注 | 备注 | |
| UsrNo | string | 否 | ADMIN | 制单人 | 账套验证的 LoginId 需添加 UsrNo,用户登录的 LoginId 则无需添加 UsrNo |
| ExtendProps | object | 否 | "CUS_OS_NO":"OS0C220001", "ZDY": "自定义" | 表头扩展功能 | 包括表头的其它字段以及用户自定义字段,字段名需与数据库表名一致 |
| NotUseAuditFlow | string | 否 | T/F | 跳过审核流程,自动审核。默认不跳过 | 当传"T"时,该单据通过接口生成时,不考虑审核流程,直接自动终审 |
| BodyData | object [] | 是 | 表身数据,子件明细 | item 类型: object | |
| CallItm | number | 否 | 1 | 原单项次 | HeadData 中 CallNo 存在并有值时才生效,传入该值代表修改原单据表身对应 ITM 列的信息,新增数据时无需添加 |
| PrdNo | string | 是 | YL1 | 货品代号 | 修改时非必须。当取配方值时,匹配 PrdNo 该值修改原值。配方带出数据不存在则新增 PrdNo 的行 |
| WhNo | string | 否 | 003 | 仓库代号 | 为空时默认取0000 |
| ZcNo | string | 否 | ZC01 | 制程代号 | 当表身制程规划有制程数据时,该值必须 |
| TwId | string | 否 | 1 | 是否托外 | "1":托外,其它非托外 |
| Unit | string | 否 | 1 | 单位 | |
| Qty | number | 是 | 3 | 主数量 | |
| Qty1 | number | 否 | 6 | 副数量 | |
| Rem | string | 否 | 这是表身摘要 | 摘要 | |
| IsDelete | string | 否 | F | 删除行 | CallItm 存在并有值时才生效,传入该值为 T 代表删除原单据表身对应 PRE_ITM 列,不删除行时无需添加 |
| ExtendProps | object | 否 | "START_DD":"2020-12-23", "ZDY": "自定义" | 表身扩展功能 | 包括表身的其它字段以及用户自定义字段,字段名需与数据库表名一致 |
| BodyData2 | object [] | 否 | 表身数据,制程规划 | item 类型: object | |
| CallItm | number | 否 | 1 | 原单项次 | HeadData 中 CallNo 存在并有值时才生效,传入该值代表修改原单据表身对应 ITM 列的信息,新增数据时无需添加 |
| ZcItm | number | 否 | 1 | 加工顺序 | |
| ZcNo | string | 否 | ZC01 | 制程代号 | 修改时非必须。当取配方值时,匹配 ZcNo 该值修改原值。配方带出数据不存在则新增 ZcNo 的行 |
| DepNo | string | 否 | JT01 | 机台 | |
| CusNo | string | 否 | CS01 | 托工厂商 | |
| Rem | string | 否 | 这是表身作法描述 | 作法描述 | |
| IsDelete | string | 否 | F | 删除行 | CallItm 存在并有值时才生效,传入该值为 T 代表删除原单据表身对应 PRE_ITM 列,不删除行时无需添加 |
| ExtendProps | object | 否 | "MV_ID":"Y" | 表身扩展功能 | 包括表身的其它字段,字段名需与数据库表名一致 |
返回数据
| 参数名称 | 类型 | 参数值 | 备注 |
|---|---|---|---|
| EntryOrderId | string | WMS00001 | 调用方业务编码 |
| CallID | string | BS | 调用的单据识别号 |
| CallNO | string | SO34060001->1 | 生成的单据号码 |
| CallOK | string | T | 执行是否成功, 是:"T" 否:"F" |
| Data | string | "TF_TABNAME": "TF_BOM_SO", "BIL_ITM": "0", "MF_TABNAME": "MF_BOM_SO", "BIL_NO": "SO34060001->1", "BIL_ID": "BS" | 单据信息,JSON 字符串格式 |
| ErrorStr | string | 错误信息 |
调用范例
Request
无需赋值的字段不需要添加,转入来源单或修改原单据时传入的字段代表修改原值
有来源示范,当添加了其它参数时代表修改转入的数据,例如"BodyData"添加"Qty":3代表修改来源单的数量为3
{
"HeadData": { // 必须,表头数据
"EntryOrderId": "WMS00001", // 非必须,调用方业务编码
"CallId": "BS", // 必须,调用的单据识别号,"BS":表示订单配方
"BilId": "SO", // 必须,转入来源单识别号
"BilNo": "SO34060002", // 必须,转入来源单单号
"BilItm": "1", // 必须,转入来源单项次
"BomId": "BOM", // 非必须,取配方类型
"BomEstNo": "0033->111", // 非必须,取配方号,把配方数据带到表身
"DepNo": "222" // 必须,制造部门
},
"BodyData": [ // 必须,表身数据,子件明细
{
"PrdNo": "111", // 非必须,当取配方值时,匹配PrdNo该值修改原值,配方带出数据不存在则新增PrdNo为111的行
"Qty": 2, // 非必须,修改PrdNo为111货品的用量为2
"ZcNo": "1" // 非必须,修改PrdNo为111货品的制程为1
},
{
"PrdNo": "222", // 非必须,当取配方值时,匹配PrdNo该值修改原值,配方带出数据不存在则新增PrdNo为222的行
"ZcNo": "1" // 非必须,修改PrdNo为222货品的制程为1
}
],
"BodyData2": [ // 必须,表身数据,制程规划
{
"ZcNo": "1" // 非必须,当取配方值时,匹配ZcNo该值修改原值,配方带出数据不存在则新增ZcNo为1的行
}
]
}
修改原单数据
{
"HeadData": {
"EntryOrderId": "WMS00001", // 非必须,调用方业务编码
"CallId": "BS", // 必须,调用的单据识别号,"BS":表示订单配方
"CallNo": "SO34060002->1" // 必须,调用的单据号
},
"BodyData": [
{
"CallItm": 1, // 必须,修改的数据行ITM为1
"Qty": 4 // 非必须,把数据行ITM为1的用量修改为4
}
],
"BodyData2": [
{
"CallItm": 1, // 必须,修改的数据行ITM为1
"CusNo": "111" // 非必须,把数据行ITM为1的托工厂商修改为111
}
]
}
Response
{
"EntryOrderId": "WMS00001", // 调用方业务编码
"CallID": "BS", // 调用的单据识别号
"CallNO": "SO34060001->1", // 生成的单据号码
"CallOK": "T", // 执行是否成功,是:"T" 否:"F"
"Data": "{\r\n \"TF_TABNAME\": \"TF_BOM_SO\",\r\n \"BIL_ITM\": \"0\",\r\n \"MF_TABNAME\": \"MF_BOM_SO\",\r\n \"BIL_NO\": \"SO34060001->1\",\r\n \"BIL_ID\": \"BS\"\r\n}", // 单据信息, JSON字符串格式
"ErrorStr": "" // 错误信息
}
备注
- 必须在 Headers 里面传入用户登录或账套验证的
LoginId。 - 当采用的是账套验证获取的
LoginId,那么 HeadData 中UsrNo就是制单人,不能为空。采用用户登录的LoginId则无需添加UsrNo,用户即制单人。 - Body 中 JSON 字段,尽量不要添加赋空值的字段。
ExtendProps中为拓展字段,需要对应数据库表的字段,自定义字段同样在这里处理。- 统一字段与接口所需数据库表字段重复时,只取统一字段的值。
- 接口程序不处理审核,没有审核流直接终审,有审核流就处于未审状态。
- 可查看后台表
LOG_BILLSAVE查看执行信息。 - 当 HeadData 中 EntryOrderId 不为空时,可查看后台表
LOG_OTHERSAVE查看单据关联信息。
EntryOrderId
EntryOrderId:为同一次调用动作的唯一 ID,全局唯一,建议采用随机 uuid/guid;例如调用方请求第一次时,无响应信息或者响应错误后再请求一次时,该 EntryOrderId 应相同,为同一次调用动作。相反,调用方第一次调用返回成功信息后,删除了单据(无论删除 ERP 单据还是调用方单据),再重新调用一次,此时 EntryOrderId 是不能与没删除前的 EntryOrderId 相同。简而言之,只要调用接口返回成功信息后的 EntryOrderId 就不能再重复调用。