サービスカタログのチェックアウトへのフィールドの追加

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:4分
  • これは、カート以外のレイアウトマクロを使用して、[要求元:] フィールドの下のチェックアウトに [会社 (Company)] フィールドを追加する例です。つまり、glide.sc.use_cart_layoutsfalseです。

    始める前に

    必要なロール:admin

    このタスクについて

    図 : 1. フィールドの要求元

    このフィールドは、そのフィールドの値をサービスカタログ要求の [会社] フィールドに渡します。

    この例は、以下を前提としています。

    • この例は、2 ステップチェックアウトを使用するインスタンス用です。2 ステップチェックアウトが有効になっていない場合は、開始する前に有効にしてください。
    • この例では、サービスカタログ要求フォームの [会社] フィールドに値を入力します。フィールドがフォームに表示されない場合は、開始する前にフォームを構成します。

    手順

    1. [システム UI] > [UI マクロ] に移動し、[servicecatalog_cart_template] を選択します。
    2. 非表示の変数が宣言されている箇所を見つけて、次の行を追加します。
      <input type="HIDDEN" name="cart_id" id="cart_id" value="$[sc_cart.sys_id]" />
    3. 要求元コードを生成する次のコードを探します。
      <tr class="header">
      <td width = "30%">
        ${gs.getMessage('Requested for')}:
        </td>
        <td width="70%">
          <label for="requestor_location">${gs.getMessage('Deliver to')}:</label>
        </td>
      </tr>
      <tr><td>$[SP]</td> 
      </tr>
        <tr><td valign="top">
          <j2:if test="$[jvar_can_delta_rf == false]">
            $[sc_cart.requested_for.getDisplayValue()]
          </j2:if>
          <j2:if test="$[jvar_can_delta_rf != false]">
            <g2:catalog_requested_for />
          </j2:if>
        </td>
        <td>
          <textarea id="requestor_location" style="width:100%" rows="4"       name="requestor_location" wrap="soft" onChange="catDeliveryAddress('$[sc_cart.sys_id]', 'requestor_location');"> 
            $[sc_cart.delivery_address]
          </textarea>
        </td>
      </tr>
      <tr>
        <td>$[SP]</td>
      </tr>
    4. 後で次のコードを追加します。
      <tr class="header">
        <td colspan="2">Company</td>
      </tr>
      <tr>
        <td>$[SP]</td>
      </tr>
      <tr>
        <td colspan="2">
          <g2:ui_reference name="core_company" table="core_company" onchange="setCartValue()"/>
        </td>
      </tr>
      <tr>
        <td>$[SP]</td>
      </tr>
      注:
      ui_reference マクロは参照フィールドを定義します。さまざまなフィールドタイプにいくつかのマクロがあります。これらのフィールドタイプの例は、[システム UI] -> [UI マクロ]で確認できます。これらのマクロは先頭が「 ui_」で始まります。この例では、作成される参照フィールドの名前は core_company です。
    5. [システム UI] > [UI ページ] に移動し、[servicecatalog_checkout_one] UI ページを選択します。
    6. 次のスクリプトを [クライアントスクリプト] フィールドに追加します。
      function setCartValue() { 
        var newField = gel('core_company'); 
        var myCart = gel('cart_id'); 
        var cart_item = new GlideRecord('sc_cart_item');
        cart_item.addQuery('cart', myCart.value);
        cart_item.query(); 
        if(cart_item.next()) {
          cart_item.hints = "<hints><entry key='sysparm_processing_hint' value='setfield:request.company=" + newField.value + "'/></hints>";
          cart_item.update(); 
        } 
      }

      この例では、参照フィールドは core_company と呼ばれ、要求に応じて入力されるフィールドは company です。異なるフィールドを使用する場合:

      • 次の行を探します。var company = gel('core_company');。次に、core_company をチェックアウトのフィールドの名前に置き換えます。
      • 先頭が「cart_item.hints」で始まる行で、「request.company」を要求チケットに応じて入力されるフィールドの名前に置き換えます。ここで、「request」は生成される要求であり、「company」はフィールドの名前です。

    タスクの結果

    アイテムが注文されると、会社フィールドがカタログフォームに表示されます。

    サービスカタログのチェックアウトに追加されたフィールド