Browse Source

需求单No.139566 农行交易市场收款单接口

master
robin 7 years ago
parent
commit
71a40da5d3
9 changed files with 520 additions and 1 deletions
  1. +10
    -0
      B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj
  2. +126
    -0
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/TrustPay_/TrustPayEdit.cs
  3. +50
    -0
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/TrustPay_/TrustPayList.cs
  4. +40
    -0
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/TrustPay_/TrustPayList.xml
  5. +8
    -0
      B3QingDaoWanFu/B3QingDaoWanFu.csproj
  6. +91
    -0
      B3QingDaoWanFu/BL/TrustPayBL.cs
  7. +67
    -0
      B3QingDaoWanFu/BO/TrustPay_/TrustPay.cs
  8. +120
    -0
      B3QingDaoWanFu/Rpc/TrustPayRpc.cs
  9. +8
    -1
      WebFolder/config/plugins/B3QingDaoWanFu.plugin

+ 10
- 0
B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj View File

@ -89,6 +89,7 @@
<HintPath>D:\BwpB3Project\tsref\Debug\B3UnitedInfos.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="BWPTrustPayClient, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" />
<Reference Include="Forks.EnterpriseServices, Version=3.1.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\BwpB3Project\tsref\Debug\Forks.EnterpriseServices.dll</HintPath>
@ -169,6 +170,12 @@
<Compile Include="Pages\B3QingDaoWanFu\ExportUI\GoodsExportToMES.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3QingDaoWanFu\TrustPay_\TrustPayList.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3QingDaoWanFu\TrustPay_\TrustPayEdit.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3QingDaoWanFu\Overlays\SaleOutStoreEdit_Ext.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
@ -241,6 +248,9 @@
<ItemGroup>
<EmbeddedResource Include="Pages\B3QingDaoWanFu\SaleOutStore_\SaleOutStoreSimpleAnayse.xml" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\B3QingDaoWanFu\TrustPay_\TrustPayList.xml" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\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.


+ 126
- 0
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/TrustPay_/TrustPayEdit.cs View File

@ -0,0 +1,126 @@
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using BWP.B3QingDaoWanFu.BL;
using BWP.B3QingDaoWanFu.BO;
using BWP.BWPTrustPayClient.BO.NamedValueTemplate;
using BWP.BWPTrustPayClient.TrustPayRequests;
using BWP.Web.CustomPageLayout;
using BWP.Web.Layout;
using BWP.Web.WebControls;
using TSingSoft.WebControls2;
namespace BWP.Web.Pages.B3QingDaoWanFu.TrustPay_ {
class TrustPayEdit : BaseDmoEditPage<TrustPay, ITrustPayBL> {
protected override void OnLoad(EventArgs e) {
if (!IsPostBack && !String.IsNullOrEmpty(Request["MSG"])) {
var result = new B3PaymentResult(Request["MSG"]).Parse();
if (result.IsSuccess) {
mBL.ABCPaySuccess(Dmo);
AspUtil.AlertAndClose(this, "付款成功");
} else {
AspUtil.Alert(this, result.ErrorMessage);
}
}
base.OnLoad(e);
}
protected override void AddActions(ButtonGroup buttonGroup) {
//AddSaveAction(buttonGroup);
}
protected override void BuildBasePropertiesEditor(TitlePanel titlePanel, PageLayoutSection pageLayoutSection) {
var layoutManager = new LayoutManager("", mDFInfo, mDFContainer);
layoutManager.Add("PayState", new DFValueLabel());
layoutManager.Add("Money", new DFTextBox());
layoutManager.Add("CreateTime", new DFValueLabel());
var config = new AutoLayoutConfig();
config.Add("AccountCustomer_ID");
config.Add("Money");
config.Add("PayState");
config.Add("CreateTime");
config.Add("Remark");
pageLayoutSection.ApplyLayout(layoutManager, config, mPageLayoutManager, mDFInfo);
layoutManager.Config = config;
titlePanel.Controls.Add(layoutManager.CreateLayout());
}
protected override void BuildBody(Control parent) {
base.BuildBody(parent);
AddAbcPay(parent);
}
public override void AppToUI() {
base.AppToUI();
mDFContainer.Readonly = !IsNew;
}
private void AddAbcPay(Control parent) {
var titlePanel = new TitlePanel("农行支付");
parent.Controls.Add(titlePanel);
var vPanel = new VLayoutPanel();
titlePanel.Controls.Add(vPanel);
var layoutManager = new LayoutManager("Pay", mDFInfo, mDFContainer);
var config = new AutoLayoutConfig() {
};
if (IsNew) {
vPanel.Add(new TSButton("新建付款", delegate {
mDFContainer.GetFromUI();
var id = mBL.CreateRequest(Dmo);
var url = AspUtil.AddParamToUrl(Request.RawUrl, "ID", id.ToString());
AspUtil.RedirectAndAlert(this, url, "新建付款成功");
}));
} else if (MinDmo.PayState == .) {
vPanel.Add(new TSButton("请求付款", delegate {
mBL.ABCPayRequest(Dmo);
AspUtil.RedirectAndAlert(this, Request.RawUrl, "请求付款成功");
}));
} else {
layoutManager.Add("ABCPay_No", new DFValueLabel());
var link = new HyperLink();
link.Target = "_blank";
link.Text = "前往支付";
link.NavigateUrl = MinDmo.ABCPay_PaymentURL;
layoutManager.Add("ABCPay_PaymentURL", link);
layoutManager["ABCPay_PaymentURL"].NoLabel = true;
config.Add("ABCPay_No");
config.Add("ABCPay_PaymentURL");
layoutManager.Config = config;
vPanel.Add(layoutManager.CreateLayout());
if (MinDmo.PayState == .) {
vPanel.Add(new TSButton("完成付款", delegate {
mBL.ABCPaySuccess(Dmo);
AspUtil.RedirectAndAlert(this, Request.RawUrl, "完成付款成功");
}));
}
}
}
}
}

+ 50
- 0
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/TrustPay_/TrustPayList.cs View File

@ -0,0 +1,50 @@
using BWP.B3Frameworks;
using BWP.B3QingDaoWanFu.BO;
using BWP.Web.Layout;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using TSingSoft.WebControls2;
namespace BWP.Web.Pages.B3QingDaoWanFu.TrustPay_ {
class TrustPayList : EntityListPage<TrustPay > {
protected override bool NotWaitingUserInput() {
return true;
}
protected override void AddQueryControls(VLayoutPanel vPanel) {
var layoutManager = new LayoutManager("", mDFInfo, mQueryContainer);
var config = new AutoLayoutConfig();
config.Add("ID");
config.Add("AccountCustomer_ID");
config.Add("ABCPay_No");
config.Add("CreateUser_Name");
config.Add("CreateTime");
layoutManager.Config = config;
var section = mPageLayoutManager.AddSection(B3FrameworksConsts.PageLayouts.QueryConditions, B3FrameworksConsts.PageLayouts.QueryConditions_DisplayName);
section.ApplyLayout(layoutManager, config, mPageLayoutManager, mDFInfo);
vPanel.Add(layoutManager.CreateLayout());
}
protected override void CreateDFBrowseGridColumns(DFBrowseGrid grid)
{
grid.Add(new DFBrowseGridColumn("ID"));
grid.Add(new DFBrowseGridColumn("ABCPay_No"));
grid.Add(new DFBrowseGridColumn("AccountCustomer_Name"));
grid.Add(new DFBrowseGridColumn("Money"));
grid.Add(new DFBrowseGridColumn("PayState"));
grid.Add(new DFBrowseGridColumn("CreateTime"));
grid.Add(new DFBrowseGridColumn("Gathering_ID"));
}
protected override DQueryDom GetQueryDom() {
var query = base.GetQueryDom();
query.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID));
return query;
}
}
}

+ 40
- 0
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/TrustPay_/TrustPayList.xml View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8" ?>
<Select xmlns="urn:XDQuery">
<Columns>
<Field name="ID"/>
</Columns>
<From>
<DmoClass class="BWP.B3QingDaoWanFu.BO.TrustPay, B3QingDaoWanFu"/>
</From>
<Where>
<And>
<EQ>
<Field name="ID"/>
<QBE paramName="ID"/>
</EQ>
<EQ>
<Field name="AccountCustomer_ID"/>
<QBE paramName="AccountCustomer_ID"/>
</EQ>
<Contains>
<Field name="CreateUser_Name"/>
<QBE paramName="CreateUser_Name"/>
</Contains>
<Contains>
<Field name="ABCPay_No"/>
<QBE paramName="ABCPay_No"/>
</Contains>
<GreaterThanOrEqual>
<Field name="CreateTime"/>
<QBE paramName="MinCreateTime" />
</GreaterThanOrEqual>
<LessThanOrEqual>
<Field name="CreateTime"/>
<QBE paramName="MaxCreateTime"/>
</LessThanOrEqual>
</And>
</Where>
</Select>

+ 8
- 0
B3QingDaoWanFu/B3QingDaoWanFu.csproj View File

