forked from erp-dev/erp
feat: added pre sales order and pre purchase order models and crud
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# Generated by Django 5.2.7 on 2026-01-31 14:27
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('basic_info', '0024_frontend_page_and_visible_pages'),
|
||||
('business', '0022_presalesorder_presalesorderitem'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='PrePurchaseOrder',
|
||||
fields=[
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('id', models.BigAutoField(primary_key=True, serialize=False)),
|
||||
('kind', models.IntegerField(choices=[(1, '大货'), (2, '样板')], default=1, verbose_name='预采购单类型')),
|
||||
('remarks', models.TextField(blank=True, null=True, verbose_name='备注')),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='created_pre_purchase_orders', to='basic_info.employee', verbose_name='创建者')),
|
||||
('merchant', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='pre_purchase_orders', to='basic_info.merchant', verbose_name='所属商户')),
|
||||
('supplier', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='pre_purchase_orders', to='basic_info.supplier', verbose_name='供应商')),
|
||||
('warehouse', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='pre_purchase_orders', to='basic_info.warehouse', verbose_name='仓库')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '预采购单',
|
||||
'verbose_name_plural': '预采购单',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PrePurchaseOrderItem',
|
||||
fields=[
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('id', models.BigAutoField(primary_key=True, serialize=False)),
|
||||
('product_id', models.BigIntegerField(blank=True, null=True, verbose_name='产品ID')),
|
||||
('product_name', models.CharField(blank=True, default='', max_length=100, verbose_name='产品名称')),
|
||||
('color', models.CharField(blank=True, max_length=50, null=True, verbose_name='颜色')),
|
||||
('quantity', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='数量')),
|
||||
('unit', models.CharField(blank=True, default='', max_length=50, verbose_name='单位')),
|
||||
('spec', models.CharField(blank=True, max_length=100, null=True, verbose_name='规格')),
|
||||
('quantity_of_rolls', models.TextField(blank=True, null=True, verbose_name='各条数数量')),
|
||||
('num_of_rolls', models.PositiveIntegerField(default=1, verbose_name='条数')),
|
||||
('order_quantity', models.IntegerField(blank=True, null=True, verbose_name='下单数量')),
|
||||
('remarks', models.TextField(blank=True, null=True, verbose_name='备注')),
|
||||
('pre_purchase_order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='business.prepurchaseorder', verbose_name='预采购单')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '预采购单明细',
|
||||
'verbose_name_plural': '预采购单明细',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,86 @@
|
||||
# Generated by Django 5.2.7 on 2026-01-31 15:07
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def forwards_copy_created_by_from_employee(apps, schema_editor):
|
||||
PreSalesOrder = apps.get_model('business', 'PreSalesOrder')
|
||||
PrePurchaseOrder = apps.get_model('business', 'PrePurchaseOrder')
|
||||
|
||||
for order in (
|
||||
PreSalesOrder.objects.select_related('created_by_employee')
|
||||
.filter(created_by__isnull=True)
|
||||
.exclude(created_by_employee__isnull=True)
|
||||
):
|
||||
employee = getattr(order, 'created_by_employee', None)
|
||||
if employee and getattr(employee, 'sys_user_id', None):
|
||||
order.created_by_id = employee.sys_user_id
|
||||
order.save(update_fields=['created_by'])
|
||||
|
||||
for order in (
|
||||
PrePurchaseOrder.objects.select_related('created_by_employee')
|
||||
.filter(created_by__isnull=True)
|
||||
.exclude(created_by_employee__isnull=True)
|
||||
):
|
||||
employee = getattr(order, 'created_by_employee', None)
|
||||
if employee and getattr(employee, 'sys_user_id', None):
|
||||
order.created_by_id = employee.sys_user_id
|
||||
order.save(update_fields=['created_by'])
|
||||
|
||||
|
||||
def backwards_noop(apps, schema_editor):
|
||||
# We intentionally do not attempt to restore legacy employee ids.
|
||||
return
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('basic_info', '0024_frontend_page_and_visible_pages'),
|
||||
('business', '0023_prepurchaseorder_prepurchaseorderitem'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='prepurchaseorder',
|
||||
old_name='created_by',
|
||||
new_name='created_by_employee',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='prepurchaseorder',
|
||||
name='operator',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='operated_pre_purchase_orders', to='basic_info.employee', verbose_name='经办人'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='prepurchaseorder',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_pre_purchase_orders', to=settings.AUTH_USER_MODEL, verbose_name='创建者用户'),
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='presalesorder',
|
||||
old_name='created_by',
|
||||
new_name='created_by_employee',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='presalesorder',
|
||||
name='operator',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='operated_pre_sales_orders', to='basic_info.employee', verbose_name='经办人'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='presalesorder',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_pre_sales_orders', to=settings.AUTH_USER_MODEL, verbose_name='创建者用户'),
|
||||
),
|
||||
migrations.RunPython(forwards_copy_created_by_from_employee, backwards_noop),
|
||||
migrations.RemoveField(
|
||||
model_name='prepurchaseorder',
|
||||
name='created_by_employee',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='presalesorder',
|
||||
name='created_by_employee',
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user