Browse Source

需求单No.139253

master
duanluohua 7 years ago
parent
commit
4d659ae7ee
1 changed files with 116 additions and 72 deletions
  1. +116
    -72
      B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.cs

+ 116
- 72
B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.cs View File

@ -32,9 +32,11 @@ using TSingSoft.WebPluginFramework;
using TSingSoft.WebPluginFramework.Controls;
using TSingSoft.WebPluginFramework.Pages;
namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
namespace BWP.Web.Pages.B3_DongFangWanQi.Tools
{
class SaleOrderUpdateList : AppBasePage {
class SaleOrderUpdateList : AppBasePage
{
QueryContainer _queryContainer;
readonly DFInfo _dFInfo = DFInfo.Get(typeof(Order));
private DFChoiceBox _goodsPropertyCatalog, _liuchengfenlei;
@ -42,7 +44,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
private HiddenField hidden;
private DFChoiceBox _storeInput, _accInput, _customerCatalogt, _customerInput;
DFContainer<Order> mDFContainer = new DFContainer<Order>();
protected override void InitForm(HtmlForm form) {
protected override void InitForm(HtmlForm form)
{
_queryContainer = QueryContainer.FromResource(GetType().FullName + ".xml", GetType().Assembly);
form.Controls.Add(new PageTitle("销售订单调整"));
@ -93,7 +96,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
vp.Add(layoutManager.CreateLayout());
var tsbtn = new TSButton("开始查询");
tsbtn.Click += delegate {
tsbtn.Click += delegate
{
DataBindGrid();
};
var hPanel = new HLayoutPanel { Align = HorizontalAlign.Left };
@ -107,7 +111,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
var vPanel = new VLayoutPanel();
form.Controls.Add(vPanel);
hidden = new HiddenField {
hidden = new HiddenField
{
ID = "__hidden",
Value = null
};
@ -115,7 +120,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
mDFContainer.AddNonDFControl(hidden, "$HiddenField01");
// addOperations(vPanel);
}
protected override void OnPreRender(EventArgs e) {
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
var style = @" <style>
@ -148,18 +154,20 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
DFBrowseGrid _grid;
void AddDetails(TitlePanel tPanel) {
void AddDetails(TitlePanel tPanel)
{
tPanel.Controls.Add(new LiteralControl("<br /><br />"));
var editor = new DFDataTableEditor();
_grid = new DFBrowseGrid(editor) {
_grid = new DFBrowseGrid(editor)
{
Width = Unit.Percentage(100),
IgnoreItemsCount = true,
DFGridSetEnabled = false,
};
_grid.Columns.Add(new DFBrowseGridColumn("GoodsProperty_Name"));
_grid.Columns.Add(new DFBrowseGridColumn("存货属性名称"));
_grid.Columns.Add(new DFBrowseGridColumn("单品测算数量"));
_grid.Columns.Add(new DFBrowseGridColumn("牛头数"));
_grid.Columns.Add(new DFBrowseGridColumn("分完数量"));
@ -169,7 +177,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
//_grid.Columns.Add(new DFBrowseGridColumn("AdjustNumber"));
_grid.Columns.Add(new DFBrowseGridColumn("预计剩余数量"));
//_grid.Columns.Add(new DFBrowseGridColumn("预计剩余头数"));
_grid.OnDetailDataBound += (htmlRow, dataRow, o) => {
_grid.OnDetailDataBound += (htmlRow, dataRow, o) =>
{
var row = dataRow as DFDataRow;
if (row == null)
return;
@ -183,16 +192,19 @@ 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;
@ -202,13 +214,13 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
var idField = (long?)row["GoodsProperty_ID"];
var number = (( decimal ?)row["可用与预算合计"]) ?? 0;
var number = ((decimal?)row["可用与预算合计"]) ?? 0;
var mainNumber = ((decimal?)row["牛头数"]) ?? 0;
var date = (DateTime?)row["测算日期"] ;
var date = (DateTime?)row["测算日期"];
var url = AspUtil.UpdateUrlParam("SaleOrderUpdateEdit.aspx", "GoodsProperty_ID", (idField ?? 0).ToString());
url = AspUtil.UpdateUrlParam(url, "number", number.ToString());
url = AspUtil.UpdateUrlParam(url, "mainNumber", mainNumber.ToString("#"));
if(date.HasValue)
if (date.HasValue)
{
url = AspUtil.UpdateUrlParam(url, "date", date.Value.ToString("yyyy-MM-dd"));
}
@ -218,7 +230,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
bt.Click += delegate { _grid.DataBind(); };
}
private void DataBindGrid() {
private void DataBindGrid()
{
var args = new LoadArguments(GetQueryDom());
@ -228,14 +241,15 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
_grid.DataBind();
}
private DQueryDom GetQueryDom() {
private DQueryDom GetQueryDom()
{
var bill = new JoinAlias(typeof(OrderTmp));
var goodsProperty = new JoinAlias(typeof(GoodsProperty));
var storeDetail = new JoinAlias(typeof(StoreDetailTmp));
var output = new JoinAlias(typeof(OutputTmp));
var outputConfig = new JoinAlias(typeof(OutputConfigTmp));
var dom = new DQueryDom(bill);
var dom = new DQueryDom(output);
OrganizationUtil.RegisterOrganizationQueryTable(dom);
var context = new AvailableStorageContext { Usage = StorageUsage.Sale };
@ -244,15 +258,15 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
//汇总可用库存
RegisgterAvaliableStorageSumTable(dom);
dom.RegisterQueryTable(typeof(OrderTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber", "UnitNum", "AdjustNumber" }, GetOrderDQueryDom());
dom.RegisterQueryTable(typeof(OutputTmp), new[] { "GoodsProperty_ID", "Number", "MainNumber","Date" }, GetOutputDQueryDom());
dom.RegisterQueryTable(typeof(OutputTmp), new[] { "GoodsProperty_ID", "Number", "MainNumber", "Date" }, 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"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(storeDetail), DQCondition.EQ(bill, "GoodsProperty_ID", storeDetail, "GoodsProperty_ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(output), DQCondition.EQ(bill, "GoodsProperty_ID", output, "GoodsProperty_ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(outputConfig), DQCondition.EQ(bill, "GoodsProperty_ID", outputConfig, "GoodsProperty_ID"));
dom.Columns.Add(DQSelectColumn.Field("GoodsProperty_ID", bill));
dom.Columns.Add(DQSelectColumn.Field("GoodsProperty_Name", bill));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(outputConfig,"Number"),"单品测算数量"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(bill), DQCondition.EQ(bill, "GoodsProperty_ID", output, "GoodsProperty_ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(output, "GoodsProperty_ID", goodsProperty, "ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(storeDetail), DQCondition.EQ(output, "GoodsProperty_ID", storeDetail, "GoodsProperty_ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(outputConfig), DQCondition.EQ(output, "GoodsProperty_ID", outputConfig, "GoodsProperty_ID"));
dom.Columns.Add(DQSelectColumn.Field("GoodsProperty_ID", output));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(output, "GoodsProperty_Name"), "存货属性名称"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(outputConfig, "Number"), "单品测算数量"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(output, "MainNumber"), "牛头数"));
//dom.Columns.Add(DQSelectColumn.Field("AdjustNum", bill));
@ -271,7 +285,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
return dom;
}
class OutputConfigTmp {
class OutputConfigTmp
{
public long GoodsProperty_ID { get; set; }
[LogicName("主数量")]
@ -280,7 +295,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
}
private DQueryDom GetOutputConfigureDom() {
private DQueryDom GetOutputConfigureDom()
{
var dom = new DQueryDom(new JoinAlias(typeof(OutputConfigure)));
dom.Columns.Add(DQSelectColumn.Max("ID"));
@ -311,12 +327,14 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
return query;
}
static IDQExpression ESubtract(IDQExpression expression, IDQExpression right) {
static IDQExpression ESubtract(IDQExpression expression, IDQExpression right)
{
return DQExpression.Subtract(expression, DQExpression.IfNull(right, DQExpression.ConstValue(0.0m)));
}
[DFClass]
class OrderTmp {
class OrderTmp
{
[LogicName("存货属性")]
public long? GoodsProperty_ID { get; set; }
@ -333,13 +351,14 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
[ReferenceTo(typeof(GoodsProperty), "Name")]
[Join("GoodsProperty_ID", "ID")]
public string GoodsProperty_Name { get; set; }
[LogicName("调整次数")]
public int AdjustNumber { get; set; }
}
}
class StoreDetailTmp {
class StoreDetailTmp
{
public long GoodsProperty_ID { get; set; }
[LogicName("主数量")]
@ -350,9 +369,20 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
}
class OutputTmp {
class StoreOrderTmp
{
public long? GoodsProperty_ID { get; set; }
public long? Goods_ID { get; set; }
}
class OutputTmp
{
public long GoodsProperty_ID { get; set; }
[ReferenceTo(typeof(GoodsProperty), "Name")]
[Join("GoodsProperty_ID", "ID")]
public string GoodsProperty_Name { get; set; }
[LogicName("主数量")]
public Money<decimal>? Number { get; set; }
@ -363,10 +393,11 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
public DateTime? Date { get; set; }
[LogicName("牛头数")]
public decimal ? MainNumber { get; set; }
public decimal? MainNumber { get; set; }
}
DQueryDom GetOrderDQueryDom() {
DQueryDom GetOrderDQueryDom()
{
var dom = _queryContainer.Build();
var bill = dom.From.RootSource.Alias;
var flowdetail = new JoinAlias("flowdetail", typeof(DepartmentWorkFlow_Detail));
@ -385,7 +416,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
dom.From.AddJoin(JoinType.Left, new DQDmoSource(adjustnumber), DQCondition.EQ(adjustnumber, "GoodsProperty_ID", goodsProperty, "ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(flowdetail), DQCondition.EQ(bill, "DepartmentWorkFlow_Detail_ID", flowdetail, "ID"));
if (!_liuchengfenlei.IsEmpty) {
if (!_liuchengfenlei.IsEmpty)
{
dom.Where.Conditions.Add(DQCondition.EQ(flowdetail, "DepartmentWorkFlowStateCategory_ID", long.Parse(_liuchengfenlei.Value)));
}
AddGoodsCondition(goodsPropertyCatalog, goodsProperty, dom);
@ -400,11 +432,13 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
dom.Where.Conditions.Add(DQCondition.EQ(bill, "Domain_ID", DomainContext.Current.ID));
if (!_customerCatalogt.IsEmpty) {
if (!_customerCatalogt.IsEmpty)
{
var strs = B3SaleWebUtil.GetDeepByTreeName(_customerCatalogt.DisplayValue);
var conditions = new List<IDQExpression>();
var values = _customerCatalogt.GetValues();
for (int index = 0; index < values.Length; index++) {
for (int index = 0; index < values.Length; index++)
{
var value = values[index];
conditions.Add(DQCondition.EQ(customer, "CustomerCatalog_TreeDeep" + strs[index] + "ID", value));
}
@ -416,7 +450,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
return dom;
}
DQueryDom GetStoreDetailDQueryDom() {
DQueryDom GetStoreDetailDQueryDom()
{
var storeDetail = new JoinAlias(typeof(StoreDetail));
var store = new JoinAlias(typeof(Store));
var query = new DQueryDom(storeDetail);
@ -443,7 +478,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
return query;
}
DQueryDom GetOutputDQueryDom() {
DQueryDom GetOutputDQueryDom()
{
var dom = new DQueryDom(new JoinAlias(typeof(OutputForecast)));
dom.Columns.Add(DQSelectColumn.Max("ID"));
dom.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID));
@ -476,61 +512,69 @@ 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);
void RegisgterAvaliableStorageSumTable(DQueryDom outerQuery)
{
var order = new JoinAlias(typeof(Order));
var detailAlias = new JoinAlias(typeof(Order_Detail));
var goodsPropertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog));
var goodsProperty = new JoinAlias(typeof(GoodsProperty));
var goods = new JoinAlias(typeof(SaleGoods));
var query = new DQueryDom(order);
query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(union, "Goods_ID", goods, "ID"));
query.From.AddJoin(JoinType.Inner, new DQDmoSource(detailAlias),
DQCondition.EQ(order, "ID", detailAlias, "Order_ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(detailAlias, "SaleGoods_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.Columns.Add(DQSelectColumn.Field("SaleGoods_ID", detailAlias));
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);
query.GroupBy.Expressions.Add(DQExpression.Field(detailAlias, "SaleGoods_ID"));
//AddGoodsCondition(goodsPropertyCatalog, goodsProperty, query);
query.Where.Conditions.Add(DQCondition.EQ(order, "BillState", .));
query.Where.Conditions.Add(DQCondition.EQ(order, "Domain_ID", DomainContext.Current.ID));
outerQuery.RegisterQueryTable(typeof(StoreOrderTmp), new[] { "GoodsProperty_ID", "Goods_ID"}, query);
var sotmp = new JoinAlias(typeof(StoreOrderTmp));
var stdetail = new JoinAlias(typeof(StoreDetail));
var dom = new DQueryDom(sotmp);
dom.From.AddJoin(JoinType.Left, new DQDmoSource(stdetail), DQCondition.EQ(stdetail, "Goods_ID", sotmp, "Goods_ID"));
dom.Columns.Add(DQSelectColumn.Field("GoodsProperty_ID", sotmp));
dom.Columns.Add(DQSelectColumn.Sum(stdetail, "Number"));
dom.Columns.Add(DQSelectColumn.Sum(stdetail, "SecondNumber"));
dom.GroupBy.Expressions.Add(DQExpression.Field(sotmp, "GoodsProperty_ID"));
outerQuery.RegisterQueryTable(typeof(StoreDetailTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber" },dom);
}
private void AddGoodsCondition(JoinAlias goodsPropertyCatalog, JoinAlias goodsProperty, DQueryDom dom) {
if (!_goodsPropertyCatalog.IsEmpty) {
private void AddGoodsCondition(JoinAlias goodsPropertyCatalog, JoinAlias goodsProperty, DQueryDom dom)
{
if (!_goodsPropertyCatalog.IsEmpty)
{
var strs = B3SaleWebUtil.GetDeepByTreeName(_goodsPropertyCatalog.DisplayValue);
var conditions = new List<IDQExpression>();
var values = _goodsPropertyCatalog.GetValues();
for (int index = 0; index < values.Length; index++) {
for (int index = 0; index < values.Length; index++)
{
var value = values[index];
conditions.Add(DQCondition.EQ(goodsPropertyCatalog, "TreeDeep" + strs[index] + "ID", value));
}
dom.Where.Conditions.Add(DQCondition.Or(conditions));
}
if (!_goodsProperty.IsEmpty) {
if (!_goodsProperty.IsEmpty)
{
dom.Where.Conditions.Add(DQCondition.EQ(goodsProperty, "ID", long.Parse(_goodsProperty.Value)));
}
}
protected override void OnLoad(EventArgs e) {
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack) {
if (!IsPostBack)
{
DataBindGrid();
}
}


Loading…
Cancel
Save