增加采购订单part1
This commit is contained in:
parent
c82ef89054
commit
c8c6945a38
|
@ -0,0 +1,20 @@
|
||||||
|
# Generated by Django 3.2.9 on 2022-01-27 07:47
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pum', '0004_puorder_puorderitem'),
|
||||||
|
('inm', '0028_alter_fifoitem_files'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='fifo',
|
||||||
|
name='pu_order',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='pum.puorder', verbose_name='关联采购订单'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -79,7 +79,8 @@ class FIFO(CommonADModel):
|
||||||
User, verbose_name='审核人', on_delete=models.CASCADE, null=True, blank=True)
|
User, verbose_name='审核人', on_delete=models.CASCADE, null=True, blank=True)
|
||||||
inout_date = models.DateField('出入库日期', null=True, blank=True)
|
inout_date = models.DateField('出入库日期', null=True, blank=True)
|
||||||
remark = models.CharField('备注', max_length=1000, default='')
|
remark = models.CharField('备注', max_length=1000, default='')
|
||||||
pu_order = models.ForeignKey(PuOrder, verbose_name='关联采购订单', null=True, blank=True)
|
pu_order = models.ForeignKey(PuOrder, verbose_name='关联采购订单',
|
||||||
|
null=True, blank=True, on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
|
||||||
class FIFOItem(BaseModel):
|
class FIFOItem(BaseModel):
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Generated by Django 3.2.9 on 2022-01-27 07:47
|
||||||
|
|
||||||
|
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),
|
||||||
|
('mtm', '0044_subproduction_need_combtest'),
|
||||||
|
('pum', '0003_remove_vendor_material'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='PuOrder',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, 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=100, unique=True, verbose_name='订单编号')),
|
||||||
|
('is_audited', models.BooleanField(default=False, verbose_name='是否审核')),
|
||||||
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='puorder_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='puorder_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
('vendor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pum.vendor', verbose_name='供应商')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '采购订单',
|
||||||
|
'verbose_name_plural': '采购订单',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='PuOrderItem',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, 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='删除标记')),
|
||||||
|
('count', models.PositiveIntegerField(default=0, verbose_name='所需数量')),
|
||||||
|
('delivered_count', models.PositiveIntegerField(default=0, verbose_name='已到货数量')),
|
||||||
|
('delivery_date', models.DateField(verbose_name='截止到货日期')),
|
||||||
|
('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mtm.material', verbose_name='采购材料')),
|
||||||
|
('pu_order', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='item_pu_order', to='pum.puorder', verbose_name='关联采购订单')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
|
@ -31,12 +31,18 @@ class PuOrder(CommonAModel):
|
||||||
"""
|
"""
|
||||||
number = models.CharField('订单编号', max_length=100, unique=True)
|
number = models.CharField('订单编号', max_length=100, unique=True)
|
||||||
vendor = models.ForeignKey(Vendor, verbose_name='供应商', on_delete=models.CASCADE)
|
vendor = models.ForeignKey(Vendor, verbose_name='供应商', on_delete=models.CASCADE)
|
||||||
|
is_audited = models.BooleanField('是否审核', default=False)
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = '采购订单'
|
verbose_name = '采购订单'
|
||||||
verbose_name_plural = verbose_name
|
verbose_name_plural = verbose_name
|
||||||
|
|
||||||
class PuOrderItem(CommonAModel):
|
class PuOrderItem(BaseModel):
|
||||||
"""
|
"""
|
||||||
采购订单具体项目
|
采购具体项目
|
||||||
"""
|
"""
|
||||||
pass
|
material = models.ForeignKey(Material, verbose_name='采购材料', on_delete=models.CASCADE)
|
||||||
|
count = models.PositiveIntegerField('所需数量', default=0)
|
||||||
|
delivered_count = models.PositiveIntegerField('已到货数量', default=0)
|
||||||
|
delivery_date = models.DateField('截止到货日期')
|
||||||
|
pu_order = models.ForeignKey(PuOrder, verbose_name='关联采购订单',
|
||||||
|
on_delete=models.CASCADE, null=True, blank=True, related_name='item_pu_order')
|
|
@ -1,9 +1,31 @@
|
||||||
from rest_framework.serializers import ModelSerializer
|
from rest_framework.serializers import ModelSerializer
|
||||||
|
from apps.mtm.serializers import MaterialSimpleSerializer
|
||||||
from .models import Vendor
|
from .models import PuOrder, PuOrderItem, Vendor
|
||||||
|
|
||||||
|
|
||||||
class VendorSerializer(ModelSerializer):
|
class VendorSerializer(ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Vendor
|
model = Vendor
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
class VendorSimpleSerializer(ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Vendor
|
||||||
|
fields = ['id', 'name']
|
||||||
|
|
||||||
|
class PuOrderItemSerializer(ModelSerializer):
|
||||||
|
material_ = MaterialSimpleSerializer(source='material', read_only=True)
|
||||||
|
class Meta:
|
||||||
|
model = PuOrderItem
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
class PuOrderSerializer(ModelSerializer):
|
||||||
|
vendor_ = VendorSimpleSerializer(source='vendor', read_only=True)
|
||||||
|
items = PuOrderItemSerializer(source='item_pu_order', many=True, read_only=True)
|
||||||
|
class Meta:
|
||||||
|
model = PuOrder
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
class PuOrderCreateUpdateSerializer(ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
fields = ['number', 'vendor']
|
|
@ -1,8 +1,10 @@
|
||||||
|
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from rest_framework.viewsets import ModelViewSet
|
from rest_framework.viewsets import ModelViewSet
|
||||||
|
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin
|
||||||
from apps.pum.models import Vendor
|
from rest_framework.viewsets import GenericViewSet
|
||||||
from apps.pum.serializers import VendorSerializer
|
from apps.pum.models import PuOrder, Vendor
|
||||||
|
from apps.pum.serializers import PuOrderCreateUpdateSerializer, PuOrderSerializer, VendorSerializer
|
||||||
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,3 +21,27 @@ class VendorViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||||
filterset_fields = []
|
filterset_fields = []
|
||||||
ordering_fields = ['create_time']
|
ordering_fields = ['create_time']
|
||||||
ordering = ['-create_time']
|
ordering = ['-create_time']
|
||||||
|
|
||||||
|
|
||||||
|
class PuOrderViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||||
|
"""
|
||||||
|
采购订单-增删改查
|
||||||
|
"""
|
||||||
|
perms_map = {'get': '*', 'post': '*',
|
||||||
|
'put': '*', 'delete': '*'}
|
||||||
|
queryset = PuOrder.objects.select_related('vendor').\
|
||||||
|
prefetch_related('item_pu_order').all()
|
||||||
|
serializer_class = PuOrderSerializer
|
||||||
|
search_fields = ['number', 'vendor__name']
|
||||||
|
filterset_fields = ['vendor']
|
||||||
|
ordering = ['-create_time']
|
||||||
|
|
||||||
|
def get_serializer_class(self):
|
||||||
|
if self.action in ['create', 'update']:
|
||||||
|
return PuOrderCreateUpdateSerializer
|
||||||
|
return super().get_serializer_class()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class PuOrderItemViewSet(CreateModelMixin, DestroyModelMixin, GenericViewSet):
|
||||||
|
pass
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 3.2.9 on 2022-01-27 07:47
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('sam', '0011_order_need_mtest'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='order',
|
||||||
|
name='delivery_date',
|
||||||
|
field=models.DateField(verbose_name='截止交货日期'),
|
||||||
|
),
|
||||||
|
]
|
Loading…
Reference in New Issue