通过Data Loader上传Price Book Entry时出现问题

时间:2013-12-23 09:04:00

标签: salesforce apex

当我尝试插入Price Book Entry时,我收到以下错误: “没有为此产品定义标准价格”

我在上传数据之前遵循以下内容: 上传标准Pricebook条目(所有产品标准价格簿,IsActive = true,UseStdPrice = false)

我不确定问题的原因。这个问题可能不太清楚,无法理解。如果您需要更多详细信息,请与我们联系。

2 个答案:

答案 0 :(得分:2)

这不是与编程相关的问题,我更多地将其称为管理或数据输入问题。也许这是问题引起关注的原因之一。你最好在salesforce.stackexchange.com

询问

首先 - 你确定你真的使用标准价格手册吗?标准价格手册将勾选复选框,并将成为给定组织中最早的复选框:

enter image description here

我有一种奇怪的感觉,你实际上是想上传到自定义价格手册。不要让这个名字欺骗你,它可能被称为“标准”,但如果它没有复选框......

来自help

  

标准价格手册是所有产品的主列表,每个产品都有   其相关的默认标准价格。标准价格手册   自动列出所有具有标准价格的活动产品。一个   组织只有一本标准价格手册。

     

定制价格手册是   一个专门的产品列表,可以有标准或自定义   (清单)价格。定制价格书籍是提供产品的理想选择   不同的细分市场。对于每个自定义价格   本书,您可以确定包含哪些产品,以及它们是否包含在内   以您的标准价格或更高或更低的价格提供。

因此,要“将某些产品上传到标准价格手册”,您必须创建新的PricebookEntry记录。自定义和标准价格手册的流程相同。我使用过Apex而不是Data Loader:

Pricebook2 pBook = [SELECT Id, Name FROM Pricebook2 WHERE IsStandard = true];

Id productId = '01t70000009GfMN'; // my freshly made product that doesn't have standard price (yet) and is not listed in any custom pricebook

PricebookEntry pe = new PricebookEntry(
    Pricebook2Id = pBook.Id,
    Product2Id = productId,
    UnitPrice = 1000,
    IsActive = true
);

insert pe;

工作就像一个魅力(请注意屏幕截图“谎言” - 它说相关的价格表列表有0个项目,即使我们刚插入一个。这是因为标准与自定义拆分):

enter image description here

只有在插入此标准价格手册条目后,您才可以继续插入自定义价格手册的条目。

您可能会在http://www.jeffdouglas.com/download/products-pricebooks.pdf找到一些更有用的信息,也可能会How do I avoid STANDARD_PRICE_NOT_DEFINED when unit-testing an OpportunityLineItem in Apex v24.0?(它与单元测试有关,但有些链接很有用)。

答案 1 :(得分:0)

从夏季14开始,您也可以使用

Id pricebookId = Test.getStandardPricebookId();

获取可在标准PriceBookEntries上使用的标准价格手册的ID。

有关详细信息,请参阅https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_test.htm#apex_System_Test_getStandardPricebookId