工作笔记:金蝶云使用API修改单据数据原创
1人赞赏了该文章
1125次浏览
编辑于2021年12月02日 14:08:30
背景缘由,有个项目因为需要由销售出库生成应收单,之前用API调用保存,很多字段没有赋值,考虑到这个功能很重要,要和之前的下推效果一样。所以尝试调用下推接口生成,但是实际业务情况送货不是全部签收的,比如送货100,只收98,那么下推应收单数量是98,而不是100.所以不能用直接用下推接口,需要结合转换插件修改下推的数量。但是在论坛找不到这样的例子,于是把这过程分成2步:
- 整体下推
- 调用API保存接口数量 后面还有一步是审核。
首先第一步非常简单,有现成的下推接口,如果老版本没有下推接口,还需要在单据新增一个操作,然后再调用操作(事件)。
下推的json
{
"Ids": "",
"Numbers": ["XSCKD026187"],
"EntryIds": "",
"RuleId": "258cfbb2-0695-400b-a74a-5d680e60aed1",
"TargetBillTypeId": "",
"TargetOrgId": 0,
"TargetFormId": "AR_receivable",
"IsEnableDefaultRule": "true",
"IsDraftWhenSaveFail": "false",
"CustomParams": {}
}
第二步,经过反复测试,正确的Json如下。需要注意的是两点
- 注明修改明细字段的格式是:["FEntityDetail","FPriceQty","FNoTaxAmountFor_D"] 表示 [单据体Key,单据体字段key],这个是耗费事件很多的地方,系统的API说明和手册都说不清楚。
- 保存事件触发单据的值更新事件,所以只需要传入数量,金额这些会自动计算。这个很方便。
{
"NeedUpDateFields": ["FEntityDetail","FPriceQty",
"FNoTaxAmountFor_D",
"FALLAMOUNTFOR_D",
"FStockQty",
"FStockBaseQty",
".FSalQty",
"FSalBaseQty",
"FNORECEIVEAMOUNT",
"FNOINVOICEAMOUNT",
"FNOINVOICEQTY"],
"NeedReturnFields": ["FPriceQty"],
"IsDeleteEntry": "false",
"SubSystemId": "",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "true",
"ValidateFlag": "true",
"NumberSearch": "true",
"InterationFlags": "",
"Model": {
"FID": 183434,
"FEntityDetail": [
{
"FEntryID":538668,
"FMATERIALID": {
"FNumber": "A2501"
},
"FMaterialDesc": XXXXX",
"FPRICEUNITID": {
"FNumber": "1001"
},
"FPriceQty": 25.0,
"FTaxPrice": 195.0,
"FPrice": 172.5664,
"FEntryTaxRate": 13.00,
"FNoTaxAmountFor_D": 4314.16,
"FTAXAMOUNTFOR_D": 560.84,
"FALLAMOUNTFOR_D": 4875.00,
"FDeliveryControl": false,
"FStockUnitId": {
"FNumber": "1001"
},
"FStockQty": 25.0,
"FIsFree": false,
"FStockBaseQty": 750.0,
"FSalUnitId": {
"FNumber": "1001"
},
"FSalQty": 25.0,
"FSalBaseQty": 750.0,
"FPriceBaseDen": 1.0,
"FSalBaseNum": 1.0,
"FStockBaseNum": 1.0,
"F_ora_Text1": "195",
"FNORECEIVEAMOUNT": 4875.00,
"FNOINVOICEAMOUNT": 4875.00,
"FNOINVOICEQTY": 750.0
}
]
}
}
推荐阅读