Browse Source

需求单No.137209

master
robin 8 years ago
parent
commit
2cad5b7679
4 changed files with 433 additions and 0 deletions
  1. +7
    -0
      BWP.B3_YunKen.Web/BWP.B3_YunKen.Web.csproj
  2. +320
    -0
      BWP.B3_YunKen.Web/Pages/B3YunKen/B3YunKenSaleOutStoreToCustomerAccept.cs
  3. +105
    -0
      BWP.B3_YunKen.Web/Pages/B3YunKen/B3YunKenSaleOutStoreToCustomerAccept.xml
  4. +1
    -0
      WebFolder/Config/Plugins/B3_YunKen.Plugin

+ 7
- 0
BWP.B3_YunKen.Web/BWP.B3_YunKen.Web.csproj View File

@ -44,6 +44,7 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\B3Sale.Web.dll</HintPath>
</Reference>
<Reference Include="B3SaleInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3a973053c7ebf11c, processorArchitecture=MSIL" />
<Reference Include="B3UnitedInfos, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL" />
<Reference Include="Forks.EnterpriseServices, Version=3.1.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL" />
<Reference Include="Forks.Utils, Version=3.0.0.0, Culture=neutral, PublicKeyToken=6911f69af04f1ecb, processorArchitecture=MSIL">
@ -72,6 +73,9 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Pages\B3YunKen\B3YunKenSaleOutStoreToCustomerAccept.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3YunKen\SaleForecastUpdateList_\SaleForecastUpdateEdit.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
@ -113,6 +117,9 @@
<ItemGroup>
<EmbeddedResource Include="Pages\B3YunKen\SaleForecastUpdateList_\SaleForecastUpdateEdit.xml" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3YunKen\B3YunKenSaleOutStoreToCustomerAccept.xml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.


+ 320
- 0
BWP.B3_YunKen.Web/Pages/B3YunKen/B3YunKenSaleOutStoreToCustomerAccept.cs View File

@ -0,0 +1,320 @@
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;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Frameworks.Utils;
using BWP.B3Sale.BL;
using BWP.B3Sale.BO;
using BWP.B3Sale.Utils;
using BWP.Web.Layout;
using BWP.Web.Utils;
using BWP.Web.WebControls;
using Forks.EnterpriseServices;
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;
using TSingSoft.WebPluginFramework.Controls;
using TSingSoft.WebPluginFramework.Security;
namespace BWP.Web.Pages.B3YunKen {
class B3YunKenSaleOutStoreToCustomerAccept : AppBasePage {
QueryContainer _queryContainer;
readonly DFInfo _dFInfo = DFInfo.Get(typeof(SaleOutStore));
DFBrowseGrid _grid;
private DFCheckBox _hideFinishedBill;
private DFEditGrid _detailGrid;
private int ActiveTabIndex {
get {
if (string.IsNullOrEmpty(Request.QueryString["index"]))
return 0;
return int.Parse(Request.QueryString["index"]);
}
}
SaleOutStore Dmo {
get { return (SaleOutStore)ViewState["Dmo"]; }
set { ViewState["Dmo"] = value; }
}
protected override void FrameworkInitialize() {
if (!BLContext.User.IsInRole("B3Sale.客户验收.新建"))
throw new AppSecurityException("你没有权限访问此页面");
base.FrameworkInitialize();
}
protected override void InitForm(HtmlForm form) {
var type = GetType();
_queryContainer = QueryContainer.FromResource(type.FullName + ".xml", type.Assembly);
form.EAdd(new PageTitle("销售出库转验收单"));
var vPanel = new VLayoutPanel();
_pageView = new ClientPageView {
TabPosition = TabPosition.Top,
};
vPanel.Add(_pageView);
_pageView.Tabs.Add(CreateSaleOutStoreTab());
_pageView.Tabs.Add(CreateCustomerAcceptTab());
form.Controls.Add(vPanel);
}
private Control CreateSaleOutStoreTab() {
var result = new ClientTab("销售出库列表");
CreateQueryPanel(result);
CreateSaleOutStoreList(result.EAdd(new TitlePanel("销售出库列表")));
return result;
}
private Control CreateCustomerAcceptTab() {
var result = new ClientTab("转验收信息");
CustomerAcceptInfo(result);
return result;
}
private DFChoiceBox _cusInput;
private ClientPageView _pageView;
private readonly DFContainer<SaleOutStore> _dFContainer = new DFContainer<SaleOutStore>();
private void CustomerAcceptInfo(ClientTab titlePanel) {
var vPanel = new VLayoutPanel();
titlePanel.Controls.Add(vPanel);
var layoutManager = new LayoutManager("main", _dFInfo, _dFContainer);
var config = new AutoLayoutConfig { Cols = 6 };
config.Add("ID");
config.Add("Customer_ID");
config.Add("AccountCustomer_Name");
config.Add("CustomerDealer_Name");
config.Add("Department_ID");
config.Add("OrderDate");
config.Add("AccountingUnit_ID");
config.Add("Employee_ID");
config.Add("LoadTime");
config.Add("Store_ID");
config.Add("Remark").ColSpan = 4;
layoutManager.Config = config;
_dFContainer.Readonly = true;
var buildButton = new TSButton();
buildButton.Text = "创建客户验收单";
vPanel.Add(layoutManager.CreateLayout());
var hPanel = vPanel.Add(new HLayoutPanel());
hPanel.Add(buildButton);
hPanel.Add(new SimpleLabel("验收日期"));
var dateInput = hPanel.Add(new DFDateInput());
dateInput.Value = BLContext.Today;
hPanel.Add(new SimpleLabel("客户"));
_cusInput = hPanel.Add(new DFChoiceBox());
_cusInput.EnableInputArgument = true;
_cusInput.DataKind = B3SaleDataSources.;
_cusInput.EnableTopItem = true;
_cusInput.Width = 150;
buildButton.Click += delegate {
_detailGrid.GetFromUI();
Dmo.Customer_ID = long.Parse(_cusInput.Value);
var customer = SaleUtil.GetDmoByID<Customer>(Dmo.Customer_ID.Value, "AccountCustomer_ID", "AccountCustomer_Name");
Dmo.AccountCustomer_ID = customer.AccountCustomer_ID;
Dmo.AccountCustomer_Name = customer.AccountCustomer_Name;
var details = new List<SaleOutStore_Detail>();
foreach (SaleOutStore_Detail detail in _detailGrid.GetSelectedItems()) {
detail.UnitNum = detail.AcceptUnitNum;
detail.SecondNumber = detail.AcceptSecondNumber;
details.Add(detail);
}
BIFactory.Create<ISaleOutStoreBL>().CreateCustomerAccept(Dmo,details);
AspUtil.Alert(this, BIFactory.GetLastMessage());
InitDmo();
_pageView.ActiveTabIndex = 0;
};
var detailEditor = new DFCollectionEditor<SaleOutStore_Detail>(() => Dmo.Details);
detailEditor.IsEditableFunc = (field, detail) => true;
detailEditor.CanSelectFunc = (detail) => true;
_detailGrid = vPanel.Add(new DFEditGrid(detailEditor) { Width = Unit.Percentage(100) });
_detailGrid.ShowLineNo = true;
_detailGrid.MultiSelectionEnabled = true;
_detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Name"));
_detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_Spec"));
_detailGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("SecondNumber")).SumMode = SumMode.Sum;
_detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Goods_SecondUnit"));
_detailGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("UnitNum")).SumMode = SumMode.Sum;
var unitColumn = new DFEditGridColumn<DFValueLabel>("Unit");
_detailGrid.Columns.Add(unitColumn);
_detailGrid.Columns.Add(new DFEditGridColumn<DFValueLabel>("Price"));
_detailGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("Money")).SumMode = SumMode.Sum;
_detailGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("AlreadyAcceptSecondNumber")).SumMode = SumMode.Sum;
_detailGrid.Columns.EAdd(new DFEditGridColumn<DFValueLabel>("AlreadyAcceptUnitNum")).SumMode = SumMode.Sum;
_detailGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("AcceptSecondNumber")).SumMode = SumMode.Sum;
_detailGrid.Columns.EAdd(new DFEditGridColumn<DFTextBox>("AcceptUnitNum")).SumMode = SumMode.Sum;
_detailGrid.ValueColumns.Add("SaleGoods_ID");
_detailGrid.ValueColumns.Add("Goods_UnitConvertDirection");
_detailGrid.ValueColumns.Add("Goods_MainUnitRatio");
_detailGrid.ValueColumns.Add("Goods_SecondUnitRatio");
_detailGrid.ValueColumns.Add("LeftRatio");
_detailGrid.ValueColumns.Add("RightRatio");
new MainToSecondConvertRowMangerWithMoneyChange(_detailGrid, "AcceptUnitNum", "AcceptSecondNumber");
}
private void InitDmo() {
Dmo = new SaleOutStore();
_dFContainer.DFObject = Dmo;
_dFContainer.ApplyToUI();
_detailGrid.DataBind();
_grid.DataBind();
}
private void CreateSaleOutStoreList(TitlePanel titlePanel) {
_grid = titlePanel.EAdd(new DFBrowseGrid(new DFDataTableEditor()) {
Width = Unit.Percentage(100),
});
_grid.Columns.EAdd(new DFBrowseGridColumn("ID"));
_grid.Columns.EAdd(new DFBrowseGridColumn("Order_ID"));
_grid.Columns.EAdd(new DFBrowseGridColumn("OrderDate"));
_grid.Columns.EAdd(new DFBrowseGridColumn("LoadTime"));
_grid.Columns.EAdd(new DFBrowseGridColumn("AccountingUnit_Name"));
_grid.Columns.EAdd(new DFBrowseGridColumn("Customer_Name"));
_grid.Columns.EAdd(new DFBrowseGridColumn("Department_Name"));
_grid.Columns.EAdd(new DFBrowseGridColumn("Employee_Name"));
_grid.Columns.EAdd(new DFBrowseGridColumn("SaleKind_Name"));
_grid.Columns.EAdd(new DFBrowseGridColumn("Store_Name"));
_grid.Columns.EAdd(new DFBrowseGridColumn("AllUnitNum")).SumMode = SumMode.Sum;
_grid.Columns.EAdd(new DFBrowseGridColumn("Money")).SumMode = SumMode.Sum;
_grid.Columns.EAdd(new DFBrowseGridColumn("已验收数量")).SumMode = SumMode.Sum;
_grid.Columns.EAdd(new DFBrowseGridColumn("Remark"));
_grid.SingleSelection += GridSingleSelection;
}
private void GridSingleSelection(object sender, DFBrowseGridItemEventArgs e) {
var bl = BIFactory.Create<ISaleOutStoreBL>();
var id = (long)e.Row["ID"];
Dmo = bl.Load(id);
var dom = new DmoQuery(typeof(SaleOutStore_DetailToCustomerAcceptNumber));
dom.Where.Conditions.Add(DQCondition.EQ("SaleOutStore_ID", id));
var list = dom.EExecuteList();
foreach (SaleOutStore_DetailToCustomerAcceptNumber d in list) {
var detail = Dmo.Details.FirstOrDefault(x => x.ID == d.SaleOutStore_Detail_ID);
if (detail != null) {
detail.AlreadyAcceptUnitNum = d.AlreadyAcceptUnitNum;
detail.AlreadyAcceptNumber = d.AlreadyAcceptNumber;
detail.AlreadyAcceptSecondNumber = d.AlreadyAcceptSecondNumber;
}
}
foreach (var detail in Dmo.Details) {
detail.AcceptNumber = detail.Number - (detail.AlreadyAcceptNumber ?? 0);
detail.AcceptUnitNum = detail.UnitNum - (detail.AlreadyAcceptUnitNum ?? 0);
detail.AcceptSecondNumber = detail.SecondNumber - (detail.AlreadyAcceptSecondNumber ?? 0);
}
_cusInput.Value = Dmo.Customer_ID.ToString();
_cusInput.DisplayValue = Dmo.Customer_Name;
_cusInput.CodeArgument = Dmo.Customer_ID.ToString();
_dFContainer.DFObject = Dmo;
_dFContainer.ApplyToUI();
_pageView.ActiveTabIndex = 1;
_detailGrid.DataBind();
}
private void CreateQueryPanel(ClientTab titlePanel) {
var layer = new LayoutManager("", _dFInfo, _queryContainer);
layer.Add("ID", QueryCreator.DFTextBox(_dFInfo.Fields["ID"]));
layer.Add("OrderDate", QueryCreator.TimeRange(_dFInfo.Fields["OrderDate"], _queryContainer, "MinOrderDate", "MaxOrderDate"));
layer.Add("LoadTime", QueryCreator.TimeRange(_dFInfo.Fields["LoadTime"], _queryContainer, "MinLoadTime", "MaxLoadTime"));
DFChoiceBox accInput;
layer.Add("AccountingUnit_ID", accInput = QueryCreator.DFChoiceBox(_dFInfo.Fields["AccountingUnit_ID"], B3FrameworksConsts.DataSources.));
layer.Add("Department_ID", QueryCreator.DFChoiceBox(_dFInfo.Fields["Department_ID"], B3FrameworksConsts.DataSources.));
layer.Add("Employee_ID", QueryCreator.DFChoiceBox(_dFInfo.Fields["Employee_ID"], B3FrameworksConsts.DataSources.));
layer.Add("Customer_ID", QueryCreator.DFChoiceBox(_dFInfo.Fields["Customer_ID"], B3SaleDataSources.));
DFChoiceBox storeInput;
layer.Add("Store_ID", storeInput = QueryCreator.DFChoiceBox(_dFInfo.Fields["Store_ID"], B3FrameworksConsts.DataSources.));
storeInput.CodeArgumentReferenceTo = accInput;
layer.Add("Car", QueryCreator.DFTextBox(_dFInfo.Fields["Car"]));
layer.CreateDefaultConfig(8);
titlePanel.Controls.Add(layer.CreateLayout());
var hPanel = titlePanel.EAdd(new HLayoutPanel());
_hideFinishedBill = new DFCheckBox {
Text = "隐藏已转单据",
Checked = true
};
hPanel.Add(new TSButton("开始查询", delegate { StartQuery(); }));
hPanel.Add(new RedirectTSButton("清除条件"));
hPanel.Add(_hideFinishedBill);
}
private void StartQuery() {
_grid.Reset();
_grid.Query = GetQueryDom();
_grid.DataBind();
}
private DQueryDom GetQueryDom() {
var query = _queryContainer.Build();
var aready = new JoinAlias(typeof(AreadyTo));
var bill = query.From.RootSource.Alias;
query.RegisterQueryTable(typeof(AreadyTo), new string[] { "ID", "AlreadyAcceptUnitNum" }, AreadyTo.Get());
query.From.AddJoin(JoinType.Left, new DQDmoSource(aready), DQCondition.EQ(bill, "ID", aready, "ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(aready, "AlreadyAcceptUnitNum"), "已验收数量"));
if (_hideFinishedBill.Checked) {
query.Where.Conditions.Add(
DQCondition.LessThan(
DQExpression.IfNull(DQExpression.Field(aready, "AlreadyAcceptUnitNum"), DQExpression.ConstValue(0)),
DQExpression.Field(bill, "AllUnitNum")));
} else {
query.Columns.Add(DQSelectColumn.Field("CustomerAcceptID"));
}
query.Where.Conditions.Add(DQCondition.EQ("BillState", .));
query.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID));
return query;
}
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
if (!IsPostBack)
StartQuery();
}
class AreadyTo {
public long ID { get; set; }
[LogicName("已转验收报价数量")]
public Money<decimal>? AlreadyAcceptUnitNum { get; set; }
public static DQueryDom Get() {
var dom = new DQueryDom(new JoinAlias(typeof(SaleOutStore_DetailToCustomerAcceptNumber)));
dom.Columns.Add(DQSelectColumn.Field("SaleOutStore_ID"));
dom.GroupBy.Expressions.Add(DQExpression.Field("SaleOutStore_ID"));
dom.Columns.Add(DQSelectColumn.Sum("AlreadyAcceptUnitNum"));
return dom;
}
}
}
}

