# Advanced Settings

## Advanced Settings

## Configuring EKW Print functionality for Cloud EPICOR clients

1. Create new or use existing **EPICOR user/s** with access to **Companies** and **Sites** for which the printing function is to be set up.

{% hint style="info" %}
Unless sites are at the same physical location there should be a different user set up for each Site in each Company for which EKW print functionality is to be available.
{% endhint %}

2. In **EPICOR Printer Maintenance**, define printers for individual Sites for each **Company**.

{% hint style="info" %}
EKW will list all available printers so it is advisable that Site specific printer/s is prefixed with Site code followed by “\~” in the Description.
{% endhint %}

3. In **EKW,** go to **Settings** and **General Settings**, cloud customers will be able to specify **EPICOR** user name(set up in point 1) for currently logged in **Site**.
4. To successfully print from **EKW** connected to cloud **EPICOR** server, an **EPICOR** session has to be established by logging in to the **EPICOR client** at the site to which EKW is logged in, with the username configured.

{% hint style="warning" %}
️ Both EKW and the EPICOR client has to be logged in to the same company.
{% endhint %}

![](/files/7DD7PYixebLPMcU49MNQ)

![](/files/hHYaf9Ys8PX69GvX2xdi)

## Barcode Templates

### Introduction

{% hint style="info" %}
If you are scanning on a page that has a template specified, it will attempt to match the data scanned to the template. If the structure does not match, it will then ignore the template and treat the data as a normal scan (including checking whether the Dividing Character(s) are used within it). This can have unexpected effects if the template has the same character(s) as the Dividing Character(s) setting and the template match fails.
{% endhint %}

### **Template Types**

Barcode Templates are a feature for EKW that allows users to specify customizable formats for barcodes in order to extract desired data. They can be used in two different ways which are either **Fixed** or **Dynamic**.

Barcode Template can be specified as one of three possible types: **Fixed,** **Dynamic** or **GS1.**

#### Fixed Templates

Fixed Templates used when a barcode structure will not change. The template must match the structure of the barcode from left to right.

| **Barcode** | **Template**                 | **Result**                                |
| ----------- | ---------------------------- | ----------------------------------------- |
| *4234/553*  | *fixed:${poNum}/${packSlip}* | <p>poNum = 4234<br><br>packSlip = 553</p> |

#### Dynamic Templates

Dynamic Templates may be used when a barcode has unique identifiers for each field and some kind of separator character that can be used to identify the end of a field. The template does not need to match the left-to-right structure of the barcode as long as the unique identifiers are set up correctly.

<table data-header-hidden><thead><tr><th width="249"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Barcode</strong></td><td><strong>Template</strong></td><td><strong>Result</strong></td></tr><tr><td><em>#014234#02553#</em></td><td><em>dynamic:#01${poNum}#,#02${packSlip}#</em></td><td>poNum = 4234 packSlip = 553</td></tr></tbody></table>

#### GS1 Templates

GS1 templates are like dynamic ones but use GS1 standard AI codes as unique identifiers for each field instead of allowing user-defined separators, which contain standard definitions for the field. The template does not need to match the left-to-right structure of the barcode as long as the unique identifiers are set up correctly.

<table data-header-hidden><thead><tr><th width="249"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Barcode</strong></td><td><strong>Template</strong></td><td><strong>Result</strong></td></tr><tr><td>01932778200749973103019515220610</td><td><em>GS1:01${partNum}310n${qty}11${origMfgDate}15${bestBeforeDate}</em></td><td>partNum = 93277820074997 qty = 0.195 kg bestBeforeDate = 220610</td></tr></tbody></table>

### Template Structure

**STRUCTURE: \[type]:\[template]**

**Type**

Every template MUST begin with a type identifier. This will be the name of the type along with a colon.

![](/files/GQzuYJ8e1cCwX1Niz5D5)

![](/files/1BlzchHdYT6BtbxV8JvX)

<figure><img src="/files/wspf9JLfvTdoElIgk72n" alt=""><figcaption></figcaption></figure>

**Template**

After the type, the template itself is specified. Templates are composed from three components: sections, field identifiers and separators.

#### Sections

Each section is made up of a combination or one or more field identifiers along with any separators that are required. Fixed templates can only ever have one section. Dynamic barcodes can have one or more sections, which are separated by commas. GS1 barcodes can also have multiple sections, however they do no have a separator.

A fixed section can have multiple field identifiers in the one section, whereas dynamic and GS1 sections can only have one field identifier per section.

![](/files/qPeYRGAXg6qTI7hQKcDT)

![](/files/E98KiJ7V7j1mmTw9TLYZ)

