Location code generator and method therefor

The location code generator automates the generation of unique and error-free location and checking codes, addressing the inefficiencies and errors in manual code generation, thereby improving warehouse management systems.

WO2026112696A1PCT designated stage Publication Date: 2026-06-04LOC BUILDER PTY LTD

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
LOC BUILDER PTY LTD
Filing Date
2025-11-27
Publication Date
2026-06-04

Smart Images

  • Figure AU2025051343_04062026_PF_FP_ABST
    Figure AU2025051343_04062026_PF_FP_ABST
Patent Text Reader

Abstract

The present invention relates to a location code generator and methods therefor. The location code generator is configured for receiving an input of types and subtypes of locations in a warehouse, as well as inputs of particular locations to be omitted, and automatically generates location codes for each of the locations. The location code generator further automatically generates checking codes that meet the requirements of avoiding repeatability conflicts, proximity conflicts, and predictability conflicts. The location code generator automatically associates generated checking codes with the generated location codes. The location code generator is further configured for generating printed stickers of the generated location codes and associated checking codes.
Need to check novelty before this filing date? Find Prior Art

Description

LOCATION CODE GENERATOR AND METHOD THEREFORField of the Invention

[0001] The present invention relates to a location code generation tool, and in particular to a location code generation tool for generating location code for identifying locations in a warehouse.

[0002] The invention has been developed primarily for use in / with warehousing and will be described hereinafter with reference to this application. However, it will be appreciated that the invention is not limited to this particular field of use.Background of the Invention

[0003] At present when a warehouse is set up with racking and / or shelving, then a means for identifying the various bays or storage compartments on the racking and shelving must be provided to picker systems and / or warehousing logistics systems. Individual bays on particular racks and / or shelves must be given a location code. Currently, the generation of stock location codes for particular locations is carried out manually on software like Microsoft Excel™. The generation of the location codes is labour and time intensive, sometimes taking up to a week for large warehouses, and is prone to human error, especially for very large warehouses. Small human errors can have large consequences when an entire Enterprise Resource Management System (ERPM) and warehouse stocktaking and management system for a large company may be dependent on the location codes being correct.

[0004] In addition, often warehouse locations have “checking codes” associated with each of the location codes. These checking codes are used by pickers (or operators replenishing items) in a warehouse in conjunction with voice recognition software that allows them to use both hands for handling items. A picker typically finds the picking location using the location code which is typically a unique identifier that is made up of numeric or alphabetic counters that relate to the zone, aisle or row, bay, level, shelf position, and sometimes shelf depth position, making the location easy to find. The location code usually is printed on a sticker in the location that it relates to, sometimes together with a bar code. A checking code may also be printed on thesame sticker or an adjacent sticker, the checking code is associated with the location code on the warehousing system. The checking code is preferably a code that is easy to speak and recognise, typically being limited to two or three alphabetic characters or numerals.

[0005] Once the picker or operator has found a location of an item to be picked using the location code, they will use their voice to state the checking code that is associated with the location code. The warehousing system will recognise the checking code from the picker’s or operator’s voice and check to see if the checking code is correct for the location code that they are supposed to be picking. If it is not, it will issue an alert that the location may be incorrect. This can prevent incorrect picks being made due to human error.

[0006] Checking codes typically have three requirements in that there should be no proximity conflict where two identical checking codes are adjacent each other; they should not be in a predictable pattern to ensure that pickers or operators are incentivised to go to the correct location; and they should not repeat too often as this could mean that an incorrect checking code is validated as being correct.

[0007] Any reference to the term “row” in the specification shall be deemed to also be a reference to an aisle.

[0008] Any reference to a “counter” the specification shall be deemed to refer to any understood sequential ordering of numerals, letters or symbols. Examples include 1 , 2, 3; A, B, C;.AA, AB, AC; or the like. Any reference to 0 or zero with regard to a sequential ordering of letters or symbols is to be regarded as a reference to a null value that is lower than the lowest letter or symbol in the sequence. For example, it may be one counter lower than A or AA or Alpha.

[0009] Any discussion of the background art throughout the specification should in no way be considered as an admission that such background art is prior art, nor that such background art is widely known or forms part of the common general knowledge in the field in Australia or any other country.Summary of the Invention

[0010] The invention seeks to provide a location code generator which will overcome or substantially ameliorate at least some of the deficiencies of the prior art, or to at least provide an alternative.

[0011] According to a first aspect, the present invention may be said to involve a location code generator for generating location codes for use in identifying locations in a warehouse, the location code generator including: a. a processor operatively configured for executing digital instructions; b. at least one or more transceivers; c. digital storage media operatively connected to the processor and configured for storing instructions configured for directing the processor to carry out the steps of: i. receiving an input indicative of the quantity of a counter associated with one or more selected from: one or more warehouses; one or more zones associated with a warehouse; one or more rows associated with a zone; one or more bays associated with a row; one or more levels associated with a bay; one or more positions associated with a level; and wherein the warehouse, zone, row, bay, level, position and depth position are associated with each other hierarchically in unique lines of hierarchy so that all of the zone counters are associated with each of the warehouse counters; all of the row counters are associated with each of the zone counters; all of the bay counters are associated with each of the row counters; all of the level counters are associated with each of the bay counters; all of the position counters are associated with each of the level counters; ii. automatically allocating a unique location identifier for all of the position counters associated with each of the level counters, all of the level counters associated with each of the bay counters, all of the bay counters associated with each of the rowcounters, all of the row counters associated with each of the zone counters, and all of the zone counters associated with each of the warehouse counter; and iii. generating an ordered list of the unique location identifiers.

[0012] In one example, the instructions are configured for directing the processor to carry out the steps of: a. generating a print schedule from the ordered list for the printing of stickers.

[0013] In one example, the instructions are configured for directing the processor to carry out the steps of: a. generating a checking code associated with each of the unique location identifiers.

[0014] In one example, the instructions are configured for directing the processor to carry out the steps of: a. storing the generated checking codes in association with the unique location identifiers on the ordered list.

[0015] In one example, the instructions are configured for directing the processor to carry out the steps of: a. generating a checking code by passing the unique location identified through a hashing algorithm to generate a checking code with a predetermined output format.

[0016] In one example, the predetermined output format of the checking code is one or more selected from: a. a double numeric code; b. a triple numeric code; c. a double letter code; d. a triple letter code

[0017] In one example, the instructions are configured for directing the processor to carry out the steps of: a. comparing the checking code to a predetermined number of previously generated ordered checking codes in the ordered list to establish if the checking code is a duplicate of a previously generated checking code.

[0018] In one example, the instructions are configured for directing the processor to carry out the steps of:a. generating a further checking code from the generated checking code in the event that the generated checking code is a duplicate of a checking code in the ordered list within the predetermined ordered number of previously generated checking codes.

[0019] In one example, the instructions are configured for directing the processor to carry out the steps of: a. storing the generated checking code in association with the unique location identifier in the event that the generated checking code is not a duplicate of a checking code in the ordered list within the predetermined ordered number of previously generated checking codes.

[0020] In one example, the instructions are configured for directing the processor to carry out the steps of: a. generating a print schedule from the ordered list for the printing of stickers including the unique location identifier and the associated checking code.

[0021] In one example, the instructions are configured for directing the processor to carry out the steps of: a. receiving an input indicative of the quantity of a counter associated with one or more depth positions associated with a position.

[0022] In one example, the warehouse, zone, row, bay, level, position and depth position are associated with each other hierarchically in unique lines of hierarchy so that all of the depth position counters are associated with each of the position counters, and the instructions are configured for directing the processor to carry out the steps of: a. automatically allocating a unique location identifier for each of the depth positions on all of the position counters associated with each of the level counters, all of the level counters associated with each of the bay counters, all of the bay counters associated with each of the row counters, all of the row counters associated with each of the zone counters, and all of the zone counters associated with each of the warehouse counter.

[0023] In one example, the instructions are configured for directing the processor to carry out the steps of: a. receiving an input of one or more selected from: i. zone counters to omitii. row counters to omit; iii. bay counters to omit; iv. level counters to omit; v. position counters to omit; and vi. depth position counters to omit.

[0024] In one example, the instructions are configured for directing the processor to carry out the steps of: a. preventing unique location identifiers being generated using one or more selected from: i. omitted zone counters; ii. omitted row counters;; iii. omitted bay counters; iv. omitted level counters; v. omitted position counters; and vi. omitted depth position counters.

[0025] In one example, any of the counters is one or more selected from a combination of numerals and a combination of letters, or both.

[0026] In one example, the instructions are configured for directing the processor to carry out the steps of: a. receiving a numbering preference input for counters associated with one or more selected from: i. zones; ii. rows; iii. bays; iv. levels; v. positions; and vi. depth position.

[0027] In one example, the instructions are configured for directing the processor to carry out the steps of: a. storing the numbering preference input.

[0028] In one example, the instructions are configured for directing the processor to carry out the steps of:a. setting one or more selected from the warehouse counter, zone counter, the row counter, the bay counter, the level counter, the position counter and the depth position counter to the maximum counter value.

[0029] In one example, the instructions are configured for directing the processor to carry out the steps of: a. reducing the counters of one or more selected from the warehouse counter, zone counter, the row counter, the bay counter, the level counter, the position counter and the depth position counter as location codes are generated.

[0030] In one example, the instructions are configured for directing the processor to carry out the steps of: a. comparing the current counter for one or more selected from the warehouse counter, zone counter, the row counter, the bay counter, the level counter, the position counter and the depth position counter to the counters that have been omitted.

[0031] In one example, the instructions are configured for directing the processor to carry out the steps of: a. allocating a unique identifier as a location code that includes the current one or more selected from the warehouse counter, zone counter, the row counter, the bay counter, the level counter, the position counter and the depth position counter.

[0032] In one example, the instructions are configured for directing the processor to carry out the steps of: a. storing the allocated unique identifiers as a list.

[0033] In one example, the instructions are configured for directing the processor to carry out the steps of: a. storing the checking codes in association with the allocated unique identifiers on the list.

[0034] In one example, the instructions are configured for directing the processor to carry out the steps of: a. generating a sticker printing signal from the stored list.

[0035] In one example, the instructions are configured for directing the processor to carry out the steps of:a. transmitting the sticker printing signal to a printer.

[0036] In one example, the location code generator includes a printer.

[0037] In one example, the instructions are configured for directing the processor to carry out the steps of: a. receiving the sticker printing signal; and b. generating a plurality of stickers with an allocated unique identifier on each sticker.

[0038] In one example, the instructions are configured for directing the processor to carry out the steps of: a. generating a plurality of stickers, each sticker including an allocated unique identifier on each sticker as well as a checking code.

[0039] In one example, the instructions are configured for directing the processor to carry out the steps of: a. generate an ordered list of checking codes.

[0040] In one example, the instructions are configured for directing the processor to carry out the steps of: a. dividing the ordered list of checking codes into substantially equal checking code sublists.

[0041] In one example, the instructions are configured for directing the processor to carry out the steps of: a. shuffling the order of each of the checking code sublists as shuffled checking code sublists.

[0042] In one example, the instructions are configured for directing the processor to carry out the steps of: a. generating a concatenated checking code list by concatenating the shuffled checking code sublists.

[0043] In one example, the instructions are configured for directing the processor to carry out the steps of: a. checking whether the concatenated checking code list is equal to or larger than the number of location codes;

[0044] In one example, the instructions are configured for directing the processor to carry out the steps of:a. reshuffling one or more checking code sublists and concatenating the reshuffled checking code sublists to the concatenated checking code list.

[0045] In one example, the instructions are configured for directing the processor to carry out the steps of: a. selecting a sequence of checking codes from the shuffled checking code full list equal to the number of location codes.

[0046] In one example, the instructions are configured for directing the processor to carry out the steps of: a. associating each checking code from the selected sequence in order with the ordered location codes.

[0047] In one example, the instructions are configured for directing the processor to carry out the steps of: a. storing the list of location codes and associated checking codes.

[0048] In one example, the instructions are configured for directing the processor to carry out the steps of: a. generating a print list from the list of location codes and associated checking codes.

[0049] In one example, the location code generator includes a printer.

[0050] In one example, the instructions are configured for directing the processor to carry out the steps of: a. printing a plurality of stickers, each sticker bearing a location code and an associated checking code.

[0051] According to a further aspect, the present invention may be said to involve a method of generating location codes, the method being carried out on an electronic device and including the steps of: a. receiving an input indicative of the quantity of a counter associated with one or more selected from: one or more warehouses; one or more zones associated with a warehouse; one or more rows associated with a zone; one or more bays associated with a row; one or more levels associated with a bay; one or more positions associated with a level; andwherein the warehouse, zone, row, bay, level, position and depth position are associated with each other hierarchically in unique lines of hierarchy so that all of the zone counters are associated with each of the warehouse counters; all of the row counters are associated with each of the zone counters; all of the bay counters are associated with each of the row counters; all of the level counters are associated with each of the bay counters; all of the position counters are associated with each of the level counters; b. automatically allocating a unique location identifier for all of the position counters associated with each of the level counters, all of the level counters associated with each of the bay counters, all of the bay counters associated with each of the row counters, all of the row counters associated with each of the zone counters, and all of the zone counters associated with each of the warehouse counter; and c. generating an ordered list of the unique location identifiers.

[0052] In one example, the method includes: a. generating a print schedule from the ordered list for the printing of stickers.

[0053] In one example, the method includes: a. generating a checking code associated with each of the unique location identifiers.

[0054] In one example, the method includes: a. storing the generated checking codes in association with the unique location identifiers on the ordered list.

[0055] In one example, the method includes: a. generating a checking code by passing the unique location identified through a hashing algorithm to generate a checking code with a predetermined output format.

[0056] In one example, the predetermined output format of the checking code is one or more selected from: a. a double numeric code; b. a triple numeric code; c. a double letter code; d. a triple letter code

[0057] In one example, the method includes: a. comparing the checking code to a predetermined number of previously generated ordered checking codes in the ordered list to establish if the checking code is a duplicate of a previously generated checking code.

[0058] In one example, the method includes: a. generating a further checking code from the generated checking code in the event that the generated checking code is a duplicate of a checking code in the ordered list within the predetermined ordered number of previously generated checking codes.

[0059] In one example, the method includes: a. storing the generated checking code in association with the unique location identifier in the event that the generated checking code is not a duplicate of a checking code in the ordered list within the predetermined ordered number of previously generated checking codes.

[0060] In one example, the method includes: a. generating a print schedule from the ordered list for the printing of stickers including the unique location identifier and the associated checking code.

[0061] In one example, the method includes: a. receiving an input indicative of the quantity of a counter associated with one or more depth positions associated with a position;

[0062] In one example, the warehouse, zone, row, bay, level, position and depth position are associated with each other hierarchically in unique lines of hierarchy so that all of the depth position counters are associated with each of the position counters, and the method includes: a. automatically allocating a unique location identifier for each of the depth positions on each of the

[0063] In one example, the method includes:a. receiving an input of one or more selected from: i. zone counters to omit ii. row counters to omit; iii. bay counters to omit; iv. level counters to omit; v. position counters to omit; and vi. depth position counters to omit.

[0064] In one example, the method includes: a. preventing unique location identifiers being generated using one or more selected from: i. omitted zone counters; ii. omitted row counters;; iii. omitted bay counters; iv. omitted level counters; v. omitted position counters; and vi. omitted depth position counters.

[0065] In one example, any of the counters is one or more selected from a combination of numerals and a combination of letters, or both.

[0066] In one example, the method includes: a. receiving a numbering preference input for counters associated with one or more selected from: i. zones; ii. rows; iii. bays; iv. levels; v. positions; and vi. depth position.

[0067] In one example, the method includes: a. storing the numbering preference input.

[0068] In one example, the method includes: a. setting one or more selected from the warehouse counter, zone counter, the row counter, the bay counter, the level counter, the position counter and the depth position counter to the maximum counter value.

[0069] In one example, the method includes: a. reducing the counters of one or more selected from the warehouse counter, zone counter, the row counter, the bay counter, the level counter, the position counter and the depth position counter as location codes are generated.

[0070] In one example, the method includes: a. comparing the current counter for one or more selected from the warehouse counter, zone counter, the row counter, the bay counter, the level counter, the position counter and the depth position counter to the counters that have been omitted.

[0071] In one example, the method includes: a. allocating a unique identifier as a location code that includes the current one or more selected from the warehouse counter, zone counter, the row counter, the bay counter, the level counter, the position counter and the depth position counter.

[0072] In one example, the method includes: a. storing the allocated unique identifiers as a list.

[0073] In one example, the method includes: a. storing the checking codes in association with the allocated unique identifiers on the list.

[0074] In one example, the method includes: a. generating a sticker printing signal from the stored list.

[0075] In one example, the method includes: a. transmitting the sticker printing signal to a printer.

[0076] In one example, the location code generator includes a printer and the In one example, the method includes: a. receiving the sticker printing signal; and b. generating a plurality of stickers with an allocated unique identifier on each sticker.

[0077] In one example, the method includes: a. generating a plurality of stickers, each sticker including an allocated unique identifier on each sticker as well as a checking code.

[0078] In one example, the method includes:a. generate an ordered list of checking codes.

[0079] In one example, the method includes: a. dividing the ordered list of checking codes into substantially equal checking code sublists.

[0080] In one example, the method includes: a. shuffling the order of each of the checking code sublists as shuffled checking code sublists.

[0081] In one example, the method includes: a. generating a concatenated checking code list by concatenating the shuffled checking code sublists.

[0082] In one example, the method includes: a. checking whether the concatenated checking code list is equal to or larger than the number of location codes;

[0083] In one example, the method includes: a. reshuffling one or more checking code sublists and concatenating the reshuffled checking code sublists to the concatenated checking code list.

[0084] In one example, the method includes: a. selecting a sequence of checking codes from the shuffled checking code full list equal to the number of location codes.

[0085] In one example, the method includes: a. associating each checking code from the selected sequence in order with the ordered location codes.

[0086] In one example, the method includes: a. storing the list of location codes and associated checking codes.

[0087] In one example, the method includes: a. generating a print list from the list of location codes and associated checking codes.

[0088] In one example, the location code generator includes a printer.

[0089] In one example, the method includes: a. printing a plurality of stickers, each sticker bearing a location code and an associated checking code.

[0090] Other aspects of the invention are also disclosed.

[0091] A general principle of operation is that a logic sequence can be used to automatically generate an ordered list of location codes that accounts for all of the warehouses, zones, rows, bays, levels, and optionally positions and / or depth positions without error, and being able to omit particular counters for these.

[0092] A further general principle of operation is that the logic sequence can be used to automatically generate checking codes in association with an ordered list of location codes, whereby the checking codes can be guaranteed to not replicate within a predetermined threshold of positions on the ordered list.Brief Description of the Drawings

[0093] Notwithstanding any other forms which may fall within the scope of the present invention, a preferred embodiment of the invention will now be described, by way of example only, with reference to the accompanying drawings in which:

[0094] Figure 1 shows a network of computing devices on which the various embodiments described herein may be implemented in accordance with an embodiment of the present invention;

[0095] Figure 2 shows a computing device on which the various embodiments described herein may be implemented in accordance with an embodiment of the present invention;

[0096] Figures 3-9 show flowcharts setting out methodologies that may be carried out by the location code generator.Description of Embodiments

[0097] It should be noted in the following description that like or the same reference numerals in different embodiments denote the same or similar features.System of computing devices

[0098] Figure 1 shows a system 1000 of computing devices adapted for use as a location code generator, and on which the methods described below may be carried out.

[0099] As such, the system 1000 includes a server 1100 for serving web pages to one or more client computing devices 1200 over the Internet 1300.

[0100] In a preferred embodiment, the server 1100 is a web server having a web server application 1110 for receiving requests, such as Hypertext Transfer Protocol (HTTP) and File Transfer Protocol (FTP) requests, and serving hypertext web pages or files in response. The web server application 1110 may be, for example the Apache™ or the Microsoft™ IIS HTTP server.

[0101] The server 1100 is also provided with a hypertext preprocessor 1120 for processing one or more web page templates 1130 and data from one or more databases 1140 to generate hypertext web pages. The hypertext preprocessor may, for example, be the PHP: Hypertext Preprocessor (PHP) or Microsoft Asp™ hypertext preprocessor. The web server 1100 is also provided with web page templates 1130, such as one or more PHP or ASP files.

[0102] Upon receiving a request from the web server application 1110, the hypertext preprocessor 1120 is operable to retrieve a web page template from the web page templates 1130, execute any dynamic content therein, including updating or loading information from the one or more databases 1140, to compose a hypertext web page. The composed hypertext web page may comprise client-side code, such as Javascript, for Document Object Model (DOM) manipulating, asynchronous HTTP requests and the like.

[0103] The database 1140 is adapted for storing user account data representing one or more user accounts for users. Such user account data is created by the server 1100 during a user registration process. In this manner, the server 1100 is adapted to update the user account data in relation to the appropriate user account.

[0104] Client computing devices 1200 are preferably provided with a browser application 1210, such as the Google Chrome™, Mozilla Firefox™ or Microsoft Internet Explorer™ browser applications. The browser application 1210 requests hypertext web pages from the web server 1100 and renders the hypertext web pages on a display device for a user to view.

[0105] Client side code is also downloadable as applications on the client computing device 1200 and / or server 1100, in order to facilitate the operation of and / or interaction with the location code generator. Such applications could, for example, be downloaded from the Apple App Store™, Google Play™, or the like.

[0106] Client side code may also be provided as blockchain enabled code for suitable users of the system. Such blockchain enabled code may be configured forreading and writing directly to a node of the blockchain, or for communicating via a remote node such as a universal resolver node.

[0107] Client computing devices 1200 may communicate over the Internet 1300 via fixed line or wireless communication, for example using known networks of cellular communication towers 1400.Computing device

[0108] Figure 2 shows a computing device 500. In a preferred embodiment, the computing device 500 takes the form of a server 1100 as described above. In this manner, the computing device 500 is adapted to comprise functionality for communication with the Internet 1300, storage capability (such as the database 1140) for storing user account data, records of communications, and the like.

[0109] However, it should be noted that other computing devices 500 such as mobile computing devices in the form of laptops, smart mobile phones, or tablets may be adapted for use as the client computing devices 1200 as is also shown in Figure 1. In this manner, the computing device 500 may comprise differing technical integers in order to achieve the functionality as set out below.

[0110] In other words, the technical integers of the computing device 500 as shown in Figure 2 are exemplary only and variations, adaptations and the like may be made thereto within the purposive scope of the embodiments described herein and having regard for the particular application of the computing device 500.

[0111] In particular the steps or methodology of the location code generator, as described in further detail below, can be implemented as computer program code instructions executable by the computing device 500.

[0112] The computer program code instructions may be divided into one or more computer program code instruction libraries, such as dynamic link libraries (DLL), wherein each of the libraries performs one or more steps of the method. Additionally, a subset of the one or more of the libraries may perform graphical user interface tasks relating to the steps of the method.

[0113] The computing device 500 preferably comprises semiconductor memory 510 comprising volatile memory such as random access memory (RAM) or read only memory (ROM). The memory 510 may comprise either RAM or ROM or a combination of RAM and ROM.

[0114] The device further comprises I / O interface 530 for communicating with one or more peripheral devices. The I / O interface 530 may offer both serial and parallel interface connectivity. For example, the I / O interface 530 may comprise a Small Computer System Interface (SCSI), Universal Serial Bus (USB) or similar I / O interface for interfacing with the storage medium reader 515. The I / O interface 530 may also communicate with one or more human input devices (HID) 540 such as keyboards, pointing devices, joysticks and the like.

