增加采购订单part1

This commit is contained in:
caoqianming 2022-01-27 15:48:03 +08:00
parent c82ef89054
commit c8c6945a38
7 changed files with 155 additions and 9 deletions

View File

@ -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='关联采购订单'),
),
]

View File

@ -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):

View File

@ -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,
},
),
]

View File

@ -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')

View File

@ -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']

View File

@ -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

View File

@ -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='截止交货日期'),
),
]