Browse Source

修改 详见需求单138708

master
wushukun 7 years ago
parent
commit
aa254781d0
1 changed files with 50 additions and 5 deletions
  1. +50
    -5
      BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ToFreightNetPriceReport2.cs

+ 50
- 5
BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ToFreightNetPriceReport2.cs View File

@ -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<string, string>("OutNum", "出库数量"));
list.Add(new Tuple<string, string>("OutMoney", "出库金额"));
list.Add(new Tuple<string, string>("CustomerDealer_Name", "经销商"));
list.Add(new Tuple<string, string>("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;
}


Loading…
Cancel
Save