[0115] The I / O interface 530 may also comprise a computer to computer interface, such as a Recommended Standard 232 (RS-232) interface, for interfacing the device 500 with one or more personal computer (PC) devices 550. The I / O interface 530 may also comprise an audio interface 560 for communicating audio signals to one or more audio devices (not shown), such as a speaker or a buzzer. The I / O interface 530 may also comprise a printer interface 545 for communicating with a printer 680, for example to print labels.

[0116] The device 500 also comprises a network interface 570 for communicating with one or more computer networks 580, such as the Internet 1300. The network 580 may be a wired network, such as a wired Ethernet™ network or a wireless network, such as a Bluetooth™ network or IEEE 802.11 network. The network 580 may be a local area network (LAN), such as a home or office computer network, or a wide area network (WAN), such as the Internet or private WAN. The device 500 can also include an antenna 575 configured for wireless communication with network 580.

[0117] The device 500 comprises an arithmetic logic unit or processor 590 for performing the computer program code instructions. The processor 590 may be a reduced instruction set computer (RISC) or complex instruction set computer (CISC) processor or the like. The computing device 500 further comprises a storage device 600, such as a magnetic disk hard drive or a solid state disk drive for storing data and / or software instructions.

[0118] Computer program code instructions may be loaded into the storage device 600 from an online resource via the network 580 and network interface 570.

[0119] During the bootstrap phase, an operating system and one or more software applications are loaded from the storage device 600 into the memory 510. During the fetch-decode-execute cycle, the processor 590 fetches computer program codeinstructions from memory 510, decodes the instructions into machine code, executes the instructions and stores one or more intermediate results in memory 510.

[0120] In this manner, the instructions stored in the memory 510, when retrieved and executed by the processor 590, configures the computing device 500 as a special-purpose machine that may perform the functions described herein.

[0121] The computing device 500 can also include an audio / video interface 610 for conveying video signals to a display device 620, such as a liquid crystal display (LCD), light emitting diode (LED) display, organic light emitting diode (OLED) display, cathode-ray tube (CRT) or similar display device.

[0122] The device 500 preferably includes a communication bus subsystem 630 for interconnecting the various devices described above. The bus subsystem 630 may offer parallel connectivity such as Industry Standard Architecture (ISA), conventional Peripheral Component Interconnect (PCI) and the like or serial connectivity such as PCI Express (PCIe), Serial Advanced Technology Attachment (Serial ATA) and the like. The computing device 500 can also include a clock device 640 configured for providing accurate time stamps for use by the processor 590.

[0123] It is further anticipated that the computing device can include a random number generator 670. It is envisaged that the random number generator may be provided as part of a software module.

[0124] Lastly, it is anticipated that the computing device 500 can include a camera 680. The camera can be used to scan and / or input documents. The camera 680 may be connected via the I / O interface 530 or may be built into the computing device.Functionality

[0125] The functionality of the various embodiments of a location code generator or location code generator system described above will now be explained with reference to the flowcharts shown in figures 3-8. In a discussion of the functionality below, communications between parties are preferably over a secure communication network.

[0126] Starting with reference to figure 3, it is envisaged that the location code generator will initially receive 2 an input indicative of the maximum quantity of acounter associated with any one or more of warehouses, zones, rows, bays, levels, positions and depth positions of a storage system. The input indicative of the maximum quantity of the various counters could be, for example, a first and a last counter setting from which the total number of counters to be used can be determined, or alternatively just could be the total number of counters to be used. These maximum quantities will then be stored 4 on database 1140. The location code generator will then receive 6 an input indicative of the numbering preference for the counter for each of the warehouses, zones, rows, bays, levels, positions and depth positions. For example, the numbering preference may be a single, double or triple alphabetic or numeric counter, or a combination of these, such as A, AA, AAA; 1 , 11 , 111 ; A1 , A01 , A001 or the like. The numbering preference may also be stored 8 in the database 1140. The location code generator will then also receive 10 an input indicative of omitted counters for any one or more selected from the warehouses, zones, rows, bays, levels, positions and depth positions. These will also be stored 12 on database 1140.

[0127] The location code generator may then also receive 14 an input of a preference for whether a location code is to be generated for each depth position associated with each position. In alternative embodiment, it is also envisaged that the location code generator may receive an input of whether a location code is to be generated for each position associated with a level. The received 14 preference will then be stored 16 on database 1140.

[0128] The location code generator may then also receive 17 an input of a preference for whether checking codes are to be generated. The input preference will then be stored 18 on database 1140.

[0129] Following on from reference A on Figure 4, the location code generator will initially set 20 the warehouse counter to the maximum counter value that was previously received as an input. The location code generator will then test 22 whether the warehouse counter is above zero. If the warehouse counter is not above zero, this would usually be indicative that all of the location codes have been generated (at the end of the process), and the list of location codes that have been generated will be saved 23 on database 1140.

[0130] If the warehouse counter is above zero then the zone counter will be set 24 to the maximum zone counter value that was received as an input. The locationcode generator will then test 26 if the current zone counter is above zero. If the zone counter is not above zero then the warehouse counter will be reduced 28 by one counter value. For example, if the current warehouse counter value is at number 2, then the warehouse counter value will be reduced to number 1 . If there is only one warehouse, there would only be a single counter, and once all of the locations have been generated for that warehouse, then the warehouse counter would be reduced 28 by 1 to 0, and the list would be saved 23.

[0131] The location code generator will then further test 30 to establish if the current zone counter has been required to be omitted by testing the current zone counter against the omitted zone counters that were previously input 10 and stored 12. If the current zone counter is a zone counter that was previously requested to be omitted, then the location code generator will reduce 36 the current zone counter by one.

[0132] If the current zone counter is a zone counter that was not previously requested to be omitted, then the location code generator will set 32 the row counter to its maximum value that was previously received 2 as an input.

[0133] The location code generator will then test 34 whether the current row counter is above zero. If it is not, then it will reduce 36 the zone counter by one, and test again 26 whether the zone counter is above zero. Now following on from reference C on figure 5, if the current row counter is tested 34 to be above zero, then the location code generator will test 40 to establish if the current row counter is one of the input 10 row counters to be omitted. If the current row counter is one of the row counters to be omitted, then the row counter is reduced 48 by one, and the location code generator will then test 34 again if the current row counter is above zero.

[0134] If the current row counter is not one of the row counters to be omitted, then the location code generator will set 42 the bay counter to its maximum value that was previously input 2. The location code generator will then test 46 whether the current bay counter is above zero. If the current bay counter is not above zero, then the location code generator will reduce 48 the current row counter by one. If the bay counter is above zero, then the location code generator will test 50 if the current bay counter is one of the input 10 bay counters to be omitted.

[0135] If the current bay counter is one of the bay counters to be omitted, then the current bay counter will be reduced 56 by one. If the current bay counter is not oneof the bay counters to be omitted then the location code generator will set 52 the level counter to its maximum value that was previously input 2. The location code generator will then test 54 whether the current level counter is above zero. If the current level counter is not above zero, then it will reduce 56 the current bay counter by one. If the current level counter is above zero, then the location code generator will test 58 whether the current level counter is one of the input 10 level counters to be omitted. If the current level counter is one of the input 10 level counters to be omitted, then the current level counter will be reduced 60 by one counter.

[0136] If the current level counter is not one of the location code generator will set 62 the current position counter to its maximum value that was previously input 2.

[0137] Now following on from reference letter E on figure 6, the location code generator will test 70 whether the current position counter is above zero. If the current position counter is not above zero, then the location code generator will reduce 60 the level counter by one.

[0138] If the current position counter is above zero then the location code generator will test 72 whether the current position counter is one of the input 10 position counters to be omitted. If the current position counter is one of the position counters to be omitted, then the current position counter will be reduced to 74 by one.

[0139] If the current position counter is not one of the position counters to be omitted, then the location code generator will test 76 whether a depth counter is required (whereby a series of locations, are generated for depth on each position on a level) by checking the input 14 that was made with regards to the depth counter. It is further envisaged that a similar test may be provided for whether a position quantity is required. In such a case, similar steps as will be described below may be followed out for the position counters.

[0140] If a depth quantity is not required, then the location code generator will generate 78 and / or allocate a location code as a unique identifier that will be made up of the current counters for the warehouse counter, zone counter, row counter, bay counter, level counter, and position counter.

[0141] At this stage, the location code generator will test 80 whether a checking code is also required to be generated from the received 17 input. If a checking code is required to be generated, then the location code generator will generate 82 a checking code, and store 84 the unique identifier together with the checking code ina list on the database 1140. The process by which the checking code is generated will be described in more detail below with reference to figure 8. If a checking code is not required to be generated, then the location code generator will store 86 the unique identifier in a list without an associated checking code. The current position counter will then be reduced 74 by one.

[0142] If, on testing 76 that a depth counter is required, then following on from reference numeral F in figure 7, the depth counter will initially be set 90 to its maximum value that was previously input 2. The location code generator will then test 91 if the depth counter is above zero. If the depth counter is not above zero, then the position counter will be reduced 74 by one.

[0143] If the depth counter is above zero, then the location code generator will test 92 if the current depth counter is one of the input 10 depth counters that was omitted. If the current depth counter is one of the depth counters that was omitted by input 10 then the location code generator will reduce 93 the current depth counter by one. If the depth counter is not one of the depth counters that was omitted, then the location code generator will generate 94 and / or allocate a location code as a unique identifier that will be made up of the current counters for the warehouse counter, zone counter, row counter, bay counter, level counter, position counter, and depth counter.

[0144] The location code generator will then test 96 whether a checking code is required based on the previous received 17 input. If a checking code is required to be generated, then the location code generator will generate 98 a checking code, and store 100 the unique identifier together with the checking code in a list on the database 1140. The process by which the checking code is generated will be described in more detail below with reference to figure 8. If a checking code is not required to be generated, then the location code generator will store 102 the unique identifier in a list without an associated checking code. The current depth counter will then be reduced 93 by one.

[0145] The depth counter will cycle through the maximum number of depth counters until the current depth counter is not above zero. At this stage, the position counter will be reduced by one and the number of position counters with associated depth counters will be cycled through until the position counter is not above zero, after which the level counter will be reduced by one, until all of the level counters havebeen reduced to zero. At this time, the bay counter will be reduced by one and a cycle will continue until they have been reduced to 0. At this stage, the row counter will be reduced by one, and the cycle will continue until the row counter has been reduced to 0 and the zone counter will be reduced by one. In this way, a location code can be generated for each depth on each position on each level on each bay on each row on each zone, and in each warehouse. Once the warehouse counter is no longer tested 22 as being above zero (see figure 4), the entire generated list of location codes will be stored 23 on database 1140.

[0146] After this, the location code generator may generate 122 a sticker printing signal from the stored 23 list, and may further transmit 124 a print signal to a printer to print the stickers for each location code, preferably with the associated checking code. The location code generator may further include a printer 680. The printer may print 126 the plurality of stickers including the location code and the checking code.

[0147] It is envisaged that, where only one warehouse is being used, the warehouse counter may be excluded.

[0148] The generation of checking codes has previously been problematic. Checking codes are used by pickers who are picking items up from the various location codes in the warehouse. Each location code typically has a checking code associated with it. The location code is typically stored on a system in association with a checking code.

[0149] The checking code is printed onto a label alongside the location code at each of the locations in the warehouse. When a picker arrives at a location in the warehouse that has the correct designation for the location code that they are supposed to be picking an item from, they will read the checking code. This checking code may be spoken into a microphone for confirmation by a co-worker who has access to the list of associated location codes and checking codes, or the checking code may otherwise be input into an electronic device that checks the checking code against the location code to ensure that the correct location code has been found.

[0150] Checking codes are preferably a combination of two or three alphanumeric characters, or two or three alphanumeric characters combined with letters. Should not be overly long or complex as this makes the effort required for checking the checking code against the location code more difficult. However, two or threealphanumeric characters (or numbers) will only give you 99 or 999 checking codes. All of these checking codes will be repeated in large warehouses where the number of locations could be 10,000 or more.

[0151] Checking codes must meet the requirements of avoiding: a. proximity conflicts; b. repeatability conflicts, and c. predictability conflicts.

[0152] Proximity conflicts occur when two checking codes occur in close proximity to each other (for example within a few locations of each other) and where the possibility eists that a picker may input a checking code that is correct for the correct location code, but the actual location being attended by the picker is incorrect.

[0153] Repeatability conflicts occur where a checking code repeats too often, which may then result in a proximity conflict, or allow a picker to easily guess at a checking code with a higher probability of getting it right without attending the actual location.

[0154] Predictability conflicts occur where the pattern of arrangement of a checking code happens to coincide with the pattern of arrangement of certain locations. As an example, if each shelf has 99 locations, and the checking codes are one of 99 numbers, and the checking codes are in order, then there is a good chance that the first number on each shelf will have the first checking code.

[0155] Now described with reference to figure 8, if a checking code is required to be associated with each of the location codes that are generated, the location code generator will initially retrieve 110 the unique identifier that was generated (94 or 78) as part of the location code generation process. The unique identifier will then be subjected to or run 114 through a hashing algorithm. The hashing algorithm may be a hashing algorithm that always results in the generation of a two or three letter or numeral code, or a combination of both.

[0156] Alternatively, it is envisaged that a random number generator may be used instead of a hashing algorithm, wherein the random number generator is set to generate a random number between, say, one and 99, or one and 999. The random number generated by the random number generator can be used as numeric characters, or converted to alphabetic characters, or both.

[0157] After generating the two digit or three digit code, the location number generator will then test 116 the generated code to establish if it is the same as apreviously generated checking code on the list that is less than a predetermined threshold of lines on the list away. For example, the predetermined threshold may be 50. In such an event, the location code generator will test 116 the currently generated code against the last 50 saved checking codes on the list.

[0158] If the checking code is the same as previously saved checking codes, the location code generator will run 118 another hashing algorithm on the generated checking code to generate a new hashing algorithm. Alternatively, the location code generator may generate another random number of the required code type.

[0159] If the checking code is not the same as previously saved checking codes then the location code generator will store 120 the generated code on the list as a checking code in association with the unique identifier.

[0160] In this way, a checking code can be generated in association with each uniquely identified location code, with the checking code being guaranteed not to be the same as a checking code within 50 other unique identifiers on the list.

[0161] Figure 9 shows a flowchart of an alternative methodology for generating checking codes in association with ordered location codes that have been previously generated.

[0162] Initially the location code generator may generate 130 an ordered list of checking codes. These checking codes may preferably consist of between two and four alphanumeric characters or letters, although there could be less or more, and other characters are also envisaged, such as Greek characters, symbols, or the like. As an example, a list of checking codes of three alphanumeric numbers may be generated in order (i.e. from 000 to 999).

[0163] The list of ordered checking codes may be divided 132 into a number of preferably equal ordered checking code sublists. Preferably, the list of ordered checking codes is divided into two preferably equal checking code sublists, although three, four or more equal checking code sublists are also envisaged. The number of checking codes in the checking code sublists do not necessarily need to be equal, although this is preferable. As an example following on from the example above, the ordered list of checking codes will be divided into a first sublist that includes numbers 000-499, and a second sublist that includes numbers 500 - 999. By selecting a suitably large range of checking codes, repeatability conflicts are reduced.

[0164] Each of the sublists may then be shuffled 134 to preferably present each of the sublists in a random order. In this way, shuffled checking code sublists are generated. Following on from the above example, this will mean that all of the numbers from 000 to 499 will be shuffled in order, but remain in that first shuffled sublist, while all of the numbers from 500 to 999 will be shuffled in order, but remain in that second shuffled sublist. In this way, predictability conflicts are prevented

