diff --git a/B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj b/B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj
index eeb7c22..e1af390 100644
--- a/B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj
+++ b/B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj
@@ -170,6 +170,9 @@
ASPXCodeBehind
+
+ ASPXCodeBehind
+
ASPXCodeBehind
diff --git a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Overlays/PayEdit_Ext.cs b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Overlays/PayEdit_Ext.cs
new file mode 100644
index 0000000..cfc3903
--- /dev/null
+++ b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Overlays/PayEdit_Ext.cs
@@ -0,0 +1,129 @@
+using BWP.B3ButcherManage.BO;
+using BWP.Web.Layout;
+using BWP.Web.Pages.B3ButcherManage.Bills.Pay_;
+using BWP.Web.WebControls;
+using Forks.EnterpriseServices.DataForm;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Web.UI.WebControls;
+using TSingSoft.WebControls2;
+using Forks.Utils.Collections;
+using BWP.B3ButcherManage.NamedValueTemplate;
+using Forks.EnterpriseServices.DomainObjects2.DQuery;
+using Forks.EnterpriseServices.DomainObjects2;
+using Forks.EnterpriseServices.SqlDoms;
+
+namespace BWP.Web.Pages.B3QingDaoWanFu.Overlays
+{
+ class PayEdit_Ext : PayEdit
+ {
+ protected override void CustomerAddBasePropertys(Layout.LayoutManager layoutManager)
+ {
+ base.CustomerAddBasePropertys(layoutManager);
+ ((AutoLayoutConfig)layoutManager.Config).Add("PayTarget");
+ }
+
+ protected override void BuildBody(System.Web.UI.Control control)
+ {
+ base.BuildBody(control);
+ if (CanSave)
+ {
+ dialogButton.BeforeClientClick += " var pt=__DFContainer.getValue('PayTarget'); if (pt == '') { alert('先选择付款对象');return false;}";
+ }
+ AddFarmerDetails(control.EAdd(new TitlePanel("养殖户明细", "养殖户明细")));
+ }
+
+ DFEditGrid _farmerGrid;
+ private void AddFarmerDetails(TitlePanel titlePanel)
+ {
+ var vPanel = titlePanel.EAdd(new VLayoutPanel());
+ var editor = new DFCollectionEditor(() => Dmo.FarmerDetails);
+ editor.AllowDeletionFunc = () => CanSave;
+ editor.CanSelectFunc = (detail) => CanSave;
+ editor.CanDeleteFunc = detail => CanSave;
+ editor.IsEditableFunc = (field, detail) => CanSave;
+
+ _farmerGrid = titlePanel.EAdd(new DFEditGrid(editor) { Width = Unit.Percentage(100) });
+
+ _farmerGrid.Columns.Add(new DFEditGridColumn("Farmer_Name"));
+ _farmerGrid.Columns.Add(new DFEditGridColumn("Farmer_IDCard"));
+ _farmerGrid.Columns.Add(new DFEditGridColumn("Farmer_BankAccount"));
+ _farmerGrid.Columns.EAdd(new DFEditGridColumn("Number")).SumMode = SumMode.Sum;
+ _farmerGrid.Columns.EAdd(new DFEditGridColumn("Weight")).SumMode = SumMode.Sum;
+ _farmerGrid.Columns.EAdd(new DFEditGridColumn("Money")).SumMode = SumMode.Sum;
+
+ var section = mPageLayoutManager.AddSection("FarmerDetaiColumns", "养殖户明细");
+ titlePanel.SetPageLayoutSetting(mPageLayoutManager, section.Name);
+ section.ApplyLayout(_farmerGrid, mPageLayoutManager, DFInfo.Get(typeof(Pay_FarmerDetail)));
+ }
+
+ protected override void AfterSelectedStatPay(IList payDetails)
+ {
+ _farmerGrid.GetFromUI();
+ mDFContainer.GetFromUIParitially("PayTarget");
+ if (Dmo.PayTarget != 付款对象.养殖户)
+ return;
+ var ids = payDetails.Select(x => x.StatPay_ID).Where(x => x.HasValue);
+ if (ids.Count() == 0)
+ return;
+ AddFarmerDetails(ids);
+ _farmerGrid.DataBind();
+ }
+
+ void AddFarmerDetails(IEnumerable statpayIDs)
+ {
+ var stat = new JoinAlias(typeof(StatPay));
+ var detail = new JoinAlias(typeof(Weigh_FarmerDetail));
+ var query = new DQueryDom(stat);
+ query.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), DQCondition.EQ(stat, "Weigh_ID", detail, "Weigh_ID"));
+ query.Columns.Add(DQSelectColumn.Field("ID", stat));
+ query.Columns.Add(DQSelectColumn.Field("ID", detail));
+ query.Columns.Add(DQSelectColumn.Field("Farmer_ID", detail));
+ query.Columns.Add(DQSelectColumn.Field("Number", detail));
+ query.Columns.Add(DQSelectColumn.Field("ExeWeight", detail));
+ query.Columns.Add(DQSelectColumn.Field("ExtMoney", detail));
+ query.Columns.Add(DQSelectColumn.Field("Farmer_Name", detail));
+ query.Columns.Add(DQSelectColumn.Field("Farmer_IDCard", detail));
+ query.Columns.Add(DQSelectColumn.Field("Farmer_BankAccount", detail));
+ query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("ID"), statpayIDs.Select(x => DQExpression.Value(x)).ToArray()));
+ using (var session = Forks.EnterpriseServices.DomainObjects2.Dmo.NewSession())
+ {
+ using (var reader = session.ExecuteReader(query))
+ {
+ while (reader.Read())
+ {
+ var did = (long)reader[1];
+ if (Dmo.FarmerDetails.Any(x => x.Weight_FarmerDetail_ID == did))
+ continue;
+
+ var entity = new Pay_FarmerDetail();
+ entity.StatPay_ID = (long)reader[0];
+ entity.Weight_FarmerDetail_ID = did;
+ entity.Farmer_ID = (long?)reader[2];
+ entity.Number = (int?)reader[3];
+ entity.Weight = (decimal?)reader[4];
+ entity.Money = (decimal?)reader[5];
+ entity.Farmer_Name = (string)reader[6];
+ entity.Farmer_IDCard = (string)reader[7];
+ entity.Farmer_BankAccount = (string)reader[8];
+ Dmo.FarmerDetails.Add(entity);
+ }
+ }
+ }
+ }
+
+ public override void GetFromUI()
+ {
+ base.GetFromUI();
+ _farmerGrid.GetFromUI();
+ }
+
+ public override void AppToUI()
+ {
+ base.AppToUI();
+ _farmerGrid.DataBind();
+ }
+ }
+}
diff --git a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/PayInfoExport.cs b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/PayInfoExport.cs
index ba31fcf..e8a3e9f 100644
--- a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/PayInfoExport.cs
+++ b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/PayInfoExport.cs
@@ -1,5 +1,6 @@
using BWP.B3ButcherManage;
using BWP.B3ButcherManage.BO;
+using BWP.B3ButcherManage.NamedValueTemplate;
using BWP.B3Frameworks;
using BWP.Web.Layout;
using BWP.Web.Utils;
@@ -32,12 +33,14 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Reports
queryPanel.ConditonPanel.EAdd(CreateExportTypePanel());
}
- DFBoolComboBox payTarget;
+ DFNamedValueInput<付款对象> payTarget;
private HLayoutPanel CreateExportTypePanel()
{
var panel = new HLayoutPanel();
panel.Add(new SimpleLabel("付款对象"));
- payTarget = panel.Add(new DFBoolComboBox() { TrueDisplayValue = "供应商", FalseDisplayValue = "养殖户" });
+ payTarget = panel.Add(QueryCreator.DFNameValueInput<付款对象>(mDFInfo.Fields["PayTarget"]));
+ payTarget.Value = 付款对象.供应商;
+ payTarget.EnableTopItem = false;
return panel;
}
@@ -71,22 +74,17 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Reports
var t = string.Format(SubTitle, GetMinDate());
var query = base.GetQueryDom();
query.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("ROW_NUMBER() OVER(order by [_bill].[ID])"), t + "序号"));
- if (!payTarget.Value.Value)
+ if (payTarget.Value == 付款对象.养殖户)
{
var root = query.From.RootSource.Alias;
- var detail = new JoinAlias(typeof(Pay_Detail));
- var rel = new JoinAlias(typeof(Pay_Advance_Relate));
- var adv = new JoinAlias(typeof(AdvancePay_Detail));
+ var detail = new JoinAlias(typeof(Pay_FarmerDetail));
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(root, "ID", detail, "Pay_ID"));
- query.From.AddJoin(JoinType.Left, new DQDmoSource(rel), DQCondition.EQ(detail, "ID", rel, "Pay_Detail_ID"));
- query.From.AddJoin(JoinType.Left, new DQDmoSource(adv), DQCondition.EQ(rel, "AdvancePay_Detail_ID", adv, "ID"));
query.Columns.Add(DQSelectColumn.Field("ID", root, t + "付款单号"));
- query.Columns.Add(DQSelectColumn.Field("Farmer_Bank", adv, t + "开户银行"));
- query.Columns.Add(DQSelectColumn.Field("Farmer_BankAccount", adv, t + "卡号"));
- query.Columns.Add(DQSelectColumn.Field("Farmer_Name", adv, t + "姓名"));
- query.Columns.Add(DQSelectColumn.Field("Money", adv, 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");
- query.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field(adv, "ID")));
}
else
{
@@ -98,6 +96,7 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Reports
query.Columns.Add(DQSelectColumn.Field("Remark", t + "备注"));
if (!purchaseType.IsEmpty)
DetailTemp.AddPurchaseTypeCondition(query, long.Parse(purchaseType.Value));
+ query.Where.Conditions.Add(DQCondition.EQ("PayTarget", payTarget.Value));
foreach (var c in query.Columns)
ColumnNames.Add(c.Name);
return query;
diff --git a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/StatPayAnalyse.cs b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/StatPayAnalyse.cs
index 927b39c..1b234b6 100644
--- a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/StatPayAnalyse.cs
+++ b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Reports/StatPayAnalyse.cs
@@ -1,7 +1,9 @@
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.Utils;
using Forks.EnterpriseServices.DomainObjects2;
@@ -136,6 +138,7 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Reports
mDisplayHelper.AddOptionItem("棚前头数", "_detail", "Number", false, true);
mDisplayHelper.AddOptionItem("棚前重量", "_detail", "ExeWeight", false, true);
mDisplayHelper.AddOptionItem("棚前金额", "_detail", "ExtMoney", false, true);
+ mDisplayHelper.AddOptionItem("付款对象", "_pay", "PayTarget", false);
AddQueryOption("选项", mDisplayHelper.GetAllDisplayNames(), mDisplayHelper.GetDefaultSelelectedDisplayNames());
base.AddQueryOptions(vPanel);
@@ -148,15 +151,42 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Reports
var root = query.From.RootSource.Alias;
var weight = new JoinAlias("_weight", typeof(WeighBill));
var detail = new JoinAlias("_detail", typeof(Weigh_FarmerDetail));
+ var pay = new JoinAlias("_pay", typeof(PayTemp));
+ PayTemp.Register(query);
query.From.AddJoin(JoinType.Left, new DQDmoSource(weight), DQCondition.EQ(root, "Weigh_ID", weight, "ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(root, "Weigh_ID", detail, "Weigh_ID"));
+ query.From.AddJoin(JoinType.Left, new DQDmoSource(pay), DQCondition.EQ(pay, "StatPay_ID", root, "ID"));
mDisplayHelper.AddAlias("_bill", root);
mDisplayHelper.AddAlias("_weight", weight);
mDisplayHelper.AddAlias("_detail", detail);
+ mDisplayHelper.AddAlias("_pay", pay);
mDisplayHelper.AddSelectColumns(query, (name) => OptionIsSelected("选项", name), SumColumnNames, ColumnNames);
query.Where.Conditions.Add(DQCondition.EQ(root, "Domain_ID", DomainContext.Current.ID));
return query;
}
+
+ class PayTemp
+ {
+ public long StatPay_ID { get; set; }
+
+ public NamedValue<付款对象>? PayTarget { get; set; }
+
+ public static void Register(DQueryDom root)
+ {
+ var payDetail = new JoinAlias(typeof(Pay_Detail));
+ var pay = new JoinAlias("_pay", typeof(Pay));
+
+ var query = new DQueryDom(pay);
+ query.From.AddJoin(JoinType.Inner, new DQDmoSource(payDetail), DQCondition.EQ(payDetail, "Pay_ID", pay, "ID"));
+ query.Columns.Add(DQSelectColumn.Field("StatPay_ID", payDetail));
+ query.Columns.Add(DQSelectColumn.Field("PayTarget"));
+ query.GroupBy.Expressions.Add(DQExpression.Field(payDetail, "StatPay_ID"));
+ query.GroupBy.Expressions.Add(DQExpression.Field("PayTarget"));
+ query.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThanOrEqual("BillState", 单据状态.已审核), DQCondition.EQ("Domain_ID", DomainContext.Current.ID)));
+
+ root.RegisterQueryTable(typeof(PayTemp), new string[] { "StatPay_ID", "PayTarget" }, query);
+ }
+ }
}
}
diff --git a/B3QingDaoWanFu.Web/PluginClass.cs b/B3QingDaoWanFu.Web/PluginClass.cs
index d20cad0..8ca34f6 100644
--- a/B3QingDaoWanFu.Web/PluginClass.cs
+++ b/B3QingDaoWanFu.Web/PluginClass.cs
@@ -22,7 +22,8 @@ namespace BWP.B3QingDaoWanFu
WpfPageFactory.RegisterPageOverlay(typeof(StatPayEdit).FullName, typeof(StatPayEdit_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(StatPayAnalyse).FullName, typeof(StatPayAnalyse_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);
GlobalFlags.On(B3ButcherManageConsts.GlobalFlags.StatPayAddRewardWithButcherUseWeight);
GlobalFlags.On(B3SaleConsts.Flags.MarketingActivityEnableAdjustPrice);
GlobalFlags.On(B3SaleConsts.Flags.SendOutStoreNoAvailableStorage);
diff --git a/B3QingDaoWanFu/B3QingDaoWanFu.csproj b/B3QingDaoWanFu/B3QingDaoWanFu.csproj
index 4fc42d8..fa6f2dc 100644
--- a/B3QingDaoWanFu/B3QingDaoWanFu.csproj
+++ b/B3QingDaoWanFu/B3QingDaoWanFu.csproj
@@ -172,6 +172,7 @@
+
diff --git a/B3QingDaoWanFu/TypeIOCs/PayBLTypeIoc.cs b/B3QingDaoWanFu/TypeIOCs/PayBLTypeIoc.cs
new file mode 100644
index 0000000..e245a98
--- /dev/null
+++ b/B3QingDaoWanFu/TypeIOCs/PayBLTypeIoc.cs
@@ -0,0 +1,27 @@
+using BWP.B3ButcherManage.BL;
+using BWP.B3ButcherManage.BO;
+using BWP.B3ButcherManage.NamedValueTemplate;
+using BWP.B3Frameworks;
+using Forks.EnterpriseServices.BusinessInterfaces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using TSingSoft.WebPluginFramework;
+
+namespace BWP.B3QingDaoWanFu.TypeIOCs
+{
+ [TypeIOC(typeof(PayBL), typeof(PayBL.BillBLIOCs.BeforeCheck))]
+ public class PayBLTypeIoc : PayBL.BillBLIOCs.BeforeCheck
+ {
+ public void Invoke(IDmoContext context, Pay dmo)
+ {
+ if (dmo.PayTarget != 付款对象.养殖户)
+ return;
+ var farmerMoney = dmo.FarmerDetails.Sum(x => x.Money.EToDecimal() ?? 0);
+ var tMoney = dmo.Details.Sum(x => x.Money.EToDecimal() ?? 0);
+ if (farmerMoney != tMoney)
+ throw new Exception("养殖户金额不等于本次付款金额");
+ }
+ }
+}