调用应付单webapi报错
金蝶云社区-138xxxx6272_1
138xxxx6272_1
0人赞赏了该文章 1,135次浏览 未经作者许可,禁止转载编辑于2017年03月12日 20:47:00

麻烦老师指导一下:

传入参数:
{"FSUPPLIERID":"NBBJ001","FCURRENCYID":"","FDATE":"2017-03-08","FSETTLEORGID":"BJ001",
"FPAYORGID":"BJ001","FPURCHASEORGID":"BJ001",
"entries":[{"FMATERIALID":"DLS0001","FPRICEUNITID":"\u5347","FPRICEQTY":"1000","FTAXPRICE":"55.6","FENTRYTAXRATE":"0.17","FALLAMOUNTFOR":"55600.00"}]}

调用接口返回结果:
{"Result":{"ResponseStatus":{"ErrorCode":500,"IsSuccess":false,"Errors":[{"FieldName":"FSUPPLIERID","Message":"字段“供应商”是必填项","DIndex":0},{"FieldName":"","Message":"第1行分录,物料必录。","DIndex":0}],"SuccessEntitys":[]},"Id":""}}

说明:
供应商NBBJ001是存在的

代码如下:
JObject jsonRoot = new JObject();

// Creator: 创建用户
jsonRoot.Add("Creator", "CC系统");

// NeedUpDateFields: 哪些字段需要更新?为空则表示参数中全部字段,均需要更新
jsonRoot.Add("NeedUpDateFields", new JArray(""));

// Model: 单据详细数据参数
JObject model = new JObject();
jsonRoot.Add("Model", model);

// 开始设置单据字段值
// 必须设置的字段:主键、单据类型、主业务组织,各必录且没有设置默认值的字段
// 特别注意:字段Key大小写是敏感的,建议从BOS设计器中,直接复制字段的标识属性过来

// 单据主键:必须填写,系统据此判断是新增还是修改单据;新增单据,填0
model.Add("FID", 0);
// 单据编号:可以忽略,由系统根据编码规则自动生成
model.Add("FBillNo", "");

// 单据类型::必须填写,是基础资料字段 所有基础资料字段都按FNumber赋值,别用其他字段
JObject basedata = new JObject();
basedata.Add("FNumber", "YFD01_SYS"); //默认:标准应付单
model.Add("FBILLTYPEID", basedata);
//币别
basedata = new JObject();
basedata.Add("FNumber", "PRE001"); //只有人民币业务
model.Add("FCURRENCYID", basedata);
//供应商
basedata = new JObject();
basedata.Add("FNumber", FSUPPLIERID);
model.Add("FSUPPLIERID", basedata);

// 结算组织:必须填写,是基础资料字段
// 基础资料类型字段填值,必须再构建一个JObject对象,设置基础资料编码
basedata = new JObject();
basedata.Add("FNumber", FSETTLEORGID);
model.Add("FSETTLEORGID", basedata);
// 付款组织:必须填写,是基础资料字段
basedata = new JObject();
basedata.Add("FNumber", FPAYORGID);
model.Add("FPAYORGID", basedata);
// 采购组织
basedata = new JObject();
basedata.Add("FNumber", FPURCHASEORGID);
model.Add("FPURCHASEORGID", basedata);

//单据日期(FDate)
model.Add("FDATE", FDATE); //DateTime.Today
//到期日 默认同单据日期
model.Add("FENDDATE_H", FDATE);

//创建日期:FCreateDate
model.Add("FCreateDate", DateTime.Today);

//-------------------------------------------------------------- 开始构建单据体参数:集合参数JArray
JArray entryRows = new JArray();
// 把单据体行集合,添加到model中,以单据体Key为标识 BOS里的分录标识
string entityKey = "AP_Payable__FEntityDetail"; //
model.Add(entityKey, entryRows);

//处理分录
foreach (INSERTPAYABLEENTRY entry in req.entries)
{

string FYWENTRYID = entry.FYWENTRYID;
string FMATERIALID = entry.FMATERIALID;

string FPRICEUNITID = entry.FPRICEUNITID;
string FPRICEQTY = entry.FPRICEQTY;
string FTAXPRICE = entry.FTAXPRICE;
string FENTRYTAXRATE = entry.FENTRYTAXRATE;
string FALLAMOUNTFOR = entry.FALLAMOUNTFOR;

// FCOMMENT
// 添加新行,把新行加入到单据体行集合
JObject entryRow = new JObject();
entryRows.Add(entryRow);

// 给新行,设置关键字段值
// 单据体主键:必须填写,系统据此判断是新增还是修改行
entryRow.Add("FEntryID", 0);

//物料(FMaterialId):基础资料,填写编码
basedata = new JObject();
basedata.Add("FNumber", FMATERIALID);
entryRow.Add("FMATERIALID", basedata);

// 单位(FUnitId):基础资料,填写编码
basedata = new JObject();
basedata.Add("FNumber", FPRICEUNITID);
entryRow.Add("FPRICEUNITID", basedata);

// 计价数量
entryRow.Add("FPriceQty", decimal.Parse(FPRICEQTY));
// 含税单价
entryRow.Add("FTaxPrice", decimal.Parse(FTAXPRICE));

//基本单位
basedata = new JObject();
basedata.Add("FNumber", FPRICEUNITID);
entryRow.Add("FBASICUNITID", basedata);
//税率
entryRow.Add("FEntryTaxRate", 17);

// 税额
decimal FTAXAMOUNTFOR =decimal.Parse(FALLAMOUNTFOR)*17/100;
entryRow.Add("FTAXAMOUNTFOR_D", FTAXAMOUNTFOR);

// 价税合计
entryRow.Add("FALLAMOUNTFOR_D", decimal.Parse(FALLAMOUNTFOR));

}