using Kingdee.CDP.WebApi.SDK; using Microsoft.VisualStudio.TestTools.UnitTesting; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Text; namespace Kingdee.BOS.WebApi.SDK.Test { [TestClass] public class Reimbursement { /// /// 报销申请单 /// [TestMethod] public string Test_reimbursement(object ydapidata) { string jsonsZTab = ""; //List dic = new List(); JObject array = JsonConvert.DeserializeObject(ydapidata.ToString()); foreach (var item in array["tableField_leqinlq8"]) { JObject itemarray = JsonConvert.DeserializeObject(item.ToString()); //DateTime dqr = GetDateTime(itemarray["dateField_leqinlqd"].ToString()); //DateTime yfr = GetDateTime(itemarray["dateField_lgdd2fz5"].ToString()); jsonsZTab += "{\"FExpID\": { \"FNUMBER\": \"FYXM09_SYS\" },\"FLocExpSubmitAmount\": 10.3,\"FLocReqSubmitAmount\": 10.3,\"FLOCTAXAMOUNT\": 0.3,\"FLOCNOTAXAMOUNT\": 10.0,\"FTaxSubmitAmt\": 10.0,\"FTaxRate\": 3.0,\"FTaxAmt\": 0.3,\"FExpenseAmount\": 10.3,\"FExpenseDeptEntryID\": {\"FNUMBER\": \"001.01\" },\"FRequestAmount\": 10.3,\"FExpSubmitAmount\": 10.3,\"FReqSubmitAmount\": 10.3,\"FOnlineBank\": false},"; } //初始化 var clienter = new K3CloudApi(); StringBuilder error = new StringBuilder(); //测试连接 RepoResult reporesult = clienter.CheckAuthInfo(); Assert.IsTrue(reporesult.ResponseStatus.IsSuccess); if (reporesult.ResponseStatus.IsSuccess) { //保存接口的请求参数的规定格式 var requestJObject = JObject.Parse("{\"NeedUpDateFields\": [],\"NeedReturnFields\": [],\"IsDeleteEntry\": \"true\",\"SubSystemId\": \"\",\"IsVerifyBaseDataField\": \"false\",\"IsEntryBatchFill\": \"true\",\"ValidateFlag\": \"true\",\"NumberSearch\": \"true\",\"IsAutoAdjustField\": \"false\",\"InterationFlags\": \"\",\"IgnoreInterationFlag\": \"\"," + "\"Model\": {" + "\"FID\": 0,\"FDate\": \"2023-04-13 00:00:00\"," + "\"FCurrencyID\": {\"FNUMBER\": \"PRE001\"}," + "\"FOrgID\": {\"FNumber\": \"101\"}," + "\"FCausa\": \"测试\"," + "\"FProposerID\": {\"FSTAFFNUMBER\": \"010907031023147775\"}," + "\"FRequestDeptID\": {\"FNUMBER\": \"001.01\"}," + "\"FContactPhoneNo\": \"19972642292\"," + "\"FBillTypeID\": {\"FNUMBER\": \"FYBXD001_SYS\"}," + "\"FExpenseOrgId\": {\"FNumber\": \"101\"}," + "\"FExpenseDeptID\": {\"FNUMBER\": \"001.01\"}," + "\"FCONTACTUNITTYPE\": \"BD_Empinfo\"," + "\"FCONTACTUNIT\": {\"FNumber\": \"010907031023147775\"}," + "\"FPayOrgId\": {\"FNumber\": \"101\" }," + "\"FPaySettlleTypeID\": {\"FNUMBER\": \"JSFS04_SYS\"}," + "\"FBankBranchT\": \"开户银行\",\"FBankAccountNameT\": \"账户名称\",\"FBankAccountT\": \"银行账户\"," + "\"FLocCurrencyID\": {\"FNUMBER\":\"PRE001\"}," + "\"FExchangeTypeID\": {\"FNUMBER\":\"HLTX01_SYS\"}," + "\"FExchangeRate\": 1.0,\"FSplitEntry\": false,\"FCombinedPay\": true,\"FLocExpAmountSum\": 30.5,\"FLocReqAmountSum\": 30.5,\"FExpAmountSum\": 30.5,\"FReqAmountSum\": 30.5," + "\"FCreatorId\": {\"FUserID\": 16394 }," + "\"FCreateDate\": \"2023-04-13 17:34:10\",\"FRequestType\": \"1\",\"FReqReimbAmountSum\": 30.5,\"FReqPayReFoundAmountSum\": 30.5,\"FBankAddress\": \"开户行地址\",\"FBANKCNAPS\": \"联行号\",\"FRealPay\": false," + "\"FBankDetail\": {\"FNUMBER\": \"11\" },\"FCountry\":\"中国\",\"FNProvince\": \"1\",\"FNCity\": \"1\",\"FMultiPayee\": false,\"FillByBeimAmount\": false,\"F_BQB_KFDQ\": \"湖南付款\"," + "\"FEntity\": ["+jsonsZTab.Substring(0, jsonsZTab.Length - 1)+ "]}}"); //调用保存接口 var resultJson = clienter.Save("ER_ExpReimbursement", JsonConvert.SerializeObject(requestJObject)); JObject resJson = JsonConvert.DeserializeObject(resultJson); //根据不同业务单据拼接不同的字段和数值 var number = resJson["Result"]["Number"].ToString(); //对返回结果进行解析和校验,这里使用的是JsonPatch var isSuccess = ValidateResponse(resultJson); Assert.IsTrue(isSuccess); Assert.IsTrue(Test_EmpInfo_Submit(clienter, number)); Assert.IsTrue(Test_EmpInfo_Audit(clienter, number)); return resultJson.ToString(); } else { return error.AppendLine("User authentication information is wrong, please check again!").ToString(); } } #region /// /// 报销-查询 /// /// /// /// public bool Test_EmpInfo_View(K3CloudApi clienter, string number) { //查询的请求参数 var param = JObject.Parse("{\"CreateOrgId\":0,\"Number\":\"" + number + "\",\"Id\":\"\"}"); //调用查询接口 var resultJson = clienter.View("ER_ExpReimbursement", JsonConvert.SerializeObject(param)); return ValidateResponse(resultJson); } /// /// 报销-提交 /// /// /// /// public bool Test_EmpInfo_Submit(K3CloudApi clienter, string number) { //查询的请求参数 var param = JObject.Parse("{\"CreateOrgId\": 0," + "\"Numbers\": [\"" + number + "\"]," + "\"Ids\": \"\"," + "\"SelectedPostId\": 0," + "\"NetworkCtrl\": \"\"," + "\"IgnoreInterationFlag\": \"\"}"); //调用查询接口 var resultJson = clienter.Submit("ER_ExpReimbursement", JsonConvert.SerializeObject(param)); return ValidateResponse(resultJson); } /// /// 报销-审核 /// /// /// /// public bool Test_EmpInfo_Audit(K3CloudApi clienter, string number) { //查询的请求参数 var param = JObject.Parse("{\"CreateOrgId\":0,\"Numbers\":[\"" + number + "\"],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\",\"IsVerifyProcInst\":\"\",\"IgnoreInterationFlag\":\"\"}"); //调用查询接口 var resultJson = clienter.Audit("ER_ExpReimbursement", JsonConvert.SerializeObject(param)); return ValidateResponse(resultJson); } #endregion public bool ValidateResponse(string resultJson) { //对返回结果进行解析和校验,这里使用的是JsonPatch var resultJObject = JObject.Parse(resultJson); var queryNode = resultJObject.SelectToken("$..IsSuccess"); if (queryNode == null) { return true; } var isSuccess = queryNode.Value(); return isSuccess; } /// /// 时间戳转换 /// /// /// public DateTime GetDateTime(string timeStamp) { var posixTime = DateTime.SpecifyKind(new DateTime(1970, 1, 1), DateTimeKind.Utc); var time = posixTime.AddMilliseconds(Convert.ToDouble(timeStamp)); return time; } } }