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