Genpact AP Knowledge Center

Support

Eyeball Configuration

V1.1

Overview

The predefined configuration in the eyeball-condition yaml file defines the criteria for deciding whether the system performs the eyeball step. The criteria could be extraction confidence level of a field or specific value in a field or more.

The configuration also decides which fields will appear in the Eyeball screen in the portal and how, adds the missing fields, and expedites the search using Lookup table with multiple filters. All the functionalities save time and improve system efficiency. 

Template

eyeball-condition.yaml
kind: ruleSet
metadata:
  name: extraction/v1/documents/eyeball-condition
spec:
  nodes:
  - if: 'it["InvoiceTotal"].Confidence > 0.99' 
    then: 
      decision: false 
  - if: 'it["VendorName"].Value != "ABC"' 
    then: 
      decision: true 
  - if: 'it.ContainsKey("Category") && it["Category"].Value == null'
    then:
      decision: true
  - if: '1=1'
    then:
      decision: true

 

ParameterDescription
If thenThe condition based on which eyeballing is decided.

For example, in the above template, if the confidence level of Invoice Total field is more than 0.99 then eyeballing step is not performed. But, if the invoice contains Category field that is empty then eyeballing is performed.


eyeball-client-configuration.yaml
kind: document
metadata:
  name: extraction/v1/documents/eyeball-client-configuration
