工作笔记:金蝶云使用API修改单据数据原创
金蝶云社区-大A神
大A神
1人赞赏了该文章 1125次浏览 未经作者许可,禁止转载编辑于2021年12月02日 14:08:30

背景缘由,有个项目因为需要由销售出库生成应收单,之前用API调用保存,很多字段没有赋值,考虑到这个功能很重要,要和之前的下推效果一样。所以尝试调用下推接口生成,但是实际业务情况送货不是全部签收的,比如送货100,只收98,那么下推应收单数量是98,而不是100.所以不能用直接用下推接口,需要结合转换插件修改下推的数量。但是在论坛找不到这样的例子,于是把这过程分成2步:
  1. 整体下推
  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如下。需要注意的是两点
  1. 注明修改明细字段的格式是:["FEntityDetail","FPriceQty","FNoTaxAmountFor_D"]    表示 [单据体Key,单据体字段key],这个是耗费事件很多的地方,系统的API说明和手册都说不清楚。
  2. 保存事件触发单据的值更新事件,所以只需要传入数量,金额这些会自动计算。这个很方便。
{
    "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
            }
        ]
    }
}

赞 1