Renamed 'customer-order' app to 'customer'

- This app should manage more than just orders
- Moved the 'Customer' model into this app
This commit is contained in:
Oliver 2018-04-17 23:39:53 +10:00
parent 53d7fd2c46
commit 8856d7f793
24 changed files with 145 additions and 188 deletions

View File

@ -51,7 +51,7 @@ INSTALLED_APPS = [
'stock.apps.StockConfig',
'supplier.apps.SupplierConfig',
'build.apps.BuildConfig',
'customer_orders.apps.CustomerOrdersConfig'
'customer.apps.CustomerConfig'
]
MIDDLEWARE = [

View File

@ -13,7 +13,7 @@ from supplier.urls import supplier_urls
from build.urls import build_urls
from customer_orders.urls import customer_orders_urls
from customer.urls import customer_orders_urls
from django.conf import settings
from django.conf.urls.static import static

View File

@ -0,0 +1,21 @@
from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from .models import Customer, CustomerOrder, CustomerOrderLine
class CustomerAdmin(ImportExportModelAdmin):
list_display = ('name', 'website', 'contact')
class CustomerOrderAdmin(admin.ModelAdmin):
pass
class CustomerOrderLineAdmin(admin.ModelAdmin):
pass
admin.site.register(Customer, CustomerAdmin)
admin.site.register(CustomerOrder, CustomerOrderAdmin)
admin.site.register(CustomerOrderLine, CustomerOrderLineAdmin)

View File

@ -0,0 +1,5 @@
from django.apps import AppConfig
class CustomerConfig(AppConfig):
name = 'customer'

View File

@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-04-17 13:37
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('part', '0022_auto_20180417_0819'),
]
operations = [
migrations.CreateModel(
name='Customer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, unique=True)),
('description', models.CharField(max_length=500)),
('website', models.URLField(blank=True)),
('address', models.CharField(blank=True, max_length=200)),
('phone', models.CharField(blank=True, max_length=50)),
('email', models.EmailField(blank=True, max_length=254)),
('contact', models.CharField(blank=True, max_length=100)),
('notes', models.CharField(blank=True, max_length=500)),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='CustomerOrder',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('internal_ref', models.CharField(max_length=100, unique=True)),
('customer_ref', models.CharField(blank=True, default=b'', max_length=100)),
('created_date', models.DateField(auto_now_add=True, help_text=b'Date order entered in system')),
('issued_date', models.DateField(blank=True, help_text=b'Date order issued by customer')),
('notes', models.TextField(blank=True, default=b'', help_text=b'Order notes')),
('customer', models.ForeignKey(blank=True, help_text=b'Customer that placed this order', null=True, on_delete=django.db.models.deletion.SET_NULL, to='customer.Customer')),
],
),
migrations.CreateModel(
name='CustomerOrderLine',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('line_number', models.PositiveIntegerField(default=0, help_text=b'Line number')),
('quantity', models.PositiveIntegerField(blank=True, help_text=b'Quantity of part')),
('notes', models.TextField(blank=True, help_text=b'Line notes')),
('customer_order', models.ForeignKey(help_text=b'Order this line belongs to', on_delete=django.db.models.deletion.CASCADE, to='customer.CustomerOrder')),
('part', models.ForeignKey(blank=True, help_text=b'Part', on_delete=django.db.models.deletion.CASCADE, to='part.Part')),
],
),
migrations.AlterUniqueTogether(
name='customerorderline',
unique_together=set([('customer_order', 'line_number')]),
),
]

View File

@ -60,7 +60,10 @@ class CustomerOrderLine(models.Model):
line_number = models.PositiveIntegerField(default=0, help_text="Line number")
# TODO: for now, each line corresponds to some quantity of some part, but in future we might want more flexibility
part = models.ForeignKey(Part, blank=True, help_text="Part")
# Only 'salable' items should be allowed in a CSO
part = models.ForeignKey(Part, blank=True, help_text="Part",
limit_choices_to={'salable' : True}
)
# TODO: should quantity field here somehow related to quantity field of related part? Views will handle this, right?
quantity = models.PositiveIntegerField(blank=True, help_text="Quantity of part")

View File

@ -1,15 +0,0 @@
from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from .models import CustomerOrder, CustomerOrderLine
class CustomerOrderAdmin(admin.ModelAdmin):
pass
class CustomerOrderLineAdmin(admin.ModelAdmin):
pass
admin.site.register(CustomerOrder, CustomerOrderAdmin)
admin.site.register(CustomerOrderLine, CustomerOrderLineAdmin)

View File

@ -1,5 +0,0 @@
from django.apps import AppConfig
class CustomerOrdersConfig(AppConfig):
name = 'customer_orders'

View File

@ -1,37 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-04-17 11:27
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('supplier', '0007_auto_20180416_1253'),
]
operations = [
migrations.CreateModel(
name='CustomerOrder',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('customer', models.ForeignKey(blank=True, help_text='Customer that placed this order', null=True, on_delete=django.db.models.deletion.SET_NULL, to='supplier.Customer')),
],
),
migrations.CreateModel(
name='CustomerOrderLine',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('line_number', models.PositiveIntegerField(default=0)),
('customer_order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='customer_orders.CustomerOrder')),
],
),
migrations.AlterUniqueTogether(
name='customerorderline',
unique_together=set([('customer_order', 'line_number')]),
),
]

View File