+ 105
- 0
BWP.B3_YunKen.Web/Pages/B3YunKen/B3YunKenSaleOutStoreToCustomerAccept.xml View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8" ?>
<Select xmlns="urn:XDQuery">
<Columns>
</Columns>
<From>
<DmoClass class="BWP.B3Sale.BO.SaleOutStore, B3Sale"/>
</From>
<Where>
<And>
<EQ>
<Field name="ID"/>
<QBE paramName="ID"/>
</EQ>
<EQ>
<Field name="Customer_ID"/>
<QBE paramName="Customer_ID"/>
</EQ>
<EQ>
<Field name="AccountingUnit_ID"/>
<QBE paramName="AccountingUnit_ID"/>
</EQ>
<EQ>
<Field name="CustomerCatalog_ID"/>
<QBE paramName="CustomerCatalog_ID"/>
</EQ>
<EQ>
<Field name="DeliverGoodsLine_ID"/>
<QBE paramName="DeliverGoodsLine_ID"/>
</EQ>
<EQ>
<Field name="Department_ID"/>
<QBE paramName="Department_ID"/>
</EQ>
<EQ>
<Field name="CustomerOrderNo"/>
<QBE paramName="CustomerOrderNo"/>
</EQ>
<QBEIn>
<Field name="SaleKind_ID"/>
<QBE paramName="SaleKind_ID"/>
</QBEIn>
<EQ>
<Field name="Employee_ID"/>
<QBE paramName="Employee_ID"/>
</EQ>
<EQ>
<Field name="Store_ID"/>
<QBE paramName="Store_ID"/>
</EQ>
<EQ>
<Field name="Order_ID"/>
<QBE paramName="Order_ID"/>
</EQ>
<EQ>
<Field name="IsLocked"/>
<QBE paramName="IsLocked"/>
</EQ>
<Contains>
<Field name="Remark"/>
<QBE paramName="Remark"/>
</Contains>
<Contains>
<Field name="CreateUser_Name"/>
<QBE paramName="CreateUser_Name"/>
</Contains>
<Contains>
<Field name="CheckUser_Name"/>
<QBE paramName="CheckUser_Name"/>
</Contains>
<GreaterThanOrEqual>
<Field name="OrderDate"/>
<QBE paramName="MinOrderDate" />
</GreaterThanOrEqual>
<LessThanOrEqual>
<Field name="OrderDate"/>
<QBE paramName="MaxOrderDate"/>
</LessThanOrEqual>
<GreaterThanOrEqual>
<Field name="LoadTime"/>
<QBE paramName="MinLoadTime" />
</GreaterThanOrEqual>
<LessThanOrEqual>
<Field name="LoadTime"/>
<QBE paramName="MaxLoadTime"/>
</LessThanOrEqual>
<GreaterThanOrEqual>
<Field name="CreateTime"/>
<QBE paramName="MinCreateTime" />
</GreaterThanOrEqual>
<LessThanOrEqual>
<Field name="CreateTime"/>
<QBE paramName="MaxCreateTime"/>
</LessThanOrEqual>
<EQ>
<Field name="BillState"/>
<QBE paramName ="BillState"/>
</EQ>
<Contains>
<Field name="SealNumber"/>
<QBE paramName="SealNumber"/>
</Contains>
</And>
</Where>
</Select>

+ 1
- 0
WebFolder/Config/Plugins/B3_YunKen.Plugin View File

@ -25,6 +25,7 @@
</Security>
<Menus>
<Menu id="0001" name="/B3耘垦模块/销售预报调整" roles="B3_YunKen.销售预报调整.访问" url="B3YunKen/SaleForecastUpdateList_/SaleForecastUpdateList.aspx"/>
<Menu id="0002" name="/B3耘垦模块/耘垦出库转验收" roles="B3Sale.客户验收.新建" url="B3YunKen/B3YunKenSaleOutStoreToCustomerAccept.aspx"/>
</Menus>
</Plugin>

Loading…
Cancel
Save