Merge pull request #1200 from SchrodingersGat/supplier-part-import

SupplierPart import/export fixes
This commit is contained in:
Oliver 2021-01-03 23:08:05 +11:00 committed by GitHub
commit fe3d4a9867
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 923 additions and 751 deletions

View File

@ -38,7 +38,9 @@ class CompanyAdmin(ImportExportModelAdmin):
class SupplierPartResource(ModelResource):
""" Class for managing SupplierPart data import/export """
"""
Class for managing SupplierPart data import/export
"""
part = Field(attribute='part', widget=widgets.ForeignKeyWidget(Part))
@ -51,7 +53,7 @@ class SupplierPartResource(ModelResource):
class Meta:
model = SupplierPart
skip_unchanged = True
report_skipped = False
report_skipped = True
clean_model_instances = True

View File

@ -0,0 +1,61 @@
# Generated by Django 3.0.7 on 2021-01-03 11:15
import InvenTree.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('part', '0060_merge_20201112_1722'),
('company', '0030_auto_20201112_1112'),
]
operations = [
migrations.AlterField(
model_name='supplierpart',
name='MPN',
field=models.CharField(blank=True, help_text='Manufacturer part number', max_length=100, null=True, verbose_name='MPN'),
),
migrations.AlterField(
model_name='supplierpart',
name='SKU',
field=models.CharField(help_text='Supplier stock keeping unit', max_length=100, verbose_name='SKU'),
),
migrations.AlterField(
model_name='supplierpart',
name='description',
field=models.CharField(blank=True, help_text='Supplier part description', max_length=250, null=True, verbose_name='Description'),
),
migrations.AlterField(
model_name='supplierpart',
name='link',
field=InvenTree.fields.InvenTreeURLField(blank=True, help_text='URL for external supplier part link', null=True, verbose_name='Link'),
),
migrations.AlterField(
model_name='supplierpart',
name='manufacturer',
field=models.ForeignKey(blank=True, help_text='Select manufacturer', limit_choices_to={'is_manufacturer': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='manufactured_parts', to='company.Company', verbose_name='Manufacturer'),
),
migrations.AlterField(
model_name='supplierpart',
name='note',
field=models.CharField(blank=True, help_text='Notes', max_length=100, null=True, verbose_name='Note'),
),
migrations.AlterField(
model_name='supplierpart',
name='packaging',
field=models.CharField(blank=True, help_text='Part packaging', max_length=50, null=True),
),
migrations.AlterField(
model_name='supplierpart',
name='part',
field=models.ForeignKey(help_text='Select part', limit_choices_to={'purchaseable': True}, on_delete=django.db.models.deletion.CASCADE, related_name='supplier_parts', to='part.Part', verbose_name='Base Part'),
),
migrations.AlterField(
model_name='supplierpart',
name='supplier',
field=models.ForeignKey(help_text='Select supplier', limit_choices_to={'is_supplier': True}, on_delete=django.db.models.deletion.CASCADE, related_name='supplied_parts', to='company.Company', verbose_name='Supplier'),
),
]

View File

@ -313,7 +313,6 @@ class SupplierPart(models.Model):
verbose_name=_('Base Part'),
limit_choices_to={
'purchaseable': True,
'is_template': False,
},
help_text=_('Select part'),
)
@ -321,31 +320,55 @@ class SupplierPart(models.Model):
supplier = models.ForeignKey(Company, on_delete=models.CASCADE,
related_name='supplied_parts',
limit_choices_to={'is_supplier': True},
verbose_name=_('Supplier'),
help_text=_('Select supplier'),
)
SKU = models.CharField(max_length=100, help_text=_('Supplier stock keeping unit'))
SKU = models.CharField(
max_length=100,
verbose_name=_('SKU'),
help_text=_('Supplier stock keeping unit')
)
manufacturer = models.ForeignKey(
Company,
on_delete=models.SET_NULL,
related_name='manufactured_parts',
limit_choices_to={'is_manufacturer': True},
limit_choices_to={
'is_manufacturer': True
},
verbose_name=_('Manufacturer'),
help_text=_('Select manufacturer'),
null=True, blank=True
)
MPN = models.CharField(max_length=100, blank=True, help_text=_('Manufacturer part number'))
MPN = models.CharField(
max_length=100, blank=True, null=True,
verbose_name=_('MPN'),
help_text=_('Manufacturer part number')
)
link = InvenTreeURLField(blank=True, help_text=_('URL for external supplier part link'))
link = InvenTreeURLField(
blank=True, null=True,
verbose_name=_('Link'),
help_text=_('URL for external supplier part link')
)
description = models.CharField(max_length=250, blank=True, help_text=_('Supplier part description'))
description = models.CharField(
max_length=250, blank=True, null=True,
verbose_name=_('Description'),
help_text=_('Supplier part description')
)
note = models.CharField(max_length=100, blank=True, help_text=_('Notes'))
note = models.CharField(
max_length=100, blank=True, null=True,
verbose_name=_('Note'),
help_text=_('Notes')
)
base_cost = models.DecimalField(max_digits=10, decimal_places=3, default=0, validators=[MinValueValidator(0)], help_text=_('Minimum charge (e.g. stocking fee)'))
packaging = models.CharField(max_length=50, blank=True, help_text=_('Part packaging'))
packaging = models.CharField(max_length=50, blank=True, null=True, help_text=_('Part packaging'))
multiple = models.PositiveIntegerField(default=1, validators=[MinValueValidator(1)], help_text=('Order multiple'))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff