の修正スクリプトを実行 買掛金オペレーション

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:5分
  • 買掛金オペレーションを正常にインストールするための修正スクリプトを実行します。

    始める前に

    • 買掛金請求書処理プラグインをインストールします。
    • 資金不足 (ヘッダー金額の差異) 例外が機能するための修正スクリプトを実行します。
    • アプリケーションスコープ[Source-to-Pay 共通アーキテクチャ] に設定します。
    • 資金不足 (ヘッダ金額差異) の例外を機能させるには、発注書 (PO) に関連付けられたすべての請求書がシステム内で利用可能である必要があります。
    • 例外を正常に実行するには、請求書が発注書通貨に関連付けられている通貨と同じであることを確認してください。
    • コマンド行 gr.addEncodedQuery("in_process_invoiced_amountISEMPTY") の後にコマンド gr.setLimit (100000) を追加することで、修正スクリプトをバッチで実行できます。スクリプトを 10 万または 20 万のバッチで実行します。
    • 発注書が [ 処理中の請求書金額] フィールドと [ 請求書金額 ] フィールドで更新されていることを確認します。
      注:
      PO に対して修正スクリプトが実行されない場合、請求書に関連付けられた資金不足 (ヘッダー金額の差異) 例外は機能しません。

    必要なロール:admin

    手順

    1. 次のように移動する。 All (すべて) > システム定義 > 修正スクリプト.
    2. [New] をクリックします。
      新しい修正スクリプトレコードが開きます。
    3. [名前] フィールドに、名前を「APO の PO 請求金額の更新」と入力します。
    4. [スクリプト] フィールドに、以下のスクリプトをコピーして貼り付けます。
    updatePOInvoicedAmounts();
    
    function updatePOInvoicedAmounts() {
        var sessionCurrency = new sn_currency.GlideCurrencyConfig().getSessionCurrency();
        var gr = new GlideRecord("sn_shop_purchase_order");
        gr.addEncodedQuery('in_process_invoiced_amountISEMPTY');
        gr.query();
        while (gr.next()) {
            var poSysID = gr.getValue('sys_id');
            var inProcessInvoiceAmt = getInProcessInvoicedAmount(poSysID);
            var invoicedAmount = getInvoicedAmount(poSysID);
            var poCurrency = !gs.nil(gr.total_amount) ? gr.total_amount.currency : sessionCurrency;
            var amtUpdated = false;
            if (!gs.nil(inProcessInvoiceAmt)) {
                inProcessInvoiceAmt = poCurrency + ';' + inProcessInvoiceAmt;
                gr.getElement('in_process_invoiced_amount').setDisplayValue(inProcessInvoiceAmt);
                amtUpdated = true;
            }
            if (!gs.nil(invoicedAmount)) {
                invoicedAmount = poCurrency + ';' + invoicedAmount;
                gr.getElement('invoiced_amount').setDisplayValue(invoicedAmount);
                amtUpdated = true;
            }
            if (amtUpdated)
                gr.update();
        }
    }
     
    function getInProcessInvoicedAmount(poSysId) {
        var query = 'invoice_amountISNOTEMPTY,^invoice_amount.amount!=0^stateINpo_matching_completed,exceptions_found,no_exceptions_found,pending_approval,approval_recalled,approved';
        var gr = new GlideAggregate('sn_shop_invoice');
        gr.addNotNullQuery('purchase_order');
        gr.addQuery('purchase_order', poSysId);
        gr.addEncodedQuery(query);
        gr.addAggregate('SUM', 'invoice_amount.amount');
        gr.groupBy('purchase_order');
        gr.query();
        if (gr.next()) {
            var inProcessInvoicedAmt = gr.getAggregate('SUM', 'invoice_amount.amount');
            return inProcessInvoicedAmt;
        }
        return 0;
    }
     
    function getInvoicedAmount(poSysId) {
        var query = 'invoice_amountISNOTEMPTY,^invoice_amount.amount!=0^stateINpending_payment,paid';
        var gr = new GlideAggregate('sn_shop_invoice');
        gr.addNotNullQuery('purchase_order');
        gr.addQuery('purchase_order', poSysId);
        gr.addEncodedQuery(query);
        gr.addAggregate('SUM', 'invoice_amount.amount');
        gr.groupBy('purchase_order');
        gr.query();
        if (gr.next()) {
            var invoicedAmt = gr.getAggregate('SUM', 'invoice_amount.amount');
            return invoicedAmt;
        }
        return 0;
    }
    1. [Submit (送信)] を選択します。
    2. 修正スクリプトリストビューで、[APO 修正スクリプト の PO 請求済み金額を更新 (Update PO Invoiced Amounts for APO fix script)] を検索して選択します。
      [APO の PO 請求済み金額の更新] 修正スクリプトが開きます。
    3. [Run Fix Script] を選択します。
      ポップアップウィンドウが表示され、[ キャンセル]、[ 続行 ]、および [バックグラウンドで続行] のオプションが表示されます。
    4. [バックグラウンドで進行] をクリックします。