Commit Graph
100 Commits
Author SHA1 Message Date
OliverandGitHub 70fcaa7808 BuildItem quantity fix (#11108)
* Refactor clean check for BuildItem

* Don't raise an error when saving a BuildItem

* Fix order of operations

* remove debug statements
2026-01-09 18:45:44 +11:00
OliverandGitHub 02a95ffba8 Tweak for auto allocation (#11106)
- Ensure only stock for "active" parts is considered
- Cleaner logic
2026-01-09 14:53:50 +11:00
OliverandGitHub be711464ff Bug fix for stock entry calculation (#11103)
- Additional unit testing
2026-01-09 11:01:03 +11:00
OliverandGitHub 4709dc8a9a [API] Search improvements (#11094)
* Improve prefetching

* Cache user groups for permission  check

* Use a GET request to execute search

- Prevent forced prefetch
- Reduce execution time significantly

* Fix group caching

* Improve StockItemSerializer

- Select related for pricing_data rather than prefetch

* Add benchmarking for search endpoint

* Adjust prefetch

* Ensure no errors returned

* Fix prefetch

* Fix more prefetch issues

* Remove debug print

* Fix for performance testing

* Data is already returned as dict

* Test fix

* Extract model types better
2026-01-08 18:06:23 +11:00
OliverandGitHub 114d07343a Refactor "is_top_level" check (#11093)
- Request attribute only exists for top-level serializer
- Simplified code
2026-01-07 21:26:47 +11:00
OliverandGitHub 91a5c338e1 [ui] tweak inline display of supplier part (#11090)
- Hide pack quantity for single units
2026-01-07 14:03:41 +11:00
OliverandGitHub 8eff5ff59a [ui] fix line item pricing (#11091)
- Fix bug where line item pricing was retained across forms
2026-01-07 14:03:31 +11:00
b478254e98 Location parameters (#11084)
* Add parameter support for StockLocation model

* Serialize parameters for stock location

* Frontend support

* Bump API version

---------

Co-authored-by: Matthias Mair <code@mjmair.com>
2026-01-07 12:57:20 +11:00
OliverandGitHub d92672d0d9 Fix BOM pie tool tips (#11086)
- Do not use "segment" pricing
- Leads to a strange visual bug
2026-01-06 16:17:25 +11:00
OliverandGitHub 31a46e25a4 Do not redirect for /plugin/ requests (#11085)
- Instead, return a 401 error code
2026-01-06 15:43:23 +11:00
OliverandGitHub c032607921 Fix for data importer (#11076)
* Fix for data importer

- Ensure the "progress" stepper updates

* Prevent query with invalid PK

* Reduce useless API calls

- Instantiate column mappings with proper defaults
- Ignore duplicate updates
- Increase debounce times
2026-01-03 20:32:43 +11:00
OliverandGitHub 97dd664073 Rename PartParameterPanel to ParameterPanel (#11061) 2025-12-23 15:00:28 +11:00
OliverandGitHub c1d7f2a300 [bug] Trim stock allocation (#11060)
* Trim stock allocation

- Handle condition where allocated quantity exceeds available stock
- Prevent silent failure of build completion

* Fix display in buildallocatedstock table

* Consolidate table columns

* Fetch substitutes for BOM table
2025-12-23 12:16:51 +11:00
OliverandGitHub 9d2ac521ef Data export fix (#11055)
* Only look at query_params for top-level serializers

- Nested serializers should *not* look at query params

* Prevent all fields when exporting data

* Add unit test for large dataset export

* Fix code

* Pass through via context rather than primary kwarg

* Fix for file download

* Ensure request is passed through to the serializer

* ensure query params are passed through when exporting data

* Fix code comment

* Fix for unit test helper func

* Increase max export time
2025-12-23 08:46:41 +11:00
OliverandGitHub 60ec998d5c [bug] BOM exporter (#11038)
* [bug] BOM exporter

- Ensure sub-items are correctly annotated for multi-level BOM export

* Remove debug statements
2025-12-18 17:50:58 +11:00
OliverandGitHub 7b181bb5ae [API] Query improvements (#11034)
* Improve prefetch fields for API

* Cache ContentType queryset for getModelsWithMixin

- Called a LOT of times for an options request
- Store the list in the session cache
- Much faster than redis - and expires after the session is complete

* Skip optional prefetch for options requests

* Custom implementation of DjangoModelPermission

- Cache the queryset against the view
- Prevents multiple hits for OPTIONS request
- Saves > 100ms on /stock/ options request
2025-12-17 20:20:59 +11:00
OliverandGitHub 140c65b26c [API] Tags filters (#11021)
* Add optional "tags" field

* Refactor "tags" field

- Off by default
- Only prefetch when requested (expensive)
- Ref: https://github.com/inventree/InvenTree/pull/11012
- Ref: https://github.com/inventree/InvenTree/issues/11002
- Closes https://github.com/inventree/InvenTree/issues/10996

* Bump API version

* Tweak unit tests

* Ensure all fields are available when writing data

* Handle case where request has *no* method
2025-12-17 07:14:56 +11:00
OliverandGitHub 19239c8621 [API] API refactoring (#11023)
* API refactoring

- Specify prefetch_fields for optional child serializers
- Ref: https://github.com/inventree/InvenTree/pull/11012/

* Fixes for unit tests
2025-12-16 21:13:28 +11:00
OliverandGitHub c78b03b6ff [ui] Table fix (#11022)
* Optimize printing actions

- Don't fire API request until dialog is opened
- This prevents a lot of unnecessary API calls from the UI

* Do not fire export options query until required
2025-12-16 18:15:32 +11:00
OliverandGitHub ba7b776257 [refactor] Optional prefetch (#11012)
* Automatic prefetch of related fields for enable_filter

- Allows us to *not* prefetch fields (expensive) when they are not going to be used
- Enables re-usable components for common detail fields

* Refactor "project_code_detail" filter into common component

- Automatically apply correct prefetch fields

* Refactor 'parameters' annotation

- add 'enable_parameters_filter' function
- Prefetch parameters only when needed
- Refactor / consolidate code

* Refactor SupplierPartSerializer

- Make fields switchable
- Ensure correct prefetch_related

* Refactor serializer for ManufacturerPart

* Refactor BuildSerializer

* Refactor PurchaseOrderSerializer

* Refactor SalesOrderSerializer

* Refactor ReturnOrderSerializer

* Remove debug statements

* Tweaks

* Simplify custom filterable fields

* Bump API version

* Fix for data export

* Additional unit tests

* Remove unused "prefetch_func" option

* Refactor PurchaseOrderLineItemList

* Refactor SalesOrderLineItemList

* Refactor ReturnOrderLineItem

* Cleanup "pretty_name"

* Fix for build list

* Refactoring StockItem API endpoint

- Needs significant work still

* Refactoring for BuildLineSerializer

* Keep all optional fields when exporting data

* Improve "UserRoles" API endpoint

- Prefetch roles
- Prevents significant number of db hits

* Prefetch Parameter API list

* Bug fix for exporting logic

* Specify InvenTreeOutputOption

* Optional prefetch for primary_address

* Fix typing

* Fix unit test

* fixes for playwright tests

* Update Part API

- Improved prefetching

* Fix for prefetch
2025-12-16 14:46:17 +11:00
OliverandGitHub 71c2f5ca73 [refactor] Improve primary_address annotation for Company API (#11006)
* Refactor primary_address annotation

- Remove SerializerMethodField
- Better cache introspection

* Allow address detail to be optional

* Refactor address caching

* Fix primary_address annotation

* Remove "address_count" field

- Pointless annotation which is not used anywhere

* Update API version

* Tweak docs page

* Tweak unit tests
2025-12-14 21:54:07 +11:00
OliverandGitHub 0460e81f9a [refactor] Build list (#11010)
- Prefetch project_code
- Annotate parameter data
2025-12-14 19:09:01 +11:00
OliverandGitHub 9c6d16baba [refactor] Generic status API (#11009)
* Fix docs formatting

* [refactor] cache custom states

- Generic state API endpoint executed  query for each state type
- We can run a single database query and cache these in memory
- Reduces query time by ~50%
2025-12-14 19:08:52 +11:00
OliverandGitHub 2a20eeb033 Remove prefetch_related from parametric data filter (#11007)
- Not required as we do not process the parameter fields in python
2025-12-14 19:08:42 +11:00
OliverandGitHub be8911eed3 Fix docs formatting (#11008) 2025-12-14 17:58:59 +11:00
OliverandGitHub 0a2b53789a [dev] django silk - advanced profiling (#11004)
* django silk - advanced profiling

- Adds option for enabling advanced silk profiling

* Enable binary file generation
2025-12-13 20:11:53 +11:00
OliverandGitHub edc68b21ab [dev] Django silk (#11001)
* Add developer support for django-silk

* Update docs

* Fix typo

* Tweak docs

* Revert ty version
2025-12-13 16:45:17 +11:00
OliverandGitHub 2d14364a4d Add helper funcs for debugging (#10997)
* Add helper funcs for debugging

* Exclude from coverage

* Raise error if not in debug

* Raise error if not in DEBUG mode
2025-12-13 10:19:37 +11:00
OliverandGitHub e4a6c1abfb Add information about building docs (#10998) 2025-12-12 21:14:25 +11:00
OliverandGitHub 20c7a5b5b8 Barcode scan tweaks (#10992)
* Remove duplicate tooltip

* Adjust default value

* docs update

* Tweak unit test

* Fix playwright tests
2025-12-11 16:19:47 +11:00
OliverandGitHub 0723c74567 [UI] Spotlight Updates (#10994)
- Fix broken "admin" action
- Add action to jump to plugins page
2025-12-11 16:19:37 +11:00
OliverandGitHub c5548aabde [security] Bump react deps (#10991) 2025-12-10 23:02:06 +11:00
OliverandGitHub dbb55a63fd [docs] Adjusting serial numbers (#10989)
Add brief docs on adjusting serial numbers for a stock item
2025-12-10 10:21:32 +11:00
OliverandGitHub c489423c07 [docs] database update (#10985)
Instructions for updating from one database backend version to another
2025-12-09 19:33:38 +11:00
OliverandGitHub bed83bc038 Improve docs for report merging (#10984) 2025-12-09 09:57:10 +11:00
OliverandGitHub ae70c22485 [UI] Barcode form inputs (#10973)
* Add barcode buttons to related fields

- Only field types which support barcodes

* Add per-user settings for barcode support

* Fill form field with scanned data

* Updated docs

* Fix duplicate setting

* Add playwright tests

* Fix duplicate setting in docs

* Fix broken link

* Fix memo deps

* Fix typo

* Remove setting

* Updated playwright tests

* Improved typing
2025-12-07 18:31:32 +11:00
OliverandGitHub f4186e73ff Docs spelling fixes (#10972) 2025-12-07 08:11:26 +11:00
OliverandGitHub d7caddb135 Update email docs (#10966)
* Map shorthand email backends

* Revert settings changes

* Update email docs

* Tweak docs
2025-12-07 00:13:45 +11:00
OliverandGitHub efc8fb816d Fix for string form fields (#10814)
* Fix for string form fields

- replace null values with empty strings

* Expose more serializer metadata

* Check if null values are not allowed

* Fix type

* Try removing feature

* Reduce deltas

* Remove extra field attrs entirely (for testing)

* Comment out changes

* Tweak form values

* Fix for form validation
2025-12-06 22:54:29 +11:00
OliverandGitHub 3a18934b83 Obvserve default values for part forms (#10964)
- Closes https://github.com/inventree/InvenTree/issues/10909
- Use global setting values as defaults
2025-12-06 20:20:39 +11:00
OliverandGitHub 7028bb84ff Ignore ready warning when calling getModelsWithMixin (#10963) 2025-12-06 19:48:14 +11:00
OliverandGitHub 92099bab3c Fix for crowdin sync (#10956)
- Something going on with credentials
- Set persist to false
2025-12-05 13:22:25 +11:00
OliverandGitHub 744af5ba42 Update version checks: (#10954)
* Update version checks:

- Add error code for old python version
- Fix min python version in docs
- Various spelling fixes in docs

* Fix docs link

* Revert change to docs version string

* Bug fix
2025-12-05 12:50:32 +11:00
fa0d892a62 [WIP] Generic parameters (#10699)
* Add ParameterTemplate model

- Data structure duplicated from PartParameterTemplate

* Apply data migration for templates

* Admin integration

* API endpoints for ParameterTemplate

* Scaffolding

* Add validator for ParameterTemplate model type

- Update migrations
- Make Parameter class abstract (for now)
- Validators

* API updates

- Fix options for model_type
- Add API filters

* Add definition for Parameter model

* Add django admin site integration

* Update InvenTreeParameterMixin class

- Fetch queryset of all linked Parameter instances
- Ensure deletion of linked instances

* API endpoints for Parameter instances

* Refactor UI table for parameter templates

* Add comment for later

* Add "enabled" field to ParameterTemplate model

* Add new field to serializer

* Rough-in new table

* Implement generic "parameter" table

* Enable parameters for Company model

* Change migration for part parameter

- Make it "universal"

* Remove code for ManufacturerPartParameter

* Fix for filters

* Add data import for parameter table

* Add verbose name to ParameterTemplate model

* Removed dead API code

* Update global setting

* Fix typos

* Check global setting for unit validation

* Use GenericForeignKey

* Add generic relationship to allow reverse lookups

* Fixes for table structure

* Add custom serializer field for ContentType with choices

* Adds ContentTypeField

- Handles representation of content type
- Provides human-readable options

* Refactor API filtering for endpoints

- Specify ContentType by ID, model or app label

* Revert change to parameters property

* Define GenericRelationship for linking model

* Refactoring some code

* Add a generic way to back-annotate and prefetch parameters for any model type

* Change panel position

* Directly annotate parameters against different model serializers

* remove defunct admin classes

* Run plugin validation against parameter

* Fix prefetching for PartSerializer

* Implement generic "filtering" against queryset

* Implement generic "ordering" by parameter

* Make parametric table generic

* Refactor segmented panels

* Consolidate part table views

* Fix for parametric part table

- Only display parameters for which we know there is a value

* Add parametric tables for company views

* Fix typo in file name

* Prefetch to reduce hits

* Add generic API mixin for filtering and ordering by parameter

* Fix hook for rebuilding template parameters

* Remove serializer

* Remove old models

* Fix code for copying parameters from category

* Implement more parametric tables:

- ManufacturerPart
- SupplierPart
- Fixes and enhancements

* Add parameter support for orders

* Add UI support for parameters against orders

* Update API version

* Update CHANGELOG.md

* Add parameter support for build orders

* Tweak frontend

* Add renderer

* Remove defunct endpoints

* Add migration requirement

* Require contenttypes to be updated

* Update migration

* Try using ID val

* Adjust migration dependencies

* fix params fixture

* fix schema export

* fix modelset

* Fixes for data migration

* tweak table

* Fix for Category Parameters

* Use branch of demo dataset for testing

* Add parameteric build order table

* disable broken imports

* remove old model from ruleset

* correct test

* Table tweaks

* fix test

* Remove old model type

* fix test

* fix test

* Refactor mixin to avoid specifying model type manually

* fix test

* fix resolve name

* remove unneeded import

* Tweak unit testing

* Fix unit test

* Enable bulk-create

* More fixes

* More unit test tweaks

* Enhancements

* Unit test fixes

* Add some migration tests

* Fix admin tests

* Fix part tests

* adapt expectation

* fix remaining typecheck

* Docs updates

* Rearrange models

* fix paramater caching

* fix doc links

* adjust assumption

* Adjust data migration unit tests

* docs fixes

* Fix docs link

* Fixes

* Tweak formatting

* Add doc for setting

* Add metadata view for parameters

* Add metadata view for ParamterTemplate

* Update CHANGELOG file

* Deconflict model_type fields

* Invert key:value

* Revert "Invert key:value"

This reverts commit d555658db2.

* fix assert

* Update API rev notes

* Initial unit tests for API

* Test parameter create / edit / delete via the API

* Add some more unit tests for the API

* Validate queryset annotation

- Add unit test with large dataset
- Ensure number of queries is fixed
- Fix for prefetching check

* Add breaking change info to CHANGELOG.md

* Ensure that parameters are removed when deleting the linked object

* Enhance type hinting

* Refactor part parameter exporter plugin

- Any model which supports parameters can use this now
- Update documentation

* Improve serializer field

* Adjust unit test

* Reimplement checks for locked parts

* Fix unit test for data migration

* Fix for unit test

* Allow disable edit for ParameterTable

* Fix supplier part import wizard

* Add unit tests for template API filtering

* Add playwright tests for purchasing index

* Add tests for manufacturing index page

* ui tests for sales index

* Add data migration tests for ManufacturerPartParameter

* Pull specific branch for python binding tests

* Specify target migration

* Remove debug statement

* Tweak migration unit tests

* Add options for spectacular

* Add explicit choice options

* Ensure empty string values are converted to None

* Don't use custom branch for python checks

* Fix for migration test

* Fix migration test

* Fix reference target

* Remove duplicate enum in spectactular.py

* Add null choice to custom serializer class

* [UI] Edit shipment details

- Pass "pending" status through to the form

* New migration strategy:

part.0144:
- Add new "enabled" field to PartParameterTemplate model
- Add new ContentType fields to the "PartParameterTemplate" and "PartParameter" models
- Data migration for existing "PartParameter" records

part.0145:
- Set NOT NULL constraints on new fields
- Remove the obsolete "part" field from the "PartParameter" model

* More migration updates:

- Create new "models" (without moving the existing tables)
- Data migration for PartCataegoryParameterTemplate model
- Remove PartParameterTemplate and PartParameter models

* Overhaul of migration strategy

- New models simply point to the old database tables
- Perform schema and data migrations on the old models first (in the part app)
- Swap model references in correct order

* Improve checks for data migrations

* Bug fix for data migration

* Add migration unit test to ensure that primary keys are maintained

* Add playwright test for company parameters

* Rename underlying database tables

* Fixes for migration unit tests

* Revert "Rename underlying database tables"

This reverts commit 477c692076.

* Fix for migration sequencing

* Simplify new playwright test

* Remove spectacular collision

* Monkey patch the drf-spectacular warn function

* Do not use custom branch for playwright testing

---------

Co-authored-by: Matthias Mair <code@mjmair.com>
2025-12-04 20:41:36 +11:00
OliverandGitHub c443b4e9b8 App ready warning (#10938)
* Fix for currency functions

- Prevent database access until after the 'common' app has loaded

* Add decorator to selectively ignore warnings

* Add reference to PR

* Fix variable assignment

* Use functools.wraps

* Add wrapper for loading machine registry

* Move decorator to ready.py

* Add missing code

* Set backup values to match default currency codes

* Bump API version
2025-12-04 19:30:14 +11:00
OliverandGitHub 7920b0e670 Allow null values for InvenTreeDecimalField (#10948)
- Fixes bug related to importing null "rounding_multiple" BOM field
2025-12-04 07:04:07 +11:00
OliverandGitHub 3e35f439c0 [UI] Edit shipment details (#10944)
- Pass "pending" status through to the form
2025-12-03 17:28:13 +11:00
OliverandGitHub 38b27271ac [bug] Handle TransactionManagementError (#10942)
In the case where we try to call refresh_from_db within an atomic transaction block, it will throw a TransactionManagementError
2025-12-02 17:21:24 +11:00
c224606d8d [UI] refactor "inactive alerts" panel (#10913)
* Remove "inactive alerts" panel

* Improve messaging / colors

* Refactor to "system status" display

* remove duplicate messages

* Revert alert messages

---------

Co-authored-by: Matthias Mair <code@mjmair.com>
2025-12-01 23:07:26 +11:00
OliverandGitHub ee4e200cf3 [devcontainer] revert postgres version (#10937)
- Our debian image (bookworm) supports only postgres:15
- Revert from postgres:17 to postgres:15 in the devcontainer
2025-12-01 16:46:59 +11:00
OliverandGitHub 3958e10875 Fix for python bindings CI check (#10934) 2025-11-30 20:01:35 +11:00
OliverandGitHub 3b6b702bd5 Stock availability docs (#10927)
* Add deficit stock badge

* screenshots

* Add "stock availability" page

* Update stock index page
2025-11-28 12:54:16 +11:00
OliverandGitHub 3a4981056b Add note regarding redis password restrictions (#10925) 2025-11-28 09:05:47 +11:00
OliverandGitHub 5713cff1cb [bug] Stock adjust (#10914)
* Extra checks on backend

* Bug fix for adjustment forms

- Set default quantity of zero

* Additional unit testing (to ensure no regression)
2025-11-26 22:32:57 +11:00
OliverandGitHub 16b600af88 Docs updates (#10912)
- Small tweaks / additions
2025-11-26 21:27:13 +11:00
OliverandGitHub df6cbca197 Check / uncheck shipments from table (#10907) 2025-11-25 23:19:18 +11:00
OliverandGitHub 7c7d7b6a21 Spelling fix (#10896)
* spwan -> spawn

* Prioriy -> Priority

* Bump API version

* Fix spelling in migration file
2025-11-24 17:49:13 +11:00
OliverandGitHub 89e3d605c5 Update postgres version (#10895)
- docker setup uses postgres:17
- Documentation incorrectly stated postgres:16
- Update CI to use postgres:17 also
2025-11-24 16:48:59 +11:00
OliverandGitHub 276041ae54 [bug] Migration test fix (#10899)
* Pop instead of get

* Better error handling for unit registry

* Prevent caching during database migrations

* Remove debug msg

* Revert changes
2025-11-24 14:52:13 +11:00
OliverandGitHub 7d5429303e Error messages (#10894)
* Add INVE-E14 - Error in config file

* Add INVE-E14

* Fix duplicate code

* Fix numbering
2025-11-23 23:11:12 +11:00
OliverandGitHub e590522909 [UI] Fix for PartTestResultTable (#10886)
* [UI] Fix for PartTestResultTable

- Filter properly by part instance

* Add a simple unit test

* Tweak unit test
2025-11-22 17:20:49 +11:00
OliverandGitHub a7ff1250ba [bug] Serialize location (#10882)
* Properly set location id when serializing stock

* Add correct tracking entries

* Add unit test
2025-11-22 12:56:31 +11:00
OliverandGitHub f50d568b23 [plugin] Add printing delay to sample machines (#10873)
* [plugin] Add printing delay to sample machines

- Useful for testing
- Default is zero

* Add backup_value to MachineSetting.get_setting

* Fix call to machine.get_setting

* Fix for printing logic

* Simplify code
2025-11-21 14:56:23 +11:00
OliverandGitHub d5ee647c6e [ui] Label fix (#10874)
* Fix for sales order allocations:

- Improve UX
- Clearer intent

* Same fix for build order

* Also for build line sub table
2025-11-21 12:43:01 +11:00
OliverandGitHub a76ec0a7b8 [UI] Suggested pricing (#10867)
* Refactor NumberField into separate component

* Add helper func to ensure a number is a number

* Use placeholder value for suggested sale price

* Fix for auto-fill

* Tweak price calculation

* Add UI testing for sales order price breaks

* Fix aria label name

* Annotate price breaks to supplier part

* Fetch price break data

* Support price breaks for purchase order pricing

* Fix required to prevent circular imports

* Add playwright tests for purchase order price breaks

* Bump API version

* Re-add output options for SupplierPriceBreakList

* Revert change

* Simplify unit test
2025-11-20 22:51:27 +11:00
OliverandGitHub 835c7784f9 Implement caching for unit registry: (#10870)
* Implement caching for unit registry:

- Registry could become out of sync across sessions
- Implement a simple caching system

* Simplify code
2025-11-20 22:31:33 +11:00
OliverandGitHub 468efbacfc [UI] Delete stock fix (#10868)
* Add helper func getOverviewUrl

* Redirect to parent page when stock item is counted to zero
2025-11-20 06:34:25 +11:00
OliverandGitHub 18c2a934b8 Better handling of an invalid config file (#10857)
* Better handling of an invalid config file

* Remove dud line
2025-11-19 16:21:17 +11:00
a8f2a02d69 [bug] Media url fix (#10855)
* Bug fix for getMediaUrl

- Proper check for file type
- Fix "fully_qualified_url" for Attachment model

* Add unit test

* Fix typo

* Fix unit test

---------

Co-authored-by: Matthias Mair <code@mjmair.com>
2025-11-19 15:50:05 +11:00
OliverandGitHub 7b38fa30bb Fix for shipping virtual parts (#10853)
* Additional checks for virtual parts in sales order process

* Prevent allocation against virtual parts

* Fix order of operations

* Adjust part form fields based on selections

* Prevent order locking

* Updated playwright tests

* Add unit test
2025-11-19 15:40:41 +11:00
OliverandGitHub 40fbb4d810 Offload stock consume operations (#10856)
- These can be expensive if there are a lot of allocated items
- Offload to the background worker
2025-11-19 15:40:24 +11:00
OliverandGitHub d06d80fb99 Bug fix for sales order pricing (#10858)
* Bug fix for sales order pricing

- Clear sale price field if no pricing

* Adjust playwright tests
2025-11-19 14:49:51 +11:00
OliverandGitHub 2799c4d1fe Specify python version in netlify.toml (#10859) 2025-11-19 13:55:34 +11:00
OliverandGitHub dab7223245 Updates for data exporting (#10854)
- Add option to exclude email logs from import / export
- Fix for pluginusersetting
2025-11-19 07:58:22 +11:00
OliverandGitHub 57a2de6ffc [UI] Remove duplicate action (#10844)
- "Build Output" is same as "stock item" in this case
2025-11-17 19:52:35 +11:00
OliverandGitHub 770f7a292e [UI] Fix for form OPTIONS query (#10840)
* [UI] Fix for form OPTIONS query

- Fetch OPTIONs each time form is opened
- Ensure default values are filled correctly
- Prevent issues with latching form state

* Add comment

* Add playwright test

- Check that the reference field increments properly

* Fix other Playwright tests
2025-11-16 21:59:27 +11:00
OliverandGitHub aa9958bf11 [bug] State change fixes (#10832)
* Fix for setting custom status

* Fix for setting custom status when receiving stock items

* Allow caching for set_status

* Updated code and unit tests
2025-11-15 07:42:48 +11:00
OliverandGitHub af4d9efd1d devcontainer: Expose debug server on all ports (#10833)
- Required for new docker setup in devcontainer
2025-11-14 19:28:31 +11:00
OliverandGitHub 39d181ae5f Make icons red again (#10816) 2025-11-14 18:12:41 +11:00
OliverandGitHub ba9b5438b4 Char fix (#10827)
* Remove debouncing from text field

* Add debounce to data import field

* Only apply for strings values

* Fix unit test

* More unit test tweaks
2025-11-14 17:35:59 +11:00
OliverandGitHub 8cb808f613 Bug fix for loading boolean settings (#10826)
- Do not just cast to bool
- The string "False" casts to True in this case
- Use the function that supports strings
2025-11-14 08:26:24 +11:00
OliverandGitHub 0790dfff5b [UI] Auto-fill stock allocation for build order (#10819)
* Auto-fill stock allocation for build order

* Auto-fill allocation for sales orders

* Prevent recursive auto-fills
2025-11-13 23:16:32 +11:00
OliverandGitHub af6cce3aba [UI] Duplicate supplier part (#10809)
* Allow duplication of supplier part

* Bug fix for pack quantity display

* Allow duplication of ManufacturerPart
2025-11-12 00:08:45 +11:00
OliverandGitHub d829d3a548 [UI] Order form improvements (#10802)
* Auto-fill supplier parts in order wizard

* Copy supplier part SKU from order parts wizard

* Add "on_order" filter to BuildLine table

* Allow ordering by production and ordering quantities

* Allow specification of purchase price

* Bump API version

* Adjust UI testings
2025-11-11 17:29:18 +11:00
OliverandGitHub f3c1cc12af PO receive fix (#10807)
* Extract note field when receiving stock items against PO

* Fix tracking entry when receiving item
2025-11-11 17:29:09 +11:00
OliverandGitHub 77f80385c9 Fix for pricing display (#10804) 2025-11-11 16:19:20 +11:00
OliverandGitHub 246c084e6e Reduce log output for Pint library (#10803)
- Reduce clutter in app startup due to unit redefinition
2025-11-11 13:33:43 +11:00
OliverandGitHub 2dfe6b5f41 [UI] MFA Refactor (#10775)
* Install otpauth package

* Add separate MFASettings components

* Refresh methods after registering token

* Simplify layout

* Add modal for deleting TOTP code

* Display recovery codes

* Adjust text

* Register webauthn

* Add longer timeouts

* Add workflow for removing webauthn

* Cleanup SecurityContext.tsx

* Add playwright testing for TOTP registration

* Spelling fixes

* Delete unused file

* Better clipboard copy
2025-11-05 22:54:47 +11:00
OliverandGitHub d12102ba96 PurchaseOrderForms tweaks (#10773)
- Small visual changes
- Small bug fix for null record
2025-11-05 10:21:55 +11:00
OliverandGitHub dbb799a0e0 [UI] BOM part category (#10772)
* Add "Category" column to BOM Table

* Enable sorting by category in BOM table

* Add Category column to Buildline table

* Add Category filter to BuildLineTable

* Adjust queryset prefetch

* Bump API version and update CHANGELOG
2025-11-05 10:04:28 +11:00
OliverandGitHub fc3d130888 Refactor settings.py (#10766)
- Move drf-spectacular settings into separate file
- Cleanup settings.py core file
2025-11-05 07:00:58 +11:00
OliverandGitHub 7e943293c7 MFA middleware tweaks (#10768)
* MFA middleware tweaks

- Remove Check2FAMiddleware if MFA not enabled
- Refactor into middleware.py

* Update settings.py

- Disable MFA_SUPPORTED_TYPES if MFA_ENABLED is False

* Update docs
2025-11-05 07:00:42 +11:00
OliverandGitHub 2bc2966d22 Reduce text size (#10764)
- Smaller text for table hovercards
2025-11-04 15:00:52 +11:00
OliverandGitHub 8e20bc53db Consolidate data actions for BOM table (#10763)
* Consolidate data actions for BOM table

* Adjust playwright tests
2025-11-04 12:02:00 +11:00
OliverandGitHub 901846272b Auth Improvements (#10752)
* Return more detail in MFA failure response

* Reject auth requests for users who are inactive

* Move markdown config out of settings.py
2025-11-04 10:08:04 +11:00
OliverandGitHub 153bcc1d5c Search stock items by supplier data (#10750)
* Search stock items by supplier data

* Search by MPN or Manufacturer

* Update API version
2025-11-03 15:03:50 +11:00
OliverandGitHub 0997a18a62 Move "view" actions to the end of the list (#10749) 2025-11-03 14:28:31 +11:00
OliverandGitHub 91489e986c UI table updates (#10748)
- Add "IPN" col to SupplierPartTable
- Add "IPN" col to ManufacturerPartTable
2025-11-03 13:47:26 +11:00
OliverandGitHub 46615e447b Docs fix (#10738)
* Fix heading in helpers.md

* Helper func docs
2025-11-02 15:30:21 +11:00
OliverandGitHub 551da5a51f Bump version number to 1.2.0 dev (#10734)
* Bump version number to 1.2.0 dev

* Add release tag to CHANGELOG.md

* Add entry for upcoming 1.2.0

* Cleanup

* Remove links
2025-11-02 10:01:16 +11:00