diff --git a/B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj b/B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj
index fc00557..57ec4fb 100644
--- a/B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj
+++ b/B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj
@@ -155,6 +155,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..39e6369
--- /dev/null
+++ b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Overlays/PayEdit_Ext.cs
@@ -0,0 +1,125 @@
+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);
+ 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/PluginClass.cs b/B3QingDaoWanFu.Web/PluginClass.cs
index edb2af1..5dee340 100644
--- a/B3QingDaoWanFu.Web/PluginClass.cs
+++ b/B3QingDaoWanFu.Web/PluginClass.cs
@@ -21,6 +21,7 @@ namespace BWP.B3QingDaoWanFu
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(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 bc49aa5..c45a792 100644
--- a/B3QingDaoWanFu/B3QingDaoWanFu.csproj
+++ b/B3QingDaoWanFu/B3QingDaoWanFu.csproj
@@ -154,6 +154,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("养殖户金额不等于本次付款金额");
+ }
+ }
+}