mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Merge pull request #2193 from matmair/matmair/issue2181
Add missing part import fields
This commit is contained in:
commit
2130b02e7f
@ -42,11 +42,12 @@ from common.files import FileManager
|
|||||||
from common.views import FileManagementFormView, FileManagementAjaxView
|
from common.views import FileManagementFormView, FileManagementAjaxView
|
||||||
from common.forms import UploadFileForm, MatchFieldForm
|
from common.forms import UploadFileForm, MatchFieldForm
|
||||||
|
|
||||||
from stock.models import StockLocation
|
from stock.models import StockItem, StockLocation
|
||||||
|
|
||||||
import common.settings as inventree_settings
|
import common.settings as inventree_settings
|
||||||
|
|
||||||
from . import forms as part_forms
|
from . import forms as part_forms
|
||||||
|
from . import settings as part_settings
|
||||||
from .bom import MakeBomTemplate, ExportBom, IsValidBOMFormat
|
from .bom import MakeBomTemplate, ExportBom, IsValidBOMFormat
|
||||||
from order.models import PurchaseOrderLineItem
|
from order.models import PurchaseOrderLineItem
|
||||||
|
|
||||||
@ -245,6 +246,7 @@ class PartImport(FileManagementFormView):
|
|||||||
'Category',
|
'Category',
|
||||||
'default_location',
|
'default_location',
|
||||||
'default_supplier',
|
'default_supplier',
|
||||||
|
'variant_of',
|
||||||
]
|
]
|
||||||
|
|
||||||
OPTIONAL_HEADERS = [
|
OPTIONAL_HEADERS = [
|
||||||
@ -256,6 +258,17 @@ class PartImport(FileManagementFormView):
|
|||||||
'minimum_stock',
|
'minimum_stock',
|
||||||
'Units',
|
'Units',
|
||||||
'Notes',
|
'Notes',
|
||||||
|
'Active',
|
||||||
|
'base_cost',
|
||||||
|
'Multiple',
|
||||||
|
'Assembly',
|
||||||
|
'Component',
|
||||||
|
'is_template',
|
||||||
|
'Purchaseable',
|
||||||
|
'Salable',
|
||||||
|
'Trackable',
|
||||||
|
'Virtual',
|
||||||
|
'Stock',
|
||||||
]
|
]
|
||||||
|
|
||||||
name = 'part'
|
name = 'part'
|
||||||
@ -284,6 +297,18 @@ class PartImport(FileManagementFormView):
|
|||||||
'category': 'category',
|
'category': 'category',
|
||||||
'default_location': 'default_location',
|
'default_location': 'default_location',
|
||||||
'default_supplier': 'default_supplier',
|
'default_supplier': 'default_supplier',
|
||||||
|
'variant_of': 'variant_of',
|
||||||
|
'active': 'active',
|
||||||
|
'base_cost': 'base_cost',
|
||||||
|
'multiple': 'multiple',
|
||||||
|
'assembly': 'assembly',
|
||||||
|
'component': 'component',
|
||||||
|
'is_template': 'is_template',
|
||||||
|
'purchaseable': 'purchaseable',
|
||||||
|
'salable': 'salable',
|
||||||
|
'trackable': 'trackable',
|
||||||
|
'virtual': 'virtual',
|
||||||
|
'stock': 'stock',
|
||||||
}
|
}
|
||||||
file_manager_class = PartFileManager
|
file_manager_class = PartFileManager
|
||||||
|
|
||||||
@ -299,6 +324,8 @@ class PartImport(FileManagementFormView):
|
|||||||
self.matches['default_location'] = ['name__contains']
|
self.matches['default_location'] = ['name__contains']
|
||||||
self.allowed_items['default_supplier'] = SupplierPart.objects.all()
|
self.allowed_items['default_supplier'] = SupplierPart.objects.all()
|
||||||
self.matches['default_supplier'] = ['SKU__contains']
|
self.matches['default_supplier'] = ['SKU__contains']
|
||||||
|
self.allowed_items['variant_of'] = Part.objects.all()
|
||||||
|
self.matches['variant_of'] = ['name__contains']
|
||||||
|
|
||||||
# setup
|
# setup
|
||||||
self.file_manager.setup()
|
self.file_manager.setup()
|
||||||
@ -364,9 +391,29 @@ class PartImport(FileManagementFormView):
|
|||||||
category=optional_matches['Category'],
|
category=optional_matches['Category'],
|
||||||
default_location=optional_matches['default_location'],
|
default_location=optional_matches['default_location'],
|
||||||
default_supplier=optional_matches['default_supplier'],
|
default_supplier=optional_matches['default_supplier'],
|
||||||
|
variant_of=optional_matches['variant_of'],
|
||||||
|
active=str2bool(part_data.get('active', True)),
|
||||||
|
base_cost=part_data.get('base_cost', 0),
|
||||||
|
multiple=part_data.get('multiple', 1),
|
||||||
|
assembly=str2bool(part_data.get('assembly', part_settings.part_assembly_default())),
|
||||||
|
component=str2bool(part_data.get('component', part_settings.part_component_default())),
|
||||||
|
is_template=str2bool(part_data.get('is_template', part_settings.part_template_default())),
|
||||||
|
purchaseable=str2bool(part_data.get('purchaseable', part_settings.part_purchaseable_default())),
|
||||||
|
salable=str2bool(part_data.get('salable', part_settings.part_salable_default())),
|
||||||
|
trackable=str2bool(part_data.get('trackable', part_settings.part_trackable_default())),
|
||||||
|
virtual=str2bool(part_data.get('virtual', part_settings.part_virtual_default())),
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
new_part.save()
|
new_part.save()
|
||||||
|
|
||||||
|
# add stock item if set
|
||||||
|
if part_data.get('stock', None):
|
||||||
|
stock = StockItem(
|
||||||
|
part=new_part,
|
||||||
|
location=new_part.default_location,
|
||||||
|
quantity=int(part_data.get('stock', 1)),
|
||||||
|
)
|
||||||
|
stock.save()
|
||||||
import_done += 1
|
import_done += 1
|
||||||
except ValidationError as _e:
|
except ValidationError as _e:
|
||||||
import_error.append(', '.join(set(_e.messages)))
|
import_error.append(', '.join(set(_e.messages)))
|
||||||
|
Loading…
Reference in New Issue
Block a user