Browse Source

需求单No.140086

2、付款单分析把客户的预付款单也增加进来;
master
yibo 7 years ago
parent
commit
03f1860712
6 changed files with 262 additions and 61 deletions
  1. +7
    -1
      B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj
  2. +0
    -58
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Overlays/PayAnalyse_Ext.cs
  3. +26
    -0
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Overlays/PayList_Ext.cs
  4. +194
    -0
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/PayAnalyse.cs
  5. +33
    -0
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/PayAnalyse.xml
  6. +2
    -2
      B3QingDaoWanFu.Web/PluginClass.cs

+ 7
- 1
B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj View File

@ -170,7 +170,10 @@
<Compile Include="Pages\B3QingDaoWanFu\ExportUI\GoodsExportToMES.cs"> <Compile Include="Pages\B3QingDaoWanFu\ExportUI\GoodsExportToMES.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
<Compile Include="Pages\B3QingDaoWanFu\Overlays\PayAnalyse_Ext.cs">
<Compile Include="Pages\B3QingDaoWanFu\Overlays\PayList_Ext.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3QingDaoWanFu\Reports\PayAnalyse.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
<Compile Include="Pages\B3QingDaoWanFu\Overlays\PayEdit_Ext.cs"> <Compile Include="Pages\B3QingDaoWanFu\Overlays\PayEdit_Ext.cs">
@ -266,6 +269,9 @@
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Pages\B3QingDaoWanFu\TrustPay_\TrustPayList.xml" /> <EmbeddedResource Include="Pages\B3QingDaoWanFu\TrustPay_\TrustPayList.xml" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3QingDaoWanFu\Reports\PayAnalyse.xml" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.


+ 0
- 58
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Overlays/PayAnalyse_Ext.cs View File

@ -1,58 +0,0 @@
using BWP.B3ButcherManage.BO;
using BWP.B3ButcherManage.NamedValueTemplate;
using BWP.Web.Layout;
using BWP.Web.Pages.B3ButcherManage.Reports;
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.Overlays
{
class PayAnalyse_Ext : PayAnalyse
{
protected override void AddCustomerColumn(Utils.ReportDisplayOptionHelper helper)
{
}
DFNamedValueInput<> payTag;
protected override void AddCustomerCondition(Layout.LayoutManager layout)
{
base.AddCustomerCondition(layout);
payTag = layout.Add("PayTarget", QueryCreator.DFNameValueInput<>(mDFInfo.Fields["PayTarget"]));
payTag.Fill("0", "供应商");
var c = layout.Config as AutoLayoutConfig;
c.Add("PayTarget");
}
protected override Forks.EnterpriseServices.DomainObjects2.DQuery.DQueryDom GetQueryDom()
{
var query = base.GetQueryDom();
var tag = DQSelectColumn.Create(DQExpression.Field("Supplier_Name"), "供应商");
var detail = new JoinAlias(typeof(Pay_FarmerDetail));
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(query.From.RootSource.Alias, "ID", detail, "Pay_ID"));
tag = DQSelectColumn.Create(DQExpression.Field(detail, "Farmer_Name"), "养殖户");
var last = query.Columns.Last();
if (last.Name == "付款金额")
{
query.Columns.Remove(last);
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("PayTarget", .), DQExpression.Field("Money"), DQExpression.Field(detail, "Money"))), "付款金额"));
}
query.Columns.Insert(0, tag);
query.GroupBy.Expressions.Add(tag.Expression);
if (!payTag.IsEmpty)
query.Where.Conditions.Add(DQCondition.EQ("PayTarget", payTag.Value));
if (query.Columns.Last().Name == "付款金额")
{
SumColumnIndexs.Clear();
SumColumnIndexs.Add(query.Columns.Count - 1);
}
return query;
}
}
}

+ 26
- 0
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Overlays/PayList_Ext.cs View File

