| @ -0,0 +1,89 @@ | |||
| using System.Linq; | |||
| using System.Web.UI; | |||
| using System.Web.UI.WebControls; | |||
| using B3_DongFangWanQi.BL; | |||
| using B3_DongFangWanQi.BO; | |||
| using BWP.B3Frameworks.Utils; | |||
| using BWP.B3Sale.BO; | |||
| using BWP.B3Sale.Utils; | |||
| using BWP.B3UnitedInfos.Utils; | |||
| using BWP.Web.Layout; | |||
| using BWP.Web.Utils; | |||
| using BWP.Web.WebControls; | |||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||
| using Forks.EnterpriseServices.DataForm; | |||
| using TSingSoft.WebControls2; | |||
| namespace BWP.Web.Pages.B3_DongFangWanQi.BaseInfos { | |||
| class OutputConfigureEdit : DomainBaseInfoEditPage<OutputConfigure, IOutputConfigureBL> { | |||
| protected override void BuildBody(Control parent) { | |||
| var layoutManage = new LayoutManager("", mDFInfo, mDFContainer); | |||
| var config = new AutoLayoutConfig(); | |||
| config.Add("Name"); | |||
| config.Add("AccountingUnit_ID"); | |||
| config.Add("Remark"); | |||
| layoutManage.Config = config; | |||
| parent.Controls.Add(layoutManage.CreateLayout()); | |||
| CreateDetail(parent.EAdd(new TitlePanel("客户列表"))); | |||
| } | |||
| DFEditGrid _grid; | |||
| private void CreateDetail(TitlePanel titlePanel) | |||
| { | |||
| if (CanSave) { | |||
| var hPanel = titlePanel.EAdd(new HLayoutPanel()); | |||
| hPanel.Add(new LiteralControl("<h2>选择存货:</h2>")); | |||
| var customerSelect = hPanel.Add(new ChoiceBox(B3SaleDataSources.可销售存货) { | |||
| Width = Unit.Pixel(160), | |||
| EnableInputArgument = true, | |||
| AutoPostBack = true | |||
| }); | |||
| customerSelect.SelectedValueChanged += delegate { | |||
| if (customerSelect.IsEmpty) | |||
| return; | |||
| _grid.GetFromUI(); | |||
| var selectID = long.Parse(customerSelect.Value); | |||
| if (Dmo.Details.Any(x => x.Goods_ID == selectID)) | |||
| return; | |||
| using (var context =new TransactionContext()) { | |||
| var goods = InnerBLUtil.GetSingleDmo<SaleGoods>(context.Session, "ID", selectID, "Name", "Code", "PrintShortName" ); | |||
| Dmo.Details.Add(new OutputConfigure_Detail { | |||
| Goods_ID = selectID, | |||
| Goods_Name = goods.Name, | |||
| Goods_Code = goods.Code, | |||
| Goods_Spec = goods.Spec, | |||
| PrintShortName = goods.PrintShortName | |||
| }); | |||
| } | |||
| _grid.DataBind(); | |||
| customerSelect.Clear(); | |||
| }; | |||
| } | |||
| var detailEditor = new DFCollectionEditor<OutputConfigure_Detail>(() => Dmo.Details); | |||
| detailEditor.AllowDeletionFunc = () => CanSave; | |||
| detailEditor.CanDeleteFunc = detail => CanSave; | |||
| detailEditor.IsEditableFunc = (field, detail) => CanSave; | |||
| _grid = titlePanel.EAdd(new DFEditGrid(detailEditor) { Width = Unit.Percentage(100), ShowLineNo = true }); | |||
| _grid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Name")); | |||
| _grid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Code")); | |||
| _grid.Columns.Add(new DFEditGridColumn<DFValueLabel>("PrintShortName")); | |||
| _grid.Columns.Add(new DFEditGridColumn<DFTextBox>("Number")); | |||
| _grid.Columns.Add(new DFEditGridColumn<DFTextBox>("Rate")); | |||
| } | |||
| public override void GetFromUI() { | |||
| base.GetFromUI(); | |||
| _grid.GetFromUI(); | |||
| } | |||
| public override void AppToUI() { | |||
| base.AppToUI(); | |||
| _grid.DataBind(); | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,12 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using B3_DongFangWanQi.BL; | |||
| using B3_DongFangWanQi.BO; | |||
| namespace BWP.Web.Pages.B3_DongFangWanQi.BaseInfos { | |||
| class OutputConfigureList : DomainBaseInfoListPage<OutputConfigure, IOutputConfigureBL> { | |||
| } | |||
| } | |||
| @ -0,0 +1,31 @@ | |||
| <?xml version="1.0" encoding="utf-8" ?> | |||
| <Select xmlns="urn:XDQuery"> | |||
| <Columns> | |||
| <Field name="ID"/> | |||
| </Columns> | |||
| <From> | |||
| <DmoClass class="B3_DongFangWanQi.BO.OutputConfigure, B3_DongFangWanQi"/> | |||
| </From> | |||
| <Where> | |||
| <And> | |||
| <EQ> | |||
| <Field name="ID"/> | |||
| <QBE paramName="ID"/> | |||
| </EQ> | |||
| <Or> | |||
| <Contains> | |||
| <Field name="Name"/> | |||
| <QBE paramName="Name"/> | |||
| </Contains> | |||
| <Contains> | |||
| <Field name="Spell"/> | |||
| <QBE paramName="Name"/> | |||
| </Contains> | |||
| </Or> | |||
| <Contains> | |||
| <Field name="Remark"/> | |||
| <QBE paramName="Remark"/> | |||
| </Contains> | |||
| </And> | |||
| </Where> | |||
| </Select> | |||
| @ -0,0 +1,107 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Web.UI; | |||
| using System.Web.UI.WebControls; | |||
| using B3_DongFangWanQi.BL; | |||
| using B3_DongFangWanQi.BO; | |||
| using BWP.B3Frameworks; | |||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||
| using BWP.B3Frameworks.Utils; | |||
| using BWP.Web.CustomPageLayout; | |||
| using BWP.Web.Layout; | |||
| using BWP.Web.WebControls; | |||
| using Forks.EnterpriseServices.DataForm; | |||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||
| using Forks.EnterpriseServices.SqlDoms; | |||
| using Forks.Utils.Collections; | |||
| using TSingSoft.WebControls2; | |||
| using TSingSoft.WebPluginFramework; | |||
| namespace BWP.Web.Pages.B3_DongFangWanQi.Bills { | |||
| class OutputForecastEdit : DomainBillEditPage<OutputForecast, IOutputForecastBL> { | |||
| private DFEditGrid _detailGrid; | |||
| protected override void BuildBasePropertiesEditor(TitlePanel titlePanel, PageLayoutSection section) { | |||
| var layoutManager = new LayoutManager("main", mDFInfo, mDFContainer); | |||
| var config = new AutoLayoutConfig(); | |||
| config.Add("AccountingUnit_ID"); | |||
| config.Add("Department_ID"); | |||
| config.Add("Date"); | |||
| config.Add("Number"); | |||
| config.Add("Remark"); | |||
| layoutManager.Config = config; | |||
| section.ApplyLayout(layoutManager, config, mPageLayoutManager, mDFInfo); | |||
| titlePanel.Controls.Add(layoutManager.CreateLayout()); | |||
| } | |||
| protected override void BuildBody(Control form) { | |||
| base.BuildBody(form); | |||
| CreateAccDetailPanel(form.EAdd(new TitlePanel("测算明细"))); | |||
| } | |||
| private void CreateAccDetailPanel(TitlePanel titlePanel) { | |||
| var vPanel = new VLayoutPanel(); | |||
| titlePanel.Controls.Add(vPanel); | |||
| if (CanSave) { | |||
| var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left)); | |||
| var button = hPanel.Add(new TSButton("测算")); | |||
| button.Click += delegate { | |||
| var number = (decimal?)mDFContainer.GetValueFromUI("Number"); | |||
| if (number == null) { | |||
| AspUtil.Alert(this, "屠宰头数录入为空!"); | |||
| return; | |||
| } | |||
| var dom = new DmoQuery(typeof(OutputConfigure)); | |||
| dom.Where.Conditions.Add(DQCondition.EQ("Stopped", false)); | |||
| dom.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID", true)); | |||
| dom.Range = SelectRange.Top(1); | |||
| var config = dom.EExecuteScalar<OutputConfigure>(); | |||
| if (config == null) { | |||
| AspUtil.Alert(this, "请先进行产值配置!"); | |||
| return; | |||
| } | |||
| Dmo.Details.Clear(); | |||
| foreach (var detail in config.Details) { | |||
| var d = new OutputForecast_Detail(); | |||
| DmoUtil.CopyDmoFields(detail, d, "ID"); | |||
| DmoUtil.RefreshDependency(d, "Goods_ID"); | |||
| d.Number = detail.Number * number; | |||
| if (d.Goods_UnitConvertDirection == 主辅转换方向.双向转换 || d.Goods_UnitConvertDirection == 主辅转换方向.由主至辅) { | |||
| d.SecondNumber = d.Number / (d.Goods_MainUnitRatio ?? 1) * (d.Goods_SecondUnitRatio ?? 1); | |||
| } | |||
| Dmo.Details.Add(d); | |||
| } | |||
| _detailGrid.DataBind(); | |||
| }; | |||
| } | |||
| var detailEditor = new DFCollectionEditor<OutputForecast_Detail>(() => Dmo.Details); | |||
| detailEditor.AllowDeletionFunc = () => CanSave; | |||
| detailEditor.CanDeleteFunc = (detail) => CanSave; | |||
| detailEditor.IsEditableFunc = (field, detail) => false; | |||
| _detailGrid = vPanel.Add(new DFEditGrid(detailEditor) { Width = Unit.Percentage(100) }); | |||
| _detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Name")); | |||
| _detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Code")); | |||
| _detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("PrintShortName")); | |||
| _detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Number")); | |||
| } | |||
| protected override void OnLoad(EventArgs e) { | |||
| base.OnLoad(e); | |||
| if (!IsPostBack) | |||
| DataBind(); | |||
| } | |||
| public override void GetFromUI() { | |||
| base.GetFromUI(); | |||
| _detailGrid.GetFromUI(); | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,31 @@ | |||
| using B3_DongFangWanQi.BL; | |||
| using B3_DongFangWanQi.BO; | |||
| using BWP.B3Frameworks; | |||
| using BWP.Web.Pages.B3Sale.Bills; | |||
| using BWP.Web.Utils; | |||
| using TSingSoft.WebControls2; | |||
| namespace BWP.Web.Pages.B3_DongFangWanQi.Bills { | |||
| class OutputForecastList : B3SaleBillListPage<OutputForecast, IOutputForecastBL> { | |||
| protected override void AddQueryControls(VLayoutPanel vPanel) { | |||
| vPanel.Add(CreateDefaultBillQueryControls((panel, config) => { | |||
| panel.Add("AccountingUnit_ID", QueryCreator.DFChoiceBox(mDFInfo.Fields["AccountingUnit_ID"], B3FrameworksConsts.DataSources.授权会计单位全部)); | |||
| config.Add("Date"); | |||
| config.Add("AccountingUnit_ID"); | |||
| })); | |||
| } | |||
| protected override void AddDFBrowseGridColumn(DFBrowseGrid grid, string field) { | |||
| base.AddDFBrowseGridColumn(grid, field); | |||
| if (field == "BillState") { | |||
| AddDFBrowseGridColumn(grid, "Date"); | |||
| AddDFBrowseGridColumn(grid, "AccountingUnit_Name"); | |||
| AddDFBrowseGridColumn(grid, "Department_Name"); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,29 @@ | |||
| <?xml version="1.0" encoding="utf-8" ?> | |||
| <Select xmlns="urn:XDQuery"> | |||
| <Columns> | |||
| <Field name="ID"/> | |||
| </Columns> | |||
| <From> | |||
| <DmoClass class="B3_DongFangWanQi.BO.OutputForecast, B3_DongFangWanQi"/> | |||
| </From> | |||
| <Where> | |||
| <And> | |||
| <EQ> | |||
| <Field name="ID"/> | |||
| <QBE paramName="ID"/> | |||
| </EQ> | |||
| <EQ> | |||
| <Field name="AccountingUnit_ID"/> | |||
| <QBE paramName="AccountingUnit_ID"/> | |||
| </EQ> | |||
| <GreaterThanOrEqual> | |||
| <Field name="Date"/> | |||
| <QBE paramName="MinDate" /> | |||
| </GreaterThanOrEqual> | |||
| <LessThanOrEqual> | |||
| <Field name="Date"/> | |||
| <QBE paramName="MaxDate"/> | |||
| </LessThanOrEqual> | |||
| </And> | |||
| </Where> | |||
| </Select> | |||
| @ -0,0 +1,412 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Web.UI; | |||
| using System.Web.UI.HtmlControls; | |||
| using System.Web.UI.WebControls; | |||
| using BWP.B3Frameworks.BO.MoneyTemplate; | |||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||
| using BWP.B3Frameworks.Utils; | |||
| using BWP.B3Sale.BL; | |||
| using BWP.B3Sale.BO; | |||
| using BWP.B3UnitedInfos.BO; | |||
| using BWP.Web.Utils; | |||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||
| using Forks.EnterpriseServices.DataForm; | |||
| using Forks.EnterpriseServices.DomainObjects2; | |||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||
| using Forks.EnterpriseServices.SqlDoms; | |||
| using Forks.Utils; | |||
| using Forks.Utils.Collections; | |||
| using TSingSoft.WebControls2; | |||
| using TSingSoft.WebPluginFramework.Controls; | |||
| namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { | |||
| class SaleOrderUpdateEdit : AppBasePage { | |||
| long? SaleGoods_ID { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["Goods_ID"])) | |||
| return null; | |||
| return long.Parse(Request.QueryString["Goods_ID"]); | |||
| } | |||
| } | |||
| string Goods_Name { | |||
| get { | |||
| return Request.QueryString["Goods_Name"]; | |||
| } | |||
| } | |||
| long? Customer_ID { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["Customer_ID"])) | |||
| return null; | |||
| return long.Parse(Request.QueryString["Customer_ID"]); | |||
| } | |||
| } | |||
| string AccountingUnit_Name { | |||
| get { | |||
| return Request.QueryString["AccountingUnit_Name"]; | |||
| } | |||
| } | |||
| long? AccountingUnit_ID { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["AccountingUnit_ID"])) | |||
| return null; | |||
| return long.Parse(Request.QueryString["AccountingUnit_ID"]); | |||
| } | |||
| } | |||
| long? SelectAccountingUnit_ID { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["SelectAccountingUnit_ID"])) | |||
| return null; | |||
| return long.Parse(Request.QueryString["SelectAccountingUnit_ID"]); | |||
| } | |||
| } | |||
| long? SelectStore_ID { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["SelectStore_ID"])) | |||
| return null; | |||
| return long.Parse(Request.QueryString["SelectStore_ID"]); | |||
| } | |||
| } | |||
| long? SelectCustomer_ID { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["SelectCustomer_ID"])) | |||
| return null; | |||
| return long.Parse(Request.QueryString["SelectCustomer_ID"]); | |||
| } | |||
| } | |||
| string SelectGoodsProperty_Name { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["SelectGoodsProperty_Name"])) | |||
| return null; | |||
| return Request.QueryString["SelectGoodsProperty_Name"]; | |||
| } | |||
| } | |||
| long? SelectGoodsProperty_ID { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["SelectGoodsProperty_ID"])) | |||
| return null; | |||
| return long.Parse(Request.QueryString["SelectGoodsProperty_ID"]); | |||
| } | |||
| } | |||
| string SelectGoodsPropertyCatalog_Name { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["SelectGoodsPropertyCatalog_Name"])) | |||
| return null; | |||
| return Request.QueryString["SelectGoodsPropertyCatalog_Name"]; | |||
| } | |||
| } | |||
| long? SelectGoodsPropertyCatalog_ID { | |||
| get { | |||
| if (string.IsNullOrEmpty(Request.QueryString["SelectGoodsPropertyCatalog_ID"])) | |||
| return null; | |||
| return long.Parse(Request.QueryString["SelectGoodsPropertyCatalog_ID"]); | |||
| } | |||
| } | |||
| public List<Order_Detail> Details { | |||
| get { | |||
| if (ViewState["Details"] == null) | |||
| ViewState["Details"] = new List<Order_Detail>(); | |||
| return (List<Order_Detail>)ViewState["Details"]; | |||
| } | |||
| set { ViewState["Details"] = value; } | |||
| } | |||
| DateTime? MinTime { | |||
| get { | |||
| var str = Request.QueryString["MinDate"]; | |||
| if (string.IsNullOrEmpty(str)) | |||
| return null; | |||
| return DateTime.Parse(str); | |||
| } | |||
| } | |||
| DateTime? MaxTime { | |||
| get { | |||
| var str = Request.QueryString["MaxDate"]; | |||
| if (string.IsNullOrEmpty(str)) | |||
| return null; | |||
| return DateTime.Parse(str); | |||
| } | |||
| } | |||
| private DFEditGrid _goodsGrid; | |||
| private QueryContainer _queryContainer; | |||
| readonly static DFInfo DFInfo = DFInfo.Get(typeof(Order)); | |||
| private Label _l1, _l2; | |||
| private DFContainer _dfContainer; | |||
| protected override void InitForm(HtmlForm form) { | |||
| _queryContainer = QueryContainer.FromResource(typeof(SaleOederUpdateList).FullName + ".xml", GetType().Assembly); | |||
| QueryCreator.TimeRange(DFInfo.Fields["OrderDate"], _queryContainer, "MinOrderDate", "MaxOrderDate", MinTime, MaxTime); | |||
| form.Controls.Add(new PageTitle("订单调整")); | |||
| var vPanel = new VLayoutPanel(); | |||
| form.Controls.Add(vPanel); | |||
| _dfContainer = new DFContainer(); | |||
| _dfContainer.ID = "DFContainer"; | |||
| form.Controls.Add(_dfContainer); | |||
| var panel = new HLayoutPanel(); | |||
| panel.Add(new SimpleLabel("可用数量")); | |||
| var label = new Label(); | |||
| label.Font.Size = 14; | |||
| label.Width = 120; | |||
| label.Font.Bold = true; | |||
| label.Text = decimal.Parse(Request.QueryString["number"]).ToString("0.00"); | |||
| panel.Add(label); | |||
| panel.Add(new SimpleLabel("合计订货数量")); | |||
| _l1 = new Label(); | |||
| _l1.ID = "l1"; | |||
| _l1.Font.Size = 14; | |||
| _l1.Width = 120; | |||
| _l1.Font.Bold = true; | |||
| panel.Add(_l1); | |||
| 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"); | |||
| CreateGrid(vPanel); | |||
| } | |||
| private void CreateGrid(VLayoutPanel vPanel) { | |||
| var editor = new DFCollectionEditor<Order_Detail>(() => Details); | |||
| editor.CanDeleteFunc = detail => true; | |||
| editor.IsEditableFunc = (field, detail) => { | |||
| if (field.Name == "SecondNumber") { | |||
| var hasSecondUnit = !string.IsNullOrEmpty(detail.Goods_SecondUnit); | |||
| return hasSecondUnit; | |||
| } | |||
| return true; | |||
| }; | |||
| _goodsGrid = new DFEditGrid(editor); | |||
| _goodsGrid.DFGridSetEnabled = false; | |||
| _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>("Goods_Code")); | |||
| _goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Name")); | |||
| _goodsGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Spec")); | |||
| _goodsGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("UnitNum")).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.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("RightRatio"); | |||
| vPanel.Add(_goodsGrid); | |||
| new MainToSecondConvertRowManger(_goodsGrid); | |||
| _dfContainer.AddNonDFControl(_goodsGrid, "$Grid"); | |||
| var hl = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Center)); | |||
| var saveBt = hl.Add(new TSButton("保存")); | |||
| saveBt.Width = Unit.Pixel(80); | |||
| saveBt.Click += SaveBtClick; | |||
| hl.Add(new LiteralControl(" ")); | |||
| TSButton back; | |||
| hl.Add(back=new TSButton("返回", delegate { | |||
| DialogUtil.SetCachedObj(this, ""); | |||
| })); | |||
| back.Width = Unit.Pixel(80); | |||
| } | |||
| void SaveBtClick(object sender, EventArgs e) { | |||
| _goodsGrid.GetFromUI(); | |||
| var groupByOrderID = Details.GroupBy(x => x.Order_ID); | |||
| var bl = BIFactory.Create<IOrderBL>(); | |||
| var cannotUpdateID = new List<long>(); | |||
| var updateIDs = new List<long>(); | |||
| foreach (var orderDetails in groupByOrderID) { | |||
| var order = bl.Load(orderDetails.Key); | |||
| if (order == null) | |||
| continue; | |||
| var changed = false; | |||
| foreach (var cDetail in orderDetails) { | |||
| var detail = order.Details.FirstOrDefault(x => x.ID == cDetail.ID); | |||
| if (detail == null) | |||
| continue; | |||
| if (detail.UnitNum != cDetail.UnitNum) { | |||
| detail.UnitNum = cDetail.UnitNum; | |||
| changed = true; | |||
| } | |||
| if (detail.SecondNumber != cDetail.SecondNumber) { | |||
| detail.SecondNumber = cDetail.SecondNumber; | |||
| changed = true; | |||
| } | |||
| if (detail.Price != cDetail.Price) { | |||
| detail.Price = cDetail.Price; | |||
| changed = true; | |||
| } | |||
| } | |||
| if (changed) { | |||
| if (order.BillState != 单据状态.未审核) { | |||
| cannotUpdateID.Add(order.ID); | |||
| continue; | |||
| } | |||
| bl.Update(order); | |||
| updateIDs.Add(order.ID); | |||
| } | |||
| } | |||
| string msg; | |||
| if (updateIDs.Count > 0) | |||
| msg = string.Format("保存成功\n已更新销售订单No.{0}\n", string.Join(",", updateIDs)); | |||
| else { | |||
| msg = "没有需要更新的产品!\n"; | |||
| } | |||
| if (cannotUpdateID.Count > 0) | |||
| msg = string.Format("销售订单No.{0} 不是未审核状态,不能更新!", string.Join(",", cannotUpdateID)); | |||
| AspUtil.Alert(this, msg); | |||
| BindGrid(); | |||
| } | |||
| protected override void OnLoad(EventArgs e) { | |||
| base.OnLoad(e); | |||
| if (!IsPostBack) { | |||
| BindGrid(); | |||
| } | |||
| } | |||
| private void BindGrid() { | |||
| var dom = _queryContainer.Build(); | |||
| var order = dom.From.RootSource.Alias; | |||
| var detailAlias = new JoinAlias("detail", typeof(Order_Detail)); | |||
| var goodsPropertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog)); | |||
| var goodsProperty = new JoinAlias(typeof(GoodsProperty)); | |||
| var goods = new JoinAlias(typeof(SaleGoods)); | |||
| 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")); | |||
| 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.Columns.Add(DQSelectColumn.Field("ID", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("UnitNum", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("SecondNumber", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Number", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Price", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("PolicyPrice", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Unit", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("SaleGoods_ID", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Money", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Customer_Name", order)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Order_ID", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("GoodsBatch_ID", detailAlias)); | |||
| dom.Columns.Add(DQSelectColumn.Field("GoodsBatch_Name", detailAlias)); | |||
| if (SaleGoods_ID != null) { | |||
| dom.Where.Conditions.Add(DQCondition.EQ(detailAlias, "SaleGoods_ID", SaleGoods_ID)); | |||
| } | |||
| if (AccountingUnit_ID != null) { | |||
| dom.Where.Conditions.Add(DQCondition.EQ(order, "AccountingUnit_ID", AccountingUnit_ID)); | |||
| } | |||
| if (SelectAccountingUnit_ID != null) { | |||
| dom.Where.Conditions.Add(DQCondition.EQ(order, "AccountingUnit_ID", SelectAccountingUnit_ID)); | |||
| } | |||
| if (Customer_ID != null) { | |||
| dom.Where.Conditions.Add(DQCondition.EQ(order, "Customer_ID", Customer_ID)); | |||
| } | |||
| if (SelectCustomer_ID != null) { | |||
| dom.Where.Conditions.Add(DQCondition.EQ(order, "Customer_ID", SelectCustomer_ID)); | |||
| } | |||
| if (SelectStore_ID != null) { | |||
| dom.Where.Conditions.Add(DQCondition.EQ(order, "Store_ID", SelectStore_ID)); | |||
| } | |||
| if (!string.IsNullOrEmpty(SelectGoodsPropertyCatalog_Name)) { | |||
| var strs = B3SaleWebUtil.GetDeepByTreeName(SelectGoodsPropertyCatalog_Name); | |||
| dom.Where.Conditions.Add(DQCondition.EQ(goodsPropertyCatalog, "TreeDeep" + strs[0] + "ID", SelectGoodsPropertyCatalog_ID)); | |||
| } | |||
| if (SelectGoodsProperty_ID != null) { | |||
| dom.Where.Conditions.Add(DQCondition.EQ(goodsProperty, "ID", SelectGoodsProperty_ID)); | |||
| } | |||
| dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.未审核)); | |||
| OrganizationUtil.AddOrganizationLimit(dom, typeof(Order)); | |||
| Details.Clear(); | |||
| using (var context = new TransactionContext()) { | |||
| using (var reader = context.Session.ExecuteReader(dom)) { | |||
| while (reader.Read()) { | |||
| var detail = new Order_Detail { | |||
| ID = (long)reader[0], | |||
| UnitNum = (Money<decimal>?)reader[1], | |||
| SecondNumber = (Money<decimal>?)reader[2], | |||
| Number = (Money<decimal>?)reader[3], | |||
| Price = (Money<decimal>?)reader[4], | |||
| PolicyPrice = (Money<decimal>?)reader[5], | |||
| Unit = (string)reader[6], | |||
| SaleGoods_ID = (long)reader[7], | |||
| Money = (Money<金额>?)reader[8], | |||
| Customer_Name = (string)reader[9], | |||
| Order_ID = (long)reader[10], | |||
| GoodsBatch_ID = (long?)reader[11], | |||
| GoodsBatch_Name = (string)reader[12] | |||
| }; | |||
| Details.Add(detail); | |||
| } | |||
| } | |||
| } | |||
| 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(); | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,422 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Drawing; | |||
| using System.Web; | |||
| 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.NamedValueTemplate; | |||
| using BWP.B3Frameworks.Utils; | |||
| 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; | |||
| using Forks.EnterpriseServices.DataForm; | |||
| using Forks.EnterpriseServices.DomainObjects2; | |||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||
| using Forks.EnterpriseServices.SqlDoms; | |||
| using Forks.Utils; | |||
| using TSingSoft.WebControls2; | |||
| using TSingSoft.WebPluginFramework; | |||
| using TSingSoft.WebPluginFramework.Controls; | |||
| namespace BWP.Web.Pages.B3_DongFangWanQi.Tools { | |||
| class SaleOederUpdateList : AppBasePage { | |||
| QueryContainer _queryContainer; | |||
| readonly DFInfo _dFInfo = DFInfo.Get(typeof(Order)); | |||
| private DFChoiceBox _goodsPropertyCatalog; | |||
| private ChoiceBox _goodsProperty; | |||
| private DFChoiceBox _storeInput, _accInput, _customerInput; | |||
| protected override void InitForm(HtmlForm form) { | |||
| _queryContainer = QueryContainer.FromResource(GetType().FullName + ".xml", GetType().Assembly); | |||
| form.Controls.Add(new PageTitle("销售订单调整")); | |||
| var titlePanel = form.EAdd(new TitlePanel("BaseProperties", "查询条件")); | |||
| titlePanel.SetPageLayoutSetting(mPageLayoutManager, titlePanel.Name); | |||
| var layoutManager = new LayoutManager("main", _dFInfo, _queryContainer); | |||
| _goodsProperty = QueryCreator.DFChoiceBox(_dFInfo.Fields["ID"], B3UnitedInfosConsts.DataSources.存货属性全部); | |||
| layoutManager.Add("GoodsProperty_ID", new SimpleLabel("存货属性"), _goodsProperty); | |||
| layoutManager["GoodsProperty_ID"].NotAutoAddToContainer = true; | |||
| _goodsPropertyCatalog = QueryCreator.DFChoiceBox(_dFInfo.Fields["ID"], B3UnitedInfosConsts.DataSources.存货属性分类); | |||
| layoutManager.Add("GoodsPropertyCatalog_ID", new SimpleLabel("存货属性分类"), _goodsPropertyCatalog); | |||
| layoutManager["GoodsPropertyCatalog_ID"].NotAutoAddToContainer = true; | |||
| layoutManager.Add("AccountingUnit_ID", new SimpleLabel("会计单位"), _accInput = QueryCreator.DFChoiceBox(_dFInfo.Fields["AccountingUnit_ID"], B3FrameworksConsts.DataSources.授权会计单位全部), false); | |||
| layoutManager.Add("Store_ID", new SimpleLabel("仓库"), _storeInput = QueryCreator.DFChoiceBox(_dFInfo.Fields["Store_ID"], B3FrameworksConsts.DataSources.授权仓库), false); | |||
| layoutManager.Add("Customer_ID", _customerInput = QueryCreator.DFChoiceBox(_dFInfo.Fields["Customer_ID"], B3SaleDataSources.用户配置客户)); | |||
| var config = new AutoLayoutConfig(); | |||
| config.Add("OrderDate"); | |||
| config.Add("AccountingUnit_ID"); | |||
| config.Add("Employee_ID"); | |||
| config.Add("Customer_ID"); | |||
| config.Add("Store_ID"); | |||
| config.Add("GoodsProperty_ID"); | |||
| config.Add("GoodsPropertyCatalog_ID"); | |||
| layoutManager.Config = config; | |||
| var section = mPageLayoutManager.AddSection("BaseProperties", "查询条件"); | |||
| section.ApplyLayout(layoutManager, config, mPageLayoutManager, _dFInfo); | |||
| section.SetDisplayName("GoodsProperty_ID", "存货属性"); | |||
| section.SetDisplayName("GoodsPropertyCatalog_ID", "存货属性分类"); | |||
| titlePanel.Controls.Add(layoutManager.CreateLayout()); | |||
| var tsbtn = new TSButton("开始查询"); | |||
| tsbtn.Click += delegate { | |||
| DataBindGrid(); | |||
| }; | |||
| titlePanel.Controls.Add(tsbtn); | |||
| AddDetails(form.EAdd(new TitlePanel("订单明细", "订单明细"))); | |||
| var vPanel = new VLayoutPanel(); | |||
| form.Controls.Add(vPanel); | |||
| // addOperations(vPanel); | |||
| } | |||
| protected override void OnPreRender(EventArgs e) { | |||
| base.OnPreRender(e); | |||
| var style = @" <style> | |||
| .btn { | |||
| color: blue; | |||
| border: 0px none; | |||
| font-size: 13px; | |||
| height:25px; | |||
| background-color:#ffffff; | |||
| } | |||
| .evenbtn{ | |||
| background-color:#ebebeb; | |||
| } | |||
| .btn:hover{ | |||
| color:red; | |||
| border: none; | |||
| cursor: hand; | |||
| cursor: pointer; | |||
| background-color:#42a3da; | |||
| } | |||
| .btn:focus { | |||
| outline: none; | |||
| } | |||
| </style> | |||
| "; | |||
| Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "headDiv", style); | |||
| } | |||
| DFBrowseGrid _grid; | |||
| void AddDetails(TitlePanel tPanel) { | |||
| HLayoutPanel hPanel; | |||
| tPanel.Controls.Add(new LiteralControl("<br />")); | |||
| tPanel.Controls.Add(hPanel = new HLayoutPanel()); | |||
| var editor = new DFDataTableEditor(); | |||
| _grid = new DFBrowseGrid(editor) { | |||
| Width = Unit.Percentage(100), | |||
| IgnoreItemsCount = true, | |||
| DFGridSetEnabled = false, | |||
| }; | |||
| _grid.Columns.Add(new DFBrowseGridColumn("Goods_Name")); | |||
| _grid.Columns.Add(new DFBrowseGridColumn("Goods_Code")); | |||
| _grid.Columns.Add(new DFBrowseGridColumn("SecondNumber")); | |||
| _grid.Columns.Add(new DFBrowseGridColumn("Goods_SecondUnit")); | |||
| _grid.Columns.Add(new DFBrowseGridColumn("UnitNum")); | |||
| _grid.Columns.Add(new DFBrowseGridColumn("Unit")); | |||
| _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 = 13; | |||
| 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 = row["Goods_ID"]; | |||
| var number = ((decimal?)row["可用数量"]) ?? 0; | |||
| var url = AspUtil.UpdateUrlParam("SaleOrderUpdateEdit.aspx", "Goods_ID", ((long)idField).ToString()); | |||
| url = AspUtil.UpdateUrlParam(url, "number", number.ToString()); | |||
| bt.Url = url; | |||
| bt.Width = 100; | |||
| bt.Click += delegate { | |||
| _grid.DataBind(); | |||
| }; | |||
| }; | |||
| tPanel.Controls.Add(_grid); | |||
| var section = mPageLayoutManager.AddSection("Columns", "订单明细"); | |||
| section.ApplyLayout(_grid, mPageLayoutManager, _dFInfo); | |||
| } | |||
| private void DataBindGrid() { | |||
| var args = new LoadArguments(GetQueryDom()); | |||
| _grid.LoadArguments = args; | |||
| _grid.Reset(); | |||
| _grid.CurrentPageIndex = 0; | |||
| _grid.DataBind(); | |||
| } | |||
| private DQueryDom GetQueryDom() { | |||
| var bill = new JoinAlias(typeof(OrderTmp)); | |||
| var goods = new JoinAlias(typeof(SaleGoods)); | |||
| var storeDetail = new JoinAlias(typeof(StoreDetailTmp)); | |||
| var output = new JoinAlias(typeof(OutputTmp)); | |||
| var dom = new DQueryDom(bill); | |||
| dom.RegisterQueryTable(typeof(OrderTmp), new[] { "Goods_ID", "Unit", "Number", "SecondNumber", "UnitNum" }, GetOrderDQueryDom()); | |||
| dom.RegisterQueryTable(typeof(StoreDetailTmp), new[] { "Goods_ID", "Number", "SecondNumber" }, GetStoreDetailDQueryDom()); | |||
| dom.RegisterQueryTable(typeof(OutputTmp), new[] { "Goods_ID", "Number", "SecondNumber" }, GetOutputDQueryDom()); | |||
| dom.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(bill, "Goods_ID", goods, "ID")); | |||
| dom.From.AddJoin(JoinType.Left, new DQDmoSource(storeDetail), DQCondition.EQ(bill, "Goods_ID", storeDetail, "Goods_ID")); | |||
| dom.From.AddJoin(JoinType.Left, new DQDmoSource(output), DQCondition.EQ(bill, "Goods_ID", output, "Goods_ID")); | |||
| dom.Columns.Add(DQSelectColumn.Field("Goods_ID", bill)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Goods_Name", bill)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Goods_Code", bill)); | |||
| dom.Columns.Add(DQSelectColumn.Field("PrintShortName", bill)); | |||
| dom.Columns.Add(DQSelectColumn.Field("UnitNum", bill)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Unit", bill)); | |||
| dom.Columns.Add(DQSelectColumn.Field("SecondNumber", bill)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Goods_SecondUnit", bill)); | |||
| dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number"), "库存数量")); | |||
| dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "SecondNumber"), "库存辅数量")); | |||
| dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(output, "Number"), "生产数量")); | |||
| dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(output, "SecondNumber"), "生产辅数量")); | |||
| dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), "可用数量")); | |||
| dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(storeDetail, "SecondNumber").EAdd(DQExpression.Field(output, "SecondNumber")), "可用辅数量")); | |||
| dom.Columns.Add(DQSelectColumn.Create( | |||
| ESubtract(DQExpression.Field(storeDetail, "Number").EAdd(DQExpression.Field(output, "Number")), DQExpression.Field(bill, "UnitNum")), "差异数量")); | |||
| dom.Columns.Add(DQSelectColumn.Create( | |||
| ESubtract(DQExpression.Field(storeDetail, "SecondNumber").EAdd(DQExpression.Field(output, "SecondNumber")), DQExpression.Field(bill, "SecondNumber")), "差异辅数量")); | |||
| return dom; | |||
| } | |||
| static IDQExpression ESubtract(IDQExpression expression, IDQExpression right) { | |||
| return DQExpression.Subtract(expression, DQExpression.IfNull(right, DQExpression.ConstValue(0.0m))); | |||
| } | |||
| [DFClass] | |||
| class OrderTmp { | |||
| public long Goods_ID { get; set; } | |||
| [LogicName("主数量")] | |||
| public Money<decimal>? Number { get; set; } | |||
| [LogicName("辅数量")] | |||
| public Money<decimal>? SecondNumber { get; set; } | |||
| [LogicName("订货报价数量")] | |||
| public Money<decimal>? UnitNum { get; set; } | |||
| [LogicName("报价单位")] | |||
| public string Unit { get; set; } | |||
| [LogicName("存货名称")] | |||
| [ReferenceTo(typeof(SaleGoods), "Name")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Name { get; set; } | |||
| [ReferenceTo(typeof(SaleGoods), "Spell")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Spell { get; set; } | |||
| [LogicName("规格")] | |||
| [ReferenceTo(typeof(SaleGoods), "Spec")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Spec { get; set; } | |||
| [LogicName("存货编码")] | |||
| [ReferenceTo(typeof(SaleGoods), "Code")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Code { get; set; } | |||
| [LogicName("简称")] | |||
| [ReferenceTo(typeof(SaleGoods), "PrintShortName")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string PrintShortName { get; set; } | |||
| [LogicName("主单位")] | |||
| [ReferenceTo(typeof(SaleGoods), "MainUnit")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_MainUnit { get; set; } | |||
| [LogicName("辅单位")] | |||
| [ReferenceTo(typeof(SaleGoods), "SecondUnit")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_SecondUnit { get; set; } | |||
| } | |||
| class StoreDetailTmp { | |||
| public long Goods_ID { get; set; } | |||
| [LogicName("主数量")] | |||
| public Money<decimal>? Number { get; set; } | |||
| [LogicName("辅数量")] | |||
| public Money<decimal>? SecondNumber { get; set; } | |||
| } | |||
| class OutputTmp { | |||
| public long Goods_ID { get; set; } | |||
| [LogicName("主数量")] | |||
| public Money<decimal>? Number { get; set; } | |||
| [LogicName("辅数量")] | |||
| public Money<decimal>? SecondNumber { get; set; } | |||
| } | |||
| DQueryDom GetOrderDQueryDom() { | |||
| var dom = _queryContainer.Build(); | |||
| var bill = dom.From.RootSource.Alias; | |||
| var detail = new JoinAlias("detail", typeof(Order_Detail)); | |||
| var goodsPropertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog)); | |||
| var goodsProperty = new JoinAlias(typeof(GoodsProperty)); | |||
| var goods = new JoinAlias(typeof(SaleGoods)); | |||
| 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")); | |||
| 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")); | |||
| AddGoodsCondition(goodsPropertyCatalog, goodsProperty, dom); | |||
| dom.Columns.Add(DQSelectColumn.Field("SaleGoods_ID", detail)); | |||
| dom.Columns.Add(DQSelectColumn.Field("Unit", detail)); | |||
| 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(detail, "SaleGoods_ID")); | |||
| dom.GroupBy.Expressions.Add(DQExpression.Field(detail, "Unit")); | |||
| dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.未审核)); | |||
| OrganizationUtil.AddOrganizationLimit(dom, typeof(Order)); | |||
| dom.Where.Conditions.Add(DQCondition.EQ(bill, "Domain_ID", DomainContext.Current.ID)); | |||
| return dom; | |||
| } | |||
| DQueryDom GetStoreDetailDQueryDom() { | |||
| var storeDetail = new JoinAlias(typeof(StoreDetail)); | |||
| var store = new JoinAlias(typeof(Store)); | |||
| var query = new DQueryDom(storeDetail); | |||
| 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(storeDetail, "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")); | |||
| AddGoodsCondition(goodsPropertyCatalog, goodsProperty, query); | |||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(store), DQCondition.EQ(store, "ID", storeDetail, "Store_ID")); | |||
| query.Columns.Add(DQSelectColumn.Field("Goods_ID")); | |||
| 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("Goods_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 goodsPropertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog)); | |||
| var goodsProperty = new JoinAlias(typeof(GoodsProperty)); | |||
| var goods = new JoinAlias(typeof(SaleGoods)); | |||
| 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(goods), DQCondition.EQ(detail, "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")); | |||
| AddGoodsCondition(goodsPropertyCatalog, goodsProperty, query); | |||
| query.Columns.Add(DQSelectColumn.Field("Goods_ID")); | |||
| 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("Goods_ID")); | |||
| query.Where.Conditions.Add(DQCondition.EQ(bill, "ID", id)); | |||
| return query; | |||
| } | |||
| 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++) { | |||
| var value = values[index]; | |||
| conditions.Add(DQCondition.EQ(goodsPropertyCatalog, "TreeDeep" + strs[index] + "ID", value)); | |||
| } | |||
| dom.Where.Conditions.Add(DQCondition.Or(conditions)); | |||
| } | |||
| if (!_goodsProperty.IsEmpty) { | |||
| dom.Where.Conditions.Add(DQCondition.EQ(goodsProperty, "ID", long.Parse(_goodsProperty.Value))); | |||
| } | |||
| } | |||
| protected override void OnLoad(EventArgs e) { | |||
| base.OnLoad(e); | |||
| if (!IsPostBack) { | |||
| DataBindGrid(); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,82 @@ | |||
| <?xml version="1.0" encoding="utf-8" ?> | |||
| <Select xmlns="urn:XDQuery"> | |||
| <Columns> | |||
| </Columns> | |||
| <From> | |||
| <DmoClass class="BWP.B3Sale.BO.Order, B3Sale"/> | |||
| </From> | |||
| <Where> | |||
| <And> | |||
| <EQ> | |||
| <Field name="ID"/> | |||
| <QBE paramName="ID"/> | |||
| </EQ> | |||
| <EQ> | |||
| <Field name="Customer_ID"/> | |||
| <QBE paramName="Customer_ID"/> | |||
| </EQ> | |||
| <Contains> | |||
| <Field name="CreateUser_Name"/> | |||
| <QBE paramName="CreateUser_Name"/> | |||
| </Contains> | |||
| <Contains> | |||
| <Field name="CheckUser_Name"/> | |||
| <QBE paramName="CheckUser_Name"/> | |||
| </Contains> | |||
| <Contains> | |||
| <Field name="DeliverAddress"/> | |||
| <QBE paramName="DeliverAddress"/> | |||
| </Contains> | |||
| <GreaterThanOrEqual> | |||
| <Field name="OrderDate"/> | |||
| <QBE paramName="MinOrderDate"/> | |||
| </GreaterThanOrEqual> | |||
| <LessThanOrEqual> | |||
| <Field name="OrderDate"/> | |||
| <QBE paramName="MaxOrderDate"/> | |||
| </LessThanOrEqual> | |||
| <GreaterThanOrEqual> | |||
| <Field name="DeliveryTime"/> | |||
| <QBE paramName="MinDeliveryTime"/> | |||
| </GreaterThanOrEqual> | |||
| <LessThanOrEqual> | |||
| <Field name="DeliveryTime"/> | |||
| <QBE paramName="MaxDeliveryTime"/> | |||
| </LessThanOrEqual> | |||
| <EQ> | |||
| <Field name="AccountingUnit_ID"/> | |||
| <QBE paramName="AccountingUnit_ID"/> | |||
| </EQ> | |||
| <EQ> | |||
| <Field name="Employee_ID"/> | |||
| <QBE paramName="Employee_ID"/> | |||
| </EQ> | |||
| <EQ> | |||
| <Field name="BillState"/> | |||
| <QBE paramName="BillState"/> | |||
| </EQ> | |||
| <EQ> | |||
| <Field name="IsLocked"/> | |||
| <QBE paramName="IsLocked"/> | |||
| </EQ> | |||
| <Contains> | |||
| <Field name="DepartmentWorkFlow_Detail_Name"/> | |||
| <QBE paramName="DepartmentWorkFlow_Detail_Name"/> | |||
| </Contains> | |||
| <EQ> | |||
| <Field name="DepartmentWorkFlowStateCategory_ID"/> | |||
| <QBE paramName="DepartmentWorkFlowStateCategory_ID"/> | |||
| </EQ> | |||
| <EQ> | |||
| <Field name="SaleKind_ID"/> | |||
| <QBE paramName="SaleKind_ID"/> | |||
| </EQ> | |||
| <EQ> | |||
| <Field name="Store_ID"/> | |||
| <QBE paramName="Store_ID"/> | |||
| </EQ> | |||
| </And> | |||
| </Where> | |||
| </Select> | |||
| @ -0,0 +1,16 @@ | |||
| using B3_DongFangWanQi.BO; | |||
| using BWP.B3Frameworks.BL; | |||
| using Forks.EnterpriseServices; | |||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||
| namespace B3_DongFangWanQi.BL { | |||
| [BusinessInterface(typeof(OutputConfigureBL))] | |||
| [LogicName("产值配置")] | |||
| public interface IOutputConfigureBL : IDomainBaseInfoBL<OutputConfigure> { | |||
| } | |||
| public class OutputConfigureBL : DomainBaseInfoBL<OutputConfigure>, IOutputConfigureBL { | |||
| } | |||
| } | |||
| @ -0,0 +1,19 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using B3_DongFangWanQi.BO; | |||
| using BWP.B3Frameworks.BL; | |||
| using Forks.EnterpriseServices; | |||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||
| namespace B3_DongFangWanQi.BL { | |||
| [BusinessInterface(typeof(OutputForecastBL))] | |||
| [LogicName("产值预测")] | |||
| public interface IOutputForecastBL : IDomainBillBL<OutputForecast> { | |||
| } | |||
| public class OutputForecastBL : DomainBillBL<OutputForecast>, IOutputForecastBL { | |||
| } | |||
| } | |||
| @ -0,0 +1,70 @@ | |||
| using System; | |||
| using BWP.B3Frameworks.BO; | |||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||
| using BWP.B3Sale.BO; | |||
| using Forks.EnterpriseServices; | |||
| using Forks.EnterpriseServices.DataForm; | |||
| using Forks.EnterpriseServices.DomainObjects2; | |||
| using Forks.Utils; | |||
| namespace B3_DongFangWanQi.BO | |||
| { | |||
| [DFClass, Serializable, LogicName("产值预测明细")] | |||
| public class OutputForecast_Detail : Base { | |||
| public long OutputForecast_ID { get; set; } | |||
| [LogicName("存货")] | |||
| public long Goods_ID { get; set; } | |||
| [LogicName("产量")] | |||
| public Money<decimal>? Number { get; set; } | |||
| [LogicName("辅数量")] | |||
| public Money<decimal>? SecondNumber { get; set; } | |||
| [LogicName("比例")] | |||
| public Money<decimal>? Rate { get; set; } | |||
| [LogicName("存货名称")] | |||
| [ReferenceTo(typeof(SaleGoods), "Name")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Name { get; set; } | |||
| [LogicName("规格")] | |||
| [ReferenceTo(typeof(SaleGoods), "Spec")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Spec { get; set; } | |||
| [LogicName("存货编码")] | |||
| [ReferenceTo(typeof(SaleGoods), "Code")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Code { get; set; } | |||
| [LogicName("简称")] | |||
| [ReferenceTo(typeof(SaleGoods), "PrintShortName")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string PrintShortName { get; set; } | |||
| [LogicName("主辅转换方向")] | |||
| [ReferenceTo(typeof(SaleGoods), "UnitConvertDirection")] | |||
| [Join("Goods_ID", "ID")] | |||
| public NamedValue<主辅转换方向>? Goods_UnitConvertDirection { get; set; } | |||
| [LogicName("主辅换算主单位比例")] | |||
| [ReferenceTo(typeof(SaleGoods), "MainUnitRatio")] | |||
| [Join("Goods_ID", "ID")] | |||
| public Money<decimal>? Goods_MainUnitRatio { get; set; } | |||
| [LogicName("主辅换算辅单位比例")] | |||
| [ReferenceTo(typeof(SaleGoods), "SecondUnitRatio")] | |||
| [Join("Goods_ID", "ID")] | |||
| public Money<decimal>? Goods_SecondUnitRatio { get; set; } | |||
| } | |||
| [Serializable] | |||
| public class OutputForecast_DetailCollection : DmoCollection<OutputForecast_Detail> { | |||
| } | |||
| } | |||
| @ -0,0 +1,67 @@ | |||
| using System; | |||
| using BWP.B3Frameworks; | |||
| using BWP.B3Frameworks.BO; | |||
| using BWP.B3Frameworks.Utils; | |||
| using Forks.EnterpriseServices; | |||
| using Forks.EnterpriseServices.DataForm; | |||
| using Forks.EnterpriseServices.DomainObjects2; | |||
| using TSingSoft.WebControls2; | |||
| namespace B3_DongFangWanQi.BO { | |||
| [DFClass, Serializable] | |||
| [LogicName("产值预测")] | |||
| public class OutputForecast : AccountingUnitBill { | |||
| [LogicName("屠宰头数")] | |||
| public decimal? Number { get; set; } | |||
| private DateTime _date = DateTime.Today; | |||
| [LogicName("日期")] | |||
| public DateTime Date { | |||
| get { return _date; } | |||
| set { _date = value; } | |||
| } | |||
| [LogicName("部门")] | |||
| [DFExtProperty("WebControlType", DFEditControl.ChoiceBox)] | |||
| [DFDataKind(B3FrameworksConsts.DataSources.授权部门)] | |||
| [DFExtProperty("DisplayField", "Department_TreeName")] | |||
| public long? Department_ID { get; set; } | |||
| readonly OutputForecast_DetailCollection _details = new OutputForecast_DetailCollection(); | |||
| [OneToMany(typeof(OutputForecast_Detail), "ID")] | |||
| [Join("ID", "OutputForecast_ID")] | |||
| public OutputForecast_DetailCollection Details { | |||
| get { | |||
| return _details; | |||
| } | |||
| } | |||
| [ReferenceTo(typeof(Department), "Name")] | |||
| [Join("Department_ID", "ID")] | |||
| [DFPrompt("部门")] | |||
| public string Department_Name { get; set; } | |||
| [LogicName("部门深度")] | |||
| [ReferenceTo(typeof(Department), "Depth")] | |||
| [Join("Department_ID", "ID")] | |||
| public int? Department_Depth { get; set; } | |||
| string mDepartment_TreeName = string.Empty; | |||
| [NonDmoProperty] | |||
| public string Department_TreeName { | |||
| get { | |||
| if (string.IsNullOrEmpty(mDepartment_TreeName)) { | |||
| return TreeUtil.GetTreePrefix(Department_Depth) + Department_Name; | |||
| } else { | |||
| return mDepartment_TreeName; | |||
| } | |||
| } | |||
| set { | |||
| mDepartment_TreeName = value; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,37 @@ | |||
| using System; | |||
| using BWP.B3Frameworks.BO; | |||
| using Forks.EnterpriseServices; | |||
| using Forks.EnterpriseServices.DataForm; | |||
| using Forks.EnterpriseServices.DomainObjects2; | |||
| namespace B3_DongFangWanQi.BO { | |||
| [DFClass] | |||
| [Serializable] | |||
| [LogicName("产值配置")] | |||
| public class OutputConfigure : DomainBaseInfo { | |||
| [DFDataKind("授权会计单位")] | |||
| [DFExtProperty("DisplayField", "AccountingUnit_Name")] | |||
| [LogicName("会计单位")] | |||
| [DFExtProperty("QueryDataKind", "授权会计单位全部")] | |||
| public long? AccountingUnit_ID { get; set; } | |||
| readonly OutputConfigure_DetailCollection _details = new OutputConfigure_DetailCollection(); | |||
| [OneToMany(typeof(OutputConfigure_Detail), "ID")] | |||
| [Join("ID", "OutputConfigure_ID")] | |||
| public OutputConfigure_DetailCollection Details { | |||
| get { | |||
| return _details; | |||
| } | |||
| } | |||
| [ReferenceTo(typeof(AccountingUnit), "Name")] | |||
| [Join("AccountingUnit_ID", "ID")] | |||
| [DFPrompt("会计单位")] | |||
| public string AccountingUnit_Name { get; set; } | |||
| } | |||
| } | |||
| @ -0,0 +1,69 @@ | |||
| using System; | |||
| using BWP.B3Frameworks.BO; | |||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||
| using BWP.B3Sale.BO; | |||
| using Forks.EnterpriseServices; | |||
| using Forks.EnterpriseServices.DataForm; | |||
| using Forks.EnterpriseServices.DomainObjects2; | |||
| using Forks.Utils; | |||
| namespace B3_DongFangWanQi.BO { | |||
| [DFClass, Serializable, LogicName("产值配置明细")] | |||
| public class OutputConfigure_Detail : Base { | |||
| public long OutputConfigure_ID { get; set; } | |||
| [LogicName("存货")] | |||
| public long Goods_ID { get; set; } | |||
| [LogicName("产量")] | |||
| public Money<decimal>? Number { get; set; } | |||
| [LogicName("辅数量")] | |||
| public Money<decimal>? SecondNumber { get; set; } | |||
| [LogicName("比例")] | |||
| public Money<decimal>? Rate { get; set; } | |||
| [LogicName("存货名称")] | |||
| [ReferenceTo(typeof(SaleGoods), "Name")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Name { get; set; } | |||
| [LogicName("规格")] | |||
| [ReferenceTo(typeof(SaleGoods), "Spec")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Spec { get; set; } | |||
| [LogicName("存货编码")] | |||
| [ReferenceTo(typeof(SaleGoods), "Code")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string Goods_Code { get; set; } | |||
| [LogicName("简称")] | |||
| [ReferenceTo(typeof(SaleGoods), "PrintShortName")] | |||
| [Join("Goods_ID", "ID")] | |||
| public string PrintShortName { get; set; } | |||
| [LogicName("主辅转换方向")] | |||
| [ReferenceTo(typeof(SaleGoods), "UnitConvertDirection")] | |||
| [Join("Goods_ID", "ID")] | |||
| public NamedValue<主辅转换方向>? Goods_UnitConvertDirection { get; set; } | |||
| [LogicName("主辅换算主单位比例")] | |||
| [ReferenceTo(typeof(SaleGoods), "MainUnitRatio")] | |||
| [Join("Goods_ID", "ID")] | |||
| public Money<decimal>? Goods_MainUnitRatio { get; set; } | |||
| [LogicName("主辅换算辅单位比例")] | |||
| [ReferenceTo(typeof(SaleGoods), "SecondUnitRatio")] | |||
| [Join("Goods_ID", "ID")] | |||
| public Money<decimal>? Goods_SecondUnitRatio { get; set; } | |||
| } | |||
| [Serializable] | |||
| public class OutputConfigure_DetailCollection : DmoCollection<OutputConfigure_Detail> { | |||
| } | |||
| } | |||