diff --git a/B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.cs b/B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.cs index 59514ad..1d924e2 100644 --- a/B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.cs +++ b/B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Drawing; +using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; @@ -14,6 +15,8 @@ using BWP.B3Frameworks.Utils; using BWP.B3Sale.BO; using BWP.B3Sale.Utils; using BWP.B3UnitedInfos; +using BWP.B3UnitedInfos.AvailableStroage; +using BWP.B3UnitedInfos.BL; using BWP.B3UnitedInfos.BO; using BWP.Web.Layout; using BWP.Web.Utils; @@ -34,7 +37,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { class SaleOrderUpdateList : AppBasePage { QueryContainer _queryContainer; readonly DFInfo _dFInfo = DFInfo.Get(typeof(Order)); - private DFChoiceBox _goodsPropertyCatalog,_liuchengfenlei; + private DFChoiceBox _goodsPropertyCatalog, _liuchengfenlei; private ChoiceBox _goodsProperty; private HiddenField hidden; private DFChoiceBox _storeInput, _accInput, _customerCatalogt, _customerInput; @@ -158,9 +161,9 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { _grid.Columns.Add(new DFBrowseGridColumn("GoodsProperty_Name")); _grid.Columns.Add(new DFBrowseGridColumn("UnitNum")); - _grid.Columns.Add(new DFBrowseGridColumn("库存数量")); + _grid.Columns.Add(new DFBrowseGridColumn("可用库存")); _grid.Columns.Add(new DFBrowseGridColumn("测算数量")); - _grid.Columns.Add(new DFBrowseGridColumn("可用数量")); + _grid.Columns.Add(new DFBrowseGridColumn("可用与预算合计")); _grid.Columns.Add(new DFBrowseGridColumn("预计剩余数量")); _grid.Columns.Add(new DFBrowseGridColumn("预计剩余头数")); _grid.OnDetailDataBound += (htmlRow, dataRow, o) => { @@ -168,7 +171,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { if (row == null) return; var diff = (decimal?)row["预计剩余数量"]; - + AddLinkBt(o, row, 5, diff, htmlRow); AddLinkBt(o, row, 6, diff, htmlRow); }; @@ -177,19 +180,16 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { } - private void AddLinkBt(int o, DFDataRow row, int numberIndext, decimal? diff, HtmlTableRow htmlRow) - { + private void AddLinkBt(int o, DFDataRow row, int numberIndext, decimal? diff, HtmlTableRow htmlRow) { var bt = new DialogButton(); bt.CssClass = "btn"; bt.Text = htmlRow.Cells[numberIndext].InnerText; - if (o%2 != 1) - { + if (o % 2 != 1) { bt.CssClass = "btn evenbtn"; } - if (diff < 0) - { + if (diff < 0) { bt.BorderStyle = BorderStyle.Solid; bt.BorderColor = Color.Red; bt.BorderWidth = 1; @@ -198,8 +198,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { htmlRow.Cells[numberIndext].Controls.Add(bt); - var idField = (long?) row["GoodsProperty_ID"]; - var number = ((decimal?) row["可用数量"]) ?? 0; + var idField = (long?)row["GoodsProperty_ID"]; + var number = ((Money?)row["可用库存"]) ?? 0; var url = AspUtil.UpdateUrlParam("SaleOrderUpdateEdit.aspx", "GoodsProperty_ID", (idField ?? 0).ToString()); url = AspUtil.UpdateUrlParam(url, "number", number.ToString()); url = AspUtil.UpdateUrlParam(url, "cacheid", "'+__DFContainer.getValue('$HiddenField01')+'"); @@ -227,8 +227,13 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { var outputConfig = new JoinAlias(typeof(OutputConfigTmp)); var dom = new DQueryDom(bill); OrganizationUtil.RegisterOrganizationQueryTable(dom); + var context = new AvailableStorageContext { Usage = StorageUsage.Sale }; + + //注册可用库存查询 + AvailableStorageUtil.RegisgterAvaliableStorageUnionTable(dom, context); + //汇总可用库存 + RegisgterAvaliableStorageSumTable(dom); dom.RegisterQueryTable(typeof(OrderTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber", "UnitNum" }, GetOrderDQueryDom()); - dom.RegisterQueryTable(typeof(StoreDetailTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber" }, GetStoreDetailDQueryDom()); dom.RegisterQueryTable(typeof(OutputTmp), new[] { "GoodsProperty_ID", "Number" }, GetOutputDQueryDom()); dom.RegisterQueryTable(typeof(OutputConfigTmp), new[] { "GoodsProperty_ID", "Number" }, GetOutputConfigureDom()); dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(bill, "GoodsProperty_ID", goodsProperty, "ID")); @@ -239,10 +244,10 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { dom.Columns.Add(DQSelectColumn.Field("GoodsProperty_Name", bill)); dom.Columns.Add(DQSelectColumn.Field("UnitNum", bill)); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number"), "库存数量")); + dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number"), "可用库存")); dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(output, "Number"), "测算数量")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), "可用数量")); + dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), "可用与预算合计")); dom.Columns.Add(DQSelectColumn.Create( ESubtract(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), DQExpression.Field(bill, "UnitNum")), "预计剩余数量")); @@ -261,6 +266,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { } + private DQueryDom GetOutputConfigureDom() { var dom = new DQueryDom(new JoinAlias(typeof(OutputConfigure))); @@ -342,7 +348,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { DQueryDom GetOrderDQueryDom() { var dom = _queryContainer.Build(); var bill = dom.From.RootSource.Alias; - var flowdetail=new JoinAlias("flowdetail",typeof(DepartmentWorkFlow_Detail)); + var flowdetail = new JoinAlias("flowdetail", typeof(DepartmentWorkFlow_Detail)); var detail = new JoinAlias("detail", typeof(Order_Detail)); var goodsPropertyCatalog = new JoinAlias("_gpc", typeof(GoodsPropertyCatalog)); var goodsProperty = new JoinAlias("_gp", typeof(GoodsProperty)); @@ -354,11 +360,10 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(goodsProperty, "ID", goods, "GoodsProperty_ID")); dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsPropertyCatalog), DQCondition.EQ(goodsProperty, "GoodsPropertyCatalog_ID", goodsPropertyCatalog, "ID")); dom.From.AddJoin(JoinType.Left, new DQDmoSource(customer), DQCondition.EQ(bill, "Customer_ID", customer, "ID")); - + dom.From.AddJoin(JoinType.Left, new DQDmoSource(flowdetail), DQCondition.EQ(bill, "DepartmentWorkFlow_Detail_ID", flowdetail, "ID")); - if (!_liuchengfenlei.IsEmpty) - { - dom.Where.Conditions.Add(DQCondition.EQ(flowdetail, "DepartmentWorkFlowStateCategory_ID",long.Parse(_liuchengfenlei.Value))); + if (!_liuchengfenlei.IsEmpty) { + dom.Where.Conditions.Add(DQCondition.EQ(flowdetail, "DepartmentWorkFlowStateCategory_ID", long.Parse(_liuchengfenlei.Value))); } AddGoodsCondition(goodsPropertyCatalog, goodsProperty, dom); dom.Columns.Add(DQSelectColumn.Field("ID", goodsProperty)); @@ -443,6 +448,42 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { return query; } + void RegisgterAvaliableStorageSumTable(DQueryDom outerQuery) { + + var union = new JoinAlias(typeof(AvailableStorageUtil.AvailableStorageUnionTable)); + var store = new JoinAlias(typeof(Store)); + var query = new DQueryDom(union); + var goodsPropertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog)); + var goodsProperty = new JoinAlias(typeof(GoodsProperty)); + var goods = new JoinAlias(typeof(SaleGoods)); + + query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(union, "Goods_ID", goods, "ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(goodsProperty, "ID", goods, "GoodsProperty_ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsPropertyCatalog), DQCondition.EQ(goodsProperty, "GoodsPropertyCatalog_ID", goodsPropertyCatalog, "ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(store), DQCondition.EQ(union, "Store_ID", store, "ID")); + + query.Columns.Add(DQSelectColumn.Field("ID", goodsProperty)); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("Number")), "主数量")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("SecondNumber")), "辅数量")); + + query.GroupBy.Expressions.Add(DQExpression.Field(goodsProperty, "ID")); + AddGoodsCondition(goodsPropertyCatalog, goodsProperty, query); + query.Where.Conditions.Add(DQCondition.EQ(store, "Domain_ID", DomainContext.Current.ID)); + + var config = AvailableStroageSourceConfigBL.Instance.Load(); + + var selectedNames = (config.SelectedNames ?? "").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) ; + + if( selectedNames.Contains("销售订单")) + { + query.Where.Conditions.Add(DQCondition.InEQ("Source", "销售订单")); + } + + + outerQuery.RegisterQueryTable(typeof(StoreDetailTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber" }, query); + + } + private void AddGoodsCondition(JoinAlias goodsPropertyCatalog, JoinAlias goodsProperty, DQueryDom dom) { if (!_goodsPropertyCatalog.IsEmpty) { var strs = B3SaleWebUtil.GetDeepByTreeName(_goodsPropertyCatalog.DisplayValue); diff --git a/WebFolder/Config/Plugins/B3_DongFangWanQi.Plugin b/WebFolder/Config/Plugins/B3_DongFangWanQi.Plugin index fca2f38..67e6e1e 100644 --- a/WebFolder/Config/Plugins/B3_DongFangWanQi.Plugin +++ b/WebFolder/Config/Plugins/B3_DongFangWanQi.Plugin @@ -2,6 +2,7 @@ +