Pular para o conteúdo principal
Aqui estão alguns scripts de exemplo para situações reais.

Verificando erros de regra em um documento

O script abaixo verifica se há erros de regra nos documentos da transação. Se pelo menos um documento da transação contiver erros de regra, o script retornará true. Caso contrário, o script retornará 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();

Verificando se a revisão manual é necessária

O script a seguir verifica os documentos da transação em busca de erros. Se pelo menos um documento da transação contiver qualquer um dos seguintes:
  • Erros de regra
  • Um tipo de documento incerto
  • Campos reconhecidos com incerteza ou caracteres de campo incertos
O script retorna true e envia os documentos para revisão manual. Caso contrário, o script retorna false e envia os documentos para a etapa de exportação.
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) {
    // Existem erros de regra
    if (document.RuleErrors.length > 0)
        return true;
    // O tipo de documento não é confiável
    if (!document.IsResultClassConfident)
        return true;
    // Alguns campos são suspeitos
    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 os filhos em busca de campo suspeito
    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 as instâncias em busca de campo suspeito
    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();