Zum Hauptinhalt springen
Das Skript in diesem Beispiel fasst Dokumente zu Dokumentensätzen zusammen, die durch eine Dokumentensatzdefinition definiert werden. Die Dokumentensatzdefinition enthält einen Abschnitt namens Borrower’s form sowie Verweise auf die folgenden Dokumentdefinitionen:
  • Reisepass
  • Dokumente des Bürgen
  • Dokumente des Mitantragstellers
  • Arbeitgeberreferenz
Der Abschnitt Borrower’s form enthält die folgenden Felder:
  • Name des Mitantragstellers
  • Darlehensbetrag
Die Dokumente, die in den Dokumentensatz aufgenommen werden müssen, hängen vom Wert des Felds Loan sum ab. Das Skript verfügt über zwei Schwellenwerte, die bestimmen, welche Dokumente in den Satz aufgenommen werden:
  1. Wenn die Kreditsumme unter dem ersten Schwellenwert liegt, muss der Dokumentensatz nur einen Reisepass enthalten.
  2. Wenn die Darlehenssumme größer als der erste Schwellenwert, aber kleiner als der zweite Schwellenwert ist, muss der Dokumentensatz einen Reisepass und eine Bescheinigung des Arbeitgebers enthalten.
  3. Wenn die Kreditsumme den zweiten Schwellenwert überschreitet, muss der Dokumentensatz einen Reisepass, eine Arbeitgeberbescheinigung und die Unterlagen des Bürgen enthalten.
Wenn das Feld Name des Mitantragstellers einen Wert enthält, muss der Dokumentensatz außerdem die Dokumente des Mitantragstellers enthalten.Das folgende Skript verwendet diese Logik, um Dokumentensätze zusammenzustellen.
using System.Collections.Generic;
int creditSum = 0;
bool creditSumFound = false;
string cocreditor = "";
int formCount = 0;
string formName = "Borrower's form";
// Im Dokumentensatz verwendete Dokumentdefinitionen
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 ) {
// Formular suchen und Kreditsumme ermitteln
    if (item.Type == TBatchItemType.BIT_Page)
    {
if (item.AsPage.SectionName != formName)
            AssemblingErrors.AddCustomError("Kann die folgenden Abschnitte nicht enthalten: " + 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("Darlehenssumme wurde nicht erkannt: " + creditSumText, 1);
else 
                creditSumFound = true;
            formCount++;
        }
    }
// Dokumente im Set zählen
    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("Der Dokumentensatz kann das Dokument nicht enthalten " + item.AsDocument.TemplateName, 1);
    }
}
// Anzahl der Abschnitte und Dokumente im Set überprüfen
if (formCount > 1)
    AssemblingErrors.AddCustomError("There are too many documents of the type: " + formName, formCount);
else if (formCount < 1)
    AssemblingErrors.AddCustomError("Folgende Dokumente fehlen: " + formName, 1);
if (passportCount > 1)
    AssemblingErrors.AddCustomError("Es gibt zu viele Dokumente des Typs: " + passportName, passportCount);
else if (passportCount < 1)
    AssemblingErrors.AddCustomError("Folgende Dokumente fehlen: " + passportName, 1);
// Prüfen, ob der Dokumentensatz einen Mitantragsteller enthält, wenn im Formular ein Mitantragstellername vorhanden ist
if (cocreditor != "" && cocreditorDocsCount < 1)
    AssemblingErrors.AddCustomError("Missing the following documents: " + cocreditorDocsName, 1);
else if (cocreditor != "" && cocreditorDocsCount > 1)
    AssemblingErrors.AddCustomError("Es gibt zu viele Dokumente des Typs: " + cocreditorDocsName, cocreditorDocsCount);
else if (cocreditor == "" && cocreditorDocsCount > 0)
    AssemblingErrors.AddCustomError("Es gibt zu viele Dokumente des Typs: " + cocreditorDocsName, cocreditorDocsCount);
// Prüfen, ob der Dokumentensatz alle erforderlichen Dokumente enthält, da die Darlehenssumme einen der Schwellenwerte überschreitet
if (creditSumFound)
{
if (creditSum > 50000) // erfordert eine Arbeitgeberreferenz
    {
if (referenceFromWorkCount > 1)
            AssemblingErrors.AddCustomError("Es gibt zu viele Dokumente des Typs: " + referenceFromWorkName, referenceFromWorkCount);
else if (referenceFromWorkCount < 1)
            AssemblingErrors.AddCustomError("Folgende Dokumente fehlen: " + referenceFromWorkName, 1);
    }
if (creditSum > 500000) // erfordert die Dokumente des Bürgen
    {
if (guaranteeDocsCount > 1)
            AssemblingErrors.AddCustomError("Es gibt zu viele Dokumente des Typs: " + guaranteeDocsName, guaranteeDocsCount);
else if (guaranteeDocsCount < 1)
AssemblingErrors.AddCustomError("Folgende Dokumente fehlen: " + guaranteeDocsName, 1);
    }
}
Das Skript in diesem Beispiel arbeitet mit der Dokumentensatzdefinition Identification Documents. Die Dokumentensatzdefinition enthält Verweise auf die folgenden Dokumentdefinitionen:
  • Reisepass
  • Führerschein
Dokumentensätze, die vom Skript erzeugt werden, dürfen von jedem dieser Typen höchstens ein Dokument, aber mindestens ein Dokument eines dieser Typen enthalten.Das folgende Skript verwendet diese Logik, um Dokumentensätze zu assemblieren.
using System.Collections.Generic;
using System;
string docSetName = "Identification Documents";
int pagesCnt = 0;
// Liste der Dokumenttypen, die im Satz enthalten sein dürfen
List<string> allowed = new List<string> {"Passport", "Driver's license"};
// Begrenzung für die Anzahl von Dokumenten jedes Typs im Satz
List<int> allowedCount = new List<int>{1,1};
// Anzahl der im Satz erkannten Dokumente
List<int> foundCount = new List<int>{0,0};
// Anzahl der Dokumente und Seiten im Satz zählen
foreach (IBatchItem item in BatchItems) {
if (item.Type == TBatchItemType.BIT_Document) {
if (item.AsDocument.TemplateName == docSetName)
AssemblingErrors.AddCustomError("Darf keinen verschachtelten Satz enthalten", 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++;
}
// Anzahl der Dokumente und Seiten prüfen
if (foundCount[0] + foundCount[1] == 0)
AssemblingErrors.AddCustomError("Mindestens ein Identitätsdokument ist erforderlich", 1);
for (int i = 0; i < allowed.Count; i++) {
if (foundCount[i] > allowedCount[i])
AssemblingErrors.AddCustomError("Maximale Anzahl von Dokumenten: " + allowed[i] + ": " + allowedCount[i]);
}
if (pagesCnt > 0) AssemblingErrors.AddCustomError("Der Dokumentensatz darf keine Seiten enthalten, die nicht zu einem Dokument gehören", pagesCnt);