機械翻訳について

価格設定アルゴリズムのソース・コードの検証

ソースの表示をクリックして、価格設定アルゴリズムのソース・コードを確認できます。

  1. 価格設定管理作業領域に移動し、「タスク」>「アルゴリズムの管理」をクリックします。

  2. 「アルゴリズムの管理」ページで、変更する必要があるアルゴリズムを特定します。

  3. 「処理」>「バージョンの作成」をクリックします。

  4. 要件を満たすように価格設定アルゴリズムを変更します。

  5. 「アルゴリズムの編集」ページの上部にある「ソースを表示」をクリックし、表示されるダイアログにこのメッセージが含まれていることを確認します。

    The following script has passed syntax check

    たとえば:

    価格販売トランザクションのソース・ダイアログの表示

ノート

  • ソースの表示では、構文を検査および検証します。 次に、ダイアログにアルゴリズムを定義するGroovyコードが表示されます。

  • 価格設定アルゴリズムを公開する前に使用します。

  • また、このアルゴリズムを使用して、アルゴリズムの設定方法を全体的に把握したり、アルゴリズムのバージョン間のトラブルシューティングを行うこともできます。

  • たとえば、作業中バージョンのソース・コードと非稼働バージョンのソース・コードをコピーし、それをコード比較アプリケーションに貼り付けてから、問題の原因となっている可能性のあるコードの識別に役立つ差異を調べます。

ソースの表示をクリックすると表示される詳細の種類を含むコードを次に示します。

//=====================================================================
// Price Sales Transactions
// Version: 2
// Start: 2016-12-07 22:47:02.528
// End: 
// Description: Calculates prices for Sales documents (Quotes, Sales Agreements, Orders).
// Version 2 Comments: Calculates prices for Sales documents (Quotes, Sales Agreements, Orders).
//=====================================================================

variables {
    PriceRequest(ioType:'InOut', type:'DataObject', required:true, context:'PricingInternal.PriceRequestInternal')
    PerformCurrencyConversion(ioType:'None', type:'Boolean', required:false, defaultValue:false)
    IsNonGsaCustomer(ioType:'None', type:'Boolean', required:false, defaultValue:true)
    CalculateGSAPrice(ioType:'None', type:'Boolean', required:false, defaultValue:false)
    PassedInEntities(ioType:'None', type:'DataObject', required:false, context:'PricingInternal.PriceRequestInternal')
}

