Reimbursement.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. using Kingdee.CDP.WebApi.SDK;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Linq;
  5. using System;
  6. using System.Text;
  7. namespace Kingdee.BOS.WebApi.SDK.Test
  8. {
  9. [TestClass]
  10. public class Reimbursement
  11. {
  12. /// <summary>
  13. /// 报销申请单
  14. /// </summary>
  15. [TestMethod]
  16. public string Test_reimbursement(object ydapidata)
  17. {
  18. string jsonsZTab = "";
  19. //List<string> dic = new List<string>();
  20. JObject array = JsonConvert.DeserializeObject<JObject>(ydapidata.ToString());
  21. foreach (var item in array["tableField_leqinlq8"])
  22. {
  23. JObject itemarray = JsonConvert.DeserializeObject<JObject>(item.ToString());
  24. //DateTime dqr = GetDateTime(itemarray["dateField_leqinlqd"].ToString());
  25. //DateTime yfr = GetDateTime(itemarray["dateField_lgdd2fz5"].ToString());
  26. 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},";
  27. }
  28. //初始化
  29. var clienter = new K3CloudApi();
  30. StringBuilder error = new StringBuilder();
  31. //测试连接
  32. RepoResult reporesult = clienter.CheckAuthInfo();
  33. Assert.IsTrue(reporesult.ResponseStatus.IsSuccess);
  34. if (reporesult.ResponseStatus.IsSuccess)
  35. {
  36. //保存接口的请求参数的规定格式
  37. var requestJObject = JObject.Parse("{\"NeedUpDateFields\": [],\"NeedReturnFields\": [],\"IsDeleteEntry\": \"true\",\"SubSystemId\": \"\",\"IsVerifyBaseDataField\": \"false\",\"IsEntryBatchFill\": \"true\",\"ValidateFlag\": \"true\",\"NumberSearch\": \"true\",\"IsAutoAdjustField\": \"false\",\"InterationFlags\": \"\",\"IgnoreInterationFlag\": \"\"," +
  38. "\"Model\": {" +
  39. "\"FID\": 0,\"FDate\": \"2023-04-13 00:00:00\"," +
  40. "\"FCurrencyID\": {\"FNUMBER\": \"PRE001\"}," +
  41. "\"FOrgID\": {\"FNumber\": \"101\"}," +
  42. "\"FCausa\": \"测试\"," +
  43. "\"FProposerID\": {\"FSTAFFNUMBER\": \"010907031023147775\"}," +
  44. "\"FRequestDeptID\": {\"FNUMBER\": \"001.01\"}," +
  45. "\"FContactPhoneNo\": \"19972642292\"," +
  46. "\"FBillTypeID\": {\"FNUMBER\": \"FYBXD001_SYS\"}," +
  47. "\"FExpenseOrgId\": {\"FNumber\": \"101\"}," +
  48. "\"FExpenseDeptID\": {\"FNUMBER\": \"001.01\"}," +
  49. "\"FCONTACTUNITTYPE\": \"BD_Empinfo\"," +
  50. "\"FCONTACTUNIT\": {\"FNumber\": \"010907031023147775\"}," +
  51. "\"FPayOrgId\": {\"FNumber\": \"101\" }," +
  52. "\"FPaySettlleTypeID\": {\"FNUMBER\": \"JSFS04_SYS\"}," +
  53. "\"FBankBranchT\": \"开户银行\",\"FBankAccountNameT\": \"账户名称\",\"FBankAccountT\": \"银行账户\"," +
  54. "\"FLocCurrencyID\": {\"FNUMBER\":\"PRE001\"}," +
  55. "\"FExchangeTypeID\": {\"FNUMBER\":\"HLTX01_SYS\"}," +
  56. "\"FExchangeRate\": 1.0,\"FSplitEntry\": false,\"FCombinedPay\": true,\"FLocExpAmountSum\": 30.5,\"FLocReqAmountSum\": 30.5,\"FExpAmountSum\": 30.5,\"FReqAmountSum\": 30.5," +
  57. "\"FCreatorId\": {\"FUserID\": 16394 }," +
  58. "\"FCreateDate\": \"2023-04-13 17:34:10\",\"FRequestType\": \"1\",\"FReqReimbAmountSum\": 30.5,\"FReqPayReFoundAmountSum\": 30.5,\"FBankAddress\": \"开户行地址\",\"FBANKCNAPS\": \"联行号\",\"FRealPay\": false," +
  59. "\"FBankDetail\": {\"FNUMBER\": \"11\" },\"FCountry\":\"中国\",\"FNProvince\": \"1\",\"FNCity\": \"1\",\"FMultiPayee\": false,\"FillByBeimAmount\": false,\"F_BQB_KFDQ\": \"湖南付款\"," +
  60. "\"FEntity\": ["+jsonsZTab.Substring(0, jsonsZTab.Length - 1)+ "]}}");
  61. //调用保存接口
  62. var resultJson = clienter.Save("ER_ExpReimbursement", JsonConvert.SerializeObject(requestJObject));
  63. JObject resJson = JsonConvert.DeserializeObject<JObject>(resultJson);
  64. //根据不同业务单据拼接不同的字段和数值
  65. var number = resJson["Result"]["Number"].ToString();
  66. //对返回结果进行解析和校验,这里使用的是JsonPatch
  67. var isSuccess = ValidateResponse(resultJson);
  68. Assert.IsTrue(isSuccess);
  69. Assert.IsTrue(Test_EmpInfo_Submit(clienter, number));
  70. Assert.IsTrue(Test_EmpInfo_Audit(clienter, number));
  71. return resultJson.ToString();
  72. }
  73. else
  74. {
  75. return error.AppendLine("User authentication information is wrong, please check again!").ToString();
  76. }
  77. }
  78. #region
  79. /// <summary>
  80. /// 报销-查询
  81. /// </summary>
  82. /// <param name="clienter"></param>
  83. /// <param name="number"></param>
  84. /// <returns></returns>
  85. public bool Test_EmpInfo_View(K3CloudApi clienter, string number)
  86. {
  87. //查询的请求参数
  88. var param = JObject.Parse("{\"CreateOrgId\":0,\"Number\":\"" +
  89. number +
  90. "\",\"Id\":\"\"}");
  91. //调用查询接口
  92. var resultJson = clienter.View("ER_ExpReimbursement", JsonConvert.SerializeObject(param));
  93. return ValidateResponse(resultJson);
  94. }
  95. /// <summary>
  96. /// 报销-提交
  97. /// </summary>
  98. /// <param name="clienter"></param>
  99. /// <param name="number"></param>
  100. /// <returns></returns>
  101. public bool Test_EmpInfo_Submit(K3CloudApi clienter, string number)
  102. {
  103. //查询的请求参数
  104. var param = JObject.Parse("{\"CreateOrgId\": 0," +
  105. "\"Numbers\": [\"" + number + "\"]," +
  106. "\"Ids\": \"\"," +
  107. "\"SelectedPostId\": 0," +
  108. "\"NetworkCtrl\": \"\"," +
  109. "\"IgnoreInterationFlag\": \"\"}");
  110. //调用查询接口
  111. var resultJson = clienter.Submit("ER_ExpReimbursement", JsonConvert.SerializeObject(param));
  112. return ValidateResponse(resultJson);
  113. }
  114. /// <summary>
  115. /// 报销-审核
  116. /// </summary>
  117. /// <param name="clienter"></param>
  118. /// <param name="number"></param>
  119. /// <returns></returns>
  120. public bool Test_EmpInfo_Audit(K3CloudApi clienter, string number)
  121. {
  122. //查询的请求参数
  123. var param = JObject.Parse("{\"CreateOrgId\":0,\"Numbers\":[\"" +
  124. number +
  125. "\"],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\",\"IsVerifyProcInst\":\"\",\"IgnoreInterationFlag\":\"\"}");
  126. //调用查询接口
  127. var resultJson = clienter.Audit("ER_ExpReimbursement", JsonConvert.SerializeObject(param));
  128. return ValidateResponse(resultJson);
  129. }
  130. #endregion
  131. public bool ValidateResponse(string resultJson)
  132. {
  133. //对返回结果进行解析和校验,这里使用的是JsonPatch
  134. var resultJObject = JObject.Parse(resultJson);
  135. var queryNode = resultJObject.SelectToken("$..IsSuccess");
  136. if (queryNode == null)
  137. {
  138. return true;
  139. }
  140. var isSuccess = queryNode.Value<Boolean>();
  141. return isSuccess;
  142. }
  143. /// <summary>
  144. /// 时间戳转换
  145. /// </summary>
  146. /// <param name="timeStamp"></param>
  147. /// <returns></returns>
  148. public DateTime GetDateTime(string timeStamp)
  149. {
  150. var posixTime = DateTime.SpecifyKind(new DateTime(1970, 1, 1), DateTimeKind.Utc);
  151. var time = posixTime.AddMilliseconds(Convert.ToDouble(timeStamp));
  152. return time;
  153. }
  154. }
  155. }