diff --git a/backend/apps/pisadmin/miscprocurement/migrations/0006_inquiry_bid_end_time_inquiry_bid_start_time_and_more.py b/backend/apps/pisadmin/miscprocurement/migrations/0006_inquiry_bid_end_time_inquiry_bid_start_time_and_more.py new file mode 100644 index 0000000..f9b0b50 --- /dev/null +++ b/backend/apps/pisadmin/miscprocurement/migrations/0006_inquiry_bid_end_time_inquiry_bid_start_time_and_more.py @@ -0,0 +1,140 @@ +# Generated by Django 4.2.14 on 2026-03-27 16:02 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('miscprocurement', '0005_alter_inquiry_template_version'), + ] + + operations = [ + migrations.AddField( + model_name='inquiry', + name='bid_end_time', + field=models.DateTimeField(blank=True, null=True, verbose_name='投标截止时间'), + ), + migrations.AddField( + model_name='inquiry', + name='bid_start_time', + field=models.DateTimeField(blank=True, null=True, verbose_name='投标开始时间'), + ), + migrations.AddField( + model_name='inquiry', + name='buying_method', + field=models.IntegerField(blank=True, choices=[(1, '询价'), (2, '招标')], null=True, verbose_name='采购方式(寻源方式)'), + ), + migrations.CreateModel( + name='RFQOperationLogs', + fields=[ + ('id', models.BigAutoField(help_text='Id', primary_key=True, serialize=False, verbose_name='Id')), + ('description', models.CharField(blank=True, help_text='描述', max_length=255, null=True, verbose_name='描述')), + ('modifier', models.CharField(blank=True, help_text='修改人', max_length=255, null=True, verbose_name='修改人')), + ('dept_belong_id', models.CharField(blank=True, help_text='数据归属部门', max_length=255, null=True, verbose_name='数据归属部门')), + ('update_datetime', models.DateTimeField(auto_now=True, help_text='修改时间', null=True, verbose_name='修改时间')), + ('create_datetime', models.DateTimeField(auto_now_add=True, help_text='创建时间', null=True, verbose_name='创建时间')), + ('operation_type', models.CharField(choices=[(1, '询价单创建'), (2, '询价单确认'), (3, '询价单发布'), (4, '询价单还原'), (5, '询价发送通知'), (6, '报价'), (7, '比议价'), (8, '议价审核提交'), (9, '议价审核完成'), (10, '议价审核驳回')], db_column='OperationType', max_length=20, verbose_name='操作类型')), + ('operation_user', models.CharField(blank=True, db_column='OperationUser', max_length=20, null=True, verbose_name='操作人')), + ('operation_time', models.DateTimeField(blank=True, db_column='OperationTime', null=True, verbose_name='操作时间')), + ('operation_desc', models.TextField(blank=True, db_column='OperationDesc', max_length=200, null=True, verbose_name='操作描述')), + ('inquiry_no', models.CharField(db_column='InquiryNo', db_index=True, max_length=20, verbose_name='询价单号')), + ('quotation_no', models.CharField(db_column='QuotationNo', db_index=True, max_length=20, verbose_name='报价单号')), + ('per_status', models.CharField(blank=True, db_column='PerStatus', max_length=50, null=True, verbose_name='作业前状态')), + ('cur_status', models.TextField(blank=True, db_column='CurStatus', max_length=100, null=True, verbose_name='作业后状态')), + ('is_show_user', models.IntegerField(blank=True, db_column='IsShowUser', help_text='履历显示否(1:是 0:否)', null=True, verbose_name='履历显示否')), + ('purchase_type', models.IntegerField(choices=[(1, '策采'), (2, '杂采')], db_column='PurchaseType', help_text='采购类别(1:策采 2:杂采)', verbose_name='采购类别')), + ('creator', models.ForeignKey(db_constraint=False, help_text='创建人', null=True, on_delete=django.db.models.deletion.SET_NULL, related_query_name='creator_query', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ], + options={ + 'verbose_name': '询价单操作日志', + 'verbose_name_plural': '询价单操作日志', + 'db_table': 'pis_rfq_operation_logs', + 'ordering': ('-create_datetime', 'id'), + 'indexes': [models.Index(fields=['inquiry_no', 'quotation_no'], name='pis_rfq_ope_Inquiry_57e005_idx')], + }, + ), + migrations.CreateModel( + name='MiscNegotiationRecords', + fields=[ + ('id', models.BigAutoField(help_text='Id', primary_key=True, serialize=False, verbose_name='Id')), + ('description', models.CharField(blank=True, help_text='描述', max_length=255, null=True, verbose_name='描述')), + ('modifier', models.CharField(blank=True, help_text='修改人', max_length=255, null=True, verbose_name='修改人')), + ('dept_belong_id', models.CharField(blank=True, help_text='数据归属部门', max_length=255, null=True, verbose_name='数据归属部门')), + ('update_datetime', models.DateTimeField(auto_now=True, help_text='修改时间', null=True, verbose_name='修改时间')), + ('create_datetime', models.DateTimeField(auto_now_add=True, help_text='创建时间', null=True, verbose_name='创建时间')), + ('inquiry_no', models.CharField(db_column='inquiry_no', db_index=True, max_length=20, verbose_name='询价单号')), + ('part_id', models.CharField(db_column='PartId', max_length=50, verbose_name='产品料号')), + ('supplier_code', models.CharField(blank=True, db_column='SupplierCode', max_length=50, null=True, verbose_name='供应商代码')), + ('bargaining_price', models.DecimalField(blank=True, decimal_places=4, default=0, max_digits=12, null=True, verbose_name='议价后价格')), + ('bargaining_time', models.DateTimeField(blank=True, null=True, verbose_name='议价时间')), + ('bargaining_user', models.CharField(blank=True, db_column='BargainingUser', max_length=20, null=True, verbose_name='议价人')), + ('is_awarded', models.IntegerField(blank=True, default=0, help_text='是否中标(1:是 0:否)', null=True, verbose_name='是否中标')), + ('quotation_no', models.CharField(blank=True, db_column='QuotationNo', max_length=20, null=True, verbose_name='报价单号')), + ('total_price_excl_tax', models.DecimalField(blank=True, decimal_places=4, default=0, max_digits=12, null=True, verbose_name='议价前不含税总价')), + ('total_price_incl_tax', models.DecimalField(blank=True, decimal_places=4, default=0, max_digits=12, null=True, verbose_name='议价前含税总价')), + ('creator', models.ForeignKey(db_constraint=False, help_text='创建人', null=True, on_delete=django.db.models.deletion.SET_NULL, related_query_name='creator_query', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ], + options={ + 'verbose_name': '杂采议价记录表', + 'verbose_name_plural': '杂采议价记录表', + 'db_table': 'pis_misc_negotiation_records', + 'ordering': ('-create_datetime', 'id'), + 'indexes': [models.Index(fields=['inquiry_no', 'part_id'], name='pis_misc_ne_inquiry_5d842e_idx'), models.Index(fields=['inquiry_no', 'part_id', 'quotation_no'], name='pis_misc_ne_inq_part_qtn_idx')], + }, + ), + migrations.CreateModel( + name='MiscLowPriceHeader', + fields=[ + ('id', models.BigAutoField(help_text='Id', primary_key=True, serialize=False, verbose_name='Id')), + ('description', models.CharField(blank=True, help_text='描述', max_length=255, null=True, verbose_name='描述')), + ('modifier', models.CharField(blank=True, help_text='修改人', max_length=255, null=True, verbose_name='修改人')), + ('dept_belong_id', models.CharField(blank=True, help_text='数据归属部门', max_length=255, null=True, verbose_name='数据归属部门')), + ('update_datetime', models.DateTimeField(auto_now=True, help_text='修改时间', null=True, verbose_name='修改时间')), + ('create_datetime', models.DateTimeField(auto_now_add=True, help_text='创建时间', null=True, verbose_name='创建时间')), + ('inquiry_no', models.CharField(db_column='inquiry_no', db_index=True, help_text='业务主键列之一;逻辑主键与 id 并存', max_length=20, verbose_name='询价单号')), + ('part_id', models.CharField(db_column='PartId', max_length=50, verbose_name='产品料号')), + ('souce_no', models.CharField(blank=True, db_column='SouceNo', max_length=20, null=True, verbose_name='来源单号(报价单&询价单)')), + ('cost_type', models.CharField(choices=[('1', '材料'), ('2', '加工'), ('3', '包装费'), ('4', '运输费'), ('5', '管销研费用'), ('6', '利润率')], db_column='CostType', max_length=50, verbose_name='成本类别')), + ('item_no', models.CharField(db_column='ItemNo', help_text='如:铝等项次名称', max_length=100, verbose_name='项次名')), + ('min_price', models.CharField(db_column='MinPrice', help_text='表结构为 varchar,若需参与运算可在业务层转换', max_length=10, verbose_name='最低价格')), + ('creator', models.ForeignKey(db_constraint=False, help_text='创建人', null=True, on_delete=django.db.models.deletion.SET_NULL, related_query_name='creator_query', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ], + options={ + 'verbose_name': '比价-制程最低价记录主表', + 'verbose_name_plural': '比价-制程最低价记录主表', + 'db_table': 'pis_misc_low_price_header', + 'ordering': ('-create_datetime', 'id'), + 'indexes': [models.Index(fields=['inquiry_no', 'part_id'], name='pis_misc_lo_inquiry_51eb98_idx')], + }, + ), + migrations.CreateModel( + name='MiscLowPriceDetail', + fields=[ + ('id', models.BigAutoField(help_text='Id', primary_key=True, serialize=False, verbose_name='Id')), + ('description', models.CharField(blank=True, help_text='描述', max_length=255, null=True, verbose_name='描述')), + ('modifier', models.CharField(blank=True, help_text='修改人', max_length=255, null=True, verbose_name='修改人')), + ('dept_belong_id', models.CharField(blank=True, help_text='数据归属部门', max_length=255, null=True, verbose_name='数据归属部门')), + ('update_datetime', models.DateTimeField(auto_now=True, help_text='修改时间', null=True, verbose_name='修改时间')), + ('create_datetime', models.DateTimeField(auto_now_add=True, help_text='创建时间', null=True, verbose_name='创建时间')), + ('inquiry_no', models.CharField(db_column='inquiry_no', db_index=True, max_length=20, verbose_name='询价单号')), + ('part_id', models.CharField(db_column='PartId', max_length=50, verbose_name='产品料号')), + ('cost_type', models.CharField(db_column='CostType', help_text='仅支持1-材料', max_length=50, verbose_name='成本类别')), + ('material_spec', models.CharField(db_column='materialspec', max_length=50, verbose_name='材料规格')), + ('item_no', models.CharField(choices=[(1, '重量'), (2, '单价')], db_column='ItemNo', help_text='策采:重量、损耗、单价;杂采:重量、单价', max_length=100, verbose_name='项次名')), + ('value', models.CharField(db_column='Value', max_length=10, verbose_name='最小值')), + ('souce_no', models.CharField(db_column='SouceNo', max_length=20, verbose_name='来源单号(报价单&询价单)')), + ('creator', models.ForeignKey(db_constraint=False, help_text='创建人', null=True, on_delete=django.db.models.deletion.SET_NULL, related_query_name='creator_query', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ], + options={ + 'verbose_name': '比价-制程最低价记录次表', + 'verbose_name_plural': '比价-制程最低价记录次表', + 'db_table': 'pis_misc_low_price_detail', + 'ordering': ('-create_datetime', 'id'), + 'indexes': [models.Index(fields=['inquiry_no', 'part_id'], name='pis_misc_lo_inquiry_005d6d_idx')], + }, + ), + ] diff --git a/backend/apps/pissupplier/migrations/0004_quotationmaster_bid_end_time_and_more.py b/backend/apps/pissupplier/migrations/0004_quotationmaster_bid_end_time_and_more.py new file mode 100644 index 0000000..0795e18 --- /dev/null +++ b/backend/apps/pissupplier/migrations/0004_quotationmaster_bid_end_time_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 4.2.14 on 2026-03-27 16:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pissupplier', '0003_quotationmaterial_weight_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='quotationmaster', + name='bid_end_time', + field=models.DateTimeField(blank=True, null=True, verbose_name='投标截止时间'), + ), + migrations.AddField( + model_name='quotationmaster', + name='bid_start_time', + field=models.DateTimeField(blank=True, null=True, verbose_name='投标开始时间'), + ), + migrations.AddField( + model_name='quotationmaster', + name='buying_method', + field=models.IntegerField(blank=True, choices=[(1, '询价'), (2, '招标')], null=True, verbose_name='采购方式(寻源方式)'), + ), + ]