This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-04 15:14
|
||||
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('manufacturing', '0001_initial'),
|
||||
('shiftflow', '0014_dxfpreviewjob_cancel_requested_dxfpreviewjob_pid_and_more'),
|
||||
('warehouse', '0004_location_stockitem_transferrecord'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='machine',
|
||||
name='location',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='warehouse.location', verbose_name='Склад участка'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='productiontask',
|
||||
name='entity',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='manufacturing.productentity', verbose_name='КД (изделие/деталь)'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CuttingSession',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('date', models.DateField(default=django.utils.timezone.localdate, verbose_name='Дата')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('is_closed', models.BooleanField(default=False, verbose_name='Сессия закрыта')),
|
||||
('machine', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='shiftflow.machine', verbose_name='Станок')),
|
||||
('operator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='Оператор')),
|
||||
('used_stock_item', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='warehouse.stockitem', verbose_name='Взятый материал')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Сессия раскроя',
|
||||
'verbose_name_plural': 'Сессии раскроя',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='MaterialRequirement',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('required_qty', models.FloatField(verbose_name='Нужно докупить')),
|
||||
('unit', models.CharField(choices=[('m2', 'м²'), ('mm', 'мм'), ('pcs', 'шт')], default='pcs', max_length=8, verbose_name='Ед. изм.')),
|
||||
('status', models.CharField(choices=[('needed', 'К закупке'), ('ordered', 'В пути'), ('fulfilled', 'Обеспечено')], default='needed', max_length=20, verbose_name='Статус')),
|
||||
('deal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shiftflow.deal', verbose_name='Сделка')),
|
||||
('material', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='warehouse.material', verbose_name='Материал')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Потребность',
|
||||
'verbose_name_plural': 'Потребности',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ShiftItem',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('quantity_fact', models.PositiveIntegerField(default=0, verbose_name='Изготовлено (факт), шт')),
|
||||
('material_substitution', models.BooleanField(default=False, verbose_name='Замена материала по факту')),
|
||||
('session', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='shiftflow.cuttingsession')),
|
||||
('task', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='shiftflow.productiontask', verbose_name='Плановое задание')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Пункт сессии',
|
||||
'verbose_name_plural': 'Пункты сессий',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DealItem',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('quantity', models.PositiveIntegerField(verbose_name='Заказано, шт')),
|
||||
('deal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='shiftflow.deal', verbose_name='Сделка')),
|
||||
('entity', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='manufacturing.productentity', verbose_name='Изделие/деталь')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Позиция сделки',
|
||||
'verbose_name_plural': 'Позиции сделки',
|
||||
'unique_together': {('deal', 'entity')},
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,77 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 07:29
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('shiftflow', '0015_machine_location_productiontask_entity_and_more'),
|
||||
('warehouse', '0004_location_stockitem_transferrecord'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='cuttingsession',
|
||||
options={'verbose_name': 'Производственный отчет', 'verbose_name_plural': 'Производственные отчеты'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='shiftitem',
|
||||
options={'verbose_name': 'Фиксация выработки', 'verbose_name_plural': 'Фиксации выработки'},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='cuttingsession',
|
||||
name='is_closed',
|
||||
field=models.BooleanField(default=False, verbose_name='Отчет закрыт'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='cuttingsession',
|
||||
name='used_stock_item',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='warehouse.stockitem', verbose_name='Взятый материал (legacy)'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ProductionReportRemnant',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('quantity', models.FloatField(default=1.0, verbose_name='Количество (ед.)')),
|
||||
('current_length', models.FloatField(blank=True, null=True, verbose_name='Текущая длина, мм')),
|
||||
('current_width', models.FloatField(blank=True, null=True, verbose_name='Текущая ширина, мм')),
|
||||
('unique_id', models.CharField(blank=True, max_length=50, null=True, verbose_name='ID/Маркировка')),
|
||||
('material', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='warehouse.material', verbose_name='Материал')),
|
||||
('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='remnants', to='shiftflow.cuttingsession', verbose_name='Производственный отчет')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Деловой остаток',
|
||||
'verbose_name_plural': 'Деловые остатки',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ProductionReportConsumption',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('quantity', models.FloatField(verbose_name='Списано (ед.)')),
|
||||
('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consumptions', to='shiftflow.cuttingsession', verbose_name='Производственный отчет')),
|
||||
('stock_item', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='warehouse.stockitem', verbose_name='Сырье (позиция склада)')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Списание сырья',
|
||||
'verbose_name_plural': 'Списание сырья',
|
||||
'unique_together': {('report', 'stock_item')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ProductionReportStockResult',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('kind', models.CharField(choices=[('finished', 'Готовая деталь'), ('remnant', 'Деловой остаток')], max_length=16, verbose_name='Тип')),
|
||||
('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='results', to='shiftflow.cuttingsession', verbose_name='Производственный отчет')),
|
||||
('stock_item', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='warehouse.stockitem', verbose_name='Созданная позиция склада')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Результат отчета',
|
||||
'verbose_name_plural': 'Результаты отчета',
|
||||
'unique_together': {('report', 'stock_item')},
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,37 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 08:35
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('shiftflow', '0016_alter_cuttingsession_options_alter_shiftitem_options_and_more'),
|
||||
('warehouse', '0005_alter_stockitem_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='machine',
|
||||
name='location',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='warehouse.location', verbose_name='Склад участка (устаревает)'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Workshop',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=120, unique=True, verbose_name='Цех')),
|
||||
('location', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='warehouse.location', verbose_name='Склад цеха')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Цех',
|
||||
'verbose_name_plural': 'Цеха',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='machine',
|
||||
name='workshop',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='shiftflow.workshop', verbose_name='Цех'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 09:19
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('shiftflow', '0017_alter_machine_location_workshop_machine_workshop'),
|
||||
('warehouse', '0006_alter_stockitem_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterUniqueTogether(
|
||||
name='productionreportconsumption',
|
||||
unique_together=set(),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='productionreportconsumption',
|
||||
name='material',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='warehouse.material', verbose_name='Материал'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='productionreportconsumption',
|
||||
name='stock_item',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='warehouse.stockitem', verbose_name='Сырье (позиция склада, legacy)'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='productionreportconsumption',
|
||||
unique_together={('report', 'material')},
|
||||
),
|
||||
]
|
||||
18
shiftflow/migrations/0019_alter_employeeprofile_role.py
Normal file
18
shiftflow/migrations/0019_alter_employeeprofile_role.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-06 04:28
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('shiftflow', '0018_alter_productionreportconsumption_unique_together_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='employeeprofile',
|
||||
name='role',
|
||||
field=models.CharField(choices=[('admin', 'Администратор'), ('technologist', 'Технолог'), ('master', 'Мастер'), ('operator', 'Оператор'), ('clerk', 'Учетчик'), ('observer', 'Наблюдатель')], default='operator', max_length=20, verbose_name='Должность'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user