Browse Source

需求单No.137418

master
robin 8 years ago
parent
commit
7fe453e62e
3 changed files with 313 additions and 90 deletions
  1. +185
    -26
      B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateEdit.cs
  2. +120
    -64
      B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.cs
  3. +8
    -0
      B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.xml

+ 185
- 26
B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateEdit.cs View File

@ -4,11 +4,15 @@ using System.Linq;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using B3_DongFangWanQi.BO;
using BWP.B3Frameworks;
using BWP.B3Frameworks.BO;
using BWP.B3Frameworks.BO.MoneyTemplate;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Frameworks.Utils;
using BWP.B3Sale.BL;
using BWP.B3Sale.BO;
using BWP.B3Sale.Utils;
using BWP.B3UnitedInfos.BO;
using BWP.Web.Utils;
using Forks.EnterpriseServices;
@ -20,6 +24,7 @@ using Forks.EnterpriseServices.SqlDoms;
using Forks.Utils;
using Forks.Utils.Collections;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework;
using TSingSoft.WebPluginFramework.Controls;
using TSingSoft.WebPluginFramework.Pages;
@ -166,7 +171,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
form.Controls.Add(_dfContainer);
var panel = new HLayoutPanel();
panel.Add(new SimpleLabel("可用数量"));
panel.Add(new SimpleLabel("预计库存"));
var label = new Label();
label.Font.Size = 14;
label.Width = 120;
@ -181,13 +186,15 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
_l1.Width = 120;
_l1.Font.Bold = true;
panel.Add(_l1);
panel.Add(new SimpleLabel("合计金额"));
panel.Add(new SimpleLabel("预计剩余数量"));
_l2 = new Label();
_l2.ID = "l2";
_l2.Font.Size = 14;
_l2.Font.Bold = true;
_l2.Width = 120;
panel.Add(_l2);
vPanel.Add(panel);
_dfContainer.AddNonDFControl(_l1, "$l1");
_dfContainer.AddNonDFControl(_l2, "$l2");
@ -203,8 +210,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
if (field.Name == "SecondNumber") {
var hasSecondUnit = !string.IsNullOrEmpty(detail.Goods_SecondUnit);
return hasSecondUnit;
}
}
return true;
};
@ -213,34 +219,39 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
_goodsGrid.Width = Unit.Percentage(100);
_goodsGrid.ShowLineNo = true;
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Order_ID"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Customer_Name"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("OrderDate"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("LoadTime"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Customer_Name"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Code"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Name"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Spec"));
var col = new DFEditGridColumn<DFTextBox>("UnitNum");
col.InitEditControl += (sender, e) => {
e.Control.Attributes["onchange"] = @"SetSumInfo();this.dfContainer.setValue('ChangeFlag','true'); ";
_goodsGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("UnitNum")).SumMode = SumMode.Sum;
};
_goodsGrid.Columns.EAdd(col).SumMode = SumMode.Sum;
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Unit"));
_goodsGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("SecondNumber")).SumMode = SumMode.Sum;
_goodsGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Goods_SecondUnit"));
_goodsGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("Price"));
_goodsGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Money")).SumMode = SumMode.Sum;
_goodsGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("PolicyPrice"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("GoodsBatch_Name"));
_goodsGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Money")).SumMode = SumMode.Sum;
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("OrderDate"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("LoadTime"));
_goodsGrid.Columns.Add(new DFEditGridColumn<DFTextBox>("ChangeFlag"));
_goodsGrid.ValueColumns.Add("SaleGoods_ID");
_goodsGrid.ValueColumns.Add("Goods_UnitConvertDirection");
_goodsGrid.ValueColumns.Add("Goods_MainUnitRatio");
_goodsGrid.ValueColumns.Add("Goods_SecondUnitRatio");
_goodsGrid.ValueColumns.Add("LeftRatio");
_goodsGrid.ValueColumns.Add("LeftRatio");
_goodsGrid.ValueColumns.Add("Price");
_goodsGrid.ValueColumns.Add("RightRatio");
vPanel.Add(_goodsGrid);
new MainToSecondConvertRowManger(_goodsGrid);
//new MainToSecondConvertRowManger(_goodsGrid);
_dfContainer.AddNonDFControl(_goodsGrid, "$Grid");
var hl = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Center));
var saveBt = hl.Add(new TSButton("保存"));
@ -257,7 +268,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
void SaveBtClick(object sender, EventArgs e) {
_goodsGrid.GetFromUI();
var groupByOrderID = Details.GroupBy(x => x.Order_ID);
var groupByOrderID = Details.Where(x => !string.IsNullOrEmpty(x.ChangeFlag)).GroupBy(x => x.Order_ID);
var bl = BIFactory.Create<IOrderBL>();
var cannotUpdateID = new List<long>();
var updateIDs = new List<long>();
@ -313,6 +325,59 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
BindGrid();
}
}
protected override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
var pageIndex = _goodsGrid.CurrentPageIndex;
var size = _goodsGrid.PageSize;
var index = 0;
Money<decimal> unitNum = 0;
var number =decimal.Parse(Request.QueryString["number"]);
foreach (var detail in Details) {
detail.Money = detail.UnitNum * detail.Price;
var begin = size * pageIndex;
var end = Math.Min(Details.Count, (pageIndex + 1) * size);
if (index < begin || index > end - 1) {
unitNum += (detail.UnitNum ?? 0);
}
index++;
}
var s = string.Format(@"<script language=javascript>
var sumUnitNumOtherPage = {0};
var sumleftOtherPage = {1};
</script>", unitNum,number.ToString("0.00"));
Page.ClientScript.RegisterClientScriptBlock(GetType(), "OtherPageNumber", s, false);
var script = @"
<script language=javascript>
document.getElementById('{allUnitNumlabel}').innerText = {sumUnitNum};
document.getElementById('{allleftlabel}').innerText = {sumleft};
function SetSumInfo() {
var grid = __DFContainer.getControl('$Grid');
var sumNum = sumUnitNumOtherPage;
var itemEndIndex = grid.behind.mItemEndIndex - 1;
for (i = 1; i <= itemEndIndex; i++) {
var num = grid.rows[i].dfContainer.getValue('UnitNum');
var price = grid.rows[i].dfContainer.getValue('Price');
grid.rows[i].dfContainer.setValue('Money',accMul(num,price).toFixed(2));
if (num != null && num != '') {
sumNum = sumNum + 1 * num;
}
}
sumleft = sumleftOtherPage - sumNum;
document.getElementById('{allUnitNumlabel}').innerText = sumNum;
document.getElementById('{allleftlabel}').innerText = sumleft.toFixed(2);
}
</script>";
script = script.Replace("{GridID}", _goodsGrid.ClientID);
script = script.Replace("{allUnitNumlabel}", _l1.ClientID);
script = script.Replace("{allleftlabel}", _l2.ClientID);
script = script.Replace("{sumUnitNum}", Details.Sum(x => (x.UnitNum ?? 0).Value).ToString());
script = script.Replace("{sumleft}", (number - Details.Sum(x => (x.UnitNum ?? 0).Value)).ToString("0.00"));
Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", script);
}
private void BindGrid() {
@ -323,6 +388,8 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
var goodsProperty = new JoinAlias("_gp", typeof(GoodsProperty));
var goods = new JoinAlias("_g", typeof(SaleGoods));
var customer = new JoinAlias("_c", typeof(Customer));
//var storeDetail = new JoinAlias(typeof(StoreDetailTmp));
//var output = new JoinAlias(typeof(OutputTmp));
dom.From.AddJoin(JoinType.Inner, new DQDmoSource(detailAlias),
DQCondition.EQ(order, "ID", detailAlias, "Order_ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(detailAlias, "SaleGoods_ID", goods, "ID"));
@ -330,6 +397,12 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
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(order, "Customer_ID", customer, "ID"));
OrganizationUtil.RegisterOrganizationQueryTable(dom);
//dom.RegisterQueryTable(typeof(StoreDetailTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber" }, GetStoreDetailDQueryDom());
//dom.RegisterQueryTable(typeof(OutputTmp), new[] { "GoodsProperty_ID", "Number" }, GetOutputDQueryDom());
//dom.From.AddJoin(JoinType.Left, new DQDmoSource(storeDetail), DQCondition.EQ(goodsProperty, "ID", storeDetail, "GoodsProperty_ID"));
//dom.From.AddJoin(JoinType.Left, new DQDmoSource(output), DQCondition.EQ(goodsProperty, "ID", output, "GoodsProperty_ID"));
dom.Columns.Add(DQSelectColumn.Field("ID", detailAlias));
dom.Columns.Add(DQSelectColumn.Field("UnitNum", detailAlias));
dom.Columns.Add(DQSelectColumn.Field("SecondNumber", detailAlias));
@ -345,14 +418,14 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
dom.Columns.Add(DQSelectColumn.Field("GoodsBatch_Name", detailAlias));
dom.Columns.Add(DQSelectColumn.Field("LoadTime", order));
dom.Columns.Add(DQSelectColumn.Field("OrderDate", order));
var condition = (IList<IDQExpression>)ViewStateUtil.Current.LoadFromPersistenceMedium(uint.Parse(Request.QueryString["cacheid"]),true);
foreach (var expression in condition)
{
//dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), "Number1"));
var condition = (IList<IDQExpression>)ViewStateUtil.Current.LoadFromPersistenceMedium(uint.Parse(Request.QueryString["cacheid"]), true);
foreach (var expression in condition) {
dom.Where.Conditions.Add(expression);
}
if (GoodsProperty_ID != null) {
dom.Where.Conditions.Add(DQCondition.EQ(goodsProperty, "ID", GoodsProperty_ID));
}
}
OrganizationUtil.AddOrganizationLimit(dom, typeof(Order));
Details.Clear();
using (var context = new TransactionContext()) {
@ -373,7 +446,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
GoodsBatch_ID = (long?)reader[11],
GoodsBatch_Name = (string)reader[12],
LoadTime = (DateTime?)reader[13],
OrderDate = (DateTime?)reader[14],
OrderDate = (DateTime?)reader[14],
};
Details.Add(detail);
}
@ -382,13 +455,13 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
foreach (var detail in Details) {
Dmo.RefreshDependency(detail, "SaleGoods_ID");
}
_goodsGrid.DataBind();
_l1.Text = Math.Round(Details.Sum(x => (decimal?)(x.UnitNum) ?? 0), 2).ToString();
_l2.Text = Math.Round(Details.Sum(x => (decimal?)(x.Money) ?? 0), 2).ToString();
_l2.Text = Math.Round(decimal.Parse(Request.QueryString["number"]) - Details.Sum(x => (decimal?)(x.UnitNum) ?? 0), 2).ToString();
}
[DFClass,Serializable]
[DFClass, Serializable]
class Order_DetailExt : Order_Detail {
[LogicName("发货时间")]
public DateTime? LoadTime { get; set; }
@ -396,6 +469,92 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
[LogicName("订货时间")]
public DateTime? OrderDate { get; set; }
[LogicName("预计库存")]
public Money<decimal>? Number1 { get; set; }
[LogicName(" ")]
[NonDmoProperty]
[DFExtProperty("Width", "1px")]
public string ChangeFlag { get; set; }
}
class StoreDetailTmp {
public long GoodsProperty_ID { get; set; }
public long Goods_ID { get; set; }
[LogicName("主数量")]
public Money<decimal>? Number { get; set; }
[LogicName("辅数量")]
public Money<decimal>? SecondNumber { get; set; }
}
class OutputTmp {
public long GoodsProperty_ID { get; set; }
public long Goods_ID { get; set; }
[LogicName("主数量")]
public Money<decimal>? Number { get; set; }
[LogicName("辅数量")]
public Money<decimal>? SecondNumber { get; set; }
}
DQueryDom GetStoreDetailDQueryDom() {
var storeDetail = new JoinAlias(typeof(StoreDetail));
var store = new JoinAlias(typeof(Store));
var query = new DQueryDom(storeDetail);
var goodsProperty = new JoinAlias("_s2",typeof(GoodsProperty));
var goods = new JoinAlias("_s3",typeof(SaleGoods));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(storeDetail, "Goods_ID", goods, "ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(goodsProperty, "ID", goods, "GoodsProperty_ID"));
if (GoodsProperty_ID != null) {
query.Where.Conditions.Add(DQCondition.EQ(goodsProperty, "ID", GoodsProperty_ID));
}
query.From.AddJoin(JoinType.Left, new DQDmoSource(store), DQCondition.EQ(store, "ID", storeDetail, "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"));
query.Where.Conditions.Add(DQCondition.EQ(store, "Domain_ID", DomainContext.Current.ID));
return query;
}
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));
dom.EAddCheckedCondition(dom.From.RootSource.Alias);
var id = dom.EExecuteScalar<long?>() ?? 0;
var detail = new JoinAlias(typeof(OutputForecast_Detail));
var bill = new JoinAlias(typeof(OutputForecast));
var goodsProperty = new JoinAlias("_s5", typeof(GoodsProperty));
var query = new DQueryDom(detail);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(bill),
DQCondition.EQ(bill, "ID", detail, "OutputForecast_ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(goodsProperty, "ID", detail, "GoodsProperty_ID"));
if (GoodsProperty_ID != null) {
query.Where.Conditions.Add(DQCondition.EQ(goodsProperty, "ID", GoodsProperty_ID));
}
query.Columns.Add(DQSelectColumn.Field("GoodsProperty_ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("Number")), "主数量"));
query.GroupBy.Expressions.Add(DQExpression.Field("GoodsProperty_ID"));
query.Where.Conditions.Add(DQCondition.EQ(bill, "ID", id));
query.Where.Conditions.Add(DQCondition.GreaterThan(detail, "GoodsProperty_ID", 0));
return query;
}
}
}