[0165] The shuffled checking code sublists are then preferably concatenated 136 to generate a concatenated checking code list. Preferably the shuffled checking code sublist are added to the end of the previous shuffled checking code sublist to generate the concatenated checking code list. Following on from the example above, the list of numbers 000-499 in random order will first be listed, and then the list of randomised numbers 500 - 999 will be added to the end of the first list to generate a concatenated checking code list.

[0166] At this stage, the location code generator will check 138 whether the number of checking codes in the concatenated checking code list is equal to or more than the total number of location codes. If the concatenated checking code list is less than the total number of location codes, then the location code generator will reshuffle each of the ordered sublists of checking codes and concatenate these with the concatenated checking code list to generate a larger concatenated checking code list.

[0167] Following on from the example above, if the number of location codes is 1600, the first sublist of numbers 000 - 499 will be reshuffled and concatenated / added to the shuffled full list of checking codes, after which the second sublist of numbers 500 - 999 will be reshuffled and concatenated / added to the concatenated checking code list, in that order, creating a concatenated checking code list of 2000 numbers. It will be appreciated that in this way, where a particular number (such as 499 in the example above) occurs in the sequence of shuffled full list of checking codes, it will be located at least 500 positions away from the next time that it occurs in the sequence of shuffled full list of checking codes. In this ensures that no proximity conflicts occur.

[0168] Once a sufficient number of checking codes in the concatenated checking code list have been generated to cover each location code, then a sequence ofnumbers is selected 139 from the concatenated checking code list that is equal to the number of location codes.

[0169] After this, each of the preferably ordered location codes will be associated 140 with a checking code in the sequence in which it occurred on the concatenated checking code list. This list of location codes and associated checking codes will then be stored 142 on database 1400.

[0170] A print list of location codes and associated checking codes can then be generated 144 for printing. After this, stickers bearing both the location code and the associated checking code can be printed 146 using the print list.Interpretation

[0171] Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. It will be further understood that terms used herein should be interpreted as having a meaning that is consistent with their meaning in the context of this specification and the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein. For the purposes of the present invention, additional terms are defined below. Furthermore, all definitions, as defined and used herein, should be understood to control over dictionary definitions, definitions in documents incorporated by reference, and / or ordinary meanings of the defined terms unless there is doubt as to the meaning of a particular term, in which case the common dictionary definition and / or common usage of the term will prevail.

[0172] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular articles “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise and thus are used herein to refer to one or to more than one (i.e. to “at least one”) of the grammatical object of the article. By way of example, the phrase “an element” refers to one element or more than one element.

[0173] The term “about” is used herein to refer to quantities that vary by as much as 30%, preferably by as much as 20%, and more preferably by as much as 10% to areference quantity. The use of the word ‘about’ to qualify a number is merely an express indication that the number is not to be construed as a precise value.

[0174] Throughout this specification, unless the context requires otherwise, the words “comprise”, “comprises” and “comprising” will be understood to imply the inclusion of a stated step or element or group of steps or elements but not the exclusion of any other step or element or group of steps or elements.

[0175] The term “real-time” for example “displaying real-time data,” refers to the display of the data without intentional delay, given the processing limitations of the system and the time required to accurately measure the data.

[0176] As used herein, the term “exemplary” is used in the sense of providing examples, as opposed to indicating quality. That is, an “exemplary embodiment” is an embodiment provided as an example, as opposed to necessarily being an embodiment of exemplary quality for example serving as a desirable model or representing the best of its kind.

[0177] The phrase “and / or,” as used herein in the specification and in the claims, should be understood to mean “either or both” of the elements so conjoined, i.e., elements that are conjunctively present in some cases and disjunctively present in other cases. Multiple elements listed with “and / or” should be construed in the same fashion, i.e., “one or more” of the elements so conjoined. Other elements may optionally be present other than the elements specifically identified by the “and / or” clause, whether related or unrelated to those elements specifically identified. Thus, as a non-limiting example, a reference to “A and / or B”, when used in conjunction with open-ended language such as “comprising” can refer, in one embodiment, to A only (optionally including elements other than B); in another embodiment, to B only (optionally including elements other than A); in yet another embodiment, to both A and B (optionally including other elements); etc.

[0178] As used herein in the specification and in the claims, “or” should be understood to have the same meaning as “and / or” as defined above. For example, when separating items in a list, “or” or “and / or” shall be interpreted as being inclusive, i.e., the inclusion of at least one, but also including more than one, of a number or list of elements, and, optionally, additional unlisted items. Only terms clearly indicated to the contrary, such as “only one of” or “exactly one of,” or, when used in the claims, “consisting of” will refer to the inclusion of exactly one elementof a number or list of elements. In general, the term “or” as used herein shall only be interpreted as indicating exclusive alternatives (i.e. “one or the other but not both”) when preceded by terms of exclusivity, such as “either,” “one of,” “only one of,” or “exactly one of.” “Consisting essentially of,” when used in the claims, shall have its ordinary meaning as used in the field of patent law.

[0179] As used herein in the specification and in the claims, the phrase “at least one,” in reference to a list of one or more elements, should be understood to mean at least one element selected from any one or more of the elements in the list of elements, but not necessarily including at least one of each and every element specifically listed within the list of elements and not excluding any combinations of elements in the list of elements. This definition also allows that elements may optionally be present other than the elements specifically identified within the list of elements to which the phrase “at least one” refers, whether related or unrelated to those elements specifically identified. Thus, as a non-limiting example, “at least one of A and B” (or, equivalently, “at least one of A or B,” or, equivalently “at least one of A and / or B”) can refer, in one embodiment, to at least one, optionally including more than one, A, with no B present (and optionally including elements other than B); in another embodiment, to at least one, optionally including more than one, B, with no A present (and optionally including elements other than A); in yet another embodiment, to at least one, optionally including more than one, A, and at least one, optionally including more than one, B (and optionally including other elements); etc.Bus

[0180] In the context of this document, the term “bus” and its derivatives, while being described in a preferred embodiment as being a communication bus subsystem for interconnecting various devices including by way of parallel connectivity such as Industry Standard Architecture (ISA), conventional Peripheral Component Interconnect (PCI) and the like or serial connectivity such as PCI Express (PCIe), Serial Advanced Technology Attachment (Serial ATA) and the like, should be construed broadly herein as any system for communicating data.In accordance with:

[0181] As described herein, ‘in accordance with’ may also mean ‘as a function of’ and is not necessarily limited to the integers specified in relation thereto.Composite items

[0182] As described herein, ‘a computer implemented method’ should not necessarily be inferred as being performed by a single computing device such that the steps of the method may be performed by more than one cooperating computing devices.

[0183] Similarly objects as used herein such as ‘web server’, ‘server’, ‘client computing device’, ‘computer readable medium’ and the like should not necessarily be construed as being a single object, and may be implemented as a two or more objects in cooperation, such as, for example, a web server being construed as two or more web servers in a server farm cooperating to achieve a desired goal or a computer readable medium being distributed in a composite manner, such as program code being provided on a compact disk activatable by a license key downloadable from a computer network.Database:

[0184] In the context of this document, the term “database” and its derivatives may be used to describe a single database, a set of databases, a system of databases or the like. The system of databases may comprise a set of databases wherein the set of databases may be stored on a single implementation or span across multiple implementations. The term “database” is also not limited to refer to a certain database format rather may refer to any database format. For example, database formats may include MySQL, MySQLi , XML or the like.Wireless:

[0185] The invention may be embodied using devices conforming to other network standards and for other applications, including, for example other WLAN standards and other wireless standards. Applications that can be accommodated include I EEE 802.11 wireless LANs and links, and wireless Ethernet.

[0186] In the context of this document, the term “wireless” and its derivatives may be used to describe circuits, devices, systems, methods, techniques, communications channels, etc., that may communicate data through the use of modulated electromagnetic radiation through a non-solid medium. The term does not imply that the associated devices do not contain any wires, although in some embodiments they might not. In the context of this document, the term “wired” and its derivatives may be used to describe circuits, devices, systems, methods, techniques, communications channels, etc., that may communicate data through the use of modulated electromagnetic radiation through a solid medium. The term does not imply that the associated devices are coupled by electrically conductive wires.Processes:

[0187] Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions utilizing terms such as “processing”, “computing”, “calculating”, “determining”, “analysing” or the like, refer to the action and / or processes of a computer or computing system, or similar electronic computing device, that manipulate and / or transform data represented as physical, such as electronic, quantities into other data similarly represented as physical quantities.Processor:

[0188] In a similar manner, the term “processor” may refer to any device or portion of a device that processes electronic data, e.g., from registers and / or memory to transform that electronic data into other electronic data that, e.g., may be stored in registers and / or memory. A “computer” or a “computing device” or a “computing machine” or a “computing platform” may include one or more processors.

[0189] The methodologies described herein are, in one embodiment, performable by one or more processors that accept computer-readable (also called machine- readable) code containing a set of instructions that when executed by one or more of the processors carry out at least one of the methods described herein. Any processor capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken are included. Thus, one example is a typical processingsystem that includes one or more processors. The processing system further may include a memory subsystem including main RAM and / or a static RAM, and / or ROM.Computer-Readable Medium:

[0190] Furthermore, a computer-readable carrier medium may form, or be included in a computer program product. A computer program product can be stored on a computer usable carrier medium, the computer program product comprising a computer readable program means for causing a processor to perform a method as described herein.Networked or Multiple Processors:

[0191] In alternative embodiments, the one or more processors operate as a standalone device or may be connected, e.g., networked to other processor(s), in a networked deployment, the one or more processors may operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer or distributed network environment. The one or more processors may form a web appliance, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.

[0192] Note that while some diagram(s) only show(s) a single processor and a single memory that carries the computer-readable code, those in the art will understand that many of the components described above are included, but not explicitly shown or described in order not to obscure the inventive aspect. For example, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.Additional Embodiments:

[0193] Thus, one embodiment of each of the methods described herein is in the form of a computer-readable carrier medium carrying a set of instructions, e.g., a computer program that are for execution on one or more processors. Thus, as willbe appreciated by those skilled in the art, embodiments of the present invention may be embodied as a method, an apparatus such as a special purpose apparatus, an apparatus such as a data processing system, or a computer-readable carrier medium. The computer-readable carrier medium carries computer readable code including a set of instructions that when executed on one or more processors cause a processor or processors to implement a method. Accordingly, aspects of the present invention may take the form of a method, an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of carrier medium (e.g., a computer program product on a computer-readable storage medium) carrying computer-readable program code embodied in the medium.Carrier Medium:

[0194] The software may further be transmitted or received over a network via a network interface device. While the carrier medium is shown in an example embodiment to be a single medium, the term “carrier medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and / or associated caches and servers) that store the one or more sets of instructions. The term “carrier medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by one or more of the processors and that cause the one or more processors to perform any one or more of the methodologies of the present invention. A carrier medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media.Blockchain

[0195] A blockchain is a collection of information that is stored electronically in blocks on one or more computer systems, the blocks storing sets of information and being chained onto a previously filled block, forming a chain of data known as the blockchain. New information that follows a freshly added block is compiled into a newly formed block that will also be added to the chain and preferably time stamped once the block is filled. Blockchains are typically implemented as a decentralised,distributed network, in which a plurality of nodes of the network are synchronised to store the same blockchain information.Implementation:

[0196] It will be understood that the steps of methods discussed are performed in one embodiment by an appropriate processor (or processors) of a processing (i.e., computer) system executing instructions (computer-readable code) stored in storage. It will also be understood that the invention is not limited to any particular implementation or programming technique and that the invention may be implemented using any appropriate techniques for implementing the functionality described herein. The invention is not limited to any particular programming language or operating system.Means For Carrying out a Method or Function

[0197] Furthermore, some of the embodiments are described herein as a method or combination of elements of a method that can be implemented by a processor of a processor device, computer system, or by other means of carrying out the function. Thus, a processor with the necessary instructions for carrying out such a method or element of a method forms a means for carrying out the method or element of a method. Furthermore, an element described herein of an apparatus embodiment is an example of a means for carrying out the function performed by the element for the purpose of carrying out the invention.Connected

[0198] Similarly, it is to be noticed that the term connected, when used in the claims, should not be interpreted as being limitative to direct connections only. Thus, the scope of the expression a device A connected to a device B should not be limited to devices or systems wherein an output of device A is directly connected to an input of device B. It means that there exists a path between an output of A and an input of B which may be a path including other devices or means. “Connected” may mean that two or more elements are either in direct physical or electrical contact, or thattwo or more elements are not in direct contact with each other but yet still co-operate or interact with each other.Embodiments:

[0199] Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment, but may. Furthermore, the particular features, structures or characteristics may be combined in any suitable manner, as would be apparent to one of ordinary skill in the art from this disclosure, in one or more embodiments.

[0200] Similarly it should be appreciated that in the above description of example embodiments of the invention, various features of the invention are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure and aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the claims following the Detailed Description of Specific Embodiments are hereby expressly incorporated into this Detailed Description of Specific Embodiments, with each claim standing on its own as a separate embodiment of this invention.

[0201] Furthermore, while some embodiments described herein include some but not other features included in other embodiments, combinations of features of different embodiments are meant to be within the scope of the invention, and form different embodiments, as would be understood by those in the art. For example, in the following claims, any of the claimed embodiments can be used in any combination.Specific Details

[0202] In the description provided herein, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known methods, structures and techniques have not been shown in detail in order not to obscure an understanding of this description.

[0203] It will be appreciated that the methods / apparatus / devices / systems described / illustrated above at least substantially provide a location code generator and method therefor.

[0204] The location code generator and method therefor described herein, and / or shown in the drawings, are presented by way of example only and are not limiting as to the scope of the invention. Unless otherwise specifically stated, individual aspects and components of the location code generator and method therefor may be modified, or may have been substituted therefore known equivalents, or as yet unknown substitutes such as may be developed in the future or such as may be found to be acceptable substitutes in the future. The location code generator and method therefor may also be modified for a variety of applications while remaining within the scope and spirit of the claimed invention, since the range of potential applications is great, and since it is intended that the present invention be adaptable to many such variations.Terminology

[0205] In describing the preferred embodiment of the invention illustrated in the drawings, specific terminology will be resorted to for the sake of clarity. However, the invention is not intended to be limited to the specific terms so selected, and it is to be understood that each specific term includes all technical equivalents which operate in a similar manner to accomplish a similar technical purpose. Terms such as "forward", "rearward", "radially", "peripherally", "upwardly", "downwardly", and the like are used as words of convenience to provide reference points and are not to be construed as limiting terms.Different Instances of Objects

[0206] As used herein, unless otherwise specified the use of the ordinal adjectives “first”, “second”, “third”, etc., to describe a common object, merely indicate that different instances of like objects are being referred to, and are not intended to imply that the objects so described must be in a given sequence, either temporally, spatially, in ranking, or in any other manner.Combinations of features in embodiments

[0207] Different features are described in different embodiments in this specification, however it is envisaged that any features shown in any embodiment described may be used with any other features in any other embodiment in any combination, unless this is not logically possible.Comprising and Including

[0208] In the claims which follow and in the preceding description of the invention, except where the context requires otherwise due to express language or necessary implication, the word “comprise” or variations such as “comprises” or “comprising” are used in an inclusive sense, i.e. to specify the presence of the stated features but not to preclude the presence or addition of further features in various embodiments of the invention.

[0209] Any one of the terms: including or which includes or that includes as used herein is also an open term that also means including at least the elements / features that follow the term, but not excluding others. Thus, including is synonymous with and means comprising.Scope of Invention

