public override void DataChanged(DataChangedEventArgs e) { base.DataChanged(e); String key = e.Field.Key.ToUpperInvariant(); long custId; long orgid; //实发数量发生变化,判断是否是赠品,如果是赠品取赠品价格 if (key == "FREALQTY" && Convert.ToInt32(e.NewValue) != 0) { DynamicObject SalOrg = this.Model.GetValue("FSALEORGID") as DynamicObject; DynamicObject CustObject = this.Model.GetValue("FCustomerID") as DynamicObject; if (CustObject != null && SalOrg != null) { custId = Convert.ToInt64(CustObject["id"]); orgid = Convert.ToInt64(SalOrg["id"]); } Dictionary <int, double> priceDictionary = TLMBServiceHelper.GetPriceDictionary(this.Context, Convert.ToDateTime(this.Model.GetValue("FDate")).ToShortDateString(), custId, orgid); if (this.Model.GetValue("FISTASTE", e.Row) != null && this.Model.GetValue("FISTASTE", e.Row).ToString() != "" && this.Model.GetValue("FISTASTE", e.Row).ToString() != " ") { DynamicObject MaterObject1 = this.Model.GetValue("FMaterialId", e.Row) as DynamicObject; int FMaterialId = Convert.ToInt32(MaterObject1["id"]); double price = priceDictionary[FMaterialId]; this.Model.SetValue("FTAXPRICE", price, e.Row); this.Model.SetValue("FPRICE", price / 1.16, e.Row); } } }
public override void EndOperationTransaction(EndOperationTransactionArgs e) { base.EndOperationTransaction(e); if (e.DataEntitys != null && e.DataEntitys.Count <DynamicObject>() > 0) { foreach (DynamicObject item in e.DataEntitys) { string custId = Convert.ToString(item["FCUSTID_ID"]); string[] pkIds = new string[] { custId }; TLMBServiceHelper.SetState(this.Context, "BD_Customer", pkIds, "FCUSTID", "T_BD_CUSTOMER", "FForbidStatus", "B"); } } }
/// <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: 逐个填写其他字段值,示例代码略 //} } } }