Exécuter le script correctif pour activer les quantités décimales pour les services

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 1 minute de lecture
  • Après la mise à niveau vers Yokohama Patch 12 ou Zurich Patch 6, si vous ne pouvez pas spécifier de quantités décimales pour les services, vous devez exécuter un script de correction en arrière-plan pour activer la prise en charge des quantités décimales.

    Avant de commencer

    Rôle requis : sn_shop.procurement_administrator

    Pourquoi et quand exécuter cette tâche

    Si vous avez effectué une mise à niveau vers Yokohama Patch 12 ou Zurich Patch 6 et que vous ne pouvez pas spécifier de quantités décimales pour les services, exécutez ce script à partir du module Scripts - Arrière-plan. Le script convertit le type de champ de quantité de nombre entier en décimale et met à jour l’échelle du champ à quatre décimales.

    Procédure

    1. Accédez à la Tous > Définition du système > Scripts - Arrière-plan.
    2. Dans la section Exécuter le script (JavaScript exécuté sur le serveur), collez le code suivant :
      (function() {
         var tableName = 'sn_spend_sdc_service_request_line';
         var columnName = 'new_purchased_quantity';
         if (pm.isZboot()) {
             return;
         }
         try {
             var updated = GlideFixStuff.fixTypeFromIntegerToDecimalCaseLineQuantityItem(tableName, columnName);
             if (!updated) {
                 gs.info('Cannot update type from integer to decimal for field ' + columnName);
                 return;
             }
             updateScale();
         } catch (ex) {
             gs.info('Cannot update type from integer to decimal with error ' + JSON.stringify(ex));
             return;
         }
         function updateScale() {
             var desiredScale = 4;
             var dictGR = new GlideRecord('sys_dictionary');
             var query = 'name=' + tableName + '^elementIN' + columnName;
             var fieldName;
             dictGR.addEncodedQuery(query);
             dictGR.query();
             if (dictGR.next()) {
                 try {
                     var attrbiuteArray = [];
                     var currentAttributes = dictGR.attributes;
                     if (currentAttributes != '') {
                         attrbiuteArray = currentAttributes.split(',');
                     }
                     var currentMaxLength = dictGR.max_length;
                     fieldName = dictGR.element;
                     var newMaxLength = currentMaxLength + desiredScale;
                     dictGR.max_length = newMaxLength;
                     attrbiuteArray.push("scale=" + desiredScale);
                     dictGR.attributes = attrbiuteArray.join(',');
                     dictGR.update();
                     dictGR.max_length = newMaxLength + 1;
                     dictGR.update();
                     gs.info('Updated max length twice for field ' + fieldName);
                 } catch (ex) {
                     gs.info('Cannot update scale attribute due to error : ' + JSON.stringify(ex));
                     gs.error('Error updating max length attribute for field {0}. No update performed.', fieldName);
                 }
             }
         }
      })();
    3. Désélectionner la case à cocher Enregistrer pour la restauration ? .
    4. Sélectionnez Exécuter le script.