|
|
|
@ -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<Tuple<string, string>>(); |
|
|
|
list.Add(new Tuple<string, string>("First", "一级部门")); |
|
|
|
list.Add(new Tuple<string, string>("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<Tuple<long, string>> 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<decimal>? 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<DateTime, DateTime> GetDateRange(bool today) |
|
|
|
static Tuple<DateTime, DateTime> GetDateRange(bool today, DateTime date) |
|
|
|
{ |
|
|
|
if (today) |
|
|
|
return new Tuple<DateTime, DateTime>(DateTime.Today, DateTime.Today + new TimeSpan(23, 59, 59)); |
|
|
|
var d = (int)DateTime.Today.DayOfWeek; |
|
|
|
if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday) |
|
|
|
return new Tuple<DateTime, DateTime>(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<DateTime, DateTime>(date.AddDays(-6), date); |
|
|
|
var beforeWeek = date.AddDays(-d); |
|
|
|
return new Tuple<DateTime, DateTime>(beforeWeek.AddDays(-6), beforeWeek); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|