@ -85,6 +85,10 @@
<HintPath>D:\BwpB3Project\tsref\Debug\B3UnitedInfos.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="BWPTrustPayClient, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\BWPTrustPayClient.dll</HintPath>
</Reference>
<Reference Include="Forks.EnterpriseServices, Version=3.1.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\BwpB3Project\tsref\Debug\Forks.EnterpriseServices.dll</HintPath>
@ -109,6 +113,7 @@
<Reference Include="System.Core">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq">
<SpecificVersion>False</SpecificVersion>
</Reference>
@ -149,16 +154,19 @@
<Compile Include="BLActions\SaleOrderBLAction.cs" />
<Compile Include="BLActions\SaleOutStoreBLActions.cs" />
<Compile Include="BL\Bill\CostRecordBL\CostRecordBL.cs" />
<Compile Include="BL\TrustPayBL.cs" />
<Compile Include="BL\CustomerDeviceSetBL.cs" />
<Compile Include="BL\ExportBL\GoodsExportBL.cs" />
<Compile Include="BO\Bill\CostRecord\CostRecord.cs" />
<Compile Include="BO\Bill\CostRecord\CostRecord_Detail.cs" />
<Compile Include="BO\TrustPay_\TrustPay.cs" />
<Compile Include="BO\CustomerDeviceSet.cs" />
<Compile Include="BO\SaleOutStoreBarCodeToMESLog.cs" />
<Compile Include="BO\SaleOutStorePrint\SaleOutStorePrintInfo.cs" />
<Compile Include="BO\SaleOutStorePrint\SaleOutStoreSimpleAnayse.cs" />
<Compile Include="DataPatchs\StatPaySetBillNeedValue20171123.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Rpc\TrustPayRpc.cs" />
<Compile Include="Rpc\GatheringRpc.cs" />
<Compile Include="Tasks\SyncSaleOutStoreInfoToMES.cs" />
<Compile Include="TypeIOCs\GoodsBLTypeIoc.cs" />


+ 91
- 0
B3QingDaoWanFu/BL/TrustPayBL.cs View File

@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using System.Web;
using BWP.B3Frameworks;
using BWP.B3Frameworks.BL;
using BWP.B3Frameworks.Utils;
using BWP.B3QingDaoWanFu.BO;
using BWP.BWPTrustPayClient.BO.NamedValueTemplate;
using BWP.BWPTrustPayClient.TrustPayRequests;
using Forks.EnterpriseServices.BusinessInterfaces;
using TSingSoft.WebPluginFramework;
namespace BWP.B3QingDaoWanFu.BL {
[BusinessInterface(typeof(TrustPayBL))]
public interface ITrustPayBL : IEntityBL<TrustPay> {
long CreateRequest(TrustPay dmo);
void ABCPayRequest(TrustPay dmo);
void ABCPaySuccess(TrustPay dmo);
}
public class TrustPayBL : EntityBL<TrustPay>, ITrustPayBL {
protected override List<string> MinDmoProperties {
get {
var list = base.MinDmoProperties;
list.Add("PayState");
list.Add("Money");
list.Add("ABCPay_PaymentURL");
return list;
}
}
protected override void doInsert(TrustPay dmo) {
dmo.Domain_ID = DomainContext.Current.ID;
dmo.CreateUser_ID = BLContext.User.ID;
base.doInsert(dmo);
}
public long CreateRequest(TrustPay dmo) {
Insert(dmo);
return dmo.ID;
}
public void ABCPayRequest(TrustPay dmo) {
if (dmo.PayState != .) {
throw new Exception("当前不能提交付款请求");
}
var req = new B3PaymentRequest();
req.Money = dmo.Money.Value;
req.ResultNotifyURL = HttpContext.Current.Request.Url.ToString();
req.Time = DateTime.Now;
//#if DEBUG
// req.Money = 0.51m;
//#endif
var res = req.Submit();
if (res.IsSuccess) {
dmo.ABCPay_No = req.OrderNo;
dmo.ABCPay_PaymentURL = res.PaymentURL;
dmo.ABCPay_ResultNotifyURL = req.ResultNotifyURL;
dmo.PayState = .;
InnerBLUtil.UpdateEntityProperties(Session, dmo, "PayState", "ABCPay_No", "ABCPay_PaymentURL", "ABCPay_ResultNotifyURL");
} else {
throw new Exception(res.ErrorMessage);
}
}
public void ABCPaySuccess(TrustPay dmo) {
var req = new B3QueryOrderRequest();
req.OrderNo = dmo.ABCPay_No;
var res = req.Submit();
if (!res.IsSuccess) {
throw new Exception(res.ErrorMessage);
}
if (!res.StatusIsSuccess()) {
throw new Exception(B3QueryOrderRequest.Response.GetStatusName(res.Status));
}
dmo.PayState = .;
InnerBLUtil.UpdateEntityProperties(Session, dmo, "PayState");
AfterFinishPay(dmo);
}
void AfterFinishPay(TrustPay dmo) {
//创建收款单
}
}
}

