diff --git a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/SaleSummaryReport_/SaleSummaryReport.cs b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/SaleSummaryReport_/SaleSummaryReport.cs index 4e59419..715252d 100644 --- a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/SaleSummaryReport_/SaleSummaryReport.cs +++ b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/SaleSummaryReport_/SaleSummaryReport.cs @@ -38,19 +38,98 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Reports.SaleSummaryReport_ mDfGrid.HeaderPagerLock = true; } + DateTime SelectDate + { + get + { + if (ViewState["SelectDate"] == null) + ViewState["SelectDate"] = DateTime.Today; + return (DateTime)ViewState["SelectDate"]; + } + set { ViewState["SelectDate"] = value; } + } + + static FilterTree monthTree, dayTree; + protected override void CreateQueryPanel(VLayoutPanel vPanel) { - var list = new List>(); - list.Add(new Tuple("First", "一级部门")); - list.Add(new Tuple("Second", "二级部门")); + var tablePanel = vPanel.Add(new TableLayoutPanel(1, 4), new VLayoutOption(System.Web.UI.WebControls.HorizontalAlign.Justify)); + + tablePanel.Add(0, 1, 0, 1, CreateMonth()); + tablePanel.Add(0, 1, 1, 2, CreateDay()); + tablePanel.Add(0, 1, 2, 3, CreateFirstDept()); + tablePanel.Add(0, 1, 3, 4, CreateSecondDept()); + } + private Control CreateMonth() + { + monthTree = new FilterTree() { DisableCancelSelectButton = true }; + monthTree.HorizontalRepeatColumns = 10; + this.Load += delegate + { + if (!IsPostBack) + { + monthTree.DataSource.Childs.Clear(); + var selected = false; + for (var i = 0; i < 6; i++) + { + var date = DateTime.Today.AddMonths(i - 5); + var v = date.ToString("yyyy-MM"); + var node = new FilterTreeNode(v, v, date); + if (!selected && date.Year == SelectDate.Year && date.Month == SelectDate.Month) + { + node.Selected = true; + selected = true; + } + monthTree.DataSource.Childs.Add(node); + } + } + }; - var dic = list.Select((item) => item.Item1).EToHashSet(); + monthTree.Select += (sender, e) => + { + var dt = (DateTime)monthTree.GetSelecteItem().Tag; + SelectDate = new DateTime(dt.Year, dt.Month, Math.Min(SelectDate.Day, DateTime.DaysInMonth(dt.Year, dt.Month))); + BuildDayTree(); + }; + monthTree.FilterAction = (query, node) => { }; + mTreeContainer.Add("monthTree", monthTree); + return monthTree; + } - var tablePanel = vPanel.Add(new TableLayoutPanel(1, 2), new VLayoutOption(System.Web.UI.WebControls.HorizontalAlign.Justify)); + private Control CreateDay() + { + dayTree = new FilterTree() { DisableCancelSelectButton = true }; + dayTree.HorizontalRepeatColumns = 31; + this.Load += delegate + { + if (!IsPostBack) + BuildDayTree(); + }; + dayTree.Select += (sender, e) => + { + SelectDate = new DateTime(SelectDate.Year, SelectDate.Month, int.Parse(dayTree.GetSelecteItem().Value)); + }; + dayTree.FilterAction = (query, node) => { }; + mTreeContainer.Add("dayTree", dayTree); + return dayTree; + } - tablePanel.Add(0, 1, 0, 1, CreateFirstDept()); - tablePanel.Add(0, 1, 1, 2, CreateSecondDept()); + void BuildDayTree() + { + dayTree.DataSource.Childs.Clear(); + var total = DateTime.DaysInMonth(SelectDate.Year, SelectDate.Month); + bool selected = false; + for (var i = 1; i <= total; i++) + { + var node = new FilterTreeNode(i.ToString(), i.ToString()); + if (!selected && SelectDate.Day == i) + { + node.Selected = true; + selected = true; + } + dayTree.DataSource.Childs.Add(node); + } } List> FirstDepts @@ -195,18 +274,18 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Reports.SaleSummaryReport_ var customer = new JoinAlias(typeof(Customer)); var goods = new JoinAlias(typeof(SaleGoods)); var query = new DQueryDom(main); - TempClass.Register(query); + TempClass.Register(query, SelectDate); query.From.AddJoin(JoinType.Left, new DQDmoSource(dept), DQCondition.EQ(main, "Department_ID", dept, "ID")); - query.From.AddJoin(JoinType.Left, new DQDmoSource(_3Dept), DQCondition.EQ(dept, "TreeDeep3ID", _3Dept, "ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(_3Dept), DQCondition.EQ(dept, string.Format("TreeDeep{0}ID", SaleDepartmentInfo.Item2 + 3), _3Dept, "ID")); query.From.AddJoin(JoinType.Left, new DQDmoSource(customer), DQCondition.EQ(main, "Customer_ID", customer, "ID")); query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(main, "Goods_ID", goods, "ID")); query.Columns.Add(DQSelectColumn.Field("Name", _3Dept, "销售部门")); query.GroupBy.Expressions.Add(DQExpression.Field(_3Dept, "Name")); - query.Columns.Add(DQSelectColumn.Field("CustomerCatalog_Name", customer)); - query.GroupBy.Expressions.Add(DQExpression.Field(customer, "CustomerCatalog_Name")); - query.GroupBy.Expressions.Add(DQExpression.Field(customer, "CustomerCatalog_ID")); - query.OrderBy.Expressions.Add(DQOrderByExpression.Create(customer, "CustomerCatalog_ID")); + query.Columns.Add(DQSelectColumn.Field("ExtensionsCatalog1_Name", customer, "客户分类")); + query.GroupBy.Expressions.Add(DQExpression.Field(customer, "ExtensionsCatalog1_Name")); + query.GroupBy.Expressions.Add(DQExpression.Field(customer, "ExtensionsCatalog1_ID")); + query.OrderBy.Expressions.Add(DQOrderByExpression.Create(customer, "ExtensionsCatalog1_ID")); foreach (var item in goodsBrand) { if (item == "条类") @@ -251,15 +330,15 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Reports.SaleSummaryReport_ public Money? SecondNumber { get; set; } - public static void Register(DQueryDom root) + public static void Register(DQueryDom root, DateTime date) { - var q1 = GetSaleOutStore(true); - q1.UnionNext.Select = GetSaleOutStore(false); + var q1 = GetSaleOutStore(true, date); + q1.UnionNext.Select = GetSaleOutStore(false, date); root.RegisterQueryTable(typeof(TempClass), new string[] { "Department_ID", "Customer_ID", "Goods_ID", "Type", "MainNumber", "SecondNumber" }, q1); } - static DQueryDom GetSaleOutStore(bool today) + static DQueryDom GetSaleOutStore(bool today, DateTime date) { var main = new JoinAlias(today + "M", typeof(SaleOutStore)); var detail = new JoinAlias(today + "D", typeof(SaleOutStore_Detail)); @@ -273,20 +352,20 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Reports.SaleSummaryReport_ query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(today ? 1 : 2), "Type")); query.Columns.Add(DQSelectColumn.Field("UnitNum", detail)); query.Columns.Add(DQSelectColumn.Field("SecondNumber", detail)); - var timeRange = GetDateRange(today); + var timeRange = GetDateRange(today, date); query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Domain_ID", DomainContext.Current.ID), DQCondition.GreaterThanOrEqual("BillState", 单据状态.已审核), DQCondition.Between("LoadTime", timeRange.Item1, timeRange.Item2))); return query; } - static Tuple GetDateRange(bool today) + static Tuple GetDateRange(bool today, DateTime date) { if (today) - return new Tuple(DateTime.Today, DateTime.Today + new TimeSpan(23, 59, 59)); - var d = (int)DateTime.Today.DayOfWeek; - if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday) + return new Tuple(date, date + new TimeSpan(23, 59, 59)); + var d = (int)date.DayOfWeek; + if (date.DayOfWeek == DayOfWeek.Sunday) d = 7; - var date = DateTime.Today.AddDays(-d); - return new Tuple(date.AddDays(-6), date); + var beforeWeek = date.AddDays(-d); + return new Tuple(beforeWeek.AddDays(-6), beforeWeek); } } }