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

【二次开发样例】生产齐套分析单第三方下推直接调拨单或调拨申请单实现样例

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

【二次开发样例】生产齐套分析单第三方下推直接调拨单或调拨申请单实现样例

## 步骤 1.登入集成开发平台,打开单据转换主界面,按源单为【生产用料清单】,目标单为【直接调拨单】过滤,点击【添加】加一个规则,字段映射配置参考规则PRD_PPB2TRANSFERForMAA的设置。如果希望下推的目标单【调拨申请单】,则点击【新建】建立【生产用料清单】至【调拨申请单】的单据转换规则。 ![1.webp](/download/01003a2f08d4383543d8ac32078ac5db87e9.webp) 2.生产齐套分析单加入表单插件,通过出发菜单栏点击事件,调用TransferDirectBuilder.PushTransferDirect方法后台下推生成直接调拨单。注:变量【convertRuleId】是下推指定的转换规则,请完成步骤1的配置,将新加的转换规则的唯一标识替换变量的值。 3.在步骤1新加的转换规则的【插件策略】加入二开插件,处理下推后的调拨数量携带。如果希望下推【调拨申请单】,请按【调拨申请单】的单据模型修改对应的数量字段进行赋值。 ### 样例代码——如何调用单据转换生成直接调拨单 ```csharp using Kingdee.BOS; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Orm; using Kingdee.BOS.Orm.DataEntity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.K3.Core.MFG.EntityHelper; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Util; using Kingdee.K3.MFG.App; using Kingdee.BOS.Core.Metadata.ConvertElement; using Kingdee.BOS.Contracts; using Kingdee.K3.Core.MFG; using Kingdee.BOS.Core.DynamicForm.Operation; using Kingdee.BOS.Core.Interaction; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs; using Kingdee.BOS.Core.Const; using Kingdee.K3.Core.MFG.EnumConst; namespace Kingdee.K3.MFG.PRD.App.Core.Preparation.Match.PushTranferDirect { public class TransferDirectBuilder { const string convertRuleId = "PRD_PPB2TRANSFERForMAA";//指定的单据转换规则 public static void PushTransferDirect(Context ctx, DynamicObject matchBill, IOperationResult result, OperateOption extendOption) { try { var maDetails = GetMADetails(ctx, matchBill); var ruleElement = GetConvertRule(ctx); var billTypePolicyElement = ruleElement.Policies.Where(x => x is BillTypeMapPolicyElement).FirstOrDefault() as BillTypeMapPolicyElement; var bte = billTypePolicyElement.BillTypeMaps.FirstOrDefault(x => x.SourceBillTypeId == "(All)"); List<ListSelectedRow> selectedRows = new List<ListSelectedRow>(); foreach (var maDetail in maDetails) { ListSelectedRow lsr = new ListSelectedRow(maDetail.GetDynamicValue<string>("FPPBomId"), maDetail.GetDynamicValue<string>("FPPBomEntryId"), 0, MFGFormIdConst.SubSys_PRD.PPBOMBill); lsr.EntryEntityKey = CONST_PRD_PPBOM.CONST_FEntity.ENTITY_FEntity; selectedRows.Add(lsr); } if (selectedRows.IsEmpty()) { throw new KDExceptionValidate("PRD_MatchAnalyseBill", Kingdee.BOS.Resource.ResManager.LoadKDString("下推直接调拨单失败", "015075000039189", Kingdee.BOS.Resource.SubSystemType.MFG), Kingdee.BOS.Resource.ResManager.LoadKDString("没有需要下推直接调拨单的用料清单行!", "015075000039190", Kingdee.BOS.Resource.SubSystemType.MFG)); } PushArgs args = new PushArgs(ruleElement, selectedRows.ToArray()); args.TargetBillTypeId = bte.TargetBillTypeId; OperateOption option = OperateOption.Create(); option.SetVariableValue(BOSConst.CST_ConvertValidatePermission, true); option.SetVariableValue("MatchAnalyseData", maDetails); option.SetVariableValue("PMBillNo", matchBill.GetDynamicValue<string>("BillNo")); var pushResult = AppServiceContext.ConvertService.Push(ctx, args, option); if (extendOption.GetVariableValue<string>("PushBillType", "0").EqualsIgnoreCase("1")) { result.FuncResult = pushResult.TargetDataEntities.Select(x => x.DataEntity).ToList(); return; } var saveResult = SaveTargetBills(ctx, pushResult); if (!saveResult.IsSuccess) { saveResult.OperateResult.ToList().ForEach(result.OperateResult.Add); saveResult.ValidationErrors.Select(errorInfo => { var operateResult = new OperateResult() { Message = errorInfo.Message, Name = errorInfo.Title, MessageType = MessageType.FatalError, SuccessStatus = false }; return operateResult; }).ToList().ForEach(result.OperateResult.Add); result.IsSuccess = false; result.OperateResult.Add(new OperateResult() { Message = Kingdee.BOS.Resource.ResManager.LoadKDString("下推单据保存失败,已暂存", "015075000039185", Kingdee.BOS.Resource.SubSystemType.MFG), Name = Kingdee.BOS.Resource.ResManager.LoadKDString("直接调拨单", "015075000039191", Kingdee.BOS.Resource.SubSystemType.MFG), MessageType = MessageType.FatalError, SuccessStatus = false, }); } } catch (KDExceptionValidate ev) { result.IsSuccess = false; result.OperateResult.Add(new OperateResult() { Message = ev.ValidateString, Name = Kingdee.BOS.Resource.ResManager.LoadKDString("直接调拨单", "015075000039191", Kingdee.BOS.Resource.SubSystemType.MFG), MessageType = MessageType.FatalError, SuccessStatus = false, }); result.OperateResult.Add(new OperateResult() { Message = ev.Message, Name = Kingdee.BOS.Resource.ResManager.LoadKDString("直接调拨单", "015075000039191", Kingdee.BOS.Resource.SubSystemType.MFG), MessageType = MessageType.FatalError, SuccessStatus = false, }); } } static DynamicObjectCollection GetMADetails(Context ctx, DynamicObject matchBill) { //勾选分析并有 List<long> moids = (matchBill["Entity"] as DynamicObjectCollection).Where(x => x.GetDynamicValue<bool>("Selected") && x.GetDynamicValue<long>("MoId") > 0 && x.GetDynamicValue<string>("RowType") == "0").Select(x => x.GetDynamicValue<long>("MoId")).Distinct().ToList(); if (moids.IsEmpty()) { throw new KDExceptionValidate("PRD_MatchAnalyseBill", Kingdee.BOS.Resource.ResManager.LoadKDString("下推直接调拨单失败", "015075000039189", Kingdee.BOS.Resource.SubSystemType.MFG), Kingdee.BOS.Resource.ResManager.LoadKDString("没有需要下推直接调拨单的用料清单行!", "015075000039190", Kingdee.BOS.Resource.SubSystemType.MFG)); } long maid = matchBill.GetDynamicValue<long>("Id"); QueryBuilderParemeter qp = new QueryBuilderParemeter { FormId = "PRD_MATCHDETAIL", SelectItems = SelectorItemInfo.CreateItems( "FPPBomEntryId", "FPPBomId", "FBaseW

【二次开发样例】生产齐套分析单第三方下推直接调拨单或调拨申请单实现样例

## 步骤1.登入集成开发平台,打开单据转换主界面,按源单为【生产用料清单】,目标单为【直接调拨单】过滤,点击【添加】加一个规则,字段...
点击下载文档文档为doc格式

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

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