Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
issuing_goods:stock_control_methods [2022/09/05 13:46] – [Entering a requisition] Gary Willettsissuing_goods:stock_control_methods [2025/08/03 22:16] (current) – [Defining the list of items to be included in the re-supply] Mark Glover
Line 4: Line 4:
 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. 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:+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, in rough order of sophistication:
  
-  * [[issuing_goods:issuing_goods_customer_invoice|Responding directly to paper-based customer orders/requisitions]] +  * If there is **NO** information from the customer about item usage (AMC) or stock levels, then the supplying store can only 'push' stock to the customer by [[issuing_goods:issuing_goods_customer_invoice|Creating a new Customer Invoice]] with quantities derived from some other sources. 
-  * [[issuing_goods:stock_control_methods#stock_history_method|The stock history method]] +  * If the customer has sent a manual (paper or email) 'order' or 'requisition' for stock, containing just the quantities of each item required, then the supplying store is informed by these quantities when preparing the Customer Invoice.  It is often helpful to keep a record of the quantities that the customer has ordered, especially if the issued quantities are different to what was requested.  To achieve this, a [[issuing_goods:stock_control_methods#new_customer_requisition|New customer requisition]] can be created, recording these requested quantities.  The Customer Invoice can be created easily from this requisition. 
-  * [[issuing_goods:stock_control_methods#imprest_method|The imprest method]] +  * [[issuing_goods:stock_control_methods#imprest_method|The imprest method]] is common in hospitals where the customer can provide the current Stock on Hand (SoH) and there is a long and relatively stable track record of item consumption, from which 'Imprest values' have been calculated manually, outside of mSupply. 
-  * [[issuing_goods:stock_control_methods#response_internal_requisitions|Response requisitions]] +  * [[issuing_goods:stock_control_methods#stock_history_method|The stock history method]] is similar to the imprest method, but lets mSupply calculate the 'imprest values' automatically. 
-    * [[clients:cotedivoire:requisitions|Full Entry of Request & Requisition Forms by the Supplying Facility]] +  * [[issuing_goods:stock_control_methods#response_internal_requisitions|Response requisitions]] is more accurate method for cases where the customer's SOH and AMC for each item are known.  This should be the case if the customer is an mSupply store. 
-    * (This was developed for Côte d'Ivoire but can be activated for any country on request)+  * [[clients:cotedivoire:requisitions|Full Entry of Request & Requisition Forms by the Supplying Facility]] is an enhancement to the standard response requisition method. This feature was developed for Côte d'Ivoire but can be activated for any country on request.
  
-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 [[items:item_basics#requisitions|]] page (if you can think of better namesplease tell us!).+With the exception of the 'Push' method, 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 [[items:item_basics#requisitions|]] page
 + 
 +<WRAP center round important 60%> 
 +  * If the customer is an mSupply store which is being operated correctly (issuance is being recorded, and so mSupply records of the customer's AMC and SOH for each item are realistic), then [[issuing_goods:stock_control_methods#response_internal_requisitions|Response requisitions]] is the appropriate method to use. 
 +  * If the customer is //not// an mSupply store, then the customer's SOH and AMC are not populated through mSupply and a [[issuing_goods:stock_control_methods#new_customer_requisition|New customer requisition]] is appropriate. 
 +  * If the customer //is// an mSupply store but is not being operated correctly (issuance is not being recorded), then the customer's SOH and AMC for each item are likely unrealistic.  In these cases, you can still process any [[issuing_goods:stock_control_methods#response_internal_requisitions|Response requisitions]], but be <wrap em>extremely cautious</wrap> about the customer's SOH and AMC values.  If they have not submitted an internal order to create the [[issuing_goods:stock_control_methods#response_internal_requisitions|Response requisition]], then it is generally appropriate to use one of the more basic requisition types:  [[issuing_goods:stock_control_methods#new_customer_requisition|New customer requisition]]([[issuing_goods:stock_control_methods#imprest_method|The imprest method]] or [[issuing_goods:stock_control_methods#stock_history_method|The stock history method]]). 
 +</WRAP> 
 + 
 +<WRAP center round important 60%> 
 +Pack sizes for all requisitions are 1 (one) 
 +</WRAP> 
 + 
 + 
 + 
 + 
 +<WRAP center round tip 60%> 
 +It is possible for all of these methods to be done by programme if required - see the [[items:programs|]] page for details. 
 +</WRAP>
  
-Please note that it is possible for all of these to be done by programme if required - see the [[items:programs|]] page for details. 
  
  
 ===== Defining the list of items to be included in the re-supply ===== ===== Defining the list of items to be included in the re-supply =====
-The lists of items that a customer can receive can be dfined by master lists.+The lists of items that a customer can receive can be defined by master lists.
  
 See the [[items:master_lists|]] page for information on managing master lists and see the [[items:master_lists#assigning_a_list_to_a_customer|Assigning a list to a customer]] section for how to assign a master list to a customer. See the [[items:master_lists|]] page for information on managing master lists and see the [[items:master_lists#assigning_a_list_to_a_customer|Assigning a list to a customer]] section for how to assign a master list to a customer.
 +
 ===== Viewing existing requisitions ===== ===== Viewing existing requisitions =====
 Choose //Customer > Show requisitions...// from the menus or click on the Requisitions icon on the Customers tab of the Navigator: Choose //Customer > Show requisitions...// from the menus or click on the Requisitions icon on the Customers tab of the Navigator:
Line 27: Line 44:
 {{ :issuing_goods:screenshot_2021-05-11_at_14.27.06.png?600 |}} {{ :issuing_goods:screenshot_2021-05-11_at_14.27.06.png?600 |}}
  
-This window will open, showing you a list of the requisitions already in the system:+This window will open, showing you a list of the requisitions already in the system.  The // Status// column shows you know the [[issuing_goods:stock_control_methods#requisition_status|Requisition status]].  The // Type// column shows the [[issuing_goods:stock_control_methods#requisition_type|Requisition type]]:
  
-{{ :issuing_goods:screenshot_2021-05-11_at_14.30.31.png?700 |}}+{{ :issuing_goods:requistion_list-2025-07-23-15-40-13.png?700 |}}
  
 +Columns in the table:
   * **ID:** Unique identifier of the requisition.   * **ID:** Unique identifier of the requisition.
   * **Name:** The name of the customer the requisition has been entered for.   * **Name:** The name of the customer the requisition has been entered for.
 +  * **Program:** If the program module has been enabled.
 +  * **Period:** This is displayed as part of the program module.
   * **Date entered:** The date the requisition was first saved in mSupply.   * **Date entered:** The date the requisition was first saved in mSupply.
   * **Requisition date:** The date the requisition as given by the customer.   * **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//).   * **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.   * **Type:** The type of requisition; //sh// for customer stock history, //im// for imprest or //response// for a response requisition.
 + * **Authorisation:** If the Authorisation module is used, then we see option like //none//, //pending// or finally //authorised//.
   * **Comment:** The comment entered on the requisition.   * **Comment:** The comment entered on the requisition.
  
-Use the **Show** drop down list to filter the requisitions by status.+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 {{:barcode_scanning:add_icon.png?20|}} 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.
  
-After filtering this way, if the list is too long to find a particular requisition you are interested in then you can type something in the **Search** fieldIf you type anything in the **Search** fieldonly requisitions with a customer name, requisition number, program or comment that contain what you typed will be displayed.+To edit a particular requisition, double-click on it in the list A window will openpopulated with the requisition's details; the window will be different depending on the type of requisition (see sections below).
  
-To edit particular requisition, double-click on it in the listwindow will open, populated with the requisition'details; the window will be different depending on the type of requisition (see sections below).+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// 
 + 
 +===== New customer requisition ===== 
 + 
 +While [[issuing_goods:stock_control_methods#viewing_existing_requisitions|viewing existing requisitions]], click the **New customer requisition** button to create a new one.  This will open a new 'manual' customer requisition, which is the most basic type.  See an example here: 
 + 
 +When you click the new //New customer requisition// button you may be presented with a choice of whether to process a **Program** order or a **General** order.  You will only get this choice if your mSupply system has been configured to use [[items:programs]].  The rest of this page will discuss General requisitions, which is what you will experience when you choose to process a **General** order. 
 + 
 +{{ :issuing_goods:new_customer_requistiongen-prgram-2025-07-23-16-01-12.png?700 | }} 
 + 
 +mSupply will present a requisition window in which you will need to choose your //customer// You select a customer in the usual way.  Below a customer has been chosen.  
 + 
 +{{ :issuing_goods:new_requistion_lucid_2025-07-23-16-19-57.png?600 | }}  
 + 
 +To add items that the customer has ordered, you can either manually add one item at time or you can add a list of items from the master list.  
 + 
 +{{ :issuing_goods:new_requistion_master_list-2025-07-23-16-26-39.png?600 | }} 
 + 
 +When a single or multiple master list are chosen, the requisition is populated by the items that is part of the chosen master list. 
 + 
 +{{ :issuing_goods:new_requistion_master_list_add_2025-07-23-16-40-37.png?600 | }}  
 + 
 +  * 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 [[issuing_goods:stock_control_methods#requisition_categories|Requisition categories]] for setting these up. 
 +  * Use either the **New line** button to manually add a single item, or **Add from master list** to add items from a [[items:master_lists|master list]]. 
 +  
 +<WRAP center round important 60%> 
 +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 [[items: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 that are both on that master list **//and//** 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!  
 +</WRAP> 
 + 
 +<WRAP center round alert 60%> 
 +If, for any of the lines, there is already a value in the //Customer current stock on hand// cell, then this is because the customer is actually another store in your mSupply system, mSupply already knows their current stock, and is displaying it here.  While it is possible to process a new 'manual' customer requisition for such customers, mSupply is designed for these facilities to place an internal order to your store through mSupply.  You can then 'respond' to these by processing a [[issuing_goods:stock_control_methods#response_internal_requisitions|Response (internal) requisitions]].  Please check to make sure that there isn't an existing response requisition waiting for you to process, rather than creating a new 'manual' customer requisition. 
 +</WRAP> 
 + 
 +    * Each line on the requisition will have four editable fields: 
 +      * The focus will first go into the //Customer current stock on hand// cell, where you can enter the customer's current stock for that item.  
 +      * Hitting the **Tab** key will move the focus into the //Customer requested// cell, where you can enter the value of what the customer has requested.  This is not necessarily the quantity that you intend to supply; it is just what the customer has requested. 
 +      * Hitting the **Tab** key will copy the quantity from the move the //Customer requested// cell to the //Supply this invoice// cell and the focus will move to the //Supply this invoice// cell.  You can amend the //Supply this invoice// value if necessary and, optionally, hit the **Tab** key to enter a //Comment// (e.g. the reason why the amount supplied is less than requested). 
 +  * If necessary, use the **Delete line(s)** button to remove selected item lines. 
 + 
 +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 displayedThe 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): 
 + 
 +{{ :issuing_goods:new_requistion_amox_serach-2025-07-23-16-45-28.png?700 | }} 
 + 
 +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|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 ''cn'' (confirmed). 
 + 
 +**Finalise Checkbox** 
 + 
 +Clicking on the "Finalise Checkbox" finalises the requisition form. After this no changes can be made and no additional customer invoices can be created from it.  Finalised requisitions will no longer appear on reports that show "Remaining Quantities" as pending.  Finalised requisitions are be considered as fully processed. 
 + 
 +==== Reference documents ==== 
 +The Reference documents tab on a requisition enables you to save documents and other files relating to the requisition. The tab looks like this: 
 + 
 +{{ :issuing_goods:pasted:20230118-174351.png?650 |}} 
 + 
 +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. 
 + 
 +==== Requisition categories ==== 
 +You can assign requisitions to a category for reporting. To setup the categories that users can select fromchoose //Special > Requisition categories// from the menus. This window will open: 
 + 
 +{{ :issuing_goods:pasted:20220905-135120.png?350 |}} 
 + 
 +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: 
 + 
 +{{ :issuing_goods:pasted:20220905-135425.png?450 |}} 
 + 
 +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'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. 
 +==== Requisition status ==== 
 + 
 +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 and no additional customer invoices can be created from it.  It will no longer appear on reports that show "Remaining Quantities" as pending.  Finalised requisitions are be considered as fully processed. 
 + 
 +==== Requisition type ==== 
 + 
 +There are a number of different types of requisition
 + 
 +Type = ''im'' (Imprest), created through a  
 +Type = ''sh'' (Stock History), created through a  
 +Type = ''response'' (Requisition), created automatically from an internal order from a customer's mSupply store or manually through a  
 + 
 +===== New customer imprest ===== 
 +A typical use case of imprest is for a hospital pharmacy that has to stock it's ward or departments with items and stock on a weekly basisHere the master list items will have the order quantities specified and the hospital pharmacy will aim to top of the ward or department with stock when the levels are low. [[faq:imprest_work_flow| Click here for further guidance]] 
 +===== Customer stock history method ===== 
 + 
 +A Customer stock history requisition uses the customer's history of stock on hand to calculate how much stock should be sent to the customer. 
 + 
 +The Stock history method is particularly useful for customers that: 
 +  * Are not using mSupply to manage their store 
 +  * Are able to report stock on hand for each item 
 +  * Do not receive stock from suppliers other than your store 
 +==== Theory ====
  
-To create a new requisition of a particular type (see below), click on the appropriate {{:barcode_scanning:add_icon.png?20|}} button - a new, blank window will open ready for you to enter the requisition. 
  
-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. 
-===== Stock history method ===== 
 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. 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. 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.
 +
 +<WRAP center round info 60%>
 +The Customer stock history is one of the few areas of mSupply that still works in days rather than months.  This is mainly because it is a suitable replacement for the [[issuing_goods:stock_control_methods#imprest_method|Imprest method]], where the order cycle is normally just a matter of days.
 +</WRAP>
 +
  
 There are three more variables that need to be estimated: There are three more variables that need to be estimated:
  
-  * The number of months in the coming supply period +  * The number of days 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 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.  In a hospital setting, you hope this is no more than ''1''! 
-  * The number of month's worth of buffer stock they need+  * The number of days's worth of buffer stock they need
  
 With this data, the calculation is like this: With this data, the calculation is like this:
Line 65: Line 201:
   * C = Stock on hand on date2   * C = Stock on hand on date2
   * D = Quantity used in period between date1 and date2 = A+B-C   * D = Quantity used in period between date1 and date2 = A+B-C
-  * E = number of months between date1 and date2+  * E = number of days between date1 and date2
   * F = Usage rate = D/E   * F = Usage rate = D/E
-  * G = Number of months in coming supply period +  * G = Number of days in coming supply period 
-  * H = Number of buffer stock months desired +  * H = Number of days of buffer stock desired 
-  * I = Lead time (months) between date2 and delivery of stock+  * I = Lead time (days) between date2 and delivery of stock
   * J = Amount to supply = F*(G+H+I)-C   * J = Amount to supply = F*(G+H+I)-C
  
Line 82: Line 218:
 mSupply uses stock issued by the supplying store to arrive at the parameter B. mSupply uses stock issued by the supplying store to arrive at the parameter B.
  
-<wrap em>Obviously, if the customer has received goods from other sources during the calculation period, B will be inaccurate!</wrap>+<wrap em>Obviously, if the customer has received goods from other sources during the calculation period, B will be a lower figure than reality.  This will result in D, F and J being calculated as less than reality!</wrap>
 </WRAP> </WRAP>
  
 ==== First stocktake record ==== ==== First stocktake record ====
  
-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//.+In order to calculate the usage rate, mSupply requires stock on hand figures of the items 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 [[issuing_goods:stock_control_methods?&#manual_entry_of_customer_stock_history|entering a stock history]], noting particularly, the following:+If you have access to this earlier stock record for your customer, you can create this //initial stock history record// prior to processing their regular order.  To create such a record, follow the procedure described below for [[issuing_goods:stock_control_methods#add_new_customer_stock_history|New customer stock history]], with the following changes:
  
-  - Enter the date as the correct date at the time the stocktake was performed+  - Enter the correct **Stocktake date**.  That is, the date when the customer undertook the stocktake.  If you don't know the exact date, estimate it, accepting that there may be some error in resulting calculations.  You will see this alert.  Just click **No** (or press **Enter**):\\ {{.:pasted:20250729-232558.png}} 
-  - Ignore the figures that automatically appear along each row, except for the //Their current stock// column. +  - Ignore any figures that appear in the table, except for the **Customer current stock on hand** column.  In this column, enter your customer'stock figures as reported on the **Stocktake date** entered above. 
-  - Enter their current stock figures in the //Their current stock// column +  - Click the **Confirm** checkbox. 
-  - Close the window using the //OK// button.+  - Close the window using the **OK** button.
  
-==== Regular use ====+<WRAP center round important 60%> 
 +If you don't have this earlier stock record for your customer, you can just proceed to create a New customer stock history requisition, ensuring that you do enter the //Customer current stock on hand// values.  These values will then be used as the //initial stock history record// when you enter the next customer requisition as a **New customer stock history**. 
 +</WRAP>
  
-Once your customer's [[issuing_goods:stock_control_methods?&#first_stocktake_record|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 [[web_interface:msupply_customer_setup|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 ====+==== Regular use ====
  
-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):+Once your customer's [[issuing_goods:stock_control_methods?&#first_stocktake_record|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.
  
-{{ :issuing_goods:requisition-list.png.?650 }}+A re-supply using the stock history method is normally initiated by a customer stocktake If your customer is set up with [[web_interface:msupply_customer_setup|mSupply customer web interface]], then this process can be initiated by the customer directly, and then completed in the supplying store as described below.
  
-Double-clicking on a line will allow you to edit the selected record (provided that you have permission to do so)+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 as a [[issuing_goods:stock_control_methods#add_new_customer_stock_history|new customer stock history]].
  
-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 ====
- +
-=== Add new customer stock history ===+
  
 Click the **New customer stock history** button, to display the // Enter new customer stock history...// window: Click the **New customer stock history** button, to display the // Enter new customer stock history...// window:
  
-{{ :issuing_goods:stk_hist_2.png.?650 }}+{{ :issuing_goods:customer_stock_histort_enter_new-2025-07-23-17-08-22.png?700 | }}
  
-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.+Select the customer in the usual way (by typing 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.)
  
-Once you have chosen a customer, the window is populated with the items that are members of any item lists that: +Once you have chosen a customer, the window is populated with all of the items that match the following conditions:
-  * Have been assigned to that customer (both master lists and local lists) +
-  * and that have the "Stock history" check box checked for that list+
  
 +  * If the customer is a store: the items that are on any Item master lists assigned to the store - refer [[items:master_lists#in_use_by| Master list - In use by tab]].
 +  * If the customer is a facility: the items that are on the Item master lists assigned to the customer with `Requisition` box ticked - refer  [[names:adding_and_editing#item_lists_tab| Customer - Item lists tab]]
 +  * The items are visible and active in the supplying store (your store) where the `customer stock history` record is being created.  It is quite possible that your customer can handle items that your store can not.  These items will not appear on the customer stock history requisition.
 You are presented with this window: You are presented with this window:
  
-{{ :issuing_goods:new_stk_tk_hist_1.png?700 }}+{{ :issuing_goods:will_regional_store_2025-07-23-17-11-59.png?700 }}
  
-=== Fill in customer stock history ==+The contents of the columns are: 
 +  * **Line** Sequential numbering of the lines. 
 +  * **Item code**, **Item name**, **Unit**:  Item details 
 +  * **Our stock on hand**:  mSupply's record of the stock on hand in 'Our' (this) store. 
 +  * **Their Previous Stock on hand** mSupply's record of the customer's stock hand on the previous Customer stock history requisition.  If you see zero here for all items, then check that you did actually carry out the [[issuing_goods:stock_control_methods#first_stocktake_record|First stocktake record]] for this customer. 
 +  * **They received from us**: mSupply's record of what was sent by us to the customer since the date of the previous Customer stock history requisition. 
 +  * **Customer Previous balance** The customer's report of their stock balance //before// they received the stock that we sent them from their previous order. 
 +  * **Customer Received stock** The customer's report of the stock that they have received between orders. 
 +  * **Customer Current Stock on hand** The customer's report of the 'current' stock on hand, at the time of placing their order. 
 +  * **Their usage** The customer's usage over the period between the date of the **Customer Previous balance** and the date of the **Customer Current Stock on hand** based __only__ on their SoH reporting and mSupply's record of what was sent to them:  **Their Previous Stock on hand** + **They received from us** - **Customer Current Stock on hand**.  If the usage is negative then we know that there is some missing data. 
 +  * **Their Daily Usage** This is the **Customer quantity used** (column further to the right) divided by the number of days between the date of the **Customer Previous balance** and the date of the **Customer Current Stock on hand** 
 +  * **Our suggested quantity** mSupply's suggestion of the amount to issue //based on the customer's provided numbers//
 +  * **Customer requested** Whatever quantities the customer has requested.  Enter this from the customer's paperwork. 
 +  * **Actual quantity given** mSupply's suggestion of the amount to issue //based on the customer's provided numbers// and the **Days to supply**  This value can be overwritten by you, and is the value that will be transferred to the Customer Invoice when you are ready. 
 +  * **Customer quantity used**  The customer's usage over the period between the date of the **Customer Previous balance** and the date of the **Customer Current Stock on hand** //based on the customer's supplied numbers//:  **Customer Previous balance** + **Customer received stock** - **Customer Current Stock on hand**.  This calculation allows for factors that would cause errors in the strict customer stock history method, e.g. 
 +    * The customer may have mis-reported their previous balance. 
 +    * The customer may have received stock from another source, resulting in **Customer received stock** being greater than **They received from us**. 
 +  * **Comment** Space for a comment 
 + 
 +<WRAP center round info 60%> 
 +If the customer is a store within the mSupply system then mSupply will populate **Customer Current Stock on hand** with mSupply's record of the customer's Stock on Hand.  You can then compare what the customer has recorded in their copy of mSupply's with what the customer is now telling you ;-). 
 +</WRAP> 
 + 
 + 
 +=== The Hide Internal Column Checkbox === 
 +The //Hide internal column// when clicked will simplify the window by displaying less columns.   
 + 
 +{{ :issuing_goods:new_stock_take_history_requistion_less_columns-2025-07-23-18-05-14.png?600 | }} 
  
 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 **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 monthly90 if it is quarterlyetc.+The first entry to be made is in the **Days to supply** field, where the appropriate figure should be entered.  <WRAP center round alert 60%> 
 +Be careful**Days to supply** is //not// just the order cycle.  It needs to //include// provision for lead timeand buffer stock as well - refer [[purchasing:ordering_from_suppliers#calculate_required_stock_quantity|Calculate required stock quantity]] for the theory So, if: 
 +  * Order cycle = 60 days (~two months) 
 +  * Lead time = 30 days 
 +  * Buffer stock = 2 x Order cycle = 120 days
  
-You will see in our example that +Then the **Days to supply** = 60 + 30 + 120 = **__210 days__**
-   * 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(r) 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:+Sounds like a lot?  Don't worry, when calculating the suggested order quantity, mSupply will deduct from this the number of day's worth of stock that your customer already has in stock. 
 + 
 +</WRAP>
  
-{{ :issuing_goods:new_stk_tk_hist_2.png?700 }}+You will see in the example above that 
 +   * 13 days have passed since the last stocktake 
 +   * **Days to supply** has been set to 30
  
-All that remains is to make adjustments in the //Actual quantities// columnto reflect appropriate pack sizes.+As figures are entered, mSupply re-calculates **Our suggested quantity** and *Actual quantity given**.  Once all the figures have been entered**Our suggested quantity** can be compared with **Customer requested**.
  
-{{ :issuing_goods:confirm_box.png?300 }}+Initially, **Our suggested quantity** and *Actual quantity given** are calculated on the basis of the customer provided values for **Customer Previous balance** and **Customer Received stock**.  The **Their Previous Stock on hand** and **They received from us** values will be ignored.  However, you can choose to use to revert to the mSupply suggested quantities by: 
 +  * Select all lines to be reverted 
 +  * Click on the **Revert to suggested quan** button.\\ {{.:pasted:20250802-094703.png}} 
 +You can choose to use to revert to the customer requested quantities by: 
 +  * Select all lines to be reverted 
 +  * Click on the **Revert to customer request** button.\\ {{.:pasted:20250802-094856.png}}
  
-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|creating the customer invoice]], which is the same for all requisition types.+Ultimately, the **Actual quantity given** column should be updated taking into account pack sizesensuring that actual quantities match exact multiples of the pack size.
  
 +Once you are satisfied, the **Confirm** check box (bottom left corner) should be checked, the **Create customer invoice** button should be clicked, and you will proceed to [[#creating_the_customer_invoice|creating the customer invoice]].
 === Printing forms === === Printing forms ===
  
Line 167: Line 337:
 ===== Imprest method ===== ===== Imprest method =====
  
-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!+The Imprest method is probably the most commonly understood and used method of stock control, and has been used for many years (centuries?).
  
 <WRAP center round tip> <WRAP center round tip>
Line 191: Line 361:
  
  
-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 controllable.+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 suitable for supplying wards in a hospital setting, where operations are generally more rigidly controlled.
  
 /*  Section that can be added if we need to talk about the UNFPA 'Last Mile' method: A+B-C=D; Supply = 2*D  /*  Section that can be added if we need to talk about the UNFPA 'Last Mile' method: A+B-C=D; Supply = 2*D 
Line 251: Line 421:
 {{ :issuing_goods:edit_imprest_1.png?800 }} {{ :issuing_goods:edit_imprest_1.png?800 }}
  
-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.+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 then edit the zero appearing in that column with the supplied figures.
  
 {{ :issuing_goods:edit_imprest_2.png?250 }} {{ :issuing_goods:edit_imprest_2.png?250 }}
Line 273: Line 443:
 ===== Response (internal) requisitions ===== ===== Response (internal) requisitions =====
  
-These work in much the same way as [[issuing_goods:stock_control_methods?&#manual_entry_of_customer_stock_history|customer stock histories]], but with some notable differences:+These work in much the same way as [[issuing_goods:stock_control_methods#new_customer_requisition|New customer requisition]], 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 [[mobile:user_guide2#supplier_requisitions|here]] for details) or an [[purchasing:ordering_from_one_store_to_another#internal_orders_aka_request_requisitions|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. +  * Most importantly, you don't need to create it! A response requisition will be automatically created in your (supplying) store as a result of an internal order created in another mSupply store where most of the data will have been entered already by them.
-  * 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. +
- +
- +
- ==== Entering a requisition ==== +
-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): +
- +
-{{ :issuing_goods:requisition-list.png.?650 }} +
- +
-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: +
- +
-{{ :issuing_goods:requisition-edit-1.png.?650 }} +
- +
-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 [[items:master_lists|master list]]. +
-  +
-<WRAP center round important 60%> +
-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 [[items: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!  +
-</WRAP> +
- +
-    * 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 //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.   * 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 necessary, you can still add and/or delete item lines manually.
 +  * 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.
  
-If the requisition has lot of item lines, you can filter them by typing into the //Filter items// fieldIf 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):+The Response requisition is more accurate way to track demand vs supply.
  
-{{ :issuing_goods:requisition-edit-2.png.?650 }} +You can create new manual customer requisition for a customer that is an mSupply store one.  This is especially useful if the customer's mSupply system is not functioning.
- +
-Note that, while a filter is active, some of the other buttons are disabled e.g. you can'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|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. +
- +
-==== Requisition categories ==== +
- +
-==== Requisition status ==== +
- +
-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.+
  
 ===== Creating the customer invoice ===== ===== Creating the customer invoice =====
  • Last modified: 2022/09/05 13:46
  • by Gary Willetts