// Step "Set Initial Values" - block
step('Set Initial Values'){
    // Step "Initialize" - SubAlgorithm
    step('Initialize'){
        subAlgorithm(name:'Set Initial Values')
        .input ('EnableCache':false,'PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
}

// Step "Process and Split Passed In Charges" - if
step('Process and Split Passed In Charges', if:{PriceRequest.Charge.size() > 0}){
    // Step "Process Passed In Charges and Charge Components" - SubAlgorithm
    step('Process Passed In Charges and Charge Components'){
        subAlgorithm(name:'Process Passed In Charges')
        .input ('PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
    // Step "Split Passed In Charge Components" - Split
    //    Moves all the passed-in charge components that have been retained after processing to a separate SDO.
    step('Split Passed In Charge Components'){
        splitDocument().from(PriceRequest.ChargeComponent).as('Comp').to(PassedInEntities.ChargeComponent).where{true}
    }
    // Step "Split Passed In Charges" - Split
    //    Moves all the passed-in charges that have been retained after processing to a separate SDO.
    step('Split Passed In Charges'){
        splitDocument().from(PriceRequest.Charge).as('Charge').to(PassedInEntities.Charge).where{true}
    }
}

// Step "Derive and Validate Strategy" - block
step('Derive and Validate Strategy'){
    // Step "Derive Pricing Strategy" - SubAlgorithm
    step('Derive Pricing Strategy'){
        subAlgorithm(name:'Get Sales Pricing Strategy')
        .input ('InvokeFromPriceSalesTransactions':true,'PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
    // Step "Validate Pricing Strategy" - SubAlgorithm
    step('Validate Pricing Strategy'){
        subAlgorithm(name:'Validate Pricing Strategy')
        .input ('PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
}

// Step "Validate Passed Pricing Terms" - block
step('Validate Passed Pricing Terms'){
    // Step "Validate Pricing Terms" - SubAlgorithm
    step('Validate Pricing Terms'){
        subAlgorithm(name:'Validate Pricing Terms')
        .input ('PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
}

// Step "Validate Override Currencies" - block
step('Validate Override Currencies'){
    // Step "Validate Override Currency" - SubAlgorithm
    //    Invoke the sub-algorithm 'Validate Override Currencies'
    step('Validate Override Currency'){
        subAlgorithm(name:'Validate Override Currencies')
        .input ('PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
}

// Step "Get Charge Candidates For Coverages Goods and Services" - block
step('Get Charge Candidates For Coverages Goods and Services'){
    // Step "Get Price List and Charge Candidates" - SubAlgorithm
    step('Get Price List and Charge Candidates'){
        subAlgorithm(name:'Get Base List Price for Goods and Services')
        .input ('CreateChargesFlag':false,'DerivePriceListFlag':true,'ElementParam':'QP_BASE_LIST_PRICE','GetChargeCandidatesFlag':true,'PriceRequest':PriceRequest)
        .output ('PerformCurrencyConversion':'PerformCurrencyConversion','PriceRequest':'PriceRequest')
        .run()
    }
}

// Step "Calculate Pricing Charges For Covered Items" - block
//    This step invokes the algorithm to calculate pricing charges for covered items to derive the percentage-based coverage prices.
step('Calculate Pricing Charges For Covered Items'){
    // Step "If CoverageAssociations Exist" - if
    //    Calculate Covered Item Prices if there are CoverageAssociations
    step('If CoverageAssociations Exist', if:{PriceRequest.CoverageAssociation.size() > 0}){
        // Step "Calculate Covered Item Charges" - SubAlgorithm
        step('Calculate Covered Item Charges'){
            subAlgorithm(name:'Calculate Covered Item Charges')
            .input ('PriceRequest':PriceRequest)
            .output ('PriceRequest':'PriceRequest')
            .run()
        }
    }
}

// Step "Calculate Pricing Charges For Coverages Goods and Services" - block
//    Call Calculate Pricing Charges where in Get Base
//    skip Derive PL and Get Charge Candidates, only Create Charges, but process rest of the ListPrice thru Margin Calculations
step('Calculate Pricing Charges For Coverages Goods and Services'){
    // Step "Calculate Pricing Charges" - SubAlgorithm
    //    This step invokes the algorithm to calculate pricing charges.
    step('Calculate Pricing Charges'){
        subAlgorithm(name:'Calculate Pricing Charges')
        .input ('CreateChargesFlag':true,'DerivePriceListFlag':false,'GetChargeCandidatesFlag':false,'PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
}

// Step "Merge If Charges Passed In" - if
step('Merge If Charges Passed In', if:{PassedInEntities.Charge.size() > 0 && finer('Merging back passed-in charges and charge components') == null}){
    // Step "Merge Back Passed In Charges" - Merge
    //    Merges back the passed in Charge Components into Price Request SDO
    step('Merge Back Passed In Charges'){
        mergeDocument().from(PassedInEntities.Charge).to(PriceRequest.Charge)
    }
    // Step "Merge Back Passed In Charge Components" - Merge
    //    Merges back the passed in Charge Components into Price Request SDO
    step('Merge Back Passed In Charge Components'){
        mergeDocument().from(PassedInEntities.ChargeComponent).to(PriceRequest.ChargeComponent)
    }
}

// Step "Calculate Shipping Charges For Goods and Services" - block
step('Calculate Shipping Charges For Goods and Services'){
    // Step "Calculate Shipping Charges" - SubAlgorithm
    //    Call 'Calculate Shipping Charges' Algorithm
    step('Calculate Shipping Charges'){
        subAlgorithm(name:'Calculate Shipping Charges')
        .input ('PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
}

// Step "Populate Charge Component Explanation Messages" - block
//    This step populates explanation messages on charge components.
step('Populate Charge Component Explanation Messages'){
    // Step "Populate Explanation Messages" - SubAlgorithm
    //    This step invokes the algorithm to populate explanation messages for charge components.
    step('Populate Explanation Messages'){
        subAlgorithm(name:'Populate Charge Component Explanation Message')
        .input ('BaseListPriceElementCode':'QP_BASE_LIST_PRICE','PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
}

// Step "Process Returns" - block
step('Process Returns'){
    // Step "Process Returns With Reference" - SubAlgorithm
    //    This step creates the refund charges for return lines.
    step('Process Returns With Reference'){
        subAlgorithm(name:'Process Returns with Reference')
        .input ('PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
}

// Step "Set Final Values" - block
step('Set Final Values'){
    // Step "Finalize" - SubAlgorithm
    step('Finalize'){
        subAlgorithm(name:'Set Final Values')
        .input ('PriceRequest':PriceRequest)
        .output ('PriceRequest':'PriceRequest')
        .run()
    }
}