Passer au contenu principal
Ces exemples de scripts assemblent des documents en jeux de documents définis par une définition de jeu de documents et signalent les problèmes d’assemblage via l’objet AssemblingErrors. Le premier script requiert différents documents selon le montant du prêt. Le second vérifie qu’un jeu contient les pièces d’identité attendues.

Exiger des documents en fonction du montant du prêt

Ce script assemble des documents en jeux de documents définis par une définition de jeu de documents. La définition de jeu de documents contient une section intitulée Formulaire de l’emprunteur et des références aux définitions de documents suivantes :
  • Passeport
  • Documents du garant
  • Documents du coemprunteur
  • Attestation de l’employeur
La section Formulaire de l’emprunteur inclut les champs suivants :
  • Nom du coemprunteur
  • Montant du prêt
Les documents que le jeu de documents doit contenir dépendent de la valeur du champ Montant du prêt. Le script utilise deux valeurs seuils pour déterminer quels documents sont obligatoires :
Montant du prêtDocuments obligatoires
Inférieur à la première valeur seuilPasseport
Supérieur à la première valeur seuil, mais inférieur à la secondePasseport et une attestation de l’employeur
Supérieur à la seconde valeur seuilPasseport, une attestation de l’employeur et les documents du garant
Si le champ Nom du coemprunteur contient une valeur, le jeu de documents doit également contenir les documents du coemprunteur. Le script suivant utilise cette logique pour assembler des jeux de documents :
using System.Collections.Generic;
int creditSum = 0;
bool creditSumFound = false;
string cocreditor = "";
int formCount = 0;
string formName = "Borrower's form";
// Définitions de document utilisées dans le jeu de documents
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 ) {
    // Rechercher le formulaire et déterminer le montant du prêt
    if (item.Type == TBatchItemType.BIT_Page)
    {
        if (item.AsPage.SectionName != formName)
            AssemblingErrors.AddCustomError("Cannot contain the following sections: " + 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("Loan sum was not recognized: " + creditSumText, 1);
            else
                creditSumFound = true;
            formCount++;
        }
    }
    // Compter les documents dans le jeu
    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("The document set cannot contain the document " + item.AsDocument.TemplateName, 1);
    }
}
// Vérifier le nombre de sections et de documents dans le jeu
if (formCount > 1)
    AssemblingErrors.AddCustomError("There are too many documents of the type: " + formName, formCount);
else if (formCount < 1)
    AssemblingErrors.AddCustomError("Missing the following documents: " + formName, 1);
if (passportCount > 1)
    AssemblingErrors.AddCustomError("There are too many documents of the type: " + passportName, passportCount);
else if (passportCount < 1)
    AssemblingErrors.AddCustomError("Missing the following documents: " + passportName, 1);
// Vérifier que le jeu de documents contient un co-emprunteur si un nom de co-emprunteur figure dans le formulaire
if (cocreditor != "" && cocreditorDocsCount < 1)
    AssemblingErrors.AddCustomError("Missing the following documents: " + cocreditorDocsName, 1);
else if (cocreditor != "" && cocreditorDocsCount > 1)
    AssemblingErrors.AddCustomError("There are too many documents of the type: " + cocreditorDocsName, cocreditorDocsCount);
else if (cocreditor == "" && cocreditorDocsCount > 0)
    AssemblingErrors.AddCustomError("There are too many documents of the type: " + cocreditorDocsName, cocreditorDocsCount);
// Vérifier que le jeu de documents contient tous les documents requis du fait que le montant du prêt dépasse l'un des seuils
if (creditSumFound)
{
    if (creditSum > 50000) // nécessite une attestation de l’employeur
    {
        if (referenceFromWorkCount > 1)
            AssemblingErrors.AddCustomError("There are too many documents of the type: " + referenceFromWorkName, referenceFromWorkCount);
        else if (referenceFromWorkCount < 1)
            AssemblingErrors.AddCustomError("Missing the following documents: " + referenceFromWorkName, 1);
    }
    if (creditSum > 500000) // nécessite les documents du garant
    {
        if (guaranteeDocsCount > 1)
            AssemblingErrors.AddCustomError("There are too many documents of the type: " + guaranteeDocsName, guaranteeDocsCount);
        else if (guaranteeDocsCount < 1)
            AssemblingErrors.AddCustomError("Missing the following documents: " + guaranteeDocsName, 1);
    }
}

Vérifier les documents manquants ou en double

Ce script fonctionne avec la définition de jeu de documents Identification Documents, qui fait référence aux définitions de documents suivantes :
  • Passeport
  • Permis de conduire
Un jeu de documents peut contenir au maximum un document de chaque type et doit contenir au moins l’un de ces documents. Le script suivant utilise cette logique pour assembler des jeux de documents :
using System.Collections.Generic;
using System;
string docSetName = "Identification Documents";
int pagesCnt = 0;
// Liste des types de documents pouvant être inclus dans le jeu
List<string> allowed = new List<string> {"Passport", "Driver's license"};
// Limite du nombre de documents de chaque type dans le jeu
List<int> allowedCount = new List<int>{1,1};
// Nombre de documents détectés dans le jeu
List<int> foundCount = new List<int>{0,0};
// Compter le nombre de documents et de pages dans le jeu
foreach (IBatchItem item in BatchItems) {
    if (item.Type == TBatchItemType.BIT_Document) {
        if (item.AsDocument.TemplateName == docSetName)
            AssemblingErrors.AddCustomError("Cannot contain a nested set", 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++;
}
// Vérifier le nombre de documents et de pages
if (foundCount[0] + foundCount[1] == 0)
    AssemblingErrors.AddCustomError("At least one identification document is required", 1);
for (int i = 0; i < allowed.Count; i++) {
    if (foundCount[i] > allowedCount[i])
        AssemblingErrors.AddCustomError("Maximum number of documents: " + allowed[i] + ": " + allowedCount[i]);
}
if (pagesCnt > 0) AssemblingErrors.AddCustomError("The document set cannot contain pages that do not belong to a document", pagesCnt);