/// <summary> /// 主单据体的字段携带完毕,与源单的关联关系创建好之后,触发此事件 /// </summary> /// <param name="e"></param> public override void OnAfterCreateLink(CreateLinkEventArgs e) { // 预先获取一些必要的元数据,后续代码要用到: // 源单第二单据体 Entity srcSecondEntity = e.SourceBusinessInfo.GetEntity("F_PAEZ_OtherEntity"); // 目标单第一单据体 Entity destMainEntity = e.TargetBusinessInfo.GetEntity("FEntity"); // 目标单第二单据体 Entity destSecondEntity = e.TargetBusinessInfo.GetEntity("F_PAEZ_OtherEntity"); // 目标单关联子单据体 Entity linkEntity = null; Form form = e.TargetBusinessInfo.GetForm(); if (form.LinkSet != null && form.LinkSet.LinkEntitys != null && form.LinkSet.LinkEntitys.Count != 0) { linkEntity = e.TargetBusinessInfo.GetEntity( form.LinkSet.LinkEntitys[0].Key); } if (linkEntity == null) { return; } // 获取生成的全部下游单据 ExtendedDataEntity[] billDataEntitys = e.TargetExtendedDataEntities.FindByEntityKey("FBillHead"); // 对下游单据,逐张单据进行处理 foreach (var item in billDataEntitys) { DynamicObject destBillObject = item.DataEntity; // 定义一个集合,用于收集本单对应的源单内码 HashSet <long> srcBillIds = new HashSet <long>(); // 开始到主单据体中,读取关联的源单内码 DynamicObjectCollection destMainEntryRows = destMainEntity.DynamicProperty.GetValue(destBillObject) as DynamicObjectCollection; foreach (var mainEntityRow in destMainEntryRows) { DynamicObjectCollection linkRows = linkEntity.DynamicProperty.GetValue(mainEntityRow) as DynamicObjectCollection; foreach (var linkRow in linkRows) { long srcBillId = Convert.ToInt64(linkRow["SBillId"]); if (srcBillId != 0 && srcBillIds.Contains(srcBillId) == false) { srcBillIds.Add(srcBillId); } } } if (srcBillIds.Count == 0) { continue; } // 开始加载源单第二单据体上的字段 // 确定需要加载的源单字段(仅加载需要携带的字段) List <SelectorItemInfo> selector = new List <SelectorItemInfo>(); selector.Add(new SelectorItemInfo("F_PAEZ_Desc")); // TODO: 继续添加其他需要携带的字段,示例代码略 // 设置过滤条件 string filter = string.Format(" {0} IN ({1}) ", e.SourceBusinessInfo.GetForm().PkFieldName, string.Join(",", srcBillIds)); OQLFilter filterObj = OQLFilter.CreateHeadEntityFilter(filter); // 读取源单 IViewService viewService = ServiceHelper.GetService <IViewService>(); var srcBillObjs = viewService.Load(this.Context, e.SourceBusinessInfo.GetForm().Id, selector, filterObj); // 开始把源单单据体数据,填写到目标单上 DynamicObjectCollection destSecondEntryRows = destSecondEntity.DynamicProperty.GetValue(destBillObject) as DynamicObjectCollection; destSecondEntryRows.Clear(); // 删除空行 foreach (var srcBillObj in srcBillObjs) { DynamicObjectCollection srcEntryRows = srcSecondEntity.DynamicProperty.GetValue(srcBillObj) as DynamicObjectCollection; foreach (var srcEntryRow in srcEntryRows) { // 目标单添加新行,并接受源单字段值 DynamicObject newRow = new DynamicObject(destSecondEntity.DynamicObjectType); destSecondEntryRows.Add(newRow); // 填写字段值 newRow["F_PAEZ_Desc"] = srcEntryRow["F_PAEZ_Desc"]; // TODO: 逐个填写其他字段值,示例代码略 } } } }
public override void EndOperationTransaction(BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs e) { lotIds.Clear(); List <SqlObject> sqlList = new List <SqlObject>(); foreach (var item in e.DataEntitys) { string formId = ""; if (item.DynamicObjectType.Name.Equals("InvInit")) { formId = "STK_InvInit"; } else { formId = item["FFormId"].ToString(); } DynamicObjectCollection details = null; switch (formId) { case "STK_MISCELLANEOUS": details = item["STK_MISCELLANEOUSENTRY"] as DynamicObjectCollection; break; case "STK_InStock": details = item["InStockEntry"] as DynamicObjectCollection; break; case "SP_InStock": details = item["Entity"] as DynamicObjectCollection; break; case "STK_OEMInStock": details = item["OEMInStockEntry"] as DynamicObjectCollection; break; case "STK_InitInStock": details = item["InitInStockEntry"] as DynamicObjectCollection; break; case "STK_InvInit": details = item["InvInitDetail"] as DynamicObjectCollection; break; default: break; } if (details == null) { return; } foreach (var entryItem in details) { Object lotObj = entryItem["LOT"]; if (null != lotObj && Convert.ToInt16((lotObj as DynamicObject)["BizType"]) == 1) { sqlList.Add(this.getSqlParams(formId, entryItem, item)); } } } if (sqlList.Count > 0 && lotIds.Count > 0) { DBUtils.ExecuteBatch(this.Context, sqlList); string filter = string.Format("FLOTID IN ({0})", string.Join(",", lotIds)); OQLFilter of = OQLFilter.CreateHeadEntityFilter(filter); DynamicObject[] lotMasters = BusinessDataServiceHelper.Load(this.Context, "BD_BatchMainFile", null, of); ISaveService service = Kingdee.BOS.App.ServiceHelper.GetService <ISaveService>(); service.Save(this.Context, lotMasters); } }
/// <summary> /// 获取用户 /// </summary> /// <param name="userID"></param> /// <returns></returns> DynamicObject GetUser(string userID) { OQLFilter filter = OQLFilter.CreateHeadEntityFilter(string.Format("FUSERID={0}", userID)); return(BusinessDataServiceHelper.Load(this.View.Context, FormIdConst.SEC_User, null, filter).FirstOrDefault()); }
/// <summary> /// 主单据体的字段携带完毕,与源单的关联关系创建好之后,触发此事件 /// </summary> /// <param name="e"></param> public override void OnAfterCreateLink(CreateLinkEventArgs e) { base.OnAfterCreateLink(e); //预先获取一些必要的元数据,后续代码要用到 //源单第一单据体 Entity srcFirstEntity = e.SourceBusinessInfo.GetEntity("FEntity"); //目标单第一单据体 Entity mainEntity = e.TargetBusinessInfo.GetEntity("FEntityDetail"); // 目标单关联子单据体 Entity linkEntity = null; Form form = e.TargetBusinessInfo.GetForm(); if (form.LinkSet != null && form.LinkSet.LinkEntitys != null && form.LinkSet.LinkEntitys.Count != 0) { linkEntity = e.TargetBusinessInfo.GetEntity( form.LinkSet.LinkEntitys[0].Key); } if (linkEntity == null) { return; } // 获取生成的全部下游单据 ExtendedDataEntity[] billDataEntitys = e.TargetExtendedDataEntities.FindByEntityKey("FBillHead"); // 对下游单据,逐张单据进行处理 foreach (var item in billDataEntitys) { DynamicObject dataObject = item.DataEntity; // 定义一个集合,用于收集本单对应的源单内码 HashSet <long> srcBillIds = new HashSet <long>(); // 开始到主单据体中,读取关联的源单内码 DynamicObjectCollection mainEntryRows = mainEntity.DynamicProperty.GetValue(dataObject) as DynamicObjectCollection; DynamicObject mainEntityRow = mainEntryRows[0]; DynamicObjectCollection linkRows = linkEntity.DynamicProperty.GetValue(mainEntityRow) as DynamicObjectCollection; long srcBillId = Convert.ToInt64(linkRows[0]["SBillId"]); if (srcBillId != 0 && srcBillIds.Contains(srcBillId) == false) { srcBillIds.Add(srcBillId); } if (srcBillIds.Count == 0) { continue; } #region 隐藏 //foreach (var mainEntityRow in mainEntryRows) //{ // DynamicObjectCollection linkRows = // linkEntity.DynamicProperty.GetValue(mainEntityRow) as DynamicObjectCollection; // foreach (var linkRow in linkRows) // { // long srcBillId = Convert.ToInt64(linkRow["SBillId"]); // if (srcBillId != 0 // && srcBillIds.Contains(srcBillId) == false) // { // srcBillIds.Add(srcBillId); // } // } //} //if (srcBillIds.Count == 0) //{ // continue; //} #endregion // 开始加载源单第二单据体上的字段 // 确定需要加载的源单字段(仅加载需要携带的字段) List <SelectorItemInfo> selector = new List <SelectorItemInfo>(); selector.Add(new SelectorItemInfo("FDate")); //日期 selector.Add(new SelectorItemInfo("FCustomerID")); //客户 selector.Add(new SelectorItemInfo("FSaleDeptID")); //销售部门 selector.Add(new SelectorItemInfo("FMaterialID")); //物料 selector.Add(new SelectorItemInfo("FTaxPrice")); //含税单价 // TODO: 继续添加其他需要携带的字段,示例代码略 // 设置过滤条件 string filter = string.Format(" {0} IN ({1}) ", e.SourceBusinessInfo.GetForm().PkFieldName, string.Join(",", srcBillIds)); OQLFilter filterObj = OQLFilter.CreateHeadEntityFilter(filter); // 读取源单 Kingdee.BOS.Contracts.IViewService viewService = Kingdee.BOS.App.ServiceHelper.GetService <Kingdee.BOS.Contracts.IViewService>(); var srcBillObjs = viewService.Load(this.Context, e.SourceBusinessInfo.GetForm().Id, selector, filterObj); #region 隐藏 // 开始把源单单据体数据,填写到目标单上 //DynamicObjectCollection secondEntryRows = // secondEntity.DynamicProperty.GetValue(dataObject) as DynamicObjectCollection; //secondEntryRows.Clear(); // 删除空行 #endregion foreach (DynamicObject srcBillObj in srcBillObjs) { DynamicObject dept = srcBillObj["SaleDeptID"] as DynamicObject; //销售部门 DynamicObject Cust = srcBillObj["CustomerID"] as DynamicObject; //客户 //bool isRight = !Cust["FKHBD"].Equals("1") && !Cust["FKHBD"].Equals("2") ? Convert.ToInt32(Cust["FSAP"]) == 2 : Convert.ToInt32(Cust["FKHBD"]) == 1 ? true: Convert.ToInt32(Cust["FKHBD"]) == 2 ? true:false; //补差、丢货或者客户结算方式是现金 bool isRight = (Cust["FKHBD"].Equals("1") || Cust["FKHBD"].Equals("2")) ? true : Convert.ToInt32(Cust["FSAP"]) == 2 ? true : false; //if ((Convert.ToInt32(Cust["FSAP"]) == 2 || Convert.ToInt32(Cust["FKHBD"]) == 1 || Convert.ToInt32(Cust["FKHBD"]) == 2) && Convert.ToInt32(dept["FDEPTTYPE"]) == 4) if (isRight && Convert.ToInt32(dept["FDEPTTYPE"]) == 4)//部门类别外埠 { //外埠现金客户执行销售政策折扣 Dictionary <string, double> disCounts = TLMBServiceHelper.GetDiscounts(base.Context, Convert.ToInt64(dept["id"]), Convert.ToDateTime(srcBillObj["Date"])); //遍历应收单,通过销售折扣计算折后的含税单价赋值。 foreach (DynamicObject mainEntryRow in mainEntryRows) { double discount = 0.0; if (disCounts.TryGetValue(Convert.ToString(((DynamicObject)mainEntryRow["MATERIALID"])["FWLFL"]), out discount)) { double ZK = Convert.ToDouble(disCounts["" + Convert.ToString(((DynamicObject)mainEntryRow["MATERIALID"])["FWLFL"]) + ""]); mainEntryRow["TaxPrice"] = Convert.ToDouble(mainEntryRow["TaxPrice"]) * ZK; mainEntryRow["F_PAEZ_DisCount"] = ZK; } } } //DynamicObjectCollection srcEntryRows = // srcSecondEntity.DynamicProperty.GetValue(srcBillObj) as DynamicObjectCollection; //foreach (var srcEntryRow in srcEntryRows) //{ // // 目标单添加新行,并接受源单字段值 // DynamicObject newRow = new DynamicObject(secondEntity.DynamicObjectType); // secondEntryRows.Add(newRow); // // 填写字段值 // newRow["F_JD_Text"] = srcEntryRow["F_JD_Text"]; // // TODO: 逐个填写其他字段值,示例代码略 //} } } }
public override void ButtonClick(BOS.Core.DynamicForm.PlugIn.Args.ButtonClickEventArgs e) { base.ButtonClick(e); string PformId = this.View.BillBusinessInfo.GetForm().Id; switch (PformId) { case "STK_InStock": //采购入库 tableName = "T_STK_INSTOCKENTRY"; break; case "STK_MISCELLANEOUS": //其他入库 tableName = "T_STK_MISCELLANEOUSENTRY"; break; case "SP_InStock": //简单生产入库 tableName = "T_SP_INSTOCKENTRY"; break; case "STK_InitInStock": //期初采购入库 tableName = "T_STK_INITINSTOCKENTRY"; break; case "STK_OEMInStock": //受托加工材料入库 tableName = "T_STK_OEMINSTOCKENTRY"; break; case "STK_InvInit": tableName = "T_STK_INVINITDETAIL"; break; default: break; } //string a; //if ((a = e.Key.ToUpper()) != null) //{ // if (!(a == "FBTNCONFIRM")) // { // if (a == "FBTNCANCEL") // { // this.View.Close(); // } // } // else // { //value = this.View.Model.GetValue("F_BEM_QANO"); //if (value == null) //{ // this.View.ShowMessage("请输入质保书号"); // return; //} if (!lotIds.IsEmpty() && !lotIds.Equals("0")) { string filter = string.Format("FLOTID IN ('{0}')", lotIds); OQLFilter of = OQLFilter.CreateHeadEntityFilter(filter); var lotMasters = BusinessDataServiceHelper.Load(this.Context, "BD_BatchMainFile", null, of); foreach (var lot in lotMasters) { lot["F_QANo"] = value; } ISaveService service = Kingdee.BOS.App.ServiceHelper.GetService <ISaveService>(); service.Save(this.Context, lotMasters); updateSqls.Add(string.Format(@"UPDATE {0} set F_QANo ='{1}' WHERE flot in ('{2}') ", tableName, value, lotIds)); } if (!ids.IsEmpty()) { updateSqls.Add(string.Format(@"UPDATE {0} set F_QANo ='{1}' WHERE fid in ('{2}') ", tableName, value, ids)); } else if (!entryIds.IsEmpty()) { updateSqls.Add(string.Format(@"UPDATE {0} set F_QANo ='{1}' WHERE fentryid in ('{2}') ", tableName, value, entryIds)); } DBUtils.ExecuteBatch(this.Context, updateSqls, updateSqls.Count); //} //返回值到父窗口 // this.View.ReturnToParentWindow("true"); this.View.Close(); }