Snipe-it: Feature Suggestion: Increasing/Decreasing the stock of consumables/components/accessories

Created on 19 Jul 2018  Â·  41Comments  Â·  Source: snipe/snipe-it

I would like to introduce a way to increase or decrease the stock of consumables, components and accessories. For that I would introduce two new "sub"-resources:

1) Orders
An Order registers the _increase_ in stock and consists of the same attributes we save directly with the respective models right now:

  • quantity
  • purchase_date
  • purchase_cost
  • order_number

2) StockCorrection
A StockCorrection could either _increase_ or _decrease_ the stock in one of the respective models, if they are lost/found/stolen/broken for example. It could consist of these attributes:

  • quantity
  • correction_date
  • reason

So instead of saving the total amount of stock as a discrete value, we could calculate total/remaining stock easily. By extracting the order information to a seperate object we can also keep better track of the purchases themselfes, not needing to reconstruct them with the history of the models.

There are already some other issues that could be solved with this:
#1015 #1179 #2534 #2722 #5173 #5606

Since this is quite a big change to the codebase of the respective models, the importers, etc, I would like to discuss this suggestion quite a bit before starting to actually write code for it.

What are your thoughts about the idea itself, the naming of the new resources, attributes...?

feature request

Most helpful comment

Yes please add this feature. It currently doesn't make sense to keep increment the quantity when that number doesn't actually exist. As the toner is used the quantity should decrease. When restocked the quantity should then increase to whatever is on hand. Whatever has been used has been "consumed" and should no longer be reflected as part of the quantity displaying in snipe.

This exactly. I have been wanting to move our printer toner stock from Excel to Snipe ever since we adopted this asset tracker. This would be a HUGE plus for our company. I was hoping for this change in v.5.0 but it doesn't look like it's making it in.

My suggestion would be to make a "Printers" section, separate from Assets, that you could then tie in Toner Consumables to them. Checking out toner to a User COULD still be an option for when you are shipping toner to a remote office for example, but to me it makes more sense to check out toner to the actual Printer itself. That way you can see which printers are using which toner and how often. I think it would be cleaner to add a "Printers" section instead of adding the printers as Assets, but either way would work fine. The main thing is assigning toner to a Printer/Asset, rather than just a user. Most printers in our company are used by multiple employees, so it's hard to assign to one individual, and sometimes that individual ends up moving buildings (our company has 5 buildings on the same street, and they LOVE to change employee locations OFTEN) which would make history/reports very confusing to follow. I would have no way of knowing the exact printer the user requested the toner for if I looked back a few months/years.

To summarize:

  • Add Printers Section (would be nice to keep separate from Assets visually)
  • Ability to Check Out Toner to a Printer or Asset
  • Implement accurate Stock Levels for Toner (Check Out reduces Stock Qty properly)
  • Ability to increase or decrease Stock Qty at will

All 41 comments

Oh wow my boss and I just discussed about this recently where we thought of migrating Excel tracking of printer consumables but we found out it doesn't track the things you mentioned such as increasing the black toner stock based on order.

We ended up reverting back to Excel as I created order sheet and stock sheet plus a summary page that shows a snapshot of the items

So yes, I'm very much +10 for this idea to be realized.. I wish I can help with coding but I'm only good with vba macro.. m(_ _)m

Orders should be linked to suppliers. Create an order, link it to a supplier, select the items ordered (from drop down list of existing items or create a new item); Add a PO number, current price, ... And upon delivery, you should be able to "mark as delivered (completely or partially)". This would automatically increase available stock of the specified item(s).
Next to that, you should be able to mark stock as bad (lost items, damaged goods, ...)
This should be applicable to consumables, accessories, components, assets, ...
And finally, accessories, consumables, ... should have a checkbox "requestable", which would make them ... requestable by end users.

Looks like this would supersede #5606 but yes, would like this implemented to help prevent problems with tracking consumable amounts due to bad math. :)

Yes please add this feature. It currently doesn't make sense to keep increment the quantity when that number doesn't actually exist. As the toner is used the quantity should decrease. When restocked the quantity should then increase to whatever is on hand. Whatever has been used has been "consumed" and should no longer be reflected as part of the quantity displaying in snipe.

This would be a great addition. I hope it can be implemented.

Is this still relevant? We haven't heard from anyone in a bit. If so, please comment with any updates or additional detail.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Don't take it personally, we just need to keep a handle on things. Thank you for your contributions!

