You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

217 lines
8.0 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using BWP.B3Frameworks;
using BWP.B3Frameworks.BO;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Sale.BO;
using BWP.B3UnitedInfos;
using BWP.Web.Layout;
using BWP.Web.Utils;
using BWP.Web.WebControls;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.SqlDoms;
using TSingSoft.WebControls2;
using Forks.EnterpriseServices.DataForm;
namespace BWP.Web.Pages.B3YunKen.Reports
{
class CustomerStopByTaskReport : DFBrowseGridReportPage<Customer>
{
protected override string Caption
{
get { return "公共客户池"; }
}
protected override string AccessRoleName
{
get { return "B3_YunKen.报表.公共客户池"; }
}
// protected override string QueryOptionsTabName
// {
// get
// {
// return "显示字段";
// }
// }
// ReportDisplayOptionHelper mDisplayHelper = new ReportDisplayOptionHelper();
protected override void InitForm(HtmlForm form)
{
base.InitForm(form);
mQueryContainer.GetControl<DFBoolComboBox>("Stopped").Value=true;
}
protected override void CreateDFBrowseGridColumns(DFBrowseGrid grid)
{
base.CreateDFBrowseGridColumns(grid);
grid.DataFilter = delegate (DFDataTable tbl) {
foreach (DFDataRow row in tbl.Rows)
{
var val = (bool)row["是否停用"];
if (val)
{
row["移动电话"] = "";
}
}
};
}
protected override void AddQueryControls(VLayoutPanel vPanel)
{
var layout = new LayoutManager("Main", mDFInfo, mQueryContainer);
var config = new AutoLayoutConfig { Cols = 2 };
config.Add("ID");
config.Add("Code");
config.Add("Name");
config.Add("Department_ID");
config.Add("Employee_ID");
config.Add("Stopped");
config.Add("SaleZone_ID");
config.Add("CustomerCatalog_ID");
config.Add("AccountCustomer_ID");
layout.Config = config;
vPanel.Add(layout.CreateLayout());
}
private CheckBoxListWithReverseSelect _checkbox;
protected override void InitQueryPanel(QueryPanel queryPanel)
{
base.InitQueryPanel(queryPanel);
var panel = queryPanel.CreateTab("显示字段");
_checkbox = new CheckBoxListWithReverseSelect { RepeatColumns = 6, RepeatDirection = RepeatDirection.Horizontal };
_checkbox.Items.Add(new ListItem("单号", "ID"));
_checkbox.Items.Add(new ListItem("客户名称", "Name"));
_checkbox.Items.Add(new ListItem("结账客户", "AccountCustomer_Name"));
_checkbox.Items.Add(new ListItem("是否经销商", "IsDealers"));
_checkbox.Items.Add(new ListItem("经销商", "经销商"));
_checkbox.Items.Add(new ListItem("联系人", "联系人"));
_checkbox.Items.Add(new ListItem("移动电话", "移动电话"));
_checkbox.Items.Add(new ListItem("客户分类", "CustomerCatalog_Name"));
_checkbox.Items.Add(new ListItem("销售地区", "SaleZone_Name"));
_checkbox.Items.Add(new ListItem("销售人员", "Employee_Name"));
_checkbox.Items.Add(new ListItem("信用政策", "PriceStrategy_Name"));
_checkbox.Items.Add(new ListItem("上次停用时间", "StopedTime"));
_checkbox.Items.Add(new ListItem("是否停用", "Stopped"));
_checkbox.Items.Add(new ListItem("停用原因", "停用原因"));
_checkbox.Items.Add(new ListItem("最后一次发货时间", "最后一次发货时间"));
panel.EAdd(_checkbox);
mQueryControls.Add("显示字段", _checkbox);
mQueryControls.EnableHoldLastControlNames.Add("显示字段");
}
private DQueryDom GetLastStopTime(JoinAlias bill)
{
var join=new JoinAlias(typeof(EntityInternalLog));
var query=new DQueryDom(join);
query.Where.Conditions.Add(DQCondition.EQ(join, "EntityTypeID",DmoTypeIDAttribute.GetID(typeof(Customer))));
query.Where.Conditions.Add(DQCondition.EQ(join, "EntityID", bill,"ID"));
query.Where.Conditions.Add(DQCondition.EQ(join, "Operate", "停用"));
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID",true));
query.Columns.Add(DQSelectColumn.Field("Time", join));
query.Range=SelectRange.Top(1);
return query;
}
private DQueryDom GetLinkPhone(JoinAlias bill)
{
var link = new JoinAlias("linkphone", typeof(CustomerLinkMan_Detail));
var query = new DQueryDom(link);
query.Range = SelectRange.Top(1);
query.Where.Conditions.Add(DQCondition.EQ(link, "Customer_ID", bill, "ID"));
query.Columns.Add(DQSelectColumn.Field("CellPhone", link));
return query;
}
private DQueryDom GetLinkName(JoinAlias bill)
{
var link=new JoinAlias("linkname", typeof(CustomerLinkMan_Detail));
var query=new DQueryDom(link);
query.Range=SelectRange.Top(1);
query .Where.Conditions.Add(DQCondition.EQ(link, "Customer_ID", bill,"ID"));
query.Columns.Add(DQSelectColumn.Field("LinkManName", link));
return query;
}
private static DQueryDom GetMaxLoadTime(JoinAlias bill)
{
var query = new DQueryDom(new JoinAlias(typeof(CustomerAccept)));
query.Columns.Add(DQSelectColumn.Max("LoadTime"));
query.Where.Conditions.Add(DQCondition.EQ(query.From.RootSource.Alias,"CustomerDealer_ID", bill,"ID"));
query.Where.Conditions.Add(DQCondition.EQ("BillState", .));
return query;
}
protected override DQueryDom GetQueryDom()
{
var query = base.GetQueryDom();
var bill = query.From.RootSource.Alias;
foreach (ListItem field in _checkbox.Items)
{
if (field.Selected)
{
switch (field.Text)
{
case "单号":
case "客户名称":
case "结账客户":
case "是否经销商":
case "客户分类":
case "销售人员":
case "销售地区":
case "信用政策":
case "上次停用时间":
case "是否停用":
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(field.Value), field.Text));
// query.GroupBy.Expressions.Add(DQExpression.Field( "Zone_Name"));
break;
case "停用原因":
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value("3月内未发货,自动停用"),field.Text));
break;
case "联系人":
query.Columns.Add(DQSelectColumn.Create(DQExpression.SubQuery(GetLinkName(bill)), field.Text));
break;
case "移动电话":
query.Columns.Add(DQSelectColumn.Create(DQExpression.SubQuery(GetLinkPhone(bill)), field.Text));
break;
case "最后一次发货时间":
query.Columns.Add(DQSelectColumn.Create(DQExpression.SubQuery(GetMaxLoadTime(bill)), field.Text));
break;
case "经销商":
var jxs = DQExpression.LogicCase(DQCondition.EQ("IsDealers", DQExpression.Value(true)),DQExpression.Field("Name"),DQExpression.SubQuery(GetJingXiaoShang(bill)));
query.Columns.Add(DQSelectColumn.Create(jxs, field.Text));
break;
}
}
}
//query.Where.Conditions.Add(DQCondition.EQ("Stopped", true));
//query.Where.Conditions.Add(DQCondition.EQ("StopedByCustomerTask", true));
return query;
}
private DQueryDom GetJingXiaoShang(JoinAlias bill)
{
var dbill=new JoinAlias("dbill", typeof(Dealer));
var ddetail=new JoinAlias("ddetail", typeof(Dealer_Detail));
var query=new DQueryDom(dbill);
query.From.AddJoin(JoinType.Left,new DQDmoSource(ddetail), DQCondition.EQ(dbill,"ID",ddetail, "Dealer_ID"));
query.Where.Conditions.Add(DQCondition.EQ(bill,"ID",ddetail, "Customer_ID"));
query.Columns.Add(DQSelectColumn.Field("Customer_Name",dbill));
return query;
}
}
}