+ 67
- 0
B3QingDaoWanFu/BO/TrustPay_/TrustPay.cs View File

@ -0,0 +1,67 @@
using System;
using BWP.B3Frameworks;
using BWP.B3Frameworks.BO;
using BWP.B3Frameworks.BO.MoneyTemplate;
using BWP.B3Sale.BO;
using BWP.B3Sale.Utils;
using BWP.BWPTrustPayClient.BO.NamedValueTemplate;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.Utils;
using TSingSoft.WebPluginFramework;
namespace BWP.B3QingDaoWanFu.BO {
[Serializable]
[LogicName("农行付款")]
public class TrustPay : Entity {
[LogicName("请求时间")]
public DateTime? ReqTime { get; set; }
[LogicName("结账客户")]
[DFDataKind(B3SaleDataSources.结账客户)]
[DFExtProperty(B3FrameworksConsts.DFExtProperties.DisplayField, "AccountCustomer_Name")]
[DFNotEmpty]
public long? AccountCustomer_ID { get; set; }
[LogicName("付款金额")]
public Money<> Money { get; set; }
[LogicName("付款状态")]
[DbColumn(DefaultValue = 0)]
public NamedValue<> PayState { get; set; }
[LogicName("请求付款号")]
public string ABCPay_No { get; set; }
[LogicName("付款地址")]
[DbColumn(Length = 1000)]
public string ABCPay_PaymentURL { get; set; }
[LogicName("支付结果回传网址")]
[DbColumn(Length = 1000)]
public string ABCPay_ResultNotifyURL { get; set; }
[LogicName("收款单号")]
public long? Gathering_ID { get; set; }
[LogicName("板块ID")]
public long Domain_ID { get; set; }
[LogicName("创建人ID")]
[DFPrompt("创建人")]
public long? CreateUser_ID { get; set; }
[ReferenceTo(typeof(Customer), "Name")]
[Join("AccountCustomer_ID", "ID")]
[LogicName("结账客户")]
public string AccountCustomer_Name { get; set; }
[ReferenceTo(typeof(WpfUser), "Name")]
[Join("CreateUser_ID", "ID")]
[LogicName("创建人")]
public string CreateUser_Name { get; set; }
}
}

+ 120
- 0
B3QingDaoWanFu/Rpc/TrustPayRpc.cs View File

