This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-04 15:14
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('manufacturing', '0001_initial'),
|
||||
('warehouse', '0003_alter_material_full_name'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Location',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=100, unique=True, verbose_name='Место хранения')),
|
||||
('is_production_area', models.BooleanField(default=False, verbose_name='Это производственный участок')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Склад/Участок',
|
||||
'verbose_name_plural': 'Склады и участки',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='StockItem',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('quantity', models.FloatField(verbose_name='Количество (шт/м/кг/лист)')),
|
||||
('is_remnant', models.BooleanField(default=False, 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, unique=True, verbose_name='ID/Маркировка (для ДО)')),
|
||||
('entity', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='manufacturing.productentity', verbose_name='Произведённая сущность')),
|
||||
('location', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='warehouse.location', verbose_name='Где находится')),
|
||||
('material', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='warehouse.material', verbose_name='Сырьё')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Единица на складе',
|
||||
'verbose_name_plural': 'Остатки на складах',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TransferRecord',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('status', models.CharField(choices=[('sent', 'В пути'), ('received', 'Принято'), ('discrepancy', 'Расхождение')], default='sent', max_length=20, verbose_name='Статус')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('received_at', models.DateTimeField(blank=True, null=True)),
|
||||
('from_location', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='outgoing', to='warehouse.location')),
|
||||
('items', models.ManyToManyField(to='warehouse.stockitem', verbose_name='Перемещаемые объекты')),
|
||||
('receiver', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='received_transfers', to=settings.AUTH_USER_MODEL)),
|
||||
('sender', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='sent_transfers', to=settings.AUTH_USER_MODEL)),
|
||||
('to_location', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='incoming', to='warehouse.location')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Перемещение',
|
||||
'verbose_name_plural': 'Перемещения',
|
||||
},
|
||||
),
|
||||
]
|
||||
17
warehouse/migrations/0005_alter_stockitem_options.py
Normal file
17
warehouse/migrations/0005_alter_stockitem_options.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 08:27
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('warehouse', '0004_location_stockitem_transferrecord'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='stockitem',
|
||||
options={'verbose_name': 'Единица на складах', 'verbose_name_plural': 'Единицы на складах'},
|
||||
),
|
||||
]
|
||||
17
warehouse/migrations/0006_alter_stockitem_options.py
Normal file
17
warehouse/migrations/0006_alter_stockitem_options.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 08:50
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('warehouse', '0005_alter_stockitem_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='stockitem',
|
||||
options={'verbose_name': 'Единица на складе', 'verbose_name_plural': 'Единицы на складе'},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,65 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 11:42
|
||||
|
||||
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 = [
|
||||
('warehouse', '0006_alter_stockitem_options'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='transferrecord',
|
||||
name='items',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transferrecord',
|
||||
name='is_applied',
|
||||
field=models.BooleanField(default=False, verbose_name='Применено'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='transferrecord',
|
||||
name='occurred_at',
|
||||
field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Дата/время'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='transferrecord',
|
||||
name='from_location',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='outgoing', to='warehouse.location', verbose_name='Откуда'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='transferrecord',
|
||||
name='receiver',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='received_transfers', to=settings.AUTH_USER_MODEL, verbose_name='Кому'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='transferrecord',
|
||||
name='sender',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='sent_transfers', to=settings.AUTH_USER_MODEL, verbose_name='Кто'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='transferrecord',
|
||||
name='to_location',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='incoming', to='warehouse.location', verbose_name='Куда'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TransferLine',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('quantity', models.FloatField(verbose_name='Количество')),
|
||||
('stock_item', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='warehouse.stockitem', verbose_name='Единица на складе')),
|
||||
('transfer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lines', to='warehouse.transferrecord', verbose_name='Перемещение')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Строка перемещения',
|
||||
'verbose_name_plural': 'Строки перемещения',
|
||||
'unique_together': {('transfer', 'stock_item')},
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,24 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 15:45
|
||||
|
||||
import django.utils.timezone
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('warehouse', '0007_remove_transferrecord_items_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='transferrecord',
|
||||
name='received_at',
|
||||
field=models.DateTimeField(blank=True, default=django.utils.timezone.now, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='transferrecord',
|
||||
name='status',
|
||||
field=models.CharField(choices=[('sent', 'В пути'), ('received', 'Принято'), ('discrepancy', 'Расхождение')], default='received', max_length=20, verbose_name='Статус'),
|
||||
),
|
||||
]
|
||||
19
warehouse/migrations/0009_stockitem_created_at.py
Normal file
19
warehouse/migrations/0009_stockitem_created_at.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 19:06
|
||||
|
||||
import django.utils.timezone
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('warehouse', '0008_alter_transferrecord_received_at_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='stockitem',
|
||||
name='created_at',
|
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='Поступление'),
|
||||
),
|
||||
]
|
||||
18
warehouse/migrations/0010_materialcategory_form_factor.py
Normal file
18
warehouse/migrations/0010_materialcategory_form_factor.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 19:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('warehouse', '0009_stockitem_created_at'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='materialcategory',
|
||||
name='form_factor',
|
||||
field=models.CharField(choices=[('sheet', 'Лист'), ('bar', 'Прокат/хлыст'), ('other', 'Прочее')], default='other', max_length=16, verbose_name='Форма'),
|
||||
),
|
||||
]
|
||||
18
warehouse/migrations/0011_stockitem_is_customer_supplied.py
Normal file
18
warehouse/migrations/0011_stockitem_is_customer_supplied.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-05 20:09
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('warehouse', '0010_materialcategory_form_factor'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='stockitem',
|
||||
name='is_customer_supplied',
|
||||
field=models.BooleanField(default=False, verbose_name='Давальческий'),
|
||||
),
|
||||
]
|
||||
20
warehouse/migrations/0012_stockitem_deal.py
Normal file
20
warehouse/migrations/0012_stockitem_deal.py
Normal file
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-06 03:32
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('shiftflow', '0018_alter_productionreportconsumption_unique_together_and_more'),
|
||||
('warehouse', '0011_stockitem_is_customer_supplied'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='stockitem',
|
||||
name='deal',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='shiftflow.deal', verbose_name='Сделка'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user