納入先請求書の例の模擬体験
このセクションで示すサンプルアプリケーションには、Apex と組み合わされた従来の Salesforce 機能が含まれています。このアプリケーションでは、一般的なイディオムと共に、Apex の構文上および意味上の多くの機能が例示されます。
シナリオ
このサンプルアプリケーションでは、納入先請求書、または注文を新規作成し、品目を請求書に追加します。納入費用を含む注文金額合計は、請求書に追加または削除された品目に基づいて自動的に計算され、更新されます。
データおよびコードモデル
このサンプルアプリケーションでは、Item と Shipping_invoice の新しい 2 つのオブジェクトを使用します。
次のように想定します。
- Item A は shipping_invoice1 および shipping_invoice2 のいずれの注文にも含めることができません。2 人の顧客は同じ (物理的) 商品を取得できません。
- 消費税率は 9.25% です。
- 輸送料は 1 ポンドあたり 75 セントです。
- 注文が $100 を超えた場合、輸送料の割引が適用されます (輸送量は無料)。
Item カスタムオブジェクトの項目には、次のものがあります。
| 名前 | 型 | 説明 |
|---|---|---|
| Name | String | 品目の名前 |
| Price | Currency | 品目の価格 |
| Quantity | Number | 注文に含まれる品目数 |
| Weight | Number | 品目の重量。輸送費用の計算に使用します。 |
| Shipping_invoice | Master-Detail (shipping_invoice) | この品目が関連付けられた注文 |
Shipping_invoice カスタムオブジェクトの項目は次のとおりです。
| 名前 | 型 | 説明 |
|---|---|---|
| Name | String | 納入先請求書/注文の名前 |
| Subtotal | Currency | 小計 |
| GrandTotal | Currency | 消費税、輸送料を含む合計金額 |
| Shipping | Currency | 輸送料として請求する金額 (1 ポンドあたり $0.75 と想定) |
| ShippingDiscount | Currency | 小計金額が $100 に達した場合に 1 回のみ適用 |
| Tax | Currency | 消費税金額 (9.25% と想定) |
| TotalWeight | Number | すべての品目の総重量 |
このアプリケーションのすべての Apex がトリガに含まれます。このアプリケーションには、次のトリガがあります。
| オブジェクト | トリガ名 | 実行タイミング | 説明 |
|---|---|---|---|
| Item | Calculate | 挿入後、更新後、削除後 | 納入先請求書を更新し、合計および輸送料を計算します。 |
| Shipping_invoice | ShippingDiscount | 更新後 | 納入先請求書を更新し、送料割引があ��かどうかを計算します。 |
次に、ユーザアクションとトリガが実行されるタイミングの一般的な流れを示します。
ショッピングカートアプリケーションのユーザアクションおよびトリガの流れ
- ユーザが をクリックして納入先請求書の名前を付け、[保存] をクリックします。
- ユーザが をクリックし、情報を入力して [保存] をクリックします。
- Calculate トリガが実行されます。Calculate トリガの一部として、納入先請求書が更新されます。
- ShippingDiscount トリガが実行されます。
- 請求書の品目を追加、削除、変更できます。
納入先請求書のコード例にトリガおよびテストクラスが表示されます。このコードのコメントは、機能について説明しています。
納入先請求書アプリケーションのテスト
パッケージの一部としてアプリケーションを追加するには、単体テストでコードの 75% をカバーする必要があります。そのため、納入先請求書アプリケーションの一部は、トリガのテストに使用するクラスとなります。
テストクラスは、次のアクションが正常に行われたことを確認します。
- 品目の挿入
- 品目の更新
- 品目の削除
- 送料割引の適用
- 不正入力のネガティブテスト