spec:
  fields:

    - name: "Case_Id"
      description: "Invoice Name"
      visible: false
      enable: false
      defaultControlType: "TextBox"
    
    - name: "Handwritten"
      description: "HandWritten"
      visible: true
      enable: true
      displayOrder: 11
      defaultControlType: "Checkbox"

    - name: "Language"
      description: "Language"
      visible: true
      enable: true
      displayOrder: 12
      defaultControlType: "TextBox"

    - name: "DocumentType"
      description: "Document type"
      visible: true
      mandatory: true
      displayOrder: 20
      enable: true
      defaultControlType: "ComboBox"
      validation: >
        {
          "clearPattern": "[^a-zA-Z0-9 ]+"
        }
      controlOptions: >
        {
          "filter": "contains",
          "dataTextField": "value",
          "dataValueField": "value",
          "dataSource":[
            { "value": "Merchandize" },
            { "value": "Freight Only" },
            { "value": "Drop Shipments" }
          ]
        } 
      
    - name: "Culture"
      description: "Culture"
      visible: ': iif(String.IsNullOrEmpty(wf.Variables["extractedCulture"]), true, false)'
      mandatory: true
      displayOrder: 45
      enable: true
      defaultControlType: "ComboBox"
      controlOptions: >
        {
          "windowOptions": {
             "width": "800px",
              "height": "600px",
              "title": "Culture",
              "appendTo": "#layoutContainer",
              "draggable": {
                "containment": "body"
              },
              "modal": true,
              "resizable": false,
              "actions": [
                  "Close"
              ]
          },
          "filter": "contains",
          "dataTextField": "value",
          "dataValueField": "code",
          "dataSource": {
              "transport": {
                  "read": {
                    "url": "/api/components/configuration/v1/cultures",
                    "contentType": "application/json"
                  }
              },
              "pageSize": 1000,             
              "serverPaging": false,
              "serverFiltering": false
          }            
        }  

    - name: "RejectReason"
      description: "Reject Reason"
      visible: true
      enable: true
      displayOrder: 300
      defaultControlType: "MultiSelect"
      controlOptions: >
       {
        "delimeterValue": ";",
        "tagMode":"single",
        "dataTextField": "value",
        "dataValueField": "value",
        "downArrow": true,
        "dataSource":[
            { "value": "Incorrect Bill To Address" },
            { "value": "OpCo Code Not Found" },
            { "value": "Partial split failure" },
            { "value": "PO - Cancelled/ Invalid/ Not Found" },
            { "value": "Invoice number missing" },
            { "value": "Currency Not Found" }
         ]
       }

    - name: "InvoiceId"
      description: "Invoice Number"
      displayOrder: 40
      defaultControlType: "TextBox"
      mandatory: true
      enrichOtherFields: true
      validation: >
        {
          "clearPattern": "[^a-zA-Z0-9 ]+"
        }
      attributes: >
        {
          "maxLength": 20
        }

    - name: "PORefNumber"
      description: "PO Ref_Num"
      visible: true
      mandatory: true
      enable: true
      displayOrder: 70
      defaultControlType: "MultiColumnComboBox"
      controlOptions: >
        {
          "dataTextField": "Id",
          "dataValueField": "Id",
          "autoBind": false,
          "columns": [
            { "field": "PONumber", "title": "PO Number", "width": 200 },
            { "field": "Id", "title": "Id", "width": 200 }
          ],
          "filter": "contains",
          "virtual": {
              "itemHeight": 33
          },
          "height": 330,
          "dataSource": {
              "transport": {
                  "read": {
                    "url": "/api/components/data-model/v1/query/vwPO",
                    "contentType": "application/json"
                  }
              },
              "pageSize": 40,
              "serverPaging": true,
              "serverFiltering": true
          }
        }

    - name: "OpcoCode"
      description: "Opco Code"
      visible: true
      mandatory: true
      enable: true
      displayOrder: 80
      defaultControlType: "PopupTable"
      controlOptions: >
        {
          "dataValueField": "OPCOCode",
          "dataTextField": "OPCOCode",
          "windowOptions": {
              "width": "800px",
              "height": "600px",
              "title": "Opco Code",
              "appendTo": "#layoutContainer",
              "draggable": {
                "containment": "body"
              },
              "modal": true,
              "resizable": false,
              "actions": [
                  "Close"
              ]
          },
          "gridOptions": {
              "dataSource": {
                "transport": {
                  "read": {
                    "url": "/api/components/data-model/v1/query/vwOPCOS",
                    "contentType": "application/json"
                  }
                },
                "schema": {
                  "data": "data",
                  "model": {
                    "fields": {
                        "OPCOCode": { "type": "string" },
                        "OPCOName": { "type": "string" },
                        "OPCOAddress": { "type": "string" },
                        "OPCOZip": { "type": "string" }
                    }
                  }
                }
            },
            "filterable": {
              "defaultFilterColumn": "OPCOCode",
              "extra": false,
              "messages": {
                "info": ""
              },
              "operators": {
                "string": {
                  "contains": "Contains"
                },
                "number": {
                  "equal": "Equal"
                }
              }
            },
            "columns": [
              {"field": "OPCOCode", "title": "OPCOCode" },
              {"field": "OPCOName", "title": "OPCOName"},
              {"field": "OPCOAddress", "title": "OPCOAddress"},
              {"field": "OPCOZip", "title": "OPCO Zip"}
            ],
            "result": {
              "dataValueField": "OPCOCode",
              "dataTextField": "OPCOCode"
            },
            "height": 410,
            "scrollable": true,
            "selectable": true
          }
        }

    - name: "Category"
      description: "Category"
      visible: true
      enable: false
      displayOrder: 310
      defaultControlType: "TextBox"

    - name: "KeyPhrase"
      description: "Key Phrase"
      visible: true
      displayOrder: 320
      defaultControlType: "TextBox"
      determinesCategory: true
      enrichOtherFields: true

    - name: "PaymentDetail"
      description: "Payment Detail"
      typeName: "PaymentDetail"
      defaultControlType: "Array"
      fields:
        - name: "IBAN"
          description: "IBAN Number"
          defaultControlType: "TextBox"

        - name: "SWIFT"
          description: "SWIFT"
          defaultControlType: "TextBox"

        - name: "BankAccountNumber"
          description: "Bank Account Number"
          defaultControlType: "TextBox"	


ParameterDescription
NameDetermines the name of the field in JSON.
DescriptionAdds a brief description of the field.
VisibleDetermines if the field is displayed in the UI.
MandatoryDetermines whether the field value is mandatory.
EnableDetermines whether the field is enabled.
DisplayOrderDetermines the order in the UI where the field is displayed.
DefaultControlTypeDetermines the type of the field.
  • Array: For grid type fields like line items.
  • TextBox: For plain text fields.
  • NumericTextBox: For text fields with only numeric data.
  • ComboBox: For combination of text box and drop-down list type of fields.
  • MultiColumnComboBox: For combo box type fields with multiple columns.
  • MultiSelect: For combo box type fields that allow simultaneous multiple selections.
  • DatePicker: For date type fields.
  • PopupTable: For lookup control with multiple filters type fields.