+ 120
- 64
B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.cs View File

@ -8,6 +8,7 @@ using System.Web.UI.WebControls;
using B3_DongFangWanQi.BO;
using BWP.B3Frameworks;
using BWP.B3Frameworks.BO;
using BWP.B3Frameworks.BO.MoneyTemplate;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Frameworks.Utils;
using BWP.B3Sale.BO;
@ -60,9 +61,9 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
layoutManager.Add("Customer_ID", _customerInput = QueryCreator.DFChoiceBox(_dFInfo.Fields["Customer_ID"], B3SaleDataSources.));
_customerCatalogt = QueryCreator.DFChoiceBox(_dFInfo.Fields["CustomerCatalog_ID"], B3SaleDataSources.);
layoutManager.Add("CustomerCatalog_ID", new SimpleLabel("客户分类"), _customerCatalogt );
layoutManager.Add("CustomerCatalog_ID", new SimpleLabel("客户分类"), _customerCatalogt);
var config = new AutoLayoutConfig();
config.Add("LoadTime");
config.Add("OrderDate");
config.Add("AccountingUnit_ID");
config.Add("Employee_ID");
@ -77,7 +78,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
section.SetDisplayName("GoodsProperty_ID", "存货属性");
section.SetDisplayName("GoodsPropertyCatalog_ID", "存货属性分类");
VLayoutPanel vp;
titlePanel.Controls.Add(vp=new VLayoutPanel());
titlePanel.Controls.Add(vp = new VLayoutPanel());
vp.Add(layoutManager.CreateLayout());
var tsbtn = new TSButton("开始查询");
@ -91,7 +92,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
AddDetails(form.EAdd(new TitlePanel("订单明细", "订单明细")));
mDFContainer.ID = "DFContainer";
form.Controls.Add(mDFContainer);
form.Controls.Add(mDFContainer);
var vPanel = new VLayoutPanel();
form.Controls.Add(vPanel);
@ -137,9 +138,9 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
DFBrowseGrid _grid;
void AddDetails(TitlePanel tPanel) {
tPanel.Controls.Add(new LiteralControl("<br /><br />"));
var editor = new DFDataTableEditor();
_grid = new DFBrowseGrid(editor) {
Width = Unit.Percentage(100),
@ -148,47 +149,55 @@ 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("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.Columns.Add(new DFBrowseGridColumn("预计剩余头数"));
_grid.OnDetailDataBound += (htmlRow, dataRow, o) => {
var row = dataRow as DFDataRow;
if (row == null)
return;
var diff = (decimal?)row["差异数量"];
var numberIndext = 5;
var bt = new DialogButton();
bt.CssClass = "btn";
bt.Text = htmlRow.Cells[numberIndext].InnerText;
if (o % 2 != 1) {
bt.CssClass = "btn evenbtn";
}
if (diff < 0) {
bt.BorderStyle = BorderStyle.Solid;
bt.BorderColor = Color.Red;
bt.BorderWidth = 1;
}
htmlRow.Cells[numberIndext].InnerHtml = "";
htmlRow.Cells[numberIndext].Controls.Add(bt);
var idField = (long?)row["GoodsProperty_ID"];
var number = ((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')+'");
bt.Url = url;
bt.Width = 100;
bt.Click += delegate {
_grid.DataBind();
};
var diff = (decimal?)row["预计剩余数量"];
AddLinkBt(o, row, 5, diff, htmlRow);
AddLinkBt(o, row, 6, diff, htmlRow);
};
tPanel.Controls.Add(_grid);
}
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)
{
bt.CssClass = "btn evenbtn";
}
if (diff < 0)
{
bt.BorderStyle = BorderStyle.Solid;
bt.BorderColor = Color.Red;
bt.BorderWidth = 1;
}
htmlRow.Cells[numberIndext].InnerHtml = "";
htmlRow.Cells[numberIndext].Controls.Add(bt);
var idField = (long?) row["GoodsProperty_ID"];
var number = ((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')+'");
bt.Url = url;
bt.Width = 100;
bt.Click += delegate { _grid.DataBind(); };
}
private void DataBindGrid() {
@ -202,30 +211,77 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
}
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 dom = new DQueryDom(bill);
var outputConfig = new JoinAlias(typeof(OutputConfigTmp));
var dom = new DQueryDom(bill);
OrganizationUtil.RegisterOrganizationQueryTable(dom);
dom.RegisterQueryTable(typeof(OrderTmp), new[] { "GoodsProperty_ID", "Number", "SecondNumber", "UnitNum" }, GetOrderDQueryDom());
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(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"));
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.Field("UnitNum", bill));
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(output, "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(
ESubtract(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), DQExpression.Field(bill, "UnitNum")), "预计剩余数量"));
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")), "差异数量"));
return dom;
ESubtract(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), DQExpression.Field(bill, "UnitNum")).ESafeDivide(DQExpression.Field(outputConfig, "Number")).ECastType<Money<>?>(), "预计剩余头数"));
return dom;
}
class OutputConfigTmp {
public long GoodsProperty_ID { get; set; }
[LogicName("主数量")]
public Money<decimal>? Number { get; set; }
}
private DQueryDom GetOutputConfigureDom() {
var dom = new DQueryDom(new JoinAlias(typeof(OutputConfigure)));
dom.Columns.Add(DQSelectColumn.Max("ID"));
dom.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID));
dom.Where.Conditions.Add(DQCondition.EQ("Stopped", false));
var id = dom.EExecuteScalar<long?>() ?? 0;
var detail = new JoinAlias(typeof(OutputConfigure_Detail));
var bill = new JoinAlias(typeof(OutputConfigure));
var goodsPropertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog));
var goodsProperty = new JoinAlias(typeof(GoodsProperty));
var query = new DQueryDom(detail);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(bill),
DQCondition.EQ(bill, "ID", detail, "OutputConfigure_ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(goodsProperty, "ID", detail, "GoodsProperty_ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsPropertyCatalog), DQCondition.EQ(goodsProperty, "GoodsPropertyCatalog_ID", goodsPropertyCatalog, "ID"));
AddGoodsCondition(goodsPropertyCatalog, goodsProperty, query);
query.Columns.Add(DQSelectColumn.Field("GoodsProperty_ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("Number")), "主数量"));
query.GroupBy.Expressions.Add(DQExpression.Field("GoodsProperty_ID"));
query.Where.Conditions.Add(DQCondition.EQ(bill, "ID", id));
query.Where.Conditions.Add(DQCondition.GreaterThan(detail, "GoodsProperty_ID", 0));
return query;
}
static IDQExpression ESubtract(IDQExpression expression, IDQExpression right) {
@ -234,7 +290,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
[DFClass]
class OrderTmp {
[LogicName("存货属性")]
[LogicName("存货属性")]
public long? GoodsProperty_ID { get; set; }
[LogicName("主数量")]
@ -245,12 +301,12 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
[LogicName("订货报价数量")]
public Money<decimal>? UnitNum { get; set; }
[LogicName("存货属性名称")]
[ReferenceTo(typeof(GoodsProperty), "Name")]
[Join("GoodsProperty_ID", "ID")]
public string GoodsProperty_Name { get; set; }
}
class StoreDetailTmp {
@ -279,10 +335,10 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
var dom = _queryContainer.Build();
var bill = dom.From.RootSource.Alias;
var detail = new JoinAlias("detail", typeof(Order_Detail));
var goodsPropertyCatalog = new JoinAlias("_gpc",typeof(GoodsPropertyCatalog));
var goodsProperty = new JoinAlias("_gp",typeof(GoodsProperty));
var goods = new JoinAlias("_g",typeof(SaleGoods));
var customer = new JoinAlias("_c",typeof(Customer));
var goodsPropertyCatalog = new JoinAlias("_gpc", typeof(GoodsPropertyCatalog));
var goodsProperty = new JoinAlias("_gp", typeof(GoodsProperty));
var goods = new JoinAlias("_g", typeof(SaleGoods));
var customer = new JoinAlias("_c", typeof(Customer));
dom.From.AddJoin(JoinType.Inner, new DQDmoSource(detail),
DQCondition.EQ(bill, "ID", detail, "Order_ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(detail, "SaleGoods_ID", goods, "ID"));
@ -291,14 +347,14 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
dom.From.AddJoin(JoinType.Left, new DQDmoSource(customer), DQCondition.EQ(bill, "Customer_ID", customer, "ID"));
AddGoodsCondition(goodsPropertyCatalog, goodsProperty, dom);
dom.Columns.Add(DQSelectColumn.Field("ID", goodsProperty));
dom.Columns.Add(DQSelectColumn.Field("ID", goodsProperty));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field(detail, "Number")), "主数量"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field(detail, "SecondNumber")), "主数量"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field(detail, "UnitNum")), "主数量"));
dom.GroupBy.Expressions.Add(DQExpression.Field(goodsProperty, "ID"));
dom.GroupBy.Expressions.Add(DQExpression.Field(goodsProperty, "ID"));
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
dom.Where.Conditions.Add(DQCondition.EQ(bill, "Domain_ID", DomainContext.Current.ID));
if (!_customerCatalogt.IsEmpty) {
var strs = B3SaleWebUtil.GetDeepByTreeName(_customerCatalogt.DisplayValue);
@ -311,7 +367,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
dom.Where.Conditions.Add(DQCondition.Or(conditions));
}
uint id = ViewStateUtil.Current.SaveToPersistenceMedium(dom.Where.Conditions);
hidden.Value = id.ToString();
hidden.Value = id.ToString();
OrganizationUtil.AddOrganizationLimit(dom, typeof(Order));
return dom;
}
@ -332,7 +388,7 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
query.From.AddJoin(JoinType.Left, new DQDmoSource(store), DQCondition.EQ(store, "ID", storeDetail, "Store_ID"));
query.Columns.Add(DQSelectColumn.Field("ID", goodsProperty));
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")), "主数量"));
@ -354,11 +410,11 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
var bill = new JoinAlias(typeof(OutputForecast));
var goodsPropertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog));
var goodsProperty = new JoinAlias(typeof(GoodsProperty));
var query = new DQueryDom(detail);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(bill),
DQCondition.EQ(bill, "ID", detail, "OutputForecast_ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty), DQCondition.EQ(goodsProperty, "ID", detail, "GoodsProperty_ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsPropertyCatalog), DQCondition.EQ(goodsProperty, "GoodsPropertyCatalog_ID", goodsPropertyCatalog, "ID"));
@ -395,6 +451,6 @@ namespace BWP.Web.Pages.B3_DongFangWanQi.Tools {
DataBindGrid();
}
}
}
}

+ 8
- 0
B3_DongFangWanQi.Web/Pages/B3_DongFangWanQi/Tools/SaleOrderUpdateList.xml View File

@ -36,6 +36,14 @@
<Field name="OrderDate"/>
<QBE paramName="MaxOrderDate"/>
</LessThanOrEqual>
<GreaterThanOrEqual>
<Field name="LoadTime"/>
<QBE paramName="MinLoadTime"/>
</GreaterThanOrEqual>
<LessThanOrEqual>
<Field name="LoadTime"/>
<QBE paramName="MaxLoadTime"/>
</LessThanOrEqual>
<GreaterThanOrEqual>
<Field name="DeliveryTime"/>
<QBE paramName="MinDeliveryTime"/>


Loading…
Cancel
Save