
### 【问题概述】
如何能够调用星空的标准接口获取销售价目表、销售折扣表相关数据,实现通过商品品种、数量等参数获取价格、折扣等信息。
### 【问题分析】
星空内部调用接口可实现取价、取折扣,可以进行调用
### 【解决方案】
### 1. 自动优先级取价
>构建查询参数,进行自动优先级取价,具体可参考销售管理-价格参数-自动应用优先级取价的逻辑描述
二开方法:
1. 引用Kingdee.K3.SCM.ServiceHelper
2. 调用SaleGetPriceAutoHelper.GetSalePriceRustltByAuto
3. 入参构建:Context ctx 上下文、List<GetPriceArgs> priceArgs 价格参数、bool checkAutoPriceParam 是否校验自动优先级取价参数,默认为true
注意: 当前取价仅查询销售价目表数据得到价目表价格,没办法做到根据单据数据从价目表取价,因此价目表中的【自定义辅助资料】等设计不会生效
代码参考如下:
```
// 取价参数List
List<GetPriceArgs> list = new List<GetPriceArgs>();
// 循环加入子项
for (var i = 0; i < YourData.Length; i++)
{
// 构建单个取价参数
var args = new GetPriceArgs
{
// 源单据(从销售订单)中的结算币别ID、销售组ID、销售组织ID等
SettleCurrId = ,
SaleGroupId = ,
SaleOrgId = ,
SaleDeptId = ,
SalerId = ,
CustId = ,
CustTypeId = ,
CustGroupId = ,
Date = ,
IsIncludedTax = ,
PriceListId = ,
// 当前物料的信息(从基础资料-物料)
MaterialId = ,
Material = ,
MasterId = ,
MaterialGroupId = ,
PriceUnitId = ,
UnitId = ,
// 数量、是否免费、是否取到价
Qty = ,
IsFree = ,
IsGetPrice = ,
// 物料明细行号
Row = i
};
list.Add(args);
}
// 调用取价接口
priceArgs = SaleGetPriceAutoHelper.GetSalePriceRustltByAuto(Context, priceArgs);
foreach (var arg in priceArgs)
{
var result = arg.PirceResult;
// 含税单价
var taxPrice = result.TaxPrice;
// 单价
var price = result.Price;
}
```
### 2. 根据固定价目表取价
> 适用于给定单个或一组价目表,根据物料信息进行取价
>
二开方法:
1. 引用Kingdee.K3.SCM.ServiceHelper
2. 调用PriceServiceHelper.GetSalPriceArray(Context, priceArgs)
3. 入参构建:Context ctx 上下文、PriceArgs priceArg 价格参数
注意: 当前取价仅查询销售价目表数据得到价目表价格,没办法做到根据单据数据从价目表取价,因此价目表中的【自定义辅助资料】等设计不会生效
代码参考如下:
```
// 取价参数priceArgs
var priceArgs = new PriceArgs
{
/