Lineを使って実現できる複雑な計算の例を紹介する記事の二回目です。前回の記事はこのリンク先にあります。今回は消費税の計算ではなくて値引やお店で買い物したときに貰えるおまけを計算する例をみていきます。CD対象3つ以上購入してくれればそれらの合計金額の10%を値引する場合レコード屋さんでみかける値引です。Lineで表すと次の図のようになります。特別値引対象にはspecial_discountというbase_contributionカテゴリーを付けています。入力されるAmountのquantityの合計を条件にして条件を満せば値引を表すAmountを作ります。特別値引対象3つ以上購入してくれれば500円を値引する場合このパターンでは割合ではなくて500円という固定の金額を値引します。次の図のようになります。前の例と同じようにquantityの合計を条件にしています。最初のパターンと似ていますがお買上品合計金額を10%値引くというところが違います。Lineが使う関数の中でgetGeneratedAmountQuantityを使ってbase_contributionがordered_itemのもののquantityの合計値を取得します。Lineの計算の中で他のカテゴリーのquantityの合計を参照できます。Lineを作らなくてもやりたいことができます。CD3枚かDVD1枚を買ってくれればポスター1枚プレゼントという場合このパターンでは消費税や値引のように金額が計算されるのではなくてポスターというモノを一つ無料であげるということを計算します。Lineでは金額だけでなくモノが発生するパターンを表現できます。Lineではresourceカテゴリーを使って発生するモノが何であるかを表します。消費税や値引の場合にはERP5ではそれらを物理的なモノではなくて概念的なものでサービスというデータの種類で表すのですが、今回の例ではポスターという物理的なモノを扱いました。CD3枚かDVD1枚以上お買い上げの場合という条件はgetGeneratedAmountQuantityをCDの場合とDVDの場合で一回づつ使って規定の量を越えている注文かどうかを判定できます。Lineで発生させるポスター1つは無料のプレゼントなのでpriceは0です。以上4つの例を図にしてみてきました。これらのパターンの具体的なプログラムのコードはユニットテストとしてERP5内に実装されています。使うとここで挙げた例以外にも給与や税金などの何段階も計算が必要になる処理を簡単に扱うことができます。読んでいただきありがとうございました。ERPNexediJIORenderJSOfficeJSNEOSlapOSWendelinRe6stnet沪ICP备2021021310号-7。