Oliver Walters
3eb3c43e5c
Change foreign keys to TreeForeignKey
2019-09-08 19:19:39 +10:00
Oliver Walters
678157aac4
Update StockLocation and PartCategory models
...
- Use the MPTT functionality once more
2019-09-08 19:13:13 +10:00
Oliver Walters
13270617b9
Ensure PartParameterTemplate name is unique
2019-09-07 19:43:41 +10:00
Oliver Walters
37d9c59a0e
Add API endpoint for validating a BOM item
2019-09-05 19:29:51 +10:00
Oliver Walters
0508c2dcaf
Use the hash for each line item to calculate the total BOM hash
2019-09-05 13:10:26 +10:00
Oliver Walters
7671eb2b22
Add a checksum field to the bom line item
2019-09-05 12:58:11 +10:00
Oliver Walters
43967e302b
Add ablity to serialize an existing quantity of stock
...
- Do not have to serialize all the stock
- Add tests
- Add function to copy entire stock transaction history
2019-08-28 21:12:16 +10:00
Oliver Walters
d5ad53c788
Add docstring
2019-08-28 19:44:46 +10:00
Oliver Walters
f94be40857
Style fixes
2019-08-28 19:44:02 +10:00
Oliver Walters
c68c79ea43
Create view / form / URL for PartParameter creation
2019-08-20 14:14:21 +10:00
Oliver Walters
db834802e3
Add uniqueness check for PartParameterTemplate name field
...
- Case insensitive
2019-08-20 13:08:06 +10:00
Oliver Walters
a228b38e5d
Fix parameter lookup
2019-08-20 13:03:36 +10:00
Oliver Walters
e6819b5396
Change model - add PartParameterTemplate
2019-08-20 13:02:00 +10:00
Oliver Walters
6393ddad53
Add param tab to Part detail view
2019-08-20 12:44:00 +10:00
Oliver Walters
2f6357b136
Add PartParameter table
2019-08-20 12:31:43 +10:00
Oliver Walters
3dca7ba353
Include supplier information in BOM
2019-08-07 09:12:53 +10:00
Oliver Walters
0a328687a5
BOM hash includes reference fields
2019-08-02 11:11:28 +10:00
Oliver Walters
482a5dae4b
Save the selected BOM data
2019-07-10 12:27:19 +10:00
Oliver Walters
ff5af8f217
Add a button to create a new part if necessary
2019-07-07 11:56:44 +10:00
Oliver Walters
bd30ac037b
Generate a list of allowed BOM items and pass to the form template
2019-07-07 11:22:01 +10:00
Oliver Walters
b6a6e2dae7
Change the manner in which active parts are filtered for BOM
...
- Prevented BOM from displaying for an inactive part
- Now manually filter the queryset in the form view
2019-06-28 10:00:23 +10:00
Oliver Walters
3085db44af
Add 'reference' field to BOM item model
2019-06-27 21:44:40 +10:00
Oliver Walters
d6fcf85cd2
Set part category for multiple parts at once
2019-06-25 19:15:39 +10:00
Oliver Walters
a5306ec81b
Add 'revision' field to part
...
- e.g. different versions of a product
- Can keep old versions in database and mark as inactive
2019-06-20 21:46:16 +10:00
Oliver Walters
8328e7e13c
Improve uniqueness checking for Part
2019-06-20 21:37:25 +10:00
Oliver Walters
c9c851bead
Add 'virtual' part flag
2019-06-18 18:34:07 +10:00
Oliver Walters
16b6ae8d61
Fixed up some stupid recursion on the Tree model template
2019-06-18 00:59:54 +10:00
Oliver Walters
642660d76e
Improved speed of stock tree
2019-06-18 00:09:42 +10:00
Oliver Walters
037dc6a0d6
Reduced tree time with some better queries
2019-06-17 23:52:49 +10:00
Oliver Walters
bc05146e72
First pass at 'order parts' fom
...
- Select parts in modal form window
2019-06-11 23:37:32 +10:00
Oliver Walters
8e82488f70
Display 'net stock' value on front page
2019-06-11 21:58:20 +10:00
Oliver Walters
3954b33fb7
Use 'on_order' count in calculation for parts we need to order
2019-06-10 23:05:14 +10:00
Oliver Walters
b8bcc5ce0c
Separate display of open and closed purchase orders (per part)
2019-06-10 22:31:19 +10:00
Oliver Walters
9efdd836f4
Tweak the 'on_order' calculation
2019-06-10 21:56:50 +10:00
Oliver Walters
31ad31365a
Calculate parts on order for a Part / SupplierPart
2019-06-07 08:37:25 +10:00
Oliver Walters
67248ec4dd
List purchase orders for a given part
2019-06-05 21:47:22 +10:00
Oliver Walters
f731c45ce8
Replace other choice fields with commonized status code
2019-06-04 23:38:52 +10:00
Oliver Walters
219c438b82
Part name uniqueness is case insensitive
2019-06-02 20:37:59 +10:00
Oliver Walters
ba26acd487
Rename some fields
...
- Oops didn't think that through, gotta go through and fix the data now...
2019-06-02 19:46:30 +10:00
Oliver Walters
91a5a7f051
Simplify part model
...
- Remove 'varian't or ''revision' field
- Part name must be unique across database
2019-05-26 12:16:57 +10:00
Oliver Walters
41eb195940
Thanks, PEP
2019-05-26 00:42:40 +10:00
Oliver Walters
2138977b07
Include template attachments in attachment count
2019-05-26 00:39:36 +10:00
Oliver Walters
7881a67db4
Calculate stock based on variant stock if part is a template
2019-05-26 00:01:01 +10:00
Oliver Walters
c45a506a10
Rename field part.has_variants to part.is_template
2019-05-25 23:58:31 +10:00
Oliver Walters
bc778c1451
Prevent a Part from both having variants and being a variant of something else
2019-05-25 22:43:47 +10:00
Oliver Walters
1a2fb9e170
Add 'has_variants' and 'variant_of' field for Part
...
- StockItem cannot point to a part which is a template part
2019-05-25 22:27:36 +10:00
Oliver Walters
ecfde46838
Fix error in BomItem creation
2019-05-25 21:57:59 +10:00
Oliver Walters
d386c2a6f9
Include total stock in PartBrief serializer
2019-05-23 21:51:27 +10:00
Oliver Walters
d1dfad591d
Pepperoni
2019-05-21 15:38:22 +10:00
Oliver Walters
988a35d237
Serialize BOMItem pricing information
...
- Account for quantity
- Prefetch required items
2019-05-21 15:15:54 +10:00
Oliver Walters
2817e6ca31
Added further part pricing
2019-05-21 14:08:40 +10:00
Oliver Walters
9d5b938ced
Don't serialize 'available_stock' in PartSerializer
2019-05-21 07:57:44 +10:00
Oliver Walters
ca9d6e6e25
PEP fixes
2019-05-21 00:54:48 +10:00
Oliver Walters
72aba30e81
More hungry fetching
2019-05-21 00:16:00 +10:00
Oliver Walters
157919f47a
More prefetching
...
-
2019-05-21 00:06:57 +10:00
Oliver Walters
6ae48d07c4
Cleanup pricing algorithms
2019-05-20 23:53:39 +10:00
Oliver Walters
d15b09a5f4
Don't serialize pricing
...
- Saves MANY queries and provides drastic speedup
2019-05-20 23:03:19 +10:00
Oliver Walters
18ff80312b
Fixes
2019-05-20 22:53:01 +10:00
Oliver Walters
ee2ddbf512
Reduce some database queries by using aggregate Sum
2019-05-20 21:47:30 +10:00
Oliver Walters
54ccf6c7b3
PEP
2019-05-18 23:09:04 +10:00
Oliver Walters
b64a29b897
Display build pricing information
2019-05-18 23:09:00 +10:00
Oliver Walters
2b098942b0
Fix pricing bug
...
- Include BOM item pricing in API
2019-05-18 23:08:56 +10:00
Oliver Walters
2a1fd2b03b
More complex pricing calculations
...
- Calculate BOM price for a part
- Calculate total pricing for a part (build or purchase)
- Display pricing information in BOM table
2019-05-18 23:08:51 +10:00
Oliver Walters
cdc55bb5d3
PEP fixes
2019-05-18 23:08:42 +10:00
Oliver Walters
a3d1591929
Display part pricing in Part view
...
- Calculate min_price and max_price based on provided supplier information
2019-05-18 23:08:38 +10:00
Oliver Walters
0cfb243eb3
Move SupplierPart and SupplierPriceBreak to the 'Company' app
...
- https://docs.djangoproject.com/en/2.2/ref/models/options/#django.db.models.Options.db_table
- https://stackoverflow.com/questions/3519143/django-how-to-specify-a-database-for-a-model
- And others, presumably
2019-05-18 23:08:34 +10:00
Oliver Walters
5043c354b1
Set default value for SupplierPriceBreak
...
Edit or Delete a SupplierPriceBreak
2019-05-18 23:08:30 +10:00
Oliver Walters
1163f60b23
Return price breaks in the correct order
2019-05-18 23:08:21 +10:00
Oliver Walters
a3cd54875c
Update validator for supplier price break
2019-05-18 23:08:17 +10:00
Oliver Walters
92632b2ef7
PartAttachment attachment file is actually required!
2019-05-18 23:08:13 +10:00
Oliver Walters
613c96e093
Part attachment comment field is required
2019-05-18 23:08:04 +10:00
Oliver Walters
a2dbdfe794
Remove 'single_price' field from supplier part
...
- Instead we will rely entirely on the SupplierPriceBreak model
2019-05-18 23:07:58 +10:00
Oliver Walters
fae44c3002
Bug fix for part deep-copy
...
- Don't copy an image if an image doesn't exist
2019-05-15 09:21:31 +10:00
Oliver Walters
c6331255de
Fixes
2019-05-15 07:23:55 +10:00
Oliver Walters
68ae38a7d7
Calculate total quantity required for a build (including overages)
2019-05-15 00:36:02 +10:00
Oliver Walters
a80c11f3ce
Add function to infer default_supplier for a Part
2019-05-15 00:22:10 +10:00
Oliver Walters
f6baf5d2ae
Add 'overage' field to BOM item
...
- Accepts absolute or percentage numbers
- Default = blank
- Now with custom validator! (for limited time only, limit one per customer)
2019-05-15 00:16:34 +10:00
Oliver Walters
0ffe2666b3
Added some missing help text
2019-05-14 23:36:22 +10:00
Oliver Walters
0842bd5833
Add 'default_keywords' field to a category
2019-05-14 17:30:24 +10:00
Oliver Walters
02033c2157
Add 'keywords' field to Part
...
- Shows up in search results
2019-05-14 17:23:20 +10:00
Oliver Walters
e1e5cde60f
Renamed copyBomFrom to deepCopy
...
- Allows passing of more data (in the future) e.g. tags, etc
- Performs copy of the part image
2019-05-13 21:54:52 +10:00
Oliver Walters
00f7ece6b4
PEP fixes
2019-05-13 21:42:05 +10:00
Oliver Walters
2408318eae
Add new view to duplicate a part
...
- Allows 'deep_copy' (copies all BOM items for the duplicated part)
2019-05-13 21:41:32 +10:00
Oliver Walters
42bbf95c42
Include the sub_part ID in the BOM hash
2019-05-13 18:09:59 +10:00
Oliver Walters
e3a9a70678
Add a form/view/etc for BOM validation
2019-05-12 16:27:50 +10:00
Oliver Walters
9149619f38
Make BOM tab badge red if the BOM is not validated
2019-05-12 13:12:04 +10:00
Oliver Walters
06deccca1c
Rename check_bom to validate_bom
2019-05-12 13:01:41 +10:00
Oliver Walters
985986a844
New functions for Part model
...
- is_bom_valid() - Tests if bom checksums match
- check_bom() function to mark the BOM as valid
2019-05-12 12:53:56 +10:00
Oliver Walters
2431ba2a04
Add new fields to Part model
...
- bom_checksum (stores checksum calculated when the BOM was checked)
- bom_checked_by (User who checked the BOM)
- bom_checked_date (When the BOM was last checked)
2019-05-12 12:47:28 +10:00
Oliver Walters
4c3032e2f0
Add function to calculate BOM hash
...
- Uses hashlib.md5
2019-05-12 12:42:20 +10:00
Oliver Walters
82fb43e1e3
PEP
2019-05-12 12:29:16 +10:00
Oliver Walters
1d36ea3e2e
Add a 'full_name' field for Part
...
- Combines IPN | Name | Variant
- Use this to display in most views
2019-05-12 12:16:04 +10:00
Oliver Walters
84d2fce8ca
Add a 'confirm_creation' input if there are possible part matches
2019-05-11 12:29:02 +10:00
Oliver Walters
d9c0d2f5e3
Update PartCreate form
...
- Display list of close matches
- Invalidate form (for now)
2019-05-11 11:55:17 +10:00
Oliver Walters
1b8ca34ddb
Added fuzzy search function for matching against part names
2019-05-11 10:36:24 +10:00
Oliver Walters
7f1cdaf73f
PEP
2019-05-10 22:52:45 +10:00
Oliver Walters
8ac180a9e3
Add validator to part name
...
- Check for 'illegal' characters
- Mostly just as a test for validators!
2019-05-10 22:52:06 +10:00
Oliver Walters
f76f1f54ae
Add 'variant' field to Part model
...
- Display 'long_name' which is concatenation of name and variant
2019-05-10 22:17:13 +10:00
Oliver Walters
01778f996e
PEP fixes
2019-05-10 20:12:15 +10:00
Oliver Walters
ba2f565e35
docstring improvements
...
- Added Attribute docstring to all model objects
2019-05-10 20:11:52 +10:00
Oliver
793b4f8063
Merge pull request #288 from SchrodingersGat/tree-badges
...
Tree badges
2019-05-09 23:06:32 +10:00
Oliver Walters
bff0f30b13
Save tree state 'per tree'
...
- Separate save state for Part and Stock tree
2019-05-09 21:41:44 +10:00
Oliver Walters
45223fb607
Display count badges in sidenav tree
...
Uses the 'tags' parameter as according to the docs - https://github.com/jonmiles/bootstrap-treeview
- Part
- Stock
2019-05-09 20:30:23 +10:00
Oliver Walters
1a115104d2
If a part has no bom items, the 'can_build' function now returns zero
2019-05-09 18:35:55 +10:00
Oliver
fa2bf947ab
Merge pull request #267 from SchrodingersGat/bom-img
...
BOM table improvements
2019-05-09 00:42:33 +10:00
Oliver Walters
94ad378b9d
Part and company images return the 'no image found' image if they do not have an image
2019-05-09 00:39:51 +10:00
Oliver Walters
f05e05664b
PEP fix
2019-05-08 23:33:37 +10:00
Oliver Walters
e9c904076f
Added help text for model fields
2019-05-08 23:32:57 +10:00
Oliver Walters
416b5c9820
Include part image URL in Part API
2019-05-08 15:25:28 +10:00
Oliver Walters
b9e5afa768
PEP
2019-05-05 22:35:39 +10:00
Oliver Walters
b85a4d0895
Limit choices for BomItem Part foreignkey fields
...
- Only allow 'active' Parts
2019-05-05 22:34:00 +10:00
Oliver Walters
bbd164407f
Display 'starred' status on the Part information page
2019-05-05 10:54:35 +10:00
Oliver Walters
919f04044b
Enforce uniqueness constraint
2019-05-05 08:48:41 +10:00
Oliver Walters
9919bebaa2
Add PartStart model
...
- Links parts to users
2019-05-05 08:46:23 +10:00
Oliver Walters
e2ced18753
Added some more BomItem tests
2019-05-05 00:00:30 +10:00
Oliver Walters
1f80e8c655
More tests for Part
...
- barcode
- category_path
2019-05-04 23:35:52 +10:00
Oliver Walters
bc7f3f77de
PEPEP
2019-05-04 21:57:43 +10:00
Oliver Walters
67eda51cd2
Add part category tree traversal
...
- If a category doesn't have a default_location, look at the parent category
- And so on and so on
2019-05-04 21:56:18 +10:00
Oliver Walters
71972f4454
Add function to get the default location for a part
...
- If field not specified, look at the part category
2019-05-04 19:06:39 +10:00
Oliver Walters
4ffaad3f1a
Add a default_location to the PartCategory model
...
- If a part does not specify a default location, look at the default location of the category
2019-05-04 19:00:11 +10:00
Oliver Walters
9aa1a70f18
QR code improvements
...
- Display QR codes as links to served images
- The qr_code plugin caches these images in the background
- Make a qr_code template to push out as a modal form
- Create a QRCodeView to simplify display of QR codes
- Add option to launchModalForm() to disable the 'submit' button
Refactored QR code display for
- StockLocation
- StockItem
- Part
2019-05-04 18:46:57 +10:00
Oliver Walters
4af59f0ca9
Fixed part image upload
...
- Image was being saved twice
- Don't call super().post in AjaxUpdateView
- Instead, handle properly
2019-05-04 00:38:17 +10:00
Oliver
6482b54bc9
Merge pull request #205 from SchrodingersGat/qr-codes
...
Qr codes
2019-05-02 21:15:34 +10:00
Oliver Walters
5a234a1070
Added barcode for Part object
2019-05-02 20:57:53 +10:00
Oliver Walters
194a0962f3
PEP fixes
2019-05-02 20:19:08 +10:00
Oliver Walters
38100520df
Add 'to_order' and 'to_build' collapsible panels
2019-05-02 20:18:34 +10:00
Oliver Walters
fbb120da53
Use collapse template in allocation page
2019-05-02 18:53:03 +10:00
Oliver Walters
ad6f4e19b1
Add 'comment' field to part attachment model
2019-05-02 01:06:06 +10:00
Oliver Walters
7c11d917de
Bug fixes
...
- Part creation form was setting a field as HiddenInput() rather than its widget
- Added 'comment' file to FileAttachment model
2019-05-01 09:40:49 +10:00
Oliver Walters
c29827e45a
Add API endpoint and serializer for BuildItem model
2019-04-29 22:59:42 +10:00
Oliver Walters
6326d6d050
Fixed spelling mistake
2019-04-29 22:21:18 +10:00
Oliver Walters
c2a35b6656
Add 'active' field to Part model
2019-04-28 23:00:38 +10:00
Oliver Walters
ba49b080b0
Some small tweaks
2019-04-28 11:46:53 +10:00
Oliver Walters
ed3ae30248
Documentation for Part app
2019-04-27 22:18:07 +10:00
Oliver Walters
95be2755f4
Adjust SupplierPart supplier foreignkey
...
- Limit choices to 'is_supplier'
2019-04-27 13:10:21 +10:00
Oliver Walters
e57a8cdcd1
Fix rendering of BOM table view
...
- Edit and delete rows now works
2019-04-26 23:32:22 +10:00
Oliver Walters
accec07fe9
BOM serializer now validates against model
...
- Need to call instance.clean()
- https://stackoverflow.com/questions/40697648/django-dry-model-form-serializer-validation
2019-04-26 22:36:44 +10:00
Oliver Walters
e6617fef80
reverse URL lookup for BomItem and SupplierPart
...
- created empty test files
2019-04-25 01:05:08 +10:00
Oliver Walters
0bc5617825
Reverse url lookup for Part model
2019-04-25 01:00:01 +10:00
Oliver Walters
f9db3b680d
Reverse lookup for part category URL
...
- Added some test cases for PartCategory model
2019-04-25 00:28:40 +10:00
Oliver
6b05078fd2
Merge pull request #133 from SchrodingersGat/part-files
...
Part files
2019-04-18 00:23:09 +10:00
Oliver Walters
e707eb3a2b
Provide download link for part attachments
...
- Better upload management for attachment files (separated based on part ID)
2019-04-18 00:14:53 +10:00
Oliver Walters
cb7e98aa1c
Add extra BOM export format options
...
- Uses tablib (already used by django-import-export plugin)
- Needs cleanup but works well
- Problem exporting XLSX data (needs work!)
2019-04-17 23:52:15 +10:00
Oliver Walters
19a11eac1a
PEP fixes
2019-04-17 07:49:46 +10:00
Oliver Walters
52c3a63c61
Updated SupplierPriceBreak page
2019-04-17 00:48:01 +10:00
Oliver Walters
150bc1e674
Add API interface for SupplierPriceBreak
2019-04-17 00:35:49 +10:00
Oliver Walters
a3b544e2a4
typo fix
2019-04-17 00:21:11 +10:00
Oliver Walters
5cd837be07
Limit supplierpart part link to purchasable parts only
2019-04-17 00:14:22 +10:00
Oliver Walters
cd0b6a6511
Updated Supplier models
...
- Added cost calculation for supplier part
- Added more validators and help text
2019-04-17 00:09:39 +10:00
Oliver Walters
01bdf2f19b
PEP fixes
2019-04-16 22:32:43 +10:00