@ -1,73 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-04-17 12:05
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('part', '0019_auto_20180416_1249'),
('customer_orders', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='customerorder',
name='created_date',
field=models.DateField(auto_now_add=True, default=django.utils.timezone.now, help_text='Date order entered in system'),
preserve_default=False,
),
migrations.AddField(
model_name='customerorder',
name='customer_ref',
field=models.CharField(blank=True, default='', max_length=100),
),
migrations.AddField(
model_name='customerorder',
name='internal_ref',
field=models.CharField(default=0, max_length=100, unique=True),
preserve_default=False,
),
migrations.AddField(
model_name='customerorder',
name='issued_date',
field=models.DateField(blank=True, default=django.utils.timezone.now, help_text='Date order issued by customer'),
preserve_default=False,
),
migrations.AddField(
model_name='customerorder',
name='notes',
field=models.TextField(blank=True, default='', help_text='Order notes'),
),
migrations.AddField(
model_name='customerorderline',
name='notes',
field=models.TextField(blank=True, help_text='Line notes'),
),
migrations.AddField(
model_name='customerorderline',
name='part',
field=models.ForeignKey(default=0, help_text='Part', on_delete=django.db.models.deletion.CASCADE, to='part.Part'),
preserve_default=False,
),
migrations.AddField(
model_name='customerorderline',
name='quantity',
field=models.IntegerField(default=1, help_text='Quantity of part'),
preserve_default=False,
),
migrations.AlterField(
model_name='customerorderline',
name='customer_order',
field=models.ForeignKey(help_text='Order this line belongs to', on_delete=django.db.models.deletion.CASCADE, to='customer_orders.CustomerOrder'),
),
migrations.AlterField(
model_name='customerorderline',
name='line_number',
field=models.PositiveIntegerField(default=0, help_text='Line number'),
),
]

View File

@ -1,48 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-04-17 13:23
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('customer_orders', '0002_auto_20180417_2205'),
]
operations = [
migrations.CreateModel(
name='Customer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, unique=True)),
('description', models.CharField(max_length=500)),
('website', models.URLField(blank=True)),
('address', models.CharField(blank=True, max_length=200)),
('phone', models.CharField(blank=True, max_length=50)),
('email', models.EmailField(blank=True, max_length=254)),
('contact', models.CharField(blank=True, max_length=100)),
('notes', models.CharField(blank=True, max_length=500)),
],
options={
'abstract': False,
},
),
migrations.AlterField(
model_name='customerorder',
name='customer',
field=models.ForeignKey(blank=True, help_text=b'Customer that placed this order', null=True, on_delete=django.db.models.deletion.SET_NULL, to='customer_orders.Customer'),
),
migrations.AlterField(
model_name='customerorderline',
name='part',
field=models.ForeignKey(blank=True, help_text=b'Part', on_delete=django.db.models.deletion.CASCADE, to='part.Part'),
),
migrations.AlterField(
model_name='customerorderline',
name='quantity',
field=models.PositiveIntegerField(blank=True, help_text=b'Quantity of part'),
),
]

View File

@ -330,7 +330,8 @@ class BomItem(models.Model):
# A link to the parent part
# Each part will get a reverse lookup field 'bom_items'
part = models.ForeignKey(Part, on_delete=models.CASCADE, related_name='bom_items')
part = models.ForeignKey(Part, on_delete=models.CASCADE, related_name='bom_items',
limit_choices_to={'buildable': True})
# A link to the child item (sub-part)
# Each part will get a reverse lookup field 'used_in'

View File

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-04-17 13:37
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('stock', '0012_auto_20180417_1316'),
]
operations = [
migrations.AlterField(
model_name='stockitem',
name='customer',
field=models.ForeignKey(blank=True, help_text='Item assigned to customer?', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='stockitems', to='customer.Customer'),
),
]

View File

@ -12,7 +12,7 @@ from django.dispatch import receiver
from datetime import datetime
from supplier.models import SupplierPart
from supplier.models import Customer
from customer.models import Customer
from part.models import Part
from InvenTree.models import InvenTreeTree
from build.models import Build

View File

@ -1,10 +1,14 @@
from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from .models import Supplier, SupplierPart, Customer, Manufacturer
from .models import Supplier, SupplierPart, Manufacturer
class CompanyAdmin(ImportExportModelAdmin):
class SupplierAdmin(ImportExportModelAdmin):
list_display = ('name', 'website', 'contact')
class ManufacturerAdmin(ImportExportModelAdmin):
list_display = ('name', 'website', 'contact')
@ -12,7 +16,6 @@ class SupplierPartAdmin(ImportExportModelAdmin):
list_display = ('part', 'supplier', 'SKU')
admin.site.register(Customer, CompanyAdmin)
admin.site.register(Supplier, CompanyAdmin)
admin.site.register(Manufacturer, CompanyAdmin)
admin.site.register(Supplier, SupplierAdmin)
admin.site.register(Manufacturer, ManufacturerAdmin)
admin.site.register(SupplierPart, SupplierPartAdmin)

View File

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-04-17 13:37
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('supplier', '0007_auto_20180416_1253'),
]
operations = [
migrations.DeleteModel(
name='Customer',
),
]

View File

@ -19,6 +19,7 @@ migrate:
python InvenTree/manage.py makemigrations stock
python InvenTree/manage.py makemigrations supplier
python InvenTree/manage.py makemigrations build
python InvenTree/manage.py makemigrations customer
python InvenTree/manage.py migrate --run-syncdb
python InvenTree/manage.py check