<figure><img src="/files/XmVL8UPEyvkIz59Si8vI" alt=""><figcaption></figcaption></figure>

#### Field Identifiers

Every field identifier is defined by a dollar sign and left squiggly bracket, follow by the *program-defined* field name, followed by a right squiggly bracket (i.e. “${fieldname}”). The dollar sign and left bracket are used to identify the start of the field identifier. The field name must match a pre-defined list of supported field identifiers (listed at the top of the page). This field name is what the relevant barcode section is mapped to.

![](/files/xIg01tkpAZXSR9qgpnaj)

![](/files/tXmIPE3hHqlLOUJei4Ky)

<figure><img src="/files/sf1vUl8xIAVDxsfKDUm6" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**NOTE:** Maximum length of fields is not supported in 3.2.7, however this feature should be coming in from version 3.3.#. Once this feature is included, it can be used by specifying the field name as ${fieldname:5} to specify a max length of five characters. If a suffix is found before the fifth character, the field mapping will be shorter. The maximum length value is optional and fields can still be specified without the ":5" in order to have no maximum length. If a barcode has a field that you don't want to be used, use the field identifier of “${IGNORE}” for it.
{% endhint %}

#### Separators

Any characters that are outside of these field identifiers are considered separators and are used to separate the fields. These characters can be of any length and can exist both before and after the first and last field identifier respectively. A separator can be considered both a suffix of one field identifier and a prefix of another.

![](/files/90UtdAEd8X6MiOotid06)

<figure><img src="/files/nlDDofp6HwjfzfVfiBEN" alt="" width="317"><figcaption></figcaption></figure>

<figure><img src="/files/Yqtwe6FioKghoWEdQPYZ" alt=""><figcaption></figcaption></figure>

**Fixed Template**

For fixed barcodes, the type is "fixed:". Note that the use of lowercase characters is required.

Fixed templates have a single section that must be defined in a left-to-right order. The template has strict matching requirements and the relevant barcode must match exactly.

The logic for parsing fixed templates is as follows:

1. Once the type of barcode has been checked, the app will then look for any separator that exists before the first field (e.g. the “PREAMBLE-” in one of the example). This can be blank.
2. Once the initial separator has been matched, it will then extract the field name from the field identifier (along with an optional max length in 3.3.0 onward).
3. It then checks the template for any separator that exists after the field identifier. Once this is found, it then matches the initial separator (a.k.a the prefix separator) to the barcode, then reads any data from that point onward into the field until the next separator is found (the suffix separator).
4. For the first example, it will check after the the type “fixed:” to find there is no prefix separator. It will then use *field1* for the field name and the “-” as the suffix. When parsing the barcode itself, it starts from the start until it find the suffix separator to then map the value of *111* to *field1*.
5. If no suffix separator exists, it will map from the current point to the end of the barcode (i.e. for the *333* part of the barcode).
6. Once it has mapped a field identifier, it will then continue from that point for the next field identifier until all are mapped.

**Examples:**

| **Barcode**               | **Template**                               | **Result**                             |
| ------------------------- | ------------------------------------------ | -------------------------------------- |
| 111-222-333               | fixed:${field1}-${field2}-${field3}        | field1 = 111 field2 = 222 field3 = 333 |
| PREAMBLE-ab777$i999\*\*\* | fixed:PREAMBLE-${poNum}$i${packSlip}\*\*\* | poNum = ab777 packSlip = 999           |
| ABC123456                 | ixed:${poNum}123${packSlip}                | poNum = ABC packSlip = 456             |
| TEST-4295/7474--123       | fixed:TEST-${poNum}/${IGNORE}--${packSlip} | poNum = 4295 packSlip = 123            |

#### Dynamic Template

The primary difference between fixed and dynamic barcodes is that dynamic barcodes specify multiple small sections which can be used to map to any part of a barcode, instead of having to having to map to a 1-to-1, left-to-right relationship.

