|
|
@ -0,0 +1,194 @@ |
|
|
|
|
|
using BWP.B3ButcherManage; |
|
|
|
|
|
using BWP.B3ButcherManage.BO; |
|
|
|
|
|
using BWP.B3ButcherManage.NamedValueTemplate; |
|
|
|
|
|
using BWP.B3Frameworks; |
|
|
|
|
|
using BWP.B3Frameworks.BO.MoneyTemplate; |
|
|
|
|
|
using BWP.B3Frameworks.BO.NamedValueTemplate; |
|
|
|
|
|
using BWP.Web.Layout; |
|
|
|
|
|
using BWP.Web.Pages.B3ButcherManage.Reports; |
|
|
|
|
|
using BWP.Web.Utils; |
|
|
|
|
|
using BWP.Web.WebControls; |
|
|
|
|
|
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.UI.WebControls; |
|
|
|
|
|
using TSingSoft.WebControls2; |
|
|
|
|
|
|
|
|
|
|
|
namespace BWP.Web.Pages.B3QingDaoWanFu.Reports |
|
|
|
|
|
{ |
|
|
|
|
|
class PayAnalyse : DFBrowseGridReportPage<Pay> |
|
|
|
|
|
{ |
|
|
|
|
|
protected override string Caption |
|
|
|
|
|
{ |
|
|
|
|
|
get { return "付款单分析"; } |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected override string AccessRoleName |
|
|
|
|
|
{ |
|
|
|
|
|
get { return "B3ButcherManage.付款单.访问"; } |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CheckBoxListWithReverseSelect checkBoxList; |
|
|
|
|
|
protected override void InitQueryPanel(QueryPanel queryPanel) |
|
|
|
|
|
{ |
|
|
|
|
|
base.InitQueryPanel(queryPanel); |
|
|
|
|
|
var panel = queryPanel.CreateTab("显示字段"); |
|
|
|
|
|
|
|
|
|
|
|
checkBoxList = new CheckBoxListWithReverseSelect() { RepeatColumns = 6, RepeatDirection = RepeatDirection.Horizontal }; |
|
|
|
|
|
|
|
|
|
|
|
var list = new List<Tuple<string, string>>(); |
|
|
|
|
|
list.Add(new Tuple<string, string>("BillType", "单据类型")); |
|
|
|
|
|
list.Add(new Tuple<string, string>("ID", "单号")); |
|
|
|
|
|
list.Add(new Tuple<string, string>("AccountingUnit_Name", "会计单位")); |
|
|
|
|
|
list.Add(new Tuple<string, string>("Date", "付款日期")); |
|
|
|
|
|
list.Add(new Tuple<string, string>("Money", "付款金额")); |
|
|
|
|
|
var section = mPageLayoutManager.AddSection("显示字段", "显示字段"); |
|
|
|
|
|
section.ApplyLayout(list, mPageLayoutManager); |
|
|
|
|
|
foreach (var item in list) |
|
|
|
|
|
checkBoxList.Items.Add(new ListItem(item.Item2, item.Item1)); |
|
|
|
|
|
panel.EAdd(checkBoxList); |
|
|
|
|
|
mQueryControls.Add("显示字段", checkBoxList); |
|
|
|
|
|
mQueryControls.EnableHoldLastControlNames.Add("显示字段"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
DropDownList billType; |
|
|
|
|
|
protected override void AddQueryControls(VLayoutPanel vPanel)//查询条件
|
|
|
|
|
|
{ |
|
|
|
|
|
var layout = new LayoutManager("Main", mDFInfo, mQueryContainer); |
|
|
|
|
|
layout.Add("AccountingUnit_ID", new SimpleLabel("会计单位"), QueryCreator.DFChoiceBox(mDFInfo.Fields["AccountingUnit_ID"], B3FrameworksConsts.DataSources.授权会计单位全部)); |
|
|
|
|
|
layout.Add("Supplier_ID", new SimpleLabel("供应商"), QueryCreator.DFChoiceBox(mDFInfo.Fields["Supplier_ID"], B3ButcherManageConsts.DataSources.供应商)); |
|
|
|
|
|
layout.Add("Date", new SimpleLabel("付款日期"), QueryCreator.TimeRange(mDFInfo.Fields["Date"], mQueryContainer, "MinDate", "MaxDate")); |
|
|
|
|
|
layout["Date"].NotAutoAddToContainer = true; |
|
|
|
|
|
layout.Add("BillType", new SimpleLabel("单据类型"), billType = new DropDownList()); |
|
|
|
|
|
billType.Items.Add(""); |
|
|
|
|
|
billType.Items.Add("付款单"); |
|
|
|
|
|
billType.Items.Add("预付款单"); |
|
|
|
|
|
|
|
|
|
|
|
var config = new AutoLayoutConfig { Cols = 4 }; |
|
|
|
|
|
layout.Config = config; |
|
|
|
|
|
config.Add("ID"); |
|
|
|
|
|
config.Add("AccountingUnit_ID"); |
|
|
|
|
|
config.Add("Supplier_ID"); |
|
|
|
|
|
config.Add("Date").ColSpan = 4; |
|
|
|
|
|
config.Add("PayTarget"); |
|
|
|
|
|
config.Add("BillType"); |
|
|
|
|
|
vPanel.Add(layout.CreateLayout()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected override Forks.EnterpriseServices.DomainObjects2.DQuery.DQueryDom GetQueryDom() |
|
|
|
|
|
{ |
|
|
|
|
|
var condition = base.GetQueryDom().Where.Conditions; |
|
|
|
|
|
condition.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID)); |
|
|
|
|
|
condition.Add(DQCondition.GreaterThanOrEqual("BillState", 单据状态.已审核)); |
|
|
|
|
|
var tag = mQueryContainer.GetControl<DFNamedValueInput<付款对象>>("PayTarget"); |
|
|
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(UnionTemp))); |
|
|
|
|
|
UnionTemp.Register(query, condition, tag); |
|
|
|
|
|
|
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Receive","收款人")); |
|
|
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field("Receive")); |
|
|
|
|
|
|
|
|
|
|
|
foreach (ListItem item in checkBoxList.Items) |
|
|
|
|
|
{ |
|
|
|
|
|
if (!item.Selected) |
|
|
|
|
|
continue; |
|
|
|
|
|
if (item.Value == "Money") |
|
|
|
|
|
{ |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Sum(item.Value, item.Text)); |
|
|
|
|
|
SumColumnIndexs.Add(query.Columns.Count - 1); |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field(item.Value, item.Text)); |
|
|
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field(item.Value)); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (billType.SelectedIndex > 0) |
|
|
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("BillType", billType.SelectedValue)); |
|
|
|
|
|
|
|
|
|
|
|
return query; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class UnionTemp |
|
|
|
|
|
{ |
|
|
|
|
|
public string BillType { get; set; } |
|
|
|
|
|
|
|
|
|
|
|
public long ID { get; set; } |
|
|
|
|
|
|
|
|
|
|
|
public string Receive { get; set; } |
|
|
|
|
|
|
|
|
|
|
|
public string AccountingUnit_Name { get; set; } |
|
|
|
|
|
|
|
|
|
|
|
public DateTime? Date { get; set; } |
|
|
|
|
|
|
|
|
|
|
|
public Money<金额>? Money { get; set; } |
|
|
|
|
|
|
|
|
|
|
|
public static void Register(DQueryDom root, IList<IDQExpression> condition, DFNamedValueInput<付款对象> tag) |
|
|
|
|
|
{ |
|
|
|
|
|
if (tag.Value.HasValue) |
|
|
|
|
|
condition.Add(DQCondition.EQ("PayTarget", tag.Value)); |
|
|
|
|
|
var q1 = GetSupplierPay(condition); |
|
|
|
|
|
var q2 = GetFarmerPay(condition); |
|
|
|
|
|
if (tag.Value.HasValue) |
|
|
|
|
|
condition.RemoveAt(condition.Count - 1); |
|
|
|
|
|
var q3 = GetAdvancePay(condition,tag); |
|
|
|
|
|
|
|
|
|
|
|
q1.UnionNext.Select = q2; |
|
|
|
|
|
q2.UnionNext.Select = q3; |
|
|
|
|
|
|
|
|
|
|
|
root.RegisterQueryTable(typeof(UnionTemp), new string[] { "BillType", "ID", "Receive", "AccountingUnit_Name", "Date", "Money" }, q1); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static DQueryDom GetSupplierPay(IList<IDQExpression> condition) |
|
|
|
|
|
{ |
|
|
|
|
|
var query = new DQueryDom(new JoinAlias("_p1", typeof(Pay))); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value("付款单"), "BillType")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("ID")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Supplier_Name")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("AccountingUnit_Name")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Date")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Money")); |
|
|
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("PayTarget", 付款对象.供应商)); |
|
|
|
|
|
query.Where.Conditions.Add(DQCondition.And(condition)); |
|
|
|
|
|
return query; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static DQueryDom GetFarmerPay(IList<IDQExpression> condition) |
|
|
|
|
|
{ |
|
|
|
|
|
var main = new JoinAlias("_p2", typeof(Pay)); |
|
|
|
|
|
var detail = new JoinAlias(typeof(Pay_FarmerDetail)); |
|
|
|
|
|
var query = new DQueryDom(main); |
|
|
|
|
|
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "Pay_ID")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value("付款单"), "BillType")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("ID")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Farmer_Name", detail)); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("AccountingUnit_Name")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Date")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Money", detail)); |
|
|
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("PayTarget", 付款对象.养殖户)); |
|
|
|
|
|
query.Where.Conditions.Add(DQCondition.And(condition)); |
|
|
|
|
|
return query; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static DQueryDom GetAdvancePay(IList<IDQExpression> condition, DFNamedValueInput<付款对象> tag) |
|
|
|
|
|
{ |
|
|
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(AdvancePay))); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value("预付款单"), "BillType")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("ID")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Supplier_Name")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("AccountingUnit_Name")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Date")); |
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("Money")); |
|
|
|
|
|
query.Where.Conditions.Add(DQCondition.And(condition)); |
|
|
|
|
|
if (tag.Value == 付款对象.养殖户) |
|
|
|
|
|
query.Where.Conditions.Add(DQCondition.EQ(DQExpression.Value(1), DQExpression.Value(0))); |
|
|
|
|
|
return query; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |