|
|
|
@ -52,8 +52,8 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ |
|
|
|
mBrowseGrid.OnDetailDataBound = (tr, obj, index) => |
|
|
|
{ |
|
|
|
var row = obj as DFDataRow; |
|
|
|
var gName = (string)row["Goods_Name"]; |
|
|
|
var url = BuildUrl(string.Format("{0}", row["Goods_ID"])); |
|
|
|
var gid = string.Format("{0}", row["Goods_ID"]); |
|
|
|
var url = BuildUrl(string.Format("{0}", gid)); |
|
|
|
url = WpfPageUrl.ToGlobal(url); |
|
|
|
url = AspUtil.AddParamToUrl(url, "flag", "-1"); |
|
|
|
SetCellAtt(tr.Cells[3], url, "进销存明细");//期初
|
|
|
|
@ -61,14 +61,17 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ |
|
|
|
url = AspUtil.UpdateUrlParam(url, "flag", "0"); |
|
|
|
SetCellAtt(tr.Cells[4], url, "进销存明细");//入库
|
|
|
|
|
|
|
|
url = AspUtil.UpdateUrlParam(url, "flag", "3"); |
|
|
|
SetCellAtt(tr.Cells[5], url, "进销存明细");//盘点
|
|
|
|
|
|
|
|
url = AspUtil.UpdateUrlParam(url, "flag", "1"); |
|
|
|
SetCellAtt(tr.Cells[6], url, "进销存明细");//领用
|
|
|
|
SetCellAtt(tr.Cells[7], url, "进销存明细");//领用
|
|
|
|
|
|
|
|
url = AspUtil.UpdateUrlParam(url, "flag", "2"); |
|
|
|
SetCellAtt(tr.Cells[7], url, "进销存明细");//销售
|
|
|
|
SetCellAtt(tr.Cells[8], url, "进销存明细");//销售
|
|
|
|
|
|
|
|
url = AspUtil.UpdateUrlParam(url, "flag", "-2"); |
|
|
|
SetCellAtt(tr.Cells[9], url, "进销存明细");//期末
|
|
|
|
SetCellAtt(tr.Cells[10], url, "进销存明细");//期末
|
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
@ -124,35 +127,38 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ |
|
|
|
if (endInput.Value.HasValue) |
|
|
|
endTime = endInput.Date; |
|
|
|
var sumColumns = new List<int>(); |
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(UnionTemp))); |
|
|
|
query.RegisterQueryTable(typeof(UnionTemp), new string[] { "Goods_ID", "Weight", "Time", "Flag" }, GetUnionDom(endTime)); |
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(CarcassFullInfoView))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Goods_ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Goods_Code", "存货编码")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Goods_Name", "存货名称")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Goods_Spec", "存货规格")); |
|
|
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.LessThan("Time", startTime), DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1)))).ECastType<int>(), "期初头数")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 0)), DQExpression.Value(1))).ECastType<int>(), "本期增加头数|成品入库")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 0)), DQExpression.Value(1))).ECastType<int>(), "本期增加头数|合计")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 1)), DQExpression.Value(1))).ECastType<int>(), "本期减少头数|分割领用")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 2)), DQExpression.Value(1))).ECastType<int>(), "本期减少头数|销售出库")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.InEQ("Flag", 0)), DQExpression.Value(1))).ECastType<int>(), "本期减少头数|合计")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))).ECastType<int>(), "期末头数")); |
|
|
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.LessThan("Time", startTime), DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight"))))).ECastType<decimal>(), "期初重量")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 0)), DQExpression.Field("Weight"))).ECastType<decimal>(), "本期增加重量|成品入库")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 0)), DQExpression.Field("Weight"))).ECastType<decimal>(), "本期增加重量|合计")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 1)), DQExpression.Field("Weight"))).ECastType<decimal>(), "本期减少重量|分割领用")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 2)), DQExpression.Field("Weight"))).ECastType<decimal>(), "本期减少重量|销售出库")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.InEQ("Flag", 0)), DQExpression.Field("Weight"))).ECastType<decimal>(), "本期减少重量|合计")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))).ECastType<decimal>(), "期末重量")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.LessThan("Time", startTime), DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Field("Number"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Number"))))), "期初头数")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 0)), DQExpression.Field("Number"))), "本期增加头数|成品入库")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 3)), DQExpression.Field("Number"))), "本期增加头数|库存盘点")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore", true)), DQExpression.Field("Number"))), "本期增加头数|合计")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 1)), DQExpression.Field("Number"))), "本期减少头数|分割领用")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 2)), DQExpression.Field("Number"))), "本期减少头数|销售出库")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore", false)), DQExpression.Field("Number"))), "本期减少头数|合计")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Field("Number"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Number")))), "期末头数")); |
|
|
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.LessThan("Time", startTime), DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight"))))), "期初重量")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 0)), DQExpression.Field("Weight"))), "本期增加重量|成品入库")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 3)), DQExpression.Field("Weight"))), "本期增加重量|库存盘点")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore", true)), DQExpression.Field("Weight"))), "本期增加重量|合计")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 1)), DQExpression.Field("Weight"))), "本期减少重量|分割领用")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", 2)), DQExpression.Field("Weight"))), "本期减少重量|销售出库")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore", false)), DQExpression.Field("Weight"))), "本期减少重量|合计")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), "期末重量")); |
|
|
|
|
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field("Goods_ID")); |
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field("Goods_Code")); |
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field("Goods_Name")); |
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field("Goods_Spec")); |
|
|
|
query.Where.Conditions.Add(DQCondition.LessThanOrEqual("Time", endTime)); |
|
|
|
|
|
|
|
query.Having.Conditions.Add(DQCondition.Or(DQCondition.InEQ(DQExpression.IfNull(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Field("Number"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Number")))), DQExpression.Value(0)), DQExpression.Value(0)), DQCondition.InEQ(DQExpression.IfNull(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), DQExpression.Value(0)), DQExpression.Value(0)))); |
|
|
|
|
|
|
|
query.Having.Conditions.Add(DQCondition.Or(DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))), DQExpression.Value(0)), DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), DQExpression.Value(0)))); |
|
|
|
var args = new LoadArguments(query); |
|
|
|
for (var idx = 4; idx < query.Columns.Count; idx++) |
|
|
|
{ |
|
|
|
@ -169,70 +175,5 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ |
|
|
|
if (!IsPostBack) |
|
|
|
StartQuery(); |
|
|
|
} |
|
|
|
|
|
|
|
[DFClass] |
|
|
|
class UnionTemp |
|
|
|
{ |
|
|
|
public long Goods_ID { get; set; } |
|
|
|
public decimal Weight { get; set; } |
|
|
|
public DateTime Time { get; set; } |
|
|
|
public int Flag { get; set; } |
|
|
|
|
|
|
|
[ReferenceTo(typeof(Goods), "Name")] |
|
|
|
[Join("Goods_ID", "ID")] |
|
|
|
public string Goods_Name { get; set; } |
|
|
|
|
|
|
|
[ReferenceTo(typeof(Goods), "Code")] |
|
|
|
[Join("Goods_ID", "ID")] |
|
|
|
public string Goods_Code { get; set; } |
|
|
|
|
|
|
|
[ReferenceTo(typeof(Goods), "Spec")] |
|
|
|
[Join("Goods_ID", "ID")] |
|
|
|
public string Goods_Spec { get; set; } |
|
|
|
} |
|
|
|
|
|
|
|
DQueryDom GetUnionDom(DateTime endTime) |
|
|
|
{ |
|
|
|
var u1 = GetInStore(endTime); |
|
|
|
var u2 = GetPickOutStore(endTime); |
|
|
|
u1.UnionNext.Select = u2; |
|
|
|
u1.UnionNext.Type = UnionType.All; |
|
|
|
u2.UnionNext.Select = GetSaleOutStore(endTime); |
|
|
|
u2.UnionNext.Type = UnionType.All; |
|
|
|
return u1; |
|
|
|
} |
|
|
|
|
|
|
|
DQueryDom GetInStore(DateTime endTime) |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias("_inStore", typeof(CarcassFullInfo))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("InStoreGoods_ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("InStoreWeight")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("InStoreTime")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(0), "Falg")); |
|
|
|
query.Where.Conditions.Add(DQCondition.LessThanOrEqual("InStoreTime", endTime)); |
|
|
|
return query; |
|
|
|
} |
|
|
|
|
|
|
|
DQueryDom GetPickOutStore(DateTime endTime) |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias("_pickOut", typeof(CarcassFullInfo))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("InStoreGoods_ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("PickWeight")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("PickTime")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(1), "Falg")); |
|
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 0), DQCondition.LessThanOrEqual("PickTime", endTime))); |
|
|
|
return query; |
|
|
|
} |
|
|
|
|
|
|
|
DQueryDom GetSaleOutStore(DateTime endTime) |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias("_saleOut", typeof(CarcassFullInfo))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("SaleGoods_ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("PickWeight")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("PickTime")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(2), "Falg")); |
|
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 1), DQCondition.LessThanOrEqual("PickTime", endTime))); |
|
|
|
return query; |
|
|
|
} |
|
|
|
} |
|
|
|
} |