8.07. Stock control methods for your customers (requisitions)

mSupply is designed for situations such as a central supply facility within a country or region, or within a hospital where the supply of stock to customers is controlled by the supplying facility. That is, supply of stock to customers is managed by the supplying store.

Regardless of who controls the supply of stock, it needs to be made principally on the basis of information about the customer's anticipated usage. mSupply has several ways of arriving at quantities to be supplied to customers:

Collectively, these are grouped together as different types of requisition. When editing an item, you can view all types of requisition records for that item. More information is available on the requisitions page (if you can think of better names, please tell us!).

Please note that it is possible for all of these to be done by programme if required - see the 4.05. Programs page for details.

The lists of items that a customer can receive can be dfined by master lists.

See the 4.04. Item master lists page for information on managing master lists and see the Assigning a list to a customer section for how to assign a master list to a customer.

Choose Customer > Show requisitions… from the menus or click on the Requisitions icon on the Customers tab of the Navigator:

This window will open, showing you a list of the requisitions already in the system:

Columns in the table:

  • ID: Unique identifier of the requisition.
  • Name: The name of the customer the requisition has been entered for.
  • Date entered: The date the requisition was first saved in mSupply.
  • Requisition date: The date the requisition as given by the customer.
  • Status: The status of the requisition (sg, cn, or fn nomally, web requisitions can also be wf or wp).
  • Type: The type of requisition; sh for customer stock history, im for imprest or response for a response requisition.
  • Comment: The comment entered on the requisition.

Buttons and fields in the window:

  • Show drop down list: Use the Show drop down list to filter the requisitions by status.
  • Search field: If the list of requisitions is too long to find a particular requisition you are interested in then you can type something in the Search field. If you type anything in the Search field, only requisitions with a customer name, requisition number, program or comment that contain what you typed will be displayed.
  • New XX buttons: To create a new requisition of a particular type (see below), click on the appropriate button - a new, blank window will open ready for you to enter the requisition.
  • Delete button: To delete a requisition, click on it in the list to select it then click on the Delete button. You will be asked to confirm the deletion before it is carried out. Please note: You cannot delete a requisition if a customer invoice has been created from it - mSupply will tell you if this is the case. You can still delete the requisition but you must delete the customer invoice first.
  • Finalise button: This button allows you to finalise multiple requisitions at once. Simply highlight a selection of requisitions in the list and click on the button. Only Confirmed status requisitions will be finalised; requisitions of any other status will be ignored. After finalisation has been carried out you will be told how many were successfully finalised and how many couldn't be updated because they weren't confirmed or because they were in use by someone else.

To edit a particular requisition, double-click on it in the list. A window will open, populated with the requisition's details; the window will be different depending on the type of requisition (see sections below).

The theory behind the stock history method (sometimes referred to as the Historical Logistics Method) is based on the assumption that future customer usage will be similar to historic usage.

We can calculate the customer's average usage over time if we know their stock levels at two points in time, and what stock they received from us in that intervening period. We assume that this average usage rate will continue over the coming supply period.

There are three more variables that need to be estimated:

  • The number of months in the coming supply period
  • The lead time required to supply them (that is, the time lag between the customer doing a stocktake in order to trigger re-supply, and receipt of the stock)
  • The number of month's worth of buffer stock they need

With this data, the calculation is like this:

  • A = Stock on hand on date1
  • B = Amount supplied to customer between date1 and date2
  • C = Stock on hand on date2
  • D = Quantity used in period between date1 and date2 = A+B-C
  • E = number of months between date1 and date2
  • F = Usage rate = D/E
  • G = Number of months in coming supply period
  • H = Number of buffer stock months desired
  • I = Lead time (months) between date2 and delivery of stock
  • J = Amount to supply = F*(G+H+I)-C

Using the stock history method:

  • A and C are reported by the customer on date1 and date2 respectively
  • B is calculated by mSupply based on mSupply records
  • G, H and I are entered by the user
  • D, E, F and J are calculated by mSupply

mSupply uses stock issued by the supplying store to arrive at the parameter B.

Obviously, if the customer has received goods from other sources during the calculation period, B will be inaccurate!

In order to calculate the usage rate, mSupply requires stock on hand figures of the items on the list recorded on an earlier date (date1) = A, above. This becomes the initial stock history record.

To create such a record, follow the procedure described below for entering a stock history, noting particularly, the following:

  1. Enter the date as the correct date at the time the stocktake was performed.
  2. Ignore the figures that automatically appear along each row, except for the Their current stock column.
  3. Enter their current stock figures in the Their current stock column
  4. Close the window using the OK button.

Once your customer's first stocktake record has been entered, and a period of time has passed with some customer stock usage, re-supply can be be generated on the basis of this usage.

A re-supply using the stock history method needs to be triggered by a customer stocktake. If your customer is set up with mSupply customer web interface, then this process can be initiated by the customer directly, and then completed in the supplying store as described below.

If your customer has not used the mSupply customer web interface to report their stocktake, then their stock data needs to be entered in manually to the supplying store.

Manual entry of customer stock history

To begin the process, choose Customer > Show requisitions, and the list of any historic customer stock histories is displayed along with the other requisition types. The Status column lets you know the status: sg (suggested) or cn (confirmed). The Type column shows the stocktake type: im (Imprest), sh (Stock History) or response (Requisition):

Double-clicking on a line will allow you to edit the selected record (provided that you have permission to do so).

With the passage of time, entries on the list will rapidly grow in number, and so mSupply allows you to apply a filter selecting exactly what will be displayed. The default display is for Suggested, as these are most likely the ones you will be processing; other options include All, Confirmed, Web entries to be processed - this covers histories submitted via the web customer interface - and Entered today

Add new customer stock history

Click the New customer stock history button, to display the Enter new customer stock history… window:

Enter the first few letters of customer's name in the Name field, then press the Tab key to call up the list of customers' names from which the required customer may be chosen. In this example, our customer is Medical Ward.

Once you have chosen a customer, the window is populated with the items that are members of any item lists that:

  • Have been assigned to that customer (both master lists and local lists)
  • and that have the “Stock history” check box checked for that list

You are presented with this window:

Fill in customer stock history

The Our SOH column is the stock on hand in our own store, while figures in all subsequent columns are the customer's data.

The first entry to be made is in the Days to supply field, where the appropriate figure should be entered - e.g. 30 if the ordering frequency is monthly, 90 if it is quarterly, etc.

You will see in our example that

  • 29 days have passed since the last stocktake
  • The column headed Their old SOH shows their stock on hand at the last stocktake
  • The column headed They received shows the amounts supplied when their last order was processed
  • The column headed Their current SOH is the column where the customer's current stock figures (as provided by the customer) are entered. But note that, just as with the imprest method, if the name you entered in the Name textbox is actually another store then this column will be automatically filled in with the current stock in the store - saving you a lot of time (you only need to edit those figures where the stock in mSupply does not actually match what's on the store's shelves).
  • As figures are entered, mSupply® calculates a suggested quantity to order, and this appears in the Suggested quan column. These suggested quantities should be reviewed, and any adjustment entered in the Actual quan column to reflect, for example, pack sizes and to ensure that actual quantities match exact multiples of the pack size.

After entries have been made in the column Their current SOH the window will look like this:

All that remains is to make adjustments in the Actual quantities column, to reflect appropriate pack sizes.

Once you are satisfied, the Confirm box (bottom left corner) should be checked, the Create customer invoice button should be clicked, and you will proceed to creating the customer invoice, which is the same for all requisition types.

Printing forms

Clicking the Print button provides several options for printing forms:

  1. Customer stock takes: This form you can give to the customer (for example, if they are a ward in a hospital that has mSupply running in it's pharmacy store), and they can fill out the quantities they have on hand, and then values are entered into mSupply.
  2. Customer stock supply: This form provides information to give to the customer about the quantity they will be supplied.
  3. Customer stock request and issue: This form provides information for the customer comparing what was requested with what was actually supplied.

The second two reports are for use after you have entered quantities to be supplied into the customer stock history window.

The Imprest method is probably the most commonly understood and used method of stock control, and has been used for many years, probably since before the invention of the computer!

As can be seen by the discussion below, the Imprest method is a simplification of the Stock History method discussed above. We argue that the Stock History method is superior to the Imprest method because it dynamically calculates a number of values based on live customer consumption data, rather than relying on some historic calculation that is likely out of date. It is quite understandable why the Imprest method is the standard approach in hospitals - because it was developed before the computer age, and its hard to change old habits. However, now that you have mSupply ready to do the number crunching, we suggest that you seriously consider using the Stock History method instead of the Imprest method… :-)

With the Imprest method, the quantity to be ordered is the quantity necessary to restore the stock on hand to a pre-agreed fixed quantity. This imprest stocktake must be carried out on a regular fixed frequency (daily, weekly, fortnightly, monthly, whatever.) This pre-agreed fixed quantity is arrived at on the basis of a number of simplifications to the stock history method:

  • A = Stock on hand on date1
  • B = Amount supplied to customer between date1 and date2
  • C = Stock on hand on date2 THE ONLY INFORMATION COLLECTED
  • D = Quantity used in period between date1 and date2.
  • E = number of days between date1 and date2
  • G = Number of days in coming supply period PRE-DETERMINED AND FIXED
  • H = Number of buffer stock days desired PRE-DETERMINED AND FIXED
  • I = Lead time (days) between date2 and delivery of stock = 0

The Imprest Quantity = F*(G+H+I)

  • J = Amount to supply = Imprest Quantity -C

If stocktakes are not taken at the pre-determined frequency, and particularly if they are missed, the system will fail. It is a fairly rigid system, in that once set, F, G and H must remain constant. It is frequently used for supplying wards in a hospital setting, where operations are generally more rigidly controlled.

The imprest system operates in this way:

  • The stock of a particular item which a customer (usually a clinic, ward or department) should hold is agreed. This is the Imprest quantity.
  • A stocktake is carried out at the facility, giving us a Stock on hand.
  • The amount to be ordered by the facility is calculated as:

Order quantity = Imprest quantity - Stock on hand

For example, take the case of a rural clinic which receives a monthly order from a central store:

  • It is agreed that the clinic, when fully stocked, should hold 10,000 paracetamol 500mg tablets. This is the Imprest quantity.
  • At the end of a particular month, a stocktake shows that the Stock on hand is 2,400 paracetamol tablets.
  • To restore the stock of paracetamol tablets to the Imprest quantity, the amount to be ordered is calculated as:

Order quantity = 10,000 (Imprest quantity) minus 2,400 (Stock on hand) = 7,600

This feature caters for mSupply users who operate an imprest system, where a central store supplies goods on a regular basis to a number of customers, who may/may not be mSupply users themselves. We advise that the customers should be provided with a list - perhaps for a 12 month period - of the dates on which they should perform a stock check and submit the figures, ideally on a customised form, to the central store acccording to the prearranged schedule. It is important to note that the customer needs to supply only the current stock on hand figures, a relatively simple task; customers are not required to submit details of what they perceive to be order quantities.

It should be remembered that the items to be included in the list and their imprest quantities must be defined for each customer individually. The imprest quantity defined for a particular customer is unique to that customer, and has no bearing on imprest quantities defined for other customers.

The central store, on receiving the stock on hand details from the customer, selects from the Navigator or Customer menu the item Show requisitions, which displays this window:

If you are working with a customer for whom no imprest list has been defined, clicking on the New customer imprest will display the Enter new imprest window, where appropriate entries are made.

Continuing to use Highland Health Centre as our example (for whom we have created an imprest list), double clicking on that entry displays this new window on which the imprest list appears:

You will note that there are no entries in the Their current stock column, and the figures supplied by the customer should be entered; click on each line, and after a second or two the zero appearing in that column can be edited with the required figures.

There is an important exception here: if the name you entered in the Name textbox is actually another store in mSupply then the Their current stock column will be automatically filled in with the stock in the store. Very useful time saving feature!

Simultaneously, mSupply completes the next two columns, Suggested Quantity , and Actual Quantity. The Actual Quantity entries may be edited to reflect, for example, pack sizes, to ensure that actual quantities match exact multiples of the pack size. After editing, the window may appear like this:

Should you have any reason to identify one or more lines, this may be performed by highlighting the line(s), and changing the colour of the font. Black is the default, but other options may be selected from the drop-down list:

Selecting 5 or more lines brings up an alert requiring confirmation of your intention.

Once you are satisfied, the Create customer invoice button should be clicked, and you will proceed to creating the customer invoice, which is the same for all requisition types.

These work in much the same way as customer stock histories, but with some notable differences:

  • Most importantly, you don't need to create it! A response requisition will be automatically created in your (supplying) store as a result of a request requisition from an mSupply mobile (see here for details) or an internal order from another store (e.g. on another mSupply 'desktop' site). In both of these cases, the customer is another store in your mSupply system and most of the data will have been entered already by them. You can create one manually if you need to though, as we'll describe below.
  • It doesn't attempt to calculate usage or suggest an amount to supply - this data is expected to have come from the customer.
  • It is possible to generate multiple customer invoices from a single response requisition e.g. if not all of the requested stock is available at the time the requisition is entered, this allows for an initial customer invoice to be sent to partially fulfil the request and another to be sent at a later date when more stock becomes available.
  • It provides a more accurate way to track demand vs supply.

To begin the process, choose Customer > Show requisitions, and the list of any historic response requisitions is displayed along with the other requisition types. A Status of sg (suggested) means that no customer invoices have been created yet - as soon as the first customer invoice is created, the status will go to cn (confirmed):

Either double-click on an existing requisition to edit it, or click the New customer requisition button to create a new one. The example below is for a manually entered requisition:

If this is a manually entered requisition:

  • Enter/update the customer Name in the same way as a customer stock history (i.e. enter the first key characters and hit the Tab key to find matches), but note that changing the customer will invalidate any other data that you've already entered.
  • If necessary, update the Requisition date, Order received and Required date - these will default to the current date.
  • Select a Category if required (see below for setting these up).
  • Use either the New line button to manually add a single item, or Add from master list to add all items from a master list.

When you click on the Add from master list button you will see a list of all the master lists assigned to your store and your customer (see the 4.04. Item master lists page for details on master lists and how to assign them). Whichever master lists you choose to add items from, only the items visible in your customer's store will be added to the requisition. This will avoid the situation where you send a store an item that they didn't previously have visible to them!

  • If the customer is another store, mSupply already knows their current stock, otherwise adding a single item will give you the opportunity to enter the customer's current stock for that item. Either way, the cursor will go into the Customer current stock on hand cell, which will already be filled in.
  • If adding from a master list, the cursor will go into the first new item's Customer current stock on hand cell, but you'll then have to type in a value (unless the customer is another store, in which case the value will have been filled in for you).
  • Either way, hitting the Tab key will move the cursor into the Customer requested cell. Type in a value and this will be automatically copied to the Remaining to supply cell and also the Supply this invoice cell, which will now have the cursor.
  • Amend the Supply this invoice value if necessary and optionally enter a Comment (e.g. if the amount supplied is less than requested).
  • If necessary, use the Delete line(s) button to remove selected item lines.

If the requisition has come in automatically from another store (e.g. mobile or an internal order):

  • The customer Name is already filled in and cannot be changed.
  • The Customer current stock on hand and Customer requested columns are already filled in and cannot be changed i.e. only the Supply this invoice and Comment columns are editable.
  • If necessary, you can still add and/or delete item lines manually.

If the requisition has a lot of item lines, you can filter them by typing into the Filter items field. If you do that, only the lines with items beginning with the letters you have typed in the field will be displayed. The text X/Y will be displayed after the search field to indicate that X lines of the total Y lines in the requisition are currently being displayed (2/8 in the following screenshot):

Note that, while a filter is active, some of the other buttons are disabled e.g. you can't create an invoice or save the sort order unless all lines are visible. To make them active again, simply delete any text in the Filter items textbox (which will remove the filter).

Once you are satisfied, the Create customer invoice button should be clicked, and you will proceed to creating the customer invoice. The Supply this invoice values will be used to populate the new customer invoice and the requisition status will change to confirmed.

Finalise Checkbox

Clicking on the “Finalise Checkbox” finalises the requisition form. After this no changes can be made.

Finalised requisitions will no longer appear on reports that show “Remaining Quantities” as pending. Finalised requisitions are be considered as fully processed.

The Reference documnents tab on a requisition enables you to save documents and other files relating to the requisition. The tab looks like this:

The table shows you all the files currently uploaded to this requisition.

  • Upload document button: Click this to upload a document ot the requisition. This will open a window enabling you to search for and select the file on your computer. After you've selected it, click on the Open button to upload it. If you upload a file with the same name as one already uploaded, mSupply will upload it as a new version of the already uploaded file.
  • Delete document button: Select a file in the table by clicking on it and click this button to remove it from the requisition.
  • Download document button: When you click on this button you are presented with two options:
    • Download: this will download the file to a location you select on your computer.
    • Download and open: this will download the file to a location you select on your computer and then attempt to open it using the default application on your computer for that file type. If there is no application associated with the file type on your computer then mSupply will tell you that the file could not be opened.

You can assign requisitions to a category for reporting. To setup the categories that users can select from, choose Special > Requisition categories from the menus. This window will open:

This window shows a list of all the requisition categories currently setup. The ones with a tick in the Is active column are the ones that can be selected on a requisition. If there is a long list then you can type in the Type here to search field to show only categories that contain what you type.

To add a new category, click on the New button. This window opens:

Enter a Description, click the OK button and the new category is added to the list.

To edit a category, double-click on it in the list and the same window as creating a new one will open but populated with the selected category's settings. Edit the category's name or the active status and click the OK button to save your changes.

You can quickly set a category as inactive (which means that it will no longer appear in the drop down list for selection on a requisition) by selecting it in the list and clicking on the Set inactive button.

Summarising from above, the status of the requisition has the following meanings:

  • Status = sg (suggested): No customer invoices have been created yet
  • Status = cn (confirmed): At least one customer invoice has been created from the requisition
  • Status = fn (finalised): No changes can be made to the requisition. It will no longer appear on reports that show “Remaining Quantities” as pending. Finalised requisitions are be considered as fully processed.

Regardless of the requisition type, when the Create customer invoice button has been clicked, and the following window appears:

If the customer invoice has been generated from an original internal order in another store, the customer invoice window will have a red Stock transfer label.

Similarly, if the customer invoice has been generated from an original internal requisition in another store, the customer invoice window will have a red Internal requisition label.

All the entries appear as (red) placeholder lines. The operator needs to allocate stock to each of these placeholder lines before a pick list can be printed. The operator can either manually allocate stock or by using the Grinder button.

The next step is to double click on each entry and allocate stock. In the example, the 1st item on the invoice, Ibuprofen 200mg tablets, is being processed; there are several batches in our store, some of which have reached their expiry; although line 4 indicates there are sufficient to meet this order in the store, you will note that only 106 tablets are available, so we select line 6.

Clicking on OK & Next displays the next item on the invoice, Prednisolone 5mg tablets.

Click Redistribute all, which is the normal procedure. There is only one batch available, but there is insufficient stock to meet the order, so mSupply® creates a placeholder line for the outstanding amount.

When the final item has been processed, clicking on OK will display the completed invoice.

If your store is organised well, particularly by use of location priorities, you can automatically allocate stock to all placeholder lines by use of the grinder icon at the bottom left.grindericon.jpg


Make sure the Hold checkbox is not checked, and at this stage the invoice may be confirmed.

If the customer invoice is for another store (i.e. if it has a red Stock transfer label or red Internal requisition label), it must be finalised in order to transfer the goods to the other store:

  • The Already issued column will be updated to reflect any non-placeholder lines (i.e. those not coloured red in the customer invoice) in any customer invoices which have been generated from the requisition regardless of the customer invoice status (i.e. it doesn't have to be confirmed).
  • The Remaining to supply column will be reduced by the amount already issued, and Supply this invoice will be updated accordingly:

In the example above, a single customer invoice has been created to supply most of the requested stock, apart from two items. You can then create a second customer invoice to supply the outstanding amounts.

Details of the related customer invoices can be seen in the Invoices created tab:

Double-clicking on any of these lines will open the corresponding customer invoice.

Obviously, regardless of the calculation method employed, if the supplying store fails to re-supply the customer within the supply period (G) then the customer will start eating into the buffer stock and is in danger or running out of stock!

  • Last modified: 2023/05/11 12:01
  • by Gary Willetts