电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

代码实现单据转换

来源:金蝶云社区作者:金蝶2024-09-167

代码实现单据转换

场景描述:工序计划列表点击按钮直接生成一张对应的工序汇报

代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ComponentModel;

using Kingdee.BOS;

using Kingdee.BOS.Util;

using Kingdee.BOS.Core;

using Kingdee.BOS.Core.DynamicForm;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Core.Bill;

using Kingdee.BOS.Core.Metadata;

using Kingdee.BOS.Core.List;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.Core.SqlBuilder;

using Kingdee.BOS.ServiceHelper;

using Kingdee.BOS.Core.List.PlugIn;

using Kingdee.BOS.Contracts;

using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;

using Kingdee.BOS.Core.DynamicForm.Operation;

using Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs;


namespace HL.K3.TwoPhase.Business.Plugin

{

    [Description("工序计划列表开工按钮插件")]

    [Kingdee.BOS.Util.HotUpdate]

    public class ProductReportListButton:AbstractListPlugIn

    {


        /// <summary>

        /// 设置行高

        /// </summary>

        /// <param name="e"></param>

        //public override void OnLoad(EventArgs e)

        //{

        //    base.OnLoad(e);


        //    this.View.GetControl<EntryGrid>("FLIST").SetRowHeight(30);

        //}



        /// <summary>

        /// 按钮点击后功能处理

        /// </summary>

        /// <param name="e"></param>

        public override void AfterBarItemClick(AfterBarItemClickEventArgs e)

        {


            base.AfterBarItemClick(e);

            switch (e.BarItemKey)

            {

                case "tbButtonRep"://报工按钮

                    ReportedMonthod();

                    break;

                

            }

        }

        /// <summary>

        /// 

        /// 报工产生一张对应得工序汇报

        /// </summary>

        private void ReportedMonthod()

        {

            //获取选中行数据

            ListSelectedRowCollection rows = this.ListView.SelectedRowsInfo;

            if (rows.Count>=2)

            {

                throw new Exception("只能选中一行进行开工!!");

            }

            //string key = rows[0].PrimaryKeyValue;

            //FormMetadata formMetadata = MetaDataServiceHelper.Load(this.Context, "SFC_OperationPlanning") as FormMetadata;

            //DynamicObject dynamicObject = BusinessDataServiceHelper.LoadSingle(

            //                 this.Context,

            //                 key,

            //                 formMetadata.BusinessInfo.GetDynamicObjectType()); 

            //long targetOrgId = Convert.ToInt64(dynamicObject["SubEntity"]);

            var rules = ConvertServiceHelper.GetConvertRules(this.View.Context, "SFC_OperationPlanning", "SFC_OperationReport");

            var rule = rules.FirstOrDefault(t => t.IsDefault);

            // 获取在列表上当前选择需下推的行

            ListSelectedRow[] selectedRows = ((IListView)this.View).SelectedRowsInfo.ToArray();

            long targetOrgId =Convert.ToInt64(selectedRows[0].DataRow["FProcessId_Id"]);

            Int32 FOPERSTATUS = Convert.ToInt32(selectedRows[0].DataRow["FOPERSTATUS"]);

            if (FOPERSTATUS==5)

            {

                throw new Exception("已经是完工状态不需报工!!");

            }

            if (FOPERSTATUS == 3)

            {

                throw new Exception("该工序计划是下达状态请先开工才能报工!!");

            }

            // 如下代码为单据上获取当前当前选择行

            // string primaryKeyValue = ((IBillView)this.View).Model.GetPKValue().ToString();

            // ListSelectedRow row = new ListSelectedRow(primaryKeyValue, string.Empty, 0, this.View.BillBusinessInfo.GetForm().Id);

            // ListSelectedRow[] selectedRows = new ListSelectedRow[] { row };

            // 调用下推服务,生成下游单据数据包

            ConvertOperationResult operationResult = null;

            Dictionary<string, object> option = new Dictionary<string, object>();

            try

            {

                PushArgs pushArgs = new PushArgs(rule, selectedRows)

                {

                    TargetBillTypeId = "001f29d2c9af844211e342cba3aaa38c",     // 工序汇报入库

                    TargetOrgId = targetOrgId,            // 请设定目标单据主业务组织

                    CustomParams = option,     // 可以传递额外附加的参数给单据转换插件

                };

                //执行下推操作,并获取下推结果

                operationResult = ConvertServiceHelper.Push(this.View.Context, pushArgs, null);

            }

            catch (KDExceptionValidate ex)

            {

                this.View.ShowErrMessage(ex.Message, ex.ValidateString);

   

代码实现单据转换

场景描述:工序计划列表点击按钮直接生成一张对应的工序汇报代码:using System;using System.Collections.Generic;using System.Linq;u...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信