From d6a600acd6a484559743a8c5ad1cc52d152f6b07 Mon Sep 17 00:00:00 2001 From: yibo <361071264@qq.com> Date: Sun, 15 Jul 2018 17:03:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E6=AC=A1=E5=9D=87=E8=A1=A1=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E8=B0=83=E6=95=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Overlays/SaleOutStoreBalance.cs | 171 +++++++++++++++--- 1 file changed, 142 insertions(+), 29 deletions(-) diff --git a/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/SaleOutStoreBalance.cs b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/SaleOutStoreBalance.cs index 75bd642..ae7c495 100644 --- a/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/SaleOutStoreBalance.cs +++ b/B3ButcherManageToSale.Web/Pages/B3ButcherManageToSale/Overlays/SaleOutStoreBalance.cs @@ -68,8 +68,8 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays private Label goodsNameShow, _difNumber, _adjustNumberLabel; DFBoolRadioBox adjustType; DFCheckBox avgAdjust; - VLayoutPanel panel1, panel2; - DFEditGrid _editGrid1, _editGrid2; + VLayoutPanel panel1, panel11, panel2; + DFEditGrid _editGrid1, _editGrid11, _editGrid2; bool byLine { get @@ -142,8 +142,10 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays foreach (var item in list.OrderByDescending(x => x.Number)) details.Add(item); _editGrid1.DataBind(); + _editGrid11.DataBind(); _editGrid2.DataBind(); - panel1.Visible = byLine; + panel1.Visible = byLine && !avgAdjust.Checked; + panel11.Visible = byLine && avgAdjust.Checked; panel2.Visible = !byLine; avgAdjust.Visible = byLine; }; @@ -169,6 +171,7 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays query.Columns.Add(DQSelectColumn.Field("SecondNumber", detail)); query.Columns.Add(DQSelectColumn.Field("Unit", detail)); query.Columns.Add(DQSelectColumn.Field("UnitNum", detail)); + query.Columns.Add(DQSelectColumn.Field("DeliverGoodsLine_ID")); query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Domain_ID", DomainContext.Current.ID), DQCondition.EQ("BillState", 单据状态.未审核))); query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(detail, "SaleGoods_ID", goodsId), DQCondition.EQ("Store_ID", storeID))); @@ -189,6 +192,7 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays item.Unit = (string)reader[6]; item.Number = (Money?)reader[7]; item.SendNumber = item.Number.EToDecimal(); + item.DeliverGoodsLine_ID = (long?)reader[8]; list.Add(item); } } @@ -253,6 +257,7 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays details.Clear(); innerDetails.Clear(); _editGrid1.DataBind(); + _editGrid11.DataBind(); _editGrid2.DataBind(); } } @@ -321,18 +326,25 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays avgAdjust = hPanel.Add(new DFCheckBox() { Text = "平均分配" }); avgAdjust.Style.Add("margin", "0px 20px"); + avgAdjust.AutoPostBack = true; + avgAdjust.CheckedChanged += delegate + { + panel1.Visible = !avgAdjust.Checked; + panel11.Visible = !panel1.Visible; + _editGrid1.DataBind(); + _editGrid11.DataBind(); + }; hPanel.Add(new TSButton("更新报价数量", delegate { AdjustSaleOutStore(); })); AddGrid1(titlePanel); + AddGrid11(titlePanel); AddGrid2(titlePanel); } - void AddGrid1(TitlePanel titlePanel) { panel1 = titlePanel.EAdd(new VLayoutPanel()); var editor = new DFCollectionEditor(() => details); - _editGrid1 = panel1.Add(new DFEditGrid(editor) { Width = Unit.Percentage(100) }); _editGrid1.Columns.Add(new DFEditGridColumn("DeliverGoodsLine_Name")); _editGrid1.Columns.Add(new DFEditGridColumn("SecondUnit")); @@ -369,6 +381,29 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays _editGrid1.Columns.Add(new DFEditGridColumn("AdjustNumber")); } + void AddGrid11(TitlePanel titlePanel) + { + panel11 = titlePanel.EAdd(new VLayoutPanel()); + var editor = new DFCollectionEditor(() => details); + editor.IsEditableFunc = (field, detail) => { return field.Name == "SendNumber"; }; + + _editGrid11 = panel11.Add(new DFEditGrid(editor) { Width = Unit.Percentage(100) }); + _editGrid11.ID = "_gridUp"; + _editGrid11.ClientIDMode = ClientIDMode.Static; + _editGrid11.Columns.Add(new DFEditGridColumn("DeliverGoodsLine_Name")); + _editGrid11.Columns.Add(new DFEditGridColumn("SecondUnit")); + _editGrid11.Columns.Add(new DFEditGridColumn("SecondNumber")); + _editGrid11.Columns.Add(new DFEditGridColumn("Unit")); + _editGrid11.Columns.Add(new DFEditGridColumn("Number")); + var col = new DFEditGridColumn("SendNumber"); + col.InitEditControl += (sender, e) => + { + e.Control.Attributes["onchange"] = "_SumNumberUp();"; + }; + _editGrid11.Columns.Add(col); + _editGrid11.Columns.Add(new DFEditGridColumn("AdjustNumber")); + } + void SaveCookie(string value) { HttpCookie cookie = new HttpCookie("innerDetails", value); @@ -383,6 +418,8 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays editor.IsEditableFunc = (field, detail) => { return field.Name == "SendNumber"; }; _editGrid2 = panel2.Add(new DFEditGrid(editor) { Width = Unit.Percentage(100) }); + _editGrid2.ID = "_gird2"; + _editGrid2.ClientIDMode = ClientIDMode.Static; _editGrid2.Columns.Add(new DFEditGridColumn("Date")); _editGrid2.Columns.Add(new DFEditGridColumn("ID")); _editGrid2.Columns.Add(new DFEditGridColumn("CustomerName")); @@ -406,6 +443,7 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays { if (avgAdjust.Checked) { + _editGrid11.GetFromUI(); innerDetails.Clear(); AvgAdjust(); } @@ -422,20 +460,38 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays void AvgAdjust() { - var total = details.Sum(x => (x.Number ?? 0).Value); - if (total == 0) + var f = details.FirstOrDefault(); + if (f == null) return; - var avg = productNumber / total; - var f = details.First(); var list = CreateDetailsByBill(f.Goods_ID, f.Store_ID); - foreach (var item in list) + foreach (var item in details) { - var entity = new InnerDetail(); - entity.ID = item.ID; - entity.DetailID = item.DetailID; - entity.Number = item.Number.EToDecimal(); - entity.SendNumber = entity.Number * avg; - innerDetails.Add(entity); + if (item.Number == 0) + continue; + if ((item.SendNumber ?? 0) == item.Number.Value) + continue; + var avg = item.SendNumber / item.Number; + var tag = list.Where(x => x.DeliverGoodsLine_ID == item.DeliverGoodsLine_ID); + var lastNum = (item.SendNumber ?? 0); + bool exist = false; + foreach (var t in tag) + { + var entity = new InnerDetail(); + entity.ID = t.ID; + entity.DetailID = t.DetailID; + entity.Number = t.Number.EToDecimal(); + entity.SendNumber = entity.Number * avg; + if (entity.SendNumber.HasValue) + { + entity.SendNumber = decimal.Floor(entity.SendNumber.Value); + lastNum -= entity.SendNumber.Value; + } + innerDetails.Add(entity); + if (!exist) + exist = true; + } + if (lastNum != 0 && exist) + innerDetails.Last().SendNumber += lastNum; } } @@ -470,8 +526,8 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays { base.OnPreRender(e); - var pageIndex = _editGrid1.CurrentPageIndex; - var size = _editGrid1.PageSize; + var pageIndex = _editGrid2.CurrentPageIndex; + var size = _editGrid2.PageSize; var index = 0; Money unitNum = 0; @@ -486,17 +542,74 @@ namespace BWP.Web.Pages.B3ButcherManageToSale.Overlays index++; } var s = string.Format(@"", unitNum); + var sumUnitNumOtherPage = {0}; + ", unitNum); Page.ClientScript.RegisterClientScriptBlock(GetType(), "OtherPageNumber", s, false); - string script = @"var defaultGrid=document.all." + _editGrid1.ClientID + @"; -function _SumNumber() + string script = @"var defaultGrid=document.all._gird2;"+ @"; + function _SumNumber() + { + var grid = defaultGrid.behind; + + var itemEndIndex = grid.mItemEndIndex - 1; + var sumN = sumUnitNumOtherPage; + + for (i = 1; i <= itemEndIndex; i++) { + var row = grid.front.rows[i]; + + var m = row.dfContainer.getValue('SendNumber'); + var rownumber=row.dfContainer.getValue('Number'); + row.dfContainer.setValue('AdjustNumber',(rownumber-m).toFixed(2)); + + if (m != null && m != '') { + sumN = sumN + 1 * m; + } + } + var label = document.getElementById('{adjustNumberLabel}') + label.innerText = sumN.toFixed(2); + if( sumN > {thisNumber}){ + label.style.color = 'red'; + } else { + label.style.color = 'black'; + } + + var labelDiffNumber = document.getElementById('{difNumber}') + labelDiffNumber.innerText = (sumN-{thisNumber}).toFixed(2); + + } "; + script = script.Replace("{thisNumber}", productNumber.ToString()); + script = script.Replace("{adjustNumberLabel}", _adjustNumberLabel.ClientID); + script = script.Replace("{difNumber}", _difNumber.ClientID); + Page.ClientScript.RegisterStartupScript(GetType(), "Startup", script, true); + + + var pageIndex11 = _editGrid11.CurrentPageIndex; + var size11 = _editGrid11.PageSize; + var index11 = 0; + Money unitNum11 = 0; + + foreach (var detail in details) + { + var begin = size11 * pageIndex11; + var end = Math.Min(details.Count, (pageIndex11 + 1) * size11); + if (index11 < begin || index11 > end - 1) + { + unitNum11 += (detail.SendNumber ?? 0); + } + index11++; + } + var s11 = string.Format(@"", unitNum11); + Page.ClientScript.RegisterClientScriptBlock(GetType(), "OtherPageNumber11", s11, false); + + string script11 = @"var defaultGrid11=document.all._gridUp;" + @"; +function _SumNumberUp() { - var grid = defaultGrid.behind; + var grid = defaultGrid11.behind; var itemEndIndex = grid.mItemEndIndex - 1; - var sumN = sumUnitNumOtherPage; + var sumN = sumUnitNumOtherPage11; for (i = 1; i <= itemEndIndex; i++) { var row = grid.front.rows[i]; @@ -521,10 +634,10 @@ var labelDiffNumber = document.getElementById('{difNumber}') labelDiffNumber.innerText = (sumN-{thisNumber}).toFixed(2); } "; - script = script.Replace("{thisNumber}", productNumber.ToString()); - script = script.Replace("{adjustNumberLabel}", _adjustNumberLabel.ClientID); - script = script.Replace("{difNumber}", _difNumber.ClientID); - Page.ClientScript.RegisterStartupScript(GetType(), "Startup", script, true); + script11 = script11.Replace("{thisNumber}", productNumber.ToString()); + script11 = script11.Replace("{adjustNumberLabel}", _adjustNumberLabel.ClientID); + script11 = script11.Replace("{difNumber}", _difNumber.ClientID); + Page.ClientScript.RegisterStartupScript(GetType(), "Startup11", script11, true); } } @@ -585,7 +698,7 @@ labelDiffNumber.innerText = (sumN-{thisNumber}).toFixed(2); } dateStr = dateStr.TrimEnd('&'); - query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Domain_ID", DomainContext.Current.ID), DQCondition.EQ("BillState", 单据状态.未审核), DQCondition.GreaterThan(detail, "ProductNumber", 0))); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Domain_ID", DomainContext.Current.ID), DQCondition.EQ("BillState", 单据状态.已审核), DQCondition.GreaterThan(detail, "ProductNumber", 0))); return query; } }