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.
 

135 lines
5.3 KiB

using BWP.B3ButcherManage;
using BWP.B3ButcherManage.BO;
using BWP.B3Frameworks;
using BWP.Web.Layout;
using BWP.Web.Utils;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.SqlDoms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebControls2;
namespace BWP.Web.Pages.B3QingDaoWanFu.Reports
{
class PayInfoExport : DFGridReportPage<Pay>
{
protected override string AccessRoleName
{
get { return "B3QingDaoWanFu.报表.付款清单导出"; }
}
protected override string Caption
{
get { return "付款清单导出"; }
}
protected override void InitQueryPanel(WebControls.QueryPanel queryPanel)
{
base.InitQueryPanel(queryPanel);
queryPanel.ConditonPanel.EAdd(CreateExportTypePanel());
}
DFBoolComboBox payTarget;
private HLayoutPanel CreateExportTypePanel()
{
var panel = new HLayoutPanel();
panel.Add(new SimpleLabel("付款对象"));
payTarget = panel.Add(new DFBoolComboBox() { TrueDisplayValue = "供应商", FalseDisplayValue = "养殖户" });
return panel;
}
DFChoiceBox purchaseType;
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("PurchaseType_ID", new SimpleLabel("收购类型"), purchaseType = QueryCreator.DFChoiceBox(mDFInfo.Fields["Supplier_ID"], B3ButcherManageConsts.DataSources.));
layout["PurchaseType_ID"].NotAutoAddToContainer = true;
layout.Add("Date", new SimpleLabel("付款日期"), QueryCreator.DateRange(mDFInfo.Fields["Date"], mQueryContainer, "MinDate", "MaxDate", DateTime.Today, null));
layout["Date"].NotAutoAddToContainer = true;
var config = new AutoLayoutConfig { Cols = 4 };
config.Add("Date");
config.Add("ID");
config.Add("AccountingUnit_ID");
config.Add("Supplier_ID");
config.Add("PurchaseType_ID");
config.Add("BillState");
layout.Config = config;
vPanel.Add(layout.CreateLayout());
}
const string SubTitle = "万福肉联厂委托银行付款打卡清单{0:yyyy年MM月dd日}(本日 表第 表)|";
protected override DQueryDom GetQueryDom()
{
var t = string.Format(SubTitle, GetMinDate());
var query = base.GetQueryDom();
query.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<string>("ROW_NUMBER() OVER(order by [_bill].[ID])"), t + "序号"));
if (!payTarget.Value.Value)
{
var root = query.From.RootSource.Alias;
var detail = new JoinAlias(typeof(Pay_FarmerDetail));
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(root, "ID", detail, "Pay_ID"));
query.Columns.Add(DQSelectColumn.Field("ID", root, t + "付款单号"));
query.Columns.Add(DQSelectColumn.Field("Farmer_Bank", detail, t + "开户银行"));
query.Columns.Add(DQSelectColumn.Field("Farmer_BankAccount", detail, t + "卡号"));
query.Columns.Add(DQSelectColumn.Field("Farmer_Name", detail, t + "姓名"));
query.Columns.Add(DQSelectColumn.Field("Money", detail, t + "金额"));
SumColumnNames.Add("Money");
}
else
{
query.Columns.Add(DQSelectColumn.Field("Supplier_BankAccount", t + "卡号"));
query.Columns.Add(DQSelectColumn.Field("Supplier_Name", t + "姓名"));
query.Columns.Add(DQSelectColumn.Field("Money", t + "金额"));
SumColumnNames.Add("Money");
}
query.Columns.Add(DQSelectColumn.Field("Remark", t + "备注"));
if (!purchaseType.IsEmpty)
DetailTemp.AddPurchaseTypeCondition(query, long.Parse(purchaseType.Value));
foreach (var c in query.Columns)
ColumnNames.Add(c.Name);
return query;
}
DateTime GetMinDate()
{
var date = DateTime.Today;
var dateInput = mQueryContainer.GetControl<DFDateInput>("MinDate");
if (!dateInput.IsEmpty)
date = dateInput.Date;
return date;
}
protected override string ExportExcelName
{
get
{
return string.Format("{0:yyyy年MM月dd日}{1}导出.xlsx", DateTime.Today, Caption);
}
}
}
class DetailTemp
{
public long Pay_ID { get; set; }
public static void AddPurchaseTypeCondition(DQueryDom root, long purchaseTypeID)
{
var query = new DQueryDom(new JoinAlias(typeof(Pay_Detail)));
query.Where.Conditions.Add(DQCondition.EQ("StatPay_PurchaseType_ID", purchaseTypeID));
query.Columns.Add(DQSelectColumn.Field("Pay_ID"));
query.GroupBy.Expressions.Add(DQExpression.Field("Pay_ID"));
root.RegisterQueryTable(typeof(DetailTemp), new string[] { "Pay_ID" }, query);
var detail = new JoinAlias(typeof(DetailTemp));
root.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(root.From.RootSource.Alias, "ID", detail, "Pay_ID"));
}
}
}