Browse Source

需求单No.137234

master
duanluohua 8 years ago
parent
commit
ed1c5b1ec3
4 changed files with 572 additions and 0 deletions
  1. +12
    -0
      BWP.B3_YunKen.Web/BWP.B3_YunKen.Web.csproj
  2. +27
    -0
      BWP.B3_YunKen.Web/Pages/B3YunKen/Overlays/ProductNoticeEdit_Ext.cs
  3. +531
    -0
      BWP.B3_YunKen.Web/Pages/MainToSecondConvertRowManger.cs
  4. +2
    -0
      BWP.B3_YunKen.Web/PluginClass.cs

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

@ -34,6 +34,14 @@
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="B3Butchery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3a973053c7ebf11c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\release\B3Butchery.dll</HintPath>
</Reference>
<Reference Include="B3Butchery.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3a973053c7ebf11c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\release\B3Butchery.Web.dll</HintPath>
</Reference>
<Reference Include="B3Frameworks, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL" />
<Reference Include="B3Frameworks.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL" />
<Reference Include="B3Sale, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3a973053c7ebf11c, processorArchitecture=MSIL">
@ -79,6 +87,9 @@
<Compile Include="Pages\B3YunKen\Overlays\OrderEdit_Ext.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3YunKen\Overlays\ProductNoticeEdit_Ext.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3YunKen\Overlays\SaleForecastEdit_Ext.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
@ -91,6 +102,7 @@
<Compile Include="Pages\B3YunKen\SaleForecastUpdateList_\SaleForecastUpdateList.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\MainToSecondConvertRowManger.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="PluginClass.cs" />
</ItemGroup>


+ 27
- 0
BWP.B3_YunKen.Web/Pages/B3YunKen/Overlays/ProductNoticeEdit_Ext.cs View File

@ -0,0 +1,27 @@
using BWP.B3Butchery.BO;
using BWP.B3UnitedInfos;
using BWP.Web.Pages.B3Butchery.Bills.ProductNotice_;
using Forks.EnterpriseServices.DataForm;
using System.Linq;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework;
namespace BWP.Web.Pages.B3YunKen.Overlays
{
public class ProductNoticeEdit_Ext: ProductNoticeEdit
{
protected override void AddYunKenGridColumns(DFEditGrid _detailGrid)
{
_detailGrid.Columns.Add(new DFEditGridColumn<DFTextBox>("OrderByID"));
if (GlobalFlags.get(B3UnitedInfosConsts.GlobalFlags.))
{
_detailGrid.Columns.Add(new DFEditGridColumn("BrandItem_ID"));
}
_detailGrid.Columns.Add(new DFEditGridColumn("Detail_Customer_ID"));
}
protected override DFCollectionEditor<ProductNotice_Detail> AddYunKenGridOrderByID()
{
return new DFCollectionEditor<ProductNotice_Detail>(() => Dmo.Details.OrderBy(x => x.OrderByID).ToList());
}
}
}

+ 531
- 0
BWP.B3_YunKen.Web/Pages/MainToSecondConvertRowManger.cs View File

@ -0,0 +1,531 @@
using BWP.B3Sale.BL;
using Forks.EnterpriseServices.BusinessInterfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebControls2;
namespace BWP.Web.Pages
{
public class MainToSecondConvertRowManger
{
readonly DFEditGridColumn<DFTextBox> _unitNumInput;
readonly DFEditGridColumn<DFTextBox> _mainNumberInput;
readonly DFEditGridColumn<DFTextBox> _secondNumberInput;
readonly DFEditGridColumn<DFTextBox> _priceInput;
readonly DFEditGridColumn<DFTextBox> _willOutStoreSecondNumberInput;
readonly DFEditGridColumn<DFTextBox> _willOutStoreUnitNumInput;
readonly DFEditGridColumn<DFTextBox> _invoicedUnitNumInput;
readonly DFEditGridColumn<DFTextBox> _invoicedMoneyInput;
readonly DFEditGridColumn<DFTextBox> _moneyInput;
readonly DFEditGridColumn<DFTextBox> NetPriceInput;
readonly DFEditGridColumn<DFTextBox> PriceCostInput;
readonly string _unitNumField;
readonly string _mainNumberField;
readonly string _secondNumberField;
readonly string _moneyField;
readonly string _rebateField;
readonly string _rebateMoneyField;
readonly string _willOutStoreUnitNumField;
readonly string _willOutStoreSecondNumberField;
readonly string _invoicedUnitNumField;
readonly string _invoicedMoneyField;
readonly string _discountMoneyfield;
bool _hasPrice;
bool _hasMoney;
bool _hasRebate;
bool _hasRebateMoney;
bool _hasDiscountMoney;
bool _hasUnitNum;
public MainToSecondConvertRowManger(DFGridBase grid)
: this(grid, "UnitNum", "Number", "SecondNumber", "Money", "Rebate", "RebateMoney", "WillOutStoreUnitNum", "WillOutStoreSecondNumber", "InvoicedUnitNum", "InvoicedMoney", "DiscountMoney")
{
}
public MainToSecondConvertRowManger(DFGridBase grid, string unitNumfield, string mainfield, string secondfield, string moneyfield, string rebatefield, string rebateMoneyfield, string willOutStoreUnitNumfield, string willOutStoreSecondNumberfield, string invoicedUnitNumfield, string invoicedMoneyfield, string discountMoneyfield)
{
_unitNumField = unitNumfield;
_mainNumberField = mainfield;
_secondNumberField = secondfield;
_moneyField = moneyfield;
_rebateField = rebatefield;
_rebateMoneyField = rebateMoneyfield;
_willOutStoreUnitNumField = willOutStoreUnitNumfield;
_willOutStoreSecondNumberField = willOutStoreSecondNumberfield;
_discountMoneyfield = discountMoneyfield;
_invoicedUnitNumField = invoicedUnitNumfield;
_invoicedMoneyField = invoicedMoneyfield;
_discountMoneyfield = discountMoneyfield;
_hasMoney = _hasPrice = _hasRebate = _hasRebateMoney = _hasDiscountMoney = false;
foreach (DFGridColumn column in grid.Columns)
{
if (column is DFEditGridColumn<DFTextBox>)
{
var c = (DFEditGridColumn<DFTextBox>)column;
if (c.Name == unitNumfield)
{
_unitNumInput = c;
_hasUnitNum = true;
}
else if (c.Name == mainfield)
_mainNumberInput = c;
else if (c.Name == secondfield)
_secondNumberInput = c;
else if (c.Name == "Price")
{
_priceInput = c;
_hasPrice = true;
}
else if (c.Name == moneyfield)
{
_moneyInput = c;
_hasMoney = true;
}
else if (c.Name == "NetPrice")
NetPriceInput = c;
else if (c.Name == "PriceCost")
PriceCostInput = c;
else if (c.Name == willOutStoreUnitNumfield)
_willOutStoreUnitNumInput = c;
else if (c.Name == willOutStoreSecondNumberfield)
_willOutStoreSecondNumberInput = c;
else if (c.Name == invoicedUnitNumfield)
_invoicedUnitNumInput = c;
else if (c.Name == invoicedMoneyfield)
_invoicedMoneyInput = c;
}
else if (column is DFEditGridColumn)
{
var c1 = (DFEditGridColumn)column;
if (c1.Name == _moneyField)
{
_hasMoney = true;
}
else if (c1.Name == "Price")
{
_hasPrice = true;
}
else if (c1.Name == _rebateField)
{
_hasRebate = true;
}
else if (c1.Name == _rebateMoneyField)
{
_hasRebateMoney = true;
}
else if (c1.Name == _discountMoneyfield)
{
_hasDiscountMoney = true;
}
else if (c1.Name == _unitNumField)
{
_hasUnitNum = true;
}
}
}
SetClientScript();
}
string SetMainNumber
{
get
{
return string.Format("dfContainer.setValue('{0}', (dfContainer.getValue('{1}')*{2}/{3}).toFixed(6));", _mainNumberField, _secondNumberField, MainUnitRatio, SecondUnitRatio);
}
}
string SetSecondNumber
{
get
{
return string.Format("dfContainer.setValue('{0}', (dfContainer.getValue('{1}')*{2}/{3}).toFixed(6));", _secondNumberField, _mainNumberField, SecondUnitRatio, MainUnitRatio);
}
}
string SetMoney
{
get
{
return string.Format("dfContainer.setValue('{0}', (dfContainer.getValue('Price')*dfContainer.getValue('{1}')).toFixed(2));", _moneyField, _unitNumField);
}
}
string SetRebateMoney
{
get
{
return string.Format("dfContainer.setValue('RebateMoney', (dfContainer.getValue('Money')*dfContainer.getValue('Rebate')/100).toFixed(2));");
}
}
string SetDiscountMoney
{
get
{
return string.Format("dfContainer.setValue('DiscountMoney', dfContainer.getValue('Money')-dfContainer.getValue('RebateMoney'));");
}
}
private const string ConvertDirection = "dfContainer.getValue('Goods_UnitConvertDirection')";
private const string MainUnitRatio = "dfContainer.getValue('Goods_MainUnitRatio')";
private const string SecondUnitRatio = "dfContainer.getValue('Goods_SecondUnitRatio')";
private const string LeftRatio = "dfContainer.getValue('LeftRatio')";
private const string RightRatio = "dfContainer.getValue('RightRatio')";
private void SetClientScript()
{
SetUnitNumChanged();
SetMainNumberChanged();
SetSecondNumberChanged();
SetPriceChanged();
SetWillOutStoreUnitNumChanged();
SetWillOutStoreSecondNumberChanged();
SetinvoicedUnitNumChanged();
SetinvoicedMoneyChanged();
SetMoneyChanged();
SetNetPriceChanged();
SetPriceCostChanged();
}
private void SetinvoicedUnitNumChanged()
{
if (_invoicedUnitNumInput == null || _invoicedMoneyInput == null)
return;
if (_hasPrice && _hasRebate)
{
_invoicedUnitNumInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e)
{
e.Control.Attributes["onchange"] =
"if(dfContainer.getValue('Price')!=0){dfContainer.setValue('InvoicedMoney', (dfContainer.getValue('InvoicedUnitNum')*dfContainer.getValue('Price')*dfContainer.getValue('Rebate')/100).toFixed(2));}";
};
}
}
private void SetMoneyChanged()
{
if (_moneyInput == null)
return;
if (_hasPrice && _hasUnitNum)
{
var str = @" var number = dfContainer.getValue('" + _unitNumField + @"');
if(number==''|| number=='0'){
number = 1;
dfContainer.setValue('" + _unitNumField + @"','1' )
};
dfContainer.setValue('Price', (dfContainer.getValue('" + _moneyField + "')/ number).toFixed(6));";
_moneyInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e) {
e.Control.Attributes["onchange"] = str;
};
}
}
private void SetinvoicedMoneyChanged()
{
if (_invoicedUnitNumInput == null && _invoicedMoneyInput == null)
return;
if (_hasPrice)
{
_invoicedMoneyInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e)
{
e.Control.Attributes["onchange"] = string.Format("dfContainer.setValue('{0}', (dfContainer.getValue('{1}')*100/dfContainer.getValue('Rebate')/dfContainer.getValue('Price')).toFixed(2));", _invoicedUnitNumField, _invoicedMoneyField);
};
}
}
string SetWillOutStoreSecondNumberByUnitNum
{
get
{
return string.Format("var number = dfContainer.getValue('{0}')/{1}*{2}; dfContainer.setValue('{3}', (number /{4}*{5}).toFixed(6));", _willOutStoreUnitNumField, LeftRatio, RightRatio, _willOutStoreSecondNumberField, MainUnitRatio, SecondUnitRatio);
}
}
private void SetWillOutStoreUnitNumChanged()
{
if (_willOutStoreUnitNumInput == null)
return;
var builder = new StringBuilder();
if (_willOutStoreSecondNumberInput != null)
{
builder.Append(@"if({convertDirection}=='双向转换'||{convertDirection}=='由主至辅'){if({unitRatioLeft} > 0 && {unitRatioRight}>0 && {ratioRight}>0 && {ratioLeft}>0){SetWillOutStoreSecondNumberByUnitNum}}"
.Replace("{convertDirection}", ConvertDirection)
.Replace("{ratioLeft}", MainUnitRatio)
.Replace("{ratioRight}", SecondUnitRatio)
.Replace("{unitRatioLeft}", LeftRatio)
.Replace("{unitRatioRight}", RightRatio)
.Replace("{SetWillOutStoreSecondNumberByUnitNum}", SetWillOutStoreSecondNumberByUnitNum)
);
}
_willOutStoreUnitNumInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e)
{
e.Control.Attributes["onchange"] = builder.ToString();
};
}
string SetWillOutStoreUnitNumBySecondNumber
{
get
{
return string.Format("var number = dfContainer.getValue('{0}')*{1}/{2};dfContainer.setValue('{3}', (number/{4}*{5}).toFixed(2));", _willOutStoreSecondNumberField, MainUnitRatio, SecondUnitRatio, _willOutStoreUnitNumField, RightRatio, LeftRatio);
}
}
private void SetWillOutStoreSecondNumberChanged()
{
if (_willOutStoreSecondNumberInput == null)
return;
var builder = new StringBuilder();
if (_willOutStoreUnitNumInput != null)
{
builder.Append(@"if({convertDirection}=='双向转换'||{convertDirection}=='由辅至主'){ if({ratioRight}>0 && {ratioLeft}>0 && {unitRatioLeft} > 0 && {unitRatioRight}>0)
{SetWillOutStoreUnitNumBySecondNumber}}"
.Replace("{convertDirection}", ConvertDirection)
.Replace("{ratioRight}", SecondUnitRatio)
.Replace("{ratioLeft}", MainUnitRatio)
.Replace("{unitRatioLeft}", LeftRatio)
.Replace("{unitRatioRight}", RightRatio)
.Replace("{SetWillOutStoreUnitNumBySecondNumber}", SetWillOutStoreUnitNumBySecondNumber));
}
_willOutStoreSecondNumberInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e)
{
e.Control.Attributes["onchange"] = builder.ToString();
};
}
string SetNumberByUnitNum
{
get
{
return string.Format("dfContainer.setValue('{0}', (dfContainer.getValue('{1}')/{2}*{3}).toFixed(6));", _mainNumberField, _unitNumField, LeftRatio, RightRatio);
}
}
string SetSecondNumberByUnitNum
{
get
{
return string.Format("var number = dfContainer.getValue('{0}')/{1}*{2}; dfContainer.setValue('{3}', (number /{4}*{5}).toFixed(6));", _unitNumField, LeftRatio, RightRatio, _secondNumberField, MainUnitRatio, SecondUnitRatio);
}
}
private void SetUnitNumChanged()
{
if (_unitNumInput == null)
return;
var builder = new StringBuilder();
if (_mainNumberInput != null)
{
builder.Append(@"if({unitRatioLeft} > 0 && {unitRatioRight}>0){
{SetNumberByUnitNum}}".Replace("{unitRatioLeft}", LeftRatio)
.Replace("{unitRatioRight}", RightRatio)
.Replace("{SetNumberByUnitNum}", SetNumberByUnitNum)
);
}
if (_secondNumberInput != null)
{
builder.Append(@"if({convertDirection}=='双向转换'||{convertDirection}=='由主至辅'){if({unitRatioLeft} > 0 && {unitRatioRight}>0 && {ratioRight}>0 && {ratioLeft}>0){{SetSecondNumberByUnitNum}}}"
.Replace("{convertDirection}", ConvertDirection)
.Replace("{ratioLeft}", MainUnitRatio)
.Replace("{ratioRight}", SecondUnitRatio)
.Replace("{unitRatioLeft}", LeftRatio)
.Replace("{unitRatioRight}", RightRatio)
.Replace("{SetSecondNumberByUnitNum}", SetSecondNumberByUnitNum)
);
}
if (_hasPrice && _hasMoney)
{
builder.Append(SetMoney);
if (_hasRebate && _hasRebateMoney)
{
builder.Append(SetRebateMoney);
}
if (_hasRebate && _hasDiscountMoney)
{
builder.Append(SetDiscountMoney);
}
}
_unitNumInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e)
{
e.Control.Attributes["onchange"] = builder.ToString();
};
}
private void SetSecondNumberChanged()
{
if (_secondNumberInput == null)
return;
var builder = new StringBuilder();
if (_mainNumberInput != null)
{
builder.Append(@"if({convertDirection}=='双向转换'||{convertDirection}=='由辅至主'){ if({ratioRight}>0 && {ratioLeft}>0)
{setMainNumber}}"
.Replace("{convertDirection}", ConvertDirection)
.Replace("{ratioRight}", SecondUnitRatio)
.Replace("{ratioLeft}", MainUnitRatio)
.Replace("{setMainNumber}", SetMainNumber));
}
if (_unitNumInput != null)
{
builder.Append(@"if({convertDirection}=='双向转换'||{convertDirection}=='由辅至主'){ if({ratioRight}>0 && {ratioLeft}>0 && {unitRatioLeft} > 0 && {unitRatioRight}>0)
{{setUnitNum}}}"
.Replace("{convertDirection}", ConvertDirection)
.Replace("{ratioRight}", SecondUnitRatio)
.Replace("{ratioLeft}", MainUnitRatio)
.Replace("{unitRatioLeft}", LeftRatio)
.Replace("{unitRatioRight}", RightRatio)
.Replace("{setUnitNum}", SetUnitNumBySecondNumber));
}
if (_hasPrice && _hasMoney)
{
builder.Append(SetMoney);
if (_hasRebate && _hasRebateMoney)
{
builder.Append(SetRebateMoney);
}
if (_hasRebate && _hasDiscountMoney)
{
builder.Append(SetDiscountMoney);
}
}
_secondNumberInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e) {
e.Control.Attributes["onchange"] = builder.ToString();
};
}
string SetUnitNumBySecondNumber
{
get
{
return string.Format("var number = dfContainer.getValue('{0}')*{1}/{2};dfContainer.setValue('{3}', (number/{4}*{5}).toFixed(2));", _secondNumberField, MainUnitRatio, SecondUnitRatio, _unitNumField, RightRatio, LeftRatio);
}
}
string SetUnitNumByNumber
{
get
{
return string.Format("dfContainer.setValue('{0}', (dfContainer.getValue('{1}')/{2}*{3}).toFixed(2));", _unitNumField, _mainNumberField, RightRatio, LeftRatio);
}
}
private void SetMainNumberChanged()
{
if (_mainNumberInput == null)
return;
var builder = new StringBuilder();
if (_secondNumberInput != null)
{
builder.Append(@"if({convertDirection}=='双向转换'||{convertDirection}=='由主至辅'){ if({ratioLeft}>0 && {ratioRight}>0){setSecondNumber}}"
.Replace("{convertDirection}", ConvertDirection)
.Replace("{ratioLeft}", MainUnitRatio)
.Replace("{ratioRight}", SecondUnitRatio)
.Replace("{setSecondNumber}", SetSecondNumber)
);
}
if (_unitNumInput != null)
{
builder.Append(@"if({convertDirection}=='双向转换'||{convertDirection}=='由主至辅'){if({unitRatioLeft} > 0 && {unitRatioRight}>0){setUnitNum}}"
.Replace("{convertDirection}", ConvertDirection)
.Replace("{unitRatioLeft}", MainUnitRatio)
.Replace("{unitRatioRight}", SecondUnitRatio)
.Replace("{setUnitNum}", SetUnitNumByNumber)
);
}
if (_hasPrice && _hasMoney)
{
builder.Append(SetMoney);
if (_hasRebate && _hasRebateMoney)
{
builder.Append(SetRebateMoney);
}
if (_hasRebate && _hasDiscountMoney)
{
builder.Append(SetDiscountMoney);
}
}
_mainNumberInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e) {
e.Control.Attributes["onchange"] = builder.ToString();
};
}
ISaleForecastBL bl = BIFactory.Create<ISaleForecastBL>();
private void SetPriceChanged()
{
if (_priceInput == null)
return;
var builder = new StringBuilder();
if (_hasMoney && _unitNumInput != null)
{
builder.Append(SetMoney);
if (_hasRebate && _hasRebateMoney)
{
builder.Append(SetRebateMoney);
}
if (_hasRebate && _hasDiscountMoney)
{
builder.Append(SetDiscountMoney);
}
}
string SetPriceCost = "dfContainer.setValue('PriceCost',(dfContainer.getValue('Price')*1.00-dfContainer.getValue('NetPrice')*1.00));";
if (NetPriceInput != null && PriceCostInput != null && !bl.LockCostPrice)
builder.Append(SetPriceCost);
_priceInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e) {
e.Control.Attributes["onchange"] = builder.ToString();
};
}
private void SetNetPriceChanged()
{
if (_priceInput == null)
return;
if (PriceCostInput == null)
return;
string SetPriceByNetPrice = "dfContainer.setValue('Price',(dfContainer.getValue('NetPrice')*1.00+dfContainer.getValue('PriceCost')*1.00));";
if (NetPriceInput != null)
{
NetPriceInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e)
{
e.Control.Attributes["onchange"] = SetPriceByNetPrice;
};
}
}
private void SetPriceCostChanged()
{
if (_priceInput == null)
return;
if (NetPriceInput == null)
return;
string SetPriceByNetPrice = "dfContainer.setValue('Price',(dfContainer.getValue('NetPrice')*1.00+dfContainer.getValue('PriceCost')*1.00));";
if (PriceCostInput != null)
{
PriceCostInput.InitEditControl += delegate (object sender, InitEditControlEventArgs<DFTextBox> e)
{
e.Control.Attributes["onchange"] = SetPriceByNetPrice;
};
}
}
}
}

+ 2
- 0
BWP.B3_YunKen.Web/PluginClass.cs View File

@ -6,6 +6,7 @@ using BWP.Web.Pages.B3Sale.Bills.Order_;
using BWP.Web.Pages.B3YunKen.Overlays;
using BWP.Web.Pages.B3Sale.Bills.SaleOutStore_;
using BWP.Web.Pages.B3Sale.Bills.SaleForecast_;
using BWP.Web.Pages.B3Butchery.Bills.ProductNotice_;
namespace BWP.B3_YunKen.Web
{
@ -22,6 +23,7 @@ namespace BWP.B3_YunKen.Web
WpfPageFactory.RegisterPageOverlay(typeof(OrderEdit).FullName, typeof(OrderEdit_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(SaleOutStoreEdit).FullName, typeof(SaleOutStoreEdit_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(SaleForecastEdit).FullName, typeof(SaleForecastEdit_Ext).FullName);
WpfPageFactory.RegisterPageOverlay(typeof(ProductNoticeEdit).FullName, typeof(ProductNoticeEdit_Ext).FullName);
}
public void OnUnitInit()


Loading…
Cancel
Save