云计算百科
云计算领域专业知识百科平台

金蝶云星空销售价目表接口怎么查:客户范围、阶梯价和有效期字段

目录

    • 一、查到一个价格,不代表找到适用价格
    • 二、FormId是BD_SAL_PriceList
    • 三、先读取表头的业务范围
    • 四、明细不仅有物料和价格
    • 五、客户和销售员在另外的集合里
    • 六、先保留候选规则,别立即压成一个价格
    • 七、读取字段存在,不等于保存参数相同
    • 八、联调时把价格选错的问题拆开

一、查到一个价格,不代表找到适用价格

对接金蝶云星空销售价目表时,不能只取物料和Price。客户范围、币别、含税口径、数量区间、有效期和组织,都可能影响价格是否适用于当前业务。

本文整理我在2026年9月12日金蝶官方公开体验环境的只读实测记录。涉及的表单和返回字段已经在该环境核对;客户实际账套的字段、权限和价格匹配规则还需要单独确认。

本文没有执行价目表保存,没有新增生产案例,也不把以下字段清单当作完整的价格计算规则。

二、FormId是BD_SAL_PriceList

实测确认的销售价目表标识是:

BD_SAL_PriceList

此前尝试SAL_PriceList,返回:

标识为'SAL_PriceList'的业务对象不存在,或者被删除。

不要根据销售订单SAL_SaleOrder的命名规律,猜价目表也以SAL开头。

想查看一张已知价目表,可以用View。实测记录中的请求形状如下:

{
"formid": "BD_SAL_PriceList",
"data": {
"Number": "TY002"
}
}

TY002是当时体验环境的样本编号,不能直接拿它查询客户账套。调用需要有效会话和对应权限。

formid在顶层。之前把它写进data里,报错为“表单标识为空,请确认接口参数中是否已给单据标识赋值。”后续只读补测发现formid和FormId均能使用,重点是参数所在层级,不应把大小写说成唯一原因。

三、先读取表头的业务范围

View返回完整对象,不是ExecuteBillQuery的二维数组。读取时先确认ResponseStatus,再查看Result中的业务对象。

Result
├─ ResponseStatus
└─ Result:价目表业务对象

实测记录列出的表头字段包括:

字段需要核对的内容
Number、Name 价目表编号和名称
CurrencyId 币别
IsIncludedTax 价格是否含税
EffectiveDate、ExpiryDate 整表生效期
LimitCustomer 是否限定客户范围
LimitSalesMan 是否限定销售员范围
PriceObject 定价对象
DocumentStatus、AuditStatus 审核状态
CreateOrgId、UseOrgId 创建和使用组织

同一物料在不同币别、组织或含税口径下的价格,不能只根据数值大小进行替换。

审核状态也要一起看。查到对象并不代表它已经是当前可用的已审核价目表。

四、明细不仅有物料和价格

实测明细集合为SAL_PRICELISTENTRY,包含下面几组字段:

字段组已记录的返回字段
定价对象 MaterialId、MaterialGroupId、MaterialTypeId
价格 Price、DownPrice
数量区间 FromQty、ToQty
行级生效期 EffectiveDate、ExpiryDate
单位与计价 UnitID、PriceUnitId、PriceBase
业务维度 AuxPropId、Lot、BomId
行状态 ForbidStatus、RowAuditStatus

同一张价目表可以有表头和行级两组日期。读取时把行级日期丢掉,外部系统就可能把过期明细当作可用价格。

数量区间也是如此。只建立“物料编码→价格”的一对一字典,会覆盖同物料的多个区间。

边界到底含不含FromQty或ToQty、多个区间重叠时如何选择,不能仅从字段名推断。这些需要在目标账套按实际规则验证。

五、客户和销售员在另外的集合里

实测记录还有两个集合:

SAL_APPLYCUSTOMER
SAL_APPLYSALESMAN

客户集合包含CustID、CustGroup、CustTypeID和IsDefList。销售员集合包含SalerId、SaleGroupId和DeptId。

这意味着客户条件可能涉及具体客户、客户分组或客户类型,而不只是一个客户编码。

表头的范围开关和这些集合要一起保留。看到客户集合为空,不能直接断言所有客户都适用;需要结合开关与账套规则确认。多张价目表同时命中时的优先级,也需要额外核对。

六、先保留候选规则,别立即压成一个价格

外部缓存可以保留表头上下文和原始明细,避免在读取时丢失定价维度。

下面是一个结构整理示例,输入是View响应中已经取出的价目表业务对象:

function collectPriceRows(bill) {
if (!bill || typeof bill !== 'object') {
throw new Error('价目表业务对象不合法');
}
const rows = bill.SAL_PRICELISTENTRY;
if (!Array.isArray(rows)) {
throw new Error('缺少价目表明细集合');
}
return rows.map((row, index) => ({
priceListNo: bill.Number,
rowIndex: index,
currency: bill.CurrencyId,
includedTax: bill.IsIncludedTax,
effectiveDate: bill.EffectiveDate,
expiryDate: bill.ExpiryDate,
useOrg: bill.UseOrgId,
limitCustomer: bill.LimitCustomer,
limitSalesMan: bill.LimitSalesMan,
customers: bill.SAL_APPLYCUSTOMER,
salesmen: bill.SAL_APPLYSALESMAN,
rawEntry: row
}));
}

这段代码只整理结构,不负责确定成交价;示例尚未作为完整价目表同步功能部署。关联对象的编码、名称和多语言值,需要根据实际返回继续解析。

保留rawEntry,能追查原始数量区间、行日期和单位。缓存主键也不应只使用物料编码,可以结合目标连接、价目表标识和可靠的明细标识设计。rowIndex只是本次数组位置,不适合作为跨版本的稳定明细身份。

七、读取字段存在,不等于保存参数相同

本文字段来自View返回。不能给所有字段随手加F前缀,就认为是Save或ExecuteBillQuery的字段标识。

查询字段、完整对象返回和保存Model是不同的结构。需要写入价目表或在查询接口选择明细字段时,应从实际账套确认元数据及报文定义。

本文确认的是读取结构,不提供未经验证的保存报文,也不声称外部程序已经完整复现了金蝶定价引擎。

八、联调时把价格选错的问题拆开

遇到价格不符合预期,可以按顺序核对:

  • 使用的是哪张价目表,当前状态是否允许使用。
  • 币别、含税口径和使用组织是否一致。
  • 客户、客户分组、销售员范围是否匹配。
  • 数量和计价单位是否落在对应规则中。
  • 表头与行级有效期是否同时满足要求。
  • 多条规则同时命中时,账套如何决定优先级。
  • 每一步都保留对应价目表和明细依据,不要只记录“最终单价8元”。金额对不上时,能看到价格从哪条规则来,才容易判断是缓存范围错、匹配规则错,还是业务口径没有确认。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 金蝶云星空销售价目表接口怎么查:客户范围、阶梯价和有效期字段
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!