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;
}
}
}