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;
|
|
}
|
|
}
|
|
}
|