Pricebook2
サポートされているコール
create()、delete()、describeLayout()、describeSObjects()、getDeleted()、getUpdated()、query()、retrieve()、undelete()、update()、upsert()
項目
| 項目 | 詳細 |
|---|---|
| Description |
|
| IsActive |
|
| IsDeleted |
|
| IsStandard |
|
| Name |
|
使用方法
価格表は組織で販売している商品のリスト。
- 各組織には、組織が販売する各商品または各サービスの標準リスト価格または一般的なリスト価格を定義する標準価格表が 1 つずつあります。
- 組織は、ディスカウントの価格表、さまざまなチャネルやマーケット向けの価格表、特定の取引先や商談を対象とした価格表など、特別な目的で使用できるカスタム価格表を複数所有することができます。クライアントアプリケーションは、カスタム価格表を作成、削除、および更新できますが、標準価格表では更新のみを実行できます。
- 一部の組織では、標準価格表だけで十分ですが、より詳細な価格表を設定する必要がある場合は、標準価格表を参照してカスタム価格表のリスト価格を設定することができます。
このオブジェクトを使用して、組織で設定されている標準価格表およびカスタム価格表についてクエリできます。このオブジェクトの一般的な使用方法としては、クライアントアプリケーションで、API を介して PricebookEntry レコードを設定する場合に使用する有効な Pricebook2 オブジェクト ID を取得する、といった例があります。
クライアントアプリケーションは、PricebookEntry オブジェクトで次のタスクを実行できます。
- クエリ
- 標準価格表またはカスタム価格表の作成
- 更新
- 削除
- レコードの作成または更新時の IsActive 項目の変更
PriceBook2、Product2、および PricebookEntry の関係
API では次のようになります。
- 価格表は Pricebook2 オブジェクトによって表されます (Pricebook オブジェクトは今後使用できません)。
- 商品は Product2 オブジェクトによって表されます (Product オブジェクトはバージョン 8.0 では使用できません)。
- 各価格表には、価格表が関連付けられている商品を指定する、0 またはそれ以上のエントリが指定されています (PricebookEntry レコードで表します)。価格表エントリは、特定の通貨で商品を販売する価格を定義します。
これらのオブジェクトは、商品機能を有効化した組織にのみ定義されます。組織の商品機能が有効化されていない場合、Pricebook2 オブジェクトは describeGlobal() コールに表示されず、また API を介してアクセスすることはできません。
品目は価格表の PricebookEntry を参照する間に Pricebook2 を削除すると、品目に影響はありませんが、Pricebook2 はアーカイブされ、API から使用することはできなくなります。
Pricebook2 とその他のオブジェクトのリレーションを示すダイアグラムについては、Product and Schedule Objects を参照してください。
価格表の設定
API を使用した価格表の設定プロセスは、通常次のようになります。
- まず、組織の商品データを Product2 オブジェクトに読み込みます (追加する各商品の Product2 レコードを作成します)。
- 各 Product2 オブジェクトについて、Product2 オブジェクトを標準の Pricebook2 にリンクする PricebookEntry を作成します。商品の標準価格を指定された通貨で定義してから、カスタム価格表の商品の価格を同じ通貨で定義する必要があります (マルチ通貨の使用が有効な場合)。
- カスタムの Pricebook2 を作成します。
- Pricebook2 オブジェクトをクエリして、ID を取得します。
- それぞれの Pricebook2 ごとに、追加するすべての Product2 について PricebookEntry を作成し、必要に応じてそれぞれの PricebookEntry に一意のプロパティ (UnitPrice や CurrencyIsoCode など) を指定します。
コードサンプル —Java
1swfobject.registerObject("clippy.codeblock-0", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public void pricebookSample() {
18 try {
19 //Create a custom pricebook
20 Pricebook2 pb = new Pricebook2();
21 pb.setName("Custom Pricebok");
22 pb.setIsActive(true);
23 SaveResult[] saveResults = connection.create(new SObject[]{pb});
24 pb.setId(saveResults[0].getId());
25
26 // Create a new product
27 Product2 product = new Product2();
28 product.setIsActive(true);
29 product.setName("Product");
30 saveResults = connection.create(new SObject[]{product});
31 product.setId(saveResults[0].getId());
32
33 // Add product to standard pricebook
34 QueryResult result = connection.query(
35 "select Id from Pricebook2 where isStandard=true"
36 );
37 SObject[] records = result.getRecords();
38 String stdPbId = records[0].getId();
39
40 // Create a pricebook entry for standard pricebook
41 PricebookEntry pbe = new PricebookEntry();
42 pbe.setPricebook2Id(stdPbId);
43 pbe.setProduct2Id(product.getId());
44 pbe.setIsActive(true);
45 pbe.setUnitPrice(100.0);
46 saveResults = connection.create(new SObject[]{pbe});
47
48 // Create a pricebook entry for custom pricebook
49 pbe = new PricebookEntry();
50 pbe.setPricebook2Id(pb.getId());
51 pbe.setProduct2Id(product.getId());
52 pbe.setIsActive(true);
53 pbe.setUnitPrice(100.0);
54 saveResults = connection.create(new SObject[]{pbe});
55 } catch (ConnectionException ce) {
56 ce.printStackTrace();
57 }
58}
59