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

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 2 minutes de lecture
  • Exécutez le script correctif pour l’installation réussie de Opérations de comptes fournisseurs.

    Avant de commencer

    • Installez le module d’extension Accounts Payable Invoice Processing .
    • Exécuter le script correctif pour que l’exception Fonds insuffisants (écart de montant d’en-tête) fonctionne.
    • Définissez le périmètre de l’application sur 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 les factures ont la même devise que 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écutez 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 facture en cours de traitementet Montant de 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 : admin

    Procédure

    1. Accédez à la Tous > 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 pour le 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 Continuer en arrière-plan.
    4. Cliquez sur Continuer en arrière-plan.