Documentation

新しい税エンジンの実装

このチュートリアルでは、 CommerceTaxEngine インターフェイスを実装して、新しい税エンジンを追加する方法を示します。

税エンジンは、取引が行われるときに税金の計算を実行します。 Liferay Commerceは、固定税率用の FixedCommerceTaxEngine 、および住所による税金計算用の ByAddressCommerceTaxEngine という2つのデフォルト税エンジンを提供します。

すぐに使える税エンジン

サンプルをデプロイする

このセクションでは、税エンジンをLiferay Commerceのインスタンスで実行する例を示します。

新しいLiferay インスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.29-ga29。

http://localhost:8080でLiferayへのサインインします。 メールアドレス test@liferay.com とパスワード test を使用してください。 プロンプトが表示されたら、パスワードを learn に変更します。

次に、以下の手順に従います。

  1. Acme Commerce Tax Engine をダウンロードし、解凍してください。

    curl https://learn.liferay.com/commerce/latest/ja/developer-guide/sales/liferay-q4b9.zip -O
    
    liferay-q4b9.zipを解凍してください。
    
  2. サンプルをビルドしてデプロイします。

    ./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
    

    注釈

    このコマンドは、デプロイされたjarをDockerコンテナの/opt/liferay/osgi/modulesにコピーするのと同じです。

  3. Dockerコンテナコンソールでデプロイを確認します。

    STARTED com.acme.q4b9.impl_1.0.0
    
  4. サンプルの税エンジンが追加されたことを確認します。 ブラウザでhttps://localhost:8080を開きます。 次に、アプリケーションメニュー(Applications Menu)をクリックし、 [コマース] → [Channels] に移動します。 新しいチャネルを編集します。 新しい税エンジン([Q4B9 Commerce Tax Engine])がリストに表示されます。

注釈

Commerce 2.1以前のバージョンでは、 [サイト管理] → [コマース] → [設定] → [税金] → [税の計算]に移動して、税エンジンを確認します。

新しい税エンジン

これで、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.

詳細は、 アプリケーションのローカライズ を参照してください。

まとめ

CommerceTaxEngineインターフェイスを実装するための基本を理解し、Liferay Commerceに新しい税エンジンを追加しました。