From f175809dd3dac2869e2433f438603e837b7594fa Mon Sep 17 00:00:00 2001 From: yibo <361071264@qq.com> Date: Fri, 4 May 2018 10:06:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8D=95No.139697=20?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E5=8F=88=E5=90=8C=E6=84=8F=E4=BA=86=E8=BF=99?= =?UTF-8?q?=E4=B8=AA=E6=96=B9=E6=A1=88=E3=80=82=E9=83=81=E9=97=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj | 3 + .../B3QingDaoWanFu/Overlays/PayEdit_Ext.cs | 129 ++++++++++++++++++ .../B3QingDaoWanFu/Reports/PayInfoExport.cs | 25 ++-- .../B3QingDaoWanFu/Reports/StatPayAnalyse.cs | 30 ++++ B3QingDaoWanFu.Web/PluginClass.cs | 3 +- B3QingDaoWanFu/B3QingDaoWanFu.csproj | 1 + B3QingDaoWanFu/TypeIOCs/PayBLTypeIoc.cs | 27 ++++ 7 files changed, 204 insertions(+), 14 deletions(-) create mode 100644 B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Overlays/PayEdit_Ext.cs create mode 100644 B3QingDaoWanFu/TypeIOCs/PayBLTypeIoc.cs 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("养殖户金额不等于本次付款金额"); + } + } +}