[0210] Thus, while there has been described what are believed to be the preferred embodiments of the invention, those skilled in the art will recognize that other and further modifications may be made thereto without departing from the spirit of the invention, and it is intended to claim all such changes and modifications as fall within the scope of the invention. For example, any formulas given above are merely representative of procedures that may be used. Functionality may be added ordeleted from the block diagrams and operations may be interchanged among functional blocks. Steps may be added or deleted to methods described within the scope of the present invention.

[0211] Although the invention has been described with reference to specific examples, it will be appreciated by those skilled in the art that the invention may be embodied in many other forms.Chronological order

[0212] For the purpose of this specification, where method steps are described in sequence, the sequence does not necessarily mean that the steps are to be carried out in chronological order in that sequence, unless there is no other logical manner of interpreting the sequence.Markush groups

[0213] In addition, where features or aspects of the invention are described in terms of Markush groups, those skilled in the art will recognise that the invention is also thereby described in terms of any individual member or subgroup of members of the Markush group.Industrial Applicability

[0214] It is apparent from the above, that the arrangements described are applicable to the warehousing and storage industries.

Claims

CLAIMS1. A location code generator for generating location codes for use in identifying locations in a warehouse, the location code generator including: a. a processor operatively configured for executing digital instructions; b. at least one or more transceivers; c. digital storage media operatively connected to the processor and configured for storing instructions configured for directing the processor to carry out the steps of: i. receiving an input indicative of the quantity of a counter associated with one or more selected from: one or more warehouses; one or more zones associated with a warehouse; one or more rows associated with a zone; one or more bays associated with a row; one or more levels associated with a bay; one or more positions associated with a level; and wherein the warehouse, zone, row, bay, level, position and depth position are associated with each other hierarchically in unique lines of hierarchy so that all of the zone counters are associated with each of the warehouse counters; all of the row counters are associated with each of the zone counters; all of the bay counters are associated with each of the row counters; all of the level counters are associated with each of the bay counters; all of the position counters are associated with each of the level counters; ii. automatically allocating a unique location identifier for all of the position counters associated with each of the level counters, all of the level counters associated with each of the bay counters, all of thebay counters associated with each of the row counters, all of the row counters associated with each of the zone counters, and all of the zone counters associated with each of the warehouse counter; and iii. generating a checking code associated with each of the unique location identifiers; iv. generating an ordered list of the unique location identifiers and checking codes, each unique location identifier being associated with an associated checking code.

2. The location code generator as claimed in claim 1 , wherein the instructions are configured for directing the processor to carry out the steps of: a. generating a checking code by passing the unique location identified through a hashing algorithm to generate a checking code with a predetermined output format.

3. The location code generator as claimed in either of claims 1 or 2, wherein the instructions are configured for directing the processor to carry out the steps of: a. generating a checking code with a predetermined output format; b. comparing the checking code to a predetermined number of previously generated ordered checking codes in the ordered list to establish if the checking code is a duplicate of a previously generated checking code; and c. generating a further checking code from the generated checking code in the event that the generated checking code is a duplicate of a checking code in the ordered list within the predetermined ordered number of previously generated checking codes.

4. The location code generator as claimed in any one of claims 1 to 3, wherein the instructions are configured for directing the processor to carry out the steps of: a. receiving an input of one or more selected from: i. zone counters to omit ii. row counters to omit; iii. bay counters to omit; iv. level counters to omit; v. position counters to omit; and vi. depth position counters to omit; andb. preventing unique location identifiers being generated for one or more selected from: i. omitted zone counters; ii. omitted row counters;; iii. omitted bay counters; iv. omitted level counters; v. omitted position counters; and vi. omitted depth position counters.

5. The location code generator as claimed in any one of claims 1 to 4, wherein the instructions are configured for directing the processor to carry out the steps of: a. generate an ordered list of checking codes. b. dividing the ordered list of checking codes into substantially equal checking code sublists; c. shuffling the order of each of the checking code sublists as shuffled checking code sublists; and d. generating a concatenated checking code list by concatenating the shuffled checking code sublists.

6. The location code generator as claimed in claim 5, wherein the instructions are configured for directing the processor to carry out the steps of: a. checking whether the concatenated checking code list is equal to or larger than the number of location codes;7. The location code generator as claimed in claim 6, wherein the instructions are configured for directing the processor to carry out the steps of: a. reshuffling one or more checking code sublists and concatenating the reshuffled checking code sublists to the concatenated checking code list.

8. The location code generator as claimed in any one of claims 1 to 7, wherein the instructions are configured for directing the processor to carry out the steps of: a. selecting a sequence of checking codes from the concatenated checking code list equal to the number of location codes; and b. associating each checking code from the selected sequence in order with the ordered location codes.

9. The location code generator as claimed in any one of claims 1 to 8, wherein the instructions are configured for directing the processor to carry out the steps of:a. printing a plurality of stickers, each sticker bearing a location code and an associated checking code.

10. A method of generating location codes, the method being carried out on an electronic device and including the steps of: a. receiving an input indicative of the quantity of a counter associated with one or more selected from: one or more warehouses; one or more zones associated with a warehouse; one or more rows associated with a zone; one or more bays associated with a row; one or more levels associated with a bay; one or more positions associated with a level; and wherein the warehouse, zone, row, bay, level, position and depth position are associated with each other hierarchically in unique lines of hierarchy so that all of the zone counters are associated with each of the warehouse counters; all of the row counters are associated with each of the zone counters; all of the bay counters are associated with each of the row counters; all of the level counters are associated with each of the bay counters; all of the position counters are associated with each of the level counters; b. automatically allocating a unique location identifier for all of the position counters associated with each of the level counters, all of the level counters associated with each of the bay counters, all of the bay counters associated with each of the row counters, all of the row counters associated with each of the zone counters, and all of the zone counters associated with each of the warehouse counter; and c. generating a checking code associated with each of the unique location identifiers.d. generating an ordered list of the unique location identifiers and checking codes, each unique location identifier being associated with an associated checking code.

11. The method as claimed in claim 10, wherein the method includes: a. generating a checking code with a predetermined output format; b. comparing the checking code to a predetermined number of previously generated ordered checking codes in the ordered list to establish if the checking code is a duplicate of a previously generated checking code; and c. generating a further checking code from the generated checking code in the event that the generated checking code is a duplicate of a checking code in the ordered list within the predetermined ordered number of previously generated checking codes.

12. The method as claimed in either of claims 10 or 11 , wherein the method includes: a. generating a checking code by passing the unique location identified through a hashing algorithm to generate a checking code with a predetermined output format.

13. The method as claimed in any one of claims 10 to 12, wherein the method includes: a. receiving an input of one or more selected from: i. zone counters to omit ii. row counters to omit; iii. bay counters to omit; iv. level counters to omit; v. position counters to omit; and vi. depth position counters to omit. b. preventing unique location identifiers being generated for one or more selected from: i. omitted zone counters; ii. omitted row counters; iii. omitted bay counters; iv. omitted level counters; v. omitted position counters; and vi. omitted depth position counters.

14. The method as claimed in any one of claims 10 to 13, wherein the method includes:a. generating an ordered list of checking codes. b. dividing the ordered list of checking codes into substantially equal checking code sublists; c. shuffling the order of each of the checking code sublists as shuffled checking code sublists; and d. generating a shuffled checking code full list by concatenating the shuffled checking code sublists.

15. The method as claimed in claim 14, wherein the method includes: a. checking whether the concatenated checking code list is equal to or larger than the number of location codes;16. The method as claimed in claim 15, wherein the method includes: a. reshuffling one or more checking code sublists and concatenating the reshuffled checking code sublists to the concatenated checking code list.

17. The method as claimed in claim 16, wherein the method includes: a. selecting a sequence of checking codes from the concatenated checking code list equal to the number of location codes; and b. associating each checking code from the selected sequence in order with the ordered location codes.

18. The method as claimed in any one of claims 10 to 17, wherein the method includes: a. printing a plurality of stickers, each sticker bearing a location code and an associated checking code.END