@ -0,0 +1,120 @@
using System;
using System.Linq;
using System.Web;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Frameworks.Utils;
using BWP.B3QingDaoWanFu.BL;
using BWP.B3QingDaoWanFu.BO;
using BWP.B3Sale.BO;
using BWP.B3Sale.Utils;
using BWP.B3UnitedInfos.Rpcs;
using BWP.BWPTrustPayClient.BO.NamedValueTemplate;
using Forks.EnterpriseServices.BusinessInterfaces;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.JsonRpc;
using Forks.EnterpriseServices.SqlDoms;
using Forks.Utils;
using TSingSoft.WebPluginFramework;
namespace BWP.B3QingDaoWanFu.Rpc {
[Rpc]
public static class TrustPayRpc {
[Rpc]
public static long CreatePayment(long accountCustomerID, decimal money) {
var bl = BIFactory.Create<ITrustPayBL>();
var pay = new TrustPay();
pay.Money = money;
pay.AccountCustomer_ID = accountCustomerID;
bl.CreateRequest(pay);
return pay.ID;
}
[Rpc]
public static String PaySubmit(long billID) {
var payBL = BIFactory.Create<ITrustPayBL>();
var pay = payBL.Load(billID);
if (pay == null)
throw new Exception("付款单不存在");
if (pay.PayState == .) {
return GetTokenFromUrl(pay.ABCPay_PaymentURL);
}
if (pay.PayState == .) {
payBL.ABCPayRequest(pay);
return GetTokenFromUrl(pay.ABCPay_PaymentURL);
}
if (pay.PayState == .)
return "付款单已付款!";
throw new Exception(string.Format("不支持的付款状态{0}", pay.PayState.Name));
}
[Rpc]
public static void FinishPay(long billID) {
var payBL = BIFactory.Create<ITrustPayBL>();
var pay = payBL.Load(billID);
if (pay.PayState == .) {
payBL.ABCPaySuccess(pay);
} else if (pay.PayState == .) {
throw new Exception("付款单未付款");
}
}
static string GetTokenFromUrl(string url) {
return HttpUtility.ParseQueryString(new Uri(url).Query)["TOKEN"];
}
[Rpc]
public static DFDataTable LoadAccountCustomer() {
var dom = Load(typeof(Customer));
UserVsCustomerUtil.AddUserCustomerCondition(dom, dom.From.RootSource.Alias, "ID");
OrganizationUtil.AddOrganizationLimit(dom, typeof(Customer));
return new DFDataAdapter(new LoadArguments(dom)).Fill();
}
[Rpc]
public static TrustPay[] QueryOrder(RpcQueryObj queryObj) {
var query = new DQueryDom(new JoinAlias(typeof(TrustPay)));
query.Where.Conditions.Add(DQCondition.EQ("CreateUser_ID", BLContext.User.ID));
if (!queryObj.Select.Any()) {
queryObj.Select.Add("ID");
queryObj.Select.Add("AccountCustomer_Name");
queryObj.Select.Add("Money");
queryObj.Select.Add("PayState");
queryObj.Select.Add("CreateTime");
queryObj.Select.Add("Gathering_ID");
}
foreach (var item in queryObj.OrderBy) {
query.OrderBy.Expressions.Add(DQOrderByExpression.Create(item.Name, item.Desc));
}
if (queryObj.PageSize > 0) {
query.Range = SelectRange.Top(queryObj.PageSize * (queryObj.CurrentPageIndex + 1));
}
var result = query.EExecuteDmoList<TrustPay>(queryObj.Select.ToArray());
if (queryObj.PageSize > 0) {
return result.Skip(queryObj.PageSize * queryObj.CurrentPageIndex).ToArray();
}
return result.ToArray();
}
private static DQueryDom Load(Type type) {
var query = new DQueryDom(new JoinAlias(type));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("Name"));
query.Where.Conditions.Add(DQCondition.EQ("Stopped", false));
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("Name"));
return query;
}
}
}

+ 8
- 1
WebFolder/config/plugins/B3QingDaoWanFu.plugin View File

@ -5,6 +5,7 @@
<Plugin name="B3Procurement" version="$appVersion"/>
<Plugin name="B3ButcherManage" version="$appVersion"/>
<Plugin name="B3Sale" version="$appVersion"/>
<Plugin name="BWPTrustPayClient" version="$appVersion"/>
</Requires>
<Assemblies>
<File name="B3QingDaoWanFu.dll" type="bo bl"/>
@ -46,6 +47,11 @@
<Function index="11" name="撤销完毕"/>
<Function index="12" name="打印"/>
</FunctionGroup>
<FunctionGroup name="农行付款" roleSchemas="employee">
<Function index="0" name="访问" />
<Function index="1" name="新建" />
<Function index="2" name="编辑" />
</FunctionGroup>
</Security>
<Menus>
<Menu id="0001" name="/B3青岛万福/报表/收购综合报表" roles="B3QingDaoWanFu.报表.收购综合报表" url="B3QingDaoWanFu/Reports/ComprehensiveReport.aspx"/>
@ -54,7 +60,8 @@
<Menu id="0004" name="/B3青岛万福/报表/异常猪分析" roles="B3QingDaoWanFu.报表.异常猪分析" url="B3QingDaoWanFu/Reports/ButcherPigInfo.aspx"/>
<Menu id="0005" name="/B3青岛万福/报表/付款清单导出" roles="B3QingDaoWanFu.报表.付款清单导出" url="B3QingDaoWanFu/Reports/PayInfoExport.aspx"/>
<Menu id="0006" name="/B3青岛万福/业务单据/费用录入" roles="B3QingDaoWanFu.费用录入.访问" url="B3QingDaoWanFu/Bills/CostRecord_/CostRecordList.aspx"/>
<Menu id="0007" name="/B3青岛万福/报表/万福销售出库分析" roles="B3QingDaoWanFu.报表.销售出库分析" url="B3QingDaoWanFu/SaleOutStore_/SaleOutStoreSimpleAnayse.aspx"/>
<Menu id="0007" name="/B3青岛万福/报表/万福销售出库分析" roles="B3QingDaoWanFu.报表.销售出库分析" url="B3QingDaoWanFu/SaleOutStore_/SaleOutStoreSimpleAnayse.aspx"/>
<Menu id="0008" name="/B3青岛万福/农行付款" roles="B3QingDaoWanFu.农行付款.访问" url="B3QingDaoWanFu/TrustPay_/TrustPayList.aspx"/>
</Menus>
<Features>


Loading…
Cancel
Save