关于审核操作插件的实操案例原创
金蝶云社区-李大少
李大少
7人赞赏了该文章 1,248次浏览 未经作者许可,禁止转载编辑于2020年06月29日 09:30:31

功能实现说明:

后台boss不能将单据体,两个不同单据体的字段拼接在一起。现在需要将几个字段拼接在一个字段上,供后台套打生成二维码使用。

  1. 系统默认加载单据头部分字段,有些字段不能加载需要先预加载进去,才能读到相应字段的值。

    public override void OnPreparePropertys(PreparePropertysEventArgs e)
            {
                e.FieldKeys.Add("FJobNumber");
                e.FieldKeys.Add("FCUSMATERIALIDPRINT");
            }



附上代码:

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Validation;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Util;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS;
using Kingdee.BOS.Core.Metadata.ConvertElement;

namespace k3cloud.sal.zxd.ckqorcd.Audit
{
    public class Audit : AbstractOperationServicePlugIn
    {
        public override void OnPreparePropertys(PreparePropertysEventArgs e)
        {
            e.FieldKeys.Add("FJobNumber");
            e.FieldKeys.Add("FCUSMATERIALIDPRINT");
        }
        public override void EndOperationTransaction(EndOperationTransactionArgs e)
        {
            base.EndOperationTransaction(e);

            foreach (var dataEntity in e.DataEntitys)
            {
                Int32 Id;   //单据头ID
                Id = Convert.ToInt32(dataEntity["Id"]);
                string date;  //单据头日期
                date = Convert.ToString(dataEntity["Date"]);
                date = date.Substring(0,10);
                string JobNumber; //单据头项目号
                JobNumber = Convert.ToString(dataEntity["JobNumber"]);
                if (JobNumber == null || JobNumber == "" || JobNumber == " ")
                {
                    JobNumber = "0000";
                    string gchsql = string.Format("update T_TPL_packing set FJobNumber='0000' WHERE FID='{0}'", Id);
                    DBUtils.ExecuteDynamicObject(this.Context, gchsql);
                }
                DynamicObject CUSMATERIALIDPRINT = dataEntity["CUSMATERIALIDPRINT"] as DynamicObject;  //客户物料编码
                string khwl = "";
                if (CUSMATERIALIDPRINT != null)
                {
                     khwl = Convert.ToString(CUSMATERIALIDPRINT["Number"]);
                }

                //string wlsql = string.Format("select b.fnumber from T_TPL_packing a " + ' ' +
                //                            "join V_SAL_CUSTMATMAPPING b on a.FMAPID=b.fid WHERE a.FID='{0}'", Id);
                //var wlrow = DBUtils.ExecuteDynamicObject(this.Context, wlsql);
                //if (wlrow.Count > 0)
                //{
                //    string wl = Convert.ToString(wlrow[0][0]);         

                    string sql = string.Format("SELECT FTUBENOS FROM T_TPL__packingNUEntry WHERE FID='{0}'", Id);
                    var row = DBUtils.ExecuteDynamicObject(this.Context, sql);
                    for (int i = 0; i < row.Count; i++)
                    {
                        int j = i + 1;
                        string FTUBENOS = Convert.ToString(row[i][0]);
                        if (FTUBENOS.Length < 13)
                        {
                            FTUBENOS = "0000";
                            string ghsql = string.Format("update T_TPL__packingNUEntry set FTUBENOS='0000' WHERE FID='{0}' and fseq = {1}", Id, j);
                            DBUtils.ExecuteDynamicObject(this.Context, ghsql);
                            string qorcd = khwl + '&' + date + '&' + JobNumber + '&' + FTUBENOS;
                            string upsql = string.Format("update T_TPL__packingNUEntry set FCKQORCD='{2}' WHERE FID='{0}' and fseq = {1}", Id, j, qorcd);
                            DBUtils.ExecuteDynamicObject(this.Context, upsql);
                        }
                        else
                        {
                            string qorcd = khwl + '&' + date + '&' + JobNumber + '&' + FTUBENOS;
                            string upsql = string.Format("update T_TPL__packingNUEntry set FCKQORCD='{2}' WHERE FID='{0}' and fseq = {1}", Id, j, qorcd);
                            DBUtils.ExecuteDynamicObject(this.Context, upsql);
                        }
                    }
            }

        }
    }
}



赞 7