Exécuter le script correctif pour Opérations de comptes fournisseurs

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 2 minutes de lecture
  • Exécutez le script correctif pour une installation réussie de Opérations de comptes fournisseurs.

    Avant de commencer

    • Installez le module d’extensionAccounts Payable Invoice Processing .
    • Exécuter le script correctif pour l’exception Fonds insuffisants (écart de montant d’en-tête) pour fonctionner.
    • Définissez le périmètre de l’application sur l’architecture commune Source-to-Pay.
    • Toutes les factures associées au bon de commande doivent être disponibles dans le système pour que l’exception Fonds insuffisants (écart de montant d’en-tête) fonctionne.
    • Assurez-vous que la devise des factures est identique à celle associée à la devise du bon de commande pour que l’exception s’exécute correctement.
    • Vous pouvez exécuter le script correctif par lots en ajoutant la commande gr.setLimit(100000) après la ligne de commande gr.addEncodedQuery(« in_process_invoiced_amountISEMPTY ». Exécuter le script par lots de 100 000 ou 200 000.
    • Assurez-vous que les bons de commande sont mis à jour avec les champs Montant de la facture en cours de traitementet Montant de la facture .
      Remarque :
      Si le script correctif n’est pas exécuté pour les bons de commande, l’exception Fonds insuffisants (écart de montant d’en-tête) associée à une facture ne fonctionnera pas.

    Rôle requis : administrateur

    Procédure

    1. Accédez à la Tout > Définition du système > Scripts correctifs.
    2. Cliquez sur Nouveau.
      Un nouvel enregistrement de script correctif s’ouvre.
    3. Dans le champ Nom , saisissez le nom Mettre à jour les montants facturés du bon de commande pour APO .
    4. Dans le champ Script , copiez-collez le script mentionné ci-dessous.
    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. Cliquez sur Envoyer.
    2. Dans la vue de liste des scripts correctifs, recherchez et sélectionnez Mettre à jour les montants facturés du bon de commande pour le script correctif APO.
      Le script Mettre à jour les montants facturés du bon de commande pour le correctif APO s’ouvre.
    3. Sélectionnez Exécuter le script correctif.
      Une fenêtre contextuelle s’affiche avec les options Annuler, Poursuivre et Poursuivre en arrière-plan.
    4. Cliquez sur Continuer en arrière-plan.