From 06dada82eadf39b1d4d1132d613bd64490b41a21 Mon Sep 17 00:00:00 2001 From: yibo <361071264@qq.com> Date: Tue, 25 Sep 2018 20:43:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8C=B9=E9=85=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../B3ButcherManageToSale.Web.csproj | 7 + .../Overlays/OrderInfo.cs | 177 ++++++++++++++++++ .../Overlays/OrderMatchPage.cs | 175 ++++++++++++++++- .../Overlays/OrderMatchPage.xml | 8 - .../Overlays/StoreDetailPage.cs | 104 ++++++++++ B3ButcherManageToSale.Web/PluginClass.cs | 1 + 6 files changed, 457 insertions(+), 15 deletions(-) create mode 100644 B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderInfo.cs create mode 100644 B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/StoreDetailPage.cs diff --git a/B3ButcherManageToSale.Web/B3ButcherManageToSale.Web.csproj b/B3ButcherManageToSale.Web/B3ButcherManageToSale.Web.csproj index 4517f8a..f306775 100644 --- a/B3ButcherManageToSale.Web/B3ButcherManageToSale.Web.csproj +++ b/B3ButcherManageToSale.Web/B3ButcherManageToSale.Web.csproj @@ -72,6 +72,7 @@ + @@ -99,12 +100,18 @@ ASPXCodeBehind + + ASPXCodeBehind + ASPXCodeBehind ASPXCodeBehind + + ASPXCodeBehind + ASPXCodeBehind diff --git a/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderInfo.cs b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderInfo.cs new file mode 100644 index 0000000..f2a6426 --- /dev/null +++ b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderInfo.cs @@ -0,0 +1,177 @@ +using BWP.B3Frameworks; +using BWP.B3Frameworks.BO.NamedValueTemplate; +using BWP.B3Frameworks.Utils; +using BWP.B3Sale.BO; +using BWP.Web.WebControls; +using Forks.EnterpriseServices.DataForm; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.SqlDoms; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Web.UI.HtmlControls; +using System.Web.UI.WebControls; +using TSingSoft.WebControls2; +using TSingSoft.WebPluginFramework.Controls; +using TSingSoft.WebPluginFramework.Pages; + +namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays +{ + class OrderInfo : ServerPage + { + long? AccountingUnitID + { + get + { + var str = Request.QueryString["AccountingUnitID"]; + if (string.IsNullOrEmpty(str)) + return null; + return long.Parse(str); + } + } + + long? DepartmentID + { + get + { + var str = Request.QueryString["DepartmentID"]; + if (string.IsNullOrEmpty(str)) + return null; + return long.Parse(str); + } + } + + long? ProductAvgWeightSet_ID + { + get + { + var str = Request.QueryString["ID"]; + if (string.IsNullOrEmpty(str)) + return null; + return long.Parse(str); + } + } + + DateTime Date + { + get { return DateTime.Parse(Request.QueryString["Date"]); } + } + + protected override void InitForm(HtmlForm form) + { + form.EAdd(new PageTitle("订货明细")); + CreateToolBox(form.EAdd(new Panel())); + CreateBrowseGrid(form.EAdd(new TitlePanel("明细详情"))); + } + + LinkButton bt1, bt2; + private void CreateToolBox(Panel panel) + { + panel.CssClass = "FilterTree"; + panel.Style.Add("margin-left", "20px"); + var hPanel = panel.EAdd(new HLayoutPanel()); + hPanel.CssClass = "FilterTree_Table_HLayout"; + bt1 = hPanel.Add(new LinkButton() { Text = "存货汇总" }); + bt1.CssClass = "FilterTree"; + bt1.Click += delegate + { + StartQuery(true); + }; + + bt2 = hPanel.Add(new LinkButton() { Text = "客户明细" }); + bt2.CssClass = "FilterTree"; + bt2.Click += delegate + { + StartQuery(false); + }; + } + + DFBrowseGrid mGrid; + private void CreateBrowseGrid(TitlePanel titlePanel) + { + mGrid = titlePanel.EAdd(new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100), EnableRowsGroup = true }); + mGrid.Columns.Add(new DFBrowseGridAutoColumn()); + } + + void StartQuery(bool byGoods) + { + if (byGoods) + { + bt1.CssClass = "FilterTreeSelected"; + bt2.CssClass = "FilterTree"; + } + else + { + bt2.CssClass = "FilterTreeSelected"; + bt1.CssClass = "FilterTree"; + } + mGrid.Reset(); + SumColumnIndex.Clear(); + var args = new LoadArguments(GetQueryDom(byGoods)); + foreach (var idx in SumColumnIndex) + args.SumColumns.Add(idx); + mGrid.LoadArguments = args; + mGrid.DataBind(); + } + + List SumColumnIndex + { + get + { + if (ViewState["sc"] == null) + ViewState["sc"] = new List(); + return (List)ViewState["sc"]; + } + } + + DQueryDom GetQueryDom(bool byGoods) + { + var main = new JoinAlias(typeof(Order)); + var detail = new JoinAlias(typeof(Order_Detail)); + var temp = new JoinAlias(typeof(ProductAvgWeightSetTemp)); + var query = new DQueryDom(main); + ProductAvgWeightSetTemp.Register(query); + query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "Order_ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(temp), DQCondition.EQ(detail, "SaleGoods_ID", temp, "Goods_ID")); + + //按存货:存货、订货数量 + //按客户:客户、存货、订货数量 + if (!byGoods) + { + query.Columns.Add(DQSelectColumn.Field("Customer_Name")); + query.GroupBy.Expressions.Add(DQExpression.Field("Customer_Name")); + query.GroupBy.Expressions.Add(DQExpression.Field("Customer_ID")); + query.OrderBy.Expressions.Add(DQOrderByExpression.Create("Customer_ID")); + } + query.Columns.Add(DQSelectColumn.Field("Goods_Name", detail)); + query.Columns.Add(DQSelectColumn.Field("Goods_Code", detail)); + query.Columns.Add(DQSelectColumn.Sum(detail, "UnitNum")); + SumColumnIndex.Add(query.Columns.Count - 1); + query.Columns.Add(DQSelectColumn.Field("Unit", detail)); + query.Columns.Add(DQSelectColumn.Sum(detail, "SecondNumber")); + SumColumnIndex.Add(query.Columns.Count - 1); + query.Columns.Add(DQSelectColumn.Field("Goods_SecondUnit", detail)); + + query.GroupBy.Expressions.Add(DQExpression.Field(detail, "Goods_Name")); + query.GroupBy.Expressions.Add(DQExpression.Field(detail, "Goods_Code")); + query.GroupBy.Expressions.Add(DQExpression.Field(detail, "Unit")); + query.GroupBy.Expressions.Add(DQExpression.Field(detail, "Goods_SecondUnit")); + + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Domain_ID", DomainContext.Current.ID), DQCondition.Or(DQCondition.EQ("BillState", 单据状态.已审核), DQCondition.EQ("IsLocked", true)))); + query.Where.Conditions.Add(DQCondition.Between("LoadTime", Date, Date + new TimeSpan(23, 59, 59))); + if (AccountingUnitID.HasValue) + query.Where.Conditions.Add(DQCondition.EQ("AccountingUnit_ID", AccountingUnitID)); + if (DepartmentID.HasValue) + query.Where.Conditions.Add(DQCondition.EQ("Department_ID", DepartmentID)); + if (ProductAvgWeightSet_ID.HasValue) + query.Where.Conditions.Add(DQCondition.EQ(temp, "ProductAvgWeightSet_ID", ProductAvgWeightSet_ID)); + else + query.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(temp, "ProductAvgWeightSet_ID"))); + + return query; + } + } +} diff --git a/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderMatchPage.cs b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderMatchPage.cs index d8ba358..2ea3be3 100644 --- a/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderMatchPage.cs +++ b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderMatchPage.cs @@ -1,18 +1,27 @@ -using BWP.B3Frameworks; +using BWP.B3ButcherManage.BO; +using BWP.B3Frameworks; +using BWP.B3Frameworks.BO; +using BWP.B3Frameworks.BO.NamedValueTemplate; using BWP.B3Frameworks.Utils; using BWP.B3Sale.BO; +using BWP.B3UnitedInfos.BO; using BWP.Web.Layout; using BWP.Web.Utils; using BWP.Web.WebControls; using Forks.EnterpriseServices.DataForm; +using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.SqlDoms; +using Forks.Utils; using System; using System.Collections.Generic; using System.Linq; using System.Text; +using System.Web; +using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using TSingSoft.WebControls2; +using TSingSoft.WebPluginFramework; namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays { @@ -28,44 +37,196 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays } DFBrowseGrid _browseGrid; + string rootPath = "~/B3ButcherManageToSale/Overlays/"; protected override void InitForm(System.Web.UI.HtmlControls.HtmlForm form) { base.InitForm(form); CreateQueryPanel(form.EAdd(new VLayoutPanel())); CreateResultPanel(form.EAdd(new TitlePanel("查询结果"))); + _browseGrid.OnDetailDataBound = (tr, obj, index) => + { + var row = obj as DFDataRow; + var gid = string.Format("{0}", row["ID"]); + + var url = BuildUrl("OrderInfo.aspx", gid); + SetCellAtt(tr.Cells[1], url, "订货明细"); + + url = rootPath + "StoreDetailPage.aspx"; + url = AspUtil.AddParamToUrl(url, "ID", gid); + SetCellAtt(tr.Cells[3], WpfPageUrl.ToGlobal(url), "库存明细"); + }; + } + + string BuildUrl(string url, string pawsID) + { + url = rootPath + url; + url = AspUtil.AddParamToUrl(url, "AccountingUnitID", mQueryContainer.GetControl("AccountingUnit_ID").Value); + url = AspUtil.AddParamToUrl(url, "DepartmentID", mQueryContainer.GetControl("Department_ID").Value); + url = AspUtil.AddParamToUrl(url, "Date", HttpUtility.UrlEncode(mQueryContainer.GetControl("LoadTime").Date.ToString("yyyy/MM/dd"))); + url = AspUtil.AddParamToUrl(url, "ID", pawsID); + return WpfPageUrl.ToGlobal(url); } + void SetCellAtt(HtmlTableCell cell, string url, string title) + { + cell.Attributes["onclick"] = "OpenUrlInTopTab('" + url + "','" + title + "');"; + cell.Style.Add("color", "blue"); + cell.Style.Add("text-decoration", "underline"); + cell.Style.Add("cursor", "pointer"); + } + + TSButton createBt; private void CreateQueryPanel(VLayoutPanel panel) { var manager = new LayoutManager("", _dFInfo, mQueryContainer); manager.Add("AccountingUnit_ID", QueryCreator.DFChoiceBox(_dFInfo.Fields["AccountingUnit_ID"], B3FrameworksConsts.DataSources.授权会计单位全部)); manager.Add("Department_ID", QueryCreator.DFChoiceBox(_dFInfo.Fields["Department_ID"], B3FrameworksConsts.DataSources.授权部门全部)); - manager.Add("LoadTime", QueryCreator.TimeRange(_dFInfo.Fields["LoadTime"], mQueryContainer, "MinLoadTime", "MaxLoadTime", DateTime.Today, DateTime.Today + new TimeSpan(23, 59, 59))); + var d = manager.Add("LoadTime", new DFDateInput(_dFInfo.Fields["LoadTime"])); + d.Date = DateTime.Today; var config = manager.CreateDefaultConfig(6); config.Expand = false; - panel.Add(manager.CreateLayout()); + panel.Add(manager.CreateLayout(), new VLayoutOption(HorizontalAlign.Left)); var hPanel = panel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left)); hPanel.Add(new TSButton("查询", delegate { StartQuery(); + if (!createBt.Enabled) + createBt.Enabled = true; })); } private void CreateResultPanel(TitlePanel titlePanel) { - _browseGrid = new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100) }; - _browseGrid.Columns.Add(new DFBrowseGridAutoColumn()); + _browseGrid = titlePanel.EAdd(new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100) }); + _browseGrid.Columns.Add(new DFBrowseGridAutoColumn("ID")); + createBt = titlePanel.EAdd(new TSButton("创建缺货/剩货单", delegate { }) { Enabled = false }); } private void StartQuery() { - + _browseGrid.Query = GetQueryDom(); + _browseGrid.DataBind(); + _browseGrid.CurrentPageIndex = 0; } DQueryDom GetQueryDom() { - return null; + var dateInput = mQueryContainer.GetControl("LoadTime"); + if (dateInput.IsEmpty) + throw new Exception("请选择发货日期"); + var alias = new JoinAlias(typeof(UnionTemp)); + var paws = new JoinAlias("_paws2", typeof(ProductAvgWeightSet)); + var query = new DQueryDom(alias); + UnionTemp.Register(query, mQueryContainer, dateInput.Date); + query.From.AddJoin(JoinType.Left, new DQDmoSource(paws), DQCondition.EQ(alias, "ProductAvgWeightSet_ID", paws, "ID")); + query.Columns.Add(DQSelectColumn.Field("ID", paws)); + query.Columns.Add(DQSelectColumn.Field("Name", paws, "品项")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("OrderNumber")), "订货数量")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("ProductNumber")), "预计产量")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("StoreNumber")), "库存数量")); + + var col = DQExpression.Sum(DQExpression.Subtract(DQExpression.Add(DQExpression.IfNull(DQExpression.Field("ProductNumber"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field("StoreNumber"), DQExpression.Value(0))), DQExpression.IfNull(DQExpression.Field("OrderNumber"), DQExpression.Value(0)))); + + query.Columns.Add(DQSelectColumn.Create(DQExpression.LogicCase(DQCondition.LessThan(col, DQExpression.Value(0)), DQExpression.Subtract(DQExpression.Value(0), col), DQExpression.NULL).ECastType?>(), "缺货数量")); + + query.Columns.Add(DQSelectColumn.Create(DQExpression.LogicCase(DQCondition.GreaterThan(col, DQExpression.Value(0)), col, DQExpression.NULL).ECastType?>(), "剩余数量")); + query.GroupBy.Expressions.Add(DQExpression.Field(paws, "ID")); + query.GroupBy.Expressions.Add(DQExpression.Field(paws, "Name")); + query.OrderBy.Expressions.Add(DQOrderByExpression.Create(paws, "ID")); + return query; + } + } + + class ProductAvgWeightSetTemp + { + public long Goods_ID { get; set; } + + public long ProductAvgWeightSet_ID { get; set; } + + public static void Register(DQueryDom root) + { + var main = new JoinAlias("_paws1", typeof(ProductAvgWeightSet)); + var detail = new JoinAlias(typeof(ProductAvgWeightSet_Detail)); + var query = new DQueryDom(main); + query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "ProductAvgWeightSet_ID")); + query.Columns.Add(DQSelectColumn.Field("Goods_ID", detail)); + query.Columns.Add(DQSelectColumn.Field("ID", main)); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Domain_ID", DomainContext.Current.ID), DQCondition.EQ("Stopped", false))); + root.RegisterQueryTable(typeof(ProductAvgWeightSetTemp), new string[] { "Goods_ID", "ProductAvgWeightSet_ID" }, query); + } + } + + class UnionTemp + { + public long ProductAvgWeightSet_ID { get; set; } + + public Money? OrderNumber { get; set; } + + public Money? ProductNumber { get; set; } + + public Money? StoreNumber { get; set; } + + public static void Register(DQueryDom root, QueryContainer container, DateTime date) + { + var q1 = GetOrderQuery(root, container, date); + var q2 = GetCompute(date); + var q3 = GetStoreQuery(); + q1.UnionNext.Select = q2; + q2.UnionNext.Select = q3; + root.RegisterQueryTable(typeof(UnionTemp), new string[] { "ProductAvgWeightSet_ID", "OrderNumber", "ProductNumber", "StoreNumber" }, q1); + } + + static DQueryDom GetOrderQuery(DQueryDom root, QueryContainer container, DateTime date) + { + var detail = new JoinAlias(typeof(Order_Detail)); + var query = container.Build(); + var main = query.From.RootSource.Alias; + var temp = new JoinAlias("_temp1", typeof(ProductAvgWeightSetTemp)); + ProductAvgWeightSetTemp.Register(root); + query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "Order_ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(temp), DQCondition.EQ(detail, "SaleGoods_ID", temp, "Goods_ID")); + query.Columns.Add(DQSelectColumn.Field("ProductAvgWeightSet_ID", temp)); + query.Columns.Add(DQSelectColumn.Sum(detail, "UnitNum", "OrderNumber")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "ProductNumber")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "StoreNumber")); + query.GroupBy.Expressions.Add(DQExpression.Field(temp, "ProductAvgWeightSet_ID")); + query.Where.Conditions.Add(DQCondition.Between("LoadTime", date, date + new TimeSpan(23, 59, 59))); + query.Where.Conditions.Add(DQCondition.Or(DQCondition.EQ("BillState", 单据状态.已审核), DQCondition.EQ("IsLocked", true))); + query.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID)); + return query; + } + + static DQueryDom GetCompute(DateTime date) + { + var main = new JoinAlias(typeof(ProductCompute)); + var detail = new JoinAlias(typeof(ProductCompute_Detail)); + var query = new DQueryDom(main); + query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "ProductCompute_ID")); + query.Columns.Add(DQSelectColumn.Field("ProductAvgWeightSet_ID", detail)); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "OrderNumber")); + query.Columns.Add(DQSelectColumn.Field("ProductNumber", detail, "ProductNumber")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "StoreNumber")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThanOrEqual("BillState", 单据状态.已审核), DQCondition.EQ("Domain_ID", DomainContext.Current.ID), DQCondition.EQ("Date", date))); + return query; + } + + static DQueryDom GetStoreQuery() + { + var main = new JoinAlias(typeof(StoreDetail)); + var store = new JoinAlias(typeof(Store)); + var temp = new JoinAlias("_temp2", typeof(ProductAvgWeightSetTemp));//这个临时表在前面已经注册过了。 + var query = new DQueryDom(main); + + query.From.AddJoin(JoinType.Left, new DQDmoSource(store), DQCondition.EQ(main, "Store_ID", store, "ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(temp), DQCondition.EQ(main, "Goods_ID", temp, "Goods_ID")); + query.Columns.Add(DQSelectColumn.Field("ProductAvgWeightSet_ID", temp)); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "OrderNumber")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "ProductNumber")); + query.Columns.Add(DQSelectColumn.Sum(main, "Number", "StoreNumber")); + query.GroupBy.Expressions.Add(DQExpression.Field(temp, "ProductAvgWeightSet_ID")); + query.Where.Conditions.Add(DQCondition.EQ(store, "Domain_ID", DomainContext.Current.ID)); + return query; } } } diff --git a/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderMatchPage.xml b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderMatchPage.xml index a6d02c0..b10def6 100644 --- a/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderMatchPage.xml +++ b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/OrderMatchPage.xml @@ -15,14 +15,6 @@ - - - - - - - - \ No newline at end of file diff --git a/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/StoreDetailPage.cs b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/StoreDetailPage.cs new file mode 100644 index 0000000..76cd93a --- /dev/null +++ b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/StoreDetailPage.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Web.UI.HtmlControls; +using TSingSoft.WebPluginFramework.Controls; +using TSingSoft.WebPluginFramework.Pages; +using TSingSoft.WebControls2; +using BWP.B3Frameworks.Utils; +using System.Web.UI.WebControls; +using Forks.EnterpriseServices.DataForm; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using BWP.B3UnitedInfos.BO; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.SqlDoms; +using BWP.B3Frameworks.BO; +using BWP.B3Frameworks; +using BWP.Web.WebControls; + +namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays +{ + class StoreDetailPage : ServerPage + { + long? ProductAvgWeightSet_ID + { + get + { + var str = Request.QueryString["ID"]; + if (string.IsNullOrEmpty(str)) + return null; + return long.Parse(str); + } + } + + protected override void InitForm(HtmlForm form) + { + form.EAdd(new PageTitle("库存明细")); + CreateBrowseGrid(form.EAdd(new TitlePanel("库存明细"))); + } + + DFBrowseGrid mGrid; + private void CreateBrowseGrid(TitlePanel titlePanel) + { + mGrid = titlePanel.EAdd(new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100), EnableRowsGroup = true }); + mGrid.Columns.Add(new DFBrowseGridAutoColumn()); + } + + List SumColumnIndex + { + get + { + if (ViewState["sc"] == null) + ViewState["sc"] = new List(); + return (List)ViewState["sc"]; + } + } + + DQueryDom GetQueryDom() + { + var main = new JoinAlias(typeof(StoreDetail)); + var store = new JoinAlias(typeof(Store)); + var temp = new JoinAlias(typeof(ProductAvgWeightSetTemp)); + var query = new DQueryDom(main); + ProductAvgWeightSetTemp.Register(query); + query.From.AddJoin(JoinType.Left, new DQDmoSource(store), DQCondition.EQ(main, "Store_ID", store, "ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(temp), DQCondition.EQ(main, "Goods_ID", temp, "Goods_ID")); + + query.Columns.Add(DQSelectColumn.Field("Goods_Name", main)); + query.Columns.Add(DQSelectColumn.Field("Goods_Code", main)); + query.Columns.Add(DQSelectColumn.Sum(main, "Number")); + SumColumnIndex.Add(query.Columns.Count - 1); + query.Columns.Add(DQSelectColumn.Field("Goods_MainUnit", main)); + query.Columns.Add(DQSelectColumn.Sum(main, "SecondNumber")); + SumColumnIndex.Add(query.Columns.Count - 1); + query.Columns.Add(DQSelectColumn.Field("Goods_SecondUnit", main)); + + query.GroupBy.Expressions.Add(DQExpression.Field(main, "Goods_Name")); + query.GroupBy.Expressions.Add(DQExpression.Field(main, "Goods_Code")); + query.GroupBy.Expressions.Add(DQExpression.Field(main, "Goods_MainUnit")); + query.GroupBy.Expressions.Add(DQExpression.Field(main, "Goods_SecondUnit")); + + query.Where.Conditions.Add(DQCondition.EQ(store, "Domain_ID", DomainContext.Current.ID)); + if (ProductAvgWeightSet_ID.HasValue) + query.Where.Conditions.Add(DQCondition.EQ(temp, "ProductAvgWeightSet_ID", ProductAvgWeightSet_ID)); + else + query.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(temp, "ProductAvgWeightSet_ID"))); + + return query; + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + if (!IsPostBack) + { + var args = new LoadArguments(GetQueryDom()); + foreach (var idx in SumColumnIndex) + args.SumColumns.Add(idx); + mGrid.LoadArguments = args; + mGrid.DataBind(); + } + } + } +} diff --git a/B3ButcherManageToSale.Web/PluginClass.cs b/B3ButcherManageToSale.Web/PluginClass.cs index a2af57c..aa97c14 100644 --- a/B3ButcherManageToSale.Web/PluginClass.cs +++ b/B3ButcherManageToSale.Web/PluginClass.cs @@ -12,6 +12,7 @@ namespace BWP.Web.Pages public void OnInit() { WpfPageFactory.RegisterPageOverlay(typeof(B3ButcherManage.Tools.SaleOutStoreBalance).FullName, typeof(B3ButcherManageToSale.Overlays.SaleOutStoreBalance).FullName); + WpfPageFactory.RegisterPageOverlay(typeof(B3ButcherManage.Tools.OrderMatchPage).FullName, typeof(B3ButcherManageToSale.Overlays.OrderMatchPage).FullName); } } }