Passer au contenu principal
Le script de cet exemple permet d’assembler des documents en jeux de documents définis par une Document Set Definition. La Document Set Definition contient une section nommée Borrower’s form et des références aux Document Definitions suivantes :
  • Passeport
  • Documents du garant
  • Documents du coemprunteur
  • Référence employeur
La section Borrower’s form comprend les champs suivants :
  • Nom du co-emprunteur
  • Montant du prêt
Les documents à inclure dans le jeu de documents dépendent de la valeur du champ Loan sum. Le script comporte deux valeurs seuil qui déterminent les documents inclus dans le jeu :
  1. Si le montant du prêt est inférieur au premier seuil, le jeu de documents ne doit contenir qu’un passeport.
  2. Si le montant du prêt est supérieur à la première valeur seuil mais inférieur à la seconde, le jeu de documents doit contenir un passeport et une attestation de l’employeur.
  3. Si le montant du prêt dépasse la deuxième valeur seuil, le jeu de documents doit contenir un passeport, une attestation de l’employeur et les documents du garant.
De plus, si le champ Nom du co-emprunteur contient une valeur, le jeu de documents doit inclure les documents du co-emprunteur.Le script ci-dessous 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";
// Document Definitions 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("La somme du prêt n'a pas été reconnue : " + 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("L'ensemble de documents ne peut pas contenir le 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("Documents manquants : " + formName, 1);
if (passportCount > 1)
    AssemblingErrors.AddCustomError("Il y a trop de documents du type : " + passportName, passportCount);
else if (passportCount < 1)
    AssemblingErrors.AddCustomError("Documents manquants : " + passportName, 1);
// Vérifier que le jeu de documents contient un co-emprunteur si un nom de co-emprunteur est présent dans le formulaire
if (cocreditor != "" && cocreditorDocsCount < 1)
    AssemblingErrors.AddCustomError("Missing the following documents: " + cocreditorDocsName, 1);
else if (cocreditor != "" && cocreditorDocsCount > 1)
    AssemblingErrors.AddCustomError("Il y a trop de documents du type : " + cocreditorDocsName, cocreditorDocsCount);
else if (cocreditor == "" && cocreditorDocsCount > 0)
    AssemblingErrors.AddCustomError("Il y a trop de documents du type : " + cocreditorDocsName, cocreditorDocsCount);
// Vérifier que le jeu de documents contient tous les documents requis, car le montant du prêt dépasse l'un des seuils
if (creditSumFound)
{
if (creditSum > 50000) // nécessite une référence employeur
    {
if (referenceFromWorkCount > 1)
            AssemblingErrors.AddCustomError("Il y a trop de documents du type : " + referenceFromWorkName, referenceFromWorkCount);
else if (referenceFromWorkCount < 1)
            AssemblingErrors.AddCustomError("Documents manquants : " + referenceFromWorkName, 1);
    }
if (creditSum > 500000) // nécessite les documents du garant
    {
if (guaranteeDocsCount > 1)
            AssemblingErrors.AddCustomError("Il y a trop de documents du type : " + guaranteeDocsName, guaranteeDocsCount);
else if (guaranteeDocsCount < 1)
AssemblingErrors.AddCustomError("Documents manquants : " + guaranteeDocsName, 1);
    }
}
Le script de cet exemple fonctionne avec la définition de jeu de documents Identification Documents. La définition de jeu de documents contient des références aux définitions de documents suivantes :
  • Passeport
  • Permis de conduire
Les jeux de documents produits par le script ne peuvent contenir qu’un seul document de chacun de ces types, mais doivent contenir au moins un document de ces types.Le script ci-dessous 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"};
// Nombre maximal 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};
// Compte 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("Le jeu ne peut pas contenir un jeu imbriqué", 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érifie le nombre de documents et de pages
if (foundCount[0] + foundCount[1] == 0)
AssemblingErrors.AddCustomError("Au moins une pièce d'identité est requise", 1);
for (int i = 0; i < allowed.Count; i++) {
if (foundCount[i] > allowedCount[i])
AssemblingErrors.AddCustomError("Nombre maximal de documents : " + allowed[i] + " : " + allowedCount[i]);
}
if (pagesCnt > 0) AssemblingErrors.AddCustomError("Le jeu de documents ne peut pas contenir de pages qui n'appartiennent à aucun document", pagesCnt);