Führen Sie das Korrekturskript für aus Accounts Payable Operations

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 1 Minute Lesedauer
  • Führen Sie das Korrekturskript für eine erfolgreiche Installation von Accounts Payable Operationsaus.

    Vorbereitungen

    • Installieren Sie das Plugin „ Accounts Payable Invoice Processing “.
    • Führen Sie ein Korrekturskript für die Ausnahme „Unzureichende Mittel (Abweichung des Header-Betrags)“ aus, um zu funktionieren.
    • Legen Sie den Anwendungsbereich auf „ Source-to-Pay Common Architecture“ fest.
    • Alle mit der Bestellung verknüpften Rechnungen müssen im System verfügbar sein, damit die Ausnahme „Unzureichende Mittel (Header-Betragsabweichung)“ funktioniert.
    • Stellen Sie sicher, dass Rechnungen dieselbe Währung haben wie die, die der Bestellwährung zugeordnet ist, damit die Ausnahme erfolgreich ausgeführt wird.
    • Sie können das Korrekturskript in Batches ausführen, indem Sie den Befehl gr.setLimit(100000) nach der Befehlszeile gr.addEncodedQuery("in_process_invoiced_amountISEMPTY" hinzufügen. Führen Sie das Skript in Batches von 100.000 oder 200.000 aus.
    • Stellt sicher, dass Bestellungen mit den Feldern Rechnungsbetrag in Bearbeitungund Rechnungsbetrag aktualisiert werden.
      Hinweis:
      Wenn das Korrekturskript für Bestellungen nicht ausgeführt wird, funktioniert die einer Rechnung zugeordnete Ausnahme „Unzureichende Mittel (Abweichung des Header-Betrags)“ nicht.

    Erforderliche Rolle: admin

    Prozedur

    1. Navigieren zu Alle > Systemdefinition > Korrekturskripts.
    2. Klicken Sie auf Neu.
      Ein neuer Korrekturskript-Datensatz wird geöffnet.
    3. Geben Sie im Feld Name den Namen Update PO Fakturierte Beträge für APO ein.
    4. Kopieren Sie im Feld Skript das unten stehende Skript.
    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. Klicken Sie auf Absenden.
    2. Suchen Sie in der Listenansicht des Korrekturskripts nach und wählen Sie Rechnungsbeträge der Bestellung für APO- Korrekturskript aktualisieren aus.
      Das Korrekturskript „PO-Rechnungsbeträge für APO aktualisieren“ wird geöffnet.
    3. Wählen Sie Korrekturskript ausführen aus.
      Ein Popup-Fenster mit den Optionen Abbrechen, Fortfahrenund Im Hintergrundfortfahren wird angezeigt.
    4. Klicken Sie auf Im Hintergrund fortfahren.