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
other_stuff:virtual_stores [2025/08/07 03:32] – [Master lists tab and Visibility tab (controlling item visibility)] Mark Gloverother_stuff:virtual_stores [2026/01/05 09:59] (current) – [Preferences tab] Gary Willetts
Line 58: Line 58:
  
 As noted above, in a syncing system you must be logged into the central server to create a new store - it will be synced to any site where it is visible to any stores active on that site (which will also include the supplying store). When a store is created, it is made active on the central server by default - see [[synchronisation:sync_sites|sync sites]] if you want to move it to (make it active on) another site. As noted above, in a syncing system you must be logged into the central server to create a new store - it will be synced to any site where it is visible to any stores active on that site (which will also include the supplying store). When a store is created, it is made active on the central server by default - see [[synchronisation:sync_sites|sync sites]] if you want to move it to (make it active on) another site.
-</WRAP> 
- 
-<WRAP center round alert 90%> 
-<wrap em>After creating the new store, you will not be able to immediately log in to it.</wrap>  To be able to log in to the new store, you will need to give yourself access to the new store as shown in section [[admin:managing_users]].  Any other users who need to access the store will also need their permission altered accordingly. 
 </WRAP> </WRAP>
  
Line 162: Line 158:
  
 |<100% 40%>| |<100% 40%>|
 +^  Preference  ^  Description  ^
 ^ Sort available batches by VVM status rather than Expiry | When issuing stock, this will sort the list of available batches by vaccine status first, then by expiry date rather than by expiry date first (e.g. [[issuing_goods:issuing_goods_customer_invoice#selecting_from_stock_lines|8.01. Issuing goods to a customer (customer invoices)]]).| ^ Sort available batches by VVM status rather than Expiry | When issuing stock, this will sort the list of available batches by vaccine status first, then by expiry date rather than by expiry date first (e.g. [[issuing_goods:issuing_goods_customer_invoice#selecting_from_stock_lines|8.01. Issuing goods to a customer (customer invoices)]]).|
 ^ Patients created in other stores not visible in this store| If this is checked, patients that are created in other stores across all sites will not be visible in this store. If it is **off**, all patients from all stores from all sites will be visible to this store. It is set to true by default when a store is created. **USE CAUTION:** Turning this **OFF** for many stores does not scale well and can overload the sync system. See the [[dispensing:patients#store_visibility_tab|10.03. Patients]] page for more details. | ^ Patients created in other stores not visible in this store| If this is checked, patients that are created in other stores across all sites will not be visible in this store. If it is **off**, all patients from all stores from all sites will be visible to this store. It is set to true by default when a store is created. **USE CAUTION:** Turning this **OFF** for many stores does not scale well and can overload the sync system. See the [[dispensing:patients#store_visibility_tab|10.03. Patients]] page for more details. |
Line 183: Line 180:
 ^ Show item unit column when issuing| If checked, when goods are issued on a customer invoice or prescription, an Item unit column is included in the window used for selecting items to add. | ^ Show item unit column when issuing| If checked, when goods are issued on a customer invoice or prescription, an Item unit column is included in the window used for selecting items to add. |
 ^ Log transaction edit | | ^ Log transaction edit | |
-^ Set pack to one for all visible items in this store| |+^ Set pack to one for all visible items in this store| This controls the two Item preferences [[items:item_basics:tab_general#allow_pack_to_one_conversion|Allow pack to one conversion]] and [[items:item_basics:tab_general#convert_pack_to_one_when_receiving|Convert pack to one when receiving]] for //ALL// items visible in //this// store.|
 ^ Use remote authorisation for response requisitions | Turns on remote authorisation for response requisitions. See [[other_stuff:remote_authorisation]] for details.| ^ Use remote authorisation for response requisitions | Turns on remote authorisation for response requisitions. See [[other_stuff:remote_authorisation]] for details.|
 ^ Include requisitions from this store in suppliers' remote authorisation processes | If checked then requisitions from this store will appear in the requisition approval processes of the suppying store. See [[other_stuff:remote_authorisation]] for details.| ^ Include requisitions from this store in suppliers' remote authorisation processes | If checked then requisitions from this store will appear in the requisition approval processes of the suppying store. See [[other_stuff:remote_authorisation]] for details.|
Line 209: Line 206:
 ^ Pickface replenishments must be authorised | If checked, pickface replenishments in this store must be authorised by a user who has permission to authorise them before they can be finalised. See the [[items:replenishments_setup#authorisation_of_replenishments|4.21. Pickfaces and Replenishments setup]] and [[items:replenishments#authorising_pickface_replenishments|4.22. Pickfaces and Replenishments]] pages for details. | ^ Pickface replenishments must be authorised | If checked, pickface replenishments in this store must be authorised by a user who has permission to authorise them before they can be finalised. See the [[items:replenishments_setup#authorisation_of_replenishments|4.21. Pickfaces and Replenishments setup]] and [[items:replenishments#authorising_pickface_replenishments|4.22. Pickfaces and Replenishments]] pages for details. |
 ^ Able to specify VVM status when receiving items | If checked then a new **VVM status** field will be available on a supplier invoice for the user to select the current VVM status of the batch when it is received on a supplier invoice or inventory adjustment. See the [[receiving_goods:supplier_invoices#vaccines|7.01. Supplier invoices]] and [[items:inventory_adjustments#vaccines|4.18. Inventory adjustments]] pages for details. Also, if checked then an additional //Doses// column is displayed on a customer invoice. See the [[issuing_goods:issuing_goods_customer_invoice]] page for details. | ^ Able to specify VVM status when receiving items | If checked then a new **VVM status** field will be available on a supplier invoice for the user to select the current VVM status of the batch when it is received on a supplier invoice or inventory adjustment. See the [[receiving_goods:supplier_invoices#vaccines|7.01. Supplier invoices]] and [[items:inventory_adjustments#vaccines|4.18. Inventory adjustments]] pages for details. Also, if checked then an additional //Doses// column is displayed on a customer invoice. See the [[issuing_goods:issuing_goods_customer_invoice]] page for details. |
 +^ Finalise stock transfer supplier invoice automatically | If this is checked, supplier invoices that are created in **this store** as the receiving side of a stock transfer are automatically received into stock and finalised. This is set in the **receiving** store. Only users who have the //Edit store details// permission set can set this preference (see the [[admin:managing_users]] page for details on setting user permissions).\\ \\ There is another preference that does a similar thing that is set in the **sending store**. See the [[other_stuff:virtual_stores#for_stock_transfers_the_supplier_invoice_in_the_receiving_store_should_be|For stock transfers the supplier invoice in the receiving store should be...]] section below for details on that. |
 === Notification preferences === === Notification preferences ===
 These are used by the notification/alert functionality described on the [[notifications:setup_and_use|]] page. The notifications inform users of situations that need their attention. The thresholds that give rise to some of the notifications can be set here. These are used by the notification/alert functionality described on the [[notifications:setup_and_use|]] page. The notifications inform users of situations that need their attention. The thresholds that give rise to some of the notifications can be set here.
Line 214: Line 212:
 == Threshold for overstock == == Threshold for overstock ==
  
-The minimum months of stock an item must have to be considered as overstocked. i.e. in danger of expiring on the shelf before it is used. An alert is triggered for an item if the total quantity in stock (including all batches) divided by the average monthly consumption of the item (calculated using the last 12 months' usage in the current store) is greater than or equal to this threshold number. The default is 6 months.<WRAP center round tip> +The months of stock of an item for it to be considered as overstocked.  In most real-life situations, the volume of storage available is limited and the Threshold for overstock can assist in managing storage space by preventing space being unnecessarily occupied An alert is triggered for an item if the total quantity in stock (including all stock lines) divided by the AMC of the item (calculated using the last 12 months' usage in the current store) is greater than or equal to this threshold number.  The default is 6 months.<WRAP center round tip> 
-This value should be set no lower than the maximum amount of stock that you would expect to regularly have in stock.  Based on the formula developed in [[purchasing:ordering_from_suppliers#calculate_required_stock_quantity|Calculating the required stock quantity]], this would be <wrap em>Ordering cycle + (months of) buffer stock</wrap>.  The default value of 6 is suitable for a store with a 2-monthly order cycle.  For a central store with an annual order cycle, then this figure should be set to <wrap em>36</wrap>+Clearly, the Threshold for overstock must be more than the [[other_stuff:virtual_stores#threshold_for_understock|Threshold for understock]].  The default Threshold for overstock value of 6 may be suitable for a store with a 1-monthly order cycle.  For a central store with an annual order cycle, then this figure should probably be set to <wrap em>no less than 36</wrap>
 </WRAP> </WRAP>
  
 == Threshold for understock == == Threshold for understock ==
  
-Also called <wrap em>Buffer stock</wrap>, this is the number of months of stock that an item must have less of, to be considered understocked i.e. in danger of not having enough to meet demand. An alert is triggered for an item is the total quantity in stock(including all batches) divided by the average monthly consumption of the item (calculated using the last 12 months' usage in the current store) is less than or equal to this threshold number. The default is 3 months.<WRAP center round tip> +Also called <wrap em>Buffer stock</wrap>, this is the number of months of stock that an item must have less of, to be considered understocked i.e. in danger of not having enough to meet demand.  An alert is triggered for an item is the total quantity in stock (including all stock lines) divided by the AMC of the item (calculated using the last 12 months' usage in the current store) is less than or equal to this threshold number. The default is 3 months.<WRAP center round tip> 
-This alert should only be triggered when your stock levels fall below your buffer stock levels.  Based on the formula developed in [[purchasing:ordering_from_suppliers#calculate_required_stock_quantity|Calculating the required stock quantity]], <wrap em>Buffer stock (months) = 2 x Ordering cycle</wrap> The default value of 3 is suitable for a store with a 6-weekly order cycle.  For a central store with an annual order cycle, then this figure should be set to <wrap em>24</wrap> That is a lot of space for a national store with several thousand items :-/+This alert should only be triggered when your stock levels fall below your buffer stock levels.  Based on the formula developed in [[purchasing:ordering_from_suppliers#calculate_required_stock_quantity|Calculating the required stock quantity]], <wrap em>Buffer stock (months) = 2 x Ordering cycle</wrap> The default value of 3 is suitable for a store with a monthly order cycle.  For a central store with an annual order cycle, then this figure should be set to <wrap em>24</wrap> That is a lot of space for a national store with several thousand items :-/
 </WRAP> </WRAP>
  
Line 252: Line 250:
 How you set this preference is determined by how separate your goods receiving and finance sections are. If they are not in the same building, you might want to use the "Receive into stock and leave confirmed" option, as this will allow you to proceed with issuing goods without waiting for the finance department's approval. How you set this preference is determined by how separate your goods receiving and finance sections are. If they are not in the same building, you might want to use the "Receive into stock and leave confirmed" option, as this will allow you to proceed with issuing goods without waiting for the finance department's approval.
  
-=== For stock transfers, the supplier invoice in the receiving store should be...===+table at the to=== For stock transfers, the supplier invoice in the receiving store should be...===
 <WRAP center round important 60%> <WRAP center round important 60%>
 This option applies to all stores that this store transfers stock **to**. This option applies to all stores that this store transfers stock **to**.
 </WRAP> </WRAP>
  
-This option is used to determine whether stock transferred from one store to another is received to a destination store and automatically introduced to stock or not. The **On hold** option prevents stock from being introduced, while the **Finalised** option automatically makes the stock available for use in the destination store - //**without the receiving store having the opportunity to amend the Goods Receipt**//.+This option is used to determine whether stock transferred from this store (the sender) to another (the recipient) is received to a destination store and automatically introduced to stock or not. The **On hold** option prevents stock from being introduced, while the **Finalised** option automatically makes the stock available for use in the destination store - //**without the receiving store having the opportunity to amend the Goods Receipt**//.
   * Choose **Finalised** if there is no need to check / alter the quantity received compared to what was sent.   * Choose **Finalised** if there is no need to check / alter the quantity received compared to what was sent.
   * Choose **On hold** if the store is being used by mSupply mobile, and the goods receipt needs to be confirmed before receiving.   * Choose **On hold** if the store is being used by mSupply mobile, and the goods receipt needs to be confirmed before receiving.
 +
 +This preference is set in the **sending** store. There is another preference that can be set in the **recipient** store that will do the same thing but from the recipient's point of view. See the table at the top of the [[other_stuff:virtual_stores#preferences_tab|Preferences tab]] section above for details on that.
  
 === Location code pattern === === Location code pattern ===
Line 325: Line 325:
 If you have a lot of stores in mSupply, and especially in a syncing system, we recommend that you use master lists to control item visibility, because it means that the visibility of newly created items will be automatically handled correctly. The visibility of items in a store whose visibility is controlled by master lists is immediately updated if any changes are made to any of the master lists. For instance, if a new item is added to a master list controlling visibility then that new item is made visible in all stores that use the master list. And any items deleted from the master list are made invisible in any store using that list. If you have a lot of stores in mSupply, and especially in a syncing system, we recommend that you use master lists to control item visibility, because it means that the visibility of newly created items will be automatically handled correctly. The visibility of items in a store whose visibility is controlled by master lists is immediately updated if any changes are made to any of the master lists. For instance, if a new item is added to a master list controlling visibility then that new item is made visible in all stores that use the master list. And any items deleted from the master list are made invisible in any store using that list.
  
-The first thing to do is to turn on the preference to make master lists control item visibility in stores. Do that in **File > Preferences...** on the //Item// tab - see [[preferences:general#item_tab|General preferences, the item tab]] for details.+The first thing to do is to make sure that you have turned on the preference to make master lists control item visibility in stores. Do that in **File > Preferences...** on the //Item// tab - see [[preferences:general#item_tab|General preferences, the item tab]] for details.
  
 The next thing to do is to create the master list(s) that will control item visibility. See [[items:master_lists|Item master lists]] for details on how to do that. Giving your master lists helpful names will help you remember what they're for e.g. "Store xxx visibility list". The next thing to do is to create the master list(s) that will control item visibility. See [[items:master_lists|Item master lists]] for details on how to do that. Giving your master lists helpful names will help you remember what they're for e.g. "Store xxx visibility list".
Line 411: Line 411:
 ==== Deleting a store ==== ==== Deleting a store ====
  
-To delete a store, click on the //Delete// button in the View stores window. **Note:** deletion of a store is a serious thing to do and is only possible when that store contains zero stock and there have been no transactions recorded. mSupply will check and tell you that deletion is not possible if these criteria are not met. If you can't meet these criteria and you still want to stop people using the store then you can [[other_stuff:virtual_stores#disable_this_store|disable it - see above]].+To delete a store, click on the //Delete// button in the View stores window. **Note:** deletion of a store is a serious thing to do and is only possible when that store contains zero stock and there have been no transactions recorded.  mSupply will check and tell you that deletion is not possible if these criteria are not met.  In other words, you can only delete a store that has never been used!  If these criteria are not met and you still want to stop people using the storethen you can [[other_stuff:virtual_stores#disable_this_store|disable it - see above]].
  
 <WRAP center round important 60%> <WRAP center round important 60%>
 If the store is **Active** on another site, then this process will not delete the site. If the store is **Active** on another site, then this process will not delete the site.
 </WRAP> </WRAP>
 +
 +==== Merging stores ====
 +
 +Circumstances change, and you may find yourself in a position where you want to merge two stores.  The main benefit of doing this instead of just [[other_stuff:virtual_stores#disable_this_store|disabling]] one of them, is to combine the historic transaction records of both stores into the combined store so that you don't lose some of the transactions.
 +
 +<WRAP center round alert 60%>
 +Merging stores is not reversible.
 +</WRAP>
 +
 +
 +<WRAP center round important 60%>
 +The merge store feature has only recently been developed (2025).  As you can imagine, merging stores is a fairly sophisticated operation, and, when coupled with migrating the combined store to, say, Open mSupply, it can have unintended consequences.  Because it is such a dangerous operation, stores can only be merged by a member of the mSupply Foundation support team.
 +
 +Please email [[support@msupply.foundation]] so that the support team can test and see if you will encounter any issues, and then, in consultation with you, carry it out on your Central server for you.
 +</WRAP>
 +
 +<WRAP center round info 60%>
 +In order to merge stores, both of them need to be:
 +
 +  - Active on the Central server
 +  - Not disabled (Special > Show stores)
 +
 +It is OK if one or both of the stores are:
 +  * Not visible to each other
 +  * Not visible to the store that the user is logged in to when carrying out the merge
 +  * On Hold (Customer > Show Customer)
 +</WRAP>
 +
 +
 +
  
  
Line 423: Line 453:
  
   * The 'old' method:  [[other_stuff:virtual_stores#create_new_store_and_then_merge_with_the_existing_customer_name|Create new store and then merge with the existing customer name]]   * The 'old' method:  [[other_stuff:virtual_stores#create_new_store_and_then_merge_with_the_existing_customer_name|Create new store and then merge with the existing customer name]]
-  * The recommended :-D method:  [[other_stuff:virtual_stores#turn_an_existing_customer_into_a_store|Turn an existing customer into a store]]+  * The recommended :-D method:  [[other_stuff:virtual_stores#turn_an_existing_customer_into_a_store1|Turn an existing customer into a store]]
  
 <WRAP center round alert 90%> <WRAP center round alert 90%>
Line 462: Line 492:
     - Is visible to the customer that is to be converted to a store     - Is visible to the customer that is to be converted to a store
     - Has similar //user and group permissions// as the new store.     - Has similar //user and group permissions// as the new store.
-  - **Customer > Show customers...** to find the customer that you want to convert into a store and copy the name.  This will ensure that you are converting the correct customer into a store - see warning below!+  - **Customer > Show customers...** to find the customer that you want to convert into a store and copy the name.  This will ensure that you are converting the correct customer into a store - see warning below!  <WRAP center round tip 60%> 
 +Step 5 below will be easier and more reliable if you copy the name into the clipboard: 
 +  - Click in the Name field 
 +  - Select all (Ctrl+a) 
 +  - Copy (Ctrl+c) 
 +</WRAP> 
   - **Special > Show stores... > New Store**  You will see an alert like that shown below.:\\ {{  :other_stuff:pasted:20220519-012039.png  }}   - **Special > Show stores... > New Store**  You will see an alert like that shown below.:\\ {{  :other_stuff:pasted:20220519-012039.png  }}
   - Click on the **Turn an existing customer into a store** checkbox   - Click on the **Turn an existing customer into a store** checkbox
  • Last modified: 2025/08/07 03:32
  • by Mark Glover