如何二开支持从委外发出的工序转移单下推委外接收的工序转移单

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何二开支持从委外发出的工序转移单下推委外接收的工序转移单

【应用场景】

委外发出的工序转移单审核之后可以支持从委外发出的工序转移单下推委外接收的工序转移单


【实现步骤】

<1>需要二开工序转移单的元数据,在工序转移单上菜单新增一个按钮用来下推转移单

<2>需要新增二开插件用来处理下推逻辑,如图所示

需要继承插件(OperationTransferEdit)然后重写BarItemClick的方法

代码示例如下:实现的场景是在工序委外发出的工序转移单编辑界面点击下推生成委外接收的工序转移单,并且提交和审核。

public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);

            switch (e.BarItemKey)
            {
                case "tbButton_1"://下推
                    DynamicObject transBill = PushToSingleTrans(Convert.ToString(this.View.Model.DataObject["SrcOptPlanId"]), Convert.ToString(this.View.Model.DataObject["InOperId"]), 1);
                    FormMetadata metadata = MetaDataServiceHelper.Load(this.Context, MFGFormIdConst.SubSys_SFC.OperationTransfer) as FormMetadata;
                    List<DynamicObject> lstObj = new List<DynamicObject>();
                    lstObj.Add(transBill);
                    IOperationResult result =BillOperationUtil.SaveBillDatasByService(Context, metadata.BusinessInfo, lstObj.ToArray(), null);
            
                    break;
                default:
                    break;
            }
        }

private DynamicObject PushToSingleTrans(string opId, string opDetailId, int rowIndex)
        {
            ListSelectedRow row = new ListSelectedRow(opId, opDetailId, rowIndex, MFGFormIdConst.SubSys_SFC.OperationPlanning);
            row.EntryEntityKey = CONST_SFC_OperationPlanning.CONST_FSubEntity.ENTITY_FSubEntity;
            row.FieldValues.Add(CONST_SFC_OperationPlanning.CONST_FSubEntity.ENTITY_FSubEntity, opDetailId);
            ListSelectedRow[] selectedRows = new ListSelectedRow[] { row };
            List<ConvertRuleElement> rules = ConvertServiceHelper.GetConvertRules(this.Context, "SFC_OperationPlanning", "SFC_OperationTransfer");
            ConvertRuleElement rule = new ConvertRuleElement();
            if (rules != null && rules.Count > 1)
            {
                // 单据转换标识
                string ruleNumber = "SFC_OPTPLAN2OPTTRANSFER(OPEROUT)";
                rule = rules.Find(f => ruleNumber.Equals(f.Id));
            }
            else
            {
                rule = null;
            }

            if (rule == null)
            {
                this.View.ShowMessage("操作失败!没有找到工序转出单据转换规则!");
                return null;
            }
            PushArgs pushArgs = new PushArgs(rule, selectedRows)
            {
                // 设定目标单据单据类型:工序转移单据转移类型
                TargetBillTypeId = "005056a03950b50f11e3b629519a94c7"
            };
            ConvertOperationResult operationResult = null;
            try
            {
                operationResult = ConvertServiceHelper.Push(this.Context, pushArgs, false);
            }
            catch (Exception e)
            {
                this.View.ShowErrMessage(e.Message);
                return null;
            }

            if (!operationResult.IsSuccess)
            {
                string errMsg = string.Join(",", operationResult.ValidationErrors.Select(s => s.Message));
                this.View.ShowMessage("失败!" + errMsg);
                return null;
            }
            return operationResult.TargetDataEntities.Select(o => o.DataEntity).FirstOrDefault();
        }




<3>BOSIDE扩展,注册表单插件,保存元数据,开发完毕。




【参考资料】

【二开案例.基础资料.联动查询(GetValue)】

https://vip.kingdee.com/article/127710528226504960



【金蝶云星空BOS二次开发案例演示】

https://vip.kingdee.com/article/94751030918525696



如何二开支持从委外发出的工序转移单下推委外接收的工序转移单

【应用场景】委外发出的工序转移单审核之后可以支持从委外发出的工序转移单下推委外接收的工序转移单【实现步骤】<1>需要二开工序转移单的...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息