Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
barcode_scanning:handheld_computer [2025/11/24 12:26] Gary Willettsbarcode_scanning:handheld_computer [2026/01/05 13:03] (current) Gary Willetts
Line 9: Line 9:
 Currently mSupply is compatible with Honeywell handheld computer barcode scanners like the CK65 shown in the image above and the only function available on these scanners is goods receiving. Currently mSupply is compatible with Honeywell handheld computer barcode scanners like the CK65 shown in the image above and the only function available on these scanners is goods receiving.
  
-As with using simple barcode scanners as described in the previous pages of the documentation, mSupply reads GS1 type barcodes with these devices. These barcodes can be in either 1D linear or 2D QR-code or datamatrix forms. Non GS1 type barcodes will be scanned successfully but ignored by mSupply.+As with using simple barcode scanners as described in the previous pages of the documentation, mSupply reads GS1 type barcodes with these devices. These barcodes can be in either 1D linear or 2D datamatrix forms. Non GS1 type barcodes will be scanned successfully but ignored by mSupply.
  
  
Line 23: Line 23:
 The first step is to create users in mSupply for all the users who are going to use the barcode scanners. Follow the instructions here to do that: [[admin:managing_users]]. The users don't need any particular permissions to use the barcode scanner, they just need to be active and able to login to mSupply. The first step is to create users in mSupply for all the users who are going to use the barcode scanners. Follow the instructions here to do that: [[admin:managing_users]]. The users don't need any particular permissions to use the barcode scanner, they just need to be active and able to login to mSupply.
  