ControlOptionsDetermines parameters to define values for multiple selection type of fields like combo box, popup table, multiselect, and multicolumn combo box.
The control option parameters for different type of fields may be different.
Enrich Other FieldsDetermines whether a field will enrich other fields. If true, the parameters from a field are applicable for other fields.


For example, for an Invoice extraction, one of the fields could be Document Type and its parameters could be the following:

name: "DocumentType"The name of the field in the JSON is DocumentType.
description: "DocumentType"A description of the field.
mandatory: trueIt is mandatory to have a value in the field.
enable: trueThe field is enabled.
visible: trueThe field is visible in the Eyeball screen in the portal.
displayOrder: 20The position of this field is 20 in order in the Eyeball screen in the portal.
controlType: "ComboBox"The field is a combo box.
"filter": "contains",The field has filters.
"dataValueField": "value"The data value of the field.
"dataTextField": "value"The data text of the field.
"dataSource":[            { "value": "Merchandize" },            { "value": "Freight Only" },            { "value": "Drop Shipments" }          ]The values for selection in the combo box.


Control Option parameters
ParameterDescription
WindowOptionsDetermines the window model, resizable, action of the field for combo box and popup table type fields.
GridOptionsDetermines the display data, formatting of the field for popup table type field.
SchemaDetermines the data and structure of the popup table type field.
FilterableDetermines which column(s) in the popup table type field will be filterable. 
OperatorsDetermines the use for filtering the column of the popup table type field.
ColumnsDetermines the column in the popup table type field.
ResultsDetermines the result of the dataValue and dataText field for the popup table type field.
HeightDetermines the height of the popup table type field.
ScrollableDetermines if the popup table type field is scrollable.
SelectableDetermines if the value of the popup table type field is selectable.


Add business columns to Eyeball task grids

  1. Duplicate the Update Unsigned Solution Variables workflow.
  2. Add a new application variable:
    • Name: UpdateVariableWorkflowName
    • Value: The name of the workflow space created in Step 1.
  3. For the OOTB Global variables, there are two default columns, Vendor Name and Invoice Amount.
  4. To add additional columns to the grid:
    1. Select the IDE Eyeball solution.
    2. Click on ManageUnsignedSolutionVariables.
    3. Add the required variable(s).
    4. Go to the workflow duplicated in Step 1.
    5. Edit the Update Variables activity to add the required variable(s) to the list.

IMPORTANT 
Ensure that the column order in the line items table is identical in both extraction-model.yaml and eyeball-client-configuration.yaml.

V1.0

Overview

The predefined configuration in the eyeball-condition yaml file defines the criteria for deciding whether the system performs the eyeball step. The criteria could be extraction confidence level of a field or specific value in a field or more. 

The configuration in the eyeball-client-configuration yaml file decides which and how the fields will appear in the eyeball screen in the portal.

Template

eyeball-condition.yaml
kind: ruleSet 
metadata: 
  name: extraction/v1/documents/eyeballing-decision 
spec: 
  nodes: 
  - if: 'it["InvoiceTotal"].Confidence > 0.99' 
    then: 
      decision: false 
  - if: 'it["VendorName"].Value != "ABC"' 
    then: 
      decision: true 
  - if: '1=1'
    then:
      decision: true
			
ParameterDescription
If thenThe condition based on which eyeballing is decided.

For example, in the above template, if the confidence level of Invoice Total field is more than 0.99 then eyeballing step is not performed.

eyeball-client-configuration.yaml
kind: document
metadata:
  name: extraction/v1/documents/eyeball-client-configuration