Since it hasn't been implemented, it's still relevant.
It also doesn't make any sense that we have to keep replying to this thread to keep it alive

@kcarette

Since it hasn't been implemented, it's still relevant.

That's not always true. Sometimes people have stopped using the product, and it's no longer relevant.

It also doesn't make any sense that we have to keep replying to this thread to keep it alive

Stalebot shouldn't be marking these as stale, since they have the "ready for dev" tag. I don't know why they are.

Okay, it looks like this issue or feature request might still be important. We'll re-open it for now. Thank you for letting us know!

Yes please add this feature. It currently doesn't make sense to keep increment the quantity when that number doesn't actually exist. As the toner is used the quantity should decrease. When restocked the quantity should then increase to whatever is on hand. Whatever has been used has been "consumed" and should no longer be reflected as part of the quantity displaying in snipe.

This exactly. I have been wanting to move our printer toner stock from Excel to Snipe ever since we adopted this asset tracker. This would be a HUGE plus for our company. I was hoping for this change in v.5.0 but it doesn't look like it's making it in.

My suggestion would be to make a "Printers" section, separate from Assets, that you could then tie in Toner Consumables to them. Checking out toner to a User COULD still be an option for when you are shipping toner to a remote office for example, but to me it makes more sense to check out toner to the actual Printer itself. That way you can see which printers are using which toner and how often. I think it would be cleaner to add a "Printers" section instead of adding the printers as Assets, but either way would work fine. The main thing is assigning toner to a Printer/Asset, rather than just a user. Most printers in our company are used by multiple employees, so it's hard to assign to one individual, and sometimes that individual ends up moving buildings (our company has 5 buildings on the same street, and they LOVE to change employee locations OFTEN) which would make history/reports very confusing to follow. I would have no way of knowing the exact printer the user requested the toner for if I looked back a few months/years.

To summarize:

  • Add Printers Section (would be nice to keep separate from Assets visually)
  • Ability to Check Out Toner to a Printer or Asset
  • Implement accurate Stock Levels for Toner (Check Out reduces Stock Qty properly)
  • Ability to increase or decrease Stock Qty at will

I'll just add my voice to this as well, if for no other reason than to keep this from going stale.

The idea to have infrastructure items that can have consumables assigned to them makes a lot of sense to me as well, like printers, but not necessarily just printers. But printers are a good example, a printer requires multiple types of consumable - often multiple colors of toner, paper of course, and maintenance parts also, like a routine maintenance kit. We prefer to keep at least one such maintenance kit on the shelf for when the printer starts asking for it.

The consumables area is woefully deficient without a way to add and subtract stock, as consumables are things you keep adding to and subtracting from. A specific type of toner, for instance, doesn't need multiple entries, it would become unmanageable in short order, it needs an add stock button. We also hand out work clothes for some workers (protective gear) that would be ideal to track this way to keep a running tally.

Also, why would there even be a check in option for a consumable? Once it's been consumed, it's been consumed and should just become a statistic.

Is this still relevant? We haven't heard from anyone in a bit. If so, please comment with any updates or additional detail.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Don't take it personally, we just need to keep a handle on things. Thank you for your contributions!

Poke.

Ryan St. Germain

  • From Mobile

From: stale[bot] notifications@github.com
Sent: Sunday, March 24, 2019 10:01 AM
To: snipe/snipe-it
Cc: rstgermain; Comment
Subject: Re: [snipe/snipe-it] Feature Suggestion: Increasing/Decreasing the stock of consumables/components/accessories (#5881)

Is this still relevant? We haven't heard from anyone in a bit. If so, please comment with any updates or additional detail.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Don't take it personally, we just need to keep a handle on things. Thank you for your contributions!

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/snipe/snipe-it/issues/5881#issuecomment-475962436, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AhJGz1Ve5v55SZvY6WNC8nAJplTheZFAks5vZ4VVgaJpZM4VVedV.

Okay, it looks like this issue or feature request might still be important. We'll re-open it for now. Thank you for letting us know!

+1 For handling stocked items. I'd echo the desire to define an item (consumbale, component, accessory) that we can stock at multiple locations and track ordering of restock / resupply as an event that changes inventory levels.

+1

+1

+1

+1 bump

+1

Bump!

I'm just learning SnipeIT right now and couldn't find anything in the user manual for how to use consumables. Is this how it currently works?

  1. Create new consumable - e.g. Canon XYZ Toner
  2. Check out until depleted - e.g. 0/10
  3. Create new consumable again, even though it's the same exact item
  4. Check out until depleted
  5. Repeat

Is this right?

Yea but you have to add on top of the 10 it’s not like you are adding from
0 once depleted.

On Wednesday, August 28, 2019, anhkernel notifications@github.com wrote:

I'm just learning SnipeIT right now and couldn't find anything in the user
manual for how to use consumables. Is this how it currently works?

  1. Create new consumable - e.g. Canon XYZ Toner
  2. Check out until depleted - e.g. 0/10
  3. Create new consumable again, even though it's the same exact item
  4. Check out until depleted
  5. Repeat

Is this right?

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/snipe/snipe-it/issues/5881?email_source=notifications&email_token=AIJENTZSOUKQ3AVPN64ZNGLQG37RDA5CNFSM4FKV45K2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5MW3SQ#issuecomment-525954506,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AIJENT22OCIKK5X3GCONBCDQG37RDANCNFSM4FKV45KQ
.

Following this thread. I see this has been an issue for three years, hoping to see it updated. This would be incredibly useful.

I'd definitely like to see this feature implemented as well, I also think it would be nice to enter the price for a single toner cartridge for example and have the total purchase cost increase/decrease depending on the amount of available cartridges you specify.

This would be stellar!

The management of consumables, accessories and Components needs a complete rework. This would be a great solution, that seems an in demand feature

Also following. I just recently started using Snipe-IT and immediately noticed that the consumables/accessories/components are clunky to work with. Having some sort of re-stock function as well as retirement is much needed.

Is this still relevant? We haven't heard from anyone in a bit. If so, please comment with any updates or additional detail.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Don't take it personally, we just need to keep a handle on things. Thank you for your contributions!

Still watching this thread.

Okay, it looks like this issue or feature request might still be important. We'll re-open it for now. Thank you for letting us know!

Adding a couple more new issues related to this not on the OP

7668

7539

licenses can work in a similar fashion to this (although they should be changed to a subscription model setup and not sure we want to include licenses in this format)

7824

I would love to attack this issue especially in accessories. Other than the original post not much talk on the structure.

Goals that I have seen
As far as wants for myself and what I have seen:

  • Add stock manually, order or third party

    • record purchase order number, price, quantity (positive value)

    • reference a purchase order (does not exist yet) or other order

    • Add from third party

  • Remove stock manually

    • Reasons: Lost, Stolen, Trashed
    • fields: quantity (minus value), note
  • Reconcile stock

    • Accurate count at some point
    • fields: quantity (exact)
  • Tracking pricing

    • purchase price changes as we add accessories
    • historical prices will be available without having to create new items

Table structure
This all lends itself to a transnational system. Similar to an accounting system with credit and debits moving inventory instead of money from account (state) to account (state).
We combine the adding and removing as a transaction movement.
We use states to move inventory for different scenarios in a location.

  • accessories inventory transactions (accessories_inventory_transactions)

    • accessory ID

    • from state (reference below)

    • to state (reference below)

    • location ID (discussed later)

    • Quantity (always positive)

    • occured at (this is set by the client. can send transactions after they occured)

    • created at (standard, just pointing out this is different not occured at)

    • source (A link to the source that created this)

    • reference ID (ID of the item in the source that created this)

    • price (used for purchased or sold states) (optional)

    • purchase order id (if purchase order made the transaction, future?)

    • note

  • accessories inventory transfers (accessories_inventory_transfers)

    • accessory ID
    • state (will be pulled from and added to in new location)
    • from location ID
    • to location ID
    • quantity (always positive)
    • occurred at (set by client when this took place)
    • source (A link to the source that created this)
    • reference ID (ID of the item in the source that created this)
    • note
  • accessories inventory reconciles (accessories_inventory_reconciles)

    • accessory ID
    • state (reference below)
    • location ID (discussed below)
    • quantity (positive value of counted quantity)
    • occurred at
    • source (A link to the source that created this)
    • reference ID (ID of the item in the source that created this)
  • accessories inventory counts (accessories_inventory_counts)

    • accessory ID
    • state
    • location ID
    • quantity
    • calculated at (timestamp when this was calculated

States
These can be very closely related to snipe statuses ARCHIVED, PENDING, READY TO DEPLOY. I am not sure if we want to make these all related or not at the moment.

I also do not think we want to make these user editable. specific states will be used for different things. Making these user editable would add a lot of complication to these.

IN_STOCK - available ready quantity (similar to READY TO DEPLOY)
PENDING - at location but waiting before being available (similar to PENDING)
CHECKED_OUT - quantity being used
SOLD - quantity removed by being sold
USED - quantity removed by being used up and no longer available
WASTE - quantity removed by being lost, stolen or thrown out (similar to ARCHIVED)
NONE - used to manually create stock as the from state
ORDERED_FROM_SUPPLIER - quantity on order waiting to be received
RECEIVED_FROM_SUPPLIER - quantity at warehouse but not available
RESERVED_REQUEST - quantity reserved from a request (when added to accessories)

Locations
locations have always been a little strange to me.
Locations are used in 2 different ways:

  • You store assets/accessories/etc in
  • They are places you checkout items to
    I like this idea but I feel it should be revamped a little with this change

Currently locations are set on the accessory/consumable/component which means if you want to store the same accessory in two locations they will become two distinct accessories. Instead of this have the inventory reference the location so we can have distinct quantities in different areas.

Updates:

  • Remove location from accessory/consumable/component
  • Add two new fields on location

    • isWarehouse (the location used for tracking inventory and where things should go back to on check in)

    • isPlace (the location used to assign assets/accessories/etc to. This is not used in inventory management at all. Only used for check out to locations)

    • A location can be both by setting both to true which we can make default for implementation

  • On a new install a default location should be created or use ID 0 for anything that does not have a location

Sources
This would be a table of sources. A source could be a third party which would then be the oauth client. It could be an internal source like a purchase order, asset (for consumable), etc.

  • Type (external_api, purchase_order, etc)
  • client ID (used only if type is external_api, comes from oauth client table)

Implementation
This is obviously a pretty big change. Things to keep an eye

  • Inventory movement to this system with location would be a migration query that should not be to hard.
  • Since checkouts are being added to this system we would have to add current checkout count to checked_out state
  • The log of checkout and check in would be linked to the inventory adjustment going forward

Querying
With this you can easily track all historical movements of inventory.
Quantities would be a calculation of all movements in inventory adjustments and inventory transfers since the last inventory reconcile. Because this can get huge we have a inventory count table which we would update as transactions happen so to get inventory at any point you can just get the last row for your accessory/location/state in that table.

Summary
Sorry for the long post. I just wanted to lay out everything I was thinking as a solution to this problem going forward. I set this up for accessories but this would easily translate to consumables and components also. I referenced the square inventory api heavily for this because it looks similar to the best scenarios I could think of. This setup I feel would take a bit to setup but would solve pretty much every issue I saw that is related to this issue. Please let me know your thoughts on this setup.

Update about the printer comments:
@ZephyriusOne @KimmoJ talked about printers and just wanted to say how this would work for that.
When consumables are assigned to assets you can have a used up button. That button will create an inventory adjustment that would have a source as asset and reference ID as the asset id that did it. The adjustment would move it from CHECKED_OUT state to USED state. The checked out item would be removed and there would be a record of what happened.

+1

+1

+1

+1

Good day!
I am trying to automate accounting of consumables for printers using Snipe IT.
But the difficulty is that there is no way to automatically reduce the balance of consumables through the api.
Is there a way to implement this in the api?
And also to issue a consumable not to the user object, but to the asset object?

Is this still relevant? We haven't heard from anyone in a bit. If so, please comment with any updates or additional detail.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Don't take it personally, we just need to keep a handle on things. Thank you for your contributions!

It is.

On Sun, Oct 4, 2020 at 6:21 AM stale[bot] notifications@github.com wrote:

Is this still relevant? We haven't heard from anyone in a bit. If so,
please comment with any updates or additional detail.
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Don't
take it personally, we just need to keep a handle on things. Thank you for
your contributions!

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/snipe/snipe-it/issues/5881#issuecomment-703200099,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACQX4I7RLMAOF6W3OV7Y7Y3SI7Z4LANCNFSM4FKV45KQ
.

--
François Lebigre francois.lebigre@gmail.com

Okay, it looks like this issue or feature request might still be important. We'll re-open it for now. Thank you for letting us know!

+1 for this. Would also be essential to have this output to the "changed' field for the activity report for auditing purposes.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Rungea96 picture Rungea96  Â·  4Comments

jblandin04 picture jblandin04  Â·  5Comments

ArchdukeNavaron picture ArchdukeNavaron  Â·  4Comments

comisso picture comisso  Â·  4Comments

bricelabelle picture bricelabelle  Â·  3Comments