ДОбавил изделия и заполнение спецификции изделия
All checks were successful
Deploy MES Core / deploy (push) Successful in 3m27s

This commit is contained in:
2026-04-07 12:09:46 +03:00
parent eb708a3ab7
commit a238c83b04
16 changed files with 1722 additions and 3 deletions

View File

@@ -0,0 +1,23 @@
# Generated by Django 6.0.3 on 2026-04-07 04:39
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('manufacturing', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='productentity',
name='passport_filled',
field=models.BooleanField(default=False, verbose_name='Паспорт заполнен'),
),
migrations.AlterField(
model_name='productentity',
name='entity_type',
field=models.CharField(choices=[('product', 'Готовое изделие'), ('assembly', 'Сборочная единица'), ('part', 'Деталь'), ('purchased', 'Покупное'), ('casting', 'Литьё'), ('outsourced', 'Аутсорс')], default='part', max_length=15, verbose_name='Тип'),
),
]

View File

@@ -0,0 +1,45 @@
# Generated by Django 6.0.3 on 2026-04-07 08:56
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('manufacturing', '0002_productentity_passport_filled_and_more'),
]
operations = [
migrations.CreateModel(
name='AssemblyPassport',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('weight_kg', models.FloatField(blank=True, null=True, verbose_name='Масса, кг')),
('coating', models.CharField(blank=True, default='', max_length=200, verbose_name='Покрытие')),
('coating_color', models.CharField(blank=True, default='', max_length=100, verbose_name='Цвет')),
('coating_area_m2', models.FloatField(blank=True, null=True, verbose_name='Площадь покрытия, м²')),
('technical_requirements', models.TextField(blank=True, default='', verbose_name='Технические требования')),
('entity', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='assembly_passport', to='manufacturing.productentity')),
],
options={
'verbose_name': 'Паспорт сборки/изделия',
'verbose_name_plural': 'Паспорта сборок/изделий',
},
),
migrations.CreateModel(
name='WeldingSeam',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='Наименование')),
('leg_mm', models.FloatField(verbose_name='Катет, мм')),
('length_mm', models.FloatField(verbose_name='Длина, мм')),
('quantity', models.PositiveIntegerField(default=1, verbose_name='Кол-во')),
('passport', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='welding_seams', to='manufacturing.assemblypassport')),
],
options={
'verbose_name': 'Сварной шов',
'verbose_name_plural': 'Сварные швы',
},
),
]

View File

@@ -0,0 +1,70 @@
# Generated by Django 6.0.3 on 2026-04-07 09:07
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('manufacturing', '0003_assemblypassport_weldingseam'),
]
operations = [
migrations.CreateModel(
name='CastingPassport',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('casting_material', models.CharField(blank=True, default='', max_length=200, verbose_name='Материал литья')),
('mass_kg', models.FloatField(blank=True, null=True, verbose_name='Масса, кг')),
('entity', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='casting_passport', to='manufacturing.productentity')),
],
options={
'verbose_name': 'Паспорт литья',
'verbose_name_plural': 'Паспорта литья',
},
),
migrations.CreateModel(
name='OutsourcedPassport',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('technical_requirements', models.TextField(blank=True, default='', verbose_name='Технические требования')),
('notes', models.TextField(blank=True, default='', verbose_name='Пояснения')),
('entity', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='outsourced_passport', to='manufacturing.productentity')),
],
options={
'verbose_name': 'Паспорт аутсорса',
'verbose_name_plural': 'Паспорта аутсорса',
},
),
migrations.CreateModel(
name='PartPassport',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('thickness_mm', models.FloatField(blank=True, null=True, verbose_name='Толщина, мм')),
('length_mm', models.FloatField(blank=True, null=True, verbose_name='Длина, мм')),
('mass_kg', models.FloatField(blank=True, null=True, verbose_name='Масса, кг')),
('cut_length_mm', models.FloatField(blank=True, null=True, verbose_name='Длина реза, мм')),
('pierce_count', models.PositiveIntegerField(blank=True, null=True, verbose_name='Кол-во врезок')),
('engraving', models.TextField(blank=True, default='', verbose_name='Гравировка')),
('technical_requirements', models.TextField(blank=True, default='', verbose_name='Технические требования')),
('entity', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='part_passport', to='manufacturing.productentity')),
],
options={
'verbose_name': 'Паспорт детали',
'verbose_name_plural': 'Паспорта деталей',
},
),
migrations.CreateModel(
name='PurchasedPassport',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('gost', models.CharField(blank=True, default='', max_length=255, verbose_name='ГОСТ/ТУ')),
('entity', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='purchased_passport', to='manufacturing.productentity')),
],
options={
'verbose_name': 'Паспорт покупного',
'verbose_name_plural': 'Паспорта покупного',
},
),
]