hay-kot / homebox

Homebox is the inventory and organization system built for the Home User
https://hay-kot.github.io/homebox/
GNU Affero General Public License v3.0
2.7k stars 210 forks source link

Add the ability to assign asset numbers to items #79

Closed Motordom closed 2 years ago

Motordom commented 2 years ago

What is the problem you are trying to solve with this feature?

There is currently no functionality to assign asset numbers to items.

Asset number support would allow for similar items to be physically issued an asset tag, to assist in identification and management.

What is the solution you are proposing?

Add a new field to items, allowing users to assign an asset number to an item.

Asset numbers should count up sequentially for each item, and never be reused (may require soft deletes on the items table).

Format for asset numbers could be specified in the admin panel #19

What alternatives have you considered?

Recording asset numbers under description

Contributions

hay-kot commented 2 years ago

I'm not sure this fits into the simplicity goal for homebox. Whats the purpose of an asset tag over a model number? We already autogenerate a UUID for the item in the database, would exposing that be enough to fulfill this?

Motordom commented 2 years ago

The main use of an asset number field would be the ability to in turn generate physical asset tags (QR, code-128, just the number stickers etc) to assist in identification, inventory and management of items, and physically associate an item with it's digital record in HomeBox.

While UUID's could be exported and used to generate asset tags in a similar format, you do not gain the benefits of an asset number, and their ease of use. UUIDs are just too long to easily use physically, which is the main use and advantage of an asset tag.

To be clear, the feature request is for the generation and storage of asset numbers, not the generation of asset tags.

An example asset number generated externally from an asset number generated in HomeBox: image

A few of the benefits of adding asset numbers to HomeBox would be:

Where this really starts to come in handy, is where a user has duplicates of a single item of the same model. Rather than having to resort to an often small printed serial number to identify an exact item, the asset number on the asset tag can be used, which would then ideally be searchable via HomeBox to pull up the item.

A few example scenarios where you would have duplicate items in a home, where asset numbers (and tags) would benefit users:

A few examples of where asset numbers (and tags) would simplify processes in a home:

Asset numbers could be stored in the items table, and Generate asset number button could be added to an items page. Once clicked it generated an asset number which is then exposed under a Detailed view slider on an items page, similar to the slider for Labels and Locations. Start from 000001 and progress sequentially for each new item, not reusing numbers. Though this approach wouldn't allow for manually specifying an asset number, which could be problematic if importing pre-generated asset numbers to HomeBox.

In short, I believe the addition of asset numbers to HomeBox would fit within the simplicity goal of HomeBox, while bringing a lot of potential to users for how they manage their items and would be an extremely useful feature. It would allow for a simple, consistent linkage between a physical item and its digital record and help promote good asset management. That being said, similar to Sold Details, Labels or Quantity, it is a feature users could choose to leave, or ignore.

hay-kot commented 2 years ago

Okay, I think I'm good with moving forward with this one. Here's how I'm thinking about the implementation

  1. Asset Tags are displayed as Z-Filled integers so 1 = '00001' which is probably the most optimal storage, sorting, and retrieval mechanism.
  2. Formats will NOT be user set-able. I've given this some thought and I just don't think it will be possible to ensure functionality and make it user adjustable, at least it would be hard and probably more effort than it's worth.
  3. Asset Tags will auto-increment. When a new item is created the value will auto increment
  4. During the migration, the fields will be set either randomly, or by insertion date depending on implementation.
  5. When importing, it will not be possible to set the asset ID, it will be assigned automatically.
  6. Asset IDs will be read only.

After Initial Implementation

--

Still unsure about number 6, I want to make them read-only, but I can see a case where you may need to shuffle things around. Open to input on that one, or others items.

Not sure how to handle items with multiple quantity. I would think you'd just print duplicate tags in this case?

proffalken commented 2 years ago

Slightly different use-case for us - I'm thinking about implementing this for our Makerspace/Hackspace (which I know is way outside the target for this project, but this is much easier to use than SnipeIT!) and not everything we own is an asset otherwise we have to include it in our deprecation calculations as part of our year end.

As an example, our 3D printer cost over £200 and is an asset so would get an Asset ID, but out multimeters were only £20 each so don't count as assets and don't need an ID, and 3D Printer Filament/Solder/etc. are things we need to track but are all consumables so we don't care if they have an asset tag either.

I'd love to see asset tags as a feature, but if there's any way to make them optional then that would be great.

I guess the alternative is that the 3D printer has an asset tag of 000001, and the CNC machine ends up being 000060 because the number in between relate to "non-assets" or consumables, and we just don't use them for the stickers.

Code-Slave commented 2 years ago

Maybe make asset number autogenerated but include a button or something that sets it 00000 as "Not needed" that keeps asset numbs autogenerated, but allows to not utilize them on specific items? Im not sure if thats clear

hay-kot commented 2 years ago

This is coming in the next release. Here's a preview from the docs in PR #142. This should cover both the original use case and the use case described by @proffalken


Managing Asset IDs

Homebox provides the option to auto-set asset IDs, this is the default behavior. These can be used for tracking assets with printable tags or labels. You can disable this behavior via a command line flag or ENV variable. See configuration for more details.

Example ID: 000-001

Asset IDs are partially managed by Homebox, but have a flexible implementation to allow for unique use cases. ID's are non-unique at the database level so there is nothing stopping a user from manually setting duplicate IDs for various items. There are two recommended approaches to manage Asset IDs

1. Auto Incrementing IDs

This is the default behavior and likely to one to experience the most consistent behavior. Whenever creating or importing an item, that items receives the next available ID. This is the most consistent approach and is recommended for most users.

2. Auto Incrementing ID's with Reset

In some cases you may want to skip some items such as consumables, or items that are loosely tracked. In this case, we recommend that you leave auto-incrementing ID's enabled however when you create a new item that you want to skip, you can go to that item and reset the ID to 0. This will remove it from the auto-incrementing sequence and the next item will receive the next available ID.

If you're migrating from an older version there is a action on the users profile page to assign IDs to all items. This will assign the next available ID to all items in the order of creation. You should only do this once during the migration process. You should be especially cautious of this action if you're using the reset feature described in option number 2