|
|
|
@ -0,0 +1,204 @@ |
|
|
|
using System; |
|
|
|
using System.Collections; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Web.UI.WebControls; |
|
|
|
using BWP.B3Butchery.BO; |
|
|
|
using BWP.B3Frameworks; |
|
|
|
using BWP.B3Frameworks.BO; |
|
|
|
using BWP.B3Frameworks.BO.MoneyTemplate; |
|
|
|
using BWP.B3Frameworks.BO.NamedValueTemplate; |
|
|
|
using BWP.B3Frameworks.Utils; |
|
|
|
using BWP.B3ProduceUnitedInfos; |
|
|
|
using BWP.B3Sale.BO; |
|
|
|
using BWP.B3Sale.Utils; |
|
|
|
using BWP.B3UnitedInfos; |
|
|
|
using BWP.B3UnitedInfos.BO; |
|
|
|
using BWP.Web.Layout; |
|
|
|
using BWP.Web.Utils; |
|
|
|
using BWP.Web.WebControls; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2.DQuery; |
|
|
|
using Forks.EnterpriseServices.SqlDoms; |
|
|
|
using Forks.Utils; |
|
|
|
using TSingSoft.WebControls2; |
|
|
|
using TSingSoft.WebControls2.QBELinks; |
|
|
|
using TSingSoft.WebPluginFramework; |
|
|
|
|
|
|
|
namespace BWP.Web.Pages.B3YunKen.Reports |
|
|
|
{ |
|
|
|
class ProduceFinishDiffReport : DFBrowseGridReportPage<ProduceFinish> |
|
|
|
{ |
|
|
|
protected override string AccessRoleName { |
|
|
|
get { return "B3_YunKen.报表分析.完工与入库对比"; } |
|
|
|
} |
|
|
|
|
|
|
|
protected override string Caption { |
|
|
|
get { return "完工与入库对比"; } |
|
|
|
} |
|
|
|
|
|
|
|
readonly B3SaleReportDisplayOptionHelper _displayOptionHelper = new B3SaleReportDisplayOptionHelper(); |
|
|
|
readonly bool _useBrandItem = GlobalFlags.get(B3UnitedInfosConsts.GlobalFlags.库存支持品牌项); |
|
|
|
protected override string QueryOptionsTabName { |
|
|
|
get { |
|
|
|
return "显示选项"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private ChoiceBox _goods, _brandItem, _productLine, _goodsProperty, _goodsPropertyCatalog; |
|
|
|
|
|
|
|
protected override DQueryDom GetQueryDom() { |
|
|
|
var dom = base.GetQueryDom(); |
|
|
|
dom.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID)); |
|
|
|
var bill = JoinAlias.Create("bill"); |
|
|
|
_displayOptionHelper.AddAlias("bill", bill); |
|
|
|
|
|
|
|
var detail = new JoinAlias("detail", typeof(ProduceFinish_Detail)); |
|
|
|
_displayOptionHelper.AddAlias("detail", detail); |
|
|
|
|
|
|
|
dom.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), |
|
|
|
DQCondition.EQ(bill, "ID", detail, "ProduceFinish_ID")); |
|
|
|
|
|
|
|
var inDetail = new JoinAlias("inDetail", typeof(ProductInStore_Detail)); |
|
|
|
_displayOptionHelper.AddAlias("inDetail", inDetail); |
|
|
|
|
|
|
|
dom.From.AddJoin(JoinType.Inner, new DQDmoSource(inDetail), DQCondition.EQ(inDetail, "ProduceFinish_Detail_ID", detail, "ID")); |
|
|
|
//var deparetment1 = dom.EJoin<Department>(aliasName: "department1");
|
|
|
|
//TreeUtil.AddTreeCondition<Department>(dom, mQueryContainer, "Department_ID", deparetment1);
|
|
|
|
|
|
|
|
var goods1 = new JoinAlias("goods", typeof(Goods)); |
|
|
|
dom.From.AddJoin(JoinType.Left, new DQDmoSource(goods1), |
|
|
|
DQCondition.EQ(goods1, "ID", detail, "Goods_ID")); |
|
|
|
|
|
|
|
var goodsProperty1 = new JoinAlias("goodsProperty", typeof(GoodsProperty)); |
|
|
|
dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty1), |
|
|
|
DQCondition.EQ(goodsProperty1, "ID", goods1, "GoodsProperty_ID")); |
|
|
|
|
|
|
|
var goodsPropertyCatalog1 = new JoinAlias("goodsPropertyCatalog", typeof(GoodsPropertyCatalog)); |
|
|
|
dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsPropertyCatalog1), |
|
|
|
DQCondition.EQ(goodsPropertyCatalog1, "ID", goodsProperty1, "GoodsPropertyCatalog_ID")); |
|
|
|
|
|
|
|
//_displayOptionHelper.AddAlias("departmen1t", deparetment1);
|
|
|
|
_displayOptionHelper.AddAlias("goods", goods1); |
|
|
|
_displayOptionHelper.AddAlias("goodsProperty", goodsProperty1); |
|
|
|
_displayOptionHelper.AddAlias("goodsPropertyCatalog", goodsPropertyCatalog1); |
|
|
|
|
|
|
|
//var customer = new JoinAlias(typeof(Customer));
|
|
|
|
//dom.From.AddJoin(JoinType.Left, new DQDmoSource(customer), DQCondition.EQ(bill, "Customer_ID", customer, "ID"));
|
|
|
|
//if (!_customerCatalog.IsEmpty) {
|
|
|
|
// var strs = B3SaleWebUtil.GetDeepByTreeName(_customerCatalog.DisplayValue);
|
|
|
|
// var conditions = new List<IDQExpression>();
|
|
|
|
// var values = _customerCatalog.GetValues();
|
|
|
|
// for (int index = 0; index < values.Length; index++) {
|
|
|
|
// var value = values[index];
|
|
|
|
// conditions.Add(DQCondition.EQ(customer, "CustomerCatalog_TreeDeep" + strs[index] + "ID", value));
|
|
|
|
// }
|
|
|
|
// dom.Where.Conditions.Add(DQCondition.Or(conditions));
|
|
|
|
//}
|
|
|
|
if (!_goodsProperty.IsEmpty) { |
|
|
|
dom.Where.Conditions.EFieldInList(DQExpression.Field(detail, "GoodsProperty_ID"), _goodsProperty.GetValues()); |
|
|
|
} |
|
|
|
|
|
|
|
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++) { |
|
|
|
var value = values[index]; |
|
|
|
conditions.Add(DQCondition.EQ(goodsPropertyCatalog1, "TreeDeep" + strs[index] + "ID", value)); |
|
|
|
} |
|
|
|
dom.Where.Conditions.Add(DQCondition.Or(conditions)); |
|
|
|
} |
|
|
|
_displayOptionHelper.AddSelectColumns(dom, name => OptionIsSelected("显示字段", name), SumColumnIndexs); |
|
|
|
if (!_goods.IsEmpty) { |
|
|
|
dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(detail, "Goods_ID"), _goods.GetValues().Select(x => DQExpression.Value(x)).ToArray())); |
|
|
|
} |
|
|
|
if (!_brandItem.IsEmpty) { |
|
|
|
dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(detail, "BrandItem_ID"), _brandItem.GetValues().Select(x => DQExpression.Value(x)).ToArray())); |
|
|
|
} |
|
|
|
if (!_productLine.IsEmpty) { |
|
|
|
dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(goods1, "ProductLine_ID"), _productLine.GetValues().Select(x => DQExpression.Value(x)).ToArray())); |
|
|
|
} |
|
|
|
dom.Where.Conditions.Add(DQCondition.EQ(bill, "BillState", 单据状态.已审核)); |
|
|
|
return dom; |
|
|
|
} |
|
|
|
|
|
|
|
protected override void AddQueryOptions(VLayoutPanel vPanel) { |
|
|
|
_displayOptionHelper.AddOptionItem("生产单位", "bill", "ProductionUnit_Name"); |
|
|
|
_displayOptionHelper.AddOptionItem("经办人", "bill", "Employee_Name"); |
|
|
|
_displayOptionHelper.AddOptionItem("存货分类", "goods", "GoodsPropertyCatalog_Name"); |
|
|
|
if(_useBrandItem) |
|
|
|
_displayOptionHelper.AddOptionItem("品牌项", "detail", "BrandItem_Name"); |
|
|
|
_displayOptionHelper.AddOptionItem("产品线", "goods", "ProductLine_Name"); |
|
|
|
_displayOptionHelper.AddOptionItem("存货编码", "goods", "Code"); |
|
|
|
_displayOptionHelper.AddOptionItem("存货名称", "goods", "Name"); |
|
|
|
_displayOptionHelper.AddOptionItem("存货规格", "goods", "Spec"); |
|
|
|
_displayOptionHelper.AddOptionItem("辅单位", "goods", "SecondUnit"); |
|
|
|
_displayOptionHelper.AddOptionItem("主单位", "goods", "MainUnit"); |
|
|
|
_displayOptionHelper.AddOptionItem("存货批号", "detail", "GoodsBatch_Name"); |
|
|
|
_displayOptionHelper.AddOptionItem("辅数量", "detail", "SecondNumber"); |
|
|
|
_displayOptionHelper.AddOptionItem("主数量", "detail", "Number"); |
|
|
|
_displayOptionHelper.AddOptionItem("入库辅数量", "inDetail", "SecondNumber"); |
|
|
|
_displayOptionHelper.AddOptionItem("入库主数量", "inDetail", "Number"); |
|
|
|
var detail = JoinAlias.Create("detail"); |
|
|
|
var inDetail = JoinAlias.Create("inDetail"); |
|
|
|
_displayOptionHelper.AddOptionItem("差异数量", () => { |
|
|
|
return DQExpression.Field(detail, "Number").ESubtract(DQExpression.Field(inDetail, "Number")); |
|
|
|
}, sum: true); |
|
|
|
_displayOptionHelper.AddOptionItem("差异辅数量", () => { |
|
|
|
return DQExpression.Field(detail, "SecondNumber").ESubtract(DQExpression.Field(inDetail, "SecondNumber")); |
|
|
|
}, sum: true); |
|
|
|
var showFieldsSection = mPageLayoutManager.AddSection("显示字段", "显示字段"); |
|
|
|
var showFields = _displayOptionHelper.GetAllDisplayNames().Select(displayName => new Tuple<string, string>(displayName, displayName)).ToList(); |
|
|
|
showFieldsSection.ApplyLayout(showFields, mPageLayoutManager); |
|
|
|
AddQueryOption("显示字段", showFields.EToList(x => x.Item1), _displayOptionHelper.GetDefaultSelelectedDisplayNames()); |
|
|
|
base.AddQueryOptions(vPanel); |
|
|
|
} |
|
|
|
|
|
|
|
protected override void AddQueryControls(VLayoutPanel vPanel) { |
|
|
|
base.AddQueryControls(vPanel); |
|
|
|
|
|
|
|
var layoutManager = new LayoutManager("", mDFInfo, mQueryContainer); |
|
|
|
//layoutManager.Add("AccountingUnit_ID", QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["AccountingUnit_ID"], mQueryContainer, "AccountingUnit_ID", B3FrameworksConsts.DataSources.授权会计单位全部));
|
|
|
|
//layoutManager["AccountingUnit_ID"].NotAutoAddToContainer = true;
|
|
|
|
|
|
|
|
//layoutManager.Add("Department_ID", QueryCreator.DFChoiceBox(mDFInfo.Fields["Department_ID"], B3FrameworksConsts.DataSources.授权部门全部));
|
|
|
|
|
|
|
|
//layoutManager.Add("Customer_ID", QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["Customer_ID"], mQueryContainer, "Customer_ID", B3SaleDataSources.客户全部));
|
|
|
|
//layoutManager["Customer_ID"].NotAutoAddToContainer = true;
|
|
|
|
|
|
|
|
//layoutManager.Add("Employee_ID", QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["Employee_ID"], mQueryContainer, "Employee_ID", B3FrameworksConsts.DataSources.授权员工全部));
|
|
|
|
//layoutManager["Employee_ID"].NotAutoAddToContainer = true;
|
|
|
|
layoutManager.Add("ProductionUnit_ID", new SimpleLabel("生产单位"), mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["ProductionUnit_ID"], B3ProduceUnitedInfosDataSources.生产单位全部), s => long.Parse(s)), "ProductionUnit_ID")); |
|
|
|
layoutManager["ProductionUnit_ID"].NotAutoAddToContainer = true; |
|
|
|
|
|
|
|
layoutManager.Add("GoodsProperty_ID", new SimpleLabel("存货属性"), _goodsProperty = new ChoiceBox() { DataKind = B3UnitedInfosConsts.DataSources.存货属性全部, Width = Unit.Empty, EnableTopItem = true, EnableMultiSelection = true, EnableMultiSelectionViewer = true, EnableInputArgument = true }, false); |
|
|
|
|
|
|
|
layoutManager.Add("GoodsPropertyCatalog_ID", new SimpleLabel("属性分类"), _goodsPropertyCatalog = new ChoiceBox() { DataKind = B3UnitedInfosConsts.DataSources.存货属性分类, Width = Unit.Empty, EnableTopItem = true, EnableMultiSelection = true, EnableMultiSelectionViewer = true, EnableInputArgument = true }, false); |
|
|
|
|
|
|
|
if (_useBrandItem) { |
|
|
|
layoutManager.Add("BrandItem_ID", new SimpleLabel("品牌项"), mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(_brandItem = QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["ID"], B3UnitedInfosConsts.DataSources.品牌项), s => long.Parse(s)), "BrandItem_ID")); |
|
|
|
layoutManager["BrandItem_ID"].NotAutoAddToContainer = true; |
|
|
|
} |
|
|
|
|
|
|
|
layoutManager.Add("ProductLine_ID", new SimpleLabel("产品线"), mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(_productLine = QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["ID"], B3UnitedInfosConsts.DataSources.产品线全部), s => long.Parse(s)), "ProductLine_ID")); |
|
|
|
layoutManager["ProductLine_ID"].NotAutoAddToContainer = true; |
|
|
|
|
|
|
|
layoutManager.Add("Goods_ID", new SimpleLabel("存货"), mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(_goods = QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["ID"], B3SaleDataSources.可销售存货), s => long.Parse(s)), "Goods_ID")); |
|
|
|
layoutManager["Goods_ID"].NotAutoAddToContainer = true; |
|
|
|
|
|
|
|
var config = new AutoLayoutConfig { Cols = 4 }; |
|
|
|
config.Add("Date"); |
|
|
|
config.Add("ProductionUnit_ID"); |
|
|
|
config.Add("GoodsProperty_ID"); |
|
|
|
config.Add("GoodsPropertyCatalog_ID"); |
|
|
|
if (_useBrandItem) |
|
|
|
config.Add("BrandItem_ID"); |
|
|
|
config.Add("ProductLine_ID"); |
|
|
|
config.Add("Goods_ID"); |
|
|
|
layoutManager.Config = config; |
|
|
|
vPanel.Add(layoutManager.CreateLayout()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |