* Add child stock item table
* Fix stock item splitting bug
- StockItem tree was not being rebuilt correctly
- Add unit tests
* Annotate StockItem serializer with "child_items" count
* Show or hide "child items" panel
* Account for case where tree_id is zero
* move more paths to basic path
* changed url route to only match fully - fixed test
* revert path changes on labelprint pages
* fix not found/redirect
* revert test change
* Fix "company" filter for StockList
- distinct() was in the wrong spot
- Added a new unit test to cover this
* Update stocklist API filter
- Move custom filtering into FilterSet class
- Exposes available filters to API documentation
- Improved readability / field validation
* Further improvements for StockList API
* For for order extra line item serializer
- 'title' is not a valid field
* Improve deletion behaviour for InvenTreeTree model
- Remove recursive call to function
- Handle database operations as bulk queries
- Ensure child nodes have their pathstring updated correctly
- Remove old @receiver hook
- Refactor StockLocation.delete method
- Refactor PartCategory.delete method
- Atomic transactions potentially problematic here
* Add docstring
* Fix method name
* Use bulk-update instead of recursive save when pathstring changes
* Improvements for tree delete method
- Handle case where item has already been deleted
* Raise exception rather than simply logging
* Update unit tests
* Improvements to unrelated unit test
* Fix urls.md
* Fix typo
The use of `else` or `elif` becomes redundant and can be dropped if the last statement under the leading `if` / `elif` block is a `return` statement.
In the case of an `elif` after `return`, it can be written as a separate `if` block.
For `else` blocks after `return`, the statements can be shifted out of `else`. Please refer to the examples below for reference.
Refactoring the code this way can improve code-readability and make it easier to maintain.
Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com>
There shouldn't be any blank lines after the function docstring.
Remove the blank lines to fix this issue.
Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com>
* Added model changes for StockLocationTypes
* Implement icon for CUI
* Added location type to location table with filters
* Fix ruleset
* Added tests
* Bump api version to v136
* trigger: ci
* Bump api version variable too
* Add "path_detail" to stock location serializer
- Requires ?path_detail=1 in URL query parameters
- Only avaialable on the StockLocation detail URL endpoint (not list, too expensive)
* Implement path_detail option for PartCategory detail API endpoint
* Add "path_detail" option to PartSerializer
* Add optional path_detail to StockItem serializer
* Cleanup
* Increment API version
* Add unit test for Part and PartCategory
* Remove debug statement
* Basic AttachmentTable
* Add form for editing an attachment
* Fix columns for InvenTreeTable component
* Update part attachment table
* Add dropzone to attachments table
* Handle file upload with Dropzone
* Add header for panelgroup
* Improve rendering of attachment files
* Allow various attachment list API endpoints to be searched
* Determine available attachment actions based on user permissions
* Reload attachment table after upload
* Delete attachments via table
* ts fix
* Clip width of actions column
* More updates
- Add manual buttons for adding link or file
- Edit link or file
* Add tooltip for row actions
* Adds a custom hook for refreshing tables
- So much cleaner :)
* Change export type
* Disable row action column when checkbox selection is active
* Fix(?) for custom hook
* Badge tweak
* Annotate available variant stock to SalesOrderLine serializer
* Filter variant stock by:
- active = True
- salable = True
* Add 'salable' filter to StockList API
* Filter available stock in sales order table:
- Must be salable
- Must be active
* Update table display
* Bump API version
* Fix range filtering for serial number
- Needs to point to "serial_int" field to work
* Bump API version
(cherry picked from commit c3cb47ec15bbba1bf5d6d46374ac29b627f5bf34)
* Add API endpoint for changing stock item status
- Change status for multiple items simultaneously
- Reduce number of database queries required
* Perform bulk update in serializer
* Update 'updated' field
* Add front-end code
* Bump API version
* Bug fix and unit test
* Add new BuildLine model
- Represents an instance of a BOM item against a BuildOrder
* Create BuildLine instances automatically
When a new Build is created, automatically generate new BuildLine items
* Improve logic for handling exchange rate backends
* logic fixes
* Adds API endpoints
Add list and detail API endpoints for new BuildLine model
* update users/models.py
- Add new model to roles definition
* bulk-create on auto_allocate
Save database hits by performing a bulk-create
* Add skeleton data migration
* Create BuildLines for existing orders
* Working on building out BuildLine table
* Adds link for "BuildLine" to "BuildItem"
- A "BuildItem" will now be tracked against a BuildLine
- Not tracked directly against a build
- Not tracked directly against a BomItem
- Add schema migration
- Add data migration to update links
* Adjust migration 0045
- bom_item and build fields are about to be removed
- Set them to "nullable" so the data doesn't get removed
* Remove old fields from BuildItem model
- build fk
- bom_item fk
- A lot of other required changes too
* Update BuildLine.bom_item field
- Delete the BuildLine if the BomItem is removed
- This is closer to current behaviour
* Cleanup for Build model
- tracked_bom_items -> tracked_line_items
- untracked_bom_items -> tracked_bom_items
- remove build.can_complete
- move bom_item specific methods to the BuildLine model
- Cleanup / consolidation
* front-end work
- Update javascript
- Cleanup HTML templates
* Add serializer annotation and filtering
- Annotate 'allocated' quantity
- Filter by allocated / trackable / optional / consumable
* Make table sortable
* Add buttons
* Add callback for building new stock
* Fix Part annotation
* Adds callback to order parts
* Allocation works again
* template cleanup
* Fix allocate / unallocate actions
- Also turns out "unallocate" is not a word..
* auto-allocate works again
* Fix call to build.is_over_allocated
* Refactoring updates
* Bump API version
* Cleaner implementation of allocation sub-table
* Fix rendering in build output table
* Improvements to StockItem list API
- Refactor very old code
- Add option to include test results to queryset
* Add TODO for later me
* Fix for serializers.py
* Working on cleaner implementation of build output table
* Add function to determine if a single output is fully allocated
* Updates to build.js
- Button callbacks
- Table rendering
* Revert previous changes to build.serializers.py
* Fix for forms.js
* Rearrange code in build.js
* Rebuild "allocated lines" for output table
* Fix allocation calculation
* Show or hide column for tracked parts
* Improve debug messages
* Refactor "loadBuildLineTable"
- Allow it to also be used as output sub-table
* Refactor "completed tests" column
* Remove old javascript
- Cleans up a *lot* of crusty old code
* Annotate the available stock quantity to BuildLine serializer
- Similar pattern to BomItem serializer
- Needs refactoring in the future
* Update available column
* Fix build allocation table
- Bug fix
- Make pretty
* linting fixes
* Allow sorting by available stock
* Tweak for "required tests" column
* Bug fix for completing a build output
* Fix for consumable stock
* Fix for trim_allocated_stock
* Fix for creating new build
* Migration fix
- Ensure initial django_q migrations are applied
- Why on earth is this failing now?
* Catch exception
* Update for exception handling
* Update migrations
- Ensure inventreesetting is added
* Catch all exceptions when getting default currency code
* Bug fix for currency exchange rates update
* Working on unit tests
* Unit test fixes
* More work on unit tests
* Use bulk_create in unit test
* Update required quantity when a BuildOrder is saved
* Tweak overage display in BOM table
* Fix icon in BOM table
* Fix spelling error
* More unit test fixes
* Build reports
- Add line_items
- Update docs
- Cleanup
* Reimplement is_partially_allocated method
* Update docs about overage
* Unit testing for data migration
* Add "required_for_build_orders" annotation
- Makes API query *much* faster now
- remove old "required_parts_to_complete_build" method
- Cleanup part API filter code
* Adjust order of fixture loading
* Fix unit test
* Prevent "schedule_pricing_update" in unit tests
- Should cut down on DB hits significantly
* Unit test updates
* Improvements for unit test
- Don't hard-code pk values
- postgresql no likey
* Better unit test
* add file for states
* move general definition out
* add some tests and docs
* add tests for invalid definitions
* make status_label tag generic
* move templatetags
* remove unused tag
* rename test file
* make status label a lookup
* rename tags
* move import structure
* add missing tag
* collect states dynamically
* fix context function
* move api function out
* add tests for tags
* rename tests
* refactor imports
* Add test for API function
* improve errors and add tests for imporved errors
* make test calls simpler
* refactor definitions to use enums
* switch to enum
* refactor definitions to use enums
* fix lookup
* fix tag name
* make _TAG lookup a function
* cleanup BaseEnum
* make _TAG definition simpler
* restructure status codes to enum
* reduce LoC
* type status codes as int
* add specific function for template context
* Add definition for lookups
* fix filter lookup
* TEST: "fix" action lookup
* Add missing migrations
* Make all group code references explict
* change default on models to value
* switch to IntEnum
* move groups into a seperate class
* only request _TAG if it exsists
* use value and list
* use dedicated groups
* fix stock assigment
* fix order code
* more fixes
* fix borked change
* fix render lookup
* add group
* fix import
* fix syntax
* clenup
* fix migrations
* fix typo
* fix wrong value usage
* fix test
* remove group section
* remove group section
* add more test cases
* Add more docstring
* move choices out of migrations
* change import ordeR?
* last try before I revert
* Update part.migrations.0112
- Add custom migration class which handles errors
* Add unit test for migration
- Ensure that the new fields are added to the model
* Update reference to PR
---------
Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
* Update models: add MetadataMixin
* Fix name of model in Metadata API definition
* Add API endpoints
* Update API version
* Fix syntax
* Add API endpoint for RO, RO line, RO line extra item
* Add Metadata to Contacts
* Fix link in API version
* Fix name of model
* Fix error?
* Fix error?
* Fix all errors, hopefully..
* Add tests for order, line, extraline metadata
Extend for PO, SO
* Add tests for metadata for Company-related models
* Fix spelling
* Consolidate metadata test for all part models into one test
* Add test for all Stock metadata
* Update stock test_api
* Add all metadata tests for orders
* Fix various errors in tests
* Fix model name
* Add migration files
* Update tests for metadata
* Resolve conflict around API version number
* Rename migration file
* Rename migration file
* Will Contact edit endpoint work better?
* Revert changes in URL definitions
* Remove test, duplicate
* Fix tests with fixed PK, not from fixtures, to use a dynamic PK
* Fix migration overlap
* Add validation to part units field
* Add "pack_units" field to the SupplierPart model
* Migrate old units to new units, and remove old field
* Table fix
* Fixture fix
* Update migration
* Improve "hook" for loading custom unit database
* Display part units column in part table
- Also allow ordering by part units
- Allow filtering to show parts which have defined units
* Adds data migration for converting units to valid values
* Add "pack_units_native" field to company.SupplierPart model
* Clean pack units when saving a SupplierPart
- Convert to native part units
- Handle empty units value
- Add unit tests
* Add background function to rebuild supplier parts when a part is saved
- Required to ensure that the "pack_size_native" is up to date
* Template updates
* Sort by native units first
* Bump API version
* Rename "pack_units" to "pack_quantity"
* Update migration file
- Allow reverse migration
* Fix for currency migration
- Handle case where no currencies are provided
- Handle case where base currency is not in provided options
* Adds unit test for data migration
* Add unit test for part.units data migration
- Check that units fields are updated correctly
* Add some extra "default units"
- each / piece
- dozen / hundred / thousand
- Add unit testing also
* Update references to "pack_size"
- Replace with "pack_quantity" or "pack_quantity_native" as appropriate
* Improvements based on unit testing
* catch error
* Docs updates
* Fixes for pricing tests
* Update unit tests for part migrations · 1b6b6d9d
* Bug fix for conversion code
* javascript updates
* JS formatting fix
* Adds "consumed_by" field to the StockItem model.
- Points to a BuildOrder instance which "consumed" this stock
- Marks item as unavailable
- Allows filtering against build order
* Allow API filtering
* Adds table of "consumed stock items" to build order page
* Update stock table to show "consumed by" stock status
* Add "consumed_by" link to stock item detail
* Optionally add 'buildorder' details to installStockItem method
* Update methodology for completing a build item
- Instead of deleting stock, mark as "consumed by"
* Fix history entry for splitting stock
* Bug fix
* track "consumed_by" field for tracked items also
* Update build docs
* Update allocation documentation
* Update terminology.md
* Unit test updates
* Fix conflicting migrations
* revert change
* Update docs for status codes
* Adds API endpoint for scrapping individual build outputs
* Support 'buildorder' reference in stock tracking history
* Add page for build output documentation
* Build docs
* Add example build order process to docs
* remove debug statement
* JS lint cleanup
* Add migration file for stock status
* Add unit tests for build output scrapping
* Increment API version
* bug fix
* Add flag to API which allows using pack size when adding stock items manually
* Check for use_pack_size before pop
* Add test data and tests
* Improve data handling
* Add form field for use_pack_size when adding stock
* Add description of pack size to docs
* Don't check for supplier part if it is None
* Move form field to after supplier part, for better logic
* Fix wrong function
* Fix tests
* Adjust purchase price when using pack size
* Adjust help text for purchase price
* Adjust help text for purchase price some more
* Fix tests for purchase price of added stock
* Update api_version.py
* 'Tag' management
Fixes#83
* Add for ManufacturerPart, SupplierPart
* Add tags for StockLocation, StockItem
* fix serializer definition
* add migrations
* update pre-commit
* bump dependencies
* revert updates
* set version for bugbear
* remove bugbear
* readd bugbear remove isort
* and remove bugbear again
* remove bugbear
* make tag fields not required
* add ruleset
* Merge migrations
* fix migrations
* add unittest for detail
* test tag add
* order api
* reduce database access
* add tag modification test
* use overriden serializer to ensuer the manager is always available
* fix typo
* fix serializer
* increae query thershold by 1
* move tag serializer
* fix migrations
* content_types are changing between tests - removing them
* remove unneeded fixture
* Add basic docs
* bump API version
* add api access to the docs
* add python code
* Add tags to search and filters for all models
* Adds custom search filter to allow 'regex' searching of results
* Specify if "shell" can access database for certain commands
* Bug fix for settings API
- Do not allow cache on detail endpoints
- Was causing strange error conditions with missing or duplicate PK values
* Adds user setting to control regex search
* Enable regex for search queries
- bootstrap tables
- search preview
* Pass search options through bettererer
* Refactor API endpoints to use new filter approach
* Bump API version
* Add "whole word" search
- Closes https://github.com/inventree/InvenTree/issues/4510
* Handle case where existing fields are empty
* pop > get
* Implement a generic API endpoint for enumeration of status codes
* Adds endpoint for PurchaseOrderStatus
* Add more endpoints (sales order / return orer)
* Add endpoints for StockStatus and StockTrackingCode
* Support build status
* Use the attribute name as the dict key
* Refactored status codes in javascript
- Now accessible by "name" (instead of integer key)
- Will make javascript code much more readable
* Bump API version
* Adds ReturnOrder and ReturnOrderAttachment models
* Adds new 'role' specific for return orders
* Refactor total_price into a mixin
- Required for PurchaseOrder and SalesOrder
- May not be required for ReturnOrder (remains to be seen)
* Adds API endpoints for ReturnOrder
- Add list endpoint
- Add detail endpoint
- Adds required serializer models
* Adds basic "index" page for Return Order model
* Update API version
* Update navbar text
* Add db migration for new "role"
* Add ContactList and ContactDetail API endpoints
* Adds template and JS code for manipulation of contacts
- Display a table
- Create / edit / delete
* Splits order.js into multiple files
- Javascript files was becoming extremely large
- Hard to debug and find code
- Split into purchase_order / return_order / sales_order
* Fix role name (change 'returns' to 'return_order')
- Similar to existing roles for purchase_order and sales_order
* Adds detail page for ReturnOrder
* URL cleanup
- Use <int:pk> instead of complex regex
* More URL cleanup
* Add "return orders" list to company detail page
* Break JS status codes into new javascript file
- Always difficult to track down where these are rendered
- Enough to warrant their own file now
* Add ability to edit return order from detail page
* Database migrations
- Add new ReturnOrder modeles
- Add new 'contact' field to external orders
* Adds "contact" to ReturnOrder
- Implement check to ensure that the selected "contact" matches the selected "company"
* Adjust filters to limit contact options
* Fix typo
* Expose 'contact' field for PurchaseOrder model
* Render contact information
* Add "contact" for SalesOrder
* Adds setting to enable / disable return order functionality
- Simply hides the navigation elements
- API is not disabled
* Support filtering ReturnOrder by 'status'
- Refactors existing filter into the OrderFilter class
* js linting
* More JS linting
* Adds ReturnOrderReport model
* Add serializer for the ReturnOrderReport model
- A little bit of refactoring along the way
* Admin integration for new report model
* Refactoring for report.api
- Adds generic mixins for filtering queryset (based on updates to label.api)
- Reduces repeated code a *lot*
* Exposes API endpoints for ReturnOrderReport
* Adds default example report file for ReturnOrder
- Requires some more work :)
* Refactor report printing javascript code
- Replace all existing functions with 'printReports'
* Improvements for default StockItem test report template
- Fix bug in template
- Handle potential errors in template tags
- Add more helpers to report tags
- Improve test result rendering
* Reduce logging verbosity from weasyprint
* Refactor javascript for label printing
- Consolidate into a single function
- Similar to refactor of report functions
* Add report print button to return order page
* Record user reference when creating via API
* Refactor order serializers
- Move common code into AbstractOrderSerializer class
* Adds extra line item model for the return order
- Adds serializer and API endpoints as appropriate
* Render extra line table for return order
- Refactor existing functions into a single generic function
- Reduces repeated JS code a lot
* Add ability to create a new extra line item
* Adds button for creating a new lien item
* JS linting
* Update test
* Typo fix
(cherry picked from commit 28ac2be35b)
* Enable search for return order
* Don't do pricing (yet) for returnorder extra line table
- Fixes an uncaught error
* Error catching for api.js
* Updates for order models:
- Add 'target_date' field to abstract Order model
- Add IN_PROGRESS status code for return order
- Refactor 'overdue' and 'outstanding' API queries
- Refactor OVERDUE_FILTER on order models
- Refactor is_overdue on order models
- More table filters for return order model
* JS cleanup
* Create ReturnOrderLineItem model
- New type of status label
- Add TotalPriceMixin to ReturnOrder model
* Adds an API serializer for the ReturnOrderLineItem model
* Add API endpoints for ReturnOrderLineItem model
- Including some refactoring along the way
* javascript: refactor loadTableFilters function
- Pass enforced query through to the filters
- Call Object.assign() to construct a superset query
- Removes a lot of code duplication
* Refactor hard-coded URLS to use {% url %} lookup
- Forces error if the URL is wrong
- If we ever change the URL, will still work
* Implement creation of new return order line items
* Adds 'part_detail' annotation to ReturnOrderLineItem serializer
- Required for rendering part information
* javascript: refactor method for creating a group of buttons in a table
* javascript: refactor common buttons with helper functions
* Allow edit and delete of return order line items
* Add form option to automatically reload a table on success
- Pass table name to options.refreshTable
* JS linting
* Add common function for createExtraLineItem
* Refactor loading of attachment tables
- Setup drag-and-drop as part of core function
* CI fixes
* Refactoring out some more common API endpoint code
* Update migrations
* Fix permission typo
* Refactor for unit testing code
* Add unit tests for Contact model
* Tests for returnorder list API
* Annotate 'line_items' to ReturnOrder serializer
* Driving the refactor tractor
* More unit tests for the ReturnOrder API endpoints
* Refactor "print orders" button for various order tables
- Move into "setupFilterList" code (generic)
* add generic 'label printing' button to table actions buttons
* Refactor build output table
* Refactoring icon generation for js
* Refactoring for Part API
* Fix database model type for 'received_date'
* Add API endpoint to "issue" a ReturnOrder
* Improvements for stock tracking table
- Add new status codes
- Add rendering for SalesOrder
- Add rendering for ReturnOrder
- Fix status badges
* Adds functionality to receive line items against a return order
* Add endpoints for completing and cancelling orders
* Add option to allow / prevent editing of ReturnOrder after completed
* js linting
* Wrap "add extra line" button in setting check
* Updates to order/admin.py
* Remove inline admin for returnorderline model
* Updates to pass CI
* Serializer fix
* order template fixes
* Unit test fix
* Fixes for ReturnOrder.receive_line_item
* Unit testing for receiving line items against an RMA
* Improve example report for return order
* Extend unit tests for reporting
* Cleanup here and there
* Unit testing for order views
* Clear "sales_order" field when returning against ReturnOrder
* Add 'location' to deltas when returning from customer
* Bug fix for unit test
* Add "external" field to StockLocation
- New model for field
- Database migrations
- Serializer / API updates
- Front end tables / filters
* Update API version
* Improve filtering options for StockItem list
- Make use of StockFilter introspection
* Remove outdated filter
* remove outdated "max_results" parameter
* Fix cascade issue for stocklist API
* Add relationship filters to the StockItemFilter
* Fix filtering by 'status' and 'allocated'
* Refactor 'customer' and 'expired' filters
* Cleanup
* Adds unit test for top-level stock location filtering
* Add Date input for table filter
* Update filters.js
* Update filters.js
* Expiry date filter on stock item
* JS whitespace
* Timezone from JS
* Move to timestamp timezoned
* Revert to YYYY-MM-DD iso format
* Remove setting/ getFilterSettings from addTableFilter
* 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