2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-30 12:36:45 +00:00

98 Commits

Author SHA1 Message Date
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
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
Oliver
33326f6eaf
Update CompleteBuildOrder form (#3702)
- Load required data dynamically via the API
- Hide form fields according to dynamic data
- Show warnings according to dynamic data
2022-09-21 18:19:31 +10:00
Oliver
b886e54709
Build API improvements (#3581)
* Improve build order lookup

* Query efficiency improvements

* Lazy load build allocation table

* API defaults ensure consistent behaviour
2022-08-19 17:16:38 +10:00
Oliver
427404b3ba
Allow builds to be completed without any outputs (#3518)
* Remove form validation error if no build outputs are created

* Remove check before launching build-complete form
2022-08-11 12:46:33 +10:00
Matt Brown
139e059a45
Check for (and reduce) overallocated stock when editing build orders. (#3237)
* Check for (and reduce) overallocated stock when editing build orders.

After a build order is edited, check whether any bom items are now
overallocated to the build, and if they are find appropriate build items to
reduce the quantity of or remove from the build.

Fixes: #3236

* Only trim overallocated stock if requested

Turns the complete with overallocated stock option into a choice, so the
user can reject (default), continue (existing option in the bool), or
now additionally instead choose to have the overallocated stock removed
before the build is completed.

* fix style errors

* Another style fix.

* Add tests for overallocation handling API logic

* Capitalize overallocation options.
2022-08-10 21:37:29 +10:00
Oliver
648faf4ed2
Reference fields (#3267)
* Adds a configurable 'reference pattern' to the IndexingReferenceMixin class

* Expand tests for reference_pattern validator:

- Prevent inclusion of illegal characters
- Prevent multiple groups of hash (#) characters
- Add unit tests

* Validator now checks for valid strftime formatter

* Adds build order reference pattern

* Adds function for creating a valid regex from the supplied pattern

- More unit tests
- Use it to validate BuildOrder reference field

* Refactoring the whole thing again - try using python string.format

* remove datetime-matcher from requirements.txt

* Add some more formatting helper functions

- Construct a regular expression from a format string
- Extract named values from a string, based on a format string

* Fix validator for build order reference field

* Adding unit tests for the new format string functionality

* Adds validation for reference fields

* Require the 'ref' format key as part of a valid reference pattern

* Extend format extraction to allow specification of integer groups

* Remove unused import

* Fix requirements

* Add method for generating the 'next' reference field for a model

* Fix function for generating next BuildOrder reference value

- A function is required as class methods cannot be used
- Simply wraps the existing class method

* Remove BUILDORDER_REFERENCE_REGEX setting

* Add unit test for build order reference field validation

* Adds unit testing for extracting integer values from a reference field

* Fix bugs from previous commit

* Add unit test for generation of default build order reference

* Add data migration for BuildOrder model

- Update reference field with old prefix
- Construct new pattern based on old prefix

* Adds unit test for data migration

- Check that the BuildOrder reference field is updated as expected

* Remove 'BUILDORDER_REFERENCE_PREFIX' setting

* Adds new setting for SalesOrder reference pattern

* Update method by which next reference value is generated

* Improved error handling in api_tester code

* Improve automated generation of order reference fields

- Handle potential errors
- Return previous reference if something goes wrong

* SalesOrder reference has now been updated also

- New reference pattern setting
- Updated default and validator for reference field
- Updated serializer and API
- Added unit tests

* Migrate the "PurchaseOrder" reference field to the new system

* Data migration for SalesOrder and PurchaseOrder reference fields

* Remove PURCHASEORDER_REFERENCE_PREFIX

* Remove references to SALESORDER_REFERENCE_PREFIX

* Re-add maximum value validation

* Bug fixes

* Improve algorithm for generating new reference

- Handle case where most recent reference does not conform to the reference pattern

* Fixes for 'order' unit tests

* Unit test fixes for order app

* More unit test fixes

* More unit test fixing

* Revert behaviour for "extract_int" clipping function

* Unit test value fix

* Prevent build order notification if we are importing records
2022-07-11 00:01:46 +10:00
Oliver
73445b4b79
Add confirmation for "over-allocated" stock when completing BuildOrder (#3272) 2022-06-29 14:59:55 +10:00
Oliver
a066fcc909
Add new global setting to control auto-upload of test reports (#3137)
* Add new global setting to control auto-upload of test reports

* Adds callback to attach a copy of the test report when printing

* Fix for all attachment API endpoints

- The AttachmentMixin must come first!
- User was not being set, as the custom 'perform_create' function was never called

* Remove duplicated UserSerializer

* display uploading user in attachment table

* Add unit test to check the test report is automatically uploaded
2022-06-06 15:20:41 +10:00
Matthias Mair
0c97a50e47
Docstring checks in QC checks (#3089)
* Add pre-commit to the stack

* exclude static

* Add locales to excludes

* fix style errors

* rename pipeline steps

* also wait on precommit

* make template matching simpler

* Use the same code for python setup everywhere

* use step and cache for python setup

* move regular settings up into general envs

* just use full update

* Use invoke instead of static references

* make setup actions more similar

* use python3

* refactor names to be similar

* fix runner version

* fix references

* remove incidential change

* use matrix for os

* Github can't do this right now

* ignore docstyle errors

* Add seperate docstring test

* update flake call

* do not fail on docstring

* refactor setup into workflow

* update reference

* switch to action

* resturcture

* add bash statements

* remove os from cache

* update input checks

* make code cleaner

* fix boolean

* no relative paths

* install wheel by python

* switch to install

* revert back to simple wheel

* refactor import export tests

* move setup keys back to not disturbe tests

* remove docstyle till that is fixed

* update references

* continue on error

* add docstring test

* use relativ action references

* Change step / job docstrings

* update to merge

* reformat comments 1

* fix docstrings 2

* fix docstrings 3

* fix docstrings 4

* fix docstrings 5

* fix docstrings 6

* fix docstrings 7

* fix docstrings 8

* fix docstirns 9

* fix docstrings 10

* docstring adjustments

* update the remaining docstrings

* small docstring changes

* fix function name

* update support files for docstrings

* Add missing args to docstrings

* Remove outdated function

* Add docstrings for the 'build' app

* Make API code cleaner

* add more docstrings for plugin app

* Remove dead code for plugin settings
No idea what that was even intended for

* ignore __init__ files for docstrings

* More docstrings

* Update docstrings for the 'part' directory

* Fixes for related_part functionality

* Fix removed stuff from merge 99676ee

* make more consistent

* Show statistics for docstrings

* add more docstrings

* move specific register statements to make them clearer to understant

* More docstrings for common

* and more docstrings

* and more

* simpler call

* docstrings for notifications

* docstrings for common/tests

* Add docs for common/models

* Revert "move specific register statements to make them clearer to understant"

This reverts commit ca9665462202c2d63f34b4fd920013b1457bbb6d.

* use typing here

* Revert "Make API code cleaner"

This reverts commit 24fb68bd3e1ccfea2ee398c9e18afb01eb340fee.

* docstring updates for the 'users' app

* Add generic Meta info to simple Meta classes

* remove unneeded unique_together statements

* More simple metas

* Remove unnecessary format specifier

* Remove extra json format specifiers

* Add docstrings for the 'plugin' app

* Docstrings for the 'label' app

* Add missing docstrings for the 'report' app

* Fix build test regression

* Fix top-level files

* docstrings for InvenTree/InvenTree

* reduce unneeded code

* add docstrings

* and more docstrings

* more docstrings

* more docstrings for stock

* more docstrings

* docstrings for order/views

* Docstrings for various files in the 'order' app

* Docstrings for order/test_api.py

* Docstrings for order/serializers.py

* Docstrings for order/admin.py

* More docstrings for the order app

* Add docstrings for the 'company' app

* Add unit tests for rebuilding the reference fields

* Prune out some more dead code

* remove more dead code

Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
2022-06-02 01:37:39 +10:00
Oliver
5a0acedce6 Add unit tests for BuildOutputCreate serializer 2022-05-17 13:00:53 +10:00
Matthias
ecccfbd546
Remove encoding header
Fixes #2996
2022-05-15 20:33:00 +02:00
Oliver Walters
bd3d6f47a1 Refactor CancelBuild form 2022-05-04 16:30:46 +10:00
Oliver Walters
75e24635b5 Fix speling errors in translated strings 2022-05-04 09:17:42 +10:00
Matthias
de6507e918
update translation commands 2022-05-01 22:03:49 +02:00
Oliver Walters
6b4592b3dc Display error if stock item is "double allocted" 2022-04-29 01:10:05 +10:00
Oliver Walters
f531e354b9 Allow completion of partially allocated build outputs
- Requires manual acceptance from user
2022-04-28 21:54:38 +10:00
Oliver
4191a043b2 Add "exclude_location" to build order auto-allocation 2022-03-09 14:57:57 +11:00
Oliver
0bb0047fcd Add unit tests for the auto_allocate_stock method 2022-03-04 16:27:50 +11:00
Oliver
434f563a41 Adds API endpoint for "auto allocating" stock items against a build order.
- If stock exists in multiple locations, and the user "does not care" where to take from, simply iterate through and take
2022-03-04 15:26:00 +11:00
Oliver
ab82f07ef1 Bug fix for BuildOutputComplete serializer
- Actually use the provided "location" value!
2022-02-25 15:41:10 +11:00
Oliver
44008f33e2 Refactoring Build model functions
- Determining if a build order is correctly allocated has become more complex
- Complex BOM behaviours (e.g. variants, templates, and substitutes) have made it more difficult!
- Recently, a reference to the defining BomItem object was added to the BuildItem model
- Now, a simpler way is to check allocation against the parent BomItem
- It is much better, but means that a lot of refactoring and testing will be required!
2022-02-25 15:40:49 +11:00
Matthias
7be832cc9b
[BUG] Unable to create build output
Fix if no allocate set
Fixes #2663
2022-02-23 02:01:46 +01:00
Oliver
bc6839d56e Spelling fix 2022-02-17 08:18:15 +11:00
Oliver
2b344f1f25 PEP style fixes 2022-02-15 13:30:14 +11:00
Oliver
07af0902a3 Optionally auto-allocate stock items when creating a new build output 2022-02-15 13:27:14 +11:00
Oliver
24c13b04b6 Extract serial numbers from submitted form data 2022-02-15 13:19:41 +11:00
Oliver
f90a27d01d Adds a new API endpoint for creating build outputs 2022-02-15 12:51:48 +11:00
Oliver
71f9399760 Cleanup 2022-02-10 00:50:21 +11:00
Oliver
0d7b94fbfa Remove old form code which is no longer used 2022-02-10 00:48:06 +11:00
Oliver
96af074365 Adds API endpoint to delete build outputs 2022-02-10 00:46:38 +11:00
Oliver Walters
00d7cf88e8 Throw validation error if no build outputs have been started 2022-02-01 15:58:18 +11:00
Oliver
6aa83796ea PEP fixes 2022-01-09 22:15:59 +11:00
Oliver
da9fa1313c Increased unit testing 2022-01-09 22:14:48 +11:00
Oliver
3e2e9aaf9e Mark serializer fields as not required 2022-01-09 20:10:00 +11:00
Oliver Walters
12b3a5c9cc Validate and save the new serailizer 2022-01-07 11:33:27 +11:00
Oliver Walters
960784644f Adds skeleton for new API endpoint for completing a build order 2022-01-07 10:50:29 +11:00
Oliver
d573668f81 Correctly allow "inherited" BOM items to be allocated to a build order
- Some back-end logic was not running correctly
2021-12-11 01:05:19 +11:00
Oliver
93173ef1ee Merge remote-tracking branch 'inventree/master' into partial-shipment
# Conflicts:
#	InvenTree/order/serializers.py
2021-12-02 23:58:52 +11:00
Matthias
dc65634abc
use mixin on all serializers whos models use ReferenceIndexingMixin 2021-12-01 23:36:21 +01:00
Oliver
da6c723184 Merge branch 'master' into partial-shipment
# Conflicts:
#	InvenTree/order/serializers.py
2021-11-29 22:59:36 +11:00
Oliver
32be39774f PEP fixes 2021-11-28 22:36:47 +11:00
Oliver
0949bac175 serializer fixes 2021-11-28 14:21:09 +11:00
Oliver
6582fd3d04 Add 'link' field to attachment serializer 2021-11-28 12:57:37 +11:00
Oliver
68e2b0850b Merge branch 'master' into partial-shipment
# Conflicts:
#	InvenTree/build/serializers.py
#	InvenTree/order/templates/order/so_sidebar.html
2021-11-26 08:25:51 +11:00
Matthias
d884e62be1
[FR] Confirm to W293
Fixes #2335
2021-11-23 00:28:23 +01:00
Oliver
521ec4f1e6 Merge branch 'master' into partial-shipment
# Conflicts:
#	InvenTree/order/serializers.py
2021-11-18 23:43:36 +11:00
Oliver
7ca36a092e convert remaining serializers 2021-11-18 23:01:19 +11:00
Oliver
bff9f0828a Adds API endpoint to allocate stock items against a SalesOrder
- SalesOrderAllocations are no longer created manually
- API endpoint performs data validation
- Multiple line items can be allocated at once
- Adds unit testing for new API endpoint
2021-10-26 23:51:36 +11:00
Oliver
50a79770e5 Un-comment lines in build.serializers 2021-10-20 23:37:26 +11:00