From f6d934bbb1087952c216b325febbc24629e344c0 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 24 Apr 2026 14:52:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=8D=E5=BB=BAwpr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mpr/migrations/0001_initial.py | 141 +++++++++++++++++- .../0002_warehouseentry_warehouseentryitem.py | 65 -------- apps/mpr/migrations/0003_warehousestock.py | 42 ------ ...rialrequisition_materialrequisitionitem.py | 60 -------- .../migrations/0005_warehousestock_status.py | 18 --- .../mpr/migrations/0006_auto_20260421_1427.py | 46 ------ 6 files changed, 136 insertions(+), 236 deletions(-) delete mode 100644 apps/mpr/migrations/0002_warehouseentry_warehouseentryitem.py delete mode 100644 apps/mpr/migrations/0003_warehousestock.py delete mode 100644 apps/mpr/migrations/0004_materialrequisition_materialrequisitionitem.py delete mode 100644 apps/mpr/migrations/0005_warehousestock_status.py delete mode 100644 apps/mpr/migrations/0006_auto_20260421_1427.py diff --git a/apps/mpr/migrations/0001_initial.py b/apps/mpr/migrations/0001_initial.py index c729e014..6735bd50 100644 --- a/apps/mpr/migrations/0001_initial.py +++ b/apps/mpr/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.12 on 2026-03-12 03:26 +# Generated by Django 4.2.27 on 2026-04-24 06:50 from django.conf import settings from django.db import migrations, models @@ -12,11 +12,31 @@ class Migration(migrations.Migration): dependencies = [ ('system', '0007_alter_dept_create_by_alter_dept_third_info_and_more'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('wf', '0006_auto_20251215_1645'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ + migrations.CreateModel( + name='MaterialRequisition', + fields=[ + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('number', models.CharField(max_length=20, unique=True, verbose_name='编号')), + ('req_date', models.DateField(blank=True, null=True, verbose_name='填报时间')), + ('collector', models.CharField(blank=True, max_length=50, null=True, verbose_name='领取人')), + ('note', models.TextField(blank=True, null=True, verbose_name='备注')), + ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_belong_dept', to='system.dept', verbose_name='所属部门')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ('ticket', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='material_requisition_ticket', to='wf.ticket', verbose_name='关联工单')), + ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'abstract': False, + }, + ), migrations.CreateModel( name='PurchaseRequisition', fields=[ @@ -29,10 +49,100 @@ class Migration(migrations.Migration): ('req_date', models.DateField(blank=True, null=True, verbose_name='申购日期')), ('total_amount', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='合计金额')), ('note', models.TextField(blank=True, null=True, verbose_name='备注')), - ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='purchaserequisition_belong_dept', to='system.dept', verbose_name='所属部门')), - ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='purchaserequisition_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_belong_dept', to='system.dept', verbose_name='所属部门')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), ('ticket', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mpr_ticket', to='wf.ticket', verbose_name='关联工单')), - ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='purchaserequisition_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='WareHouse', + fields=[ + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('number', models.CharField(max_length=20, verbose_name='库房编号')), + ('name', models.CharField(max_length=20, verbose_name='库房名称')), + ('place', models.CharField(max_length=50, verbose_name='具体地点')), + ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mpr_warehouse_belong_dept', to='system.dept', verbose_name='所属部门')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mpr_warehouse_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mpr_warehouse_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='WarehouseEntry', + fields=[ + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('number', models.CharField(max_length=20, unique=True, verbose_name='编号')), + ('entry_date', models.DateField(blank=True, null=True, verbose_name='入库日期')), + ('entry_type', models.CharField(choices=[('raw_normal', '原材料正常入库'), ('raw_estimated', '原材料暂估入库'), ('product', '产品入库'), ('other', '其他')], default='raw_normal', max_length=20, verbose_name='入库类型')), + ('entry_method', models.CharField(choices=[('purchase', '采购'), ('self_made', '自制'), ('other', '其他')], default='purchase', max_length=20, verbose_name='入库方式')), + ('total_amount', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='合计金额')), + ('note', models.TextField(blank=True, null=True, verbose_name='备注')), + ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_belong_dept', to='system.dept', verbose_name='所属部门')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ('ticket', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='warehouse_entry_ticket', to='wf.ticket', verbose_name='关联工单')), + ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ('warehouse', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='entries', to='mpr.warehouse', verbose_name='库房')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='WarehouseStock', + fields=[ + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('entry_number', models.CharField(max_length=20, verbose_name='入库单号')), + ('entry_date', models.DateField(blank=True, null=True, verbose_name='入库日期')), + ('entry_type', models.CharField(choices=[('raw_normal', '原材料正常入库'), ('raw_estimated', '原材料暂估入库'), ('product', '产品入库'), ('other', '其他')], max_length=20, verbose_name='入库类型')), + ('entry_method', models.CharField(choices=[('purchase', '采购'), ('self_made', '自制'), ('other', '其他')], max_length=20, verbose_name='入库方式')), + ('name', models.CharField(max_length=100, verbose_name='名称')), + ('spec', models.CharField(blank=True, max_length=200, null=True, verbose_name='规格')), + ('unit', models.CharField(blank=True, max_length=20, null=True, verbose_name='单位')), + ('quantity', models.DecimalField(decimal_places=3, default=0, max_digits=12, verbose_name='数量')), + ('unit_price', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='单价')), + ('amount', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='金额')), + ('supplier_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='供应商名称')), + ('invoice_received', models.BooleanField(default=False, verbose_name='账单是否收到')), + ('status', models.CharField(choices=[('idle', '闲置'), ('in_requisition', '领用中'), ('requisitioned', '已领用')], default='idle', max_length=20, verbose_name='状态')), + ('entry', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='stocks', to='mpr.warehouseentry', verbose_name='来源入库单')), + ('warehouse', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='mpr_stocks', to='mpr.warehouse', verbose_name='库房')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='WarehouseEntryItem', + fields=[ + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('name', models.CharField(max_length=100, verbose_name='名称')), + ('spec', models.CharField(blank=True, max_length=200, null=True, verbose_name='规格')), + ('unit', models.CharField(blank=True, max_length=20, null=True, verbose_name='单位')), + ('quantity', models.DecimalField(decimal_places=3, default=0, max_digits=12, verbose_name='数量')), + ('unit_price', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='单价')), + ('amount', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='金额')), + ('supplier_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='供应商名称')), + ('invoice_received', models.BooleanField(default=False, verbose_name='账单是否收到')), + ('note', models.TextField(blank=True, null=True, verbose_name='备注')), + ('entry', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='mpr.warehouseentry', verbose_name='关联入库单')), ], options={ 'abstract': False, @@ -61,4 +171,25 @@ class Migration(migrations.Migration): 'abstract': False, }, ), + migrations.CreateModel( + name='MaterialRequisitionItem', + fields=[ + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('is_stock_item', models.BooleanField(default=True, verbose_name='是否库存物品')), + ('req_type', models.CharField(blank=True, max_length=50, null=True, verbose_name='领用类型')), + ('name', models.CharField(max_length=100, verbose_name='物资名称')), + ('spec', models.CharField(blank=True, max_length=200, null=True, verbose_name='规格型号')), + ('unit', models.CharField(blank=True, max_length=20, null=True, verbose_name='单位')), + ('quantity', models.DecimalField(decimal_places=3, default=0, max_digits=12, verbose_name='领用量')), + ('note', models.TextField(blank=True, null=True, verbose_name='备注')), + ('requisition', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='mpr.materialrequisition', verbose_name='关联领用单')), + ('stock', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='requisition_items', to='mpr.warehousestock', verbose_name='关联库存')), + ], + options={ + 'abstract': False, + }, + ), ] diff --git a/apps/mpr/migrations/0002_warehouseentry_warehouseentryitem.py b/apps/mpr/migrations/0002_warehouseentry_warehouseentryitem.py deleted file mode 100644 index aca57078..00000000 --- a/apps/mpr/migrations/0002_warehouseentry_warehouseentryitem.py +++ /dev/null @@ -1,65 +0,0 @@ -# Generated by Django 3.2.12 on 2026-03-12 06:33 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('system', '0007_alter_dept_create_by_alter_dept_third_info_and_more'), - ('wf', '0006_auto_20251215_1645'), - ('inm', '0038_mioitem_count_send'), - ('mpr', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='WarehouseEntry', - fields=[ - ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), - ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), - ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), - ('number', models.CharField(max_length=20, unique=True, verbose_name='编号')), - ('entry_date', models.DateField(blank=True, null=True, verbose_name='入库日期')), - ('entry_type', models.CharField(choices=[('raw_normal', '原材料正常入库'), ('raw_estimated', '原材料暂估入库'), ('product', '产品入库'), ('other', '其他')], default='raw_normal', max_length=20, verbose_name='入库类型')), - ('entry_method', models.CharField(choices=[('purchase', '采购'), ('self_made', '自制'), ('other', '其他')], default='purchase', max_length=20, verbose_name='入库方式')), - ('total_amount', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='合计金额')), - ('note', models.TextField(blank=True, null=True, verbose_name='备注')), - ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='warehouseentry_belong_dept', to='system.dept', verbose_name='所属部门')), - ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='warehouseentry_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), - ('ticket', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='warehouse_entry_ticket', to='wf.ticket', verbose_name='关联工单')), - ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='warehouseentry_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), - ('warehouse', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='entries', to='inm.warehouse', verbose_name='仓库')), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='WarehouseEntryItem', - fields=[ - ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), - ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), - ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), - ('name', models.CharField(max_length=100, verbose_name='名称')), - ('spec', models.CharField(blank=True, max_length=200, null=True, verbose_name='规格')), - ('unit', models.CharField(blank=True, max_length=20, null=True, verbose_name='单位')), - ('quantity', models.DecimalField(decimal_places=3, default=0, max_digits=12, verbose_name='数量')), - ('unit_price', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='单价')), - ('amount', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='金额')), - ('supplier_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='供应商名称')), - ('invoice_received', models.BooleanField(default=False, verbose_name='账单是否收到')), - ('note', models.TextField(blank=True, null=True, verbose_name='备注')), - ('entry', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='mpr.warehouseentry', verbose_name='关联入库单')), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/apps/mpr/migrations/0003_warehousestock.py b/apps/mpr/migrations/0003_warehousestock.py deleted file mode 100644 index fc5ea555..00000000 --- a/apps/mpr/migrations/0003_warehousestock.py +++ /dev/null @@ -1,42 +0,0 @@ -# Generated by Django 3.2.12 on 2026-03-12 07:26 - -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('inm', '0038_mioitem_count_send'), - ('mpr', '0002_warehouseentry_warehouseentryitem'), - ] - - operations = [ - migrations.CreateModel( - name='WarehouseStock', - fields=[ - ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), - ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), - ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), - ('entry_number', models.CharField(max_length=20, verbose_name='入库单号')), - ('entry_date', models.DateField(blank=True, null=True, verbose_name='入库日期')), - ('entry_type', models.CharField(choices=[('raw_normal', '原材料正常入库'), ('raw_estimated', '原材料暂估入库'), ('product', '产品入库'), ('other', '其他')], max_length=20, verbose_name='入库类型')), - ('entry_method', models.CharField(choices=[('purchase', '采购'), ('self_made', '自制'), ('other', '其他')], max_length=20, verbose_name='入库方式')), - ('name', models.CharField(max_length=100, verbose_name='名称')), - ('spec', models.CharField(blank=True, max_length=200, null=True, verbose_name='规格')), - ('unit', models.CharField(blank=True, max_length=20, null=True, verbose_name='单位')), - ('quantity', models.DecimalField(decimal_places=3, default=0, max_digits=12, verbose_name='数量')), - ('unit_price', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='单价')), - ('amount', models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='金额')), - ('supplier_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='供应商名称')), - ('invoice_received', models.BooleanField(default=False, verbose_name='账单是否收到')), - ('entry', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='stocks', to='mpr.warehouseentry', verbose_name='来源入库单')), - ('warehouse', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='mpr_stocks', to='inm.warehouse', verbose_name='仓库')), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/apps/mpr/migrations/0004_materialrequisition_materialrequisitionitem.py b/apps/mpr/migrations/0004_materialrequisition_materialrequisitionitem.py deleted file mode 100644 index 13f2ec0d..00000000 --- a/apps/mpr/migrations/0004_materialrequisition_materialrequisitionitem.py +++ /dev/null @@ -1,60 +0,0 @@ -# Generated by Django 3.2.12 on 2026-03-12 08:06 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('system', '0007_alter_dept_create_by_alter_dept_third_info_and_more'), - ('wf', '0006_auto_20251215_1645'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('mpr', '0003_warehousestock'), - ] - - operations = [ - migrations.CreateModel( - name='MaterialRequisition', - fields=[ - ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), - ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), - ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), - ('number', models.CharField(max_length=20, unique=True, verbose_name='编号')), - ('req_date', models.DateField(blank=True, null=True, verbose_name='填报时间')), - ('collector', models.CharField(blank=True, max_length=50, null=True, verbose_name='领取人')), - ('note', models.TextField(blank=True, null=True, verbose_name='备注')), - ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='materialrequisition_belong_dept', to='system.dept', verbose_name='所属部门')), - ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='materialrequisition_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), - ('ticket', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='material_requisition_ticket', to='wf.ticket', verbose_name='关联工单')), - ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='materialrequisition_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='MaterialRequisitionItem', - fields=[ - ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), - ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), - ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), - ('is_stock_item', models.BooleanField(default=True, verbose_name='是否库存物品')), - ('req_type', models.CharField(blank=True, max_length=50, null=True, verbose_name='领用类型')), - ('name', models.CharField(max_length=100, verbose_name='物资名称')), - ('spec', models.CharField(blank=True, max_length=200, null=True, verbose_name='规格型号')), - ('unit', models.CharField(blank=True, max_length=20, null=True, verbose_name='单位')), - ('quantity', models.DecimalField(decimal_places=3, default=0, max_digits=12, verbose_name='领用量')), - ('note', models.TextField(blank=True, null=True, verbose_name='备注')), - ('requisition', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='mpr.materialrequisition', verbose_name='关联领用单')), - ('stock', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='requisition_items', to='mpr.warehousestock', verbose_name='关联库存')), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/apps/mpr/migrations/0005_warehousestock_status.py b/apps/mpr/migrations/0005_warehousestock_status.py deleted file mode 100644 index 6c4c998a..00000000 --- a/apps/mpr/migrations/0005_warehousestock_status.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.12 on 2026-03-12 08:41 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('mpr', '0004_materialrequisition_materialrequisitionitem'), - ] - - operations = [ - migrations.AddField( - model_name='warehousestock', - name='status', - field=models.CharField(choices=[('idle', '闲置'), ('in_requisition', '领用中'), ('requisitioned', '已领用')], default='idle', max_length=20, verbose_name='状态'), - ), - ] diff --git a/apps/mpr/migrations/0006_auto_20260421_1427.py b/apps/mpr/migrations/0006_auto_20260421_1427.py deleted file mode 100644 index f6abeefd..00000000 --- a/apps/mpr/migrations/0006_auto_20260421_1427.py +++ /dev/null @@ -1,46 +0,0 @@ -# Generated by Django 3.2.12 on 2026-04-21 06:27 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('system', '0007_alter_dept_create_by_alter_dept_third_info_and_more'), - ('mpr', '0005_warehousestock_status'), - ] - - operations = [ - migrations.CreateModel( - name='WareHouse', - fields=[ - ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), - ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), - ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), - ('number', models.CharField(max_length=20, verbose_name='库房编号')), - ('name', models.CharField(max_length=20, verbose_name='库房名称')), - ('place', models.CharField(max_length=50, verbose_name='具体地点')), - ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mpr_warehouse_belong_dept', to='system.dept', verbose_name='所属部门')), - ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mpr_warehouse_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), - ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mpr_warehouse_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), - ], - options={ - 'abstract': False, - }, - ), - migrations.AlterField( - model_name='warehouseentry', - name='warehouse', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='entries', to='mpr.warehouse', verbose_name='库房'), - ), - migrations.AlterField( - model_name='warehousestock', - name='warehouse', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='mpr_stocks', to='mpr.warehouse', verbose_name='库房'), - ), - ]