機械翻訳について

マトリックス使用時のアルゴリズムの変更

価格設定マトリックスの結果列を変更するか、価格設定マトリックスで拡張可能フレックスフィールドを使用する場合、アルゴリズム・ステップを変更する必要があります。

拡張可能フレックスフィールドを割引調整に追加するとします。 次に、必要な設定を示します。

  1. 「タスク」>「アルゴリズムの管理」をクリックします。

  2. 「アルゴリズムの管理」ページで、編集する必要があるアルゴリズムを検索して開きます。

    このマトリクス・タイプを使用する場合

    次に、このアルゴリズム・ステップを変更

    この価格設定アルゴリズム内

    価格設定セグメント

    Derive Pricing Segment

    Get Sales Pricing Strategy

    販売価格設定戦略割当

    Get Header Strategy

    Get Sales Pricing Strategy

    価格表手数料修正

    割引調整

    価格設定条件調整

    Evaluate Pricing Matrices

    Apply Matrices

    ライン戦略

    Get Pricing Strategy

    Get Line Pricing Strategy

    価格設定手数料ガイドライン

    Evaluate Pricing Matrices

    Apply Matrix Rules for Guidelines

    価格設定では、事前定義されたステップが実行時に実行され、価格設定マトリックスが処理されます。

    この例では、Apply Matricesを検索して、編集のために開きます。

    価格設定では、事前定義されたステップが実行時に実行され、価格設定マトリックスが処理されます。
  3. 「アルゴリズムの編集」ページで、名前列にEvaluate Pricing Matricesが含まれる「ステップ」をクリックします。

  4. ステップの詳細領域で、名前列にマトリックスを含む「ステップ」をクリックし、変数パス列のコードを確認します。

    finest {'DynamicMatrixId: '+MatrixQ.DynamicMatrixId}; dynamicMatrix(MatrixQ.DynamicMatrixId, Line.PricingDate, ServiceParam.CacheEnabledFlag != null ? ServiceParam.CacheEnabledFlag : true)

    マトリックス・データ・セットへのパスの書式を次に示します。

    dynamicMatrix(MatrixId, effectivityDate, enableCache)

    説明

    パラメータ

    説明

    MatrixId

    評価する価格設定マトリックスを識別します。

    effectivityDate

    価格設定マトリックスの開始日および終了日と比較する日付。

    enableCache

    Contains.

    • True マトリックス・ルールをキャッシュします。

    • False Don't cache.

    ほとんどのステップには、次のような他の事前定義済データ・セットが付属しています。

    • 手数料

    • 明細

    • ヘッダー

    • LineAttribute

    • ItemExtensibleAttribute

    • ServiceParam

    保守を減らすには、事前定義されたデータセットを使用します。 事前定義されたデータ・セットがニーズを満たしていない場合は、新しいデータ・セットを追加します。

    条件列で品目拡張可能属性または拡張可能フレックスフィールドを使用する場合は、データ・セットを追加する必要があります。 たとえば、オーダー・ヘッダーに追加する拡張可能フレックスフィールドをサポートするために使用できるデータ・セットを次に示します。

    名前

    変数パス

    カーディナリティ

    データ・セット結合

    PricingHdrEFF_Custom

    PriceRequest.Name

    説明

    • 名前はデータ・セット名と同じです。

    この例では。

    PriceRequest.PricingHdrEFF_Custom

    0または1つ

    [HeaderIdCustom:{Header.HeaderId}]

  5. ステップの詳細領域で、下にスクロールして「最初の行のアクション」セクションを見つけ、コードを確認します。

    • このアルゴリズムは、問合せが返す最初のレコードに対してこのコードを実行します。

    • 価格設定では、価格設定ガイドラインを除き、価格設定マトリックス・タイプごとにこのコードが実行されます。 価格設定ガイドラインに対して各行処理が実行されます。

    • 設定、保守およびトラブルシューティングの際は、これらの点に注意してください。

最初の行アクションの完全なコードを次に示します。 状況によっては変更する必要があります。 詳細は、「価格設定アルゴリズムの管理」を参照してください。

finest('Processing Matrix RuleId: '+Matrix.DynamicMatrixRuleId)
MatrixQ.AdjustmentBasisId = Matrix.AdjustmentBasisId
MatrixQ.AdjustmentValue = Matrix.AdjustmentAmount
MatrixQ.AdjustmentTypeCode = Matrix.AdjustmentTypeCode
MatrixQ.DynamicMatrixRuleId = Matrix.DynamicMatrixRuleId
MatrixQ.ConditionString = Matrix.MatchConditions.join(' ')
MatrixQ.ResultString =  Matrix.MatchResults.join(' ')


/*if ( Matrix.AdjustmentTypeCode?.contains('PERCENT') )
    Basis = (BasisComp.locate([PriceElementCode:Matrix.AdjustmentBasis]))?.UnitPrice?.Value
finest('Basis Value: ' + Basis)
MatrixQ.AdjustmentValue = pricingUtil.computeUnitAdjustment(Matrix.AdjustmentTypeCode, Basis, Matrix.AdjustmentAmount, Charge.RunningUnitPrice?:0)
MatrixQ.DynamicMatrixRuleId = Matrix.DynamicMatrixRuleId

// currency conversion
if (MatrixQ.FromCurrencyCode!=Charge.CurrencyCode ) {
    if ( 'ERROR'==ConvRate?.MessageTypeCode ) {
        finest('creating line message')
        Line.MessageTypeCode = 'ERROR'
        Charge.MessageTypeCode = 'ERROR'
        Term.MessageTypeCode = 'ERROR'
        msg = Message.locate([ParentEntityCode:'LINE',ParentEntityId:Line.LineId,MessageText:ConvRate.PrcErrorMessage])
        if ( msg==null ) {
            // create new error message for Line
            msg = Message.insert([PricingMessageId:getNextId()])
            msg.MessageName = ConvRate.PrcMessageName
            msg.MessageText = ConvRate.PrcErrorMessage
            msg.ParentEntityCode = 'LINE'
            msg.ParentEntityId = Line.LineId
            msg.MessageTypeCode = ConvRate.MessageTypeCode
        }
    }
    else {
        MatrixQ.AdjustmentValue *= ConvRate.ConversionRate?:1
        finer('\tConverted currency, 1 '+MatrixQ.FromCurrencyCode+' = '+ConvRate.ConversionRate?:1+' '+Charge.CurrencyCode)
    }
}
// end currency conversion
*/