新しい税エンジンの実装¶
このチュートリアルでは、 CommerceTaxEngine インターフェイスを実装して、新しい税エンジンを追加する方法を示します。
税エンジンは、取引が行われるときに税金の計算を実行します。 Liferay Commerceには、デフォルトで2つの税エンジン、 FixedCommerceTaxEngine (固定料金用)と ByAddressCommerceTaxEngine (住所別に税金を計算する用)が組み込まれています。
サンプルをデプロイする¶
このセクションでは、税エンジンをLiferay Commerceのインスタンスで実行する例を示します。
新しいLiferayインスタンスを実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.22-ga22
http://localhost:8080
でLiferayにサインインします。メールアドレスtest@liferay.comとパスワードtestを使用してください。プロンプトが表示されたら、パスワードをlearnに変更します。
次に、以下の手順を実行します。
Acme Commerce Tax Engine をダウンロードして解凍します。
curl https://learn.liferay.com/commerce/latest/en/developer-guide/sales/liferay-q4b9.zip -O
unzip 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以前のバージョンでは、 サイト管理 → Commerce → 設定 → Taxes → 税の計算に移動して、税エンジンを確認します。
これで、CommerceTaxEngine
を実装する新しい税エンジンを正常に構築およびデプロイできました。
次に、詳細をさらに詳しく見ていきましょう。
例の説明¶
このセクションでは、デプロイした例について確認します。 最初に、OSGi登録用のクラスに注釈を付けます。 次に、 CommerceTaxEngine
インターフェイスを確認します。 最後に、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);
これは、税エンジンの簡単な説明を返します。 言語キーで説明を取得する際のリファレンスについては、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
¶
モジュール内の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.
詳細は、 アプリケーションのローカライズ を参照してください。
追加情報¶
税計算のためのレート設定