コンテンツにスキップ

iDempiere 販売手数料及びロイヤリティー計算の使い方|販売管理 操作マニュアル・技術仕様

📖 販売管理の全体像: 販売管理の全体図 も合わせてご覧ください。

販売手数料及びロイヤリティー計算は、営業担当者や代理店へ支払う手数料の 計算ルール を定義するウィンドウです。「誰に」「どの取引を対象に」「どの計算式で」「どの頻度で」支払うかをここで決め、「手数料作成」ボタンで実際の計算を実行します。

📌 ポイント: 計算結果はこの画面には残りません。「手数料作成」を実行すると販売手数料及びロイヤリティー計算結果C_CommissionRun)が生成され、金額の確認と仕入請求伝票の作成はそちらで行います。

販売手数料の計算ルールでできること

Section titled “販売手数料の計算ルールでできること”
  • 手数料の受取先(取引先/販売代理)と支払通貨の指定
  • 計算ベースの選択(受注・売上請求・入金のいずれを対象にするか)
  • 計算頻度の指定(週次・月次・四半期・年次)
  • 複数の計算行(手数料詳細)による段階的・多条件の手数料設計
  • 対象取引の絞り込み(組織・取引先・取引先グループ・品目・品目カテゴリ・販売地域・支払方法)
  • 金額と数量の両方を使った計算式(乗数・控除・マイナス抑止)
  • 他の手数料ルールからの計算行の一括コピー
  • 手数料計算の実行と、直近実行日の記録

販売手数料及びロイヤリティー計算は 2 タブ構成です。

タブ名テーブル項目数役割
手数料C_Commission13項目受取先・通貨・計算ベース・頻度・実行ボタン
手数料詳細C_CommissionLine19項目対象取引の絞り込み条件と計算式
graph TD
    subgraph "販売手数料及びロイヤリティー計算(Window ID: 207)"
        T1["💰 手数料<br/>C_Commission<br/>13項目"]
        T2["&nbsp;&nbsp;└ 手数料詳細<br/>&nbsp;&nbsp;&nbsp;&nbsp;C_CommissionLine<br/>&nbsp;&nbsp;&nbsp;&nbsp;19項目"]
    end
    T1 --> T2

販売手数料及びロイヤリティー計算(Window ID: 207) 手数料 C_Commission 13項目   └ 手数料詳細     C_CommissionLine     19項目

💡 ヒント: 1 つの取引に対して複数の手数料を支払う設計(伝票入力者・品目カテゴリ責任者・取引先グループ担当者など)が可能です。受取先ごとに手数料ルールを分けて作成してください。

graph TD
    A["🚀 メニューから開く<br/>販売管理 > 販売管理設定 > 販売手数料及びロイヤリティー計算"] --> B["➕ 新規で手数料ルールを作成<br/>(名称・受取先・通貨)"]
    B --> C["💵 料金 または 品目 を必ず指定<br/>(請求伝票の明細に使う)"]
    C --> D["⚙️ 計算ベースと頻度タイプを選択"]
    D --> E["📋 手数料詳細タブで計算行を登録"]
    E --> F["🔍 絞り込み条件を設定<br/>(取引先・品目・地域など)"]
    F --> G["🧮 乗数・控除を設定<br/>(金額乗数・掛算数量)"]
    G --> H["💾 保存"]
    H --> I["▶️ 手数料作成ボタンを実行<br/>(開始日付を指定)"]
    I --> J["📊 計算結果画面で金額を確認<br/>C_CommissionRun"]
    J --> K["🧾 請求書作成で仕入請求伝票を生成"]

メニューから開く 販売管理 > 販売管理設定 > 販売手数料及びロイヤリティー計算 新規で手数料ルールを作成 (名称・受取先・通貨) 料金 または 品目 を必ず指定 (請求伝票の明細に使う) 計算ベースと頻度タイプを選択 手数料詳細タブで計算行を登録 絞り込み条件を設定 (取引先・品目・地域など) 乗数・控除を設定 (金額乗数・掛算数量) 保存 ▶ 手数料作成ボタンを実行 (開始日付を指定) 計算結果画面で金額を確認 C_CommissionRun 請求書作成で仕入請求伝票を生成

アクセス方法(メニューパス)

Section titled “アクセス方法(メニューパス)”

メニューから「販売管理 > 販売管理設定 > 販売手数料及びロイヤリティー計算」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 必須項目を入力:
    • 名称: 手数料ルール名(例: 代理店A 月次販売手数料
    • 取引先/販売代理: 手数料を受け取る取引先
    • 通貨: 手数料の計算・支払通貨
    • 計算ベース: 受注/売上請求/入金 のいずれか
    • 頻度タイプ: 週次/月次/四半期/年次
  3. 料金 または 品目 のいずれかを必ず指定
  4. 手数料詳細作成」(List Details)で明細レベルまで記録するかを選択
  5. 保存」をクリック

⚠️ 注意: 「料金」と「品目」の両方が未入力だと保存できません(MCommission.beforeSave()ChargeOrProductMandatory エラーを返します)。ここで指定した料金/品目が、後工程で作成される仕入請求伝票の明細行になります。

  1. 手数料詳細」タブに移動
  2. 新規」で計算行を追加(明細番号は 10 刻みで自動採番)
  3. 絞り込み条件を必要に応じて設定:
    • 取引先グループ / 取引先: 対象顧客の限定
    • 品目カテゴリ / 品目: 対象商品の限定
    • 販売地域: 取引先住所の地域による限定
    • 組織: 対象組織の限定
    • 支払方法: 支払方法による限定
    • 手数料のみの注文書/請求書: 受取先が社内担当者として設定されている伝票のみを対象にする
  4. 計算式のパラメータを設定:
    • 控除金額 / 金額乗数
    • 控除数量 / 掛算数量
    • 正数のみ: マイナスの手数料を発生させない場合にチェック
  5. 保存」をクリック

💡 ヒント: 絞り込み条件を何も入力しなければ、対象期間のすべての取引が計算対象になります。まず条件なしで金額感を確認し、そこから条件を絞り込んでいくと設計しやすくなります。

各計算行の手数料額は次の式で求められます。

手数料額 = (換算金額 − 控除金額) × 金額乗数
+ (実績数量 − 控除数量) × 掛算数量
  • 換算金額ConvertedAmt): 対象取引の金額を手数料通貨へ換算した合計
  • 正数のみIsPositiveOnly)にチェックすると、括弧内がマイナスになった場合は 0 として扱われます