Each section must have a **unique** prefix separator (i.e. #01, #02, etc), followed by the field identifier and then a suffix separator. The suffix separator does not need to be unique, and may often contain a character that is also used as the prefix for other separators (i.e. another #).

Instead of parsing the barcode only once, dynamic templates will check the entire barcode scan for each section. The logic is as follows:

1. The template is split into sections based on the comma.
2. For each section, the app will search through the entire barcode value until it finds the prefix separator. It will then map the following data into the field name until it finds the suffix character.
3. Instead of fixed barcodes, which would then continue from that point for the next field, the app will search from the start of the barcode again for the next section.

![](/files/awZsfy6n9xwT6zlWqCQS)

The example above would be used for a barcode that looks like this: *#011234*\*#\*\*025555#\*. Note that the hash in bold is used both as the suffix to indicate the end of the first field and also part of the prefix for the unique identifier for the next section.

The suffix at the end of a section can be left blank *if you know for certain* that the field will always be the last one in a barcode. Since the suffix wouldn’t exist, the app would simply add everything from the where the prefix separator is up to the end of the barcode into the specified field.

**Examples**

| **Barcode**               | **Template**                             | **Result**                              |
| ------------------------- | ---------------------------------------- | --------------------------------------- |
| 1ABBD\~2$1200.50          | dynamic:1${poNum},2${packSlip}           | poNum = ABBD packSlip = $1200.50        |
| ~~1ABBD~~2$1200.50\~38877 | dynamic:1${poNum},\~2${packSlip}         | poNum = ABBD packSlip = $1200.50\~38877 |
| 1114295111222123222       | dynamic:222${poNum}222,111${packSlip}111 | poNum = 123 packSlip = 4295             |

#### GS1 Template

Much like dynamic templates, GS1 templates specify multiple small sections which can be used to map to any part of a barcode, instead of having to map to a 1-to-1, left-to-right relationship. However, unlikely dynamic templates, the prefixes in a GS1 template cannot be freely set to any value, but rather conform to a globally defined standard of GS1 Application Identifiers (AIs) that define meaning to and the format of the data that is being scanned.

GS1 Application Identifiers (AIs) are prefixes used to define meaning and format of data fields contained in the barcode. Each field defined in the template must have a **unique** prefix. Multiple prefixes can be defined as referring to the same input field. In this case, if multiple are present in the same barcode, the **last** instance of that input field that shows in the barcode is the value that will be used.

Some AIs are mapped to refer to specific units of measurment, e.g. 310n is associated with KG and 320n LB. Should the unit of measurement in the barcode not match the unit of measurement that EKW has associated with the part, an error will occur on the UOM field.&#x20;

AI codes that may appear in the barcode but are not relevant and do not need be processed can be set to be ignored by EKW, by using the value {IGNORE} in place of a field identifier.

GS1 templates use AI codes as field identifiers effectively mapping bar code values prefixed with a given code to template fields,

<table data-header-hidden><thead><tr><th width="249"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Barcode</strong></td><td><strong>Template</strong></td><td><strong>Result</strong></td></tr><tr><td>01932778200749973103019515220610</td><td><em>GS1:01${partNum}310n${qty}11${origMfgDate}15${bestBeforeDate}</em></td><td>partNum = 93277820074997 qty = 0.195 kg bestBeforeDate = 220610  </td></tr><tr><td><p>019327782007499731030195131522061010201611119</p><p>Example template: </p></td><td><em>GS1:01${partNum}320n${qty}310n${qty}11${origMfgDate}13${origMfgDate}15${bestBeforeDate}10${lotNum}21${lotNum}20${IGNORE}</em></td><td>partNum = 93277820074997 qty = 0.195 kg bestBeforeDate = 220610  </td></tr><tr><td>01932778200749973101001091CHI</td><td><em>GS1:01${partNum}320n${qty}91${fromWarehouse}</em></td><td>partNum = 93277820074997 qty = 1.0 kg fromWarehouse = CHI</td></tr></tbody></table>

&#x20;

**GS1 AI code mappings to EPICOR**

Specific AIs are mapped within EKW to refer to a specific field, as shown in the table below. If these mappings are not sufficient for you're needs, the full list of useable prefixes for a GS1 template within EKW can be found at <https://ref.gs1.org/ai/>

| AI (Application Identifiers) | Description                                                          | EKW field                                         | Format   |
| ---------------------------- | -------------------------------------------------------------------- | ------------------------------------------------- | -------- |
| 01                           | Global Trade Item Number (GTIN)                                      | partNum (mapped via UOM Product Code)             | N2+N14   |
| 02                           | Global Trade Item Number (GTIN) of contained trade items             | partNum (mapped via UOM Product Code)             | N2+N14   |
| 10                           | Batch or lot number                                                  | lotNum, fromLot, toLot                            | N2+X..20 |
| 11                           | Production date                                                      | origMfgDate (YYMMDD)                              | N2+N6    |
| 13                           | Packaging date                                                       | origMfgDate (YYMMDD)                              | N2+N6    |
| 15                           | Best before date                                                     | bestBeforeDate (YYMMDD)                           | N2+N6    |
| 17                           | Expiration date                                                      | expireDate (YYMMDD)                               | N2+N6    |
| 21                           | Serial Number                                                        | serialNum (qty set to 1 \[EA])                    | N2+X..20 |
| 310n                         | Net weight, kilograms                                                | qty \[KG]                                         | N4+N6    |
| 320n                         | Net weight, pounds                                                   | qty \[LB]                                         | N4+N6    |
| 343n                         | Length or first dimension, yards                                     | qty \[YD]                                         | N4+N6    |
| 30                           | Variable count of items                                              | qty \[EA]                                         | N2+N..8  |
| 37                           | Count of trade items or trade item pieces contained in logistic unit | qty \[EA]                                         | N2+N..8  |
| 90                           | Information mutually agreed between trading partners                 | packSlip                                          | N2+X..30 |
| 91                           | Company internal information                                         | lineNum                                           | N2+X..90 |
| 92                           | Company internal information                                         | relNum                                            | N2+X..90 |
| 93 through to 99             | Company internal information                                         | available for use with any input field on EKW fom | N2+X..90 |
| 240                          | Additional product identification assigned by the manufacturer       | partNum                                           | N3+X..30 |
| 241                          | Customer part number                                                 | partNum                                           | N3+X..30 |
| 250                          | Secondary serial number                                              | serialNum or lotNum, fromLot, toLot               | N3+X..30 |
| 400                          | Customer purchase order number                                       | poNum                                             | N3+X..30 |

GTIN (AI 01 or 02) is mapped to partNum but this is rarely the actual Part Num in EPICOR, however, GTIN can be stored against a Part as Product Code. If you wish to use a GS1 barcode in place of a part barcode, the below setting "Extract only part number from GS1-128 barcodes" can be turned on.

<figure><img src="/files/1ZY5JAUfklIahQvFrxAX" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7wwt07CKUjCXw3c4ItrN" alt=""><figcaption></figcaption></figure>

**Special Notes**

**Unique Suffixes**

Defining unique suffixes in a dynamic template or a fixed template using the Template Configurator is **not** supported as of the 5.30.0 release. If you wish for your suffixes to not be identical, you must define your template via typing into the template input field, or change the suffixes generated in the Template Configurator via the input field.

* defined using the Template Configurator: dynamic:222${poNum}\~,111${packSlip}\~
* defined by manually defining the template: dynamic:222${poNum}222,111${packSlip}111, dynamic:222${poNum}222,111${packSlip}

**Tabs**

Support for using tabs within a template is available as of vwersion 3.3.# onward (same as support for maximum length fields).\
If you wish to use tabs within your barcode as separators between the fields, it will have to be represented in the template with "\TAB". Tabs that are added directly into the template will not work.

* **Incorrect**: fixed:${poNum} ${packSlip}
* **Correct**: fixed:${poNum}\TAB${packSlip}

**Application Identifier Mappings**

Data being scanned for an Application Identifier that maps to a date field must be in “YYMMDD” format i.e. 240918, If a format other then this is provided the AI will not be able to generate a date and the field will not be populated.&#x20;

Data being scanned for an AI that maps to a numeric field must be a number, as the scan will fail if any non-numeric values are included.

#### Steps to Create Your Own Template:

#### For Fixed

| **Step**                                              | **Example**                  |
| ----------------------------------------------------- | ---------------------------- |
| 1. Add "fixed:" to the start of the template          | "fixed:"                     |
| 2. Add any prefix before the first field if necessary | "fixed:" or "fixed:TEST-"    |
| 3. Add "${fieldname}" to the template                 | "fixed:${poNum}"             |
| 4. Add any suffix after the field if necessary        | "fixed:${poNum}/"            |
| 5. Repeat as required:                                |                              |
| a. Add another field name "${fieldname2}"             | "fixed:${poNum}/${packSlip}" |
| b. Add another suffix after the field if necessary    |                              |

#### For Dynamic

| **Step**                                                                                                                    | **Example**                            |
| --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| 1. Add "dynamic:" to the start of the template                                                                              | "dynamic:"                             |
| 2. Repeat as required:                                                                                                      |                                        |
| a. Add the unique identifier prefix before field name                                                                       | "dynamic:#01"                          |
| b. Add "${fieldname}" to the template                                                                                       | "dynamic:#01${poNum}"                  |
| c. Add a suffix to identify the end of the field (can be ignored if the field will always be the last field in the barcode) | "dynamic:#01${poNum}#"                 |
| d. Add a comma (UNLESS this is the last section in the template, in which case do not add a comma)                          | "dynamic:#01${poNum}#,#02${packSlip}#" |

#### For GS1

| **Step**                                   | **Example**                                |
| ------------------------------------------ | ------------------------------------------ |
| 1. Add "GS1:" to the start of the template | "GS1:"                                     |
| 2. Repeat as required:                     |                                            |
| a. Add the chosen AI before the field      | "GS1:01"                                   |
| b. Add "${fieldname}" to the template      | "GS1:01${partNum}"                         |
| Repeat until desired fields are included   | "GS1:01${partNum}320n${qty}91${reference}" |

### Template Configurator

{% hint style="warning" %}
&#x20;The Template Configurator functionality is still in development and instructions listed here may change or no longer work in upcoming releases.
{% endhint %}

Manually typing out a template can be difficult on a small device screen and prone to errors as a result of typos. You can instead generate your template through selecting your required fields in the template configurator modal.

<figure><img src="/files/wlhD3FHPZc5YyBR4ljng" alt=""><figcaption></figcaption></figure>

After selecting the template you wish to configure, users can click on the 'Configure Template' button. From there a modal opens which allows users to select both the template type they wish to configure and a list of fields available on the page that could be included, displayed in the form of toggles.

<figure><img src="/files/L5nNotSv9MGsA4aCKMOC" alt=""><figcaption></figcaption></figure>

For all template types, the user is required to select two or more fields from the available list in order to proceed with template generation.

When selecting a template of type Fixed or Dynamic the 'Separator' input field becomes a required field in order to proceed. This Separator field serves the role of both the separator when a Fixed templated is selected, and a Suffix when the dynamic template is selected.

{% hint style="warning" %}
Note, as of EKW version 5.30.0, Template separators/suffixes cannot be defined as unique values using the Template configurator. Please see the earlier  [Template Structure](https://docs.biscit.com/epicor-kinetic-warehouse/epicor-kinetic-warehouse-user-guide/advanced-settings#template-structure) section for information on defining your template manually should you require unique separators.
{% endhint %}

After selecting the template type, filling in the separator if needed and selecting the required fields. Users can click on 'Continue' at which point they will be brought to the next stage of template configuration. On this next screen, the prefix value can be added for dynamic and GS1 templates, and the order of the fields in the template can be rearranged if needed.

<figure><img src="/files/Z3iK5mncKstx3SNDY3Kn" alt=""><figcaption></figcaption></figure>

Before saving the newly configured template, users are able to test that they have correctly mapped the fields to their barcode inside the modal by using the button 'Test Template'

<figure><img src="/files/0UBoCVAXXcId1KykjNl9" alt=""><figcaption></figcaption></figure>

On this screen users will be able to view a sample of the template they have configured, and scan a barcode to confirm that it functions as expected.

&#x20;

<figure><img src="/files/bYG08MNsHef4K9n8uxAm" alt=""><figcaption></figcaption></figure>

Once you are happy with the template you have configured, you can close the test modal via the 'Back' button and click 'Save'. This will close the configurator modal and display your newly created template in the template input field.

<figure><img src="/files/pobppDuCzWDh8lseF15P" alt=""><figcaption></figcaption></figure>

### Customisable Barcode Template Functionality

USER CAN VERIFY WHAT, IF ANY, MULTISCAN FUNCTION EXISTS ON ANY PAGE BY

Opening the Right-Hand menu and selecting ***Scanner Subscriptions*** menu item

{% columns %}
{% column %}

![](/files/LYGqv2aHIu0CfL4vvsCF)
{% endcolumn %}

{% column %}

![](/files/YtR7AOKSUdOUCeb2N1Db)
{% endcolumn %}
{% endcolumns %}

**Multiscan Types**

There are 2 different types of multiscan functionality available in EKW.

1. Predefined patterns
2. Predefined pattern of field values programmed directly on the page,

e.g Issue Assembly By ID, Bin Tracker, Lot Tracker etc.

![](/files/Q0YqU8CV0V4v9sSgMKKe)

* predefined patterns of field values selected from a list of available patterns in settings that is then applied to the relevant page i.e., Pack Line in Pack Out

![](/files/AxzCnt8b3bRkUHRlgbl1)

(Page means current open form or an active tab on multi tab form)

One configurable element, of otherwise fixed pattern, is Dividing Character(s) in in ***Settings > Scanner*** – **Bar Codes** section.

![](/files/R8pfQeYltVM3mgnamW2j)

3. A template-based pattern that is defined against a page implementing template multi scan. Templates can be defined for available pages in

***Settings > Scanner*** – **Template** section

![](/files/bwmg0nSRk6ZEEK6KMTdc)

Following pages currently support template definitions:

* PO Receipt > Entry
* PO Receipt > Receipt
* Move Inventory > Entry
* Move Inventory > Transaction
* Container Receipt > Receipt
* Serial Manager Modal
* Process Issue Form (STK-\*)
* Material Queue > My Material Queue (STK-\*)
* My Outbound Order > Lines (STK-\*)
* Customer Shipment > Packout
* Customer Shipment> Pack Line
* Kanban Receipts> Entry
* Transfer Order Ship > Ship Line
* Adjust Inventory > Entry
* Adjust Inventory > Transaction
* Move Inventory > Entry
* Move Inventory > Transaction
* Move Material > Entry
* Move Material > Transaction
* Move Material Request > Entry
* Move Material Request > Transaction
* Move PCID
* Issue Material > Entry
* Issue Material > Data Entry
* Return Material > Entry
* Return Material > Data Entry
* Bin Tracker > Entry
* Part Tracker > Entry
* PCID Tracker > Entry
* Cycle Count Ext > Select Tag

### Location Templates

{% hint style="info" %}
️ Location Templates are templates of values that are going to be applicable for **Warehouse** and **Bin** combinations. With a single scan, the **Location Templat**e will be able to populate the **Warehouse Code** and **Bin Number** field values in **EKW**.
{% endhint %}

1. Tap on the **Menu** icon located in the upper left side of the screen to pull up the **Main Menu.**

{% columns %}
{% column %}

<figure><img src="/files/zer77Hdwhb43A7ss6Qqu" alt="" width="308"><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}
![](/files/qhjdaQgFLLJoB31QlA6L)
{% endcolumn %}
{% endcolumns %}

2. Under the **Main Menu**, tap on **Settings** and select **Scanner**.
3. Edit the Location templates in the **Location Template** field.

{% hint style="info" %}
The **Location Template** field supports **Fixed** and **Dynamic Template** and **GS1** format.
{% endhint %}

{% columns %}
{% column %}

![](/files/Zpq3tntv17hXmMPrEfNJ)
{% endcolumn %}

{% column %}

![](/files/Xn3dMqMigpgcMSOybtmV)
{% endcolumn %}
{% endcolumns %}

4. Once set, a single scan can populate the **Warehouse Code** and **Bin Number** fields in the applicable pages.<br>
5. Location Templates are available in these locations:

* Issues and Returns
  * Issue Assembly > Data Entry tab
  * Issue Material > Data Entry tab
  * Issue Misc Material > Process tab
  * Return Assembly > Data Entry tab
  * Return Material > Data Entry tab
  * Return Miscellaneous Material > Process tab
  * Issue Assembly By ID > Process tab
  * Issue Material By ID > Process tab
  * Return Assembly By ID > Process tab
  * Return Assembly By ID > Process tab
* Material Queue
  * Process By ID > Process tab
  * My Material Queue > Process tab
  * My Outbound Order > Process tab
  * Auto Select Trans > Process tab

{% hint style="info" %}
️ Note: Scan Sequencing on My Material/My Outbound Orders > Process form disables location template scanning on that page
{% endhint %}

* Inventory
  * Adjust Inventory > Transaction tab
  * Move Inventory > Transaction tab
  * Move Lot
  * Move Serial Number
* Moves / Requests
  * Move Material Request > Transaction tab
* Shipping
  * Transfer Order Ship > Line tab

Template types available for use are:

**Fixed**

Fixed templates are used when a barcode has a fixed structure which does not change. The defined template must match the structure of the barcode from left to right.

**Dynamic**

Dynamic templates may be used when a barcode has unique identifiers for each field and separator character that can be used to identify the end of a field. The template does not need to match the left-to-right structure of the barcode as long as the unique identifiers are set up correctly.

**GS1**

GS1 templates are like dynamic ones but use GS1 standard AI codes as unique identifiers for each field and field’s standard definitions to read values. The template does not need to match the left-to-right structure of the barcode as long as the unique identifiers are set up correctly.

For more information on defining a template of type Fixed, Dynamic or GS1, please see [Template Structure](https://docs.biscit.com/epicor-kinetic-warehouse/epicor-kinetic-warehouse-user-guide/advanced-settings#template-structure)

### Template Processing

**PO Receipt > Entry**

Mandatory fields in the template (scan opens PO Receipt > Receipt tab):

*poNum, packSlip*

Optional fields set1 (when provided will open PO Receipt > Line tab)

*partNum, lineNum, relNum*

(If lineNum and/or relNum not provided first item in the list matching the partNum will be opened)

Optional fields set2 (when provided with set1 will populate values in PO Receipt > Line tab

*qty, uom, lotNum*

(Only provided values will be used to populate relevant fields)

{% hint style="info" %}
With a single scan of the bar code containing mandatory and optional variables, it is possible to populate text box values in Entry tab, select the receipt line and open Line tab and finally, populate text boxes in Line tab with provided values. GS1 template can be defined for this page, *poNum* and *packSlip* fields can respectively be mapped to AI 400 and 90 contained in GS1 barcode. Optional variables l*ineNum* and *relNum* can be mapped to AI 91 and 92.
{% endhint %}

**PO Receipt > Receipt**

Mandatory fields in the template (scan opens PO Receipt > Line tab tab):

*partNum*

Optional variables set1 (when provided will open PO Receipt > Line tab)

*lineNum, relNum*

(If lineNum and/or relNum not provided first item in the list matching the partNum will be opened)

Optional variables set2 (when provided with set1 will populate values in PO Receipt > Line tab

*qty, uom, lotNum*

(Only provided values will be used to populate relevant fields)

{% hint style="info" %}
With a single scan of the bar code containing mandatory and optional variables, it is possible to select the receipt line in Receipt tab and open Line tab and finally, populate text boxes in Line tab populated with provided values. GS1 template can be defined for this page, lot attribute fields such as *bestBeforeDate, origMfgDate, cureDate, expireDate* and *mfgLot* can be mapped to relevant AI values contained in GS1 barcode.
{% endhint %}

**Container Receipt > Receipt**

Mandatory fields in the template (scan opens Container Receipt > Line tab tab):

*partNum*

Optional variables set1 (when provided will open Container Receipt > Line tab)

*lineNum, relNum*

(If lineNum and/or relNum not provided first item in the list matching the partNum will be opened)

Optional variables set2 (when provided with set1 will populate values in PO Receipt > Line tab

*qty, uom, lotNum*

(Only provided values will be used to populate relevant fields)

{% hint style="info" %}
With a single scan of the bar code containing mandatory and optional variables, it is possible to select the receipt line in Receipt tab and open Line tab and finally, populate text boxes in Line tab populated with provided values. GS1 template can be defined for this page, lot attribute fields such as *bestBeforeDate, origMfgDate, cureDate, expireDate* and *mfgLot* can be mapped to relevant AI values contained in GS1 barcode.
{% endhint %}

**Move Inventory > Transaction.**

Mandatory fields in the template

*warehouseCode, binNum* (scan populates Warehouse Code and Bin Number)

{% hint style="info" %}
By default the "To" locations fields will be populated from template scan. Also when the focus on "To" location, the value pair that is scanned will populate the "To" locations fields. With the focus on "From" location, the value pair that is scanned will populate the "From" locations fields.
{% endhint %}

**Move Inventory > Entry.**

Mandatory fields in the template (scan opens Move Inventory > Transaction tab)

*partNum (partNum and revNum for Parts tracked by revision) OR pcid*

Optional variables set (when provided will populate values in Move Inventory > Transaction tab)

*qty, uom, fromWarehouse, fromBin, toWarehouse, toBin, fromLot, toLot, serialNum*

Only *toWarehouse, toBin* are required with *pcid*

(Only provided values will be used to populate relevant fields)

{% hint style="info" %}
With a single scan of the bar code containing mandatory and optional variables, it is possible to populate text box values in Entry tab, open Transaction tab and finally, populate text boxes in Transaction tab with provided values including lot. GS1 template can be defined for this page, *fromLot OR toLot* fields can be mapped to AI 10 values contained in GS1 barcode. Quantity in EA is read from AI 37 and weight quantities from AI 310n or 320n. When Serial number AI 21 is present and mapped to *serialNum,* field quality is defaulted to 1 and UOM to EA
{% endhint %}

**Serial Manager Modal**

Mandatory fields in the template

*serialNum*

{% hint style="info" %}
The template needs to be defined so that only serial number is extracted from bar code that may or may not contain additional elements
{% endhint %}

**Customer Shipment > Pack Out > Pack Line**

Mandatory fields in the template\
\&#xNAN;*partNum*\
Optional variables set *lineNum, relNum, warehouseCode, binNum, lotNum, jobNum, kitNum, kitRevNum, orderNum, qty, uom*

{% hint style="info" %}
With a single scan of the bar code containing mandatory and optional variables, it is possible to populate values in Pack Line tab. GS1 template can be defined for this page, *partNum* field can be mapped to AI 01 or AI 02, *qty* field can be mapped to AI 37 and *lotNum* field can be mapped to AI 10 value contained in GS1 barcode.
{% endhint %}

**Process Issue Form (STK-\*).**

Mandatory fields in the template\
\&#xNAN;*partNum*\
Optional variables set *qty, uom, attrSet,* *fromPCID, fromWarehouse, fromBin, lotNum, toWarehouse, toBin, reference, uniqueId*

{% hint style="info" %}
With a single scan of the bar code containing mandatory and optional variables, it is possible to populate values in Process tab and scan validate Part Num and other set scan validations. GS1 template can be defined for this page, partNum field can be mapped to AI 01 and lotNum field can be mapped to AI 10 value contained in GS1 barcode.
{% endhint %}

**Kanban Receipts > Entry:**

*Mandatory*:

* partNum

*Optional:*

* revNum
* altMethod

{% hint style="warning" %}
️ GS1 is not applicable for this template
{% endhint %}

**Adjust Inventory > Entry:**

*Mandatory*:

* partNum (not pcid)*(partNum and revNum for Parts tracked by revision)* on Entry tab

*Optional:*

* qty (or nbrOfPieces, not both at the same time)
* uom
* warehouseCode
* binNum
* reasonCode
* lotNum
* attrSet

{% hint style="warning" %}
️ GS1 is not applicable for this template
{% endhint %}

**Transfer Order Ship> Ship Line (Add List)**

Mandatory:

* partNum

*Optional:*

* lineNum (the 1st line number will be picked automatically in the record, unless specified)
* qty
* uom
* warehouseCode
* binNum

{% hint style="warning" %}
️ GS1 is possible for this template. partNum field can be mapped to 02, 240 or 241, qty can be mapped to 37, 310n, 320n
{% endhint %}

**Issue Material > Entry:**

*Mandatory*:

* jobNum
* assemblySeq
* mtlSeq

*Optional:*

* partNum
* attrSet
* qty
* uom
* fromPCID
* fromWarehouse
* fromBin
* lotNum
* toWarehouse
* toBin

**Issue Material > Data Entry:**\
\&#xNAN;*Variable fields:*

{% hint style="info" %}
Two of these variable fields must be filled in to be considered a template
{% endhint %}

* partNum
* attrSet
* qty
* uom
* fromPCID
* fromWarehouse
* fromBin
* lotNum
* toWarehouse
* toBin

**Return Material > Entry:**\
\&#xNAN;*Mandatory*:

* jobNum
* assemblySeq
* mtlSeq

*Optional:*

* partNum
* attrSet
* qty
* uom
* fromPCID
* fromWarehouse
* fromBin
* lotNum
* toWarehouse
* toBin

**Return Material > Data Entry:**

*Variable fields:*

{% hint style="info" %}
Two of these variable fields must be filled in to be considered a template
{% endhint %}

* partNum
* attrSet
* qty
* uom
* fromPCID
* fromWarehouse
* fromBin
* lotNum
* toWarehouse
* toBin

**Part Tracker>Tracker**

*Mandatory:*

* partNum

**Move Material > Entry**

*Mandatory:*

* jobNum
* assemblySeq
* mtlSeq

*Optional:*

* qty
* uom
* nbrOfPieces
* lotNum
* fromWarehouse
* fromBin
* toWarehouse
* toBin

**Move Material > Transaction**

*Variable fields:*

{% hint style="info" %}
Two of these variable fields must be filled in to be considered a template
{% endhint %}

* toBin
* toWarehouse
* fromBin
* fromWarehouse
* lotNum
* nbrOfPieces
* uom
* qty

<br>

{% hint style="info" %}
**Points to note regarding lot number creation using GS1 template.** 1. If neither AI code 10 or 21 are found in the barcode and no potential attribute fields (11, 12, 13, 15) are found or no mapping to any LOTATTR field set to IGNORE in the template then DO NOTHING – if part is lot tracked and may or may not require attribute entry all entries need to be entered manually. 1. If neither AI code 10 or 21 are found in the barcode but any potential attribute fields (11, 12, 13, 15) is found NEXTLOT button press is simulated (lot number generated) Attribute Entry form opens with prefilled date value from the scan. 1. AI code 10 or 21 found but mapped and mapped to {mfgLot} which is lot attribute (date lot attributes may or may not be present) NEXTLOT button press is simulated (lot number generated) Attribute Entry form opens with prefilled date value from the scan. 1. AI code 10 or 21 found and mapped to {lotNum} (date lot attributes may or may not be present) Lot Number in Line tab is populated with the scanned/mapped value and lot created. Attribute Entry form opens depending on the Part Lot Attribute configuration

* All attributes set to “Not Tracked”  - Attribute Entry Form will not open, irrespective of whether attribute dates present in the barcode or notAt least one attribute set as Tracked or Mandatory
* Attribute Entry Form will open values that can be populated will be populated 5. Bar code with previously defined Lot Number is scanned Lot number is accepted – Attribute Entry form does not open. (i.e. equivalent to current behaviour when existing lot is entered/scanned or selected from the list)
  {% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.biscit.com/epicor-kinetic-warehouse/epicor-kinetic-warehouse-user-guide/advanced-settings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
