Saltar al contenido principal
A continuación se presentan algunos scripts de ejemplo para situaciones reales.

Comprobación de errores de reglas en un documento

El siguiente script comprueba si hay errores de reglas en los documentos de la transacción. Si al menos un documento de la transacción contiene errores de reglas, el script devuelve true. De lo contrario, devuelve false.
function hasRuleErrors() {
    for (var i = 0; i < Context.Transaction.Documents.length; i++) {
        var document = Context.Transaction.Documents[i];
        if (document.RuleErrors.length > 0 || document.IsUnknownSkill === true || document.HasSuspiciousSymbols === true)
            return true;
    }
    return false;
}
hasRuleErrors();

Comprobar si se requiere revisión manual

El siguiente script comprueba si hay errores en los documentos de la transacción. Si al menos un documento de la transacción contiene alguno de los siguientes:
  • Errores de reglas
  • Un tipo de documento incierto
  • Campos o caracteres de campo reconocidos con incertidumbre
El script devuelve true y envía los documentos a revisión manual. De lo contrario, el script devuelve false y envía los documentos a la etapa de exportación.
function needManualReview() {
    for (var i = 0; i < Context.Transaction.Documents.length; i++) {
        var document = Context.Transaction.Documents[i];
        if (needManualReviewForDocument(document))
            return true;
    }
    return false;
}

function needManualReviewForDocument(document) {
    // Existen errores de regla
    if (document.RuleErrors.length > 0)
        return true;
    // El tipo de documento no es confiable
    if (!document.IsResultClassConfident)
        return true;
    // Algunos campos son sospechosos
    for (var i = 0; i < document.Fields.length; i++) {
        var field = document.Fields[i];
        if (field.IsSuspicious || containSuspiciousFields(field))
            return true;
    }
    return false;
}

function containSuspiciousFields(field) {
    // Verificar todos los elementos secundarios en busca de campos sospechosos
    if (field.Children) {
        for (var i = 0; i < field.Children.length; i++) {
            var childField = field.Children[i];
            if (childField.IsSuspicious || containSuspiciousFields(childField))
                return true;
        }
    }
    // Verificar todas las instancias en busca de campos sospechosos
    if (field.Instances) {
        for (var i = 0; i < field.Instances.length; i++) {
            var instanceField = field.Instances[i];
            if (instanceField.IsSuspicious || containSuspiciousFields(instanceField))
                return true;
        }
    }

    return false;
}
needManualReview();