手数料の型金額乗数掛算数量控除金額設定例
売上の 3%0.0300一般的な販売手数料
1個あたり100円01000数量ベースのロイヤリティ
100万円超部分の 5%0.0501000000控除金額でしきい値を設定
売上の 2% + 1個50円0.02500金額・数量の併用
  1. 手数料タブで「詳細コピー」ボタンをクリック
  2. コピー元の手数料ルールを選択
  3. 選択元の全計算行が現在のルールへ複製されます(copyLinesFrom()
  1. 手数料タブで「手数料作成」ボタンをクリック
  2. 開始日付(StartDate)を指定して実行
  3. 頻度タイプに応じて対象期間が自動決定され、計算結果が生成されます
  4. 実行後、「最新実行日」に開始日付が記録されます
項目名カラム必須説明
名称Name必須文字列(60)手数料ルール名(識別子)
説明Description-文字列(255)補足説明
取引先/販売代理C_BPartner_ID必須選択手数料を受け取る取引先
通貨C_Currency_ID必須選択手数料の計算・支払通貨
料金C_Charge_ID条件付必須選択請求伝票の明細に使う料金
品目M_Product_ID条件付必須選択請求伝票の明細に使う品目
計算ベースDocBasisType必須リストI=売上請求/O=受注/R=入金(既定 I
頻度タイプFrequencyType必須リストW=週次/M=月次/Q=四半期/Y=年次(既定 M
手数料詳細作成ListDetails必須チェック明細単位で内訳を残すか
詳細コピーCreateFrom-ボタン他ルールから計算行をコピー
手数料作成Processing-ボタン手数料計算の実行
最新実行日DateLastRun-日時直近実行の開始日付
項目名カラム必須説明
明細番号Line必須整数10 刻みで自動採番
手数料のみの注文書/請求書CommissionOrders必須チェック受取先が担当者の伝票に限定
組織Org_ID-選択対象組織の限定
取引先グループC_BP_Group_ID-選択対象顧客グループの限定
取引先C_BPartner_ID-選択対象顧客の限定
品目カテゴリM_Product_Category_ID-選択対象商品カテゴリの限定
品目M_Product_ID-選択対象商品の限定
販売地域C_SalesRegion_ID-選択取引先住所の地域による限定
支払方法PaymentRule-リスト支払方法による限定
控除数量QtySubtract必須数値数量から差し引く値
掛算数量QtyMultiplier必須数値数量に掛ける単価
控除金額AmtSubtract必須金額金額から差し引く値
金額乗数AmtMultiplier必須数値金額に掛ける率
正数のみIsPositiveOnly必須チェックマイナス手数料を発生させない

全項目一覧はリファレンス参照

graph TD
    A["受注伝票 / 売上請求伝票 / 入金"] --> B["手数料ルール<br/>C_Commission"]
    B --> C["手数料詳細(計算行)<br/>C_CommissionLine"]
    C --> D["手数料作成プロセス<br/>CommissionCalc"]
    D --> E["手数料計算結果<br/>C_CommissionRun"]
    E --> F["手数料金額<br/>C_CommissionAmt"]
    F --> G["手数料詳細内訳<br/>C_CommissionDetail"]
    E --> H["仕入請求伝票<br/>C_Invoice(APInvoice)"]
    H --> I["支払処理"]

受注伝票 / 売上請求伝票 / 入金 手数料ルール C_Commission 手数料詳細(計算行) C_CommissionLine 手数料作成プロセス CommissionCalc 手数料計算結果 C_CommissionRun 手数料金額 C_CommissionAmt 手数料詳細内訳 C_CommissionDetail 仕入請求伝票 C_Invoice(APInvoice) 支払処理

Q. 保存時に「料金または品目が必須」と出ます。

Section titled “Q. 保存時に「料金または品目が必須」と出ます。”

MCommission.beforeSave()C_Charge_IDM_Product_ID の両方が未設定のレコードを拒否しているためです。手数料の支払は仕入請求伝票として発行され、その明細行に料金または品目が必要になります。手数料専用の料金(Charge)を 1 つ作っておくのが一般的です。

Q. 計算ベース(受注・売上請求・入金)で何が変わりますか?

Section titled “Q. 計算ベース(受注・売上請求・入金)で何が変わりますか?”

対象取引と、取引を拾う伝票状態が変わります。

計算ベース対象対象となる伝票状態
受注(O)受注伝票の明細完了(CO)・締切(CL)
売上請求(I)売上請求伝票の明細完了(CO)・締切(CL)・記帳取消済(RE)
入金(R)入金伝票完了(CO)・締切(CL)・記帳取消済(RE)

入金ベースは「回収できた分だけ手数料を払う」設計に、受注ベースは「受注時点で早めに支払う」設計に向きます。

Q. 対象期間はどう決まりますか?

Section titled “Q. 対象期間はどう決まりますか?”

「手数料作成」実行時に指定した 開始日付 と、手数料ルールの 頻度タイプ から自動計算されます(CommissionCalc.setStartEndDate())。月次なら開始日付が属する月の初日〜末日、四半期・年次・週次も同様にその期間の始点と終点が求められます。開始日付を省略すると実行日が使われます。

Q. 同じ取引に複数の手数料を支払えますか?

Section titled “Q. 同じ取引に複数の手数料を支払えますか?”

支払えます。手数料ルールは受取先ごとに作成するため、同一の受注・請求に対して「伝票入力者への手数料」「品目カテゴリ責任者への手数料」「取引先グループ担当者への手数料」を別々のルールとして並行運用できます。

Q. 「手数料詳細作成(ListDetails)」のチェックは何に影響しますか?

Section titled “Q. 「手数料詳細作成(ListDetails)」のチェックは何に影響しますか?”

計算 SQL の粒度が変わります。チェックありなら伝票明細 1 行ごとに C_CommissionDetail レコードが作られ、どの取引が手数料の対象になったかを追跡できます。チェックなしの場合は通貨単位で集約(GROUP BY C_Currency_ID)され、内訳が残りません。監査性を重視するならチェックを推奨します。

Q. マイナスの手数料が出てしまいます。

Section titled “Q. マイナスの手数料が出てしまいます。”

返品や貸方メモが対象期間に含まれると、金額がマイナスになることがあります。「正数のみ」(IsPositiveOnly)にチェックすると、(換算金額 − 控除金額)および(実績数量 − 控除数量)がマイナスになった場合に 0 として扱われ、マイナスの手数料が発生しなくなります。

🛠 技術仕様(開発者向け)

販売手数料及びロイヤリティー計算はマスタ/ルール定義型のウィンドウ(AD_Window_ID: 207)で、ヘッダーが C_Commission、計算行が C_CommissionLine です。いずれも IsDeleteable=Y / IsHighVolume=N / AccessLevel=3(クライアント+組織レベル)。ビジネスロジックは MCommission(163行)と MCommissionLine(98行)が担い、実際の計算は独立したプロセスクラス CommissionCalc(454行)が実行します。伝票(Document)型ではないため DocAction / DocStatus は持たず、処理は Processing ボタンによるプロセス起動のみです。

classDiagram
    class MCommission {
        +getLines() MCommissionLine[]
        +copyLinesFrom(MCommission) int
        +setDateLastRun(Timestamp) void
        #beforeSave(boolean) boolean
    }
    class MCommissionLine {
        <<model>>
    }
    class X_C_Commission {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class CommissionCalc {
        <<SvrProcess>>
        #doIt() String
        #setStartEndDate() void
        #getCommissionCalculationSQL(MCommissionLine) String
    }
    MCommission --|> X_C_Commission
    X_C_Commission --|> PO
    MCommission --> MCommissionLine : has many
    CommissionCalc --> MCommission : reads rule
    CommissionCalc --> MCommissionRun : creates
    CommissionCalc --> MCommissionAmt : creates
    CommissionCalc --> MCommissionDetail : creates

+getLines() MCommissionLine[] +copyLinesFrom(MCommission) int +setDateLastRun(Timestamp) void #beforeSave(boolean) boolean <> <> <> <> #doIt() String #setStartEndDate() void #getCommissionCalculationSQL(MCommissionLine) String > X_C_Commission X_C_Commission --

パッケージ: org.compiere.model / org.compiere.process ソースファイル:

  • org.adempiere.base/src/org/compiere/model/MCommission.java
  • org.adempiere.base/src/org/compiere/model/MCommissionLine.java
  • org.adempiere.base.process/src/org/compiere/process/CommissionCalc.java
  • org.adempiere.base.process/src/org/compiere/process/CommissionCopy.java(79行)
カラム名必須説明備考
C_Commission_IDIDPK手数料ID主キー
C_Commission_UUUUIDNUUID
AD_Client_IDTable DirectYクライアントdefault @#AD_Client_ID@
AD_Org_IDTable DirectY組織default @#AD_Org_ID@
NameString(60)Y名称識別子
DescriptionString(255)N説明
C_BPartner_IDSearchY取引先/販売代理手数料の受取先
C_Currency_IDTable DirectY通貨手数料通貨
C_Charge_IDTable DirectN料金beforeSave で品目とのいずれか必須
M_Product_IDSearchN品目beforeSave で料金とのいずれか必須
DocBasisTypeList(1)Y計算ベースdefault I(I/O/R)
FrequencyTypeList(1)Y頻度タイプdefault M(W/M/Q/Y)
ListDetailsYes-NoY手数料詳細作成明細粒度で内訳を保存
CreateFromButtonN詳細コピーCommissionCopy を起動
ProcessingButtonN手数料作成CommissionCalc を起動
DateLastRunDate+TimeN最新実行日null では上書きしない

C_CommissionLine(手数料詳細=計算行)

Section titled “C_CommissionLine(手数料詳細=計算行)”
カラム名必須説明備考
C_CommissionLine_IDIDPK計算行ID主キー
C_Commission_IDTable DirectY手数料FK親(IsParent=Y)
LineIntegerY明細番号default はSQL採番(MAX+10)
CommissionOrdersYes-NoY手数料のみの注文書/請求書SalesRep 条件を付加
Org_IDTableN組織絞り込み条件
C_BP_Group_IDTable DirectN取引先グループ絞り込み条件
C_BPartner_IDSearchN取引先絞り込み条件
M_Product_Category_IDTable DirectN品目カテゴリ絞り込み条件
M_Product_IDSearchN品目絞り込み条件
C_SalesRegion_IDTable DirectN販売地域取引先住所経由で判定
PaymentRuleList(1)N支払方法絞り込み条件
QtySubtractNumberY控除数量
QtyMultiplierNumberY掛算数量
AmtSubtractAmountY控除金額
AmtMultiplierNumberY金額乗数
IsPositiveOnlyYes-NoY正数のみマイナス値を 0 に丸める
erDiagram
    C_Commission ||--o{ C_CommissionLine : "calculation rules"
    C_Commission ||--o{ C_CommissionRun : "runs"
    C_CommissionLine ||--o{ C_CommissionAmt : "amount per line"
    C_CommissionRun ||--o{ C_CommissionAmt : "amounts"
    C_CommissionAmt ||--o{ C_CommissionDetail : "details"
    C_Commission }o--|| C_BPartner : "paid to"
    C_Commission }o--o| C_Charge : "invoice charge"
    C_Commission }o--o| M_Product : "invoice product"
    C_CommissionLine }o--o| C_SalesRegion : "region filter"
    C_CommissionRun ||--o| C_Invoice : "AP invoice"

calculation rules amount per line paid to invoice charge invoice product region filter AP invoice

保存前の検証は 1 点のみです。

if (getC_Charge_ID() == 0 && getM_Product_ID() == 0) {
log.saveError("FillMandatory", Msg.translate(getCtx(), "ChargeOrProductMandatory"));
return false;
}

料金・品目のいずれも未設定の場合、ChargeOrProductMandatory メッセージで保存が失敗します。これは後工程の CommissionAPInvoice が請求明細を作れなくなるのを防ぐためのガードです。

IsActive='Y' AND C_Commission_ID=? の条件で C_CommissionLineLine, C_CommissionLine_ID 順に取得します。無効化された計算行は計算対象外になります。

コピー元ルールの全計算行を PO.copyValues() で複製し、C_Commission_ID を自身に付け替えて保存します。保存に失敗した行があるとログに Line difference が出力されます。「詳細コピー」ボタン(CommissionCopy)から呼ばれます。

null が渡された場合は super を呼ばず、既存の最新実行日を保持します。計算プロセスが失敗した際に実行履歴が消えないようにするための実装です。

CommissionCalc(手数料作成プロセス)の処理フロー

Section titled “CommissionCalc(手数料作成プロセス)の処理フロー”
flowchart TD
    A["doIt 開始"] --> B["setStartEndDate<br/>頻度タイプから期間を確定"]
    B --> C["MCommissionRun を新規作成<br/>StartDate と説明をセット"]
    C --> D["計算行ごとにループ"]
    D --> E{"計算ベース"}
    E -->|R 入金| F["getPaymentCommissionSQL<br/>DocStatus IN CL/CO/RE"]
    E -->|O 受注| G["getOrderCommissionSQL<br/>DocStatus IN CL/CO"]
    E -->|I 売上請求| H["getInvoiceCommissionSQL<br/>DocStatus IN CL/CO/RE"]
    F --> I["getCommissionLineWhereClause<br/>絞り込み条件を付加"]
    G --> I
    H --> I
    I --> J{"手数料詳細作成?"}
    J -->|OFF| K["GROUP BY C_Currency_ID で集約"]
    J -->|ON| L["明細1行ごとに取得"]
    K --> M["MCommissionAmt を作成<br/>createDetail で内訳を登録"]
    L --> M
    M --> N["calculateCommission で金額算出"]
    N --> O["m_com.setDateLastRun<br/>最新実行日を記録"]

doIt 開始 setStartEndDate 頻度タイプから期間を確定 MCommissionRun を新規作成 StartDate と説明をセット 計算行ごとにループ 計算ベース getPaymentCommissionSQL DocStatus IN CL/CO/RE getOrderCommissionSQL DocStatus IN CL/CO getInvoiceCommissionSQL DocStatus IN CL/CO/RE getCommissionLineWhereClause 絞り込み条件を付加 手数料詳細作成? GROUP BY C_Currency_ID で集約 明細1行ごとに取得 MCommissionAmt を作成 createDetail で内訳を登録 calculateCommission で金額算出 m_com.setDateLastRun 最新実行日を記録 R 入金 O 受注 I 売上請求

対象期間の算出(setStartEndDate)

Section titled “対象期間の算出(setStartEndDate)”

指定された開始日付(未指定なら実行時刻)を起点に、頻度タイプごとに期間を確定します。

頻度タイプコード期間の決まり方
週次W開始日付が属する週の始点〜終点
月次M開始日付が属する月の初日〜末日(既定値)
四半期Q開始日付が属する四半期の初日〜末日
年次Y開始日付が属する年の初日〜末日

絞り込み条件の生成(getCommissionLineWhereClause)

Section titled “絞り込み条件の生成(getCommissionLineWhereClause)”

計算行に設定された値のみが WHERE 句に追加されます。未設定の項目は条件になりません。

計算行の項目生成される条件(概略)
手数料のみの注文書/請求書h.SalesRep_ID を受取取引先に紐づくユーザーに限定
組織(Org_ID)h.AD_Org_ID = <値>
取引先h.C_BPartner_ID = <値>
取引先グループh.C_BPartner_ID IN (グループ所属の取引先)
販売地域h.C_BPartner_Location_ID IN (当該地域の住所)
品目l.M_Product_ID = <値>
品目カテゴリl.M_Product_ID IN (カテゴリ所属の品目)
支払方法h.PaymentRule = '<値>'

📌 ポイント: 販売地域の絞り込みは伝票ヘッダーの地域項目ではなく 取引先住所(C_BPartner_Location を経由して判定されます。取引先住所に販売地域が未設定だと、地域条件付きの計算行は 1 件も拾えません。

手数料額の計算(MCommissionAmt.calculateCommission)

Section titled “手数料額の計算(MCommissionAmt.calculateCommission)”

内訳(C_CommissionDetail)の ConvertedAmtActualQty を合計したうえで、計算行のパラメータを適用します。

BigDecimal qty = getActualQty().subtract(cl.getQtySubtract());
if (cl.isPositiveOnly() && qty.signum() < 0) qty = Env.ZERO;
qty = qty.multiply(cl.getQtyMultiplier());
BigDecimal amt = getConvertedAmt().subtract(cl.getAmtSubtract());
if (cl.isPositiveOnly() && amt.signum() < 0) amt = Env.ZERO;
amt = amt.multiply(cl.getAmtMultiplier());
setCommissionAmt(amt.add(qty));

拡張ポイント(カスタマイズ箇所)

Section titled “拡張ポイント(カスタマイズ箇所)”
public class CustomCommissionValidator implements ModelValidator {
@Override
public int modelChange(PO po, int type) throws Exception {
if (po instanceof MCommissionLine) {
MCommissionLine line = (MCommissionLine) po;
if (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE) {
// 例: 手数料率の上限を 20% に制限
if (line.getAmtMultiplier() != null
&& line.getAmtMultiplier().doubleValue() > 0.20) {
throw new AdempiereException("金額乗数は 0.20(20%)以下にしてください");
}
}
}
return null;
}
@Override
public String docValidate(PO po, int timing) {
return null; // C_Commission は Document 型ではないため不要
}
}

計算ロジックそのものの差し替え

Section titled “計算ロジックそのものの差し替え”

CommissionCalcSvrProcess の派生クラスで、setStartEndDate() / getCommissionCalculationSQL() などが protected として公開されています。独自の期間区切り(決算期基準の月次など)や独自の対象取引 SQL が必要な場合は、CommissionCalc を継承したクラスを作り、AD_Process のクラス名を差し替えるのが最小改変の実装になります。コア側のソースを直接編集する必要はありません。

C_Commission / C_CommissionLine の各カラムには標準の Callout が設定されていません(gw_column.tsv の callout 列がすべて空)。入力時の連動(例: 品目カテゴリを選ぶと既定の乗数をセット)を追加する場合は IColumnCallout を OSGi サービスとして登録します。

プロセス名実装クラス説明
手数料作成(Generate Commission)CommissionCalc(454行)対象期間の取引を集計し計算結果を生成
詳細コピー(Copy Lines)CommissionCopy(79行)他の手数料ルールから計算行を複製
請求書作成(Create Invoice)CommissionAPInvoice(114行)計算結果から仕入請求伝票を生成(計算結果画面のボタン)
手数料計算明細レポートレポート(RV_CommissionRunDetail計算結果を受注/請求の内訳付きで出力

販売手数料の計算式は業種ごとの差が大きく、標準の「乗数と控除」だけでは表現しきれない累進レートや複合条件が必要になることがあります。CommissionCalc の継承による計算ロジック拡張なら、コア改変なしで自社ルールを実現できます。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら