import_and_export:importing_assets

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
import_and_export:importing_assets [2021/04/19 15:24] – [Doing the import] Gary Willettsimport_and_export:importing_assets [2022/01/19 15:27] (current) – [Import spreadsheet format] Gary Willetts
Line 1: Line 1:
-{{indexmenu_n>85}} +{{indexmenu_n>90}} 
- +====== 17.09. Importing assets ======
-====== 16.09. Importing assets ======+
 Assets are imported directly from Excel spredsheets so there is no need to export data from the spreadsheet to a tab delimited text file first (as you need to do for other imports). Assets are imported directly from Excel spredsheets so there is no need to export data from the spreadsheet to a tab delimited text file first (as you need to do for other imports).
  
Line 7: Line 6:
 The first row of the spreadsheet is for the column headers and is **not** imported. The first row of the spreadsheet is for the column headers and is **not** imported.
  
-The first 32 columns (up to, and including column AG, "Notes") represent standard asset fields in mSupply and the column headers for these are completely ignored in the import. Any columns after that are for asset properties and their headers are important; those headers must be in this format:+The first 34 columns (up to, and including column AH, "Notes") represent standard asset fields in mSupply and the column headers for these are completely ignored in the import. Any columns after that are for asset properties and their headers are important; those headers must be in this format:
  
 <HTML><div style="text-align:center;font-weight:bold">Property name (Property type)</div></HTML> <HTML><div style="text-align:center;font-weight:bold">Property name (Property type)</div></HTML>
Line 17: Line 16:
 During the import process, if any properties or entities (like asset locations) do not exist, they will be created. If any options for drop down list properties or standard asset drop down lists (categories) are found not to exist, they will also be created. During the import process, if any properties or entities (like asset locations) do not exist, they will be created. If any options for drop down list properties or standard asset drop down lists (categories) are found not to exist, they will also be created.
  
-The import spreadsheet must contain these columns in this order (the first 2, //Code// and //Description// are mandatory, the others are all optional):+The import spreadsheet must contain these columns in this order (//Description// and //Current status// are mandatory, the others are all optional):
  
 ^ Column number  ^ Column letter  ^ Field                                ^ Description                                                                                                                                                                                                                              ^ ^ Column number  ^ Column letter  ^ Field                                ^ Description                                                                                                                                                                                                                              ^
-| 1              | A              | Code                            | **Mandatory**. 255 alphanumeric characters. A code that the asset can be recognised by                                                                                                                                                                                               |+| 1              | A              | Code                            | 255 alphanumeric characters. A code that the asset can be recognised by                                                                                                                                                                                               |
 | 2              | B              | Description                     | **Mandatory**. 255 alphanumeric characters. The name the asset will have and be recognised by throughout the system                                                                                                                                                                                                                               | | 2              | B              | Description                     | **Mandatory**. 255 alphanumeric characters. The name the asset will have and be recognised by throughout the system                                                                                                                                                                                                                               |
 | 3              | C              | Make                            | 255 alphanumeric characters                                                            | | 3              | C              | Make                            | 255 alphanumeric characters                                                            |
Line 32: Line 31:
 | 11             | K              | Disposal date                   | Valid date in current operating system format. The date the asset will be or was disposed of | | 11             | K              | Disposal date                   | Valid date in current operating system format. The date the asset will be or was disposed of |
 | 12             | L              | Last verification date          | Valid date in current operating system format | | 12             | L              | Last verification date          | Valid date in current operating system format |
-| 13             | M              | Location code                   | 20 alphanumeric characters. The code the location name will have. Will be matched against the names currently in the database. If a name with this code does not exist, one will be created. This field is mandatory if you want mSupply to create the name. | +| 13             | M              | Location code                   | 20 alphanumeric characters. The code the location name will have. Will be matched against the names currently in the database. If a name with this code does not exist, one will be created with the name provided in the Location name field. If the Location name field is empty the name will be created with the code as its name. This field is mandatory if you want mSupply to create the name.  
-| 14             | N              | Asset user name                 | 255 alphanumeric characters. The name of the asset user in the format "//last name//,//first name//". Will be created if the user does not exist as a contact of the location. | +| 14             | N              | Location name                   | 255 alphanumeric characters. 
-15             |              | Asset user phone number         | 255 alphanumeric characters | +| 15             | O              | Asset user name                 | 255 alphanumeric characters. The name of the asset user in the format "//last name//,//first name//". Will be created if the user does not exist as a contact of the location (the first and last names only are used to determine whether the asset user exists. Phone number and email address are ignored in the check). | 
-16             |              | Asset user email                | 255 alphanumeric characters | +16             |              | Asset user phone number         | 255 alphanumeric characters | 
-17             |              | Custodian location              | 255 alphanumeric characters. Where the custodian of the asset (the main person responsible for it) is located | +17             |              | Asset user email                | 255 alphanumeric characters | 
-18             |              | Custodian name                  | 255 alphanumeric characters. The name of the custodian | +18             |              | Custodian location              | 255 alphanumeric characters. Where the custodian of the asset (the main person responsible for it) is located | 
-19             |              | Custodian phone number          | 255 alphanumeric characters | +19             |              | Custodian name                  | 255 alphanumeric characters. The name of the custodian | 
-20             |              | Custodian email                 | 255 alphanumeric characters | +20             |              | Custodian phone number          | 255 alphanumeric characters | 
-21             |              | Current status                  | 255 alphanumeric characters. Will be created if it doesn't exist | +21             |              | Custodian email                 | 255 alphanumeric characters | 
-22             |              | Proposed status                 | 255 alphanumeric characters. The proposed next status of the asset. Will be created if it doesn't exist | +22             |              | Current status                  | **Mandatory**. 255 alphanumeric characters. Will be created if it doesn't exist | 
-23             |              | Type                            | 255 alphanumeric characters. Will be created if it doesn't exist | +23             |              | Proposed status                 | 255 alphanumeric characters. The proposed next status of the asset. Will be created if it doesn't exist. Please note that there is no way of telling mSupply what proposed statuses are allowed to follow which current statuses during import. This can only be done manually in the asset settings (see the [[assets:assets_setup|]] page for details). During import all proposed statuses are assumed to be valid and will not be checked. There are, however, some important exceptions:\\ 1. If the current status of an asset is designated to be a final status, any proposed status will be ignored.\\ 2. If an imported asset has a current status which has some possible proposed statuses assigned, if the proposed status is not included in these, it will be added to them.\\ \\ So, be careful with the proposed statuses in the import file: you could make a mess if you have already set up which statuses can follow which and you don't follow that in the import file. 
-24             |              | Condition                       | 255 alphanumeric characters. Will be created if it doesn't exist | +24             |              | Type                            | 255 alphanumeric characters. Will be created if it doesn't exist | 
-25             |              | Purchase price                  | Number, currency. The cost of the asset when it was purchased | +25             |              | Condition                       | 255 alphanumeric characters. Will be created if it doesn't exist | 
-26             |              | Purchase costs                  | Number, currency. Any costs that are ot be added ot the purchase proce to arrive at the total value of the asset to be depreciated | +26             |              | Purchase price                  | Number, currency. The cost of the asset when it was purchased | 
-27             | AA             | In service date                 | Valid date in current operating system format. The date the asset starts to depreciate from                                                                                                                                                                                                                                | +27             | AA              | Purchase costs                  | Number, currency. Any costs that are ot be added ot the purchase proce to arrive at the total value of the asset to be depreciated | 
-28             | AB             | Useful lifespan (months)        | Number, integer. The number of months the asset can be used for | +28             | AB             | In service date                 | Valid date in current operating system format. The date the asset starts to depreciate from                                                                                                                                                                                                                                | 
-29             | AC             | Disposal value                  | Number, currency. The value of the asset at the end of its useful life | +29             | AC             | Useful lifespan (months)        | Number, integer. The number of months the asset can be used for | 
-30             | AD             | Insurer name                    | 255 alphanumeric characters | +30             | AD             | Disposal value                  | Number, currency. The value of the asset at the end of its useful life | 
-31             | AE             | Insurance policy nummber        | 255 alphanumeric characters | +31             | AE             | Insurer name                    | 255 alphanumeric characters | 
-32             | AF             | Insurance renewal date          | Valid date in current operating system format. The date the insurance should be renewed by | +32             | AF             | Insurance policy number        | 255 alphanumeric characters | 
-33             | AG             | Notes                           | Lots of alphanumeric characters! Any other information that needs to be stored against the asset | +33             | AG             | Insurance renewal date          | Valid date in current operating system format. The date the insurance should be renewed by | 
-34 onwards     AF onwards     | User-defined property columns   | You can add user-defined property columns in any order from column AF onwards. Column header must be in the format "//Property name// (//Type//)" where //Property name// is the name of the property and //Type// is the type of the property (either //Date//, //Text// or //Drop down list//). If the property does not exist it will be created and if the option of a Drop down list property does not exist it will also be created. |+34             | AH             | Notes                           | Lots of alphanumeric characters! Any other information that needs to be stored against the asset | 
 +35 onwards     AI onwards     | User-defined property columns   | You can add user-defined property columns in any order from column AI onwards. Column header must be in the format "//Property name// (//Type//)" where //Property name// is the name of the property and //Type// is the type of the property (either //Date//, //Text// or //Drop down list//). If the property does not exist it will be created and if the option of a Drop down list property does not exist it will also be created. |
  
 Here is an example spreadsheet you can use (contains no property columns, only the standard mSupply columns): {{ :import_and_export:asset_import_blank_template.xlsx |}} Here is an example spreadsheet you can use (contains no property columns, only the standard mSupply columns): {{ :import_and_export:asset_import_blank_template.xlsx |}}
 +
 +<WRAP important center round 90%>
 +When entering dates in the spreadsheet, make sure they are counted as text in their cells. Sometimes Excel will autoconvert dates to //date// or //numerical// format and then they will import into mSupply as blank dates. You can make sure that dates will import correctly by using the row preview functionality (see below) - if the dates look correct here then they will import correctly.
 +</WRAP>
  
 ===== Doing the import ===== ===== Doing the import =====
Line 62: Line 66:
 {{ :import_and_export:screenshot_2021-04-19_at_15.35.02.png?600 |}} {{ :import_and_export:screenshot_2021-04-19_at_15.35.02.png?600 |}}
  
-mSupply uses the code field to determine whether the asset being imported is a duplicate; an asset with the same code as one already in the database is determined to be a duplicate. In the //If duplicate codes are detected// section you tell mSupply what to do if it encounters a duplicate asset during the import:+mSupply uses the **code** field to determine whether the asset being imported is a duplicate; an asset with the same code as one already in the database is determined to be a duplicate. Any assets with no code are ignored during duplicate checking i.e. an asset with no code can //never// be a duplicate and will always be imported as a new asset. In the //If duplicate codes are detected// section you tell mSupply what to do if it encounters a duplicate asset during the import:
   * **Import as new asset:** this option will import the duplicate as a new asset   * **Import as new asset:** this option will import the duplicate as a new asset
-  * **Skip the duplicate without asking:** the duplicate will not be imported and that row if the spreadsheet will be ignored+  * **Skip the duplicate without asking:** the duplicate will not be imported and that row of the spreadsheet will be ignored
   * **Stop the import:** as soon as a duplicate is encountered, the import will stop and all assets imported so far will be removed so that nothing is imported.   * **Stop the import:** as soon as a duplicate is encountered, the import will stop and all assets imported so far will be removed so that nothing is imported.
-  * **Update the existing asset:** the asset that already exists with the code in the database will be updated with the new information contained in the spreadsheet row. A new asset will not be created.+  * **Update the existing asset:** the asset that already exists with the code in the database will be updated with the information contained in the spreadsheet row. A new asset will not be created. BE CAREFUL WITH THIS OPTION: if a cell is blank in the spreadsheet then the corresponding value is removed from the asset (if it had a value set for it), not left as it is.
  
 The //Field// column of the table shows you all the columns that mSupply has detected in your import file, the //Value// column shows the values it has found in the cells for that row of the spreadsheet. You can move through the rows of the spreadsheet using the **Previous** and **Next** buttons. If you try to go beyond the first or last row of the spreadsheet mSupply will let you know. The //Field// column of the table shows you all the columns that mSupply has detected in your import file, the //Value// column shows the values it has found in the cells for that row of the spreadsheet. You can move through the rows of the spreadsheet using the **Previous** and **Next** buttons. If you try to go beyond the first or last row of the spreadsheet mSupply will let you know.
Line 74: Line 78:
 When the import has finished you will be shown a message telling you how many assets were imported and how many rows of the spreadsheet were skipped, ignored or failed. When the import has finished you will be shown a message telling you how many assets were imported and how many rows of the spreadsheet were skipped, ignored or failed.
  
-===== Customer specific variations ===== +<WRAP info center round 90%> 
- +All the assets created by the import will have the text "Created by import on //xx/xx/xxxx//" (where //xx/xx/xxxx// is the date of the import) appended to the end of their //Notes// field. 
 +</WRAP>
  
 \\ \\
 \\ \\
-|  //  Previous:  **[[import_and_export:importing_locations]]** | | Next: **[[import_and_export:export_items]]** //  |+|  //  Previous:  **[[import_and_export:importing_a_supplier_invoice]]** | | Next: **[[import_and_export:importing_regions]]** //  |
 ---- struct data ---- ---- struct data ----
 pagestatus.status    :  pagestatus.status    : 
 ---- ----
  
  • Last modified: 2021/04/19 15:24
  • by Gary Willetts