Saltar al contenido principal
El script de este ejemplo se utiliza para ensamblar documentos en conjuntos de documentos definidos por una Definición de Conjunto de Documentos. La Definición de Conjunto de Documentos contiene una sección llamada Borrower’s form y referencias a las siguientes Definiciones de Document:
  • Pasaporte
  • Documentos del garante
  • Documentos del co-prestatario
  • Referencia del empleador
La sección Borrower’s form incluye los siguientes campos:
  • Nombre del co-prestatario
  • Importe del préstamo
Los documentos que deben incluirse en el conjunto de documentos dependen del valor del campo Loan sum. El script tiene dos valores de umbral que determinan qué documentos se incluyen en el conjunto:
  1. Si el importe del préstamo es inferior al primer valor umbral, el conjunto de documentos solo debe contener un pasaporte.
  2. Si el importe del préstamo es superior al primer valor umbral, pero inferior al segundo valor umbral, el conjunto de documentos debe contener un pasaporte y una referencia del empleador.
  3. Si el importe del préstamo es superior al segundo valor del umbral, el conjunto de documentos debe incluir un pasaporte, una referencia del empleador y los documentos del garante.
Además, si el campo Nombre del co-prestatario contiene un valor, el conjunto de documentos debe incluir los documentos del co-prestatario.El script que aparece a continuación usa esta lógica para ensamblar conjuntos de documentos.
using System.Collections.Generic;
int creditSum = 0;
bool creditSumFound = false;
string cocreditor = "";
int formCount = 0;
string formName = "Borrower's form";
// Definiciones de Document utilizadas en el document set
int referenceFromWorkCount = 0;
string referenceFromWorkName = "Employer reference";
int guaranteeDocsCount = 0;
string guaranteeDocsName = "Guarantor's documents";
int cocreditorDocsCount = 0;
string cocreditorDocsName = "Co-borrower's documents";
int passportCount = 0;
string passportName = "Passport";
foreach( IBatchItem item in BatchItems ) {
// Buscar el formulario y determinar la suma del préstamo
    if (item.Type == TBatchItemType.BIT_Page)
    {
if (item.AsPage.SectionName != formName)
            AssemblingErrors.AddCustomError("No puede contener las siguientes secciones: " + item.AsPage.SectionName, 1);
else
        {
cocreditor = item.AsPage.Document.IndexedItemValue("Borrower's name").ToString();
            string creditSumText = item.AsPage.Document.IndexedItemValue("Loan sum").ToString();
if (!int.TryParse(creditSumText, out creditSum))
                AssemblingErrors.AddCustomError("No se reconoció la suma del préstamo: " + creditSumText, 1);
else 
                creditSumFound = true;
            formCount++;
        }
    }
// Contar los documentos del conjunto
    else if (item.Type == TBatchItemType.BIT_Document) {
if (item.AsDocument.TemplateName == referenceFromWorkName)
            referenceFromWorkCount++;
else if (item.AsDocument.TemplateName == guaranteeDocsName)
            guaranteeDocsCount++;
else if (item.AsDocument.TemplateName == passportName)
            passportCount++;
else if (item.AsDocument.TemplateName == cocreditorDocsName)
            cocreditorDocsCount++;
else
            AssemblingErrors.AddCustomError("El conjunto de documentos no puede contener el documento " + item.AsDocument.TemplateName, 1);
    }
}
// Verificar el número de secciones y documentos en el conjunto
if (formCount > 1)
    AssemblingErrors.AddCustomError("There are too many documents of the type: " + formName, formCount);
else if (formCount < 1)
    AssemblingErrors.AddCustomError("Faltan los siguientes documentos: " + formName, 1);
if (passportCount > 1)
    AssemblingErrors.AddCustomError("Hay demasiados documentos del tipo: " + passportName, passportCount);
else if (passportCount < 1)
    AssemblingErrors.AddCustomError("Faltan los siguientes documentos: " + passportName, 1);
// Verificar que el conjunto de documentos contiene un co-prestatario si hay un nombre de co-prestatario en el formulario
if (cocreditor != "" && cocreditorDocsCount < 1)
    AssemblingErrors.AddCustomError("Missing the following documents: " + cocreditorDocsName, 1);
else if (cocreditor != "" && cocreditorDocsCount > 1)
    AssemblingErrors.AddCustomError("Hay demasiados documentos del tipo: " + cocreditorDocsName, cocreditorDocsCount);
else if (cocreditor == "" && cocreditorDocsCount > 0)
    AssemblingErrors.AddCustomError("Hay demasiados documentos del tipo: " + cocreditorDocsName, cocreditorDocsCount);
// Verificar que el conjunto de documentos contiene todos los documentos requeridos porque el monto del préstamo supera uno de los umbrales
if (creditSumFound)
{
if (creditSum > 50000) // requiere una referencia del empleador
    {
if (referenceFromWorkCount > 1)
            AssemblingErrors.AddCustomError("Hay demasiados documentos del tipo: " + referenceFromWorkName, referenceFromWorkCount);
else if (referenceFromWorkCount < 1)
            AssemblingErrors.AddCustomError("Faltan los siguientes documentos: " + referenceFromWorkName, 1);
    }
if (creditSum > 500000) // requiere los documentos del garante
    {
if (guaranteeDocsCount > 1)
            AssemblingErrors.AddCustomError("Hay demasiados documentos del tipo: " + guaranteeDocsName, guaranteeDocsCount);
else if (guaranteeDocsCount < 1)
AssemblingErrors.AddCustomError("Faltan los siguientes documentos: " + guaranteeDocsName, 1);
    }
}
El script de este ejemplo funciona con la definición del conjunto de documentos Identification Documents. La definición del conjunto de documentos contiene referencias a las siguientes Definiciones de Document:
  • Pasaporte
  • Licencia de conducir
Los conjuntos de documentos generados por el script solo pueden incluir un documento de cada uno de estos tipos, pero deben contener al menos un documento de alguno de ellos.El siguiente script usa esta lógica para ensamblar conjuntos de documentos.
using System.Collections.Generic;
using System;
string docSetName = "Identification Documents";
int pagesCnt = 0;
// Lista de los tipos de documentos que pueden incluirse en el conjunto
List<string> allowed = new List<string> {"Passport", "Driver's license"};
// Límite del número de documentos de cada tipo en el conjunto
List<int> allowedCount = new List<int>{1,1};
// Número de documentos detectados en el conjunto
List<int> foundCount = new List<int>{0,0};
// Cuenta el número de documentos y páginas del conjunto
foreach (IBatchItem item in BatchItems) {
if (item.Type == TBatchItemType.BIT_Document) {
if (item.AsDocument.TemplateName == docSetName)
AssemblingErrors.AddCustomError("No puede contener un conjunto anidado", 1);
else if (allowed.Contains(item.AsDocument.TemplateName)) {
int i = allowed.IndexOf(item.AsDocument.TemplateName);
foundCount[i]++;
}
}
else if (item.Type == TBatchItemType.BIT_Page) pagesCnt++;
}
// Comprueba el número de documentos y páginas
if (foundCount[0] + foundCount[1] == 0)
AssemblingErrors.AddCustomError("Se requiere al menos un documento de identificación", 1);
for (int i = 0; i < allowed.Count; i++) {
if (foundCount[i] > allowedCount[i])
AssemblingErrors.AddCustomError("Número máximo de documentos: " + allowed[i] + ": " + allowedCount[i]);
}
if (pagesCnt > 0) AssemblingErrors.AddCustomError("El conjunto de documentos no puede contener páginas que no pertenezcan a un documento", pagesCnt);