other_stuff:virtual_stores

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 [2023/09/18 22:40] – [Store credentials] Adam Deweyother_stuff:virtual_stores [2025/08/12 11:34] (current) – [Preferences tab] Mark Glover
Line 38: Line 38:
 {{ :other_stuff:other_stuff-show_stores1.png?500 |}} {{ :other_stuff:other_stuff-show_stores1.png?500 |}}
  
 +You can customise the columns that show on this window. Click on the **Customise** button and this window will show:
 +
 +{{ :other_stuff:pasted:20240816-150823.png?400 |}}
 +
 +The columns in the //Chosen// list are displayed in the table, the columns in the //Available// List can be shosen to be displayed. Select a column you want to show in the //Available// list and click on the ''>>'' button to move it to the //Chosen// list. Similarly, click on one in the //Chosen// list and click on the ''<<'' button to move it to the //Available// list and remove it from the display. You can also drag items in the //Chosen// list up and down to change the order they appear; top of the left is the leftmost column, bottom of the list is the rightmost column.
 ==== Editing a store ==== ==== Editing a store ====
 +
 Double-click on any store in the list in the View stores window described [[other_stuff:virtual_stores#viewing_available_stores|above]] to view or edit its details. You will see the same window as in the [[other_stuff:virtual_stores#creating_new_stores|Creating new stores]] section below but the various fields will be filled in with the store's current settings. You can click into the fields and edit them as desired. Note that in the top left of the window, the name of the store you are editing is always displayed, regardless of which tab you are on, so that you always have a reminder of which store you are editing!  Double-click on any store in the list in the View stores window described [[other_stuff:virtual_stores#viewing_available_stores|above]] to view or edit its details. You will see the same window as in the [[other_stuff:virtual_stores#creating_new_stores|Creating new stores]] section below but the various fields will be filled in with the store's current settings. You can click into the fields and edit them as desired. Note that in the top left of the window, the name of the store you are editing is always displayed, regardless of which tab you are on, so that you always have a reminder of which store you are editing! 
 +
 +<WRAP center round important 60%>
 +If you're working within a [[synchronisation:introduction|syncing system]], stores and their settings/preferences can only be created and edited on the central server, and all stores exist on the central server. A mirror sync setup is slightly more complex - stores themselves and any settings related to **name** visibility are only editable on the central server (or the primary server in versions of mSupply older than v7.13), but master lists and **item** visibility settings are only editable on the primary server. In this case, all stores exist on both the central server and the primary server.
 +</WRAP>
 +
  
 ==== Creating new stores ==== ==== Creating new stores ====
 +
 +<WRAP center round important 60%>
 +This new store will inherit the same user and group permissions (but not login permissions!) as the store which you are logged in to when you execute it.  It is therefore worth logging in to a store that has similar user and group permissions to those that you want to have in the new store.  Often the supplying store will be a suitable store for this purpose.
 +
 +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>
 +
 To create a new store click the **New store** button in the Store list window shown [[other_stuff:virtual_stores#viewing_available_stores|above]]. This will display the Store details window shown below, which allows you to enter the details of the new store: To create a new store click the **New store** button in the Store list window shown [[other_stuff:virtual_stores#viewing_available_stores|above]]. This will display the Store details window shown below, which allows you to enter the details of the new store:
  
Line 68: Line 86:
  
 === Address details === === Address details ===
-  +Enter the address and contact details for the store in here if there are any. These details can be used in reports. Note that these fields will be copied to the **Main/Billing Address** fields in the store's name record (see the [[names:adding_and_editing#editing_or_viewing_a_name|5.01. Names: using, adding and editing]] page for details) if they are updated. 
-Enter the address and contact details for the store in here if there are any. These details can be used in reports+ 
 +=== Turn an existing customer into a store === 
 +Only visible if you are creating a new store, not if you are editing an existing one. If this is checked then the **Name** field becomes a search field for the customer: enter the first few characters of the customer's name and press the //Tab// key on the keyboard to select the name from all those that begin with what you entered (or mSupply will select it for you if only one customer matches). When the **OK** or **OK & Next** buttons are clicked, the existing customer record will become this new store.
  
 +=== Down arrow button ===
 +Only visible if editing an existing store, not when creating a new one. Clicking this button will open the store's name record (see the [[names:adding_and_editing]] page for information on names) where you can view and edit things like categories.
 === Disable this store === === Disable this store ===
  
Line 93: Line 115:
 Tags are used in several ways: Tags are used in several ways:
   * for determining which programs a store can use.   * for determining which programs a store can use.
-  * for contronlling some customisation features.+  * for controlling some customisation features.
   * for reporting to group stores together.   * for reporting to group stores together.
-  * + 
 This area shows the tags that the store currently has. To add a tag, simply click into the area and type the tag's name. When you have finished typing the tag's name then press the Tab or Space keys on the keyboard (not Enter or return, that will close the window!). You know when you have done it right because the tag will appear in its own little box with an 'x'. If you want to remove any tag from the store, simply click on that 'x'. In this way you can add or delete as many tags from a store as you like. This area shows the tags that the store currently has. To add a tag, simply click into the area and type the tag's name. When you have finished typing the tag's name then press the Tab or Space keys on the keyboard (not Enter or return, that will close the window!). You know when you have done it right because the tag will appear in its own little box with an 'x'. If you want to remove any tag from the store, simply click on that 'x'. In this way you can add or delete as many tags from a store as you like.
  
Line 108: Line 131:
   * Set the [[other_stuff:virtual_stores#the_preferences_tab|preferences]] for the store.   * Set the [[other_stuff:virtual_stores#the_preferences_tab|preferences]] for the store.
   * Set the store's [[other_stuff:virtual_stores#the_logo_tab|logo]] so that it can appear in print-outs and reports.   * Set the store's [[other_stuff:virtual_stores#the_logo_tab|logo]] so that it can appear in print-outs and reports.
-  * Set the [[other_stuff:virtual_stores#the_visibility_tab|visibility]] of items in the store. All items in the system will be set to invisible in the new store when it is created.  You will need to modify visibility of items in order to be able to handle stock of those items. +  * Set the [[other_stuff:virtual_stores#the_visibility_tab|visibility]] of names and items in the store. All items in the system will be set to invisible in the new store when it is created.  You will need to modify visibility of items in order to be able to handle stock of those items.  <WRAP center round tip 60%> 
-  * Setup Synchronisation if you are going to use a synced system. See [[other_stuff:remote_sync]].+For any system bigger than the most basic operation, you will likely want to use [[items:master_lists|Item master lists]] to control item visibility - refer to the [[preferences:general#item_tab| Item list (master and local) option under the Item tab]] 
 +</WRAP> 
   * Setup any [[other_stuff:virtual_stores#the_custom_fields_tab|custom store data]] (used for reporting).   * Setup any [[other_stuff:virtual_stores#the_custom_fields_tab|custom store data]] (used for reporting).
-  * Set the master lists used by the store (a convenient method for controlling item visibility).  See [[items:master_lists]] 
  
-<WRAP center round alert 90%> 
-If this newly created store will be 'Active' on a satellite server on a synced mSupply system (refer to [[other_stuff:remote_sync]], then user access to the store will need to be defined on that satellite server. 
-</WRAP> 
  
 ==== Preferences tab ==== ==== Preferences tab ====
 +
 <WRAP center round important 90%> <WRAP center round important 90%>
-  * The preferences tab is only visible if you are looking at the details of the store you are logged into. 
   * The preferences described here are set 'per store' and can be different for each store in an mSupply datafile.   * The preferences described here are set 'per store' and can be different for each store in an mSupply datafile.
-  * In a **synced system** there will be multiple 'sync satellites' and store preferences will need to be set for each store on each mSupply sync satellite.  See [[other_stuff:remote_sync]].+  * In a **synced system** the store preferences will be synced along with the store to any sites where the store is visible.
   * Other preferences (accessed through **File > Preferences...**) apply to //all// stores in an mSupply datafile.   * Other preferences (accessed through **File > Preferences...**) apply to //all// stores in an mSupply datafile.
   * If you have to set the same preferences for lots of stores you might like to try the [[other_stuff:bulk_store_preferences_editor|]]. It just might save you some time and your sanity :-)   * If you have to set the same preferences for lots of stores you might like to try the [[other_stuff:bulk_store_preferences_editor|]]. It just might save you some time and your sanity :-)
Line 137: 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 151: Line 173:
 ^ Confirm customer invoices automatically| Set a New Customer Invoice status to confirmed when the OK button is clicked. This means that it is not possible to print a picking slip for the issued goods.| ^ Confirm customer invoices automatically| Set a New Customer Invoice status to confirmed when the OK button is clicked. This means that it is not possible to print a picking slip for the issued goods.|
 ^ Supplier invoices must be authorised| Turns on supplier invoice authorisation (i.e. goods can only be brought into stock when the action has been authorised). See [[other_stuff:invoice_authorization]] for details.| ^ Supplier invoices must be authorised| Turns on supplier invoice authorisation (i.e. goods can only be brought into stock when the action has been authorised). See [[other_stuff:invoice_authorization]] for details.|
-^ Confirm supplier invoices without asking | Set New Supplier Invoice status to confirmed when the OK button is clicked. The goods are made available in stock without informing the user.|+^ Confirm supplier invoices without asking | Sets new Supplier Invoice status to confirmed automatically when it is saved (i.e. when the **OK** button is clicked), with no request for confirmation. The goods are made available in stock without informing the user.| 
 +^ Disallow adding expired stock to supplier invoices | If checked then a user will not be allowed to add stock which is already expired to a supplier invoice. If a user does this, they will be shown an alert message saying that the line is expired and they will not be allowed to save it. The same check is also performed when adding lines to a goods received note, an inventory adjustment - add or a customer credit. |
 ^ Goods received lines must be authorised:| Turns on goods receipt authorisation (i.e. only authorised goods receipts can be processed for the goods to be made available in stock). See [[other_stuff:invoice_authorization]] for details.| ^ Goods received lines must be authorised:| Turns on goods receipt authorisation (i.e. only authorised goods receipts can be processed for the goods to be made available in stock). See [[other_stuff:invoice_authorization]] for details.|
 ^ Locations must be entered for goods received | A shelf location must be entered on the goods receipt item line form when receiving goods into stock. | ^ Locations must be entered for goods received | A shelf location must be entered on the goods receipt item line form when receiving goods into stock. |
Line 157: 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 163: Line 186:
 ^ Automatically populate supply quantities with requested quantities | On requisitions, automatically populate supply quantities with requested quantities, instead of 0. Supply quantities can still be edited. | ^ Automatically populate supply quantities with requested quantities | On requisitions, automatically populate supply quantities with requested quantities, instead of 0. Supply quantities can still be edited. |
 ^ Show extra fields on requisitions | When a line is selected on a response requisition, an extra box is displayed under the table of requisition lines to show the calculations behind the suggested quantity. The extra field is currently only populated for Côte d'Ivoire users. | ^ Show extra fields on requisitions | When a line is selected on a response requisition, an extra box is displayed under the table of requisition lines to show the calculations behind the suggested quantity. The extra field is currently only populated for Côte d'Ivoire users. |
-^ Keep requisition lines with zero requested quantity on finalise | If this is checkled, lines on requisitions that have zero requested quantity are kept when the requisition is finalised. Otherwise they are deleted (normal behaviour). |+^ Keep requisition lines with zero requested quantity on finalise | If this is checked, lines on requisitions that have zero requested quantity are kept when the requisition is finalised. Otherwise they are deleted (normal behaviour). |
 ^ Show comment field when entering supplier invoice lines | Allows users to type a comment for individual items received on a supplier invoice. | ^ Show comment field when entering supplier invoice lines | Allows users to type a comment for individual items received on a supplier invoice. |
 ^ Use EDD placeholder lines in supplier invoices from this store | If turned on, any placeholder lines on a customer invoice that is a stock transfer are duplicated on the supplier invoice in the receiving store when the customer invoice is finalised. The placeholder lines in the supplier invoice appear on an //Unsupplied items// tab (see the [[receiving_goods:supplier_invoices#unsupplied_items_tab|7.01. Supplier invoices]] page for details). **Note:** the placeholder lines are not duplicated on the supplier invoice if the receiving store is an [[mobile:user_guide2|mSupply mobile]] store (placeholder lines are not used in mobile stores). | ^ Use EDD placeholder lines in supplier invoices from this store | If turned on, any placeholder lines on a customer invoice that is a stock transfer are duplicated on the supplier invoice in the receiving store when the customer invoice is finalised. The placeholder lines in the supplier invoice appear on an //Unsupplied items// tab (see the [[receiving_goods:supplier_invoices#unsupplied_items_tab|7.01. Supplier invoices]] page for details). **Note:** the placeholder lines are not duplicated on the supplier invoice if the receiving store is an [[mobile:user_guide2|mSupply mobile]] store (placeholder lines are not used in mobile stores). |
Line 170: Line 193:
 ^ Allow users to choose diagnosis on prescriptions | When checked an additional **Diagnosis** drop down list is available on a prescription. See [[dispensing:diagnoses|]] for details. | ^ Allow users to choose diagnosis on prescriptions | When checked an additional **Diagnosis** drop down list is available on a prescription. See [[dispensing:diagnoses|]] for details. |
 ^ Use consumption and stock from customers for internal orders | If checked, when calculating the current stock and consumption figures (to calculate the suggested order quantity), the stock issued to all customers and the total stock of all customers will be used instead of the current stock and consumption of the current store. Note that customer stores are all those stores that have this store set as their supplying store. See the [[purchasing:ordering_from_one_store_to_another|]] page for details about internal orders. | ^ Use consumption and stock from customers for internal orders | If checked, when calculating the current stock and consumption figures (to calculate the suggested order quantity), the stock issued to all customers and the total stock of all customers will be used instead of the current stock and consumption of the current store. Note that customer stores are all those stores that have this store set as their supplying store. See the [[purchasing:ordering_from_one_store_to_another|]] page for details about internal orders. |
 +^ Items received on a purchase order must be within a minimum expiry date | When turned on, stock cannot be received if it has an expiry date that is before a date set on a purchase order. See [[https://docs.msupply.foundation/en:mobile:setup:server_side:config|mSupply mobile setup]] for details. |
 +^ Store credentials are controlled on the central server | In a [[synchronisation:introduction|syncing system]], if this preference is checked, then the //Store credentials// preferences (see the [[other_stuff:virtual_stores#store_credentials|Store credentials]] section above for details) can only be edited on the central server, rather than on the site where the store is active (where they are usually edited). |
 ^ mobile: Alert if a patient is dispensed the same vaccine multiple times in a week | This preference only has an effect if this is an mSupply mobile store. See [[https://docs.msupply.foundation/en:mobile:setup:server_side:config|mSupply mobile setup]] for details. | ^ mobile: Alert if a patient is dispensed the same vaccine multiple times in a week | This preference only has an effect if this is an mSupply mobile store. See [[https://docs.msupply.foundation/en:mobile:setup:server_side:config|mSupply mobile setup]] for details. |
 ^ mobile: Enforce lookback period | This preference only has an effect if this is an mSupply mobile store. See [[https://docs.msupply.foundation/en:mobile:setup:server_side:config|mSupply mobile setup]] for details. | ^ mobile: Enforce lookback period | This preference only has an effect if this is an mSupply mobile store. See [[https://docs.msupply.foundation/en:mobile:setup:server_side:config|mSupply mobile setup]] for details. |
Line 186: Line 211:
 == 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 232: Line 257:
   * 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.
 +
 +=== Location code pattern ===
 +This is used with phased stocktakes (see the [[items:phased_stocktakes|]] page for details) to tell msupply which parts of your shelf location codes (see the [[items:item_locations#adding_a_location|4.06. Stock locations and location types]] page for details) represent the aisle, level and position of the location.
 +
 +An aisle is a whole row of racking like this:
 +
 +{{ :other_stuff:pasted:20231212-164305.png?400 }}
 +
 +A level is a horizontal level of the racking like this:
 +
 +{{ :other_stuff:pasted:20231212-164357.png?400 }}
 +
 +And a position is a vertical column of the racking like this:
 +
 +{{ :other_stuff:pasted:20231212-164522.png?400 }}
 +
 +Use the letters A, L and P to represent the aisle, level and position parts of the location code.
 +
 +Let's use an example to show how it works. Let's say that the shelf location codes are in the format B01.C.01 where B01 represents the aisle, C represents the position and 01 represents the level. Then in the **Location code pattern** text box you would enter the text **AAA.P.LL**
 +
 +It doesn't matter what characters you use as separators, mSupply only looks for the positions of the letters A, P and L. If more than one character is used to define any of the three parts of the location then they must appear together in the location code pattern. 
 +
  
 ==== Logo tab ==== ==== Logo tab ====
Line 258: Line 305:
  
 ==== Master lists tab and Visibility tab (controlling item visibility) ==== ==== Master lists tab and Visibility tab (controlling item visibility) ====
-Controlling the visibility of items in different stores is important because you can only order, distribute, receive goods for and report on items that are visible in your store. It's also important that stores don't have items visible that they don't use so that they don't accidentally order them etc.+ 
 +Controlling the visibility of items in different stores is important because you can only order, distribute, receive goods forand report on items that are visible in your store. It's also important that stores don't have items visible that they don't use so that they don't accidentally order them etc. 
 + 
 +<WRAP center round important 60%> 
 +In a syncing system, item visibility and master lists can only be edited on the primary server => if it's a mirror sync system, then you'll need to create the store first on the central server and wait for it to sync to the primary. 
 +</WRAP>
  
 If you have lots of stores in your data file, managing item visibility can turn into a difficult task. Thankfully, mSupply has some helpful tools to make it simple! There are 2 ways to manage item visibility and you use one or the other, not both: If you have lots of stores in your data file, managing item visibility can turn into a difficult task. Thankfully, mSupply has some helpful tools to make it simple! There are 2 ways to manage item visibility and you use one or the other, not both:
-  - automatically using the Master lists tab or+  - automatically using the Master lists tab (recommended!) or
   - manually using the Visibility tab   - manually using the Visibility tab
 +
 Each are useful in different situations and are described below. Each are useful in different situations and are described below.
  
 === Master lists tab === === Master lists tab ===
-If you have a lot of stores in mSupply, we recommend that you use master lists to control item visibility. Especially in a [[other_stuff:remote_sync|syncing system]] 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.+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 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 275: Line 329:
   - Click on **Special > Show stores...** (or click on the //Stores// icon on the //Special// tab of the navigator)   - Click on **Special > Show stores...** (or click on the //Stores// icon on the //Special// tab of the navigator)
   - Double-click the store who's visibility you would like to manage:{{ :other_stuff:selectstore.png?400 |}}   - Double-click the store who's visibility you would like to manage:{{ :other_stuff:selectstore.png?400 |}}
-  - Click on the //Master lists// tab: {{ :other_stuff:clickonasterlist.png?550 |}}+  - Click on the //Master lists// tab: 
   - Select which master list(s) you would like to control the visibility of items in your chosen store by checking their checkbox in the //Use master list// column: {{ :other_stuff:selectmasterlist.png?550 |}} In this example, the //All items: General warehouse// master list has been selected to control the visibility of the General warehouse store. **Please note:** If there are a lot of master lists, you can type in the **Search master lists** field and the list will show only those master lists which contain what you type.   - Select which master list(s) you would like to control the visibility of items in your chosen store by checking their checkbox in the //Use master list// column: {{ :other_stuff:selectmasterlist.png?550 |}} In this example, the //All items: General warehouse// master list has been selected to control the visibility of the General warehouse store. **Please note:** If there are a lot of master lists, you can type in the **Search master lists** field and the list will show only those master lists which contain what you type.
   - Click the **OK** button to finish. As soon as you do that the items on the selected master list(s) are made visible in the store and any items **not** on the selected master list(s) are made **invisible**. Any new items added to the selected master list(s) will be made visible in the store and any items removed form the master list(s) will be made invisible in the store.   - Click the **OK** button to finish. As soon as you do that the items on the selected master list(s) are made visible in the store and any items **not** on the selected master list(s) are made **invisible**. Any new items added to the selected master list(s) will be made visible in the store and any items removed form the master list(s) will be made invisible in the store.
 +
 +**NOTE:** Assigning master lists to stores can also be done on a master list's details window. See the [[items:master_lists#in_use_by|4.04. Item master lists]] page for details.
  
 === Visibility tab === === Visibility tab ===
 +
 <WRAP center round important 90%> <WRAP center round important 90%>
-If your system is Sync system (with Primary and Satellite servers) and your store is hosted on a Sync Satellite server, then you will not see the Visibility tab.  These settings need to be made while logged in to the Sync Primary Server.+In syncing system, the **item** visibility icons and fields will be disabled unless you're on the primary serverthe **name** visibility icons and fields will be disabled unless you're on the central server.
 </WRAP> </WRAP>
  
 <WRAP center round tip 90%> <WRAP center round tip 90%>
-You will also //only// see this tab if you are editing the store you are logged in to.\\ To log into a store you may need to first give yourself permission to do so under File > Edit Users > Double-click your user name > the Log in rights tab. Phew!+You will //only// be able to use this tab if you have permission to login to the store you have selected and you have permission to edit visibility in that store.\\ To log into a store you may need to first give yourself permission to do so under File > Edit Users > Double-click your user name > the Log in rights tab. Phew!
 </WRAP> </WRAP>
  
Line 295: Line 352:
 If you have turned on the [[preferences:general#item_list_master_local|preference to control item visibility by master list]] then you will not be able to use the visibility tab or the visibility settings on the store tab of an individual item's details window. If you have turned on the [[preferences:general#item_list_master_local|preference to control item visibility by master list]] then you will not be able to use the visibility tab or the visibility settings on the store tab of an individual item's details window.
 </WRAP> </WRAP>
- 
  
 Here's what the tab looks like: Here's what the tab looks like:
Line 334: Line 390:
  
 ==== Names tab ==== ==== Names tab ====
-This tab shows a list of all the names (customers, suppliers, stores, donors, manufacturers etc.) in the datafile and which are visible in this store. You are also able to edit the visibility of names: 
  
-{{ :other_stuff:pasted:20220906-150150.png?600 |}}+This tab shows a list of all the customers, suppliers and stores (collectively called "names") in the datafile and which are visible in this store. If you're on the central server (and you have edit visibility permissions for the store), you are also able to edit the visibility of names: 
 + 
 +{{ :other_stuff:pasted:20250328-155144.png?600 }}
  
 The table shows whether the name is a customer or supplier (or both). The checkboxes in the **Visible in this store** column are editable. If checked then the name is visible in this store, if unchecked then the name is not visible in this store. Click on one of the checkboxes to change its state. The table shows whether the name is a customer or supplier (or both). The checkboxes in the **Visible in this store** column are editable. If checked then the name is visible in this store, if unchecked then the name is not visible in this store. Click on one of the checkboxes to change its state.
  
-  * **Store checkbox:** If checked then names thast are stores are shown in the table +  * **Store checkbox:** If checked then names that are stores are shown in the table 
-  * **Facility checkbox:** If checked then names that are not stores are shown in the table +  * **Customer checkbox:** If checked then names that are customers are shown in the table 
-  * **Search names field:** If you type in here then only names that contain what you type will be displayed in the list. Useful if you want to find a particular name or group of names in a long list.+  * **Supplier checkbox:** If checked then names that are suppliers are shown in the table 
 +  * **//Search names// field:** If you type in here then only names that contain what you type will be displayed in the list. Useful if you want to find a particular name or group of names in a long list.
   * **All off button:** Clicking this will uncheck all the checkboxes in the **Visible in this store** column (so making all names invisible in this store) and the button will change to **All on**. Clicking it then will check all the checkboxes in the column (and therefore make all names visible in this store).   * **All off button:** Clicking this will uncheck all the checkboxes in the **Visible in this store** column (so making all names invisible in this store) and the button will change to **All on**. Clicking it then will check all the checkboxes in the column (and therefore make all names visible in this store).
   * **Copy button:** Copies the current state of all the checkboxes in the **Visible in this store** column.   * **Copy button:** Copies the current state of all the checkboxes in the **Visible in this store** column.
Line 349: Line 407:
 Clicking on the **OK**, **OK & Next** or **OK & Previous** buttons will save any changes you make on this tab. Clicking on the **OK**, **OK & Next** or **OK & Previous** buttons will save any changes you make on this tab.
 ==== 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%> 
 +If the store is **Active** on another site, then this process will not delete the site. 
 +</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%> <WRAP center round alert 60%>
-If the store is **Active** on a sync satellite site, then this process will not delete the sync satellite site.+Merging stores is not reversible.
 </WRAP> </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>
 +
 +
  
  
Line 363: Line 439:
   * 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_store|Turn an existing customer into a store]]
  
-<WRAP center round important 90%>+<WRAP center round alert 90%>
 **Whichever method is used, this is difficult to reverse.  Only do this once you are sure. You have been warned!**  **Whichever method is used, this is difficult to reverse.  Only do this once you are sure. You have been warned!** 
 </WRAP> </WRAP>
Line 378: Line 454:
   * mSupply may prevent the merge due to unfinalised CIs from other stores in the system.  You will need to finalise these CIs on the corresponding stores before the merge is successful.   * mSupply may prevent the merge due to unfinalised CIs from other stores in the system.  You will need to finalise these CIs on the corresponding stores before the merge is successful.
   * These can be hard to find on a multi-store system where the transactions could have come from a number of places.  Suggested approach:  Use [[other_stuff:misc_topics#supervisor_mode_-_all_stores|Supervisor mode]], view CIs, and customise the list view to show Store name.   * These can be hard to find on a multi-store system where the transactions could have come from a number of places.  Suggested approach:  Use [[other_stuff:misc_topics#supervisor_mode_-_all_stores|Supervisor mode]], view CIs, and customise the list view to show Store name.
-  * If these transactions are on a number of stores on satellite sites on dodgy internet connections, it can take **//days//** to log in to the satellite sites, finalise the CIs, and sync the finalised CIs back to the Primary.  Meanwhile, there is a danger that new transactions will be created!  :-\+  * If these transactions are on a number of stores on remote sites with dodgy internet connections, it can take **//days//** to log in to the remote sites, finalise the CIs, and sync the finalised CIs back to the central server.  Meanwhile, there is a danger that new transactions will be created!  :-\
   * These inconveniences are why the [[other_stuff:virtual_stores#turn_an_existing_customer_into_a_store|Turn an existing customer into a store]] feature was developed ;-).   * These inconveniences are why the [[other_stuff:virtual_stores#turn_an_existing_customer_into_a_store|Turn an existing customer into a store]] feature was developed ;-).
 </WRAP> </WRAP>
Line 386: Line 462:
 Due to the limitations of the method described above, from mSupply v5.02 onwards, you can choose to convert an existing customer into a store, and thereby retain all of its properties. Due to the limitations of the method described above, from mSupply v5.02 onwards, you can choose to convert an existing customer into a store, and thereby retain all of its properties.
  
-<WRAP center round important 60%> + 
-This new store will inherit the same user and group permissions (but not login permissions!) as the store which you are logged in to when you execute it.  It is therefore worth logging in to a store that has similar user and group permissions to those that you want to have in the new store.  Often the supplying store will be a suitable store for this purpose.+<WRAP center round info 60%> 
 +This method will only work if you are logged in to a store that is visible to the customer.
 </WRAP> </WRAP>
  
-<WRAP center round alert 60%> +<WRAP center round important 60%> 
-If the name is not visible to the store that you are logged in to, this method will not work!  First make the name visible, then start this process...+  * The new store will be made visible to all stores that the original customer was visible to
 +  * The new store will have the same User and group permissions as the store you are logged in to 
 +  * The only user who will be configured to be able to //login// to the new store is the user who created the store.  User //store login// permissions are **NOT** copied to the new store These will need to be manually configured later.
 </WRAP> </WRAP>
  
- +  - Log into a store that 
- +    - Is visible to the customer that is to be converted to a store 
-  - Log into a store that will have the same or 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 name 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! 
-  - **Special > Show stores... > New Store**  You will see an alert like that shown below.  If you are logged in to a suitable store (see Important note above), then you can Continue:\\ {{  :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
-  - Enter the existing customer name into the **Name** field.  You can search for existing customers by typing the first few letters of the customer's name, and then press **Tab**.  To ensure that you are converting the correct name into a store, paste the Name that you copied in step 2 above.  This should result in at least the store code field getting populated.  If this does not happen, then the existing customer has not been recognised - try again.+  - Enter the existing customer name into the **customer** field.  You can search for existing customers by typing the first few letters of the customer's name, and then press **Tab**.  To ensure that you are converting the correct customer into a store, paste the customer that you copied in step 2 above.  <WRAP center round alert 60%> 
 +If you do not see the store code field getting populated, then the existing customer has not been recognised - try again. 
 +</WRAP>
   - Populate the [[other_stuff:virtual_stores#responsible_officer|Responsible officer]], [[other_stuff:virtual_stores#store_credentials|Store credentials]] and [[other_stuff:virtual_stores#tags|Tags]] fields if required.   - Populate the [[other_stuff:virtual_stores#responsible_officer|Responsible officer]], [[other_stuff:virtual_stores#store_credentials|Store credentials]] and [[other_stuff:virtual_stores#tags|Tags]] fields if required.
   - Click **OK**   - Click **OK**
  • Last modified: 2023/09/18 22:40
  • by Adam Dewey