public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); if (e.DataEntitys.Count() < 1) { return; } var dataEntities = e.DataEntitys.ToArray(); foreach (DynamicObject dataEntry in dataEntities) { DynamicObject BillEntry = dataEntry["BillEntry"].AsType <DynamicObjectCollection>().First(); //获取收货通知数据 string OrginBillNo = BillEntry["OriginBillNo"].ToString(); string OriginFormId = "BAH_WMS_InNotice"; FormMetadata meta = MetaDataServiceHelper.Load(this.Context, OriginFormId) as FormMetadata; QueryBuilderParemeter queryParam = new QueryBuilderParemeter(); queryParam.FormId = OriginFormId; queryParam.BusinessInfo = meta.BusinessInfo; queryParam.FilterClauseWihtKey = string.Format(" {0} = '{1}' ", meta.BusinessInfo.GetBillNoField().Key, OrginBillNo); var objs = BusinessDataServiceHelper.Load(this.Context, meta.BusinessInfo.GetDynamicObjectType(), queryParam); if (objs[0]["FBAHGenTargetStatus"].ToString().Equals('B') == true) { throw new Exception(string.Format("编号为{0}的收货通知已生成目标单据,不允许反审核!", OrginBillNo)); } } }
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); if (e.SelectedRows == null || e.SelectedRows.Count <ExtendedDataEntity>() <= 0) { return; } foreach (ExtendedDataEntity current in e.SelectedRows) { DynamicObjectCollection SaleOrderEntry = current.DataEntity["FEntity"] as DynamicObjectCollection; //原因:之前业务A、B 值都为整数,业务上没有小数,处理方案 代码预定保存的时候给去掉 foreach (DynamicObject entry in SaleOrderEntry) { if (entry["F_YJ_TEXT5"] != null) { string[] splits = Convert.ToString(entry["F_YJ_TEXT5"]).Split('.'); entry["F_YJ_TEXT5"] = splits[0]; } if (entry["F_YJ_TEXT6"] != null) { string[] splits = Convert.ToString(entry["F_YJ_TEXT6"]).Split('.'); entry["F_YJ_TEXT6"] = splits[0]; } if (entry["F_YJ_TEXT7"] != null) { string[] splits = Convert.ToString(entry["F_YJ_TEXT7"]).Split('.'); entry["F_YJ_TEXT7"] = splits[0]; } } } }
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); string strSql = "INSERT INTO t_demo_purServTest(FID,FNAME,FCREATEDATE) VALUES(@ID,@NAME,@CREATEDATE)"; List <SqlParam> paras = new List <SqlParam> { new SqlParam("@ID", KDDbType.Int32, DateTime.Now.Second), new SqlParam("@Name", KDDbType.String, "BeforeExecuteOperationTransaction"), new SqlParam("@CREATEDATE", KDDbType.DateTime, DateTime.Now) }; DBUtils.Execute(this.Context, strSql, paras); }
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { oldvaluesfoItem = new List <Dictionary <string, string> >(); //newvaluesfoItem = new List<Dictionary<string, string>>(); string[] arr = new string[e.SelectedRows.Count()]; //DynamicObject[] newData = new DynamicObject[e.SelectedRows.Count()]; for (int i = 0; i < arr.Length; i++) { //获取新值的DataEntity //newData[i] = e.SelectedRows.ElementAt(i).DataEntity; arr[i] = e.SelectedRows.ElementAt(i).DataEntity["id"].ToString(); } DynamicObject[] oldData = BusinessDataServiceHelper.Load(this.Context, arr, BusinessInfo.GetDynamicObjectType()); GetOldOrNewDataList(oldData, oldvaluesfoItem); }
/// <summary> /// 开始获取选中单据信息 /// </summary> /// <param name="e"></param> public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); selectedRows = e.SelectedRows.Select(s => s.DataEntity); foreach (DynamicObject dy in selectedRows) { string Id = Convert.ToString(dy["Id"]); DynamicObject checkObejct = Utils.LoadFIDBillObject(this.Context, "PRD_INSTOCK", Id); string RKTZD = Convert.ToString(checkObejct["F_SZXY_RKTZD"]); if (!RKTZD.IsNullOrEmptyOrWhiteSpace()) IdList.Add(RKTZD); } }
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); decimal allamount = 0; foreach (ExtendedDataEntity extended in e.SelectedRows) { DynamicObject dy = extended.DataEntity; DynamicObjectCollection docPriceEntity = dy["SaleOrderEntry"] as DynamicObjectCollection; foreach (DynamicObject HHentity in docPriceEntity) { if (HHentity["FAllAmount_ZR"] != null) { decimal amount = decimal.Parse(Convert.ToString(HHentity["FAllAmount_ZR"])); allamount = allamount + amount; } } if (dy["FALLdiscount"] != null) { decimal discount = decimal.Parse(dy["FALLdiscount"].ToString()); decimal rpamount = decimal.Parse(dy["FRPAMOUNT"].ToString()); if (rpamount < discount) { //e.CancelMessage = "本次折扣使用总金额不能大于返利余额,终止操作执行!"; throw new KDBusinessException("", "本次折扣使用总金额不能大于返利余额,终止操作执行!"); //e.Cancel = true; } else { //decimal amountL = allamount * (decimal)0.4; //if (amountL < discount) //{ // throw new KDBusinessException("", "本次折扣使用总金额不能超过此订单总金额百分之40,终止操作执行!"); //} } } } }
/// <summary> /// 执行订单保存操作之前 /// </summary> /// <param name="e"></param> /// 客户id = e.SelectedRows[0][DataEntity][custId_Id] /// 整单金额 = e.SelectedRows[0][DataEntity][SaleOrderFinance][0][BillAllAmount] public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { string cust_id = null; decimal allAmount = 0; foreach (ExtendedDataEntity extended in e.SelectedRows) { DynamicObject entity = extended.DataEntity; DynamicObjectCollection finance = entity["SaleOrderFinance"] as DynamicObjectCollection; cust_id = entity["CustId_Id"].ToString(); foreach (DynamicObject fin in finance) { allAmount = Convert.ToDecimal(fin["BillAllAmount"]); } } e.Cancel = true; e.CancelMessage = string.Format("客户id:{0}, 整单金额: {1}, 客户额度:{2}, 客户全部应收: {3}", cust_id, allAmount, LoaCredit(cust_id), $"{LoadCustAR(cust_id):N}"); }
/// <summary> /// 开始获取选中单据信息 /// </summary> /// <param name="e"></param> public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); selectedRows = e.SelectedRows.Select(s => s.DataEntity); }
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { if (e.SelectedRows == null || e.SelectedRows.Count <ExtendedDataEntity>() <= 0) { return; } foreach (ExtendedDataEntity current in e.SelectedRows) { DynamicObjectCollection SaleOrderEntry = current.DataEntity["SaleOrderEntry"] as DynamicObjectCollection; foreach (DynamicObject entry in SaleOrderEntry) { if (entry["MaterialId"] != null) { // MaterialId string strSql = ""; String FNUMBER = ""; String FMATERIALID = ""; FNUMBER = Convert.ToString(((DynamicObject)entry["MaterialId"])["Number"]); FMATERIALID = Convert.ToString(((DynamicObject)entry["MaterialId"])["Id"]); string Strm = "0"; string Stra = "0"; string Strb = "0"; string Strc = "0"; string Strd = "0"; if (getElementLength(FNUMBER, ".") >= 3) { Strm = getElement(FNUMBER, 0, ".") + "." + getElement(FNUMBER, 1, ".") + "." + getElement(FNUMBER, 2, "."); } if (getElementLength(FNUMBER, ".") >= 4) { Stra = getElement(FNUMBER, 3, "."); } if (getElementLength(FNUMBER, ".") >= 5) { Strb = getElement(FNUMBER, 4, "."); } if (getElementLength(FNUMBER, ".") >= 6) { Strc = getElement(FNUMBER, 5, "."); } if (getElementLength(FNUMBER, ".") >= 7) { Strd = getElement(FNUMBER, 6, "."); } if (Stra.Equals("5")) { Stra = "6"; } if (Stra.Equals("6")) { Stra = "5"; } string Strm1 = "0"; string Stra1 = "0"; string Strb1 = "0"; string Strc1 = "0"; string Strd1 = "0"; if (getElementLength(FNUMBER, ".") >= 4) { Strm1 = getElement(FNUMBER, 0, ".") + "." + getElement(FNUMBER, 1, ".") + "." + getElement(FNUMBER, 2, ".") + "." + getElement(FNUMBER, 3, "."); } if (getElementLength(FNUMBER, ".") >= 5) { Stra1 = getElement(FNUMBER, 4, "."); } if (getElementLength(FNUMBER, ".") >= 6) { Strb1 = getElement(FNUMBER, 5, "."); } if (getElementLength(FNUMBER, ".") >= 7) { Strc1 = getElement(FNUMBER, 6, "."); } if (getElementLength(FNUMBER, ".") >= 8) { Strd1 = getElement(FNUMBER, 7, "."); } strSql = string.Format(@"/*dialect*/select FCOSTITEMSTPYE,FPROJECTUNIT,FAREAFORMULA,FMATERIALRANGE,FNAME,FORDEROFVALUE ,F_PAEZ_DECIMAL saleprice from T_PAEZ_MRelatedType tpm inner join T_PAEZ_MRelatedTypeEntry tpme on tpm.FID=tpme.FID inner join PAEZ_t_Cust_Entry100011 a on tpme.FAREAFORMULA=a.fid inner join PAEZ_t_Cust_Entry100011_L b on a.fid=b.fid where FMATERIALRANGE='{0}' or FMATERIALRANGE='{1}' ", Strm, Strm1); DynamicObjectCollection Col = DBUtils.ExecuteDynamicObject(this.Context, strSql); if (Col.Count() > 1) { } else if (Col.Count() == 0) { } else if (Col.Count() == 1) { entry["TaxPrice"] = Convert.ToDecimal(Col[0]["saleprice"]); entry["Price"] = Col[0]["saleprice"]; } } } } }
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); var documentStatusField = this.BusinessInfo.GetField(this.BusinessInfo.GetForm().DocumentStatusFieldKey).AsType <BillStatusField>(); //如果数据状态是审核中,需先执行撤销操作。 { var dataEntities = e.SelectedRows .Select(row => row.DataEntity) .Where(data => data.FieldProperty <string>(documentStatusField).EqualsIgnoreCase(DocumentStatus.Instance.Approving())) .ToArray(); if (dataEntities.Any()) { var result = dataEntities.CancelAssign(this.Context, this.BusinessInfo, this.Option); if (!result.IsSuccess) { e.Cancel = true; e.CancelMessage = string.Concat(e.CancelMessage, result.GetResultMessage()); this.OperationResult.MergeResult(result); } //end if } //end if } //如果数据状态是已审核,需先执行反审核操作。 { var dataEntities = e.SelectedRows .Select(row => row.DataEntity) .Where(data => data.FieldProperty <string>(documentStatusField).EqualsIgnoreCase(DocumentStatus.Instance.Approved())) .ToArray(); if (dataEntities.Any()) { var result = dataEntities.UnAudit(this.Context, this.BusinessInfo, this.Option); if (!result.IsSuccess) { e.Cancel = true; e.CancelMessage = string.Concat(e.CancelMessage, result.GetResultMessage()); this.OperationResult.MergeResult(result); } //end if } //end if } //如果无需中断,则执行暂存+保存操作。 if (!e.Cancel) { var dataEntities = e.SelectedRows .Select(row => row.DataEntity) .ToArray(); //记下重新审核的数据 var reCreatedDataEntities = dataEntities.Where(data => data.FieldProperty <string>(documentStatusField).EqualsIgnoreCase(DocumentStatus.Instance.ReCreated())) .ToArray(); //暂存 if (this.Option.GetCutoffOperation().Adaptive(number => number.IsNullOrEmptyOrWhiteSpace() || number.EqualsIgnoreCase(FormOperationEnum.Draft.ToString()) || number.EqualsIgnoreCase(FormOperationEnum.Save.ToString()) || number.EqualsIgnoreCase(FormOperationEnum.Submit.ToString()) || number.EqualsIgnoreCase(FormOperationEnum.Audit.ToString()))) { if (!this.Option.GetOutOfTransaction()) { dataEntities.ForEach(data => documentStatusField.DynamicProperty.SetValue(data, DocumentStatus.Instance.Draft())); } dataEntities.Draft(this.Context, this.BusinessInfo, this.Option).Adaptive(result => { if (!result.IsSuccess) { this.OperationResult.MergeResult(result); } }); }//end if //保存 if (this.Option.GetOutOfTransaction() && this.Option.GetCutoffOperation().Adaptive(number => number.IsNullOrEmptyOrWhiteSpace() || number.EqualsIgnoreCase(FormOperationEnum.Save.ToString()) || number.EqualsIgnoreCase(FormOperationEnum.Submit.ToString()) || number.EqualsIgnoreCase(FormOperationEnum.Audit.ToString()))) { reCreatedDataEntities.ForEach(data => documentStatusField.DynamicProperty.SetValue(data, DocumentStatus.Instance.ReCreated())); dataEntities.Save(this.Context, this.BusinessInfo, this.Option).Adaptive(result => { if (!result.IsSuccess) { e.Cancel = true; e.CancelMessage = string.Concat(e.CancelMessage, result.GetResultMessage()); this.OperationResult.MergeResult(result); } //end if }); } //end if } //end if } //end method
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); IEnumerable <ExtendedDataEntity> extendedDataEntities = e.SelectedRows; foreach (ExtendedDataEntity extendedDataEntity in extendedDataEntities) { DynamicObject billInfo = extendedDataEntity.DataEntity; DynamicObject bomInfor = billInfo["FBOMID"] as DynamicObject; if (bomInfor == null) { continue; } DynamicObjectCollection subItemInfo = bomInfor["TreeEntity"] as DynamicObjectCollection; if (subItemInfo == null || subItemInfo.Count == 0) { continue; } DynamicObjectCollection entryRows = billInfo["PPBomEntry"] as DynamicObjectCollection; if (entryRows == null || entryRows.Count == 0) { continue; } foreach (var item in entryRows) { decimal qty = Convert.ToDecimal(item["FJNUnitEnzymes"]); if (qty > 0) { continue; } var subQty = subItemInfo.FirstOrDefault(f => f["MATERIALIDCHILD_Id"].ToString() == item["MaterialID_Id"].ToString() && f["AuxPropID_Id"].ToString() == item["AuxPropId_Id"].ToString()); if (subQty != null) { var jnqty = Convert.ToDecimal(subQty["FJNCompanyEA"]); var bomQty = Convert.ToDecimal(item["F_JN_BOMQty"]); item["FJNUnitEnzymes"] = jnqty; item["F_JN_EnzymeSumQty"] = jnqty * bomQty; continue; } subQty = subItemInfo.FirstOrDefault(f => f["MATERIALIDCHILD_Id"].ToString() == item["MaterialID_Id"].ToString()); if (subQty != null) { var jnqty = Convert.ToDecimal(subQty["FJNCompanyEA"]); var bomQty = Convert.ToDecimal(item["F_JN_BOMQty"]); item["FJNUnitEnzymes"] = jnqty; item["F_JN_EnzymeSumQty"] = jnqty * bomQty; } } } }
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); HashSet <string> poBillNos = new HashSet <string>(); Entity entity = this.BusinessInfo.GetEntity("FInStockEntry"); Entity linkEntry = this.BusinessInfo.GetEntity("FInStockEntry_Link"); Field fldSrcFormId = this.BusinessInfo.GetField("FSRCBILLTYPEID"); Field fldSrcBillNo = this.BusinessInfo.GetField("FSrcBillNo"); // 对单据体进行循环,取关联的源单编号 foreach (var billObj in e.SelectedRows) { DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity) as DynamicObjectCollection; foreach (var entryRow in entryRows) { string srcFormId = fldSrcFormId.DynamicProperty.GetValue <string>(entryRow); string srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue <string>(entryRow); if (string.IsNullOrWhiteSpace(srcFormId) || !srcFormId.EqualsIgnoreCase(POFormId)) {// 源单不是采购订单,略过 continue; } // 源单编号已经登记,不再重复记录,略过 if (poBillNos.Contains(srcSrcBillNo)) { continue; } // Link已经记录了源单信息,略过 DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow) as DynamicObjectCollection; if (linkRows.Count > 0) { continue; } poBillNos.Add(srcSrcBillNo); } } if (poBillNos.Count == 0) { return; } DynamicObject[] poObjs = this.LoadPurchaseOrder(poBillNos); if (poObjs == null || poObjs.Length == 0) { return; } Dictionary <string, Dictionary <string, DynamicObject> > dctAllBills = this.BuildDictionary(poObjs); string srcTableNumber = this.GetPOEntryTableNumber(); List <DynamicObject> allNewLinkRows = new List <DynamicObject>(); // 循环单据体,为单据体,建立起源单关联信息: foreach (var billObj in e.SelectedRows) { DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity) as DynamicObjectCollection; foreach (var entryRow in entryRows) { string srcFormId = fldSrcFormId.DynamicProperty.GetValue <string>(entryRow); string srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue <string>(entryRow); if (string.IsNullOrWhiteSpace(srcFormId) || !srcFormId.EqualsIgnoreCase(POFormId)) {// 源单不是采购订单,略过 continue; } Dictionary <string, DynamicObject> dctOneBill = null; if (dctAllBills.TryGetValue(srcSrcBillNo, out dctOneBill) == false) { continue; } DynamicObject materialObj = entryRow["MaterialId"] as DynamicObject; if (materialObj == null) { continue; } string materialNumber = Convert.ToString(materialObj["number"]); DynamicObject srcRow = null; if (dctOneBill.TryGetValue(materialNumber, out srcRow) == false) { continue; } // Link已经记录了源单信息,略过 DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow) as DynamicObjectCollection; if (linkRows.Count > 0) { continue; } DynamicObject linkRow = new DynamicObject(linkEntry.DynamicObjectType); linkRow["STableName"] = srcTableNumber; this.FillLinkRow(srcRow, entryRow, linkRow); linkRows.Add(linkRow); allNewLinkRows.Add(linkRow); } } // 为新建的源单关联信息,设置内码 IDBService dbService = ServiceHelper.GetService <IDBService>(); dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType); }
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) { base.BeforeExecuteOperationTransaction(e); }