2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-18 13:05:42 +00:00
Commit Graph

2618 Commits

Author SHA1 Message Date
a424866343 Sort part parameter creation modal (#4251) (#4333) 2023-02-12 00:12:10 +11:00
06605e70c5 Update documentation URLs (#4325) 2023-02-10 10:39:57 +11:00
9a289948e5 Include stock item purchase price in pricing cache (#4292)
* Add setting to control pricing calculation from stock items

* Bug fix for displaying a "null" setting

* Add new fields to PartPricing model

* Add code for calculation of min/max stock item costs

* Update pricing display to use stock item pricing

* Add unit testing for new pricing features

* Automatically update pricing when stock item is created or edited

* Increment API version

* Improvements for price rendering

* Update based on feedback:

- Roll stock item pricing into purchase pricing
- Simplify models
- Update unit tests
2023-02-02 21:23:16 +11:00
4f029d4d81 Improvements for part creation API endpoint (#4281)
* Refactor javascript for creating a new part

* Simplify method of removing create fields from serializer

* Fix bug which resulted in multiple model instances being created

* remove custom code required on Part model

* Reorganize existing Part API test code

* Add child serializer for part duplication options

* Part duplication is now handled by the DRF serializer

- Improved validation options
- API is self-documenting (no more secret fields)
- More DRY

* Initial stock is now handled by the DRF serializer

* Adds child serializer for adding initial supplier data for a Part instance

* Create initial supplier and manufacturer parts as specified

* Adding unit tests

* Add unit tests for part duplication via API

* Bump API version

* Add javascript for automatically extracting info for nested fields

* Improvements for part creation form rendering

- Move to nested fields (using API metadata)
- Visual improvements
- Improve some field name / description values

* Properly format nested fields for sending to the server

* Handle error case for scrollIntoView

* Display errors for nested fields

* Fix bug for filling part category

* JS linting fixes

* Unit test fixes

* Fixes for unit tests

* Further fixes to unit tests
2023-02-02 09:24:16 +11:00
83eaa6ef79 Bug fix for creating Part or Company via API (#4264)
- If specified, the "remote_image" field is passed through to the __init__ method
- Throws a 500 error
- Solution is to explicitly ignore the provided field
2023-01-27 14:50:41 +11:00
26f71b3fac Improve translation source text (#4254)
* Improve translation source text

* Add migration file for translation
2023-01-26 22:34:30 +11:00
c838bddc19 Handle case where function is called with empty user (#4259) 2023-01-26 22:34:19 +11:00
0e0d961205 [FR] Add last updated column for supplier parts (#4214)
* Move to updated Meta mixin

* [FR] Add last updated column for supplier parts
Fixes #3327

* add updated to table

* bump API version

* add missing migration

* incremetn api ;-)
2023-01-25 12:18:52 +11:00
61e5244789 Bom export with substitute part numbers (#4203)
* Added BOM export option to export substitute part numbers

* Small documentation fix

* Fixed the behaviour for multiple lines with different amount of substitutes

* Changed UI naming to "alternative parts"
2023-01-25 09:35:26 +11:00
11f147fd34 Reload purchase order table after part order (#4219)
* Reload purchase order table after part order

When on the part page, going to the "Purchase order" sidebar tab.
You can order the part by pressing the "Order Part" button.
After a succefull order, the form closes but the table on the page
was never refreshed.

* Fixed a js styling check error
2023-01-25 09:32:17 +11:00
2dae60292e Fix typos/naming (#4242)
* fix usage of InvenTree name

* small typo fix

* rename notification plugin
all builtins should be named inventree...
2023-01-25 09:29:50 +11:00
0e96654b6a [FR] Move URL endpoints to API namespace (#4163)
* Move endpoints
[FR] Move download URL endpoints to API namespace
Fixes #3927

* rename endpoint ref name and update js

* update endpoint name and js

* rename endpoint and fix js

* add docstring
2023-01-07 23:23:38 +11:00
34bb40d439 Catch potential error when refreshing part pricing (#4154) 2023-01-06 11:14:25 +11:00
92f5601e78 Fixes and improvements for the part import wizard (#4127)
Made changes that resemble PR #4050 to the part import wizard to make the correct form show.
Added option to download a part import template file.
Increased the number of allowable formfield because the importer creates a lot of table fields when importing multiple parts at once.
2023-01-01 22:03:43 +11:00
778efba49d Catch potential issues when importing data (#4129) 2023-01-01 00:00:22 +11:00
ab4e2aa8bb Part stocktake (#4069)
* Remove stat context variables

* Revert "Remove stat context variables"

This reverts commit 0989c308d0.

* Allow longer timeout for image download tests

* Create PartStocktake model

Model for representing stocktake entries against any given part

* Admin interface support for new model

* Adds API endpoint for listing stocktake information

* Bump API version

* Enable filtering and ordering for API endpoint

* Add model to permission group

* Add UI hooks for displaying stocktake data for a particular part

* Fix encoded type for 'quantity' field

* Load stocktake table for part

* Add "stocktake" button

* Add "note" field for stocktake

* Add user information when performing stocktake

* First pass at UI elements for performing stocktake

* Add user information to stocktake table

* Auto-calculate quantity based on available stock items

* add stocktake data as tabular inline (admin)

* js linting

* Add indication that a stock item has not been updated recently

* Display last stocktake information on part page

* js style fix

* Test fix for ongoing CI issues

* Add configurable option for controlling default "delete_on_deplete" behaviour

* Add id values to cells

* Hide action buttons (at least for now)

* Adds refresh button to table

* Add API endpoint to delete or edit stocktake entries

* Adds unit test for API list endpoint

* javascript linting

* More unit testing

* Add Part API filter for stocktake

* Add 'last_stocktake' field to Part model

- Gets filled out automatically when a new PartStocktake instance is created

* Update part table to include last_stocktake date

* Add simple unit test

* Fix test
2022-12-31 23:14:43 +11:00
e1d1b51936 Various fixes to the "Download image from URL" functionality (#4101)
* Various fixes to the "Download image from URL" functionality

This commit adds an user-agent string to the download request wich prevents some sites from
returning a 403 (forbidden) status.
Clicking the download button on the thumbnail, also showed the thumbnail because the event wasn't stopped.
The parts thumbnail didn't update after a succesfull download of the image, reloadImage was never called.

* Fixed copy and paste errors in previous commit

* Reverted back the user-agent  immitation from the previous commit

* Add a user-agent overide setting

Add a setting to allow overiding the default user-agent  that is used for downloading images and files from a URL

* Fixed a typo in the description

* Another typo fixed

* Removed cast to string to prevent using 'None' as the user-agent

* Thumbnail delete button not visible after upload

The delete button on the image thumbnails of both parts and companies
isn't showing when we upload a new image. This is fixed by always
including the element on the page, and use javascript to show and hide
the element.
2022-12-24 23:17:04 +11:00
14a2c128a9 Fix stock location structural check (#4089)
* Fix stock location structural check

Exclude sub stock location items from preventing that a stock location can be switched to structural.

* Fix structural check on both storage location and parts category

Exclude children of sub- locations/categories in the check to allow this location/category to be structural
2022-12-21 23:30:23 +11:00
6581cb3965 Unit test for part pricing background task (#4080) 2022-12-19 13:29:32 +11:00
8159ea3c02 Save newly created pricing object (#4075) 2022-12-18 07:14:34 +11:00
09cb59ead3 Use supplier part pack size for scheduling (#4063) 2022-12-15 20:58:14 +11:00
d246169c93 Add unit test for deleting part which has pricing information (#3986)
* Add unit test for deleting part which has pricing information

* Test delete of part without pricing

* Deal with post_delete errors

1. Deleting a Part deleted related objects (e.g. InternalPriceBreak)
2. post_delete signal is called for InternalPriceBreak
3. Subsequent updates to Part / PartPricing throw error

* Add unit test for deleting a Part via the API

- Add InternalPriceBreak so the previous error condition is checked

* Fix for unit test

* More unit test fixes

(cherry picked from commit fa346257f5)

* Ensure unique part names for unit testing

* Further unit test fixes
2022-12-13 11:07:35 +11:00
e22db29862 Add 1D barcode support to browser webcam scanner (#4007)
* Removed invalid characters

* Changed barcode scanning library to html5-qrcode

* Added responsive barcode scanner styles

* Fixed js formatting

* Added barcode scanner upscaling for performance

* Added scanner styles for firefox

* Removed unused qr-scanner JS files
2022-12-02 08:03:21 +11:00
8cd782dc8f Supplier pricing override (#3988)
* Adds new option for overriding supplier price break pricing data

* Add logic for overriding supplier part pricing with historical information

* Prevent caching
2022-11-22 16:28:55 +11:00
4f5adef402 Add settings for controlling variant pricing (#3987)
* Add settings for controlling variant pricing

* Select whether to use variant pricing

* Add setting to ignore inactive variants

* Update variant pricing table
2022-11-22 11:55:44 +11:00
a008d360af Simple typo fix (#3968) 2022-11-20 21:54:52 +11:00
bc8a6ae4b8 Part image delete (#3963)
* Add button to remove an associated image from a part

- Also fixes some issues with onclick event propagation

* Similar feature for company image
2022-11-19 21:53:48 +11:00
2a148a2f46 Markdown notes fix (#3946)
* Improve 'remove_non_printable_characters' method in helpers.py

- Requires fancy 'negative-lookahead' regex to negate existing unicode regex

* Adds  extra test for markdown fields

- Ensure that newline characters are retained
- Very necessary for markdown formatting!
- Update field cleaning to allow newlines in some very specific cases

* Bug fix

* Better edge case handling
2022-11-18 13:36:38 +11:00
73c1c50d01 Support structural part categories (#3931)
* Support structural part categories

Structural categories cannot have parts assigned (only sub-categories)

Fixed #3897

* Fixed unit test

* Fix Oliver's review comments
2022-11-18 08:10:06 +11:00
1e1662ef0f Add setting to determine if supplier price breaks are used in overall price calculations (#3943) 2022-11-17 09:27:07 +11:00
95645c7b14 Notification fix (#3939)
* Fix docstring for NotificationMessage class

* Fix for 'refresh' button in notification table

* Simplify API for marking notifications as 'read'

- Simply update the detail serializer
- No requirement for extra API endpoints
- Same updates for news feed entry
- Hide 'read' news on the home page
- Add ability to mark news items as read via table

* Bug fix for build.js

* Fix for part category template
2022-11-17 08:26:19 +11:00
06266b48af Part pricing cache (#3710)
* Create new model for storing Part pricing data

Currently this model does not "do" anything but will be used for caching pre-calculated pricing information

* Define function for accessing pricing information for a specific part

* Adds admin site support for new PartPricing model

* Specify role for PartPricing model

* Allow blank values for PartPricing model fields

* Add some TODO entries

* Update migration files to sync with latest master

* Expose API endpoint for viewing part pricing information

* Update migration file

* Improvements:

- Updated model with new fields
- Code for calculating BOM price
- Code for calculating internal price
- Code for calculating supplier price
- Updated unit testing

* Fix (and test) for API serializer

* Including min/max pricing data in part serializer

* Bump API version

* Add pricing overview information in part table

- Adds helper function for formatting currency data
- No longer pre-render "price strings" on the server

* Overhaul of BOM API

- Pricing data no longer calculated "on the fly"
- Remove expensive annotation operations
- Display cached price range information in BOM table

* Filter BOM items by "has pricing"

* Part API endpoint can be filtered by price range

* Updpated API version notes

* Improvements for price caching calculations

- Handle null price values
- Handle case where conversion rates are missing
- Allow manual update via API

* Button to manually refresh pricing

* Improve rendering of price-break table

* Update supplier part pricing table

* Updated js functions

* Adds background task to update assembly pricing whenever a part price cache is changed

* Updates for task offloading

* HTML tweaks

* Implement calculation of historical purchase cost

- take supplier part pack size into account
- improve unit tests

* Improvements for pricing tab rendering

* Refactor of pricing page

- Move javascript functions out into separate files
- Change price-break tables to use bar graphs
- Display part pricing history table and chart
- Remove server-side rendering for price history data
- Fix rendering of supplier pricing table
- Adds extra filtering options to the SupplierPriceBreak API endpoint

* Refactor BOM pricing chart / table

- Display as bar chart with min/max pricing
- Display simplified BOM table

* Update page anchors

* Improvements for BOM pricing table display

* Refactoring sales data tables

- Add extra data and filter options to sales order API endpoints
- Display sales order history table and chart

* Add extra fields to PartPricing model:

- sale_price_min
- sale_price_max
- sale_history_min
- sale_history_max

* Calculate and cache sale price data

* Update part pricing when PurchaseOrder is completed

* Update part pricing when sales order is completed

* Signals for updating part pricing cache

- Whenever an internal price break is created / edited / deleted
- Whenever a sale price break is created / edited / deleted

* Also trigger part pricing update when BomItem is created  / edited / deleted

* Update part pricing whenever a supplier price break is updated

* Remove has_complete_bom_pricing method

* Export min/max pricing data in BOM file

* Fix pricing data in BOM export

- Calculate total line cost
- Use more than two digits

* Add pricing information to part export

Also some improvements to part exporting

* Allow download of part category table

* Allow export of stock location data to file

* Improved exporting of StockItem data

* Add cached variant pricing data

- New fields in part pricing model
- Display variant pricing overview in "pricing" tab

* Remove outdated "PART_SHOW_PRICE_HISTORY" setting

* Adds scheduled background task to periodically update part pricing

* Internal prices can optionally override other pricing

* Update js file checks

* Update price breaks to use 6 decimal places

* Fix for InvenTreeMoneySerializer class

- Allow 6 decimal places through the API

* Update for supplier price break table

* javascript linting fix

* Further js fixes

* Unit test updates

* Improve rendering of currency in templates

- Do not artificially limit to 2 decimal places

* Unit test fixes

* Add pricing information to part "details" tab

* Tweak for money formatting

* Enable sort-by-price in BOM table

* More unit test tweaks

* Update BOM exporting

* Fixes for background worker process

- To determine if worker is running, look for *any* successful task, not just heartbeat
- Heartbeat rate increased to 5 minute intervals
- Small adjustments to django_q settings

Ref: https://github.com/inventree/InvenTree/issues/3921
(cherry picked from commit cb26003b92)

* Force background processing of heartbeat task when server is started

- Removes the ~5 minute window in which the server "thinks" that the worker is not actually running

* Adjust strategy for preventing recursion

- Rather than looking for duplicate parts, simply increment a counter
- Add a "scheduled_for_update" flag to prevent multiple updates being scheduled
- Consolidate migration files

* Adds helper function for rendering a range of prices

* Include variant cost in calculations

* Fixes for "has_pricing" API filters

* Ensure part pricing status flags are reset when the server restarts

* Bug fix for BOM API filter

* Include BOM quantity in BOM pricing chart

* Small tweaks to pricing tab

* Prevent caching when looking up settings in background worker

- Caching across mnultiple processes causes issues
- Need to move to something like redis to solve this
- Ref: https://github.com/inventree/InvenTree/issues/3921

* Fixes for /part/pricing/ detail API endpoint

* Update pricing tab

- Consistent naming

* Unit test fixes

* Prevent pricing updates when loading test fixtures

* Fix for Part.pricing

* Updates for "check_missing_pricing"

* Change to pie chart for BOM pricing

* Unit test fix

* Updates

- Sort BOM pie chart correctly
- Simplify PartPricing.is_valid
- Pass "limit" through to check_missing_pricing
- Improved logic for update scheduling

* Add option for changing how many decimals to use when displaying pricing data

* remove old unused setting

* Consolidate settings tabs for pricing and currencies

* Fix CI after changing settings page

* Fix rendering for "Supplier Pricing"

- Take unit pricing / pack size into account

* Extra filtering / ordering options for the SupplierPriceBreak API endpoint

* Fix for purchase price history graph

- Use unit pricing (take pack size into account)

* JS fixes
2022-11-14 15:58:22 +11:00
f6cfc12343 Add option to recursively delete part categories (#3435)
* Add option to recursively delete part categories

Fixes #3384

* - Added test (broken ATM)
- Refactored parameters to booleanish

* Fix styling issues reported by flake8

* Working on unit testing

* Added on_commit debugging callback

* Separate the recursive part of the deletion into another method
to make sure that the delete operation is performed in a single transaction

* Trying transactions with @transactions.atomic

* Fix flake8 reported issues

* Removed unused debug callback

* Fixed tests for category recursive deletion

* Fix flake reported issues

* Fix flake reported issues
Again

* Remove unrelated formatting changes

* Fixed a part of review comments
2022-11-08 11:57:00 +11:00
92260f2059 Add 'barcode_hash' data to more API serializers: (#3906)
* Add 'barcode_hash' data to more API serializers:

- part
- stock location
- supplier part

* Bump API version

* Make 'barcode_hash' fields read-only via the API

* Fix for Part serializer
2022-11-07 22:36:15 +11:00
b50a6826ef Builtin plugins (#3889)
* Allow loading of "builtin" plugins, even if "plugins" are not explicitly loaded

* Updates for 'admin' buttons:

- Make them work like proper links
- Hidden if 'hide_admin_link' customization option is set
- Check for user staff status

* Cleanup rendering of "plugins" display

* Consolidate InvenTree barcode plugins into single plugin class

* Hide "install plugin" button if plugins are not enabled

* Add info message is external plugins are not enabled

* Fixes for loading plugins

- Always load 'builtin' plugins
- Refactor calls to "is_active" at various points in codebase

* Various tweaks

- Improve builtin plugin descriptions
- Spelling fixes

* Adjust plugin detail for builtin plugins

* Simplify barcode plugin class

* Simplify template rendering

* Bug fix for inventree barcode plugin

* Revert "Simplify template rendering"

This reverts commit 3a6755a659.

* Re-re-improve template rendering

- Required as the template has been refactored for both "active" and "inactive" plugins

* Fixing unit tests for barcode plugin

* Ensure that barcode scan actions do not take a "long time":

- Add a default timeout of 0.1s to any POST or GET request in the testing framework
- Can be overridden by calling method if desired

* Display plugin "builtin" status in admin panel

* Fix unit tests for plugin API

* Further unit testing fixes

* Version number tweaks

* Further tweaks for unit testing

* Allow longer timeout for report printing via API

* Increase default timeout for API tests

- Sometimes CPU spike can cause the test to fail :|

* label printing can take a bit longer

* Remove timeout requirement from API tester

- Too variable to be reliable for CI
2022-11-05 01:05:54 +11:00
db45b6f9dc Location barcode actions (#3887)
* Reorder action buttons for stock location

* Tweak position of "New Location" button

* Tweak loaction of "New Category" button for part category page

* Working on skeleton for new barcode dialog

* Scan location into location

* Add configurable input delay for processing barcode scan data
2022-11-01 22:18:10 +11:00
9beefd09f7 Remove special character restrictions in parameter template names (#3883)
* Remove special character restrictions in parameter template names

Fixes #3852

* Added migration
2022-10-31 11:28:49 +11:00
55c8b73b0a Floating point API bug (#3877)
* Add unit tests for internalpricebreak

- Exposes an existing bug

* Ensure that rounding-decimal and prices are rounded correctly

- Force remove trailing digits / reduce precision
2022-10-29 14:18:19 +11:00
61c6054049 Part name validation fix (#3870)
* Check that part name format is actually valid

* Expand exception handling when generating part "full_name"

* Do not enforce client-side sanitization of form data

- Form data sanitization is now handled server side
2022-10-28 15:56:16 +11:00
f3dee187bc Make PartCategories to be filterable by name and description (#3854)
* Make PartCategories to be filterable by name and description

* Bump API version
2022-10-26 09:46:28 +11:00
c3f6b75b30 Attachment bug fix (#3818)
* Prevent name check on null attachment file

(cherry picked from commit c4ed1e23a01f278d696c2853337bdde0a682c6c5)

* Unit testing for uploading attachments via API

(cherry picked from commit 592548065f7b69f58b8aaaaea506e3ec653a63df)
2022-10-20 22:43:14 +11:00
906ae218aa [Plugin] Allow custom plugins for running validation routines (#3776)
* Adds new plugin mixin for performing custom validation steps

* Adds simple test plugin for custom validation

* Run part name and IPN validators checks through loaded plugins

* Expose more validation functions to plugins:

- SalesOrder reference
- PurchaseOrder reference
- BuildOrder reference

* Remove custom validation of reference fields

- For now, this is too complex to consider given the current incrementing-reference implementation
- Might revisit this at a later stage.

* Custom validation of serial numbers:

- Replace "checkIfSerialNumberExists" method with "validate_serial_number"
- Pass serial number through to custom plugins
- General code / docstring improvements

* Update unit tests

* Update InvenTree/stock/tests.py

Co-authored-by: Matthias Mair <code@mjmair.com>

* Adds global setting to specify whether serial numbers must be unique globally

- Default is false to preserve behaviour

* Improved error message when attempting to create stock item with invalid serial numbers

* Add more detail to existing serial error message

* Add unit testing for serial number uniqueness

* Allow plugins to convert a serial number to an integer (for optimized sorting)

* Add placeholder plugin methods for incrementing and decrementing serial numbers

* Typo fix

* Add improved method for determining the "latest" serial number

* Remove calls to getLatestSerialNumber

* Update validate_serial_number method

- Add option to disable checking for duplicates
- Don't pass optional StockItem through to plugins

* Refactor serial number extraction methods

- Expose the "incrementing" portion to external plugins

* Bug fixes

* Update unit tests

* Fix for get_latest_serial_number

* Ensure custom serial integer values are clipped

* Adds a plugin for validating and generating hexadecimal serial numbers

* Update unit tests

* Add stub methods for batch code functionality

* remove "hex serials" plugin

- Was simply breaking unit tests

* Allow custom plugins to generate and validate batch codes

- Perform batch code validation when StockItem is saved
- Improve display of error message in modal forms

* Fix unit tests for stock app

* Log message if plugin has a duplicate slug

* Unit test fix

Co-authored-by: Matthias Mair <code@mjmair.com>
2022-10-18 23:50:07 +11:00
193b69eeb5 Adjust display of extra "add bom item" button at bottom of BOM table (#3773) 2022-10-12 16:34:57 +11:00
fbc99257bd Fixes #3514 (#3754)
Added BOM button to bottom of Bill of Materials table on part detail view
2022-10-07 13:23:53 +11:00
1b421fb59a Adds 'consumable' field to BomItem model (#2890)
* Adds 'consumable' field to BomItem model

* Add consumable field to API

* Consumable items always count as "allocated" for a build

* Add new BOM fields to BOM item checksum calculation

* Display 'consumable' status in BOM table

* Fix order of database migrations

* Update unit tests

* Fix for BOM table

* Remove "infinite" field from StockItem model

- Not used anywhere for functionality
- Hidden from the user
- Now replaced by the "consumable" concept in the BuildOrder model

* Update build order allocation table display

* Prevent auto-allocation of stock to consumable BOM items

* Ignore consumable BOM items when allocating stock to a build order

* Reimplmement "footer" row for BOM table

* Fix "can_build" calculation

- Ignore "consumable" BOM items

* Unrelated typo fix

* Tweak BOM table

* More visual tweaks to BOM table

* Add unit test for consumable field
2022-09-24 23:45:56 +10:00
829a9d8311 Parameter ordering fix (#3704)
* Hard-code URL fforr loadPartParameterTable function

* Improve API efficiency for including parameter data in Part query

* Fix loading of part parameter data into table
2022-09-21 23:31:24 +10:00
04b3f022a0 Path name bug fix (#3694)
* bug fix: Ensure that child tree items update their pathstring when requried

* Add unit tests for fix

* Unit test fix

* Tweak for unit test
2022-09-20 19:02:08 +10:00
187707c892 Barcode Refactor (#3640)
* define a simple model mixin class for barcode

* Adds generic function for assigning a barcode to a model instance

* StockItem model now implements the BarcodeMixin class

* Implement simple unit tests for new code

* Fix unit tests

* Data migration for uid field

* Remove references to old 'uid' field

* Migration for removing old uid field from StockItem model

* Bump API version

* Change lookup_barcode to be a classmethod

* Change barcode_model_type to be a class method

* Cleanup for generic barcode scan and assign API:

- Raise ValidationError as appropriate
- Improved unit testing
- Groundwork for future generic implementation

* Further unit tests for barcode scanning

* Adjust error messages for compatibility

* Unit test fix

* Fix hash_barcode function

- Add unit tests to ensure it produces the same results as before the refactor

* Add BarcodeMixin to Part model

* Remove old format_barcode function from Part model

* Further fixes for unit tests

* Add support for assigning arbitrary barcode to Part instance

- Simplify barcode API
- Add more unit tests

* More unit test fixes

* Update unit test

* Adds generic endpoint for unassigning barcode data

* Update web dialog for unlinking a barcode

* Template cleanup

* Add Barcode mixin to StockLocation class

* Add some simple unit tests for new model mixin

* Support assigning / unassigning barcodes for StockLocation

* remove failing outdated test

* Update template to integrate new barcode support for StockLocation

* Add BarcodeMixin to SupplierPart model

* Adds QR code view for SupplierPart

* Major simplification of barcode API endpoints

- Separate existing barcode plugin into two separate classes
- Simplify and consolidate the response from barcode scanning
- Update unit testing

* Yet more unit test fixes

* Yet yet more unit test fixes
2022-09-15 14:14:51 +10:00
c4db308dce Display more units (#3664)
* <

* Display units in "used in" table

* Display units in BOM table

* Include units in the 'available' column of BOM table
2022-09-08 16:26:07 +10:00
875dda7e59 Null units fix (#3663)
* Hide units on part page if units are null

* Hide null units in stock table

* Hide null units in supplier part table

* Hide null units in part tables

* Template cleanup

* Unit test fix
2022-09-08 15:18:43 +10:00