-==== 2. Download the mSupply scanner app ====+==== 2. Turn on the alternate server ==== 
 +The app on the barcode scanner communicates with mSupply via a REST API. To enable this communication you must turn on the Alternate server on the //Alternate server// tab of the mSupply preferences page. See the [[preferences:general#alternate_server_tab|16.01. General preferences]] page for details on this.  
 + 
 +==== 3. Download the mSupply scanner app ====
 Download the app from here: [[https://github.com/msupply-foundation/zapp/releases]] Download the app from here: [[https://github.com/msupply-foundation/zapp/releases]]
  
-==== 3. Load the mSupply scanner app onto the scanner ====+==== 4. Load the mSupply scanner app onto the scanner ====
 Load the mSupply scanner app (Zapp App) apk file onto the scanner device itself by following the manufacturer's instructions. Find the apk file on the device and tap on it to install it. When you have done that, you will see the //Zapp App// icon on the scanner's main screen: Load the mSupply scanner app (Zapp App) apk file onto the scanner device itself by following the manufacturer's instructions. Find the apk file on the device and tap on it to install it. When you have done that, you will see the //Zapp App// icon on the scanner's main screen:
  
 {{ .:pasted:20251117-101450.png?250 }} {{ .:pasted:20251117-101450.png?250 }}
  
-==== 4. Open the app ====+==== 5. Open the app ====
 Tap on the //Zapp App// icon and the app will open at the login window: Tap on the //Zapp App// icon and the app will open at the login window:
  
Line 42: Line 45:
 Enter the URL of your mSupply alternative server in the field (see the [[cold_chain_equipment:configure_coldchain_app_on_desktop#turn_on_the_alternate_server|20.03. Cold Chain App Notifications]] page for details on how this is set up). You only have to do this step the first time you open the app or if you need to change the URL).  Enter the URL of your mSupply alternative server in the field (see the [[cold_chain_equipment:configure_coldchain_app_on_desktop#turn_on_the_alternate_server|20.03. Cold Chain App Notifications]] page for details on how this is set up). You only have to do this step the first time you open the app or if you need to change the URL). 
  
-==== 5. Login to the app ==== +==== 6. Login to the app ==== 
-Enter your mSupply user name and password in the **Username** and **Password** fields. Then tap on the **Login** button to login to the app. Your credentials will be checked against those stored on the mSupply server found at the URL entered in step 4.+Enter your mSupply user name and password in the **Username** and **Password** fields. Then tap on the **Login** button to login to the app. Your credentials will be checked against those stored on the mSupply server found at the URL entered in step 5.
  
 Initial setup is now complete. Initial setup is now complete.
Line 50: Line 53:
 ===== Goods Receiving ===== ===== Goods Receiving =====
 ==== 1. Login ==== ==== 1. Login ====
-When using the app after initial set up set up has been completed, the first thing you must do is login to the app. Tap on the Zappo App icon on the scnner's main screen and enter your mSupply username and passowrd in the **Username** and **Password** fields. Tap on the **Login** button to login. If you are allowed to login to more than one store you will be shown a list of stores to select from:+When using the app after initial set up set up has been completed, the first thing you must do is login to the app. Tap on the Zapp App icon on the scnner's main screen and enter your mSupply username and passowrd in the **Username** and **Password** fields. Tap on the **Login** button to login. If you are allowed to login to more than one store you will be shown a list of stores to select from:
  
 {{ .:pasted:20251117-105217.png?250 }} {{ .:pasted:20251117-105217.png?250 }}
Line 59: Line 62:
  
 ==== 2. Select the supplier invoice ==== ==== 2. Select the supplier invoice ====
-You are shown a list of new ('nw') status supplier invoice in the store you are logged in to:+You are shown a list of new (''nw'') status supplier invoices in the store you are logged in to:
  
 {{ .:pasted:20251117-105601.png?250 }} {{ .:pasted:20251117-105601.png?250 }}
Line 77: Line 80:
  
 {{ .:pasted:20251117-111026.png?250 }} {{ .:pasted:20251117-111026.png?250 }}
 +
  
 ==== 3. Start scanning ==== ==== 3. Start scanning ====
Line 116: Line 120:
  
 === a. If the barcode doesn't contain a GTIN === === a. If the barcode doesn't contain a GTIN ===
-You will be shown an error message and asked to scan again.+Te scanner will register the scan but it will be ignored. You must scan another barcode which contains a GTIN.
  
 === b. If the GTIN does not belong to an item in mSupply === === b. If the GTIN does not belong to an item in mSupply ===
Line 132: Line 136:
 You will be shown a page with fields showing the contents of the scan and with a message telling you that this is a new item that is not yet on the invoice: You will be shown a page with fields showing the contents of the scan and with a message telling you that this is a new item that is not yet on the invoice:
  
-{{ .:pasted:20251124-121245.png?250 }}+{{ .:pasted:20251124-131826.png?250 }}
  
 Note that only the fields that were present in the scan will be filled in, other fields will not be affected or will be empty. Note that only the fields that were present in the scan will be filled in, other fields will not be affected or will be empty.
  
-  * The **Enter barcode** field contains the name of the item connected to the GTIN that was scanned+  * The name of the item matcvhing the GTIN scanned and its code are displayed at the top.
-  * The **Last scanned** field shows the GTIN that was scanned.+
   * The **Quantity (Packs)** field contains the number of packs that were scanned. This will be 0 if the barcode did not contain the number of packs (most often they do not). This is the only field that is editable. All other fields are read only and can only be filled with information from a scanned barcode. To edit the contents of this field, tap on it and then enter the number of packs for this line. If there is no number of packs contained in the scanned barcode then you will need to enter this field manually.   * The **Quantity (Packs)** field contains the number of packs that were scanned. This will be 0 if the barcode did not contain the number of packs (most often they do not). This is the only field that is editable. All other fields are read only and can only be filled with information from a scanned barcode. To edit the contents of this field, tap on it and then enter the number of packs for this line. If there is no number of packs contained in the scanned barcode then you will need to enter this field manually.
   * The **Batch** field contains the batch of the item. This will be left empty if no batch was included in the barcode.   * The **Batch** field contains the batch of the item. This will be left empty if no batch was included in the barcode.
Line 143: Line 146:
  
 To continue, either: To continue, either:
-  * scan another barcode containing a GTIN. This will save the line and display a window according to what you scanned. Note: saving the line is not possible if a **Quantity (packs)** value has not been entered - you will be shown a message telling you this if you scan another GTIN-containing barcode before entering a **Quantity (packs)** value.+  * scan another barcode containing a GTIN. This will save the line and display a window according to what you scanned (one of the options a-e). Note: saving the line is not possible if a **Quantity (packs)** value has not been entered - you will be shown a message telling you this if you scan another GTIN-containing barcode before entering a **Quantity (packs)** value.
   * tap on the **Save** button, which is enabled as soon as a **Quantity (packs)** value has been entered. This will save the current line and take you back to the list of lines on this invoice.   * tap on the **Save** button, which is enabled as soon as a **Quantity (packs)** value has been entered. This will save the current line and take you back to the list of lines on this invoice.
   * tap on the **Cancel** button. This will discard the current line and take you back to the list of lines on this invoice.   * tap on the **Cancel** button. This will discard the current line and take you back to the list of lines on this invoice.
  
 === d. If the barcode contains a GTIN, batch and expiry date matching a line already on the invoice === === d. If the barcode contains a GTIN, batch and expiry date matching a line already on the invoice ===
 +You will be shown a window with the name of the item associated with the GTIN in the scan at the top, followed by a message telling you that this line is already on the invoice:
  
 +{{ .:pasted:20251124-124633.png?250 }}
 +
 +  * **Quantity to add**: this is the only editable field. Tap in here and enter the number of packs to be added to the line on the invoice. This field will be filled in for you if the barcode contains a number of packs value.
 +  * The **Current** field tells you how many packs of this item and batch are already on the invoice.
 +  * **Batch**: the batch of this line. Read only, populated from the barcode scanned.
 +  * **Expiry**: the expiry date of this line. Read only, populated from the barcode scanned.
 +  * **Pack size**: the number of units in a pack. Read only, a property of the GTIN.
 +
 +To continue, either:
 +  * scan another barcode containing a GTIN. This will save the line and display a window according to what you scanned (one of the options a-e). Note: saving the line is not possible if a **Quantity (packs)** value has not been entered - you will be shown a message telling you this if you scan another GTIN-containing barcode before entering a **Quantity (packs)** value.
 +  * tap on the **Save** button, which is enabled as soon as a **Quantity (packs)** value has been entered. This will save the current line and take you back to the list of lines on this invoice.
 +  * tap on the **Cancel** button. This will discard the current line and take you back to the list of lines on this invoice.
  
 === e. If the barcode contains a GTIN which matches an item but with a different batch and expiry date === === e. If the barcode contains a GTIN which matches an item but with a different batch and expiry date ===
 +You will be shown a window with the item matching the GTIN scanned:
  
 +{{ .:pasted:20251124-131045.png?250 }}
  
 +  * **Quantity (Packs)** contains the number of packs in this invoice line. Will be empty if the barcode did not contain the number of packs (most common). This is the only editable field. Tap in here and enter a value if nothing has been entered (this field must have a value in it).
 +  * **Batch** contains the batch number from the barcode. Read only.
 +  * **Expiry** contains the expoiry date from the barcode. Read only.
 +  * **Pack size** the number of units in a pack, a property of the GTIN. Read only.
  
 +To continue, either:
 +  * scan another barcode containing a GTIN. This will save the line and display a window according to what you scanned (one of the options a-e). Note: saving the line is not possible if a **Quantity (packs)** value has not been entered - you will be shown a message telling you this if you scan another GTIN-containing barcode before entering a **Quantity (packs)** value.
 +  * tap on the **Save** button, which is enabled as soon as a **Quantity (packs)** value has been entered. This will save the current line and take you back to the list of lines on this invoice.
 +  * tap on the **Cancel** button. This will discard the current line and take you back to the list of lines on this invoice.
 +
 +
 +<WRAP important center round 90%>
 +**PLEASE NOTE:** You can also scan a barcode that does not contain a GTIN at any time. If you scan such a barcode before scanning a barcode that contains a GTIN then the scan will be ignored. If you scan it after scanning a barcode that contains a valid GTIN then any relevant information contained in the barcode (e.g. batch, expiry date etc.) will be assigned to the current supplier invoice line. If any of that informaiton exists for the line already (e.g. it already has a btach or expiry date set for it) then that information will be overridden with what was in the last barcode scanned.
 +
 +So be careful! If you mean to scan a GTIN containing the item for the next invoice line but accidentally scan a barcode that doesn't contain a GTIN, you will instead override the current invoice line's information with any information in the barcode you just scanned.
 +</WRAP>
 +==== 4. Scanning complete ====
 +When scanning is complete and all lines have been saved, you will be back at the list of invoice lines:
 +
 +{{ .:pasted:20251117-111026.png?250 }}
  
 +You will have one line for every batch of every item on the invoice.
  
 +Now tap on the **Complete Shipment** button to finish working on this supplier invoice. You will be asked to confirm that it is complete. On confirmation, the invoice will be saved at suggested status (''sg'') and removed from the list of invoices waiting for scanning.
  
 \\ \\
  • Last modified: 2025/11/24 12:26
  • by Gary Willetts