Multiple edit stock

Is there an option, that i’m not aware of, that allows to multiple edit stock.
Now: If you have 4 products that you need to adjust the stock level you have to search them one by one… but is there an option the find multiple products in 1 form and then edit the stock → save → done?

Thanks!

You have a couple of options, but I don’t know if any of these satisfy your requirements exactly.

Option 1 - Import Inventory

https://openboxes.atlassian.net/wiki/spaces/OBW/pages/1291321345/Inventory+Import

You can use the the Import Inventory feature to create an inventory transaction for a group of inventory items.

  1. Go to Import Data
  2. Download inventory data file
  3. In your favorite spreadsheet editor, remove all rows that aren’t related to the products you want to edit (this is important as you only want to create a transaction for the products you’re editing)
  4. Go back to the Import Data page
  5. Enter a date for the transaction
  6. Choose the edited file from step 1
  7. Choose Inventory impot type
  8. Click the Upload button
  9. Review the data to be imported
  10. Click the Finish button

IMPORTANT: This does not create an adjustment transaction (+/-), but rather a stock count. So you must include every row for the product you want to edit. Removing a row is like zero’ing out the quantity.

Option 2 - Adjust Stock feature

Enable Adjust Stock as a supported activity for your location and then use the Manage Inventory feature to adjust stock for specific items.

Option 3 - Adjust Inventory (no longer available but could be added back)

We used to have that available from the Browse Inventory page, but I guess we removed the checkboxes and action menu from the Browse Inventory page (probably for performance reasons). I don’t see why we couldn’t add it back but I wouldn’t hold your breath.

The way it worked as that you’d select multiple products and then click Adjust Inventory button and it would take you to a page like this.

You can still get to the Adjust Stock for a single product by using the action menu in the header of the Stock Card page.

And if you’re willing to do it manually you could grab the product UUIDs and build the URL yourself. You just need a product.id parameter for each product to the URL like below.

https://yourserverurl.xyz/openboxes/inventory/createAdjustment?product.id=product-uuid1&product.id=product-uuid2

Option 4 - Build a new Import Adjustment feature

There was a suggestion to build a new data import for stock adjustments which I think is a great idea, but it’s not currently in our backlog.

Thanks for the quick respond.

Option 3 seems to be the fastest and easy way, but I understand there where some problems with them.

I tried Option 2 but if I click on some products I get this error:

So not all products are working.

The option to edit a single product from the action menu gives me this error if I do a stock decrease:
Firefox_Screenshot_2022-05-26T20-59-36.492Z

Why I ask for this option is simple. We use handwritten lists in our depot. Where users that are not highly IT can write down the items they picked. Afterwards someone will edit the list on the end of the day. Now they have to search and edit each stock manually, and that takes a bit of time.

Option 3 seems to be the fastest and easy way, but I understand there where some problems with them.

It might take some time before I have the ability to work on this, but I’ll look into what it would take to restore.

I tried Option 2 but if I click on some products I get this error:

This is a known issue that I fixed in another branch but it’s a long-lived feature branch that hasn’t made its way back to develop yet. I’ll try to get that commit cherry-picked over as soon as I can. In case you want to try to workaround the issue (although I don’t have any good suggestions on how), I think this was due to the fact that there was whitespace in the bin location name or lot number. The request parameter just needed to be URL encoded (i.e. whitespace needs to be removed or converted to %20 or +). In the case of bin locations, replacing all whitespace with hyphens would probably work.

The option to edit a single product from the action menu gives me this error if I do a stock decrease:

Interesting. I think this is an issue with the Adjustment type only being able to accept all positive or all negative quantities (not mixed), but I’ll have to look into that.

Why I ask for this option is simple. We use handwritten lists in our depot. Where users that are not highly IT can write down the items they picked. Afterwards someone will edit the list on the end of the day. Now they have to search and edit each stock manually, and that takes a bit of time.

You could use a debit transaction as well.

I want to bump this ticket once more.

I’m still looking for an option in Openboxes to edit multiple stock values for multiple products. The current problem is this:

Example 1
We use openboxes for our warehouses (locations) to track and monitor our stock. We don’t sell stock but every warehouse (location) uses their own stock in the field. So now if we use items we have to change the stock of each item one by one. We would be helpful as option is if you can scan/search multiple products into a list and then fill in the amount that has to be withdraw from the current stocklevel.

Example 2
Also we fill some basic bags/crates with standard stock. About 35 different items. Now we have to search each item one by one and withdraw the amount we put into those bags or crates.

Both consumes allot of time. I understand that if we sell items we can ship them (inbound/outbound), so something like that option would be handy for own consume.

Maybe there is already an option like that but I didn’t find it :wink:

Thanks for the bump. And sorry for the delay.

Example 1: This is a great feature request but not something we have funding to work on at the moment. If you have a budget for feature development, we could discuss this with our development team to see if they have the capacity to work on it. If so we could flesh out the requirements and they’d provide an estimate of what the feature would cost.

In the meantime, another approach I thought of would be to create a new virtual location (call it Usage or Consumption) and use the outbound stock movement feature to move stock to that location. The nice thing about implementing it this way is that you can transfer stock back and forth depending on whether it was fully consumed or not. In addition, if there is equipment involved in the fieldwork you can also include that stock in the transfer(s) to track where the equipment is being used. You could also set up multiple virtual locations to represent a more complex state transition. For example, when fieldwork is started you could transfer out from the warehouse to “In Use”, then log into “In Use” and transfer to “Used” and/or back to the warehouse. You could also create a new location for every job or work location so you know exactly where and when the stock was used.

There’s a bit of overhead in this approach but it should work ok.

Yet another approach would be to create an internal location to represent Usage / Consumption. You would use this internal location as the destination for a stock transfer. I’m not sure I would recommend this approach because the stock would still show up in the warehouse location. However, you could make the stock “unavailable” by making the location a Hold location. This approach would require less overhead (i.e. not logging into downstream locations) but it’s still not ideal.

Example 2: If you end up using the “Transfer stock to virtual location” approach mentioned above, then I think our Stocklists feature could be used to implement this use case. You’ll create a stocklist with those 35 items according to the documentation below.

And then when you go to create a stock list you’d select the stocklist you created.

Also, please note that barcode scanning on the Add Items step of the Stock Movement feature should be ready in the upcoming release. Here’s a quick demo of the feature.

https://watch.screencastify.com/v/JsBqlrd0UjJKJ7mQcDxH

Thanks for the follow-up ;). Can you explain how i can create a virtual location? (What permissions for this location).

I think this is the best way. :). Only minus is that if move stock from your warehouse you have to outbound it (send it) and then you have to switch to the virtual location the accept it as received. Or can this be skipped?

Can you explain how i can create a virtual location? (What permissions for this location).

Virtual location is just a location. By “virtual” I just mean that the location is not associated with a physical facility but is more of a metaphysical state.

I would create a new location type called State, Virtual, Consumer, Endpoint, In the Field, Black Hole, or whatever you want to call it. Something that tells you that you’ll be sending stock there and you are not expecting it to come back. The permissions (supported activities) depend on whether the endpoint is where stock disappears or whether you want to log into that location to manage the stock. In the former, you’d probably get away with something like this.

In the latter, then the supported activities would need to include Manage Inventory as well.

Only minus is that if move stock from your warehouse you have to outbound it (send it) and then you have to switch to the virtual location the accept it as received. Or can this be skipped?

Well, if you set up the location (endpoint) without Manage Inventory, it doesn’t actually matter whether the stock was received or not. You can think of the location as a black hole i.e. you send stock to the location and return stock from the location without leaving the current warehouse.

The major advantage of creating these virtual locations is

  1. You can track where the stock goes using different classifications. For example, you could create virtual locations to represent
    • point of usage e.g. customer, site, job, etc;
    • states e.g. checked out, in repair, in use, consumed;
    • reasons stock was consumed e.g. consumed, damaged, destroyed (incinerated), missing, stolen, scrapped (during production run).
  1. It allows you to create a consumption transaction (i.e. transfer to consumption location) with multiple items without a new feature needing to be built.

For what it’s worth, the consumption transaction would also allow you to set an optional destination so if we ever get the requested feature built you’d be able to continue assigning one of the destinations described in (1).

Thnx will go to look into this the coming week