@ -0,0 +1,26 @@
using BWP.Web.Pages.B3ButcherManage.Bills.Pay_;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebControls2;
namespace BWP.Web.Pages.B3QingDaoWanFu.Overlays
{
class PayList_Ext : PayList
{
protected override void InitToolBar(TSingSoft.WebControls2.HLayoutPanel toolbar)
{
base.InitToolBar(toolbar);
var analyse = toolbar.Controls[toolbar.Controls.Count - 1] as TSButton;
if (analyse.Text == "数据分析")
analyse.OnClientClick = "preventEventDefault(event);OpenUrlInTopTab('B3QingDaoWanFu/Reports/PayAnalyse.aspx','数据分析');";
else
{
var button = new TSButton("数据分析") { UseSubmitBehavior = false };
button.OnClientClick = "preventEventDefault(event);OpenUrlInTopTab('B3QingDaoWanFu/Reports/PayAnalyse.aspx','数据分析');";
toolbar.Add(button);
}
}
}
}

+ 194
- 0
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/PayAnalyse.cs View File

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

+ 33
- 0
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/PayAnalyse.xml View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8" ?>
<Select xmlns="urn:XDQuery">
<Columns>
</Columns>
<From>
<DmoClass class="BWP.B3ButcherManage.BO.Pay, B3ButcherManage"/>
</From>
<Where>
<And>
<EQ>
<Field name="ID"/>
<QBE paramName="ID"/>
</EQ>
<EQ>
<Field name="Supplier_ID"/>
<QBE paramName="Supplier_ID"/>
</EQ>
<EQ>
<Field name="AccountingUnit_ID"/>
<QBE paramName="AccountingUnit_ID"/>
</EQ>
<GreaterThanOrEqual>
<Field name="Date"/>
<QBE paramName="MinDate" />
</GreaterThanOrEqual>
<LessThanOrEqual>
<Field name="Date"/>
<QBE paramName="MaxDate"/>
</LessThanOrEqual>
</And>
</Where>
</Select>

+ 2
- 2
B3QingDaoWanFu.Web/PluginClass.cs View File

@ -23,9 +23,9 @@ namespace BWP.B3QingDaoWanFu
WpfPageFactory.RegisterPageOverlay(typeof(StatPayEdit).FullName, typeof(StatPayEdit_Ext).FullName); WpfPageFactory.RegisterPageOverlay(typeof(StatPayEdit).FullName, typeof(StatPayEdit_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(StatPayAnalyse).FullName, typeof(StatPayAnalyse_Ext).FullName); WpfPageFactory.RegisterPageOverlay(typeof(StatPayAnalyse).FullName, typeof(StatPayAnalyse_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(SaleOutStoreEdit).FullName, typeof(SaleOutStoreEdit_Ext).FullName); WpfPageFactory.RegisterPageOverlay(typeof(SaleOutStoreEdit).FullName, typeof(SaleOutStoreEdit_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(StatPayList).FullName, typeof(StatPayList_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(StatPayList).FullName, typeof(StatPayList_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(BWP.Web.Pages.B3ButcherManage.Bills.Pay_.PayEdit).FullName, typeof(PayEdit_Ext).FullName); WpfPageFactory.RegisterPageOverlay(typeof(BWP.Web.Pages.B3ButcherManage.Bills.Pay_.PayEdit).FullName, typeof(PayEdit_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(BWP.Web.Pages.B3ButcherManage.Reports.PayAnalyse).FullName, typeof(PayAnalyse_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(BWP.Web.Pages.B3ButcherManage.Bills.Pay_.PayList).FullName, typeof(PayList_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(WeighBillEdit).FullName, typeof(WeightBillEdit_Ext).FullName); WpfPageFactory.RegisterPageOverlay(typeof(WeighBillEdit).FullName, typeof(WeightBillEdit_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(WeighBillList).FullName, typeof(WeighBillList_Ext).FullName); WpfPageFactory.RegisterPageOverlay(typeof(WeighBillList).FullName, typeof(WeighBillList_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(BWP.Web.Pages.B3ButcherManage.Bills.Pay_.SelectStatPayDialog).FullName, typeof(SelectStatPayDialog_Ext).FullName); WpfPageFactory.RegisterPageOverlay(typeof(BWP.Web.Pages.B3ButcherManage.Bills.Pay_.SelectStatPayDialog).FullName, typeof(SelectStatPayDialog_Ext).FullName);


Loading…
Cancel
Save