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("养殖户金额不等于本次付款金额"); + } + } +}