From aa254781d08f859d555cd8ee3dd2a4e3f97dbd16 Mon Sep 17 00:00:00 2001 From: wushukun <18860363876@163.com> Date: Thu, 8 Feb 2018 14:40:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E8=AF=A6=E8=A7=81?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8D=95138708?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reports/ToFreightNetPriceReport2.cs | 55 +++++++++++++++++-- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ToFreightNetPriceReport2.cs b/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ToFreightNetPriceReport2.cs index 7e6989c..b339936 100644 --- a/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ToFreightNetPriceReport2.cs +++ b/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ToFreightNetPriceReport2.cs @@ -40,9 +40,13 @@ namespace BWP.Web.Pages.B3YunKen.Reports CheckBoxListWithReverseSelect checkbox; DFChoiceBox _goods, _goodsPropertyCatalog, _brandItem, _productLine, _goodsBatch; + DFTextBox _saleout; + DFNamedValueInput<运费承担方> freightBear; + // private readonly DFInfo mDFInfo = DFInfo.Get(typeof(CustomerAccept)); private readonly DFInfo _detailInfo = DFInfo.Get(typeof(CustomerAccept_Detail)); + protected override void InitQueryPanel(QueryPanel queryPanel) { base.InitQueryPanel(queryPanel); @@ -97,7 +101,7 @@ namespace BWP.Web.Pages.B3YunKen.Reports list.Add(new Tuple("OutNum", "出库数量")); list.Add(new Tuple("OutMoney", "出库金额")); list.Add(new Tuple("CustomerDealer_Name", "经销商")); - + list.Add(new Tuple("FreightBear", "运费承担方")); var section = mPageLayoutManager.AddSection("显示字段", "显示字段"); section.ApplyLayout(list, mPageLayoutManager); foreach (var item in list) { @@ -168,10 +172,18 @@ B3SaleDataSources.经销商), s => long.Parse(s)), "CustomerDealer_ID")); layout["CustomerDealer_ID"].NotAutoAddToContainer = true; layout.Add("ArriveTime", new SimpleLabel("到货时间"), QueryCreator.DateRange(mDFInfo.Fields["ID"], mQueryContainer, "MinArriveTime", "MaxArriveTime")); layout["ArriveTime"].NotAutoAddToContainer = true; - var config = layout.CreateDefaultConfig(2); + + layout.Add("SaleOutID", new SimpleLabel("出库单号"), _saleout = QueryCreator.DFTextBox(mDFInfo.Fields["ID"])); + layout["SaleOutID"].NotAutoAddToContainer = true; + + layout.Add("FreightBear", new SimpleLabel("运费承担方"), freightBear = QueryCreator.DFNameValueInputEnableMultiSelection<运费承担方>(mDFInfo.Fields["ID"])); + layout["SaleOutID"].NotAutoAddToContainer = true; + layout["FreightBear"].NotAutoAddToContainer = true; + var config = layout.CreateDefaultConfig(4); config.Expand = false; config.Add("LoadTime"); config.Add("OrderDate"); + //config.Add("SaleOutID"); //config.Add("ArriveTime"); //config.Add("AccountingUnit_ID"); //config.Add("Goods_ID"); @@ -237,6 +249,7 @@ B3SaleDataSources.经销商), s => long.Parse(s)), "CustomerDealer_ID")); DQCondition.EQ(goods, "ID", detail, "SaleGoods_ID")); var freightMoney = DQExpression.Multiply(DQExpression.Field(main, "FreightPrice"), DQExpression.Divide(DQExpression.Field(detail, "AcceptNum"), DQExpression.NullIfZero(DQExpression.Field(main, "AcceptNumber")))); + var 包装费Exp = DQExpression.Multiply(DQExpression.Field(packageData, "Price"), DQExpression.Field(detail, "AcceptSecondNumber")); foreach (ListItem item in checkbox.Items) { if (!item.Selected) { continue; } var field = item.Value; @@ -291,6 +304,8 @@ B3SaleDataSources.经销商), s => long.Parse(s)), "CustomerDealer_ID")); case "LoadTime": case "ArriveTime": case "CustomerSaleZone_Name": + case "FreightBear": + dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(outStore, field), item.Text)); dom.GroupBy.Expressions.Add(DQExpression.Field(outStore, field)); break; @@ -335,14 +350,36 @@ B3SaleDataSources.经销商), s => long.Parse(s)), "CustomerDealer_ID")); SumColumnIndexs.Add(dom.Columns.Count - 1); break; case "PackingMoney": - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Multiply(DQExpression.Field(packageData, "Price"), DQExpression.Field(detail, "AcceptSecondNumber"))), item.Text)); + dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(包装费Exp), item.Text)); SumColumnIndexs.Add(dom.Columns.Count - 1); break; case "NetPrice": - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Divide(DQExpression.Sum(DQExpression.Subtract(DQExpression.Field(detail, "Money"), DQExpression.IfNull(freightMoney, DQExpression.Value(0))).ESubtract(DQExpression.IfNull(DQExpression.Field(packageData, "Price"), DQExpression.Value(0)))), DQExpression.NullIfZero(DQExpression.Sum(DQExpression.Field(detail, "AcceptNum")))), item.Text)); + + var 购方netExp = DQExpression.Divide(DQExpression.Sum(DQExpression.Subtract(DQExpression.Field(detail, "Money"), DQExpression.IfNull(包装费Exp, DQExpression.Value(0)))) , DQExpression.NullIfZero(DQExpression.Sum(DQExpression.Field(detail, "AcceptNum")))); + + var 供方netExp = DQExpression.Divide(DQExpression.Sum(DQExpression.Subtract(DQExpression.Field(detail, "Money"), DQExpression.IfNull(freightMoney, DQExpression.Value(0))).ESubtract(DQExpression.IfNull(包装费Exp, DQExpression.Value(0)))), DQExpression.NullIfZero(DQExpression.Sum(DQExpression.Field(detail, "AcceptNum")))); + + var netExp = DQExpression.LogicCase(DQCondition.EQ(outStore, "FreightBear", 运费承担方.购方), 购方netExp, DQCondition.EQ(outStore, "FreightBear", 运费承担方.供方), 供方netExp, DQExpression.Value(null)); + + + + + dom.Columns.Add(DQSelectColumn.Create(netExp, item.Text)); break; case "ToFreightNetPrice": - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Divide(DQExpression.Sum(DQExpression.Subtract(DQExpression.Field(detail, "Money"), DQExpression.IfNull(freightMoney, DQExpression.Value(0)))), DQExpression.NullIfZero(DQExpression.Sum(DQExpression.Field(detail, "AcceptNum")))), item.Text)); + // 增加逻辑,当运费承担方为‘购方’: + //{去运费单价}= 验收单价 + //{去包装净价}=(验收金额 - 包装费用)÷验收报价数量 + // 当运费承担方为‘供方’ + //{去运费单价}=(验收金额 - 运费费用)÷报价数量 + //{去包装净价}=(验收金额 - 包装费用 - 运费)÷验收报价数量 + + var 购方priceExp = DQExpression.Field(detail, "AcceptPrice"); + + var 供方priceExp = DQExpression.Divide(DQExpression.Sum(DQExpression.Subtract(DQExpression.Field(detail, "Money"), DQExpression.IfNull(freightMoney, DQExpression.Value(0)))), DQExpression.NullIfZero(DQExpression.Sum(DQExpression.Field(detail, "AcceptNum")))); + + var priceExp = DQExpression.LogicCase(DQCondition.EQ(outStore, "FreightBear", 运费承担方.购方), 购方priceExp, DQCondition.EQ(outStore, "FreightBear", 运费承担方.供方), 供方priceExp, DQExpression.Value(null)); + dom.Columns.Add(DQSelectColumn.Create(priceExp, item.Text)); break; } } @@ -369,6 +406,14 @@ B3SaleDataSources.经销商), s => long.Parse(s)), "CustomerDealer_ID")); if (maxArriveTime.HasValue) { dom.Where.Conditions.Add(DQCondition.LessThanOrEqual(outStore, "ArriveTime", maxArriveTime)); } + if (!_saleout.IsEmpty) + { + dom.Where.Conditions.Add(DQCondition.EQ(outStore, "ID", long.Parse(_saleout.Text))); + } + if (!freightBear.IsEmpty) + { + dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(outStore, "FreightBear"), freightBear.GetValues().Select(x=> DQExpression.Value(x)).ToArray())); + } dom.Where.Conditions.Add(DQCondition.EQ(main, "BillState", 单据状态.已审核)); return dom; }