|
|
|
@ -1,6 +1,7 @@ |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Drawing; |
|
|
|
using System.Linq; |
|
|
|
using System.Web; |
|
|
|
using System.Web.UI; |
|
|
|
using System.Web.UI.HtmlControls; |
|
|
|
@ -14,6 +15,8 @@ using BWP.B3Frameworks.Utils; |
|
|
|
using BWP.B3Sale.BO; |
|
|
|
using BWP.B3Sale.Utils; |
|
|
|
using BWP.B3UnitedInfos; |
|
|
|
using BWP.B3UnitedInfos.AvailableStroage; |
|
|
|
using BWP.B3UnitedInfos.BL; |
|
|
|
using BWP.B3UnitedInfos.BO; |
|
|
|
using BWP.Web.Layout; |
|
|
|
using BWP.Web.Utils; |
|
|
|
@ -34,7 +37,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
class SaleOrderUpdateList : AppBasePage { |
|
|
|
QueryContainer _queryContainer; |
|
|
|
readonly DFInfo _dFInfo = DFInfo.Get(typeof(Order)); |
|
|
|
private DFChoiceBox _goodsPropertyCatalog,_liuchengfenlei; |
|
|
|
private DFChoiceBox _goodsPropertyCatalog, _liuchengfenlei; |
|
|
|
private ChoiceBox _goodsProperty; |
|
|
|
private HiddenField hidden; |
|
|
|
private DFChoiceBox _storeInput, _accInput, _customerCatalogt, _customerInput; |
|
|
|
@ -158,9 +161,9 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
|
|
|
|
_grid.Columns.Add(new DFBrowseGridColumn("GoodsProperty_Name")); |
|
|
|
_grid.Columns.Add(new DFBrowseGridColumn("UnitNum")); |
|
|
|
_grid.Columns.Add(new DFBrowseGridColumn("库存数量")); |
|
|
|
_grid.Columns.Add(new DFBrowseGridColumn("可用库存")); |
|
|
|
_grid.Columns.Add(new DFBrowseGridColumn("测算数量")); |
|
|
|
_grid.Columns.Add(new DFBrowseGridColumn("可用数量")); |
|
|
|
_grid.Columns.Add(new DFBrowseGridColumn("可用与预算合计")); |
|
|
|
_grid.Columns.Add(new DFBrowseGridColumn("预计剩余数量")); |
|
|
|
_grid.Columns.Add(new DFBrowseGridColumn("预计剩余头数")); |
|
|
|
_grid.OnDetailDataBound += (htmlRow, dataRow, o) => { |
|
|
|
@ -168,7 +171,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
if (row == null) |
|
|
|
return; |
|
|
|
var diff = (decimal?)row["预计剩余数量"]; |
|
|
|
|
|
|
|
|
|
|
|
AddLinkBt(o, row, 5, diff, htmlRow); |
|
|
|
AddLinkBt(o, row, 6, diff, htmlRow); |
|
|
|
}; |
|
|
|
@ -177,19 +180,16 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private void AddLinkBt(int o, DFDataRow row, int numberIndext, decimal? diff, HtmlTableRow htmlRow) |
|
|
|
{ |
|
|
|
private void AddLinkBt(int o, DFDataRow row, int numberIndext, decimal? diff, HtmlTableRow htmlRow) { |
|
|
|
var bt = new DialogButton(); |
|
|
|
bt.CssClass = "btn"; |
|
|
|
bt.Text = htmlRow.Cells[numberIndext].InnerText; |
|
|
|
|
|
|
|
if (o%2 != 1) |
|
|
|
{ |
|
|
|
if (o % 2 != 1) { |
|
|
|
bt.CssClass = "btn evenbtn"; |
|
|
|
} |
|
|
|
|
|
|
|
if (diff < 0) |
|
|
|
{ |
|
|
|
if (diff < 0) { |
|
|
|
bt.BorderStyle = BorderStyle.Solid; |
|
|
|
bt.BorderColor = Color.Red; |
|
|
|
bt.BorderWidth = 1; |
|
|
|
@ -198,8 +198,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
htmlRow.Cells[numberIndext].Controls.Add(bt); |
|
|
|
|
|
|
|
|
|
|
|
var idField = (long?) row["GoodsProperty_ID"]; |
|
|
|
var number = ((decimal?) row["可用数量"]) ?? 0; |
|
|
|
var idField = (long?)row["GoodsProperty_ID"]; |
|
|
|
var number = ((Money<decimal>?)row["可用库存"]) ?? 0; |
|
|
|
var url = AspUtil.UpdateUrlParam("SaleOrderUpdateEdit.aspx", "GoodsProperty_ID", (idField ?? 0).ToString()); |
|
|
|
url = AspUtil.UpdateUrlParam(url, "number", number.ToString()); |
|
|
|
url = AspUtil.UpdateUrlParam(url, "cacheid", "'+__DFContainer.getValue('$HiddenField01')+'"); |
|
|
|
@ -227,8 +227,13 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
var outputConfig = new JoinAlias(typeof(OutputConfigTmp)); |
|
|
|
var dom = new DQueryDom(bill); |
|
|
|
OrganizationUtil.RegisterOrganizationQueryTable(dom); |
|
|
|
var context = new AvailableStorageContext { Usage = StorageUsage.Sale }; |
|
|
|
|
|
|
|
//注册可用库存查询
|
|
|
|
AvailableStorageUtil.RegisgterAvaliableStorageUnionTable(dom, context); |
|
|
|
//汇总可用库存
|
|
|
|
RegisgterAvaliableStorageSumTable(dom); |
|
|
|
dom.RegisterQueryTable(typeof(OrderTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber", "UnitNum" }, GetOrderDQueryDom()); |
|
|
|
dom.RegisterQueryTable(typeof(StoreDetailTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber" }, GetStoreDetailDQueryDom()); |
|
|
|
dom.RegisterQueryTable(typeof(OutputTmp), new[] { "GoodsProperty_ID", "Number" }, GetOutputDQueryDom()); |
|
|
|
dom.RegisterQueryTable(typeof(OutputConfigTmp), new[] { "GoodsProperty_ID", "Number" }, GetOutputConfigureDom()); |
|
|
|
dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(bill, "GoodsProperty_ID", goodsProperty, "ID")); |
|
|
|
@ -239,10 +244,10 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
dom.Columns.Add(DQSelectColumn.Field("GoodsProperty_Name", bill)); |
|
|
|
dom.Columns.Add(DQSelectColumn.Field("UnitNum", bill)); |
|
|
|
|
|
|
|
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number"), "库存数量")); |
|
|
|
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number"), "可用库存")); |
|
|
|
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(output, "Number"), "测算数量")); |
|
|
|
|
|
|
|
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), "可用数量")); |
|
|
|
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), "可用与预算合计")); |
|
|
|
|
|
|
|
dom.Columns.Add(DQSelectColumn.Create( |
|
|
|
ESubtract(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), DQExpression.Field(bill, "UnitNum")), "预计剩余数量")); |
|
|
|
@ -261,6 +266,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private DQueryDom GetOutputConfigureDom() { |
|
|
|
|
|
|
|
var dom = new DQueryDom(new JoinAlias(typeof(OutputConfigure))); |
|
|
|
@ -342,7 +348,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
DQueryDom GetOrderDQueryDom() { |
|
|
|
var dom = _queryContainer.Build(); |
|
|
|
var bill = dom.From.RootSource.Alias; |
|
|
|
var flowdetail=new JoinAlias("flowdetail",typeof(DepartmentWorkFlow_Detail)); |
|
|
|
var flowdetail = new JoinAlias("flowdetail", typeof(DepartmentWorkFlow_Detail)); |
|
|
|
var detail = new JoinAlias("detail", typeof(Order_Detail)); |
|
|
|
var goodsPropertyCatalog = new JoinAlias("_gpc", typeof(GoodsPropertyCatalog)); |
|
|
|
var goodsProperty = new JoinAlias("_gp", typeof(GoodsProperty)); |
|
|
|
@ -354,11 +360,10 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(goodsProperty, "ID", goods, "GoodsProperty_ID")); |
|
|
|
dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsPropertyCatalog), DQCondition.EQ(goodsProperty, "GoodsPropertyCatalog_ID", goodsPropertyCatalog, "ID")); |
|
|
|
dom.From.AddJoin(JoinType.Left, new DQDmoSource(customer), DQCondition.EQ(bill, "Customer_ID", customer, "ID")); |
|
|
|
|
|
|
|
|
|
|
|
dom.From.AddJoin(JoinType.Left, new DQDmoSource(flowdetail), DQCondition.EQ(bill, "DepartmentWorkFlow_Detail_ID", flowdetail, "ID")); |
|
|
|
if (!_liuchengfenlei.IsEmpty) |
|
|
|
{ |
|
|
|
dom.Where.Conditions.Add(DQCondition.EQ(flowdetail, "DepartmentWorkFlowStateCategory_ID",long.Parse(_liuchengfenlei.Value))); |
|
|
|
if (!_liuchengfenlei.IsEmpty) { |
|
|
|
dom.Where.Conditions.Add(DQCondition.EQ(flowdetail, "DepartmentWorkFlowStateCategory_ID", long.Parse(_liuchengfenlei.Value))); |
|
|
|
} |
|
|
|
AddGoodsCondition(goodsPropertyCatalog, goodsProperty, dom); |
|
|
|
dom.Columns.Add(DQSelectColumn.Field("ID", goodsProperty)); |
|
|
|
@ -443,6 +448,42 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { |
|
|
|
return query; |
|
|
|
} |
|
|
|
|
|
|
|
void RegisgterAvaliableStorageSumTable(DQueryDom outerQuery) { |
|
|
|
|
|
|
|
var union = new JoinAlias(typeof(AvailableStorageUtil.AvailableStorageUnionTable)); |
|
|
|
var store = new JoinAlias(typeof(Store)); |
|
|
|
var query = new DQueryDom(union); |
|
|
|
var goodsPropertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog)); |
|
|
|
var goodsProperty = new JoinAlias(typeof(GoodsProperty)); |
|
|
|
var goods = new JoinAlias(typeof(SaleGoods)); |
|
|
|
|
|
|
|
query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(union, "Goods_ID", goods, "ID")); |
|
|
|
query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(goodsProperty, "ID", goods, "GoodsProperty_ID")); |
|
|
|
query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsPropertyCatalog), DQCondition.EQ(goodsProperty, "GoodsPropertyCatalog_ID", goodsPropertyCatalog, "ID")); |
|
|
|
query.From.AddJoin(JoinType.Left, new DQDmoSource(store), DQCondition.EQ(union, "Store_ID", store, "ID")); |
|
|
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Field("ID", goodsProperty)); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("Number")), "主数量")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("SecondNumber")), "辅数量")); |
|
|
|
|
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field(goodsProperty, "ID")); |
|
|
|
AddGoodsCondition(goodsPropertyCatalog, goodsProperty, query); |
|
|
|
query.Where.Conditions.Add(DQCondition.EQ(store, "Domain_ID", DomainContext.Current.ID)); |
|
|
|
|
|
|
|
var config = AvailableStroageSourceConfigBL.Instance.Load(); |
|
|
|
|
|
|
|
var selectedNames = (config.SelectedNames ?? "").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) ; |
|
|
|
|
|
|
|
if( selectedNames.Contains("销售订单")) |
|
|
|
{ |
|
|
|
query.Where.Conditions.Add(DQCondition.InEQ("Source", "销售订单")); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
outerQuery.RegisterQueryTable(typeof(StoreDetailTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber" }, query); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private void AddGoodsCondition(JoinAlias goodsPropertyCatalog, JoinAlias goodsProperty, DQueryDom dom) { |
|
|
|
if (!_goodsPropertyCatalog.IsEmpty) { |
|
|
|
var strs = B3SaleWebUtil.GetDeepByTreeName(_goodsPropertyCatalog.DisplayValue); |
|
|
|
|