新しい税エンジンの実装
このチュートリアルでは、 CommerceTaxEngine インターフェイスを実装して新しい税金エンジンを追加する方法を説明します。
税エンジンは、取引が行われるときに税金の計算を実行します。 Liferay Commerce には、固定税率用の FixedCommerceTaxEngine と、住所による税金計算用の ByAddressCommerceTaxEngine という 2 つのデフォルトの税金エンジンが用意されています。

概要
サンプルをデプロイする
このセクションでは、Liferay Commerce のインスタンスでサンプルの税務エンジンを起動して実行します。
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132
http://localhost:8080でLiferayにサインインします。 メールアドレス test@liferay.com とパスワード testを使用してください。 プロンプトが表示されたら、パスワードを learnに変更します。
次に、以下の手順に従います。
-
Acme Commerce Tax Engineをダウンロードして解凍します。
curl https://resources.learn.liferay.com/commerce/latest/en/developer-guide/sales/liferay-q4b9.zip -Ounzip liferay-q4b9.zip -
サンプルをビルドしてデプロイします。
./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)注このコマンドは、デプロイされたjarをDockerコンテナ上の
/opt/liferay/osgi/modulesにコピーするのと同じです。 -
Dockerコンテナコンソールでデプロイを確認します。
STARTED com.acme.q4b9.impl_1.0.0 -
サンプルの税エンジンが追加されたことを確認します。 ブラウザで
https://localhost:8080を開きます。 次に、アプリケーション メニュー (
) をクリックし、 コマース → チャネルに移動します。 新しいチャネルを編集します。 新しい税金エンジン (「Q4B9 Commerce Tax Engine」) がリストに表示されます。
Commerce 2.1 以前では、税金エンジンを見つけるには、 サイト管理 → コマース → 設定 → 税金 → 税金計算の順に移動します。

これで、CommerceTaxEngineを実装する新しい税エンジンを正常にビルトおよびデプロイできました。
次に、詳細をさらに詳しく見ていきましょう。
サンプルの説明
このセクションでは、デプロイした例を確認します。 まず、OSGi 登録用のクラスにアノテーションを付けます。 次に、 CommerceTaxEngine インターフェースを確認します。 3 番目に、 CommerceTaxEngineの実装を完了します。
OSGi登録用のクラスに注釈を付ける
@Component(
property = "commerce.tax.engine.key=q4b9", service = CommerceTaxEngine.class
)
Liferay Commerce が新しいエンジンを 税務エンジン レジストリ内の他のエンジンと区別できるように、税務エンジンに固有のキーを提供することが重要です。 すでに使用されているキーを再利用すると、既存の関連付けられている税金エンジンが上書きされます。
CommerceTaxEngineインターフェイスを確認する
次のメソッドを実装します。
public CommerceTaxValue getCommerceTaxValue(
CommerceTaxCalculateRequest commerceTaxCalculateRequest)
throws CommerceTaxEngineException;
このメソッドは、税金エンジンのビジネス ロジックが実装される場所です。 詳細については、 CommerceTaxValue を参照してください。
public String getDescription(Locale locale);
これは、税エンジンの簡単な説明を返します。 言語キーを使用して説明を取得する際のリファレンスについては、 liferay-q4b9.zip/q4b9-impl/src/main/java/com/acme/q4b9/internal/commerce/tax の Q4B9CommerceTaxEngine.java クラスを参照してください。
public String getName(Locale locale);
これは、税エンジンの名前を返します。 このメソッドは、getDescriptionメソッドと同様に動作します。
税エンジンを完成させる
税エンジンは、税の計算を実行するロジックで構成されています。 以下を行います。
ビジネスロジックをgetCommerceTaxValueに追加する
@Override
public CommerceTaxValue getCommerceTaxValue(
CommerceTaxCalculateRequest commerceTaxCalculateRequest)
throws CommerceTaxEngineException {
BigDecimal flatTaxValue = _ONE_POINT_FIVE_ZERO;
if (commerceTaxCalculateRequest.isPercentage()) {
flatTaxValue = _ONE_POINT_FIVE_ZERO.divide(new BigDecimal(100.0));
flatTaxValue = flatTaxValue.multiply(
commerceTaxCalculateRequest.getPrice());
}
return new CommerceTaxValue(
"q4b9", "q4b9-commerce-tax-engine", flatTaxValue);
}
private static final BigDecimal _ONE_POINT_FIVE_ZERO = new BigDecimal(
"1.50");
CommerceTaxCalculateRequestパラメータには、計算に必要な情報が含まれています。 この例では、CommerceTaxCalculateRequestからの価格と、レートをパーセンテージとして適用するかどうかを示す値を使用します。 CommerceTaxCalculateRequest で使用できるその他のメソッドについてはCommerceTaxCalculateRequest.javaを参照してください。
言語キーをLanguage.propertiesに追加する
モジュール内の liferay-q4b9.zip/q4b9-impl/src/main/resources/content にある Language.properties ファイルに言語キーとその値を追加します。
q4b9-commerce-tax-engine=Q4B9 Commerce Tax Engine
this-tax-engine-serves-a-fixed-x-percent-flat-tax-rate=This tax engine serves a fixed {0} percent flat tax rate.
詳細については、「 アプリケーションのローカライズ 」を参照してください。
さいごに
CommerceTaxEngineインターフェイスを実装するための基本を理解し、Liferay Commerceに新しい税エンジンを追加しました。