2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-05-06 23:38:48 +00:00

968 Commits

Author SHA1 Message Date
Oliver
3869d98b32
Disable filter controls for part parameter table (#4297) 2023-02-03 07:14:52 +11:00
Oliver
eccd3be150
Client side currency conversion (#4293)
* Automatically update exchange rates when base currency is updated

* Adds API endpoint with currency exchange information

* Add unit testing for new endpoint

* Implement javascript code for client-side conversion

* Adds helper function for calculating total price of a dataset

* javascript cleanup

* Add functionality to sales order tables

* JS linting

* Update API version

* Prevent auto currency updates under certain conditions
2023-02-02 22:47:35 +11:00
Oliver
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
Oliver
50eb81f495
Do not auto-fill target_date for line items (#4275)
* Improve help_text for target_date field on lineitem model(s)

* Don't auto-fill target_date for purchase order line item(s)

* Refactor function to create new sales order line item

* Add migration file

* JS linting
2023-01-29 14:24:38 +11:00
Matthias Mair
8df5649b6f
[FR] Add API endpoint to activate plugins (#4186)
* make plugin urls def cleaner

* rename plugin managment endpoints

* [FR] Add API endpoint to activate plugins
Fixes #4182

* fix for api url change

* bump API version
2023-01-26 07:05:09 +11:00
Matthias Mair
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
Matthias Mair
428e939b1d
[FR] Add "priority" field to BuildOrder (#4225)
* [FR] Add "priority" field to BuildOrder
Fixes #3059

* Add priority to the frontend

* add field to serializer

* bump version
2023-01-25 09:37:05 +11:00
bloemp
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
bloemp
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
bloemp
2a6440843f
Make sure that print label dialog has a submit button. (#4240)
Steps to reproduce problem:
Go to a screen that has a modal without a submit button like "Show QR code" of the Sublocation overview.
Close the QR code modal and after that go to the "Print label" option.
It will no longer show a submit button.
2023-01-25 09:30:47 +11:00
bloemp
49630e295d
Initialize target date for new PO line and SO line (#4170)
* Initialize date for new PO line or SO line

Set new PO/SO line initial date to that of the PO/SO it belongs to.

* Changed date formatting to render_date  template tag

* Reverted the change to format the date with the render_date template tag
2023-01-10 09:07:54 +11:00
Matthias Mair
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
Bben
6a0efb0365
Add Date input for table filter (#4067)
* 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
2023-01-05 06:48:16 +11:00
Oliver
a69c524cd8
Add test description field (#4137) 2023-01-03 12:25:09 +11:00
Oliver
ab4e2aa8bb
Part stocktake (#4069)
* Remove stat context variables

* Revert "Remove stat context variables"

This reverts commit 0989c308d0cea9b9405a1338d257b542c6d33d73.

* 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
Oliver
717a6ba5d2
Parameters table fix (#4120)
* Account for paginated or unpaginated results

* Fix data loading when paginated

- Server-side paginated data needs to be provided in the correct format
- Look at how the original data were provided by the server
- Perform a single data load operation at the end
2022-12-30 23:08:32 +11:00
Oliver
bc6b232d7c
Clean extra non-printable chars (#4110)
- \x00 (null character)
- \x7F (DEL character)
2022-12-26 23:49:55 +11:00
Oliver
17b0399d26
Serial number autofill (#4091)
* Add global setting to control seiral number auto-fill

* Auto fill serial number field
2022-12-21 22:09:21 +11:00
Oliver
0e8563ebee
Control build allocation of optional BOM items (#4090)
* Control build allocation of optional BOM items

- User can specify in form whether optional items are allocated
- Default = False

* Updated unit test
2022-12-21 21:22:59 +11:00
Oliver
cd29ddaf12
Tweak how "submit" button gets hidden (#4025) 2022-12-07 23:34:33 +11:00
Maksim Stojkovic
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
Oliver
eb630a343b
Improve price range rendering for BOM table footer (#4005) 2022-11-29 12:59:09 +11:00
Oliver
aa9836e88e
Make part variant table columns sortable (#4004)
(cherry picked from commit f71081ccb5b34d9b8f2e7c986300d6e1bda23b6d)
2022-11-29 12:58:59 +11:00
Oliver
7e21e77c5f
Add ability to filter location and category tables by "structural" status (#4000) 2022-11-28 20:13:54 +11:00
Oliver
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
Oliver
1058a7c490
Simple formatting fix for BOM table (#3984) 2022-11-22 10:00:51 +11:00
Miklós Márton
0716238f3b
Implement structural stock locations (#3949)
* Implement structural stock locations

* Bumped API version
2022-11-19 22:24:18 +11:00
Oliver
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
Miklós Márton
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
Oliver
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
Oliver
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 cb26003b92536f67fba640d84aa2a6596d18b4e0)

* 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
Miklós Márton
8ceb1af3c3
Add support for recursively delete the stock locations (#3926) 2022-11-14 08:07:16 +11:00
Oliver
57a20be5c3
Remove client-side length validation in form inputs (#3911)
* Remove client-side length validation in form inputs

- Let the server throw an error (so the user sees it)

* Update instances of models.URLField to InvenTreeURLField
2022-11-10 12:51:15 +11:00
Matthias Mair
fb77158496
Add news reader (#3445)
* add model for feed entries

* add task to update feed entries

* Add API routes

* Fix name in model

* rename model

* fix read endpoint

* reduce duplication in NewsFeed API endpoints

* reduce duplicated code

* add ui elements to index

* add missing migrations

* add ressource route

* add new model to admin

* reorder fields

* format timestamp

* make title linked

* reduce migrations to 1

* fix merge

* fix js style

* add model to ruleset
2022-11-10 12:20:06 +11:00
Miklós Márton
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
Oliver
1691f45578
Order editing updates (#3902)
* Add extra setting to guard whether purchase order items can be edited "after the fact"

* Improvements for "extra" purchase order line table

* Similar changes for sales order table

* Improvements for image download helper

(cherry picked from commit 43b0d3ca55fdcf27ada39ccfca0370029e354da7)
2022-11-07 13:56:50 +11:00
Oliver
c7a2def353
Allow editing of extra line items in order table (#3888)
* Allow editing of extra line items in order table

* Allow addition of extra line items even if order is not "pending"

* Allow addition and editing of extra line items for sales orders

* javascript linting
2022-11-02 07:32:14 +11:00
Oliver
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
Oliver
5922d9fbff
Fix mode switching for part category table (#3881)
* Fix mode switching for part category table

* Fix for StockLocation table
2022-10-30 15:04:48 +11:00
Oliver
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
Oliver
13ef7d6910
Enable build order search in quick-search window (#3856)
* Add user setting to enable search preview for build orders

* Add search results entry
2022-10-26 09:57:30 +11:00
Oliver
fe56a046cc
Fix bug which prevented loading of test results (#3855) 2022-10-26 09:57:22 +11:00
Oliver
2843799912
Fix decimal rendering in progress bars (#3849) 2022-10-25 10:58:18 +11:00
Oliver
c120de90ae
Build table improvements (#3833)
* Add extra columns to build order table

* Optimize build table update

* Improve loading speed of 'test results' in build output table
2022-10-22 18:56:23 +11:00
Oliver
9d39d5b00f
Improve redraw speed of build allocation table (#3831)
- Reload table data in one go, rather than one row at a time
- Reduces redraw time (in one example) from ~4s to ~0.05s
2022-10-22 14:16:55 +11:00
Oliver
121d68aa87
Bom table load fix (#3826)
* Optimize loading of BOM table

- Do not use updateByUniqueId (inefficient!)
- Instead, process and reload the entire table

* Optimize part parameter table

* Revert testing change

* javascript linting
2022-10-21 17:05:10 +11:00
Oliver
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
Oliver
193b69eeb5
Adjust display of extra "add bom item" button at bottom of BOM table (#3773) 2022-10-12 16:34:57 +11:00
Oliver
1c6eb8096f
Display build output status code (#3771)
* Display build output status code

* JS linting
2022-10-12 09:23:41 +11:00
Oliver
5d6423fb64
UI fixes for barcode actions (#3751)
* Fix "scan items into location" dialog function

* More barcode fixes
2022-10-07 00:18:38 +11:00