# Generated by Django 6.0.2 on 2026-02-16 04:28 import django.db.models.deletion from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ('contenttypes', '0002_remove_content_type_name'), ] operations = [ migrations.CreateModel( name='BaseMaterial', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(help_text='Лист 10мм или Труба 40х40х2', max_length=255, verbose_name='Наименование заготовки')), ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_%(app_label)s.%(class)s_set+', to='contenttypes.contenttype')), ], options={ 'verbose_name': 'Заготовка', 'verbose_name_plural': 'Заготовки', }, ), migrations.CreateModel( name='MaterialGrade', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50, verbose_name='Марка стали')), ('gost', models.CharField(blank=True, max_length=100, null=True, verbose_name='ГОСТ/ТУ')), ('density', models.PositiveIntegerField(default=7850.0, verbose_name='Плотность, кг/м³')), ], options={ 'verbose_name': 'Марка материала', 'verbose_name_plural': 'Марки материалов', }, ), migrations.CreateModel( name='ProfileMaterial', fields=[ ('basematerial_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='stock.basematerial')), ('profile_type', models.CharField(choices=[('round_tube', 'Труба круглая'), ('square_tube', 'Труба профильная'), ('channel', 'Швеллер'), ('angle', 'Уголок'), ('bar', 'Круг/Пруток'), ('other', 'Прочее')], max_length=20, verbose_name='Тип сечения')), ('weight_per_meter', models.FloatField(help_text='Табличный вес по ГОСТ', verbose_name='Вес 1 м.п., кг')), ('max_dimension', models.PositiveIntegerField(help_text='Для проверки входимости детали', verbose_name='Макс. габарит сечения, мм')), ], options={ 'verbose_name': 'Профильный материал', 'verbose_name_plural': 'Профильные материалы', }, bases=('stock.basematerial',), ), migrations.CreateModel( name='SheetMaterial', fields=[ ('basematerial_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='stock.basematerial')), ('thickness', models.PositiveIntegerField(verbose_name='Толщина, мм')), ], options={ 'verbose_name': 'Листовой материал', 'verbose_name_plural': 'Листовые материалы', }, bases=('stock.basematerial',), ), migrations.AddField( model_name='basematerial', name='grade', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='stock.materialgrade', verbose_name='Материал'), ), migrations.CreateModel( name='StockItem', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('length', models.PositiveIntegerField(verbose_name='Длина, мм')), ('width', models.PositiveIntegerField(blank=True, null=True, verbose_name='Ширина, мм')), ('quantity', models.PositiveIntegerField(default=1, verbose_name='Количество, шт')), ('order_reference', models.CharField(blank=True, max_length=100, null=True, verbose_name='Заказ/Сделка')), ('is_scrap', models.BooleanField(default=False, verbose_name='Деловой остаток')), ('location', models.CharField(blank=True, max_length=100, null=True, verbose_name='Место хранения')), ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='stock_items', to='stock.basematerial', verbose_name='Тип заготовки')), ], options={ 'verbose_name': 'Складская единица', 'verbose_name_plural': 'Склад налицо', }, ), ]