spec:
  fields:
    - name: "Case_Id"
      description: "Invoice Name"
      visible: false
      enable: false
      defaultControlType: "TextBox"

    - name: "DocumentType"
      description: "Document type"
      visible: true
      mandatory: true
      displayOrder: 20
      enable: true
      defaultControlType: "ComboBox"
      validation: >
        {
          "clearPattern": "[^a-zA-Z0-9 ]+"
        }
      controlOptions: >
        {
          "filter": "contains",
          "dataTextField": "value",
          "dataValueField": "value",
          "dataSource":[
            { "value": "Merchandize" },
            { "value": "Freight Only" },
            { "value": "Drop Shipments" }
          ]
        }

    - name: "VendorNumber"
      description: "Vendor Number"
      visible: true
      mandatory: true
      enable: true
      displayOrder: 90
      defaultControlType: "MultiColumnComboBox"
      controlOptions: >
        {
          "dataTextField": "VendorNumber",
          "dataValueField": "VendorNumber",
          "columns": [
            { "field": "VendorName", "title": "Vendor Name", "width": 200 },
            { "field": "VendorNumber", "title": "Vendor Number", "width": 200 },
            { "field": "VendorType", "title": "Vendor Type", "width": 200 }
          ],
          "filter": "contains",
          "virtual": {
              "itemHeight": 33
          },
          "height": 330,
          "dataSource": {
              "transport": {
                  "read": { 
                    "url": "/api/components/data-model/v1/query/VendorsByNumber",
                    "contentType": "application/json"
                  }
              },
              "pageSize": 40,
              "serverPaging": true,
              "serverFiltering": true
          }
        }
      
    - name: "RejectReason"
      description: "Reject Reason"
      visible: true
      displayOrder: 300
      defaultControlType: "ComboBox"
      controlOptions: >
        {
          "filter": "contains",
          "dataTextField": "value",
          "dataValueField": "value",
          "dataSource":[
            { "value": "Currency mismatch between invoice and PO/NPO" },
            { "value": "Duplicate Remit To Address" },
            { "value": "Full split failure" },
            { "value": "Incorrect Bill To Address" },
            { "value": "INVOICE RESCAN REQUIRED" },
            { "value": "Multiple invoices in single pdf" },
            { "value": "OpCo Code Not Found" },
            { "value": "Partial split failure" },
            { "value": "PO - Cancelled/ Invalid/ Not Found" },
            { "value": "Required information missing" },
            { "value": "Vendor Creation Required" },
            { "value": "Vendor does Not Match Invoice" },
            { "value": "Vendor Modification Required" }
          ]
        }

    - name: "InvoiceLineItem"
      description: "Line Items"
      typeName: "InvoiceLineItem"
      defaultControlType: "Array"
      fields:
        - name: "LineItemNumber"
          description: "LineItemNumber"
          visible: false
          defaultControlType: "TextBox"

        - name: "Description"
          description: "Description"
          defaultControlType: "TextBox"
          width: "45%"

        - name: "CatchWeight"
          description: "CatchWeight"
          defaultControlType: "TextBox"
ParameterDescription
NameDetermines the name of the field in JSON.
DescriptionAdds a brief description of the field.
VisibleDetermines if the field is displayed in the UI.
MandatoryDetermines whether the field value is mandatory.
EnableDetermines whether the field is enabled.
displayOrderDetermines the order in the UI where the field is displayed.
controlTypeDetermines the type of the field like Textbox or Combo box.
controlOptionsDetermines filters on the field.

For example, for an Invoice extraction, one of the fields could be Document type and its parameters could be the following:

name: "DocumentType"The name of the field in the JSON is DocumentType.
description: "DocumentType"A small description of the field.
mandatory: trueIt is mandatory to have a value of the field.
enable: trueThe field is enabled.
visible: trueThis field is visible in the UI.
displayOrder: 20In the UI the place of this field is 20 in order.
controlType: "ComboBox"This field is a combo box.
"filter": "contains",This field contains filters.
{"value": "Merchandize"},
{"value": "Freight Only"},
{"value": "Drop Shipments"}
Values for the combo box.

Add business columns to Eyeball task grids

  1. Duplicate the Update Unsigned Solution Variables workflow.
  2. Add a new application variable:
    • Name: UpdateVariableWorkflowName
    • Value: The name of the workflow space created in Step 1.
  3. For the OOTB Global variables, there are two default columns, Vendor Name and Invoice Amount.
  4. To add additional columns to the grid:
    1. Select the IDE Eyeball solution.
    2. Click on ManageUnsignedSolutionVariables.
    3. Add the required variable(s).
    4. Go to the workflow duplicated in Step 1.
    5. Edit the Update Variables activity to add the required variable(s) to the list.