377 lines
16 KiB
C#
377 lines
16 KiB
C#
|
|
using System;
|
|||
|
|
using System.ComponentModel;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using Kingdee.BOS;
|
|||
|
|
using Kingdee.BOS.Core.Bill.PlugIn;
|
|||
|
|
using Kingdee.BOS.Core.Bill.PlugIn.Args;
|
|||
|
|
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
|||
|
|
using Kingdee.BOS.Core.Metadata;
|
|||
|
|
using Kingdee.BOS.Core.Metadata.EntityElement;
|
|||
|
|
using Kingdee.BOS.Core.SqlBuilder;
|
|||
|
|
using Kingdee.BOS.Orm.DataEntity;
|
|||
|
|
using Kingdee.BOS.ServiceHelper;
|
|||
|
|
using Kingdee.BOS.Util;
|
|||
|
|
using Kingdee.BOS.Core.DynamicForm;
|
|||
|
|
using Kingdee.BOS.Core.DynamicForm.PlugIn;
|
|||
|
|
using Kingdee.BOS.Core.List.PlugIn;
|
|||
|
|
using Kingdee.BOS.WebApi.FormService;
|
|||
|
|
using Newtonsoft.Json.Linq;
|
|||
|
|
using Newtonsoft.Json;
|
|||
|
|
using System.Web.Script.Serialization;
|
|||
|
|
|
|||
|
|
namespace aoyuPlugIn
|
|||
|
|
{
|
|||
|
|
[Description("列表费用归集新增")]
|
|||
|
|
[Kingdee.BOS.Util.HotUpdate]
|
|||
|
|
public class MJ_wgd_lb : AbstractListPlugIn
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
//列表菜单事件
|
|||
|
|
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
|
|||
|
|
{
|
|||
|
|
base.AfterBarItemClick(e);
|
|||
|
|
if (e.BarItemKey == "tbfygjlb")//生成费用归集单
|
|||
|
|
{
|
|||
|
|
if (this.ListView.SelectedRowsInfo.Count > 0)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < this.ListView.SelectedRowsInfo.Count; i++)
|
|||
|
|
{
|
|||
|
|
//取指定行单据编号
|
|||
|
|
string fbillno = this.ListView.SelectedRowsInfo[i].BillNo;
|
|||
|
|
//string zt = this.ListView.SelectedRowsInfo[i].DataRow["FDOCUMENTSTATUS"].ToString();//取单据状态
|
|||
|
|
|
|||
|
|
SaveBill(fbillno);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//调用API生成费用归集单--本机
|
|||
|
|
public Boolean SaveBill2(string fbillno)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var sSql = String.Format("EXEC hw_get_wwdd '" + fbillno + "'");
|
|||
|
|
var dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sSql);
|
|||
|
|
int i = 0;
|
|||
|
|
if (dr.Count > 0)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
JObject jsonRoot = new JObject();
|
|||
|
|
|
|||
|
|
// NeedUpDateFields: 哪些字段需要更新?为空则表示参数中全部字段,均需要更新
|
|||
|
|
jsonRoot.Add("NeedUpDateFields", new JArray(""));
|
|||
|
|
|
|||
|
|
// Model: 单据详细数据参数
|
|||
|
|
JObject model = new JObject();
|
|||
|
|
jsonRoot.Add("Model", model);
|
|||
|
|
|
|||
|
|
// 开始设置单据字段值
|
|||
|
|
// 必须设置的字段:主键、单据类型、主业务组织,各必录且没有设置默认值的字段
|
|||
|
|
// 特别注意:字段Key大小写是敏感的,建议从BOS设计器中,直接复制字段的标识属性过来
|
|||
|
|
|
|||
|
|
// 单据主键:必须填写,系统据此判断是新增还是修改单据;新增单据,填0
|
|||
|
|
model.Add("FID", 0);
|
|||
|
|
|
|||
|
|
//核算体系编码
|
|||
|
|
JObject FACCTGSYSTEMID = new JObject();
|
|||
|
|
FACCTGSYSTEMID.Add("FNumber", "KJHSTX01_SYS");
|
|||
|
|
model.Add("FACCTGSYSTEMID", FACCTGSYSTEMID);
|
|||
|
|
|
|||
|
|
//核算体组织码
|
|||
|
|
JObject FACCTGORGID = new JObject();
|
|||
|
|
FACCTGORGID.Add("FNumber", "107");
|
|||
|
|
|
|||
|
|
model.Add("FACCTGORGID", FACCTGORGID);
|
|||
|
|
|
|||
|
|
//会计政策编码
|
|||
|
|
JObject FACCTPOLICYID = new JObject();
|
|||
|
|
FACCTPOLICYID.Add("FNumber", "KJZC02_SYS");
|
|||
|
|
|
|||
|
|
model.Add("FACCTPOLICYID", FACCTPOLICYID);
|
|||
|
|
|
|||
|
|
|
|||
|
|
////业务类型
|
|||
|
|
//model.Add("FBusinessType", "CG");//标准采购
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 开始构建单据体参数:集合参数JArray
|
|||
|
|
|
|||
|
|
JArray entryRows = new JArray();
|
|||
|
|
// 把单据体行集合,添加到model中,以单据体Key为标识
|
|||
|
|
string entityKey = "FEntity";
|
|||
|
|
model.Add(entityKey, entryRows);
|
|||
|
|
// 通过循环创建单据体行:示例代码仅创建一行
|
|||
|
|
foreach (var item in dr)
|
|||
|
|
{
|
|||
|
|
// 添加新行,把新行加入到单据体行集合
|
|||
|
|
JObject entryRow = new JObject();
|
|||
|
|
entryRows.Add(entryRow);
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 给新行,设置关键字段值
|
|||
|
|
// 单据体主键:必须填写,系统据此判断是新增还是修改行,0是新增
|
|||
|
|
entryRow.Add("FEntryID", 0);
|
|||
|
|
|
|||
|
|
//业务组织
|
|||
|
|
JObject FBIZORGID = new JObject();
|
|||
|
|
FBIZORGID.Add("FNumber", "107");
|
|||
|
|
|
|||
|
|
entryRow.Add("FBIZORGID", FBIZORGID);
|
|||
|
|
|
|||
|
|
//费用项目编码
|
|||
|
|
JObject FEXPENSEITEMID = new JObject();
|
|||
|
|
FEXPENSEITEMID.Add("FNumber", "FYXM04_SYS");
|
|||
|
|
entryRow.Add("FEXPENSEITEMID", FEXPENSEITEMID);
|
|||
|
|
|
|||
|
|
//this.Model.SetValue("F_ISSYQ", item[2], i);
|
|||
|
|
//日期
|
|||
|
|
//entryRow.Add("FDATE", item[0].ToString());
|
|||
|
|
entryRow.Add("FDATE", "2019-5-31");
|
|||
|
|
//成本中心编码
|
|||
|
|
JObject FCOSTCENTERID = new JObject();
|
|||
|
|
FCOSTCENTERID.Add("FNumber", "CBZX000016");
|
|||
|
|
|
|||
|
|
entryRow.Add("FCOSTCENTERID", FCOSTCENTERID);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//金额
|
|||
|
|
entryRow.Add("FAMOUNT", item[1].ToString());
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//产品编号
|
|||
|
|
JObject FPRODUCTID = new JObject();
|
|||
|
|
FPRODUCTID.Add("FNumber", item[2].ToString());
|
|||
|
|
entryRow.Add("FPRODUCTID", FPRODUCTID);
|
|||
|
|
i++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 调用Web API接口服务,保存
|
|||
|
|
object result = WebApiServiceCall.Save(this.Context, "CB_EXPENSECOLLECTION", jsonRoot.ToString());
|
|||
|
|
|
|||
|
|
string t = objzjs(result);
|
|||
|
|
|
|||
|
|
if (strJson(t))
|
|||
|
|
{
|
|||
|
|
sSql = string.Format("exec hw_fxwgd '{0}'", fbillno);
|
|||
|
|
DBServiceHelper.Execute(this.Context, sSql);
|
|||
|
|
this.View.ShowMessage("操作成功!");
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
this.View.ShowMessage("操作失败!" + t);
|
|||
|
|
return false;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
StringBuilder sb = new StringBuilder();
|
|||
|
|
sb.AppendLine("程序运行遇到了未知的错误11:");
|
|||
|
|
sb.Append("错误提示:").AppendLine(ex.Message);
|
|||
|
|
sb.Append("错误堆栈:").AppendLine(ex.StackTrace);
|
|||
|
|
this.View.ShowMessage(sb.ToString());
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
this.View.ShowMessage("无数据,请确认后再操作!");
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
catch (Exception ex) { this.View.ShowMessage("生成费用归集单时发生错误为:" + ex.Message); return false; }
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//调用API生成费用归集单--汇威
|
|||
|
|
public Boolean SaveBill(string fbillno)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var sSql = String.Format("EXEC hw_get_wwdd '" + fbillno + "'");
|
|||
|
|
var dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sSql);
|
|||
|
|
int i = 0;
|
|||
|
|
if (dr.Count > 0)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
JObject jsonRoot = new JObject();
|
|||
|
|
|
|||
|
|
// NeedUpDateFields: 哪些字段需要更新?为空则表示参数中全部字段,均需要更新
|
|||
|
|
jsonRoot.Add("NeedUpDateFields", new JArray(""));
|
|||
|
|
|
|||
|
|
// Model: 单据详细数据参数
|
|||
|
|
JObject model = new JObject();
|
|||
|
|
jsonRoot.Add("Model", model);
|
|||
|
|
|
|||
|
|
// 开始设置单据字段值
|
|||
|
|
// 必须设置的字段:主键、单据类型、主业务组织,各必录且没有设置默认值的字段
|
|||
|
|
// 特别注意:字段Key大小写是敏感的,建议从BOS设计器中,直接复制字段的标识属性过来
|
|||
|
|
|
|||
|
|
// 单据主键:必须填写,系统据此判断是新增还是修改单据;新增单据,填0
|
|||
|
|
model.Add("FID", 0);
|
|||
|
|
|
|||
|
|
//核算体系编码
|
|||
|
|
JObject FACCTGSYSTEMID = new JObject();
|
|||
|
|
FACCTGSYSTEMID.Add("FNumber", "KJHSTX01_SYS");
|
|||
|
|
model.Add("FACCTGSYSTEMID", FACCTGSYSTEMID);
|
|||
|
|
|
|||
|
|
//核算体组织码
|
|||
|
|
JObject FACCTGORGID = new JObject();
|
|||
|
|
//FACCTGORGID.Add("FNumber", "107");
|
|||
|
|
FACCTGORGID.Add("FNumber", "100");
|
|||
|
|
model.Add("FACCTGORGID", FACCTGORGID);
|
|||
|
|
|
|||
|
|
//会计政策编码
|
|||
|
|
JObject FACCTPOLICYID = new JObject();
|
|||
|
|
//FACCTPOLICYID.Add("FNumber", "KJZC02_SYS");
|
|||
|
|
FACCTPOLICYID.Add("FNumber", "KJZC01_SYS");
|
|||
|
|
model.Add("FACCTPOLICYID", FACCTPOLICYID);
|
|||
|
|
|
|||
|
|
|
|||
|
|
////业务类型
|
|||
|
|
//model.Add("FBusinessType", "CG");//标准采购
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 开始构建单据体参数:集合参数JArray
|
|||
|
|
|
|||
|
|
JArray entryRows = new JArray();
|
|||
|
|
// 把单据体行集合,添加到model中,以单据体Key为标识
|
|||
|
|
string entityKey = "FEntity";
|
|||
|
|
model.Add(entityKey, entryRows);
|
|||
|
|
// 通过循环创建单据体行:示例代码仅创建一行
|
|||
|
|
foreach (var item in dr)
|
|||
|
|
{
|
|||
|
|
// 添加新行,把新行加入到单据体行集合
|
|||
|
|
JObject entryRow = new JObject();
|
|||
|
|
entryRows.Add(entryRow);
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 给新行,设置关键字段值
|
|||
|
|
// 单据体主键:必须填写,系统据此判断是新增还是修改行,0是新增
|
|||
|
|
entryRow.Add("FEntryID", 0);
|
|||
|
|
|
|||
|
|
//业务组织
|
|||
|
|
JObject FBIZORGID = new JObject();
|
|||
|
|
//FBIZORGID.Add("FNumber", "107");
|
|||
|
|
FBIZORGID.Add("FNumber", "100");
|
|||
|
|
entryRow.Add("FBIZORGID", FBIZORGID);
|
|||
|
|
|
|||
|
|
//费用项目编码
|
|||
|
|
JObject FEXPENSEITEMID = new JObject();
|
|||
|
|
FEXPENSEITEMID.Add("FNumber", "FYXM04_SYS");
|
|||
|
|
entryRow.Add("FEXPENSEITEMID", FEXPENSEITEMID);
|
|||
|
|
|
|||
|
|
//this.Model.SetValue("F_ISSYQ", item[2], i);
|
|||
|
|
//日期
|
|||
|
|
entryRow.Add("FDATE", item[0].ToString());
|
|||
|
|
//entryRow.Add("FDATE", "2019-5-31");
|
|||
|
|
//成本中心编码
|
|||
|
|
JObject FCOSTCENTERID = new JObject();
|
|||
|
|
//FCOSTCENTERID.Add("FNumber", "CBZX000016");
|
|||
|
|
FCOSTCENTERID.Add("FNumber", "CBZX000049");
|
|||
|
|
entryRow.Add("FCOSTCENTERID", FCOSTCENTERID);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//金额
|
|||
|
|
entryRow.Add("FAMOUNT", item[1].ToString());
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//产品编号
|
|||
|
|
JObject FPRODUCTID = new JObject();
|
|||
|
|
FPRODUCTID.Add("FNumber", item[2].ToString());
|
|||
|
|
entryRow.Add("FPRODUCTID", FPRODUCTID);
|
|||
|
|
i++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 调用Web API接口服务,保存
|
|||
|
|
var result = WebApiServiceCall.Save(this.Context, "CB_EXPENSECOLLECTION", jsonRoot.ToString());
|
|||
|
|
|
|||
|
|
|
|||
|
|
string t = objzjs(result);
|
|||
|
|
|
|||
|
|
if (strJson(t))
|
|||
|
|
{
|
|||
|
|
sSql = string.Format("exec hw_fxwgd '{0}'", fbillno);
|
|||
|
|
DBServiceHelper.Execute(this.Context, sSql);
|
|||
|
|
this.View.ShowMessage("操作成功1!");
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
this.View.ShowMessage("操作失败!" + t);
|
|||
|
|
return false;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
StringBuilder sb = new StringBuilder();
|
|||
|
|
sb.AppendLine("程序运行遇到了未知的错误11:");
|
|||
|
|
sb.Append("错误提示:").AppendLine(ex.Message);
|
|||
|
|
sb.Append("错误堆栈:").AppendLine(ex.StackTrace);
|
|||
|
|
this.View.ShowMessage(sb.ToString());
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
this.View.ShowMessage("无数据,请确认后再操作!");
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
catch (Exception ex) { this.View.ShowMessage("生成费用归集单时发生错误为:" + ex.Message); return false; }
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//object转json
|
|||
|
|
public string objzjs(Object obj)
|
|||
|
|
{
|
|||
|
|
JavaScriptSerializer js = new JavaScriptSerializer();
|
|||
|
|
string myJson = js.Serialize(obj);
|
|||
|
|
return myJson;
|
|||
|
|
}
|
|||
|
|
// 将字符串转换成Json格式显示
|
|||
|
|
//字符串转json
|
|||
|
|
public bool strJson(string t)
|
|||
|
|
{
|
|||
|
|
string jsonText = t;
|
|||
|
|
// "{"shenzheng":"深圳","beijing":"北京","shanghai":[{"zj1":"zj11","zj2":"zj22"},"zjs"]}";
|
|||
|
|
|
|||
|
|
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);//或者JObject jo = JObject.Parse(jsonText);
|
|||
|
|
//string zone = jo["shenzheng"].ToString();//输出 "深圳"
|
|||
|
|
//string zone_en = jo["shanghai"].ToString();//输出 "[{"zj1":"zj11","zj2":"zj22"},"zjs"]"
|
|||
|
|
//string zj1 = jo["shanghai"][1].ToString();//输出 "zjs"
|
|||
|
|
//Console.WriteLine(jo);
|
|||
|
|
|
|||
|
|
string tt = jo["Result"].ToString();
|
|||
|
|
JObject jo1 = (JObject)JsonConvert.DeserializeObject(tt);
|
|||
|
|
string t3 = jo1["ResponseStatus"].ToString();
|
|||
|
|
JObject jo2 = (JObject)JsonConvert.DeserializeObject(t3);
|
|||
|
|
string t4 = jo2["IsSuccess"].ToString();
|
|||
|
|
|
|||
|
|
if (t4.ToLower() == "true")
|
|||
|
|
return true;
|
|||
|
|
else
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|