From 7ae57bfb9f87818cf584133cca95ebcf276a8e74 Mon Sep 17 00:00:00 2001 From: yibo <361071264@qq.com> Date: Wed, 7 Nov 2018 10:41:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=93=E7=AE=97=E5=8D=95=E5=A5=96=E7=BD=9A?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Bills/StatPay_/StatPayEdit.cs | 61 +++++++++++++++++++ .../BL/Bill/StatPayBL/StatPayBL.cs | 49 +++------------ 2 files changed, 68 insertions(+), 42 deletions(-) diff --git a/B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayEdit.cs b/B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayEdit.cs index 71f7b89..a857fab 100644 --- a/B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayEdit.cs +++ b/B3SheepButcherManage.Web/Pages/B3SheepButcherManage/Bills/StatPay_/StatPayEdit.cs @@ -17,6 +17,13 @@ using BWP.Web.Layout; using BWP.Web.Utils; using BWP.B3SheepButcherManage; using BWP.B3CowButcherManage; +using CW = BWP.B3CowButcherManage.BO; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.SqlDoms; +using BWP.B3Frameworks.BO.NamedValueTemplate; +using TSingSoft.WebPluginFramework; +using Forks.EnterpriseServices.SimpleScript; namespace BWP.Web.Pages.B3SheepButcherManage.Bills.StatPay_ { @@ -417,6 +424,17 @@ __DFContainer.getControl('Employee_ID').fill('',''); e.Control.DataKind = B3CowButcherManageConsts.DataSources.奖罚项目; e.Control.DFDisplayField = "RewardItem_Name"; e.Control.OnBeforeDrop = "this.codeArgument=__DFContainer.getValue('AccountingUnit_ID');"; + e.Control.AutoPostBack = true; + e.Control.SelectedValueChanged += (ss, ee) => + { + GetFromUI(); + if (!e.Control.IsEmpty) + { + var itemId = long.Parse(e.Control.Value); + SetExceptionByRewardItemId(Dmo, itemId); + _exceptionGrid.DataBind(); + } + }; }; _otherRewardGrid.Columns.Add(column); _otherRewardGrid.Columns.EAdd(new DFEditGridColumn("Number") { SumMode = SumMode.Sum }).InitEditControl += (sender, e) => @@ -455,6 +473,49 @@ __DFContainer.getControl('Employee_ID').fill('',''); vPanel.Add(_otherRewardGrid); } + void SetExceptionByRewardItemId(StatPay dmo, long rewardItemId) + { + var detail = dmo.OtherRewardDetails.First(x => x.RewardItem_ID == rewardItemId); + var sanction = new JoinAlias(typeof(CW.SanctionSetting)); + var abnormalItem = new JoinAlias(typeof(CW.RewardItem)); + + var dom = new DQueryDom(sanction); + dom.From.AddJoin(JoinType.Left, new DQDmoSource(abnormalItem), + DQCondition.EQ(sanction, "RewardItem_ID", abnormalItem, "ID")); + dom.Columns.Add(DQSelectColumn.Field("Condition", sanction)); + dom.Columns.Add(DQSelectColumn.Field("BeforeScript", sanction)); + dom.Where.Conditions.Add(DQCondition.EQ(sanction, "FitBill", 奖罚设置适用单据类型.结算单)); + dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.已审核)); + dom.Where.Conditions.Add(DQCondition.EQ(abnormalItem, "ID", rewardItemId)); + var sanctionList = dom.EExecuteList(); + + var runner = new Runner(); + foreach (var item in sanctionList) + { + if (string.IsNullOrEmpty(item.Item1)) + continue; + if (string.IsNullOrEmpty(item.Item2)) + continue; + runner.Global["奖罚依据"] = ""; + runner.Execute(item.Item2); + var bType = TypeMarshal.AsString(runner.Global["奖罚依据"]); + if (bType == "羊结算单") + { + runner.Global["单价"] = 0m; + runner.Execute(item.Item2); + var price = TypeMarshal.AsNumber(runner.Global["单价"]); + detail.Price = price; + if (price == 0) + { + detail.Price = null; + } + break; + } + } + + detail.Money = detail.Number * detail.Price; + } + private void AddOtherRewardToolsBar(VLayoutPanel vPanel) { if (!CanSave || IsNew) diff --git a/B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs b/B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs index 9cfeb61..25d8246 100644 --- a/B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs +++ b/B3SheepButcherManage/BL/Bill/StatPayBL/StatPayBL.cs @@ -127,7 +127,6 @@ namespace BWP.B3SheepButcherManage.BL } - FillOtherRewardInfo(dmo); foreach (StatPay_OtherReward detail in dmo.OtherRewardDetails) { detail.Money = detail.Price * detail.Number; @@ -162,40 +161,6 @@ namespace BWP.B3SheepButcherManage.BL base.beforeSave(dmo); } - void FillOtherRewardInfo(StatPay dmo) - { - var tags = dmo.OtherRewardDetails.Where(x => x.RewardItem_ID.HasValue && x.Price == null); - if (tags.Count() == 0) - return; - var sanction = new JoinAlias(typeof(CW.SanctionSetting)); - var abnormalItem = new JoinAlias(typeof(CW.RewardItem)); - - var dom = new DQueryDom(sanction); - dom.From.AddJoin(JoinType.Left, new DQDmoSource(abnormalItem), - DQCondition.EQ(sanction, "RewardItem_ID", abnormalItem, "ID")); - dom.Columns.Add(DQSelectColumn.Field("ID", abnormalItem)); - dom.Columns.Add(DQSelectColumn.Field("Condition", sanction)); - dom.Columns.Add(DQSelectColumn.Field("BeforeScript", sanction)); - dom.Where.Conditions.Add(DQCondition.EQ(sanction, "FitBill", 奖罚设置适用单据类型.结算单)); - dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.已审核)); - dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(abnormalItem, "ID"), tags.Select(x => DQExpression.Value(x)).ToArray())); - var sanctionList = dom.EExecuteList(Session); - - var runner = new Runner(); - foreach (var item in sanctionList) - { - var detail = dmo.OtherRewardDetails.First(x => x.RewardItem_ID == item.Item1); - runner.Global["单价"] = 0m; - runner.Execute(item.Item2); - var price = TypeMarshal.AsNumber(runner.Global["单价"]); - detail.Price = price; - if (price == 0) - { - detail.Price = null; - } - } - } - public void WeightCreateStayDom(StatPay dmo) { if (dmo.ValuationArea_ID == null) @@ -336,24 +301,24 @@ namespace BWP.B3SheepButcherManage.BL { var 屠宰记录头数 = dmo.Details.Sum(x => x.Number ?? 0); var 急宰记录头数 = dmo.HurryButcherDetails.Sum(x => x.Number ?? 0); //StatPay_HurryButcher - var 磅后记录头数 = dmo.HurryButcherDetails.Sum(x => x.Number ?? 0); + //var 磅后记录头数 = dmo.HurryButcherDetails.Sum(x => x.Number ?? 0); // if (屠宰记录头数 + 急宰记录头数 == dmo.RealNumber) // { // return; // } - var 总磅后头数 = 屠宰记录头数 + 磅后记录头数; + var 总头数 = 屠宰记录头数 + 急宰记录头数; var 过磅单已结算 = Get过磅单已结算(dmo.ID, dmo.WeightBill_ID); var 已结算过磅单头数 = 过磅单已结算.Item1; var 已结算过磅单重量 = Math.Round((decimal)过磅单已结算.Item2, 2); - if (总磅后头数 + 已结算过磅单头数 > (dmo.WeighBill_BuyNum ?? 0)) + if (总头数 + 已结算过磅单头数 > (dmo.WeighBill_BuyNum ?? 0)) { - throw new Exception("已结算头数:" + 已结算过磅单头数 + " 本次结算头数:" + 总磅后头数 + "不能大于 过磅单:" + dmo.WeightBill_ID + " 总收购头数:" + dmo.WeighBill_BuyNum); + throw new Exception("已结算头数:" + 已结算过磅单头数 + " 本次结算头数:" + 总头数 + "不能大于 过磅单:" + dmo.WeightBill_ID + " 总收购头数:" + dmo.WeighBill_BuyNum); } - dmo.RealNumber = 屠宰记录头数 + 急宰记录头数;//收购头数计算 + dmo.RealNumber = 总头数;//收购头数计算 var 榜前急宰重量 = Math.Round(dmo.HurryButcherDetails.Sum(x => (decimal?)x.Weight ?? 0), 2); - if (总磅后头数 + 已结算过磅单头数 == (dmo.WeighBill_BuyNum ?? 0)) + if (总头数 == (dmo.WeighBill_BuyNum ?? 0)) { //如果刚好等于过磅单的头数,则重量直接减掉,防止小数点 dmo.RealWeight = Math.Round((decimal)(dmo.WeighBill_BuyWeigh1 ?? 0), 2);//收购重量计算 @@ -361,7 +326,7 @@ namespace BWP.B3SheepButcherManage.BL else { var 过磅单每头猪的重量 = dmo.WeighBill_BuyWeigh1 / dmo.WeighBill_BuyNum; - var 本次榜后结算重量 = Math.Round((总磅后头数 * 过磅单每头猪的重量 ?? 0), 2); + var 本次榜后结算重量 = Math.Round((总头数 * 过磅单每头猪的重量 ?? 0), 2); dmo.RealWeight = 榜前急宰重量 + 本次榜后结算重量; } //更新到数据库