| @ -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> { | |||||
| } | |||||
| } | |||||