Go to file
Oliver 6ba777d363
Build Order Updates (#4855)
* 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
2023-06-13 20:18:32 +10:00
.devcontainer Docs/devcontainer (#4787) 2023-05-12 17:13:48 +10:00
.devops Add azure pipelines (#4453) 2023-04-03 16:55:27 +10:00
.github Add SBOM to container (#5017) 2023-06-11 23:37:03 +10:00
.vscode Docs/devcontainer (#4787) 2023-05-12 17:13:48 +10:00
ci Fix common spelling mistakes (#4956) 2023-06-04 00:04:52 +10:00
contrib Add more version information (#5014) 2023-06-12 00:32:03 +10:00
deploy fix endline 2022-05-20 13:35:07 +02:00
docker Fix common spelling mistakes (#4956) 2023-06-04 00:04:52 +10:00
docs Build Order Updates (#4855) 2023-06-13 20:18:32 +10:00
images/logo Export large version of the logo 2020-05-12 00:06:26 +10:00
InvenTree Build Order Updates (#4855) 2023-06-13 20:18:32 +10:00
.djlintrc Replace mklint with djlint (#4746) 2023-05-02 20:03:52 +10:00
.eslintrc.yml Fix JS linting workflow (#4915) 2023-05-30 22:55:53 +10:00
.gitattributes fix endline 2022-05-20 13:35:07 +02:00
.gitignore Fix/settings bugs and added model SettingKeyType typing (#4944) 2023-06-01 23:53:06 +10:00
.pkgr.yml Add more version information (#5014) 2023-06-12 00:32:03 +10:00
.pre-commit-config.yaml Fix common spelling mistakes (#4956) 2023-06-04 00:04:52 +10:00
backportrc.json Add workflow for backporting PRs (#4912) 2023-05-28 18:55:06 +10:00
CONTRIBUTING.md Improve devdocs (#4813) 2023-06-09 10:16:30 +10:00
crowdin.yml L10 merge (#1595) 2021-05-18 19:20:24 +10:00
docker-compose.yml Fix common spelling mistakes (#4956) 2023-06-04 00:04:52 +10:00
docker.dev.env update INVENTREE_LOG_LEVEL param (#4058) 2022-12-14 07:17:24 +11:00
Dockerfile Docker: Add pinwheels.org repo for armv7 architecture (#4598) 2023-04-11 15:23:36 +10:00
LICENSE Update LICENSE 2022-02-21 22:31:10 +11:00
package-lock.json Fix JS linting workflow (#4915) 2023-05-30 22:55:53 +10:00
package.json Fix JS linting workflow (#4915) 2023-05-30 22:55:53 +10:00
Procfile Improve cli experience (#4881) 2023-05-24 16:34:36 +10:00
README.md Add openssf badge (#4558) 2023-06-04 00:47:06 +10:00
readthedocs.yml Documentation integration (#4653) 2023-04-22 22:40:29 +10:00
RELEASE.md Documentation integration (#4653) 2023-04-22 22:40:29 +10:00
requirements-dev.in Slow tests (#4435) 2023-03-02 13:51:52 +11:00
requirements-dev.txt Bump cryptography from 40.0.1 to 41.0.0 (#4955) 2023-06-05 19:27:27 +10:00
requirements.in [FR] Add Feature flags (#4982) 2023-06-12 13:13:53 +10:00
requirements.txt [FR] Add Feature flags (#4982) 2023-06-12 13:13:53 +10:00
runtime.txt Add package-based install method (#3743) 2022-10-16 10:14:18 +11:00
SECURITY.md Spelling fix: dates -> days (#3193) 2022-06-14 10:07:48 +10:00
setup.cfg Code style improvements (#4683) 2023-04-28 20:49:53 +10:00
tasks.py Fix common spelling mistakes (#4956) 2023-06-04 00:04:52 +10:00

InvenTree logo

InvenTree

Open Source Inventory Management System

License: MITGitHub tag (latest SemVer) CI Documentation Status Docker Build OpenSSF Best Practices

Coveralls Crowdin GitHub commit activity Docker Pulls

GitHub Org's stars Twitter Follow Subreddit subscribers

View Demo · Documentation · Report Bug · Request Feature

🌟 About the Project

InvenTree is an open-source Inventory Management System which provides powerful low-level stock control and part tracking. The core of the InvenTree system is a Python/Django database backend which provides an admin interface (web-based) and a REST API for interaction with external interfaces and applications.

InvenTree is designed to be lightweight and easy to use for SME or hobbyist applications, where many existing stock management solutions are bloated and cumbersome to use. Updating stock is a single-action process and does not require a complex system of work orders or stock transactions.

Powerful business logic works in the background to ensure that stock tracking history is maintained, and users have ready access to stock level information.

🎯 Features

  • Organize Parts and BOMs
  • Manage Suppliers
  • Instant Stock Knowledge
  • Extend and Customize to fit your usage

🧭 Roadmap

  • Plugins
  • Improved Importers
  • Custom Workflow Processes

🛠️ Integration

InvenTree is designed to be extensible, and provides multiple options for integration with external applications or addition of custom plugins:

👾 Tech Stack

Server
Database
Client
DevOps

🧰 Getting Started

Refer to the getting started guide for installation and setup instructions.

📱 Mobile App

InvenTree is supported by a companion mobile app which allows users access to stock control information and functionality.

🚋 Deploy

There are several options to deploy InvenTree.

Single line install - read the docs for supported distros and details about the function:

wget -qO install.sh https://get.inventree.org && bash install.sh

👋 Contributing

Contributions are welcomed and encouraged. Please help to make this project even better! Refer to the contribution page.

📜 Translation

Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged.

To contribute to the translation effort, navigate to the InvenTree crowdin project, create a free account, and start making translations suggestions for your language of choice!

💸 Sponsor

If you use InvenTree and find it to be useful, please consider making a donation toward its continued development.

Donate via PayPal

💎 Acknowledgements

We would like to acknowledge a few special projects:

Find a full list of used third-party libraries in our documentation.

This project is supported by:

⚠️ License

Distributed under the MIT License. See LICENSE.txt for more information.