using BWP.B3_YunKen.BO; using BWP.B3Sale.BO; using Forks.EnterpriseServices.BusinessInterfaces; using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.SqlDoms; using System; using System.Collections.Generic; using System.Linq; using System.Text; using TSingSoft.WebPluginFramework.BIPlugins.BLEvents; using TSingSoft.WebPluginFramework; namespace BWP.B3_YunKen.BLActions { public class SaleForecastBLIsSetWrappageActions : IBLMethodAction { //A:根据存货查找【包装物设置】中对应的存货设置 //B:若存货没有在【包装物设置】界面设置包装物,则无法保存。 public string Description { get { return "销售预报设置包装物"; } } public void Execute(IDmoContext context, object dmo, object parameter) { var bill = dmo as SaleForecast; if (bill == null) return; foreach (var detail in bill.Details) { var list = GetGoods_PackageCount(detail.SaleGoods_ID, bill.AccountingUnit_ID); if (list.Count <= 0) { string msg = "存货【" + detail.Goods_Name + "】没有在【产品包装物设置】界面设置包装物"; throw new Exception(msg); } } } //根据存货查找【包装物设置】中对应的存货设置 private List GetGoods_PackageCount(long? goodID, long? accID) { var gpackage = new JoinAlias(typeof(Goods_Package)); var package = new JoinAlias(typeof(Wrappage)); var query = new DQueryDom(gpackage); query.From.AddJoin(JoinType.Left, new DQDmoSource(package), DQCondition.EQ(package, "ID", gpackage, "Package_ID")); query.Columns.Add(DQSelectColumn.Field("Package_ID", gpackage)); //query.Columns.Add(DQSelectColumn.Create(DQExpression.Count(DQExpression.Field(gpackage, "Package_ID")), "Count")); query.GroupBy.Expressions.Add(DQExpression.Field(gpackage, "Package_ID")); query.Where.Conditions.Add(DQCondition.EQ(gpackage, "Goods_ID", goodID)); query.Where.Conditions.Add(DQCondition.EQ(package, "AccountingUnit_ID", accID)); return query.EExecuteList(); } public IList Features { get { return new List(); } } public string Name { get { return "B3_YunKen.销售预报设置包装物"; } } } }